用arduino和yeelink--5分钟内完成远程家电控制.pdf

上传人:b****2 文档编号:3176725 上传时间:2022-11-19 格式:PDF 页数:7 大小:269.79KB
下载 相关 举报
用arduino和yeelink--5分钟内完成远程家电控制.pdf_第1页
第1页 / 共7页
用arduino和yeelink--5分钟内完成远程家电控制.pdf_第2页
第2页 / 共7页
用arduino和yeelink--5分钟内完成远程家电控制.pdf_第3页
第3页 / 共7页
用arduino和yeelink--5分钟内完成远程家电控制.pdf_第4页
第4页 / 共7页
用arduino和yeelink--5分钟内完成远程家电控制.pdf_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

用arduino和yeelink--5分钟内完成远程家电控制.pdf

《用arduino和yeelink--5分钟内完成远程家电控制.pdf》由会员分享,可在线阅读,更多相关《用arduino和yeelink--5分钟内完成远程家电控制.pdf(7页珍藏版)》请在冰豆网上搜索。

用arduino和yeelink--5分钟内完成远程家电控制.pdf

实验内容:

很多朋友都有这样的想法,能不能通过网页,直接从任何一台计算机,控制和访问自己的单片机或者arduino板呢?

这个有趣的功能,相信很多的电子爱好者都可能会想,这个功能如果能实现,是不是意味着就能在web页面,直接通过点击按钮,就能够通过互联网完成对arduino板上的资源甚至是挂接到arduino板上的设备的控制。

好像听起来有点耳熟?

这是不是就是当下很火爆的数字家庭概念吗?

是的没错,如果arduino驱动的是继电器或者可控插座,那么,我们就能很容易的在web上控制普通家用电器啦,想象一下,下班之前,在电脑上登陆自己的yeelink账号,然后点击“热水器烧水”,回家就能洗上舒舒服服的热水澡啦!

硬件要求:

