小e体验板远程控制led-Arduino中文社区 - Powered by Discuz! Archiver

王顺 发表于 2017-5-3 15:49

小e体验板远程控制led

今天给他家带来的是远程控制led
一、拿到小e开发板已经很久了,研究了一段时间,也不断的尝试修改固件,但是官方的固件还是有点看不懂,且没次编译固件和修改代码,我就在网上收索了很多相关的质料,发现ESP8266开发有以下几种   
1、使用ESP8266 AT 固件,使用时,单片机通过串口用AT指令来实现wifi连接、网络通迅,例如arduino uno+esp8266他们间使用AT指令来交互。
2、使用ESP8266 SDK开发包,直接用C编程。例如果云esp8266 sdk开发之类。直接开发BIN文件
3、使用NODEMCU固件,这是国内大能 在SDK基础上,加入了LUA语言   
4、发现了arduino IDE可以直接开发ESP8266开发板,这样就省去了用虚拟机编写固件,也不用代码编辑器查看大量的代码,arduino IDE直接编程,原理还是在SDK基础上开发,不过已经封装为我们熟的Arduino语言了。

二、所以这次开发我使用了第4的一种开放方式,简单,方便,快捷,利用了非官方平台的其他平台,协议简单,容易上手,建议大家可以一起试试。
注意已经不需要ARDUINO硬件了,而是利用arduino软件平台来编译8266的源码。
三、实验步骤
1、搭建环境
打开arduinoide->首选项->“附加开发板管理器网址”输入http://wechat.doit.am/package_esp8266com_index.json
I}(E83SVV_HS_C}D76U`({9.png (80.08 KB, 下载次数: 0)
http://bbs.kaifakuai.com/data/attachment/forum/201705/03/152151j8ytwjyl8y85wjkz.png
然后 重启ide,打开:工具->板->boards manager(开放板管理)

)SZTX$HKJ8`FC0L_HK.png (108.19 KB, 下载次数: 0)
http://bbs.kaifakuai.com/data/attachment/forum/201705/03/152141yfr6rbwoyzeqr0pz.png

