Compare commits

..

1 Commits

Author SHA1 Message Date
foley 39c0f158fe switch to logger (more POSIX) 2026-07-02 11:04:19 +00:00
7 changed files with 6 additions and 127 deletions
-1
View File
@@ -13,7 +13,6 @@ Scripts and documentation for setting up a Raspberry Pi (Zero W 1 or 2) for use
- [Starting on Raspberry Pi Zero](https://reykjavik.instructure.com/courses/6589/pages/starting-on-raspberry-pi-zero-w) - [Starting on Raspberry Pi Zero](https://reykjavik.instructure.com/courses/6589/pages/starting-on-raspberry-pi-zero-w)
## References and Links ## References and Links
- [Sparkfun GPIO pinout](https://cdn.sparkfun.com/assets/learn_tutorials/6/7/6/PiZero_1.pdf)
- [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. - [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) - [Raspberry Pi Connect](https://connect.raspberrypi.com)
- [Setting up Raspberry Pi Connect](https://www.raspberrypi.com/documentation/services/connect.html) - [Setting up Raspberry Pi Connect](https://www.raspberrypi.com/documentation/services/connect.html)
+6 -4
View File
@@ -12,17 +12,19 @@ fi
# Is the dwc2 overlay installed? Nothing will work if it isn't. # Is the dwc2 overlay installed? Nothing will work if it isn't.
if lsmod | grep -q "dwc2"; then if lsmod | grep -q "dwc2"; then
systemd-cat -t gadget.sh -p info echo "DWC2 module loaded, setting up OTG gadget serial and ethernet" echo "DWC2 module loaded, setting up OTG gadget serial and ethernet" | logger -t $0 -p info
echo "DWC2 module loaded"
else else
systemd-cat -t gadget.sh -p warning echo "DWC2 module missing. Aborting OTG setup." echo "DWC2 module missing. Aborting OTG setup." | logger -t $0 -p info
echo "DWC2 module missing"
systemctl disable serial-getty@ttyGS0.service systemctl disable serial-getty@ttyGS0.service
exit 1 exit 1
fi fi
sudo modprobe libcomposite modprobe libcomposite
cd /sys/kernel/config/usb_gadget cd /sys/kernel/config/usb_gadget
if [ -d "MyGadget" ]; then if [ -d "MyGadget" ]; then
systemd-cat -t gadget.sh -p warning echo "MyGadget already exists. Aborting OTG setup." echo "MyGadget already exists. Aborting OTG setup." | logger -t $0 -p info
exit 1 exit 1
fi fi
-9
View File
@@ -44,12 +44,3 @@ We don't have many monitors and keyboards in V207 for students to use, so we wil
![imager-writeimage-verifying.png](Graphics/imager-writeimage-verifying.png) ![imager-writeimage-verifying.png](Graphics/imager-writeimage-verifying.png)
1. The process is complete! Now you can [connect to your pi](connect.md) 1. The process is complete! Now you can [connect to your pi](connect.md)
![imager-complete.png](Graphics/imager-complete.png) ![imager-complete.png](Graphics/imager-complete.png)
1. Take the SD card and put it into your pi.
1. When you first boot it, it can take 10 minutes to finish configuring itself. Usually when the LED stops blinking for at least 30 seconds, it is done.
## Connecting using Raspberry Pi Connect
1. Login to https://connect.raspberrypi.com if you haven't already
1. Look at the list of devices, find the one you want, and click on "Connect"
![connect-devices.png](Graphics/connect-devices.png)
1. A remote shell window will pop up
![connect-shell.png](Graphics/connect-shell.png)
-13
View File
@@ -1,13 +0,0 @@
# The Intertial Measurement Unit
As of 2025, we started using an AliExpress version of https://wolles-elektronikkiste.de/en/icm-20948-9-axis-sensor-part-i
This has an unmarked jumper on the back. Joe believes that it shorts the VDDIO and VDD pins in order to allow it to be used with 1.8V devices.
Marcel has tested that the pads connect to both of those pins.
The IMU runs on 1.8V, but our Pi has GPIO voltages of 3.3V. Marcel reports that students in 2025 had no problem using it as long as AD0 and NCS were connected to VDD.
According to the specification, the maximum pin voltage is VDDIO+0.5, which would put it at 2.3, a whole volt below 3.3. On his board, he connected the pins to 3.3V though a 10K resistor to protect it from overcurrent.
For I2C at least, it appears that we are saved by the fact that it is open-drain. Each device communicates to the master by pulling lines low, which should work with both voltages.
-19
View File
@@ -1,19 +0,0 @@
#!/usr/bin/python
# From https://raspberry.tips/en/raspberrypi-tutorials/raspberry-pi-gpio-python
import lgpio
import time
# Open GPIO chip (0 = /dev/gpiochip0, on Pi 5 gpiochip4 also possible)
h = lgpio.gpiochip_open(0)
try:
lgpio.gpio_claim_output(h, 18) # GPIO18 (pin 12) as output (MOTA1)
for _ in range(5):
lgpio.gpio_write(h, 18, 1) # HIGH
time.sleep(0.5)
lgpio.gpio_write(h, 18, 0) # LOW
time.sleep(0.5)
finally:
lgpio.gpiochip_close(h) # Always close!
-25
View File
@@ -1,25 +0,0 @@
#!/usr/bin/python
# From https://raspberry.tips/en/raspberrypi-tutorials/raspberry-pi-gpio-python
import lgpio
import time
# Open GPIO chip (0 = /dev/gpiochip0, on Pi 5 gpiochip4 also possible)
h = lgpio.gpiochip_open(0)
try:
lgpio.gpio_claim_output(h, 16) # GPIO16 as output (MOTA2)
lgpio.gpio_write(h, 16, 0) # LOW
# Hardware PWM on GPIO18 (pin 12) must be PWM-capable
# Frequency: 1000 Hz, duty cycle: 50%
lgpio.tx_pwm(h, 18, 1000, 50)
time.sleep(2)
# Reduce duty cycle to 20%
lgpio.tx_pwm(h, 18, 1000, 20)
time.sleep(2)
lgpio.tx_pwm(h, 18, 0, 0) # Stop PWM
finally:
lgpio.gpiochip_close(h) # Always close!
-56
View File
@@ -1,56 +0,0 @@
# Getting the PWM working
The Raspberry Pi zero (1 and 2) have 2 PWM peripherals, allowing you to pulse pins without the CPU doing any additional work. This is particuarly useful for controlling motor speeds when connected to a motor driver/H-bridge chip.
# References
- [Raspberry Pi Official Overlays information (github)](https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README)
- Line 4235 starts the description of the "pwm" overlay configuration
- [Adding Basic Audio Ouput to Raspberry Pi Zero](https://learn.adafruit.com/adding-basic-audio-ouput-to-raspberry-pi-zero/pi-zero-pwm-audio)
# Important Points
1. The `gpio` program is no longer available. It has been replaced with `pinctrl` which works a little differently.
# Discussion
My raspberry pi zero W 2 wasn't working reliably with the PWM.
The `gpio` command has been depricated and is now replaced by the `pinctrl` commend. Running it did not list any PWM0 on any of the pins, which was concerning.
[This forum post](https://forums.raspberrypi.com/viewtopic.php?t=388352) indicated the need for a `pwm-2chan` device tree overlay to get it to show up. After adding `dtoverlay=pwm-2chan` to the `config.txt`:
```
$ pinctrl
0: ip -- | hi // ID_SDA/GPIO0 = input
1: ip -- | hi // ID_SCL/GPIO1 = input
2: a0 -- | hi // GPIO2 = SDA1
3: a0 -- | hi // GPIO3 = SCL1
4: op -- -- | hi // GPIO4 = output
5: ip -- | hi // GPIO5 = input
6: ip -- | hi // GPIO6 = input
7: op -- -- | hi // GPIO7 = output
8: op -- -- | hi // GPIO8 = output
9: a0 -- | lo // GPIO9 = SPI0_MISO
10: a0 -- | lo // GPIO10 = SPI0_MOSI
11: a0 -- | lo // GPIO11 = SPI0_SCLK
12: ip -- | lo // GPIO12 = input
13: ip -- | lo // GPIO13 = input
14: ip -- | lo // GPIO14 = input
15: ip -- | hi // GPIO15 = input
16: ip -- | lo // GPIO16 = input
17: ip -- | lo // GPIO17 = input
18: a5 -- | lo // GPIO18 = PWM0
19: a5 -- | lo // GPIO19 = PWM1
```
Which looks much better.
There is a pwm chip `in /sys/class/pwm`
After running the `lgpio/pwm-test.py`
the pin is back to being listed as an input, so I'm confused.
The PWM pin (under load) did the right values. Without a load on the Analog Discovery 2, I just saw noise.
I commented out `dtoverlay=pwm-2chan` and `lgpio/pwm-test.py` worked.
The pwm chip is missing from `/sys/class/pwm` so I'm guess that's not needed.