使用iGPIO开启/关闭LED
在这个例子的最后,您将可以开启/关闭远程设备上的LED,通过iGPIO网站的浏览器界面。
本例所需材料:
- Raspberry Pi B型(有互联网接入,有线或无线均可)
- 一个LED和一个330欧姆的电阻
- 连接线,电路试验板
还需要的是一台电脑或智能手机用于访问iGPIO网站。
按照以下步骤设置LED控制开关:
(1)在iGPIO网站注册一个免费帐户
点击这里访问iGPIO注册页面
您需有一个电邮地址,并选择一个密码来注册一个帐号。注册后,您有User ID,即您的电邮地址和密码的帐户。
(2)设置iGPIO的设备通用参数
在iGPIO网站注册后,点击此链接到登录页。使用您的帐户的电邮地址和密码登录,然后点击"设备管理器"按钮。设置以下参数:
- 名称:LED开关
- 更新间隔:不变(默认值是300秒)
- 邮件间隔:不变(默认值是3600秒(一小时))
- 设备邮件间隔:不变(默认值是3600秒)
- 报警延迟:600(如果设备没有按预定间隔访问iGPIO网站,iGPIO系统等待这段时间(600秒)后发送电邮提酲用户)
选中启用复选框,然后单击"更新"按钮。
(3)设置iGPIO的设备详细参数
完成设备通用参数的设置后,单击"打开#1"链接,弹出#1设备的详细参数页面。在这个例子中,我们使用CH1设置参数如下:
- 标签:LED(该通道是LED开关)
- 数值:1(数值=1,打开远程LED,或0将其关闭))
- 数值2:0(未在本实例中使用)
- 数值3:0(未在本实例中使用)
- 标记:2(浏览器控制该通道,也就是说,只有浏览器允许修改参数)
勾选启用复选框,然后单击"更新"按钮完成设置。该设置将允许设备读取数值。如果数值=1,该设备打开所述LED;如果数值=0,它关闭LED。
(4)制作LED开关
此链接会告诉您所有的步骤来制作LED控制开关(英文):
http://maxembedded.com/2014/07/using-raspberry-pi-gpio-using-python/
从现在起,我们假定你已经将LED连接到GPIO23上,也就是说,在Raspberry Pi针连接器16。为了检测Raspberry Pi的设置是否正确,把下面的python代码存放在一个文件中,例如/home/pi/led_blink.py:
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
led1 = 23
GPIO.setup(led1, GPIO.OUT)
GPIO.output(led1, 1)
time.sleep(5.0)
GPIO.cleanup()
然后运行下面的命令:
sudo python led_blink.py
如果一切正常,LED会闪烁(在5秒后关闭)您可以继续下面的步骤。
(5)运行Raspberry Pi的python样本代码
将Raspberry Pi连接互联网,无论是用以太网电缆连接到路由器或使用USB无线适配器,http://www.raspberrypi.org/documentation/configuration/wireless/。 用此链接下载示例代码。编辑顶部2行,即使用您的帐户名(电子件址)和密码,并将其保存到/home/pi/。欲了解更多信息,请阅读设备用户界面说明。使用下面的命令来运行示例python程序:
sudo python led_switch.py
请注意,由于更新时间间隔为300秒,运行一次代码后,您需要等待300秒再次运行它。我们建议在crontab(操作系统调度程序)中运行代码。要做到这一点,可以使用下面的命令:
crontab -e
在crontab的末尾添加一行:
*/5 * * * * sudo /usr/bin/python /home/pi/led_switch.py
保存并退出crontab。用此设定,该设备将每5分钟(300秒)读取iGPIO网站的CH1的数值,并根据CH1数值来打开和关闭LED。用户可以使从世界上任何地方用PC,平板电脑或智能手机上的浏览器访问iGPIO网站,设置CH1数值,(1或0)打开和关闭LED。
请注意:如果您使用crontab调度运行程序,请在应用程序中添加一行(在请求iGPIO网站之前)休眠"随机选择"N秒(在python中命令time.sleep(#.#)进入休眠状态#.#秒;你还必须在程序的开始添加一行"import time")。我们建议您这样做的原因是,crontab调度是基于绝对分钟,所以如果1000用户使用crontab每五分钟运行应用程序,那么所有1000用户的程序都在同一时间将访问iGPIO服务器,可能造成服务器过载。然而,如果各用户采取不同的的秒数来延迟其iGPIO的访问,将可避免这个问题。注意,休眠命令不会影响时间间隔;例如4秒延迟将意味着iGPIO网站的初始接入被延迟了4秒;然而访问的时间间隔仍是,例如,5分钟,如同以上crontab的设置。
|