We began project upon noticing overpriced and technically low oriented autonomous meteo stations that were at that time present market. We had an idea of creating a small, pocket edition wireless meteo station that could last for days and still have the possibility of distributing crucial data from sensors such as wind speed, temperature, air quality, sun intensity, and air pressure. Distributing data is being done trough serval modules which include BLE, GSM and Ethernet in case user wants it.
Technology & hardware in the project
BME was integrated with a custom made mobile app for both Android and IOS and GSM was being triggered in case user is far away and was not able to use BME. GSM data was distributed trough 2 ways.
SMS message and HTTP requests towards our web server. If user wanted to use SMS requests, he would send a specific type of message over the network upon which our module would respond with results.
HTTP requests were being triggered in some particular intervals of the day. While creating Meteo station we were mostly oriented towards user’s experience and efficient energy consumption which was one of the main reasons we choose ESP8266 module and specific communication protocols on network layer, including internal communication. The project consisted mostly of optimizing hardware and software to a level where the user would be able to leave meteo station anywhere and let it run for days before it runs out of energy.
For transmitting data over the network we used docker containers and specific compression protocols to reduce bandwidth being sent. Containers that we used were Flask and Flask Web.
For data storage we used MongoDB. To bring things to the next level, we were requested that users who use Meteo station have the possibility of predicting weather of 2-3 days ahead. For this, we created a specific neural network learning model which consisted of fuzzy logic aspects and models such as support vector machines and decision trees.
In summary, we did both PCB design, software and general hardware design, which took us for this project 24 days.
BLE – Bluetooth Low Energy, variant of Bluetooth protocol made for use by low energy consuption devices, such as Smart Watches and IoT devices.
GSM – Communication standard made for mobile phones, but can also be used by IoT if the device contains GSM module within itself. 3G, 4G and nowadays 5G are new version of that standard which are replacing GSM.
ESP8266 – very cheap WiFi microchip compatible with Arduino, very easy for development. many libraries exist for it, enables really low consumption modes.
Flask – lightweight framework that enables easy and fast web development, in Python.
MongoDB – noSQL database, used in Big Data paradigm, including IoT.
Neural Network – important part of machine learning, Artificial Intelligence paradigm, they recognise human faces from images if trained to do so. elegant way but it requires big amounts of data for training in order to give better results.
Fuzzy Logic – used in neural network and AI, instead of classic logic (0 or 1) you have continual range of all values between 0 and 1, something like partial truth, similar to probabilites.
Vector machines – machine learning algorithms, used for clustering (classification) of various complex data.