如果失败,多点几次,等待安装完毕 最后可以看到
5SP2JHJ69QD$HY8YJ(T}`OI.png (264.19 KB, 下载次数: 0)
http://bbs.kaifakuai.com/data/attachment/forum/201705/03/152132bq5xfeldxegoaeie.png

如果上述方法下载不了,度盘链接http://pan.baidu.com/s/1kTgyNzh 密码:xamt
函数库说明:http://esp8266.github.io/Arduino ... /doc/libraries.html
解压即用
2、代码实作部分接下来,我就带着大家试着做一个远程控制led

再去酱菜创客(jcck.online)注册申请apikey和添加设备

4486]I{VW]L@Y4T3GE)XLAB.png (39.77 KB, 下载次数: 0)
http://bbs.kaifakuai.com/data/attachment/forum/201705/03/152000qqwqmw645wlg48cq.png

然后再添加开关设备

UAQPR`G90ZUUK))54Y8P`FS.png (24.03 KB, 下载次数: 0)

http://bbs.kaifakuai.com/data/attachment/forum/201705/03/152013xge9mamhph9hg5m5.png
附上通信协议
酱菜创客物联平台:
               本物联平台采用的是TCP通信协议
               酱菜创客服务器IP:jcck.online,端口号:8266
使用说明:
      每个设备连接服务器前,需绑定自己的apikey,apikey可到酱菜创客(jcck.online)去注册申请,再去新建添加设备,获取设备的sid和nid。设备完成绑定后,设备需每分钟向服务器发送一条心跳消息。
通信格式:
绑定apikey:
          向酱菜创客服务器发送:mode=bind&apikey=你的apikey&data={ck001000bind}
          服务器回复:bind ok
心跳消息:
         向酱菜创客服务器发送:mode=up&apikey=你的apikey&data={ck你的sid你的nidlife}\r\n
控制消息:
         服务器向设备发送:{ck你的sid你的niddata}\r\n
         data=0/1(1为开,0为关)
上传数据:
      向酱菜创客服务器发送:mode=up&apikey=你的apikey&data={ck你的sid你的niddata}\r\n
      data:上传的数据
同步设备开关状态:
      向酱菜创客服务器发送:mode=up&apikey=你的apikey&data={ck你的sid你的nidstadata}\r\n
      data: 设备开关状态0/1
服务器转发指令:
       向酱菜创客服务器发送:mode=exe&apikey=你的apikey&data={cksidniddata}\r\n
       sid为目标终端的sid,nid为目标终端的nid
       data为你要发给目标终端的数据
       这个指令可以实现终端与终端之间交流对话噢

硬件:
      1、小E体验板         一块
      2、继电器模块 (LED)       一个
      3、导线若干
烧写模式接线方法:(用USB转TTL串口连接模块与PC)
小E体验板         u转串
VCC-------------5
GND------------GND
GPIO0----------GND
CH_PD---------5
RX---------------TX
TX---------------Rx

运行模式ESP8266接线:VCC---------------5CH_PD-----------5
GND-------------GND
GND-------------LED负极
GPIO2----------LED正极

[*]#include <ESP8266WiFi.h>
[*]WiFiClient client;
[*]#define relay1 2 //继电器连接在8266的GPIO2上,可以随便定义其他GPIO脚
[*]const char *ssid   = "123456";//这里是我的wifi,你使用时修改为你要连接的wifi ssid
[*]const char *password = "1234567890";//你要连接的wifi密码
[*]const char *host = "jcck.online";//酱菜创客服务器IP
[*]const int httpPort =8266;//端口号
[*]String line ="";
[*]int m=0;
[*]void setup() {
[*]Serial.begin(115200);//波特率
[*]delay(10);
[*]pinMode(relay1,OUTPUT);
[*]// We start by connecting to a WiFi network
[*]Serial.println();
[*]Serial.println();
[*]Serial.print("Connecting to ");
[*]Serial.println(ssid);
[*]WiFi.begin(ssid, password);
[*]while (WiFi.status() != WL_CONNECTED) {
[*]    delay(500);
[*]    Serial.print(".");
[*]}
[*]Serial.println("");
[*]Serial.println("WiFi connected");
[*]Serial.println("IP address: ");
[*]Serial.println(WiFi.localIP());
[*]while (!client.connect(host, httpPort)) {
[*]    Serial.println("connection failed");
[*]    //return;
[*]    delay(500);
[*]}
[*]Serial.print("connecting to ");
[*]Serial.println(host);
[*]client.write("mode=bind&apikey=<font color="#ff0000">edc4c38761f054cd&</font>data={ck<font color="#ff0000">003000</font>bind}\r\n");//绑定apikey,修改成你自己的apikey,红色部分是我的。
[*]delay(10);
[*]}
[*]//int value = 0;
[*]void loop() {
[*]while(client.available()){
[*]    String line = client.readStringUntil('\r');
[*]   Serial.println(line);
[*]    //valueread=line;
[*]    //Serial.println(valueread);
[*]    if(line=='3' & line=='0' & line=='1')
[*]    {
[*]      digitalWrite(relay1,HIGH);
[*]      Serial.println("led on");
[*]   }
[*]   if(line=='3' & line=='0' & line=='0')
[*]    {
[*]      digitalWrite(relay1,LOW);
[*]      Serial.println("led off");
[*]   }
[*]}
[*]String line ="";//发送心跳包
[*]m++;
[*]if(m%40==0)
[*]{
[*]    client.write("mode=up&apikey=edc4c38761f054cd&data={ck003000life}\r\n");//发送心跳消息,修改成你自己的apikey
[*]    m=0;
[*]   }
[*]delay(500);
[*]}

复制代码
服务器发给终端的控制消息格式:{ck+设备sid+设备nid+data}
                                                       data=0/1(0为关,1为开)
接下来编译下载进8266就可以控制了噢
赶紧来试试噢,开发就这么简单!

后面附上调试结果
[$5UJ%S1(4ZCW}$0MDXCWK6.png (40.82 KB, 下载次数: 0)
http://bbs.kaifakuai.com/data/attachment/forum/201705/03/151955b99rvryawbs9msya.png
A0@YUS`BG`_%KZ7KZLLP9@4.png (24.76 KB, 下载次数: 0)
http://bbs.kaifakuai.com/data/attachment/forum/201705/03/152008wt4hf44hss0ajksa.png
附上手机apk控制端

王顺 发表于 2017-5-3 15:53

原创发表于开发快,http://bbs.kaifakuai.com/forum.php?mod=viewthread&tid=6674&extra=
页: [1]
查看完整版本: 小e体验板远程控制led