As you may know, several years ago I built a portable HAB receiver based on the Raspberry Pi, with a Star Trek LCARS user interface written in Python. It works well enough and I’ve not revisited the project since then.
Instead I developed mobile apps for Android and iOS, to run on phones and tablets, all written in Delphi which is an IDE and language for developing cross-platform applications Of course phones and tablets cannot receive balloon telemetry directly, so they need to be connected to a separate receiver via USB or Bluetooth or WiFi, and those apps support those connections.
Although Delphi can target Linux, that support is currently only for Intel, so Delphi could not be used to target the Raspberry Pi running Pi OS. However TMS who are probably the major supplier of 3rd party Delphi components have a product called TMS Web Core which can be used to develop Web apps, to run on pretty much any browser. Web apps cannot access hardware directly, however Web Core includes a product called Miletus which embeds a web app within a binary executable that can target, amongst other things, Raspberry Pi OS. Further, such an app can then access hardware on the Pi – GPIO, serial, SPI and I2C are all supported – making it possible to develop a HAB receiver for the Pi in Delphi code. I developed such a receiver earlier this year and presented on it in this webinar:
Initially I ran this app on a Pi 4 in a small plastic case with the official Pi touchscreen. For GPS I used a GPS HAT, and for LoRa I used a LoRa HAT, all from Uputronics.
I then wondered if anyone sells a Raspberry Pi tablet where I could add these components internally. There are some tablets available, but the only one that was currently available, and which seemed to have enough internal space, was the Raspad 3. So I ordered one from Amazon and next day it arrived.
It didn’t take long to install my software (see later for instructions) and get it working. However the internal space is quite limited, and there’s only space for a single HAT. I do have a combined GPS/LoRa HAT, however it uses SPI channel 1 which is already used by the Raspad 3’s internal board (used for power, fan control, and repeating the Pi ports). I didn’t see anything in the documentation about the use of SPI, however I doubt that many people try to add a HAT especially as it blocks air from the internal fan!
Fortunately, I had other options, namely USB. All of the Pi’s 4 USB ports are free to use, so I connected a USB GPS to one and an Uputronics USB LoRa receiver to the other. This did require some software changes, firstly to allow for a choice of GPS device, and secondly to support the LoRa receiver’s serial protocol, but I had code for that already from my Android/iOS apps.
I tried with the GPS internally, but it did make it difficult to pick up satellites, so I opted for a stick-on external GPS which I mounted on the top of the tablet, with the LoRa UHF antenna socket on the left. I think it looks pretty good.
Raspad 3 is supplied with cables etc. but without a Pi 4, so install that as per the instructions.
This bit is up to you, but I found the fan to be very noisy. It’s not so much the fan itself, but the fact that its mounted on the back of the tablet which behaves as a large sounding board, amplifying the noise from hardly audible to quite annoying. I removed the fan. My application uses little CPU and I saw temperatures around 50°C, way below the 80°C where the Pi slows down. Your Mileage May Vary.
For the latest instructions, see https://github.com/daveake/PiPADD. However note that since we aren’t using the Pi internal serial port, you don’t need to follow the instructions to free that up. The latest release binaries are in the releases section https://github.com/daveake/PiPADD/releases.
For the GPS you will need one that is designed for sticking to as surface and has a sticky pad. The cable it comes with will be much too long, and besides we need to find a way to feed the USB cable through to the inside of the case, so you will need to cut the cable, insert it through a small hole drilled in the top of the case:
Finally, solder the cable back together (but much shorter than before). Use heat-shrink tubing on the individual wires, then re-cover with the existing screening before covering with more heat-shrink tubing.
LoRa Antenna Socket
Use a short adapter cable SMA male at one end and SMA female at the other. Drill a hole in the case and fit the female connector through it:
You should now have 2 cables fitted, looking like this:
This is supplied in a case, but there’s no space for that so remove the 2 screws from the case, separate the 2 halves and remove the board from inside.
The board can now be fixed inside. I find the best place to be on top of the connector that plug into the Pi. you could instead place above the Pi but it will partially block air from the fan (if you fit that), and you’ll need to take care not to foul the fan. I think the connector option is best. Use a double-sided pad or hot-melt glue.
I mounted mine upside-down because that suited the best USB cable that I had.
Connect the USB cable, running it as neatly as you can round to one of the free USB sockets on the Pi.
Next, connect the GPS to another space USB socket, and connect the antenna cable to the SMA socket on the LoRa receiver.
Finally, slowly close down the back of the case, ensuring that the cables don’t prevent the case from closing. So long as your cables are fairly short then this should be easy enough.
Again, see the github repository for the latest full information, but remember that we are configuring two USB serial devices and not the LoRa HAT, so ignore the section on the latter.
You will need to set the Linux device name for the GPS device. To find the name, open a command terminal and type the following:
You will see plenty of entries such as tty19, which you can ignore. The interesting ones are here:
If you see ttyACM0 and ttyACM1, then one is GPS and the other LoRa. In my case the allocation was:
- LoRa = /dev/ttyACM0
- GPS = /dev/ttyACM1
If instead you don’t see ttyACM1, but do see ttyUSB0, then that is the GPS.
So, armed with this information, enter “/dev/ttyACM1” or “/dev/ttyUSB0” in the “Device” box on the GPS settings page.
LoRa USB Setting
Similarly, the LoRa USB settings page has a Device box, and this time you should enter “/dev/ttyUSB0”.
Close and restart the program once you have entered the GPS and LoRa device settings.