Arduino主板以太网板(考虑到官方W5100以太网板的价格比较贵,这次再介绍一款SPI通信方式的低成本小板,ENC28J60,参加下图模块的模样和与arduino的连接方式进行连接,并且从这个链接获取ENC的网络函数驱动库并安装即可:

http:

/geek-原理介绍:

为了实现远程控制,为简便起见,我们先讲讲如何web遥控arduinoUNO板上的LED灯开关。

yeelink平台提供了两种方式,一种是arduino/单片机通过直接socket网络连接的办法,连入平台上,保持和服务器的长连接,这种方法控制的实时性相对较强;另外一种办法是arduino作为客户端,定期的向服务器查询传感器(LED)的当前值,如果我们要改变arduino的状态(如点亮LED),只需改变当前传感器的值(其实是发送HTTP的post命令,更新一下当前的设备状态),则arduino在定时周期到的时候,发出(HTTPget)命令来获取当前LED状态的时候,发现最近的值有变化(从0变为1)的时候,则相应的改变驱动LED的IO口状态,从而实习远程控制,这里注意,在arduino板上,如果是触发性的操作(只操作一次),则可以在get数据并操作好后,直接发送POST改变服务器上吗的传感器状态,保证不会在arduino端重复触发。

首先,照例我们要先申请到yeelink的API-KEY才可以进行:

如何免费获取API-KEY,和如何添加设备,请移步快速入门来开始吧。

第一步:

注册之后,增加一个开关类的传感器第二步,获取这次插入的控制设备的设备号和传感器号:

如下图来说,就是设备号=63,传感器号=57第三步,好了,控制按钮安装完毕,下面,将第七个PIN和GND之间连上电阻和LED灯,下载下面的arduino程序,更改三个地方,就可以通过点击网页上的按钮,进行控制了。

(居然这么简单?

是的,就是这么简单.下面想想你能怎么玩更爽吧)arduino程序中需要修改的地方有程序中需要改的地方是:

1.APIKEY:

这个需要更换成你自己账号的APIKEY2.DEVICEID:

这个需要换成设备号3.SENSORID:

这个需要换成传感器号OK,就这些了,5分钟内学会如何做家庭电器控制,你行的!

另外,需要注意一点,下文中的ethernetshield是需要你家中的路由器开启DHCP功能的,如果没有开启,可以参考将1.代码中添加byteip=192,168,1,12;(根据网络环境更改)2.将Ethernet.begin(mac)替换成Ethernet.begin(mac,ip);从这下载程序YeelinkPowerSwitch具体的程序在下面/*Yeelink网页远程控制Arduino演示代码1.使用arduinoUNO和ethernetshield2.使用数字7管脚网页控制LED灯*/#include#include#include#includebytebuff2;/foryeelinkapi#defineAPIKEY4bb08000082a070000e2e3c580000000/replaceyouryeelinkapikeyhere#defineDEVICEID63/replaceyourdeviceID#defineSENSORID57/replaceyoursensorID/assignaMACaddressfortheethernetcontroller.bytemac=0x00,0x1D,0x72,0x82,0x35,0x9D;/initializethelibraryinstance:

EthernetClientclient;/charserver=;/nameaddressforyeelinkAPIIPAddressserver(202,136,60,231);/numericIPforunsignedlonglastConnectionTime=0;/lasttimeyouconnectedtotheserver,inmillisecondsbooleanlastConnected=false;/stateoftheconnectionlasttimethroughthemainloopconstunsignedlongpostingInterval=3*1000;/delaybetween2datapoints,30sStringreturnValue=;booleanResponseBegin=false;voidsetup()pinMode(7,OUTPUT);Wire.begin();/startserialport:

Serial.begin(57600);/starttheEthernetconnectionwithDHCP:

if(Ethernet.begin(mac)=0)Serial.println(FailedtoconfigureEthernetusingDHCP);for(;);elseSerial.println(EthernetconfigurationOK);voidloop()/iftheresincomingdatafromthenetconnection./senditouttheserialport.Thisisfordebugging/purposesonly:

if(client.available()charc=client.read();/Serial.print(c);if(c=)ResponseBegin=true;elseif(c=)ResponseBegin=false;if(ResponseBegin)returnValue+=c;if(returnValue.length()!

=0&(ResponseBegin=false)Serial.println(returnValue);if(returnValue.charAt(returnValue.length()-1)=1)Serial.println(turnontheLED);digitalWrite(7,HIGH);elseif(returnValue.charAt(returnValue.length()-1)=0)Serial.println(turnofftheLED);digitalWrite(7,LOW);returnValue=;/iftheresnonetconnection,buttherewasonelasttime/throughtheloop,thenstoptheclient:

if(!

client.connected()&lastConnected)Serial.println();Serial.println(disconnecting.);client.stop();/ifyourenotconnected,andtensecondshavepassedsince/yourlastconnection,thenconnectagainandsenddata:

if(!

client.connected()&(millis()-lastConnectionTimepostingInterval)/readsensordata,replacewithyourcode/intsensorReading=readLightSensor();Serial.print(yeelink:

);/getdatafromservergetData();/storethestateoftheconnectionfornexttimethrough/theloop:

lastConnected=client.connected();/thismethodmakesaHTTPconnectiontotheserverandgetdatabackvoidgetData(void)/iftheresasuccessfulconnection:

if(client.connect(server,80)Serial.println(connecting.);/sendtheHTTPGETrequest:

client.print(GET/v1.0/device/);client.print(DEVICEID);client.print(/sensor/);client.print(SENSORID);client.print(/datapoints);client.println(HTTP/1.1);client.println(Host:

);client.print(Accept:

*);client.print(/);client.println(*);client.print(U-ApiKey:

);client.println(APIKEY);client.println(Content-Length:

0);client.println(Connection:

close);client.println();Serial.println(printgetdone.);else/ifyoucouldntmakeaconnection:

Serial.println(connectionfailed);Serial.println();Serial.println(disconnecting.);client.stop();/notethetimethattheconnectionwasmadeorattempted:

lastConnectionTime=millis();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1