Esp8266入门即是巅峰

admin 2023年4月26日18:35:11评论16 views字数 4045阅读13分29秒阅读模式

esp8266主要用于物联网开发,可配合多种传感器实现我们所需。本文让我们一起走进esp8266的世界吧!

esp8266开发线路

线路一:掉发型

需要自己写相关传感器的代码,解决各种依赖库。需要购买公网服务器,解决内网穿透等问题。耗时耗力,工作效率差。

线路二:有手型

有手即可,我们可以借助blinker等平台连接我们的设备。官方提供的代码库比较丰富,开发者也比较多。无需购买公网服务器,并且和国内各个手机平台的语音助手对接比较方便。如小爱同学、天猫精灵等。

前期准备

🌽硬件准备

  • esp8266 (几块钱一个 还包邮 必须)
  • 杜邦线 (必须
  • 传感器 马达 舵机等 (根据你的实际情况购买)

🥑软件准备

  • Arduino IDE
  • blinker APP(用于操作物联网设备)

环境配置

运行开发工具Arduino IDE 点击文件-首选项-开发板管理地址填写下面域名:https://arduino.me/packages/esp8266.json(后期可根据自身实际情况,自行增减。)Esp8266入门即是巅峰

然后点击工具-选择其他开发板根据你的板子情况如我的是8266进行搜索。

Esp8266入门即是巅峰

选择对应的板子后,自动下载或手动下载对应的库(推荐手动下载,网络不行的话就挂代理)Esp8266入门即是巅峰

加载Blinker库

因为我们要基于Blinker开发,因而需要下载他的库,下载地址(https://diandeng.tech/dev)下载完成后,通过Arduino IDE 菜单>项目>加载库>添加.ZIP库 导入到库,如图:

Esp8266入门即是巅峰到此,开发环境配置完成。

Hello Word

🍧01 在app中添加设备,获取Secret Key

进入App,点击右上角的“+”号,然后选择 添加设备点击选择Arduino > WiFi接入复制申请到的Secret Key

🍭02 编译并上传示例程序

打开Arduino IDE,通过 文件>示例>Blinker>Blinker_Hello/Hello_WiFi 打开例子。在程序中找到如下变量,填入您申请到的Secret Key(auth)和要连接的WiFi热点名(ssid)、密码(pswd)

char auth[] = "abcdefghijkl"; //上一步中在app中获取到的Secret Key
char ssid[] = "逍遥子大表哥"; //您的WiFi热点名称
char pswd[] = "123456789"; //您的WiFi密码

配置完成后,先编译后上传。Esp8266入门即是巅峰

然后你在手机APP中就可以看到设备已经上线了。Esp8266入门即是巅峰当然名称和图标都是可以改的。

🚒03 DIY界面

在设备列表页,点击设备图标,进入设备控制面板,首次进入设备控制面板,会弹出向导页,在向导页点击 载入示例,即可载入示例组件。Esp8266入门即是巅峰

实战之基于ESP8266的远程开关机

首先来看看最终效果吧。 

🛳准备

  • esp8266开发板
  • 杜邦线
  • 电压表(可选)
  • 充电宝(可选)

🚂食用方法

编译下面代码到固件。两个线一头连接开发板的GND(负极)和GPIO0一头连接主板的电源插口。Esp8266入门即是巅峰

#define BLINKER_WIFI 
#define BLINKER_MIOT_OUTLET

#include <Blinker.h>
char auth[] = "5fdb51bc1674";
char ssid[] = "PDCN";
char pswd[] = "1234567890";
int GPIO = 0; #定义脚针为gpio0
// 新建按钮对象 和你diy页面中按钮的名字一样,即为kali
BlinkerButton Button1("kali");
int counter = 0;
//diy按钮的代码,如果你只想用小爱,这里可以直接删掉。
void button1_callback(const String & state)
{
//开机事件
  BLINKER_LOG("get button state: ", state);
  if (state == BLINKER_CMD_BUTTON_TAP) {//响应短按
    if (digitalRead(LED_BUILTIN) == HIGH) { //IF 高电平状态
      digitalWrite(LED_BUILTIN, LOW);  //灯灭
      digitalWrite(GPIO, HIGH);  //关闭高电平
      BLINKER_LOG("Button tap!");
     delay(300);  //定义3s
     digitalWrite(LED_BUILTIN, HIGH); //重新启动高电平
      digitalWrite(GPIO, LOW);  //高电平输入灯亮
      Button1.color("#FFC800");
      Button1.text("运行中");
      Button1.print();
    }

    
  }
//关机事件
  else if (state == BLINKER_CMD_BUTTON_PRESSUP) {//响应长按 初始化状态为关机

    if (digitalRead(LED_BUILTIN) == LOW) { //若电脑是开启状态(电脑通过APP启动)
       digitalWrite(LED_BUILTIN, LOW);//继电器接通
      BLINKER_LOG("Button pressed!");
      Blinker.delay(5000);
      digitalWrite(LED_BUILTIN, HIGH);//eps-01s灯灭
      digitalWrite(GPIO, LOW);//5秒后继电器断开,相当于长按电脑开机键5秒
      Button1.color("#CCCCCC");
      Button1.text("初始化");
      Button1.print();
    }
    
  }
}
//按钮事件结束
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}
//引入小爱
void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);
    if (state == BLINKER_CMD_ON) {
       digitalWrite(LED_BUILTIN, LOW);
        BlinkerMIOT.powerState("off");
        delay(500); 
        digitalWrite(LED_BUILTIN, HIGH);
        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
       
    }
    else if (state == BLINKER_CMD_OFF) { 
         digitalWrite(LED_BUILTIN, LOW);
        BlinkerMIOT.powerState("off");   
        BlinkerMIOT.print();
    }
}

void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback); //初始化按钮的参数
    BlinkerMIOT.attachPowerState(miotPowerState);//初始化小爱的参数
}

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

🕹核心代码解读

digitalWrite(LED_BUILTIN, LOW);
BlinkerMIOT.powerState("off");
delay(500); 
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("on");

电脑电脑的开机,两线接通头需断开连接。因此这里我加了时间参数delay(500);先给设备通电,然后500ms后,在断电就行了。

🍯面临的问题

因为电脑关机后,主板上也会没有电,给esp8266供电是个大问题。因此你需要借助电压表测量在电脑关机状态下,那个脚针存在3v以上的电压。然后利用主板给esp8266供电就行了。但是我的主板是二十年前的主板,一顿操作猛如虎,结果发现只有一个针脚电压0.8v。在没有办法的情况下,我用光猫的USB口直接给esp8266进行供电。算是解决了吧!

🎃对接小爱

  • 1打开米家App。通过 我的>其他平台设备>点击添加>点灯科技>绑定账号 ,绑定blinker账号

  • 2.绑定成功后,支持小爱控制的blinker设备会出现在 我的>其他平台设备>点灯科技 设备列表中

  • 3.现在可以使用小爱控制该设备了

更多精彩文章 欢迎关注我们

原文始发于微信公众号(kali黑客笔记):Esp8266入门即是巅峰

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月26日18:35:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Esp8266入门即是巅峰http://cn-sec.com/archives/1692326.html

发表评论

匿名网友 填写信息