This repository provides code examples for programming MeteoMex devices (http://www.meteomex.com) and connecting them with the Internet of Things (IoT).
The MeteoMex devices are built on a Wemos D1 mini board (https://www.wemos.cc/en/latest/d1/d1_mini.html) which features a ESP8266 microcontroller @80 MHz, 4 Mb flash memory, 80 Kb RAM, 11 digital I/O pins and 1 analog I/O pin. The board comes with WiFi support, weights only 3 g and has very low energy consumption, which makes it an ideal platform for IoT applications.
The Fritzing-PCB
directory contains the ciruit design files for the MeteoMex aeria and Meteomex terra Wemos shields. The files can be viewed and edited with Fritzing https://fritzing.org/home/).
The Wemos/ESP8266 is compatible with the Arduino platform (https://www.arduino.cc) and therefore can be programmed over the USB port with the Arduino IDE (https://www.arduino.cc/en/Main/Software). For programming the Wemos, you need to install the ESP32 additional boards from http://arduino.esp8266.com/stable/package_esp8266com_index.json in the Arduino IDE and choose the correct device: LOLIN/Wemos D1 R1. Otherwise, you might "brick" it forever (happened to me..)! You also should be careful with the pinout of the Wemos D1 mini board (see https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/), if you modify the programs/ add functions. The GPIO pins on the Wemos D1 mini have different descriptions than the Arduino Pins. E.g. the Wemos D1 mini analog pin A0 corresponds in the programs to pin 17, and D1 to pin 5.
The J1 needs to be closed for waking up the microprocessor from DeepSleep via the RST pin. For reprogramming, the jumper must be removed. If transferring the compiled program to the Wemos D1 mini fails, you should try the reprogramming without the MeteoMex shield. If this still does not work, connect D3 with Ground and reset the Wemos. Now it should be in flashing mode.
Several programs provided here are written for the IoT platform Thinger.io (https://thinger.io). You can sign up for free on Thinger.io and use it for a small project (up to 2 devices). If you are working on larger projects, you can set up your own Thinger.io IoT server (https://docs.thinger.io/deployment).
Currently, I migrate all MeteoMex programs to the ThingsBoard IoT platform (https://thingsboard.io), because 1) it provides an excellent (and real) Open Source community edition, and 2) a professional version for large-scale projects. There are various options to set-up a own server (https://thingsboard.io/docs/user-guide/install/installation-options/). The data are stored in database. For up to 5,000 messages/ second, the Open Source database PostgreSQL (https://www.postgresql.org) is recommended. You can see a public dashbord (Weather station with VOC sensor) at: http://www.meteomex.com:8080/dashboard/cbde9020-2f3e-11ea-a96e-c3dba8703f6d?publicId=e96f3c70-2f4d-11ea-a96e-c3dba8703f6d
Arduino IDE program | MeteoMex | Sensors | IoT platform | Operation |
---|---|---|---|---|
autoconnect_ThingsBoard_aeria_VOCs | aeria | climate, VOCs | ThingsBoard | on USB, constantly connected to WiFi, data are pushed continuously via HTTP to ThingsBoard (~150 data points per minute!), configuration of WiFi from mobile phone using a web interphase https://github.com/prampec/IotWebConf. |
D1-Mini_BME280_CCS811_ThingerIO | aeria | climate, VOCs | Thinger | on USB, constantly connected to WiFi, data are collected every 5 minutes by Thinger. |
D1-Mini_BME280_ThingerIO_DeepSleep | aeria | climate | Thinger | on 3xAA batteries, wakes up every 1 hour, connects to WiFi, and pushes data to Thinger. |
D1-Mini_DS18B20_soil_v1_2_ThingerIO_DeepSleep | terra | soil moisture and temperature | Thinger | on 3xAA batteries, wakes up every 1 hour, connects to WiFi, and pushes data to Thinger. |
MeteoMex_USB_ThingsBoard_aeria_VOCs | aeria | climate, VOCs | ThingsBoard | on USB, constantly connected to WiFi, data are pushed every 10 minutes via HTTP to ThingsBoard. |
MeteoMex_USB_ThingsBoard_serial_DS18B20_soil_v1_2 | terra | soil moisture and temperature | ThingsBoard | on USB, sends data every hour to ThingsBoard. |
Prototype_USB_ThingsBoard_Waste_Water-Treatment | custom | SR04 ultrasonic and analog turbidity | ThingsBoard | on USB, measures tank filling level and turbidity every minute and pushes data to ThingsBoard. Data are also processed with a noise peak chopper (turbitidy) and Kalman-Filter and also sent to ThingsBoard. |
You can post your ideas/ suggestions/ etc at https://groups.google.com/forum/#!forum/meteomex