#include<Wire.h> #include<DHT.h> #include<BH1750.h> #include<WiFi.h> #include<PubSubClient.h> #define sensorpin 34 #define DHTPIN 2 BH1750 lightMeter; DHT dht(DHTPIN,DHT11); char* ssid ="地生小姐你带我走吧"; const char*password = "lzwgllhmdwx233"; const char*mqttServer = "39.106.6.44"; const int mqttPort =1886; const char*mqttUser = "iotlab"; const char*mqttPassword = "iot20121013"; WiFiClient espClient; PubSubClient client(espClient); char msg[50]; void callback(char*topic, byte* payload, unsigned int length) { Serial.print("Messagearrived in topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i< length; i++) { Serial.print((char)payload[i]); } Serial.println(); Serial.println("-----------------------"); } void setup() { Serial.begin(115200); WiFi.begin(ssid,password); while (WiFi.status()!= WL_CONNECTED) { delay(500); Serial.println("Connectingto WiFi.."); } Serial.println("Connectedto the WiFi network"); client.setServer(mqttServer,mqttPort); client.setCallback(callback); while (!client.connected()){ Serial.println("Connectingto MQTT..."); if (client.connect("cs225150320",mqttUser, mqttPassword )) { Serial.println("connected"); }else { Serial.print("failedwith state "); Serial.print(client.state()); delay(2000); } } client.subscribe("sub225150320"); { Serial.begin(115200); //Initialize the I2C bus (BH1750 library doesn't do this automatically) Wire.begin(); //On esp8266 you can select SCL and SDA pins using Wire.begin(D4,D3); //For Wemos / Lolin D1 Mini Pro and the Ambient Light shield use //Wire.begin(D2,D1); lightMeter.begin(); } } void loop() { client.loop(); float hum = dht.readHumidity() ; float temp = dht.readTemperature(); int lux = lightMeter.readLightLevel(); int soildhum = analogRead(sensorpin); snprintf(msg,50,"%.2f,%.2f,%d,%d",hum,temp,lux,soildhum); Serial.println(msg); client.publish("pub225150320", msg); delay(1000);
时间: 2024-04-03 15:31:21 浏览: 168
这段代码是一个基于 ESP8266 的物联网应用程序,使用 DHT11 温湿度传感器、BH1750 光强度传感器、土壤湿度传感器和 Wi-Fi 连接到 MQTT 服务器。其中,DHT11 和 BH1750 的数据通过串口打印输出,同时发送到 MQTT 服务器上指定的主题,而土壤湿度传感器的数据则只是被读取但没有被使用。在 MQTT 订阅的主题上,程序可以接收来自 MQTT 服务器上的消息,并将其打印输出。
相关问题
请写出下面库里所有的函数 #include <stdint.h> #include <Arduino.h> #include <TimeLib.h> #include "CommonMacro.h" #include "Configs/Config.h" #include "HAL/HAL.h" #include "ESPAsyncWebServer.h" // 包含异步Web服务器库文件 #include "ArduinoJson.h" #include <EEPROM.h> #include <WiFi.h> #include <HTTPClient.h> #include <zlib.h> #include <cmath> #include <WiFiUdp.h> #include "BH1750.h" #include <Wire.h> #include "DHT.h"
下面是这些库中的函数:
1. <stdint.h>:该库包含了整数类型的定义,如int8_t、uint8_t、int16_t、uint16_t等。
2. <Arduino.h>:该库是Arduino核心库,包含了很多基础函数,如digitalWrite()、analogRead()等。
3. <TimeLib.h>:该库包含了时间相关的函数,如now()、hour()、minute()等。
4. "CommonMacro.h":该库包含了一些常用的宏定义。
5. "Configs/Config.h":该库包含了一些配置参数的定义。
6. "HAL/HAL.h":该库包含了一些硬件抽象层相关的函数,如hal_init()等。
7. "ESPAsyncWebServer.h":该库包含了异步Web服务器相关的函数,如AsyncWebServer()、on()等。
8. "ArduinoJson.h":该库包含了JSON格式相关的函数,如JsonBuffer()、parseObject()等。
9. <EEPROM.h>:该库包含了EEPROM相关的函数,如EEPROM.write()、EEPROM.read()等。
10. <WiFi.h>:该库包含了WiFi相关的函数,如WiFi.begin()、WiFi.status()等。
11. <HTTPClient.h>:该库包含了HTTP客户端相关的函数,如HTTPClient()、begin()等。
12. <zlib.h>:该库包含了数据压缩相关的函数,如compress()、uncompress()等。
13. <cmath>:该库包含了数学函数相关的函数,如sin()、cos()等。
14. <WiFiUdp.h>:该库包含了UDP相关的函数,如WiFiUDP()、begin()等。
15. "BH1750.h":该库包含了BH1750光照度传感器相关的函数,如begin()、readLightLevel()等。
16. <Wire.h>:该库包含了I2C总线相关的函数,如Wire.begin()、Wire.requestFrom()等。
17. "DHT.h":该库包含了DHT温湿度传感器相关的函数,如DHT()、readTemperature()、readHumidity()等。
#include <Wire.h> #include <DHT.h> #include <DHT_U.h> #include <aJSON.h> #include <math.h> #include <MsTimer2.h>分别是什么库
- `Wire.h` 是 Arduino 的 I2C/TWI 库,用于实现 I2C/TWI 协议的通信。
- `DHT.h` 是用于读取 DHT 系列温湿度传感器的库,包括 DHT11、DHT21、DHT22 等型号。
- `DHT_U.h` 是 DHT 库的一个优化版,可以提高 DHT 传感器的读取精度和稳定性。
- `aJSON.h` 是一个轻量级的 JSON 库,可以在 Arduino 上方便地处理 JSON 数据。
- `math.h` 是 C 标准库中的数学函数库,包含了常见的数学函数,如三角函数、指数函数、对数函数等。
- `MsTimer2.h` 是一个定时器库,可以在 Arduino 上方便地实现定时器功能。
阅读全文