本帖最后由 bubing120 于 2015-12-26 17:27 编辑
在只有PC的情况下连接yeelink
前面几期提到了如何用各种WIFI模块把传感器的数据传到Yeelink上。但很多童鞋可能要说了,我没有WIFI模块,也没有以太网的模块,这些都太贵了,我也想体验下物联网,把传感器数据传上Yeelink,可不可以呢?
还真可以,大家可能忽略了一个事实,电脑作为一个功能最全面模块,可以为Arduino提供最多的扩展功能。现在我们可以把电脑作为一个中转。将Arduino的数据传到Yeelink上。
由于最近正在学习Python,所以就研究了下如何用Python把Arduino数据传到Yeelink上。先画个流程图理理思路。 通过流程图我们可以看见,用Arduino要做的事情很简单,读取数据,串口发送。重点在于电脑端的编程。使用Python需要完成以下两件事。
1、读取串口数据。 2、将读到的数据发送到Yeelink网站。
一、Arduino端程序。 鉴于一切从简的原则,这次我并没有设计任何的通信协议,只是单纯的发送一个数据而已。(在实际项目中十分不好,应该做一个简单的通信协议)
下面贴出Arduino端的程序,这里还是用模拟口读到的数据作为传感器信号好了。 - void setup() {
- // put your setup code here, to run once:
- Serial.begin(115200);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- Serial.println(analogRead(A0));
- delay(10000);
- }
复制代码这里设计的时候把主机定义为Arduino,由Arduino来控制上传的速度,delay是为了实现10s上传一次,而PC端则是一接收到数据就上传。
二、PC端程序。 PC端使用Python编程。
Python作为一门高级语言,在世界范围内被程序员,黑客,极客,理论研究者广泛应用。是一门非常好用的语言。
想学Python的同学,可以去以下地址看,因为我也是刚接触就不误人子弟了。 http://www.runoob.com/python/python-tutorial.html http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
由于使用广泛,网上资料非常多,完全不必要担心学不会。 这里贴出Python代码。 [pre lang="python" line="1"]import serial
import httplib2
from time import sleep
S1=serial.Serial(port='COM7',baudrate=115200,bytesize=8,parity='N',stopbits=1,timeout=5)
#打开串口
print "serial.isOpen() =", S1.isOpen()
H1=httplib2.Http(".cache")
temp=""
while True:
sleep(0.2)
while S1.inWaiting() > 0:
temp+= S1.read()
#读取数据
if temp:
temp=float(temp)
print temp
headers = {
"Host": "api.yeelink.net",
"Accept": "*/*",
"U-ApiKey": "59a4ea38a9909344b0ebfaff59e58933",
"Content-Length": str(len(str(temp))+10),
}
data = "{\"value\":"+str(temp)+"}"
#不能使用一般的数据发送方式 因为格式不对
resp, content = H1.request("http://api.yeelink.net/v1.1/device/341588/sensor/381410/datapoints", "POST", headers=headers,body=data)
print resp
temp=""
S1.close()
#串口关闭 退出时执行 非正常退出会影响下次打开[/code]
这里用到了3个外部模块,其中有2个是需要安装的,具体安装方法也请各位百度吧。这里不做详细介绍。
代码中有个”COM7“需要更换成自己Arduino在电脑上的串口号。 ApiKey在Yeelink上找
传感器地址也是
好了这样你就可以通过你的PC向Yeelink发送数据了。由于代码是基于Python的所以可以很好的移植到树莓派,或者Arduino Yun上面去,稍微改进下应该就能把树莓派作为家庭互联网的终端了。
如果喜欢观看类似科技新奇事物,以及了解创客圈最新资讯,或者您对Arduino有所耳闻,可以关注我们微信公众号,一定会带给您最新的资讯,最实用的教程,以及创客最新的玩意。
微信公众号:liudaosixway 也可以加入我们Arduino技术支持qq群:329657595
|