This our Device
Explanation of IOT device:
Our device is a full fledged IOT device capable of detecting theft and alarming the owner that a theft has occurred.
What sensors and actuators were used.
The board uses accelerometer ADXL335 as the sensor. A piezo electric buzzer works as an actuator.
We started by choosing our components to be placed on our board and designed a high level schematic using Altium. In the process, careful considerations were made with regards to choosing the right values of pull up resistor and decoupling capacitors, designing switch debouncing circuits and power management circuits and choosing peripherals based on power consumption. We then designed our PCB again on Altium software and sent it for fabrication. With regards to the firmware, implementation of protocols using usart, i2c, spi, ADC were done using ATMEL's ASF functions. We implemented a command line interpreter along with MQTT. Over the air firmware updates was implemented with adequate two way authentication and data integrity checks. This also involved writing our own custom boot loader or our device.
The bootloader checks for firmware updates with the help of the boot status struct in the NVM. This NVM struct is in turn updated by the application code whenever a firmware update takes place. There are two transfers in this case-one from the http server to the flash memory and from the flash to NVM. In any of the transfers, if CRC check fails during a copy, the device reverts to running the golden image, which is stored in a separate partition in the flash memory.
Cloud MQTT was used as the broker with IBM bluemix as the cloud interface.If the accelerometer values are greater than the set threshold ,ie. if a tilt is sensed, a command from the cloud to our device is sent to set the pin actuating the buzzer to high.
Below are the two major challenges we ran into during development.
1.Accelerometer not able to sense values and communicate with i2c, had to use ADC along with an externally connected ADXL 335.
2.Manufacturing error in PCB with regards to power management circuit.
Integration of command line interface code with the mqtt and the otafu was one of the most challlenging aspects of the firmware.
If given a chance to do the project again?
1.We would make sure all components that have been decided to be placed on our pcb will be throughly tested out for functionality aspects.
We would like to integrate a gps module on the board. 3.Use two devices to display the relative distance between the two devices hence the Owner knows the proximity to the device.