Article Image
Article Image
View All Posts
read
Want to keep up to date with the latest posts and videos? Subscribe to the newsletter
HELP SUPPORT MY WORK: If you're feeling flush then please stop by Patreon Or you can make a one off donation via ko-fi
#HEADLESS SETUP #JUPYTER NOTEBOOK #PYTHON #RASPBERRYPI #REMOTE DEVELOPMENT #VSCODE

We’ve got a few options when developing on the RaspberryPI. We can connect a mouse, keyboard and monitor and treat it like a desktop computer - but it’s not always very convenient.

You can watch a video version of this blog post here:


First off you need a spare mouse, a spare keyboard and a spare monitor - And you need the RaspberryPi close enough that you can plug all this together

This RaspberryPI is part of my wordle solving robot and it’s connected to my 3D printer. I could plug everything into it, but it’s a bit of a pain and I’d probably end up ripping the sockets off the board.

Pi World Bot

If you don’t have these spare peripherals you can set the PI up in a headless way and connect to it via SSH.

Once you’re connected then you’ve got access to vim and nano - I’m quite used to using these for making quick edits, but it’s not the most friendly of editors to use.

There are of course more fully functional editors that you can use from the command line, Emacs is particularly powerful.

Another option once we’ve got our headless PI up and running and connected to our network is to use VNC - this is quite nice and we get access to the PIs desktop environment.

We can then install an IDE like VSCode and crack on with our development.

VNC and VSCode

This last option is nice, but it’s still a bit annoying to use and we need to have a desktop environment installed and running on our Pi.

There is a much nicer way, and that’s to use VSCode’s remote development features.

First off we’ll do a headless setup of our Pi - this is now trivially easy with the Pi imager app as we can now access the advanced options using this cogwheel icon.

This lets set up the hostname, turn on SSH, set the username and password and add the WiFi credentials.

When we boot the Pi from the SD Card everything will be set up nicely for us.

Pi Setup

Now for the magic part, we just open VSCode on our computer and install the “Remote Development” extension pack.

VSCode Remote Development

With this installed we now get this extra button in the bottom left of the window.

New Button

If we click on this button we get an option to connect to a host.

Connect to host

We just enter the same thing that we would use to connect via SSH - in my case the user is pi and I set up the machine to be on wordle so I just enter pi@wordle and then we enter the password.

SSH Connection

VSCode will install the VSCode server on the Pi and we’re good to go.

I’m going to use my wordle solving robot code as a demonstration project, so I’ll need to clone it from GitHub.

We can use the clone from git option in VSCode to do this for us and then we just open up the folder that has been cloned.

Clone Repo

I’ve got an additional extension that I want to install into my remote environment - this is a python project, so I want to install the python extension.

Install Python Extensions

This will also install the extensions for running Jupyter Notebooks.

We’re now ready to finish setting up our project on the Pi.

I’ll open up a new terminal in VSCode - this automatically opens up a terminal on our Pi in the correct folder.

I can then just follow the instructions in my README.md file to get everything installed.

There are some native dependencies that I’ll need to install, so we’ll kick that off first.

sudo apt-get update
sudo apt-get install python3-picamera libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libopenjp2-7 libtiff5 libatlas-base-dev -y

With that done we can install our python dependencies.

The first thing I’ll do is create a virtual environment - this keeps our python dependencies nice and local to our project.

python3 -m venv venv

VSCode should automatically detect that we have a virtual environment and will switch to using it for Python.

We then activate this environment in the terminal and install all our Python dependencies.

source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements_pi.txt

This takes a while as we want Jupyter Notebooks, OpenCV and support for PiCamera.

We’re now ready to run our code - we can just click on the ipynb files and they’ll open up in VSCodes Jupyter Notebook viewer.

We can access the Pi’s camera directly and read images straight from it as all our code is running on the Pi.

Pi Camera

We can step through each of our notebook cells. And, we can even debug the code and see what’s going on.

This is a really nice way of developing code on the Pi - we’ve got access to all the Pi’s hardware so we know immediately if our code will work or not.

There are as always some limitations, there’s no support for armv6 so you can’t use this on Pi Zero. But other than that it works really well.

You can watch a video of all this in action here:


And if you like the wordle solving robot - you can see it in action here:


#HEADLESS SETUP #JUPYTER NOTEBOOK #PYTHON #RASPBERRYPI #REMOTE DEVELOPMENT #VSCODE

Related Posts

Connecting up the MCP23S17 and HD44780U based LCD - Explore the Raspberry Pi GPIO extensibility by connecting an MCP23S17 extension to drive an LCD display in 4-bit mode, leaving the I2C, UART, and SPI functionalities free for future projects.
Raspberry Pi BTLE Device - Find out how to turn your Raspberry Pi into a fully functional Bluetooth device that communicates with an iPhone app using the Node.js module, Bleno.
Raspberry pi Infrared Receiver - Set up an infrared receiver with a Raspberry Pi and LIRC in this detailed guide, covering wiring, installing LIRC, and configuring your remote control.
Using ChatGPT for home automation - Leverage the power of ChatGPT and Raspberry Pi to create seamless home automation solutions using API controls, and see how the AI generates code to control lighting in various daily scenarios.
Raspberry Pi temperature sensor - Connecting a DS18B20 temperature sensor to a Raspberry Pi can be easily achieved, from wiring to loading up support for the device and changing the pin connections if needed.

Related Videos

Forget SSH and vim, Use VSCode to Remote Develop on the Raspberry Pi - Improve your Raspberry Pi development experience with VSCode's Remote Development extension enabling you to write, test, and debug code from your desktop computer without VNC or a desktop environment for the Pi.
Raspberry Pi Hidden Settings - Setup Hostname, SSH and WiFi from the Pi Imager Application. - Easily set up SSH, WiFi, and hostnames for your Raspberry Pi by accessing a hidden screen within the Imager Application. Press Ctrl+Shift+X to reveal this convenient feature.
Getting started with Raspberry Pi Pico - MicroPython - Dive into this Raspberry Pi Pico tutorial where you'll solder headers, set up Thonny, write codes in MicroPython, and create a blinking LED project to kick off your Pico journey.
Copilot Writes the Blink Sketch - Using AI to code. - Experience the power of GitHub Co-Pilot's AI in effortlessly completing a blink sketch and Wi-Fi setup in an Arduino project, showcasing its intelligent suggestions and effective coding capabilities.
-
HELP SUPPORT MY WORK: If you're feeling flush then please stop by Patreon Or you can make a one off donation via ko-fi
Want to keep up to date with the latest posts and videos? Subscribe to the newsletter
Blog Logo

Chris Greening


Published

> Image

atomic14

A collection of slightly mad projects, instructive/educational videos, and generally interesting stuff. Building projects around the Arduino and ESP32 platforms - we'll be exploring AI, Computer Vision, Audio, 3D Printing - it may get a bit eclectic...

View All Posts