利用按钮操作可以直接控制nodemcu的led灯的亮灭,实时显示室内的温度和压强
一块Nodemcu开发板,bmp280模块
注意:在连接电路的时候要注意,SCL连接GPIO5,SDA连接GPIO4,利用IIC通信将数据传送给nodemcu开发板。
这里只列举部分代码,这些代码也是借鉴别人自己改的,完整代码在
链接:
提取码:th87
#include <ESP8266WiFi.h> //安装esp8266arduino开发环境
#include <PubSubClient.h> //安装PubSubClient库
#include <ArduinoJson.h> //json V5版本
#include "aliyun_mqtt.h"
//需要安装crypto库
#include <Wire.h>
//#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>#define LED D4
#define WIFI_SSID "TP-LINK_6B29"//替换自己的WIFI
#define WIFI_PASSWD "wg15385778716.."//替换自己的WIFI#define PRODUCT_KEY "a1QA2EMzdKC" //替换自己的PRODUCT_KEY
#define DEVICE_NAME "esp8266" //替换自己的DEVICE_NAME
#define DEVICE_SECRET "12Q7UFMSloyEPxtJoKxewT2li7UMXw4i"//替换自己的DEVICE_SECRET#define DEV_VERSION "S-TH-WIFI-v1.0-20190220" //固件版本信息#define ALINK_BODY_FORMAT "{"id":"123","version":"1.0","method":"%s","params":%s}"
#define ALINK_TOPIC_PROP_POST "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
#define ALINK_TOPIC_PROP_POSTRSP "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post_reply"
#define ALINK_TOPIC_PROP_SET "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/service/property/set"
#define ALINK_METHOD_PROP_POST "thing.event.property.post"
#define ALINK_TOPIC_DEV_INFO "/ota/device/inform/" PRODUCT_KEY "/" DEVICE_NAME ""
#define ALINK_VERSION_FROMA "{"id": 123,"params": {"version": "%s"}}"
unsigned long lastMs = 0;WiFiClient espClient;
PubSubClient mqttClient(espClient);Adafruit_BMP280 bme; // I2C
unsigned bme280_status;
float RoomTemp;void init_wifi(const char *ssid, const char *password) //连接WiFi
{de(WIFI_STA);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED){Serial.println("WiFi does not connect, try again ...");delay(500);}Serial.println("Wifi is connected.");Serial.println("IP address: ");Serial.println(WiFi.localIP());
}void mqtt_callback(char *topic, byte *payload, unsigned int length) //mqtt回调函数
{Serial.print("Message arrived [");Serial.print(topic);Serial.print("] ");payload[length] = '