ImageVerifierCode 换一换
格式:PDF , 页数:7 ,大小:269.79KB ,
资源ID:3176725      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3176725.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(用arduino和yeelink--5分钟内完成远程家电控制.pdf)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、实验内容:很多朋友都有这样的想法,能不能通过网页,直接从任何一台计算机,控制和访问自己的单片机或者 arduino 板呢?这个有趣的功能,相信很多的电子爱好者都可能会想,这个功能如果能实现,是不是意味着就能在 web 页面,直接通过点击按钮,就能够通过互联网完成对 arduino 板上的资源甚至是挂接到 arduino 板上的设备的控制。好像听起来有点耳熟?这是不是就是当下很火爆的数字家庭概念吗?是的没错,如果 arduino 驱动的是继电器或者可控插座,那么,我们就能很容易的在 web上控制普通家用电器啦,想象一下,下班之前,在电脑上登陆自己的 yeelink 账号,然后点击“热水器烧水”,

2、回家就能洗上舒舒服服的热水澡啦!硬件要求:Arduino 主板 以太网板(考虑到官方 W5100 以太网板的价格比较贵,这次再介绍一款 SPI 通信方式的低成本小板,ENC28J60,参加下图模块的模样和与 arduino 的连接方式进行连接,并且从这个链接获取 ENC 的网络函数驱动库并安装即可:http:/geek- 原理介绍:为了实现远程控制,为简便起见,我们先讲讲如何 web 遥控 arduino UNO 板上的 LED 灯开关。yeelink 平台提供了两种方式,一种是 arduino/单片机通过直接 socket 网络连接的办法,连入平台上,保持和服务器的长连接,这种方法控制的实时

3、性相对较强;另外一种办法是 arduino 作为客户端,定期的向服务器查询传感器(LED)的当前值,如果我们要改变 arduino 的状态(如点亮 LED),只需改变当前传感器的值(其实是发送 HTTP 的 post 命令,更新一下当前的设备状态),则 arduino 在定时周期到的时候,发出(HTTP get)命令来获取当前 LED 状态的时候,发现最近的值有变化(从 0变为 1)的时候,则相应的改变驱动 LED 的 IO 口状态,从而实习远程控制,这里注意,在 arduino 板上,如果是触发性的操作(只操作一次),则可以在 get 数据并操作好后,直接发送 POST 改变服务器上吗的传感

4、器状态,保证不会在 arduino 端重复触发。首先,照例我们要先申请到 yeelink 的 API-KEY 才可以进行:如何免费获取 API-KEY,和如何添加设备,请移步 快速入门 来开始吧。第一步:注册之后,增加一个开关类的传感器 第二步,获取这次插入的控制设备的设备号和传感器号:如下图来说,就是设备号=63,传感器号=57 第三步,好了,控制按钮安装完毕,下面,将第七个 PIN 和 GND 之间连上电阻和 LED 灯,下载下面的 arduino 程序,更改三个地方,就可以通过点击网页上的按钮,进行控制了。(居然这么简单?是的,就是这么简单.下面想想你能怎么玩更爽吧)arduino 程序

5、中需要修改的地方有 程序中需要改的地方是:1.APIKEY:这个需要更换成你自己账号的 APIKEY 2.DEVICEID:这个需要换成设备号 3.SENSORID:这个需要换成传感器号 OK,就这些了,5 分钟内学会如何做家庭电器控制,你行的!另外,需要注意一点,下文中的 ethernet shield 是需要你家中的路由器开启 DHCP 功能的,如果没有开启,可以参考将 1.代码中添加 byte ip=192,168,1,12;(根据网络环境更改)2.将 Ethernet.begin(mac)替换成 Ethernet.begin(mac,ip);从这下载程序 YeelinkPowerSwi

6、tch 具体的程序在下面/*Yeelink 网页远程控制 Arduino 演示代码 1.使用 arduino UNO 和 ethernet shield 2.使用数字 7 管脚网页控制 LED 灯*/#include#include#include#include byte buff2;/for yeelink api#define APIKEY 4bb08000082a070000e2e3c580000000/replace your yeelink api key here#define DEVICEID 63/replace your device ID#define SENSORID

7、57/replace your sensor ID/assign a MAC address for the ethernet controller.byte mac=0 x00,0 x1D,0 x72,0 x82,0 x35,0 x9D;/initialize the library instance:EthernetClient client;/char server=;/name address for yeelink API IPAddress server(202,136,60,231);/numeric IP for unsigned long lastConnectionTime

8、=0;/last time you connected to the server,in milliseconds boolean lastConnected=false;/state of the connection last time through the main loop const unsigned long postingInterval=3*1000;/delay between 2 datapoints,30s String returnValue=;boolean ResponseBegin=false;void setup()pinMode(7,OUTPUT);Wire

9、.begin();/start serial port:Serial.begin(57600);/start the Ethernet connection with DHCP:if(Ethernet.begin(mac)=0)Serial.println(Failed to configure Ethernet using DHCP);for(;);else Serial.println(Ethernet configuration OK);void loop()/if theres incoming data from the net connection./send it out the

10、 serial port.This is for debugging/purposes only:if(client.available()char c=client.read();/Serial.print(c);if(c=)ResponseBegin=true;else if(c=)ResponseBegin=false;if(ResponseBegin)returnValue+=c;if(returnValue.length()!=0&(ResponseBegin=false)Serial.println(returnValue);if(returnValue.charAt(return

11、Value.length()-1)=1)Serial.println(turn on the LED);digitalWrite(7,HIGH);else if(returnValue.charAt(returnValue.length()-1)=0)Serial.println(turn off the LED);digitalWrite(7,LOW);returnValue=;/if theres no net connection,but there was one last time/through the loop,then stop the client:if(!client.co

12、nnected()&lastConnected)Serial.println();Serial.println(disconnecting.);client.stop();/if youre not connected,and ten seconds have passed since/your last connection,then connect again and send data:if(!client.connected()&(millis()-lastConnectionTime postingInterval)/read sensor data,replace with you

13、r code/int sensorReading=readLightSensor();Serial.print(yeelink:);/get data from server getData();/store the state of the connection for next time through/the loop:lastConnected=client.connected();/this method makes a HTTP connection to the server and get data back void getData(void)/if theres a suc

14、cessful connection:if(client.connect(server,80)Serial.println(connecting.);/send the HTTP GET request: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:*);cl

15、ient.print(/);client.println(*);client.print(U-ApiKey:);client.println(APIKEY);client.println(Content-Length:0);client.println(Connection:close);client.println();Serial.println(print get done.);else /if you couldnt make a connection:Serial.println(connection failed);Serial.println();Serial.println(disconnecting.);client.stop();/note the time that the connection was made or attempted:lastConnectionTime=millis();

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

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