Skip to content

Builds a custom Raspberry Pi image for robotics

License

Notifications You must be signed in to change notification settings

huluwulu1115/neurobionicspi

 
 

Repository files navigation

CI Tool to Configure Embedded Hardware for Robotics

U-M Neurobionics RPi4 Build

The purpose of this tool is to build an up-to-date image for a Raspberry Pi that can be used headless/GUI-less to control autonomous / remote robotic systems. The tool reconfigures an official Raspbian distro to include custom packages for robotics and automation, wireless connectivity to a known and configurable WiFi network, and finally, it will create a fallback access point when the known wireless networks are not in range (fixed IP: 10.0.0.200). This enables usage of the same process and hardware when not in known Wifi network range (e.g. demos and conferences). The process installs libraries for communication, drivers for common sensors and ICs, the API for working with Dephy products, and other modifications.

While this image was originally configured for usage at the University of Michigan, it can be modified to connect to any set of known WiFi networks. Hence, login in details for Michigan wireless must be obtained separately, through a document behind U-M login security. If you wish to use this image for locations/networks not at U-M, you can add your WiFi network details set in the workflow settings.

This image has only been tested on the Raspberry Pi v4. It will not work on the Raspberry Pi Zero.

Features

  • Uses CI (Github Actions) to build a stable Raspbian image that is always up to date.
  • When booted, the system will try to connect automatically to desired/configured WiFi networks in the build settings.
  • Once connected to the network, it will email you its IP address from a U-M email account.
  • If no known WiFi networks are in range, it will default to an access point configuraiton (broadcasting its own SSID), which is also conifured in in the build settings.
  • Has a feature-rich web interface, which can be used to modify the networking setup and to run custom scripts.
  • Provides a much easier way to build customized project-specific Raspbian images via Github Actions UI.


Usage

  • Fork this repository to create your own private repository that shares the same default source code, which can then be customized.
  • Navigate to the Actions tab in your forked repository.
  • Select the Build workflow and click on Run Workflow
  • Use the Github Actions pop-Up UI to modify the hostname, username, password, AP SSID, AP passphrase and e-mail address(es).
  • After a successful run, your custom Raspbian image will be attached as an artifact. You can download it by selecting the current workflow run and clicking on the attached artifact.
  • Use Raspberry Pi Imager or other softwares like Etcher, Rufus, etc to flash the downloaded image to a SD card.
  • You can access the web interface by entering the IP address of your RPi in a browser. Login with your username and password from the workflow settings.
  • The static IP for the access point is 10.0.0.200. If it boots into access point mode, you must use this IP address to connect wirelessly. If it's in access point mode, you will see the SSID broadcast (SSID entered in the workflow settings)
  • The location of the wpa supplicant file: ~/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
  • The location of the startup emailer script: ~/etc/startup_mailer.py
  • The location of the Neurobionics ASCII banner: ~/home/pi/.bash_profile
  • This image is meant for the Raspberry Pi 4. It may work on other versions, but will not work on the Raspberry Pi Zero.

Environment Variables

Variable Default Value
HOSTNAME neurobionicspi
USER pi
PASSWORD neurobionics
AP_SSID NeurobionicsRPi
AP_PASSPHRASE neurobionics
WIFI_CC US
WIFI_SSID Network
WIFI_PASSPHRASE password
EMAIL ejrouse@umich.edu

Issues

Kindly report any issues here.

References

About

Builds a custom Raspberry Pi image for robotics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%