This sample application performs collection of temperature and humidity values produced by DHT22 sensor and further visualization on the real-time web dashboard. Collected data is pushed via MQTT to Thingsboard server for storage and visualization.
Thingsboard is an open-source server-side platform that allows you to monitor and control IoT devices. It is free for both personal and commercial usage and you can deploy it anywhere.
Once you complete this tutorial, you will see your sensor data on the following dashboard.
The DHT22 sensor is connected to Arduino UNO. Arduino UNO connects to the WiFi network using ESP8266. Arduino UNO push data to Thingsboard server via MQTT protocol by using PubSubClient library for Arduino. Data is visualized using built-in customizable dashboard. The application that is running on Arduino UNO is written using Arduino SDK which is quite simple and easy to understand.
ESP8266 FirmwareIn the current tutorial WiFiEsp Arduino library is used to connect Arduino board to the internet. This library supports ESP SDK version 1.1.1 and above (AT version 0.25 and above). Please make sure that your ESP8266 has compatible firmware. You can download and flash AT25-SDK112 firmware which is tested in this tutorial.
Please note that serial baud rate of ESP8266 should be set to 9600 by the following AT command:
AT+UART_DEF=9600,8,1,0,0
Thingsboard configurationStep 1. Install Thingsboard
You will need to have Thingsboard server up and running. Use following guide to install Thingsboard (multiple options supported).
Step 2. Provision your device
This step contains instructions that are necessary to connect your device to Thingsboard.
Open Thingsboard Web UI (http://localhost:8080) in browser and login as tenant administrator
- login: tenant@thingsboard.org
- password: tenant
Goto “Devices” section. Click “+” button and create device with name “Arduino UNO Demo Device”.
Once device created, open its details and click “Manage credentials”. Enter “ARDUINO_DEMO_TOKEN” in “Access token” field and click “Save”.
Click “Copy Device ID” in device details to copy your device id to clipboard. Paste your device id to some place, this value will be used in further steps.
Step 3. Provision your dashboard
Download the dashboard file using this link. Use import/export instructions to import the dashboard to your Thingsboard instance.
Programming the Arduino UNO deviceIf you already familiar with basics of Arduino UNO programming using Arduino IDE you can skip the following step and proceed with step 2.
Step 1. Arduino IDE
In order to start programming Arduino UNO device you will need Arduino IDE installed and all related software.
Download and install Arduino IDE.
To learn how to connect your Uno board to the computer and upload your first sketch please follow this guide.
Step 2. Install Arduino libraries
Open Arduino IDE and go to Sketch -> Include Library -> Manage Libraries. Find and install the following libraries:
Note that this tutorial was tested with the following versions of the libraries:
- PubSubClient 2.6
- WiFiEsp 2.1.2
- Adafruit Unified Sensor 1.0.2
- DHT sensor library 1.3.0
Step 3. Prepare and upload sketch.
Download and open arduino-dht-esp8266-mqtt.ino sketch.
Note You need to edit following constants and variables in the sketch:
- WIFI_AP - name of your access point
- WIFI_PASSWORD - access point password
- thingsboardServer - Thingsboard HOST/IP address that is accessable within your wifi network.
Connect your Arduino UNO device via USB cable and select “Arduino/Genuino Uno” port in Arduino IDE. Compile and Upload your sketch to device using “Upload” button.
After application will be uploaded and started it will try to connect to Thingsboard node using mqtt client and upload “temperature” and “humidity” timeseries data once per second.
TroubleshootingWhen application is running you can select “Arduino/Genuino Uno” port in Arduino IDE and open “Serial Monitor” in order to view debug information produced by serial output.
Data visualizationFinally, open Thingsboard Web UI. You can access this dashboard by logging in as a tenant administrator:
- login: tenant@thingsboard.org
- password: tenant
Go to “Devices” section and locate “Arduino UNO Demo Device”, open device details and switch to “Latest telemetry” tab. If all is configured correctly you should be able to see latest values of “temperature” and “humidity” in the table.
After, open “Dashboards” section then locate and open “Arduino DHT22: Temperature & Humidity Demo Dashboard”. As a result you will see two time-series charts and two digital gauges displaying temperature and humidity level (see first picture in this tutorial).
Comments