Arduino Blinker ESP8266 做透传模块
之前想做几个arduino的物联网来参加比赛,但是大部分都太难了,而且编辑起来相当麻烦,再加上水平有限,所以最后看到,arduino中文开发者平台上的,blinker,最后决定尝试做一下,先是用了wifiduino板子,实现了按键,等一系列基本功能,后来受到引脚太少的限制,决定用mega2560+ESP8266,做一个穿透模块,这样就加更多的传感器了.
文章目录
1.实验准备
1.1硬件准备
你要实现用UNO/MEGA+Blinker+ESP 8266+Blinker+物联网你需要准备以下材料
- Arduino UNO/MEGA 2560 单片机
- ESP 8266 01S模块 及其烧录器(下面这种最好用,某宝上最便宜)
- 杜邦线
1.2所需要的软件
- Arduino IED 1.8.5以上(越高越好)
- blinker头文件库 下载以后粘贴到libraries 里 (包括blinker例程)
- 下载blinker 组件拓展包 提供Generic 8266 moudle 烧录选项
- bilnker app 在手机网页搜索下载即可
- 底下是2.3的百度云链接自取
链接: https://pan.baidu.com/s/1iIMgWuyEoUBQ1nlKJ1Xrzw .
提取码:6uvw
2.实验步骤
2.1为ESP 8266 烧录穿透组件
- 选择Generic ESP 8266 Moudle
2.选择AT固件文件
// blinker AT固件代码
#define BLINKER_AT_MQTT
#include <Blinker.h>
void setup()
{
Blinker.begin();
}
void loop()
{
Blinker.run();
}
- 选择串口上传
注:很多小伙伴在这烧录不成功,建议更换更高版本的IED,或者换一个烧录器
- 配置blinker(有基础可跳过)
下载好之后按右上角的+号新建设备
选择arduino
点击WIFI接入
请在这里选择阿里云
复制好你的KEY 然后返回设备
点击载入式例
到了这个界面我们就回到IED准备链接
- 给ESP8266模块配网
1.如果烧录成功打开串口 上电之后会显示 BLINKER-WIFI(如果没显示按一下复位键
2.在串口处输入指令AT+BLINKER_WIFI=0,“API key”,“wifi名”,“wifi密码”
3.例:AT+BLINKER_WIFI=0,3f8b2d5b6cf0,ch,66666666
返回一大堆数字表明穿透成功
打开app已经显示在线
通过串口向app发送信息
可以看到穿透信息
2.2 与ARDUINO单片机的交互
好的你以为这就结束了吗,这才刚刚开始,我们仅仅完成了穿透,但是通过单片机还是不能控制到BLINKER,具体与单片机怎么交互,我看官网好久才看出来(大佬勿喷)
- 烧录开发板的穿透程序
这是更改过后 hello blinker 的官方代码
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "********"; //自己的API KEY
char ssid[] = "*****"; //自己的wifi 名
char pswd[] = "************"; //自己的WIFI密码
// 新建组件对象
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);
BLINKER_DEBUG.stream(Serial);
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd,15,14);
Blinker.attachData(dataRead);
Button1.attach(button1_callback);
}
void loop() {
Blinker.run();
}
重点是这一句
Blinker.begin(auth, ssid, pswd,15,14); 15是RX 14是TX
里面的后两个数字是你单片机要链接的串口引脚号码
注:我用的是mega 2560 的Serial3 UNO的话 最后两个数字改成 0,1(建议使用软串口)
- 接线
将ESP8266模块的TX RX与之前单片机你设定好的串口引脚链接上(别忘了串口反接)
选择ESP 8266-01S 模块配完网络之后拔掉烧录器,取下模块,链接单片机即可,重新上电就会重新联网
- 实际调试(终于到最后一步了)
点击点我计数
打开单片机的串口就可以看到调试信息
3.补充链接
下面第一个是对应的开发者文档官方的
第二个是我初学的一个大佬的文章
第三个是Ardunio 开发者社区
物联网模块可以从最基础学习一下BLINKER