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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6245|回复: 1

小e体验板远程控制led

[复制链接]
发表于 2017-5-3 15:49 | 显示全部楼层 |阅读模式
今天给他家带来的是远程控制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)


然后 重启ide,打开:工具->板->boards manager(开放板管理)

)SZTX$HKJ8`F[GOU]C0L_HK.png (108.19 KB, 下载次数: 0)



如果失败,多点几次,等待安装完毕 最后可以看到
5SP2JHJ69QD$HY8YJ(T}`OI.png (264.19 KB, 下载次数: 0)



如果上述方法下载不了,度盘链接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)



然后再添加开关设备

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



附上通信协议
酱菜创客物联平台:
               本物联平台采用的是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[47];
  •     //Serial.println(valueread);
  •     if(line[5]=='3' & line[8]=='0' & line[9]=='1')
  •     {
  •       digitalWrite(relay1,HIGH);
  •       Serial.println("led on");
  •      }
  •      if(line[5]=='3' & line[8]=='0' & line[9]=='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);
  • }

[color=rgb(224, 51, 0) !important]复制代码

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

后面附上调试结果
[$5UJ%S1(4ZCW}$0MDXCWK6.png (40.82 KB, 下载次数: 0)


A0@YUS`BG`_%KZ7KZLLP9@4.png (24.76 KB, 下载次数: 0)


附上手机apk控制端

jcck(1).rar

240.5 KB, 下载次数: 16

 楼主| 发表于 2017-5-3 15:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:44 , Processed in 0.093654 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表