本方法只适合小网站,主要是好玩。Raspberry Pi不是很合适需要实时控制的系统(比如,飞行器,遥控小车),因为Linux内核要多任务,应用程序的优先级不能保持最高,会带来延时,但做些实时性要求不高的系统还是可以的。 硬件安装需要以下硬件: GPIO接口
用杜邦线将上图的3.3V输出和GPIO 23引出(板子正面朝上,GPIO引脚在左上角),将电阻和LED串联起来(电阻防止LED电流过大烧掉),注意二极管的两根脚不一样长,长脚的接正级,这样GPIO 23如果输出高电平,二极管就不发光了,输出低电平就亮啦! 都接好了后的样子如下:
GPIO接口编程WiringPiAn implementation of most of the Arduino Wiring functions for the Raspberry Pi。 代码地址在:https://github.com/wiringPi 安装: - git clone https://github.com/WiringPi/WiringPi
- cd WiringPi/wiringPi
- sudo make install
让二极管闪一下的示例代码: - #include <wiringPi.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main (int argc, char* argv[])
- {
- int pinNumber = 4;
- if (-1 == wiringPiSetup()) {
- printf("failed to setup wiringPi");
- return 1;
- }
- pinMode(pinNumber, OUTPUT);
- digitalWrite(pinNumber, 1);
- delay(200);
- digitalWrite(pinNumber, 0);
- delay(200);
- return 0;
- }
WiringPi也有Python, Perl, PHP, Ruby的接口包装,按这里,怎么没有Go的呢。。。 RPi.GPIO这是GPIO的Python库,地址在:https://pypi.python.org/pypi/RPi.GPIO 这里建议用python2,原因是web.py还不支持python 3 … - pacman -S python2
- pacman -S python2-distribute
- easy_install RPi.GPIO
-
让二极管一直闪的示例代码: - import RPi.GPIO as GPIO
- import time
- PORT = 16
- GPIO.setwarnings(False)
- GPIO.setmode(GPIO.BOARD)
- GPIO.setup(PORT,GPIO.OUT)
- while True:
- GPIO.output(PORT,True)
- time.sleep(0.2)
- GPIO.output(PORT,False)
- time.sleep(0.2)
-
Webiopi项目地址: http://code.google.com/p/webiopi/ 这是一个使用RESTful API控制Pi的GPIO接口,文档丰富,使用起来非常简单。 安装好后,用命令python -m webiopi启动,用浏览器打开http://webiopi:raspberry@raspberrypi2:8000/webiopi/ 可以看到控制界面,其中有GPIO 26个引脚的状态(输入输出,高电平或低电平),用鼠标点端口还可以修改数据:
完成的代码最后用一小段代码来实现最初的想法,这段代码可以较实时的处理QPS<=3的网站流量,如果流量较大则会滞后反应。。。 - hugo@raspberrypi ~/bin $ cat traffic_led.sh
- #!/bin/sh
- tail -f /mnt/usb/logs/nginx/access.log | grep --line-buffered "GET / HTTP" | while read LINE; do {
- #echo $LINE
- curl -s --data "" "http://webiopi:raspberry@raspberrypi2:8000/GPIO/23/value/0"
- sleep 0.2
- curl -s --data "" "http://webiopi:raspberry@raspberrypi2:8000/GPIO/23/value/1"
- sleep 0.1
- }
- done
类似的还可以用这个方法来提醒:来自某某某的新邮件到了,Github有Pull Requests了。。。,或者网站挂了。。。 文章来源:http://hugozhu.myalert.info/2013 ... -led-indicator.html
|