首页 >> 让Galileo发条微博之二
让Galileo发条微博之二
来源:  时间:2014-12-08
分享到:

上面文章#玩转Galileo系列#让Galileo发条微博吧中,有简单介绍如何在Intel Galileo中利用写好的“weibo”和“autohome”python库实现一个发微博的程序,在这里就要开始软硬结合,通过Intel Galileo上得GPIO检测外界输入然后出发发微博程序,实现一般意义上的“物联网”,此种应用可以用在安防监控一类的应用,或者计时提醒之类的场景中得到很好地应用,由于这里包括之后的涉及硬件交互部分使用到的是由Intel官方提供的“mraa”,在其框架下无论是操作Intel Galileo一代还是二代,还是Intel Edison均类似,不用再去考虑查找GPIO映射关系。这里的教程暂以Intel Edison示范,其他类型板子均类似。

echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/mraa-upm.conf
opkg update
opkg install libmraa0

通过ssh进入到Intel Edison后,在命令行中依次敲入以上代码,完成安装“mraa”,然后按照其python教程,将代码复制到Intel Edison/weibo/Button2weibo.py中。

#!/usr/bin/env python
import mraa
import time

x = mraa.Gpio(13)
x.dir(mraa.DIR_OUT)

while True:
    x.write(1)
    time.sleep(0.2)
    x.write(0)
    time.sleep(0.2)

如代码中所示,“mraa.Gpio(13)”中的数字即为Arduino IO对应的13号引脚,保存退出后,“python Button2weibo.py”运行这段代码查看板载LED是否开始闪烁,若闪烁则说明程序运行正常。

下面呢,来写一段通过GPIO读取按钮当前状态的程序,如果按下开关则发送一条微博“有人按了Intel Edison上得按键 @plantpark”然后附上系统当前时间。

#!/usr/bin/env python

# coding=utf-8
import autohome,time,mraa
from time import localtime,strftime
x = mraa.Gpio(5)
x.dir(mraa.DIR_IN)

while True:
    if x.read() == 1:
        print("button is pressed")
        timenow = strftime("%H:%M:%S",localtime())
        mesgs ="在 " + timenow.encode("utf-8") + " 有人按了Intel Edison上的按键 @plantpark "
        autohome.post(mesgs)
        time.sleep(3)
    else:
        print("nothing is happened")
        time.sleep(3)

代码如上所示,python获取当前时间并以“小时:分钟:秒”格式显示的代码为“strftime("%H:%M:%S",localtime())”,不过这里需要对其进行utf-8编码,以便其正常通过微博发送出去。通过"x.read()"获取按键在按下与松开始的状态分别为“1”和“0”,因此,这里只需判断其是否等于“1”,若等于则发送微博,若不等于则打印“nothing is happened”,并等待3秒,然后再次循环判断是否有按键触发。

当然,如果这条程序一直运行的话,并且按键一直处于触发阶段,你的微博会每隔三秒发送一条带有时间戳的微博......直到你的微博被禁掉......

好了,这一步调通之后,之后的文章再讲解通过微博和一些简单地输入或输出设备做一些有趣的应用。