ThingSpeak Arduino 气象站
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
| ||||
| ||||
|
关于这个项目
THINGSPEAK ARDUINO 气象站
涉足物联网
作为初学者,在物联网中涉足可能具有挑战性,因为不知道从可用的大量选项中开始。上帝保佑物语。本博客将引导您完成您的第一个 Thingspeak IoT 项目:
a) 便宜且方便
b) 易于理解
c) RAD 冷却。
项目 - 使用 Arduino 和 ESP - 01 wifi 模块将数据传输到 Thingspeak Cloud 的温度和湿度传感器。
你需要的东西
1. Arduino UNO
2. ESP - 01
3.DHT-11传感器
图>4.面包板
5.面包板电源
5. 接线。
注意 - 现在您可以使用 arduino 为传感器和 wifi 模块供电,但是像面包板电源模块这样的外部电源会更好,因为电路板无法满足运行中的 wifi 模块的峰值电流需求。我试过相信我
好吧,让我们直接潜入。
连接
ESP -01
1. VCC - 3.3V
2. 地-地
3. CH_PD - 3.3V
4. 复位 - 3.3V
5. TX - 2 (Arduino)
6. RX - 3 (Arduino)
DHT - 11
1. VCC - 5V
2. OUT - A0
3. 地-地
不要忘记将面包板电源上的跳线设置为 3.3V。
现在打开所有电源,如果没有任何东西燃烧或冒烟,到目前为止一切顺利。
设置 THINGSPEAK
转到thingspeak主页。
注册并创建一个包含两个字段温度和湿度的新频道。
创建新频道时,您将获得称为 API 密钥的东西。
我们稍后会用到这些。
设置 ARDUINO IDE
现在这一步是让代码运行的关键。图书馆。
您将在代码中使用两个,在代码中使用第三个。
在红色框中突出显示。
SoftwareSerial.h 是一个内置库,所以没有问题。
1. 您需要自行安装的库是 Adafruit 统一传感器库和 DHT 传感器库。下载链接
adafruit 的 DHT 传感器- https://github.com/adafruit/DHT-sensor-library
Adafruit 统一 传感器 图书馆- https://github.com/adafruit/Adafruit_Sensor
2. 下载两者并使用 IDE 中的 Add.ZIP 库功能添加它们。
家庭伸展
代码在这里 - https://github.com/imalwaysontheinternet/Weather-Stasion 或者只需从这里复制代码并将其粘贴到您的草图中。
在上传代码之前,有几件事要做。
1. 在此处粘贴您的 Write API 密钥
2. 在此处输入您的 Wifi SSID 和密码。
上传代码。如果一切顺利,您的 Thingspeak 频道应如下所示。
请注意,图表的更新间隔为 15 秒。
如果它仍然不起作用,请在下面的评论中写下您的问题,我们总是很乐意提供帮助。如有任何疑问和更多此类项目,请访问 virginrobotics.blogspot.com。
代码
- 代码
CODEArduino
String myAPIkey ="您在此处写入 API 密钥"; #include#include ;SoftwareSerial ESP8266(2, 3); // Rx, Tx#define DHTTYPE DHT11#define DHTPIN A0DHT dht(DHTPIN, DHTTYPE,11);浮动湿度,temp_f;长写定时器 =17; long startTime =0;long waitTime =0;boolean relay1_st =false;布尔值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();开始时间 =毫秒(); ESP8266.println("AT+RST");延迟(2000); Serial.println("连接到无线网络"); while(check_connection==0) { Serial.print("."); ESP8266.print("AT+CWJAP=\"Wifi 网络名称\",\"密码\"\r\n"); ESP8266.setTimeout(5000); if(ESP8266.find("WIFI CONNECTED\r\n")==1) { Serial.println("WIFI CONNECTED");休息; } times_check++;如果(times_check>3){times_check=0; Serial.println("尝试重新连接.."); } }}void loop(){ waitTime =millis()-startTime; if (waitTime> (writingTimer*1000)) { readSensors(); writeThingSpeak();开始时间 =毫秒(); }}void readSensors(void){ temp_f =dht.readTemperature();湿度 =dht.readHumidity();}void writeThingSpeak(void){ startThingSpeakCmd(); // 准备字符串 GET String getStr ="GET /update?api_key="; getStr +=myAPIkey; getStr +="&field1="; getStr +=String(temp_f); getStr +="&field2="; getStr +=String(湿度); 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 地址 cmd +="\",80"; ESP8266.println(cmd); Serial.print("开始命令:"); Serial.println(cmd); if(ESP8266.find("Error")) { Serial.println("AT+CIPSTART 错误");返回; }}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);延迟(500); String messageBody =""; while (ESP8266.available()) { String line =ESP8266.readStringUntil('\n'); if (line.length() ==1) { messageBody =ESP8266.readStringUntil('\n'); Serial.print("MessageBody 收到:"); Serial.println(messageBody);返回消息体; } else { ESP8266.println("AT+CIPCLOSE"); Serial.println("AT+CIPCLOSE"); } }
示意图
代码
https://github.com/imalwaysontheinternet/Weather-Station制造工艺