1赞

7回答

2收藏

如何在Raspberry Pi上用LED闪烁提示网站首页新访客

Raspberry Pi Raspberry Pi 5164 人阅读 | 7 人回复 | 2013-03-14

本方法只适合小网站,主要是好玩。Raspberry Pi不是很合适需要实时控制的系统(比如,飞行器,遥控小车),因为Linux内核要多任务,应用程序的优先级不能保持最高,会带来延时,但做些实时性要求不高的系统还是可以的。

硬件安装

需要以下硬件:

GPIO接口

用杜邦线将上图的3.3V输出和GPIO 23引出(板子正面朝上,GPIO引脚在左上角),将电阻和LED串联起来(电阻防止LED电流过大烧掉),注意二极管的两根脚不一样长,长脚的接正级,这样GPIO 23如果输出高电平,二极管就不发光了,输出低电平就亮啦!

都接好了后的样子如下:

GPIO接口编程WiringPi

An 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
分享到:
回复

使用道具 举报

回答|共 7 个

倒序浏览

沙发

w932443004

发表于 2013-3-16 00:46:43 | 只看该作者

收藏了先 呵呵
板凳

longbow78

发表于 2013-3-17 19:26:13 来自手机 | 只看该作者

这个好,收藏先,另外多句嘴。能改成监控淘宝小店,树莓派接上led和喇叭,大喊,主人主人有订单啦,主人主人快发货哇。
地板

longbow78

发表于 2013-3-17 19:27:39 来自手机 | 只看该作者

这个好,收藏先,另外多句嘴。能改成监控淘宝小店,树莓派接上led和喇叭,大喊,主人主人有订单啦,主人主人快发货哇。
5#

longbow78

发表于 2013-3-17 20:13:52 来自手机 | 只看该作者

这个好,收藏先,另外多句嘴。能改成监控淘宝小店,树莓派接上led和喇叭,大喊,主人主人有订单啦,主人主人快发货哇。
6#

longbow78

发表于 2013-3-17 20:16:10 来自手机 | 只看该作者

dt的手机软件和联通3g
7#

fyx710

发表于 2013-3-25 18:56:39 | 只看该作者

果断收藏之
8#

ddkangfu

发表于 2013-3-26 13:09:24 | 只看该作者

这个挺有意思。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条