In this project, we will measure temperature and humidity using NCD temperature and humidity sensor, ESP32, and ThingSpeak. We will also send different temperature and humidity readings to Google Sheet using ThingSpeak and IFTTT for analyzing the sensor data.
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Hardware and Software Required
- ESP-32: The ESP32 makes it easy to use the Arduino IDE and the Arduino Wire Language for IoT applications. This ESp32 IoT Module combines Wi-Fi, Bluetooth, and Bluetooth BLE for a variety of diverse applications. This module comes fully-equipped with 2 CPU cores that can be controlled and powered individually, and with an adjustable clock frequency of 80 MHz to 240 MHz. This ESP32 IoT WiFi BLE Module with Integrated USB is designed to fit in all ncd.io IoT products. Monitor sensors and control relays, FETs, PWM controllers, solenoids, valves, motors and much more from anywhere in the world using a web page or a dedicated server. We manufactured our own version of the ESP32 to fit into NCD IoT devices, offering more expansion options than any other device in the world! An integrated USB port allows easy programming of the ESP32. The ESP32 IoT WiFi BLE Module is an incredible platform for IoT application development. This ESP32 IoT WiFi BLE Module can be programmed using the Arduino IDE.
- IoT Long Range Wireless Temperature And Humidity Sensor: Industrial Long Range Wireless Temperature Humidity Sensor. Grade with a Sensor Resolution of ±1.7%RH ±0.5°C. Up to 500, 000 Transmissions from 2 AA Batteries. Measures -40°C to 125°C with Batteries that Survive these Ratings.Superior 2-Mile LOS Range & 28 miles with High-Gain Antennas.Interface to Raspberry Pi, Microsoft Azure, Arduino, and More.
- Long-Range Wireless Mesh Modem with USB Interface
- Arduino IDE
- PubSubClient Library
Arduino Client for MQTT
This library provides a client for doing simple publish/subscribe messaging with a server that supports MQTT For more information about MQTT, visit mqtt.org.
- The latest version of the library can be downloaded from GitHub
- The library comes with a number of example sketches. See File > Examples > PubSubClient within the Arduino application. Full API Documentation.
The library uses the Arduino Ethernet Client API for interacting with the underlying network hardware. This means it Just Works with a growing number of boards and shields, including:
- Arduino Ethernet
- Arduino Ethernet Shield
- Arduino YUN – use the included YunClient in place of EthernetClient, and be sure to do a Bridge.begin() first Arduino WiFi Shield - if you want to send packets greater than 90 bytes with this shield, enable the MQTT_MAX_TRANSFER_SIZE option in PubSubClient.h.
- SparkFun WiFly Shield – when used with this library
- Intel Galileo/Edison
- ESP32The library cannot currently be used with hardware based on the ENC28J60 chip – such as the Nanode or the Nuelectronics Ethernet Shield. For those, there is an alternative library available.
The Wire library allows you to communicate with I2C devices, often also called "2 wire" or "TWI" (Two Wire Interface), can download from Wire.h
- Wire.begin() Begin using Wire in master mode, where you will initiate and control data transfers. This is the most common use when interfacing with most I2C peripheral chips.
- Wire.begin(address)Begin using Wire in slave mode, where you will respond at "address" when other I2C masters chips initiate communication. Transmitting Wire.beginTransmission(address)Start a new transmission to a device at "address". Master mode is used.
- Wire.write(data)Send data. In master mode, beginTransmission must be called first.
- Wire.endTransmission()In master mode, this ends the transmission and causes all buffered data to be sent.
- Wire.requestFrom(address, count)Read "count" bytes from a device at "address". Master mode is used.
- Wire.available()Returns the number of bytes available by calling receive.
- Wire.read() Receive 1 byte.
Step 2: Uploading the Code to ESP32 Using Arduino IDE
- Before uploading the code you can view the working of this sensor at a given link.
- Download and include the PubSubClient Library and Wire.h Library.
- You must assign your API key, SSID (WiFi Name) and Password of the available network.
- Compile and upload the Temp-ThinSpeak.ino code.
- To verify the connectivity of the device and the data sent, open the serial monitor. If no response is seen, try unplugging your ESP32 and then plugging it again. Make sure the baud rate of the Serial monitor is set to the same one specified in your code 115200.
Step 3: Serial Monitor Output
Step 4: Output
Step 5: Create an IFTTT Applet
- To send data to ThingSpeak you can view it at this link.
- IFTTT is a web service that lets you create applets that act in response to another action. You can use the IFTTT Webhooks service to create web requests to trigger an action. The incoming action is an HTTP request to the webserver, and the outgoing action is an email message.
- First, create an IFTTT account.
- Create an applet. Select My Applets.
- Click the New Applet button.
- Select the input action. Click the word this.
- Click the Webhooks service. Enter Webhooks in the search field. Select the Webhooks.
- Choose a trigger.
- Complete the trigger fields. After you select Webhooks as the trigger, click the Receive a web request box to continue. Enter an event name.
- Create trigger.
- Now the trigger is created, for resulting action click That.
- Enter “Google Sheets” in the search bar, and select the “Google Sheets” box.
- If you have not connected to Google Sheet, then connect it first. Now choose action. Select add a row to a spreadsheet.
- Then, complete the action fields.
- Your applet should be created after you press the Finish.
- Retrieve your Webhooks trigger information. Select My Applets, Services and search for Webhooks. Click Webhooks and Documentation button. You see your key and the format for sending a request. Enter the event name. The event name for this example is VibrationAndTempData.You can test the service using the test button or by pasting the URL into your browser.
Step 6: Create a MATLAB Analysis
You can use the result of your analysis to trigger web requests, such as writing a trigger to IFTTT.
- Click Apps, MATLAB Analysis and select New.
- Select Trigger Email from IFTTT in the Examples section. The code below is prepopulated in your MATLAB analysis window.
- Name your analysis and modify the code.
- Save your MATLAB Analysis.
Step 7: Create a Time Control to Run Your Analysis
Evaluate your ThingSpeak channel data and trigger other events.
- Click Apps, TimeControl, and then click New TimeControl.
- Save your TimeControl.