ESP8266接入点灯blinker物联网平台实验

实验概述:
使用WeMos D1开发板(基于ESP8266 -12F),接入blinker IOT平台,搭建一个简易物联网应用,来达到快速学会该平台基本使用的目的。具体实现是将BME280传感器和RGB LED 连接至D1并完成设备端代码编写,同时利用blinker APP 可视化搭建并配置手机应用,最终实现本地温度、湿度、海拔、压强数据的手机端查看和手机对于RGB LED的远程控制。

实验材料:
WeMos D1 开发板(这应该算是最便宜的ESP8266开发板了,大约10RMB)、BME280高精度温湿度海拔压强传感器、RGB LED灯、手机、杜邦线若干

Arduino开发环境配置:
1.点击文件->首选项,在附加开发板管理网址内填入:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
在这里插入图片描述
2.点击工具->开发板管理器,找到ESP8266拓展库并安装。
在这里插入图片描述
3.点击工具->开发板,选中相应的开发板并设置好端口。

***注意:***可以先跑一下Demo,检验硬件是否正常,如果Demo出现编译错误,那么可能是与电脑上安装的gcc/g++编译器发生了冲突,卸载即可,此外如果使用的是ESP8266模块,可能需要先刷一下AT固件。

Arduino代码:

/*
@author : JRH 
*/
#define BLINKER_WIFI//以WiFi方式接入blinker

#include <Blinker.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

//定义LED灯引脚
#define LED_R 16
#define LED_G 5
#define LED_B 4

//BME280读取海拔的一个参数
#define altitude_num 1013.25//

char auth[] = "0cadfdsg1a552";//定义Device Secret Key,从blinker APP获取
char ssid[] = "*********";//WiFi name
char pswd[] = "*********";//WiFi password

// 新建组件对象
BlinkerButton button_R("btn-86a");//红灯按钮
BlinkerButton button_G("btn-r3m");//绿灯按钮
BlinkerButton button_B("btn-gdl");//蓝灯按钮
BlinkerNumber Number1("num-tnm");//压强数据
BlinkerNumber Number2("num-p8e");//海拔数据
BlinkerNumber Number3("num-796");//温度数据
BlinkerNumber Number4("num-hi6");//湿度数据

Adafruit_BME280 bme;//实例化BME280对象

//数据定义
double pressure;
double altitude;
double temperature;
double humidity;


void R_callback(const String &state)//红灯回调函数
{  
   digitalWrite(LED_R,!digitalRead(LED_R));
   BLINKER_LOG("R_val:",state);
}

void G_callback(const String &state)//绿灯回调函数
{  
   digitalWrite(LED_G,!digitalRead(LED_G));
   BLINKER_LOG("G_val:",state);
}

void B_callback(const String &state)//蓝灯回调函数
{  
   digitalWrite(LED_B,!digitalRead(LED_B));
   BLINKER_LOG("B_val:",state);
}

void dataRead(const String & data)//本地数据发送
{
    BLINKER_LOG("Blinker readString: ", data);
    Number1.print(pressure);
    Number2.print(altitude);
    Number3.print(temperature);
    Number4.print(humidity);
}

void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    
    // 初始化LED灯
    pinMode(LED_R,OUTPUT);
    pinMode(LED_G,OUTPUT);
    pinMode(LED_B,OUTPUT);
    digitalWrite(LED_R,HIGH);
    digitalWrite(LED_G,HIGH);
    digitalWrite(LED_B,HIGH);
    
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    //回调函数注册
    button_R.attach(R_callback);
    button_G.attach(G_callback);
    button_B.attach(B_callback);

    //初始化BME280传感器
    if(!bme.begin(0x76)){
      Serial.print("BME is Wrong!");
      while(1);
    }
}

void loop() {
    //Blinker运行
    Blinker.run();

    //读取压强、海拔、温度、湿度数据
    pressure=bme.readPressure()/100;
    altitude=bme.readAltitude(altitude_num);
    temperature=bme.readTemperature();
    humidity=bme.readHumidity();
}




blinker APP 搭建与配置:
APP需要4个数据显示组件用来显示接收到的温度、湿度、海拔、压强数据,同时需要三个按钮组件来分别控制R、G、B三种色光。
在这里插入图片描述

结束语:
君子善假于物,借助于强大的<Blinker.h>,原本要写好几百行的东西,现在百十行就能实现,真的能像社区宣传的那样“3分钟实现手机控制Arduino”。

猜你喜欢

转载自blog.csdn.net/weixin_42126140/article/details/106954563