查看: 1755|回复: 3

[使用文档] 【快速接入】使用esp32 & WiFi接入

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-11-18 10:51 | 显示全部楼层 |阅读模式

    使用esp32 & WiFi接入

    自blinker App 2.1.1起,原WiFi接入和MQTT已经合并为新WiFi接入  

    使用WiFi接入,当设备和手机在同一个局域网中,为局域网通信
    其余情况,使用MQTT远程通信  

    准备工作

    硬件准备

    esp32开发板(查看支持的设备)  

    软件准备

    Arduino IDE需安装好esp32扩展

    Arduino IDE 1.8.7或更新版本
    扩展安装方法1:
    使用IDE板卡管理器安装 1.0.2 及以上release版本的 ESP32 Arduino package
    扩展安装方法2:
    通过github安装  

    下载并安装blinker APP

    Android下载:
    点击下载
    或 在android应用商店搜索“blinker”下载安装
    IOS下载:
    点击下载
    或 在app store中搜索“blinker”下载  

    下载并安装blinker Arduino库

    点击下载
    Windows:将下载好的blinker库解压到 我的电脑>文档>Arduino>libraries 文件夹中
    Mac OS:将下载好的blinker库解压到 文稿>Arduino>libraries 文件夹中  

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

    1. 进入App,点击右上角的“+”号,然后选择 添加设备   
    2. 点击选择==Arduino== > ==WiFi接入==  
    3. 选择要接入的服务商  
    4. 复制申请到的==Secret Key==  

    DIY界面

    1. 在设备列表页,点击设备图标,进入设备控制面板  
    2. 首次进入设备控制面板,会弹出向导页
    3. 在向导页点击 载入示例,即可载入示例组件

    编译并上传示例程序

    打开Arduino IDE,通过 文件>示例>Blinker>Blinker_Hello/Hello_WiFi 打开例程
    在程序中找到保存Secret Key、WiFi名称和密码的变量,填入你要连接的WiFi名和密码,如:

    char auth[] = "abcdefghijkl"; //上一步中在app中获取到的Secret Key
    char ssid[] = "abcdefg"; //你的WiFi热点名称
    char pswd[] = "123456789"; //你的WiFi密码

    ==例程中宏LED_BUILTIN为开发板厂家定义的连接板载LED的引脚,如果你选择的开发板没有定义LED_BUILTIN,可以自行修改为你要使用的引脚==
    编译并上传程序到esp32开发板,打开串口调试器
    当看到提示“MQTT Connected!”,说明设备已经成功连接到MQTT服务器  

    恭喜!一切就绪

    在APP中点击刚才你添加的设备,即可进入控制界面,点点按钮就可以控制Arduino上的LED灯开关
    另一个按钮也点下试试,放心,你的手机不会爆炸~  

    进一步使用blinker

    想了解各接入方式的区别?

    看看添加设备  

    想深入理解以上例程?

    看看Arduino开发入门  

    更多实例?

    看看Arduino实例教程  

    想制作与众不同的物联网设备?

    看看自定义界面Arduino 支持库  

    完整示例程序

    
    #define BLINKER_PRINT Serial
    #define BLINKER_WIFI
    
    #include <Blinker.h>
    
    char auth[] = "Your Device Secret Key";
    char ssid[] = "Your WiFi network SSID or name";
    char pswd[] = "Your WiFi network WPA password or WEP key";
    
    // 新建组件对象
    BlinkerButton Button1("btn-abc");
    BlinkerNumber Number1("num-abc");
    
    int counter = 0;
    
    // 按下按键即会执行该函数
    void button1_callback(const String & state) {
        BLINKER_LOG("get button state: ", state);
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    }
    
    // 如果未绑定的组件被触发,则会执行其中内容
    void dataRead(const String & data)
    {
        BLINKER_LOG("Blinker readString: ", data);
        counter++;
        Number1.print(counter);
    }
    
    void setup() {
        // 初始化串口
        Serial.begin(115200);
    
        #if defined(BLINKER_PRINT)
            BLINKER_DEBUG.stream(BLINKER_PRINT);
        #endif
    
        // 初始化有LED的IO
        pinMode(LED_BUILTIN, OUTPUT);
        digitalWrite(LED_BUILTIN, HIGH);
        // 初始化blinker
        Blinker.begin(auth, ssid, pswd);
        Blinker.attachData(dataRead);
        Button1.attach(button1_callback);
    }
    
    void loop() {
        Blinker.run();
    }

    为什么设备显示不在线?

    1. 程序没有成功上传到开发板
      解决办法:重新上传,上传后打开串口监视器,确认程序正确运行  

    2. 程序中没有设置正确的ssid和密码,导致没有连接上网络
      解决办法:设置后再重新上传程序,上传后打开串口监视器,确认程序正确运行  

    3. 程序错误,导致程序运行不正确
      解决办法:先使用并理解blinker例程,再自由发挥  

    4. 开发板供电不足
      解决办法:换电源 或 换USB口  

    为什么无法切换到局域网通信?

    1. 路由器开启了AP隔离功能或禁止了UDP通信,从而阻止了局域网中设备的发现和通信
      解决办法:关闭路由器AP隔离功能 或 允许UDP通信;如果找不到相关设置,通常可重置路由器解决  
    2. mdns没有及时发现设备
      解决办法:在首页下拉刷新,可以重新搜索局域网中的设备

    该用户从未签到

    发表于 2020-6-14 14:51 | 显示全部楼层
    请问这个库和我本身的库冲突怎么办?实际上文件都是只有一个,但是就是会一直提示“"Blinker.h" 对应多个库”,如果删掉这个文件又会提示没有找到。。。

    该用户从未签到

    发表于 2020-6-14 14:52 | 显示全部楼层
    请问这个库和我本身的库冲突怎么办?实际上文件都是只有一个,但是就是会一直提示“"Blinker.h" 对应多个库”,如果删掉这个文件又会提示没有找到。。。

    该用户从未签到

    发表于 2020-6-14 14:53 | 显示全部楼层
    xyg 发表于 2020-6-14 14:52
    请问这个库和我本身的库冲突怎么办?实际上文件都是只有一个,但是就是会一直提示“"Blinker.h" 对应多个库 ...

    就像这样“Hello_WiFi:48:21: error: Blinker.h: No such file or directory”
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    用 PyQt GUI 界面下的旋钮控制舵机角度
    用 PyQt GUI 界面下的旋钮
    新人报道, 我想用 PyQt 下的 Dial 旋钮模块来控制舵机的角度。如果一切正常,这个 G
    blinker连接树莓派失败
    blinker连接树莓派失败
    错误原因如下图,想问一下大家这个该怎么解决?
    Python3接入Blinker失败
    Python3接入Blinker失败
    运行示例程序,只把auth换成真实的auth,就出现报错。 大佬们看一下这个是啥情况
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表