微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > wio link测评之三

wio link测评之三

时间:10-02 整理:3721RD 点击:


我们之前聊了关于wiolink的API使用方式,这个是很创新的,通过API的方式我们可以很快速的开发上层的应用,而且我们可以不需要关心底层的是怎样实现的,这次我们利用这个API的方式简单开发一个小型的项目:楼层的声控灯实现

我们这里需要两个东西,一个是声音传感器,一个就是LED了。

关于怎么连接WioLink和将API信息发送到邮件我们已经讲解过了,这里不在说明了。

还有需要注意到一个细节,就是我们可以使用Curl来获取这些内容,之前我们验证的是直接用HTTP进行请求,两者都是可以的。针对Curl在网络传输这块支持是非常全的,而且是开源的,具体大家可以curl官网进行查看:
https://curl.haxx.se/

本次的小项目我们就以Curl的方式来尝试实现一下:
这里选择python+pycurl的方式来实现,当然如果你使用c语言获取其他也是ok的,curl支持的是非常全面的。

python的搭建环境在windwos下和linux都是比较简单的,windows下面有对应的安装包直接安装就可以了。同时我们需要安装一下python的包管理工具pip,因为我们需要安装一些库来支持我们的功能;
安装好了python和pip之后需要安装两个包,具体执行命令如下:

[Scss] 纯文本查看 复制代码

pip install pycurlpip install certifi


pycurl模块是curl对Python支持的包,另外一个证书相关的包,因为我们这里是需要用到https,所以需要安装,不然无法支持。

连接好我们的wiolink,更新好firmware之后我们就可以在本地编程实现了!

代码如下:

[Python] 纯文本查看 复制代码

import pycurlimport StringIOimport certifiimport jsonimport timegetsoundurl="https://cn.wio.seeed.io/v1/node/GroveSoundA0/sound_level?access_token=7d2047855953f7d2649172782fab2ce2" onledurl="https://cn.wio.seeed.io/v1/node/GenericDOutD0/onoff/1?access_token=7d2047855953f7d2649172782fab2ce2"offledurl="https://cn.wio.seeed.io/v1/node/GenericDOutD0/onoff/0?access_token=7d2047855953f7d2649172782fab2ce2"def getSoundLevel(): b=StringIO.StringIO() c=pycurl.Curl() c.setopt(pycurl.URL, getsoundurl) c.setopt(pycurl.CAINFO, certifi.where()) c.setopt(pycurl.WRITEFUNCTION, b.write) c.setopt(pycurl.FOLLOWLOCATION, 1) c.setopt(pycurl.MAXREDIRS, 5) c.perform() #print b.getvalue() data = b.getvalue() data = json.loads(data) #print data['sound_level'] #print c.getinfo(c.HTTP_CODE) b.close() c.close() return data['sound_level']def onLed(): c=pycurl.Curl() c.setopt(c.URL, onledurl) c.setopt(pycurl.CAINFO, certifi.where()) c.setopt(c.POSTFIELDS, '') c.perform() c.close()def offLed(): c=pycurl.Curl() c.setopt(c.URL, offledurl) c.setopt(pycurl.CAINFO, certifi.where()) c.setopt(c.POSTFIELDS, '') c.perform() c.close()def main(): while True: soundLevel = getSoundLevel() if soundLevel > 200: onLed() time.sleep(3) offLed() time.sleep(0.1)if __name__ == '__main__': main()



可以看到通过这种API的方式我们开发一个应用是非常方便的!这一点真的是非常好!
传感器有点不太灵敏啊!简单有手掌拍它来表示获取声音了哈!



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top