利用ESP8266 |
您所在的位置:网站首页 › 苹果手机控制esp8266 › 利用ESP8266 |
手头有一块ESP8266_01WIFI模块,是前段时间在网上买arduino套件时送的,套件中还有一个单路继电器,反正这些东西折腾完了以后也没什么用,就将网上的资料汇总了一下,做了一个远程控制的智能排插,功能非常简单,就是通过手机远程控制排插通电或断电。 先看下完成后的使用演示视频 http://v.youku.com/v_show/id_XNDAxNTg5NzYwNA==.html?spm=a2ha1.12325017.uerCenter.5!3~5~5!2~5~DL~DD~A&firsttime=1 OK,进入正题,先说下需要的材料: 1、ESP8266_01WIFI模块一个 2、单路继电器一个 3、1K电阻和和LED发光二极管各一枚。(用于指示通电或断电) 4、Arduino UNO R3单片机一块。 5、220v转5v真流电源模块一个(旧手机充电器就可以) 6、排插一个。 7、面包板一块,导线若干。 8、无线路由器一个(需要知道密码),还有就是一台能上网的电脑,呵呵。 制作过程分为三步,第一步在第三方平台申请远程控制的帐号、密码及APIKEY,第二步要把程序写到esp8266_01中,并进行测试;第三步进行组装并实现控制。 在开始之前,我们有必须先简单了解一下ESP8266的工作原理,或者说ESP8266在在手机控制电路通断过程中发挥什么作用,我们来看下面的这张图:
登录www.jcckiot.com,注册一个新用户。
点击LED1下面的文字链接(不是图标,是文字链接),就能看到LED1的sid和nid(我们的是3和0),记下来,这个是设备的编号,我们回头要用到。
网上对ESP8266程序写入的教程大致有三种,1是下载别人做好的bin文件包,使用专用软件烧录到ESP8266,我查了下,资料比较多,貌似难度很大,俺就知难而退了;2是使用USB转TTL工具进行写入,俺手头没有这种高级货;3是用Arduino UNO R3,利用Arduino IDE进行写入,我们就用这种方法。
打开Arduino IDE,默认的Arduino IDE是没有ESP8266库的,需要我们自己添加上。
点击Arduino IDE的文件-首选项,在附加开发板管理器网址中填入:http://arduino.esp8266.com/stable/package_esp8266com_index.json,然后确定。
将ESP8266_01接到Arduino UNO R3上。
需要说明的几点:
I、VVC和CH_PD接3.3V,不能接5V。
II、RX接Arduino的RX,TX接Arduino的TX,有些资料说要反过来接,经证明不行。
III、GND接Arduino的GND,GPIO0在烧录时接GND,但在运行时需要断开。
IV、有的资料说烧录时需要将Arduino的ATmega芯片(也就是最大最长的那块)给拆下,俺试了下,不拆下也行。
V、最后一点,也是让我折腾了好半天的一点:一定要用一个1K电阻将GPIO_2和3.3V连接上,这点是从其它资料中找到的,不接的话,烧录了N次都失败。
接线面包板图如下:
将以下代码粘贴到Arduino IDE中, /* * 通过酱菜创客控制继电器 */ #include WiFiClient client; #define relay1 2 //运行时继电器连接在8266的GPIO2上 const char *ssid = "TP-LINK_123";//这里是我的wifi,你使用时修改为你要连接无线路由的ssid const char *password = "a1234567";//你的wifi密码 const char *host = "www.jcckiot.com";//酱菜创客服务器IP,不要改 const int httpPort =8266;//端口号,不要改 String line =""; int m=0; void setup() { Serial.begin(115200); delay(10); pinMode(relay1,OUTPUT); //设置relay1的工作模式为输出 Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED)//如果连接不能wifi,在0.5秒后再试 { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected");//在串口监示器中显示wifi连接成功 Serial.println("IP address: "); Serial.println(WiFi.localIP()); //显示服务器的地址 while (!client.connect(host, httpPort))//如果连接不上服务器,就提示连接失败,0.5秒后再试 { Serial.println("connection failed"); //return; delay(500); } Serial.print("connecting to "); Serial.println(host); client.write("mode=bind&apikey=XXXXXX&data={ck001000bind}\r\n");//绑定apikey,把XXXXXX修改成你在酱菜创客上的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')//3是你要控制的设备的 sid,0是nid,1代表是通电 //意思是如果指定的设备的状态是1,就让realy1设置为高电平,即让继电器通电 { digitalWrite(relay1,HIGH); Serial.println("Relay on"); } if(line[5]=='3' & line[8]=='0' & line[9]=='0') //3是你要控制的设备的 sid,0是nid,0代表是断电 //意思是如果指定的设备的状态是0,就让realy1设置为低电平,即让继电器断电 { digitalWrite(relay1,LOW); Serial.println("Relay off"); } } String line =""; m++; if(m%40==0) { client.write("mode=up&apikey=XXXXXX&data={ck003000life}\r\n");/把XXXXXX修改成你自己的apikey m=0; } delay(500); }程序很简单,需要说明的地方我已经放到注释里了。我相信不需要再进行解释了。
把Arduino接上电脑的USB口,这时ESP8266红灯会亮。
点击工具栏最左的验证按钮开始编译,如无问题会提示编译完成。
(不会做电路图,只好用实物图代替了,大家将就看吧......)
如果大家能找到3.3v的电源,最好也用上,那么实物图应该是下面这样的:
我的排插比较小,占用了两个插孔位置后,还是非常紧促,安装的实际如下图(请原谅我蹩脚的焊工):
最后为了安全起见,我把前面两个被占用的孔用热熔胶给封上了,省得哪天喝大了直接把手机插在火线上,那就抖大发了……
我的电动自行车每天晚上都要在地下室充电,充的时间太短怕充不满,充的时间太长又怕过充不安全。有了这个东东,我就不用每天晚上大半夜从六楼跑下来给电动车断电了,从温暖的被窝里拿出手机,轻轻一按,一切搞定,嘻嘻…… ------------------------------全剧终----------------------------- |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |