Raspberry Pi Projects

2019-12-28 I am selling my last (2) ruggedized RPi Model 1B on eBay and here are what they look like with the Proto-Armour cases by MobileApp Systems. As far as I know they are made from pure unobtainium.

2019-12-24 I have been upgrading all my Raspberry Pi B to Raspbian Buster, and have discovered to my dismay how much things have changed. Adding more and more layers of nonsense over basic Debian is a mistake that everyone seems to be making. I don't understand the need to change things to make them so much more difficult to work with and to troubleshoot. I am not a reactionary, changes are worthwhile if they are needed. IMHO the "IF" is a key concept here. I can't be the only one in the world who thinks having to use dhcpcd.conf to configure a static IP address is bizarre.

Meanwhile, after really struggling to get WIFI working (and with a static IP address no less) it seems under Buster we must use dhcpcd.conf and some manual hacks to /etc/network/interfaces (despite all the noise saying otherwise.)

First, configure /etc/dhcpcd.conf thusly:

interface wlan0
static ip_address=192.168.1.36/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.254 8.8.8.8

Then add the following lines to /etc/network/interfaces

auto wlan0
iface wlan0 inet manual
pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

Finally create the supplicant information in /etc/wpa_supplicant/wpa_supplicant.conf

Note the location of the control socket in /var/run/wpa_supplicant

country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="ssid"
    psk="password"
}

Note /var/run/wpa_supplicant directory should exist. I had one RPI that did not have that directory when I started trying to get things working.

That should do the job, at least it does for me. I have replicated the above on 4 Model B units today and it worked every time. Getting to the point where I had all that working on the first one took several hours and was quite frustrating.

I know we're not supposed to need anything in /etc/network/interfaces but I had to, not sure why. Maybe I will sort that out some day. Maybe not.

2019-08-30 I have been experimenting with the GPIO on a Raspberry Pi Model B (26-pin GPIO)

I was testing clock output and so far I've tried it from about 1.5mhz to about 80mhz. It is interesting to note that the voltage drops the higher the freq.

RPI-gz_test_00.jpg

1.2 MHZ

RPI-gz_test_01.jpg

83.3 MHZ

I plan on using this relay board controlled by the Pi

relay-pcb-01.jpgrelay-pcb-02.jpgrelay-pcb-03.jpg

2018-06-12

Humble Pi Assembly Instructions with Regulator Kit

pdf documentation

I have decided to build my last (2) of these units for some new prototyping work I am doing now on the Pi 1 Model B. I know, it is so ancient but it works well and is reliable. .

These boards are long extinct so I am recreating the assembly instructions because I noticed several decent articles had disappeared since the last time I built one of these around 2012. I didn't take any pictures or write anything about it back then but I am going retro tonight and will do this. This will hopefully recreate a set of instructions which are really very simple but should be documented for at least posterity.

2018-06-12-rp-humble-pi-004.jpg 2018-06-12-rp-humble-pi-005.jpg

Hopefully some day when the lonely hacker gets their hands on one of these and has a useless Raspberry Pi 1 Model A or B and wants to assemble the kit and then a bit of common sense, a few tools and maybe this article will suffice. I noticed almost all of the documentation on building them or which components has disappeared. You can still find a few traces of the assembly on the wayback machine so check there also.

2018-06-12-rp-humble-pi-001.jpg

I am still not really completed, I was unable to locate my header strips and need to make (2) 13-pin strips to add a second piggyback header on top of the Humble Pi. I also need a (2) pin header added to select internal or external power. I built this board with the 3.3V regulator. I will build the second Humble Pi board for 5V as well so I can interchange as needed. I ordered some new header strip and will complete this unit soon.

The power kit for the Humble Pi includes (2) voltage regulators LD33V LD1117V33 (3.3v) and LD50V (5.0v) and the writing on my regulators was almost impossible to read with a magnifying glass in very bright light. Anyway you will choose 3.3V or 5.0V when you build the unit. There are (2) electrolytic capacitors, There is a three-pin PCB barrel connector.

2018-06-12-rp-humble-pi-002.jpg2018-06-12-rp-humble-pi-003.jpg

This is what you get with the main kit, a PCB, the 26-pin GPIO connector and a plastic bolt with nut. This turned out to be useless for me as there was no hole in the RPI pcb that matches. I suspect this hole was only on the first Raspberry Pi Model 1. It was a good idea to stabilize the Humble Pi. Too bad it can't be used on this RPI 1 Model B.

2018-06-12-rp-humble-pi-007.jpg

Insert the 26 pin GPIO female connector into the bottom of the PCB with the pins coming up through the top. Make sure when aligning the holes that you avoid the first 2 pads marked 3.3v and 5.v..

Solder all 26-pins on the 26-pin GPIO connector.

Attach the barrel connector,it has three legs and needs to be placed as shown in the finished picture above and solder this. When you solder that on, fill the entire space with solder on each pin. This is so it would be strong in a structural sense and hold up to normal use of plugging and unplugging the external power cable. This is a 2.5mm standard connector.

Now we can attach the electrolytic capacitors, they are polarized so you have to make sure to orient the leads correctly. Just remember the long lead is positive. The two values are C1: 25v 10uf and C2: 16v 100uf. The PCB is clearly marked with a minus (-) symbol on the pads where you will solder them so it is easy to orient them properly. The PCB also details which values are to be installed on which pad.

The pins of the voltage regulator are clearly-marked as well.

You can get some header strips and solder in a second 26-pin GPIO piggyback connector to allow you to attach another PCB or a GPIO cable, etc. on top of this board

2018-06-12-rp-humble-pi-006.jpg

2018-06-20

I was ale to get this Humble-Pi completed a couple days ago after receiving some breakaway headers.

2018-06-20-rp-humble-pi-001.jpg

2018-06-25 I was revisiting some basic GPIO stuff today, it has been a long time!

2018-06-26-rp-led-001.jpg

Using a PI for simple I/O is quick and easy.

You connect your breadboard to the GPIO and pick the GPIO pins you want to use. Set up your circuit so that any output or input is connected and ready to be used by the Pi. In this case, we will light an LED.

Attach the anode of the LED to the particular GPIO pin you want, in this case GPIO 25. Connect the cathode to ground from the Pi's GPIO cable. As root just do the following:

echo "25" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio25/direction
echo "1" > /sys/class/gpio/gpio25/value # led on
echo "0" > /sys/class/gpio/gpio25/value # led off

Since the Pi asserts a logic 1 (3.3v) on the anode of the LED, it will Illuminate.

gpio-led-output.jpg

It really this simple to perform GPIO output. You can do it from a bash script even.

2018-06-27 It is equally simple to read inputs like switches.

2018-06-27-rp-dipswitch.jpg

Attach a dipswitch (straddle the two sides) to the breadboard. Make sure the switches are off. Then attach one set of contacts on the dipswutch as follows. First attach one side of the dipswitch to GPIO23, this is the INPUT. Then attach the opposite contact on the dipswitch to +3.3v. source from the Pi. Now we need to attach a 10K ohm resistor on the INPUT side of the dipswitch. The resistor should be attached to ground. This will keep the GPIO pin from floating which may cause some unpredictable behaviout in any software listening to the GPIO input.

Once you have verified that everything is connected, you can use the following sequence of commands to read the switch states.

root@terminal-02:/# echo "23" > /sys/class/gpio/export
root@terminal-02:/# echo "in" > /sys/class/gpio/gpio23/direction
root@terminal-02:/# cat /sys/class/gpio/gpio23/value #switch is open, close switch now.
0
root@terminal-02:/# cat /sys/class/gpio/gpio23/value # switch is closed
1
root@terminal-02:/#
gpio-switch-input.jpg

2018-07-07 I installed a power indicator on the 3.3v version of the Humble Pi board regulator output.

2018-07-07-rp-humble-pi-002.jpg

I think it is a much-needed addition though I might want to replace this large red led with something much smaller. The power supply is 5V-20A so there is a lot of power available.

I am using one of my bench supplies feeding a distribution panel with this output on a 5A fuse. I am sure that will be enough for anything I will do on this board.

2018-07-07-rp-humble-pi-001.jpg

2018-08-01

Adafruit Prototyping Pi Plate

adafruit-protoplate-03.jpg
This is the finished product.

I had one of these still un-assembled so I thought I would do a write-up of a product that no one manufactures any more but some day someone might need some documentation. This is the 26-pin GPIO version so you know it's for Raspberry Pi A and B, not the newer 40-pin model. I guess I purchased it back in 2011/2012. I just never got around to needing a second one and so I wanted to document how you build these in case Adafruit documentation becomes unavailable.

adafruit-protoplate-01.jpg

