Open Source means collaborative work, joined effort leading to extraordinary things. Recently we saw how a talented maker from Oradea, Romania pushed his KIT1 #uradmonitor unit to the limit!
He used a lot of his personal time to build and document something better than the original. In the end he asked for nothing except to get access to the entire KIT1 source code so it can be improved further by the community of makers. We got the message and decided to act.
The server infrastructure
uRADMonitor is Big Data. Hundreds of detectors worldwide are collecting measurements every minute, and the server deals with millions of entries in its database every day. The database holding KIT1 data was designed for efficiency: only the minimum data goes in. One reason for open sourcing was to allow customising the KIT1 units with additional sensors. We had to adapt the server backend in this regards, and now there’s an expandable list of parameters that can be uploaded.
Then there’s the data accuracy which needs to be guaranteed to a reasonable degree by supervising and testing the hardware, something impossible with open, remote constructions. Making the server decide if the data is genuine or just some random useless bits was not an easy task.
Last but not least, here comes the security. Initially, open source can be a source of vulnerabilities of the exposed system. We had to make sure the new open communication protocol is safe to use. We’ve implemented API Authorisation for all data uploads generated by the Open Source KIT1 units. Go to the dashboard, and create an account if you don’t have one already. You’ll need to use the user-id and the user-key listed there with your new uRADMonitor KIT1. If you go for the stock firmware, then you won’t need them.
Please welcome the Open Source uRADMonitor KIT1
With so many changes on the server backend, we had to improve the KIT1 circuit and PCB. We tried to add many of the suggestions received on the forum. From now on however, feel free to fork the original Github repository and do whatever you like with this open design. The new version is KIT1.2.105, and you can see the first design images below:
The new design is more compact, so if you want to add a battery you’ll have more space. The arrangement of some components has been optimised and the regulator becomes the single SMD component on this otherwise exclusively through hole components PCB. As soon as we get the first of the new PCBs, we’ll add more pictures with them.
Using the KIT1.2
Once your KIT1.2 circuit is complete, download the firmware code from Github. In config.h add your user-id and user-key from the dashboard.
Compile the code, and write the HEX to your board, using a 6 PIN ISP connector. For the fuse settings, if you followed the original design, you’ll need to set the external 8MHz crystal, and make sure the EESAVE fusebit is set.
avrdude -p atmega328p -c usbasp -U lfuse:w:0xDC:m -U hfuse:w:0xD7:m avrdude -p atmega328p -c usbasp -U flash:w:uradmonitor-KIT1-EXP.hex:i
Your unit will receive a device ID allocated dynamically by the server. If you want to use a BME280 sensor, there is code already in place. Just make sure the USE_BME280_SENSOR is set in the config file.
Adding more sensors
With the extension port that exposes I2C, UART and power, you have the possibility to add a large number of additional sensors. Add the sensor driver code, and do the sensor reading in app/data.cpp and app/data.h initSensors() and readSensorsSlow(). To send the data online, see the code file misc/expProtocol.h for parameter IDs and how they are used in uRADMonitor.cpp line 350. More parameter IDs will be added based on demand. All previous KIT1 hardware versions are compatible with the new firmware. For any questions and assistance, use the forum.
To compile the code, please use Eclipse and the AVR Crosspack plugin as well as the AVRDude software. For uploading the HEX code, you can use the versatile usbAsp programmer configured for 3.3V!