Experimental project to log measurements of different environmental sensors such as temperature, humidity, barometric pressure and gas sensor resistance plus GPS position to an SD card and transmit them via radio to a receiver, displaying and publishing the measurements to a web site.
The idea is to send the sensors up to the sky with a weather baloon and collect some hopefully useful and interesting measurements, and of course to recover the baloon afterwards.
The transmitter using a Microchip AVR64EA MCU is reset by the watchdog should it get stuck somehow,
while the SD card address is maintained so previously written records are not overwritten.
If battery voltage goes below 3000 mV, the PA1616S GPS module is powered down, saving ~20 mA for
the rest to keep running. Below 2500 mV, no more attempt is made to write to SD card, while the
measurements of the BME688 sensor are still transmitted via an RFM95 radio module.
Below 2400 mV the whole thing pretty much stops doing anything.
GPX tracks created from the records written to SD card and sent via radio every 4 seconds
look very good, so the PA1616S GPS module seems to do a good job.
The receiver is also using an AVR64EA and an RFM95, and currently has a display and logs the received
measurements via USART to the PC. Very simple.
The client program running on a Debian PC reads the data from the receiver via the serial port and converts
it to Json using json-c. Then it gets an access token from the Keycloak server and POSTs the Json data
along with the token using libcurl to the Quarkus web app.
Besides the REST endpoint, the Quarkus web app provides a simple but responsive web page
written in plain HTML, CSS and JavaScript, using Quarkus Web Bundler including jQuery,
and Leaflet to show the current position on an OpenStreetMap map.
Also a small experimental project should have tests, right? The client program is using
AceUnit for unit tests, while those making HTTP requests are actually integration tests,
simply using the Quarkus web app running in dev mode with Dev Services for Keycloak, which is
very convenient for development but currently not included in the GitHub action building
and testing the projects.
The Quarkus web app is simply tested by building the project.

