Arduino thing speak weather station.
- Introduction:
Why chose this model.
Today’s rising demand for internet-based services necessitates effective data gathering and sharing. In this sense, the internet of things (IoT) promises to connect physical items and vehicles via electronic sensors and the internet to allow efficient data storage and interchange. As a result, effective sensing and monitoring systems are required to attain efficient IoT achievement for an application.
A sensing unit, for example, is made up of various sensors such as temperature, humidity, and gas, whereas a monitoring unit is made up of current and voltage characteristics. The Internet of Things (IoT) has revolutionized the world and has become a part of our daily lives in a fascinating way.
Arduino is an open-source platform that allows us to quickly construct electronic inventions. It is made up of a physical Programmable Circuit Board (PCB) and software (an Integrated Development Environment (IDE)) that is cross-platform.
Arduino has a standard form factor that separates the microcontroller’s functionality into a more manageable packaging.
Thing Speak is a cloud platform for the Internet of Things (IoT) that enables sensor data to be sent to the cloud. We may also use MATLAB or other tools to analyse and visualise our data, as well as create our own apps.
Temperature and humidity sensors, the DHTXX sensors come in two flavours: DHT11 and DHT22. These include an internal chip that converts analog to digital and delivers digital signals containing temperature and humidity information.
Based on temperature and humidity variables collected from the DHT11 sensor, Arduino is utilised to develop a weather monitoring system. Based on exact temperature and relative humidity within a 20-meter radius, the system was able to detect whether the weather was hot, normal, or cold throughout the test.
You can access other internet nodes (Google, Facebook, other websites, etc.) if your device is linked to the internet (e.g. B. Arduino Yun, Intel Edison, Intel Gallileo, Raspberry Pi), but others cannot. It takes a lot of network configuration effort to assign these devices to masters or servers whose clients may access data through the Internet. such as assigning unique IP addresses to nodes and setting up servers. .. Providing middleware that can manage communications is a simple solution to this problem. It acts as the device’s global message room. The device receives commands from the server and provides the data to the server
Weather is a state of the atmosphere that can be determined by several
variables including air pressure, wind, precipitation, insolation, temperature, and humidity.
Temperature and humidity have been shown to be suitable for short-term prediction of weather conditions. By measuring these factors, you can determine the quality of local atmospheric conditions and weather forecasts. Forecasting is a
method of predicting the future using past or present information. Monitoring of weather conditions is required to maintain good working conditions and is also required for planning purposes.
The ratio of the present absolute humidity to the highest attainable absolute humidity is known as relative humidity (RH) (depending on the current temperature). In a volume of air at a certain temperature of, absolute humidity is defined as the quantity of water vapour divided by the mass of dry air. As the temperature climbs above °C, the ability of air to hold water increases. It rains because the air is entirely saturated with water vapour and can’t be absorbed. Dew point is the temperature at which saturation occurs. The relative humidity of the ground is frequently less than 50% in overcast weather. Air is used to eliminate moisture from human skin. To keep the present temperature, keep your body temperature and sweating.
- Apparatus Required:
A few pieces of basic hardware are required. The purpose of using some simple hardware for this project is to illustrate both Thing Speak integration and practical use. As a result, light and humidity sensors were chosen because they have a wide range of applications, are inexpensive, and simple to connect and code.
- Arduino UNO
- ESP8266 ESP 01
- DHT Temperature and humidity (3pins)
- Breadboard
- Jumper wires
- Spark fun breadboard power supply. 3.3 to 5 V.
- Software required:
Things Speak API
Arduino IDE
- Connections and circuit Diagram:
Circuit pin/ Connections Header:
ESP -01
1. VCC – 3.3V
2. GND – GND
3. CH_PD – 3.3V
4. RESET – 3.3V
5. TX – 2 (Arduino)
6. RX – 3 (Arduino)
DHT – 11
1. VCC – 5V
2. OUT – A0
3. GND – GND
- Setting up thing Speak and Arduino:
Going to the main page of Thing speak.
After logging in, create a channel and give it an identifiable name. You can then enter the field parameters temperature and humidity. When you create a new channel, you get the API key that your code uses to authorize the transfer of data to the cloud.
This phase discusses the key to getting the code to run.
Two will be used in the code, and a third will be used to utilise the ones in the code.
The red box indicates what has been highlighted.
Because SoftwareSerial.h is a built-in library, no further work is required.
1. The Adafruit integrated sensor library and the DHT sensor library are the libraries you’ll need to install. There are a few things you can do before publishing the code to get it on the proper track.
1. In your code, paste the write API key.
2. At the location you indicated, enter the WLANS SID and password. After you’ve uploaded the code. If all goes according to plan, the Thing speak channel will look like this: It’s worth noting that the graph updates are spaced apart.
- Data Augmentation on Thing Speak:
- Analysis of data as per the channel reading:
On successful run of the following programs, we came come to the conclusion that the code ran successfully and we received the intended data and we plotted a histogram and correlation graph of the temperature and humidity.
Thus, serving the purpose of the MATLAB visual analysis.
The temperature data that is plotted shows the temperature throughout the time is on an average 40F. While the highest temperature recorded 49.9000 and the lowest recorded temperature is 35.90 F.
The humidity data that has been recorded and its average value is 86.69.
This was the description for the first two figures of the Data augmentation of the project.
While we move on to the next data interpretation, we come across a figure of histogram which talks about the temperature with the precision that how much observations were taken for each temperature on that hour.
Moreover, that data collected is based on a 24-hour data of the day. Therefore, it shows the data visualisation of the following data.
Most number of temperature values that was recorded is 38F as it has the highest number of data entries by the smart sensor while the rest is less than that. Thus, we can easily visualise the average of the data which in fact is the Temperature.
Relative humidity is also defined as the ratio of the vapor pressure of an air sample to the saturation pressure at the current temperature. The ability to act on humidity and temperature can also be expressed as saturated vapour pressure.
Now moving onto the last figure of Correlation visualisation, which is a 2D plot of Humidity against Temperature.
We understand that when the temperature is around 38 the humidity is maximum at that time which is around 91 and the humidity remains the same for the next temperature as well which is 40F.
Thus, we can understand the further plot of the graph and estimate the temperature and humidity correlations throughout the day which gives us an idea as air temperature increases, air becomes more capable to hold water molecules and its relative humidity also decreases with temperature and vice versa occurs as temperature drops relative humidity increases, hence it is getting proved by the reading of our smart sensor that when the temperature is around 20F the humidity is around 90% which is the maximum recorded and as the day hour increases and temperature increases the humidity gradually decreases, it also depends on various geographic condition perhaps this is the general theory proposed by the authorities of science and geography.
The relation between temperature and humidity is inversely proportional. Thus, the air will become more humid if the temperature decreases as relative humidity increases.
- Availability of the data to public users.
The public URL for data visualisation is attached below.
Public url: https://thingspeak.com/apps/matlab_visualizations/432818
- Arduino Code:
String myAPIkey = “HH8NFCDSADK936AL”;
#include <SoftwareSerial.h>
#include <DHT.h>;
SoftwareSerial ESP8266(2, 3); // Rx, Tx
#define DHTTYPE DHT11
#define DHTPIN A0
DHT dht(DHTPIN, DHTTYPE,11);
float humidity, temp_f;
long writingTimer = 17;
long startTime = 0;
long waitTime = 0;
boolean relay1_st = false;
boolean relay2_st = false;
unsigned char check_connection=0;
unsigned char times_check=0;
boolean error;
void setup()
{
Serial.begin(9600);
ESP8266.begin(9600);
dht.begin();
startTime = millis();
ESP8266.println(“AT+RST”);
delay(2000);
Serial.println(“Connecting to Wifi”);
while(check_connection==0)
{
Serial.print(“.”);
ESP8266.print(“AT+CWJAP=\”Airtel@D\”,\”$Classic@88\”\r\n”);
ESP8266.setTimeout(5000);
if(ESP8266.find(“WIFI CONNECTED\r\n”)==1)
{
Serial.println(“WIFI CONNECTED”);
break;
}
times_check++;
if(times_check>3)
{
times_check=0;
Serial.println(“Trying to Reconnect..”);
}
}
}
void loop()
{
waitTime = millis()-startTime;
if (waitTime > (writingTimer*1000))
{
readSensors();
writeThingSpeak();
startTime = millis();
}
}
void readSensors(void)
{
temp_f = dht.readTemperature();
humidity = dht.readHumidity();
}
void writeThingSpeak(void)
{
startThingSpeakCmd();
// preparacao da string GET
String getStr = “GET /update?api_key=”;
getStr += myAPIkey;
getStr +=”&field1=”;
getStr += String(temp_f);
getStr +=”&field2=”;
getStr += String(humidity);
getStr += “\r\n\r\n”;
GetThingspeakcmd(getStr);
}
void startThingSpeakCmd(void)
{
ESP8266.flush();
String cmd = “AT+CIPSTART=\”TCP\”,\””;
cmd += “184.106.153.149”; // api.thingspeak.com IP address
cmd += “\”,80″;
ESP8266.println(cmd);
Serial.print(“Start Commands: “);
Serial.println(cmd);
if(ESP8266.find(“Error”))
{
Serial.println(“AT+CIPSTART error”);
return;
}
}
String GetThingspeakcmd(String getStr)
{
String cmd = “AT+CIPSEND=”;
cmd += String(getStr.length());
ESP8266.println(cmd);
Serial.println(cmd);
if(ESP8266.find(“>”))
{
ESP8266.print(getStr);
Serial.println(getStr);
delay(500);
String messageBody = “”;
while (ESP8266.available())
{
String line = ESP8266.readStringUntil(‘\n’);
if (line.length() == 1)
{
messageBody = ESP8266.readStringUntil(‘\n’);
}
}
Serial.print(“MessageBody received: “);
Serial.println(messageBody);
return messageBody;
}
else
{
ESP8266.println(“AT+CIPCLOSE”);
Serial.println(“AT+CIPCLOSE”);
} }
Conclusion:
Things peak’s Cloud Services for IoT provide a tremendous amount of value to an embedded platform. The platform’s capacity to update actual data and the availability of a ready-to-use client for viewing data in real time make it highly appealing. On the other hand, Arduino is unquestionably one of the most popular hardware prototyping platforms. With more and more apps integrating with the cloud, as well as a clear new trend toward IoT, both of these technologies, when combined, provide enormous potential.
The Internet of Things provides numerous benefits to society, and through our project, we can demonstrate the power of IoT by utilising the Thing speak API, which can contribute services for the purpose of building a large number of IoT applications and assisting in their implementation on a public platform. This design provides a moderately priced manner of sensing and monitoring systems in the realm of domestic and industrial standards to implement the Internet of Things. The future of MATLAB in Thing speak, and vice versa, allows for a more in-depth investigation and analysis of sensed data at a crucial level, which is to control the surrounding environment where the parameters are vital to assess.