esp8266实现自动配网+小爱语音点灯

本文介绍了如何使用Arduino IDE配置ESP8266模块,结合WiFiManager库自动连接WiFi,并利用Blinker库与点灯科技APP实现设备的远程控制。通过代码示例展示了如何处理设备的电源状态和用户交互,包括按钮控制LED灯的开关,并响应来自APP的查询请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先上图
我买的是集成的esp8266

注意:①8266会默认连接上次连接过的wifi,所以有时候不会出现AP模式。②8266只能接收2.4Ghz的信号

完整代码

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>
#include<string.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

char auth[] = ""; //blinker申请的密钥
//这两项可以不用填
char ssid[] = "";   //wifi名称
char pswd[] = "";	//wifi密码
// 新建组件对象
BlinkerButton Button1("btn-abc"); //btn-abc 为你点灯科技创建按钮的名称

int counter = 0;
bool ledState;
void miotPowerState(const String & state)
{
 
  if (state == BLINKER_CMD_ON) {
    digitalWrite(LED_BUILTIN, LOW);
    BlinkerMIOT.powerState("on");
    BlinkerMIOT.print();
    ledState = true;
  }
  else if (state == BLINKER_CMD_OFF) {
    digitalWrite(LED_BUILTIN, HIGH);
    BlinkerMIOT.powerState("off");
    BlinkerMIOT.print();
    ledState = false;
  }
}

void miotQuery(int32_t queryCode)
{

  switch (queryCode)
  {
    case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
      BLINKER_LOG("MIOT Query Power State");
      BlinkerMIOT.powerState(ledState ? "on" : "off");
      BlinkerMIOT.print();
      break;

    default :
      BlinkerMIOT.powerState(ledState ? "on" : "off");
      BlinkerMIOT.print();
      break;
  }
}
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
    if (state == BLINKER_CMD_ON)  {
      Button1.print("on");
      Button1.color("#FF0000");
      Button1.text("已关b");
      digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    }
    else if(state==BLINKER_CMD_OFF){
      Button1.print("off");
      Button1.color("#008000");
      Button1.text("已开b");
      digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    }
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
    uint32_t BlinkerTime = millis();
    Blinker.print("millis", BlinkerTime);
}


void setup()
{
  
    // 初始化串口
    Serial.begin(115200);
    WiFiManager wifiManager;
    wifiManager.resetSettings();
    Serial.println("ESP8266 WiFi Settings Cleared");
    Serial.println("connected.......");
    wifiManager.autoConnect("AutoConnectAP"); //此处修改作为AP时的wifi名称
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    
    Blinker.begin(auth,ssid,pswd);
    Blinker.attachData(dataRead);
    BlinkerMIOT.attachPowerState(miotPowerState);
    BlinkerMIOT.attachQuery(miotQuery);
    Button1.attach(button1_callback);

}

void loop() {
    Blinker.run();
}

arduino安装wifi_manager库

下载库文件

编译上传

点灯科技创建设备
下载点灯科技APP点击下载

创建按钮

ESP8266是一款常用的Wi-Fi模块,常用于物联网(IoT)项目中,因为它结合了无线通信能力和微控制器功能。如果你想通过小米的小爱同学控制ESP8266驱动的LED灯,你需要完成以下几个步骤: 1. **硬件连接**: - 将ESP8266连接到Arduino或树莓派等微控制器上,作为网关设备。 - 用GPIO端口将LED灯接到电路板上。 2. **软件设置**: - 使用Arduino IDE或其他支持ESP8266的平台编写代码,比如Espressif IoT Development Framework (esp-idf)。 3. **WiFi配置**: - 编程中需要添加WiFi连接代码,让ESP8266连接到你的家庭Wi-Fi网络。 4. **API集成**: - 小米的小爱同学是一个语音助手,通常通过云服务进行控制。你需要获取相关SDK或者API,并将其接入到你的ESP8266程序中,以便接收并解析来自小爱同学的指令。 5. **命令处理**: - 当接收到"开灯"或"关灯"之类的指令时,你的代码会判断当前状态并相应地控制LED灯。 示例代码片段可能会类似这样: ```cpp #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> // ...其他必要的库 void setup() { // ... WiFi初始化... } void loop() { if (WiFiClientSecure SecureClient.connect("your_wifi_ssid", your_wifi_password)) { String command = SecureClient.readStringUntil('\n'); // 接收命令 if (command == "开灯") { digitalWrite(LED_PIN, HIGH); } else if (command == "关灯") { digitalWrite(LED_PIN, LOW); } SecureClient.stop(); } } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值