This is really a great prototyping plate. All the GPIO/I2C/SPI/POWER pins are broken out to 0.1" strips. All of the breakout pins are also connected to 3.5mm screw-terminal blocks which are labeled. There a 4-block terminal block that is broken out to 0.1" pads for general non-GPIO connectons. What sets this plate apart is the included SMD area. Adafruit put in an SOIC surface mount chip breakout area,

All the GPIO pins are separated in two locations. The pins are connected to the 0.1" breakout pins as well as the terminal blocks.

The layout of the protype plate is a combination of'breadboard style' (top middle) - with two "rails" down the center and then 5-pin connected rows down the side.

On the bottom right there is a 4-pin terminal block with 4 x 0.1" spaced pads right above it, these are for "free wiring". They aren't connected to anything attached to the Raspberry Pi. This is a good design to allow connection of isolated circuitry.

raspberry_pi_bbtop.jpg
This image is copyright Adafruit

One of the unique features of this prototype plate is that Adafruit designed the plates so you can fit a tiny breadboard (see https://www.adafruit.com/product/65 ) on top and still see the pin labels on the breakouts. This is VERY useful when prototyping circuits.

adafruit-protoplate-02.jpg

Here are the parts that comes with it.

Assemble it

Fit the 26-pin female to the underside of the PCB. The connector is not keyed so it does not matter how it is oriented as long as all 26-pins are correctly inserted into the 26-pin GPIO holes properly. There is no way to insert it incorrectly as there are only 26-holes with nothing else next to it.

Assemble the terminal blocks by sliding them together to make (1) 8-pin block, (1) 5-pin block, and (3) 4-pin blocks. You should have (2) 2-pin blocks remaining. Install the remaining (2) 2-pin blocks. Solder them all in, make sure the terminal block is oriented facing outwards before you start soldering.

Install the (2) 8-pin and (1) 6-pin female headers. These allow you to plug wires in and out easily,

Peel and stick the included rubber bumper underneath the SOIC breakout area. This will rest on top of the ethernet port connector. NOTE: the rubber "foot" that ships with the protoplate is too thick. You will have to use something else to fill the space between the pcb and the top of the ethernet port connector. There is a definite gap of about 0.12" and you don't need the underside of the pcb shorting out against the top of the etnernet port connector.

You are finished. I guess you did not need to read this document it was just too easy!

2019-08-30 I installed Buster on a Raspberry Pi B and ran into some issues I need to document here. I am using a dongle wifi adapter of course. I had to force normal interface names because raspi.config didn't work I tried three times. I used an entry in /boot/cmdline.txt. I must stress this was the only way it would work no matter how many times I tried raspi-config.

i.e.

net.ifnames=0
root@rpi04:/boot# cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=cdf8dcc2-02 
rootfstype=ext4 elevator=deadline net.ifnames=0 fsck.repair=yes rootwait
root@rpi04:/boot#

I also added a static ip address entry for this unit because I like to use it as a terminal server (it has a usb serial adapter attached, with the ttl serial connectors to allow me to use it to connect to other systems serial consoles.)

Here is the pertinent changes in dhcpcd.conf(5)

interface wlan0
static ip_address=192.168.1.36/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.254 8.8.8.8

2020-01-04 I am selling my last (2) Pi Wingman kits but realized there is no documentation anywhere so I will add some pictures here and some basic instructions in case the one who purchases this needs them. I will also upload a copy of the documentation (pdf) as well.

The Pi Wingman- 8 In 1 GPIO Expander For The Raspberry Pi (CISECO K056)

Documentation
Pi-Wingman-v-0-1.pdf

Description
The Pi Wingman is a kit of parts, which when soldered on to the Pi or plug in module provides the means to add additional modules. It can be configured and in various ways.

Straight pins
When soldered on top of an existing module it allows you to stack another module on top (if the board underneath doesn’t have any very tall parts on)

Straight pins
When soldered under the Pi it allows you to run for example a ribbon cable directly off the back. If used in this way make very sure you solder the wingman logo to the bottom face of the Pi, pay close attention to the pictures in the examples of use section.

Right angled pins
When soldered on top an existing module it allows you to stack another module at 90 degrees so you can combine much larger boards,

Features

  • Comes as an easy to assemble kit
  • Gold plated PCB
  • Design in the UK

Applications

  • Adding another module to your Pi
  • Extending the header using a ribbon cable
  • Breaking out the pins for testing with any of the following:
    • Multi-meter
    • Logic analyser
    • Oscilloscope