Life is an Expedition. What about using smart devices to track and log everyday footprint just like a hacker? By maximizing the function of the localization sensors and combining IoT platform, we can make our life with more convenient and interesting.
What it does
Our project is able provide and display essential data used to track the position of the device. First, it uses an accelerometer to track how fast the device is moving. Second, it connects to satellites through a GPS module to provide accurate location data. Third, it has an OLED screen built in to display the data to the user physically. Finally, we connect the device to the cloud and display the GPS location history and current velocity metrics through a node-RED website.
How we built it
We used the devboard to test all our code and pins of the PCB board. Then, we created 3D printable and laser cuttable parts to have ease in assembling the final PCB design together with the external components.
How it works
By connecting the GPS and accelerometer module through USART and I2C communication protocols, respectively, we were able to obtain the raw data from these modules. Then, using MQTT protocol via the WiFi module from the WINC1500 chip, we published the data into our IBM Cloud. The data in the cloud is connected to the Node Red user interface, which displays our results.
Challenges we ran into
• Getting GPS NMEA protocol data, parsing useful data, and sending the data into specific formats
• Calling map plugins into node-RED dashboard
• Debugging which pins to use for proper UART/I2C communication
Accomplishments that we're proud of
• Completed FreeRTOS-compatible drivers based on Cortex-M0 SAMD21 MCU
• Achieved wireless firmware update by combining OTAFU & BT.
• Added node-red dashboard maps and library maps to visualize the data in map and calibrate the offsets
What we learned
Ring buffer of serial console, mutex and queue of FreeRTOS, Bootloader, OTA, debugging, node-RED
What's next for IoTracking
• Use a better GPS sensor for more accurate results.
• Use a large touchscreen to improve the interaction for user
• Update the PCB and firmware for minor errors and further features