您的位置:首页 > 游戏 > 游戏 > 推广普通话手抄报模板_百度seo优化怎么做_网络快速推广渠道_网站软文推广网站

推广普通话手抄报模板_百度seo优化怎么做_网络快速推广渠道_网站软文推广网站

2024/9/22 8:34:03 来源:https://blog.csdn.net/m0_73500130/article/details/142357700  浏览:    关键词:推广普通话手抄报模板_百度seo优化怎么做_网络快速推广渠道_网站软文推广网站
推广普通话手抄报模板_百度seo优化怎么做_网络快速推广渠道_网站软文推广网站

ESP8266是一款低功耗、高集成度的Wi-Fi SOC(System on Chip,系统级芯片),这款芯片专为物联网(IoT)应用而设计,常见开发ESP8266的环境可以使用Arduino或者ESP8266 RTOS SDK、NodeMCU,加入DHT11温湿度传感器和python脚本即可制作一个物联网模块,实时在电脑终端记录温度值和湿度值。

我这次使用的Arduino IDE,Arduino IDE默认不带ESP8266开发板,需要先下载ESP8266开发板信息,先打开首选项,随后在其他开发板管理地址里填入json文件连接:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

 随后在开发板管理中安装ESP8266开发板

随后即可在开发板中选择ESP8266开发板 

在编写代码前需要在Arduino IDE中安装DHT库,在DHT.h中可以看到不止支持DHT11温湿度传感器,也支持DHT12~22和AM2301温湿度传感器,需要精度要求高一点的可以选择AM2301这种

// DHT.h
static const uint8_t DHT11{11};  /**< DHT TYPE 11 */
static const uint8_t DHT12{12};  /**< DHY TYPE 12 */
static const uint8_t DHT21{21};  /**< DHT TYPE 21 */
static const uint8_t DHT22{22};  /**< DHT TYPE 22 */
static const uint8_t AM2301{21}; /**< AM2301 */

硬件接线

我直接购买的三线制DHT11温湿度传感器,相较于四线制的版本省得加入上拉电阻的步骤,图中的电路板S端口为信号线,中间端口为电源正极,-号端口为电源负极

 我选择了ESP8266开发板中IO2(另一面是D4)端口,因为这个端口挨着3.3V电源和GND端口,正好插一排

 Arduino IDE代码 

这里需要先确定好WIFI和WIFI密码、电脑的ID与一个空闲的端口,电脑ID可以在cmd命令中使用ipconfig命令查找,这里我使用的:8000端口 :

const char* ssid = "GAY-LINK";  // WIFI名称
const char* password = "GGBond";  // WIFI密码
const char* serverUrl = "http://电脑ID:8000"; 

 随后定义好要使用的引脚:

#define DHTPIN  2        // 定义DHT11数据引脚,连接到ESP8266的D4(IO2)引脚
#define DHTTYPE DHT11      
DHT dht(DHTPIN, DHTTYPE); 

完整版代码:

#include <ESP8266WiFi.h>  
#include <ESP8266HTTPClient.h>  
#include <DHT.h>  const char* ssid = "GAY-LINK";  // WIFI名称
const char* password = "GGBond";  // WIFI密码
const char* serverUrl = "http://电脑ID:8000"; // ID可以在cmd命令中使用ipconfig命令查找
// 这里使用的:8000端口#define DHTPIN  2        // 定义DHT11数据引脚,连接到ESP8266的D4(IO2)引脚
#define DHTTYPE DHT11     // 定义DHT类型(DHT11)  
DHT dht(DHTPIN, DHTTYPE); // 初始化DHT传感器  unsigned long previousMillis = 0;  
const long interval = 5000; // 每5秒发送一次数据  void setup() {  Serial.begin(115200);  dht.begin();  WiFi.begin(ssid, password);  while (WiFi.status() != WL_CONNECTED) {  delay(1000);  Serial.println("Connecting to WiFi...");  }  Serial.println("WiFi connected");  
}  void loop() {  unsigned long currentMillis = millis();  if (currentMillis - previousMillis >= interval) {  previousMillis = currentMillis;  // 读取温湿度数据  float humidity = dht.readHumidity();  float temperature = dht.readTemperature();  // 检查是否读取失败  if (isnan(humidity) || isnan(temperature)) {  Serial.println("Failed to read from DHT sensor!");  return;  }  // JSON格式的数据  String jsonData = "{\"humidity\":" + String(humidity) + ",\"temperature\":" + String(temperature) + "}";  // 发送HTTP POST请求  WiFiClient wifiClient;  HTTPClient http;  http.begin(wifiClient, serverUrl);  http.addHeader("Content-Type", "application/json");  int httpResponseCode = http.POST(jsonData);  // 输出HTTP响应Serial.print("HTTP Response code: ");  Serial.println(httpResponseCode);  http.end();  }  
}

Python代码

 接下来使用Python自带的http.server库和json库,制作一个主站来接受ESP8266发送来的数据,这里推荐使用JSON数据来进行传输

from http.server import BaseHTTPRequestHandler, HTTPServer  
import json  class RequestHandler(BaseHTTPRequestHandler):  def do_POST(self):  content_length = int(self.headers['Content-Length'])  post_data = self.rfile.read(content_length)  print("Received data:", post_data.decode('utf-8'))  # 解析JSON数据(推荐使用JSON,年轻就是好啊,怎么piao都累不倒,你看我现在还能跳)  try:  data = json.loads(post_data.decode('utf-8'))  print("Parsed JSON data:", data)  except json.JSONDecodeError as e:  print("Error decoding JSON:", e)  # 发送响应  self.send_response(200)  self.send_header('Content-type', 'text/plain')  self.end_headers()  self.wfile.write(b'Data received')  def run(server_class=HTTPServer, handler_class=RequestHandler, port=8000):  server_address = ('', port)  httpd = server_class(server_address, handler_class)  print(f"Starting server on port {port}...")  httpd.serve_forever()  run()

接下来运行Python脚本并在Arduino IDE中打开串口监视器:

 可以看到串口监视器显示WIFI已经连接到,并向主站设备传输了数据

 在终端可以看到接收到了ESP8266所发送来的数据,如果觉得不给力还可以在脚本中加入代码,将接收到的数据连同时间存储到一个EXCEL表格中(在物理和化学实验室里会用得到);也可以加一个TTL转Modbus模块、一个IIC协议通讯的OLED屏幕,设计设计电源电路变成Modbus RTU协议的传感器,再用C#写个上位软件;作为一个基础模块,可以延伸出甚多创意。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com