G4D: RPi4 and python


This entry is part 3 of 3 in the series Gardening for Dum-Dums (G4D)
Hey. This page is more than 4 years old! The content here is probably outdated, so bear that in mind. If this post is part of a series, there may be a more recent post that supersedes this one.

I hinted at it before – Python has been somewhat forced upon me. It’s grown on me a little – probably more due to familiarity. To be honest, all these languages are really much of muchness to me. What you can do in one, you can do in the other.

I looked into Windows IOT (w/ C#) and Android Things (w/ Java) as platforms for my Gardening for Dummies thing, I have kind of ended up going with Python running on a local (flask) webserver on an RPi4.

The main reason I have ditched the Microsoft and Android-based ‘proprietary’ options is that they do not support the RPi4 (or RPi3B+ for that matter). In words, in Raspberry Pi terms, they are discontinued. This is just plain old irritating, and:

  1. The vanilla RPi3B I have has no wifi (I broke it – new RPi3Bs are hard to come by now.
  2. The RPi4 is a pretty big step up performance-wise.

The main downside with the approach I’ve gone for is that

What follows is a list of bits-and-bobs I have come (up) against en route to getting this setup with RPi4 + Buster + python3.7&pycharm + remote dev.

Enable spi & ssh on RPi

spi means you (via PiPlates lib in the first instance) can access RPi4 i/o pins. ssh is for accessing remotely (for next step). Easy to do with:

sudo raspi-config 

Remote RP4 dev from PyCharm

At work, I have been using Visual Studio as IDE for Python. It’s okay, PyCharm leaves it for dust in some respects (code completion, refactoring and just being ‘smart’ generally). The whole git experience seems a little better on VS?

What does not seem that straightforward in Visual Studio is remote development with Python on RPi. (Or if it is easy, I lost patience because it did not come up on Google)

Pycharm is pretty easy to set up: just follow the guide here. They start going on about pings and wot-not in the tutorial.

Hiccup #1: Outdated instructions for static IP

In tutorial, they send you to a link for setting up static IP address on your RPi – links to an old page which is Buster’s predecessor (Stretch?). Easy enough to find more up-to-date account with Google.

Hiccup #2: Syncing to RPi remote project on restart

When you are all set up, creating and saving (.py) modules in your project, they should automatically wire them through to the RPi.

Solution 1

I found I have issues when I came back to project having restarted the RPi – the temp project did not have all the project files anymore. Easy to fix with by selected all files in project and Tools >> Upload to <your remote pi>

Solution 2

The ‘tmp’ dir in Linux (for Buster on the RPi4 is just that – it gets wiped (I think) when you reboot.

I changed the path mappings so it uses a permanent directory:

  • Goto settings > deployment
  • Click the Mappings tab option.
  • In deployment path click the little folder icon on the right to (remote) browse to your (permanent) directory location. I had made a directory called g4d_dash in my root path (the default /home/pi) on RPi.
  • Click OK
  • Click on the ‘root’ of your project in PyCharm project-browser-thing, so it is highlighted
  • Menu: Tools > Deployment > upload to <pi@xxx.xxx.x..x>

This should flick all your files to that new deployment path.

Series navigation

<< G4D: Water flow