# rover-pi

Scripts and documentation for setting up a Raspberry Pi (Zero W 1 or 2) for use in Mechatronics 1 or Cyberphysical Systems.  This single-board Linux computer is equivalent in power to the Raspberry Pi 2 but in a smaller form factor, includes WiFi and Bluetooth, and is very affordable at 15USD.  For operations that need higher computing power, we recommend the Raspberry Pi 3 or 4 which can be purchased later.

# Procedure
1. [Raspberry Pi Imager procedure to setup ssh and Raspberry Pi Connect](imager.md)
1. Find out your Pi's ethernet addresss in case you need to find it on `iot-research` again.  Type `ip addr show dev wlan0` and for something like `link/ether 01:23:45:67:89:ab`.  Write this information (the 12 characters and colons) in your notebook.  In T-411-MECH we want you to put this information in a spreadsheet links from the main page:  this allows us connect Pi's to people in case of any issues.
1. [Solder the GPIO header pins](solder-gpio.md)
1. [Gadget Mode to setup a serial connection over USB](gadget.md)
1. [Marcel's script on github to show the IP address on the OLED screen](https://github.com/mkyas/cpsy-display-ip)

## RU student-only guides at ROB-IOT
- [Starting on Raspberry Pi Zero](https://reykjavik.instructure.com/courses/6589/pages/starting-on-raspberry-pi-zero-w)

## References and Links
- [Guide to creating ssh keys](https://pimylifeup.com/raspberry-pi-ssh-keys/)  Of note, this guide is a little dated as it suggests using RSA keys and many people are moving toward EDCSA keys.
- [Raspberry Pi Connect](https://connect.raspberrypi.com)
    - [Setting up Raspberry Pi Connect](https://www.raspberrypi.com/documentation/services/connect.html)	
- [Raspberry Pi Zero Headless Quick Start](https://learn.adafruit.com/raspberry-pi-zero-creation)  This guide assumes you have a serial cable adapter you can plug into the RX/TX serial pins on the Pi.
- [Pi Headless Configuration over Bluetooth](https://hacks.mozilla.org/2017/02/headless-raspberry-pi-configuration-over-bluetooth/)  Guide from 2017 on how to setup a serial console over Bluetooth
- [Turning your Raspberry Pi Zero into a USB Gadget](https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/serial-gadget)  Official Adafruit guide to gadget mode to allow the USB port to be used as a serial console to connect to it.   We had trouble getting it to work in 2026 due to some changes in Raspberry Pi OS.
- [Python gpiozero library](https://gpiozero.readthedocs.io/en/stable/) a simple interface for working with GPIO devices
- [CircuitPython Libraries on Linux and Raspberry Pi](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/installing-circuitpython-on-raspberry-pi) This is one option for GPIO, I2C, SPI, and PWM access in python.

## For the Future
- [Setting up Zeroconf to use local names (.local) to access your Pi](https://learn.adafruit.com/bonjour-zeroconf-networking-for-windows-and-linux): this does not work on iot-research because multicast and MDNS are broken.
- [MDNS on iot-research](mdns.md) MDNS is still an ongoing development.

## TODO
- Finding the Pi using `nmap` or `arp`
# Some Tricks

Here is a page of tricks we have discovered that may involve advanced techniques.
Credit:  Daníel Bjartur Guðmundsson, transcribed by Joseph T. Foley

1.    Check for list of networks:  nmcli device wifi list
1.    Show details of "preconfigured" network:  nmcli connection show preconfigured
1.    Change the SSID (which wireless network you will connect to) in the "New_SSID": nmcli connection modify preconfigured wifi.ssid "New_SSID"
1.    Change the wireless access password in the "New_Password":  nmcli connection modify preconfigured wifi-sec.psk "New_Password"
