视频如下: 一、制作方案:红外线控制使用1个GPIO,使用lirc软件 一个步进器使用4个GPIO × 2 超声波测距 使用2个GPIO 语音输出使用espeak软件 声明:本人iamhihi@gmail.com和上述淘宝店无任何关联,纯粹是因为我在该店买了东西而已。 硬件连接:本人假设你懂基本的电路图,上述淘宝店中有相关资料可参考,本文不详细描述。 二、红外线控制:1. 需要的硬件:一个红外接收管,型号可以是TSOP1238/TSOP2238等可以3.3V电压下工作的38KHz红外接收管。 一个红外遥控器,可以是电视机、机顶盒等的遥控器。但别拿空调遥控器这种自带状态逻辑的遥控器来折磨自己。 2. 连接红外接收管:不同的红外接收管连线可能不太一样,需要参考相应的Datasheet。以TSOP 1238为例的话,当红外线接收窗朝向自己时,从左到右三个引脚分别为: 1. GND,接地,RPi PIN 6
2. VS,电源,接3.3V电源,RPi PIN 17
3. OUT,数据输出,接GPIO 24,RPi PIN 18 由于 Raspberry Pi的GPIO只能接收3.3V的输入,所以红外接收管的电源务必要接3.3V的供电。我自己用的红外接收管的型号是TSOP 1838(引脚顺序是OUT, GND, VS),按lirc_rpi项目页面的说法,这个管子应该在 5V供电下才能正常工作,不过我还是只接了3.3V,发现也能用。 3. 系统软件安装和配置:lirc_rpi项目为 Linux内核提供了支持GPIO口的红外接收管的驱动,在最新的Raspbian系统中应该已经包含。如果你的系统中没有这个模块,也许需要自己重新编译内核。具体可以参考 lirc_rpi项目主页。 然后需要安装用户态的服务进程: sudo apt-get install lirc 加载lirc_rpi内核模块: sudo modprobe lirc_rpi gpio_in_pin=24 gpio_out_pin=23 注意,在加载lirc_rpi时必须指定输入端口是GPIO 24,跟实际接线一致。输出端口设为GPIO 23,是因为我不需要这个输出端口,而目前我们GPIO 23口是空着的。 4. 测试红外接收是否正常:sudo mode2 -d /dev/lirc0 如果按遥控器上的键,屏幕上能显示出一串pluse和space值的话,多半就是正常了。 5. 配置下/etc/lirc/hardware.conf:...
LIRCD_ARGS=""
...
DRIVER="default"
...
DEVICE="/dev/lirc0" 6. 让lirc学习一下你遥控器上的按键在我的例子中,请至少学习5个按键,分别做为上(UP)、下(DOWN)、左(LEFT)、右(RIGHT)、选择(SELECT): sudo /etc/init.d/lirc stop
#学习按键
irrecord -n -d /dev/lirc0 ~/lircd.conf
#把学习后生成的配置文件作为lircd的配置文件
sudo mv ~/lircd.conf /etc/lirc/lircd.conf
sudo /etc/init.d/lirc start 配置完后,可以用irw命令测试遥控器是否工作正常。 执行完irw命令,按遥控器,确认能正确输出所按按钮的名称。 7. 配置~/.lircrc.文件,把按键与需要触发的行为进行关联:在~/.lircrc文件中增加如下内容 begin prog = irexec button = RIGHT config = sudo python /home/pi/right.py end begin prog = irexec button = LEFT config = sudo python /home/pi/left.py end begin prog = irexec button = SELECT config = sudo python /home/pi/ultrasonic.py end begin prog = irexec button = UP config = sudo python /home/pi/up.py end begin prog = irexec button = DOWN config = sudo python /home/pi/down.py end 见附件的.lircrc 8. 重启lircsudo /etc/init.d/lirc restart 9. 执行irexec命令,确认python脚本正确运行。建议先在python脚本中直接echo 显示,确认能正确执行到脚本 三、步进电机控制:比较简单,请看附件中的up.py down.py left.py right.py 注意修改里面的GPIO端口号 四、超声波测距:请看附件中的ultrasonic.py 注意修改里面的GPIO端口号 五、语音输出:sudo apt-get install espeak Test Espeak with: English female voice, emphasis on capitals (-k), speaking slowly (-s) using direct text:- espeak -ven+f3 -k5 -s150 "I've just picked up a fault in the AE35 unit" 我的例子中直接在超声波测距中调用espeak输出语音。见ultrasonic.py text = "espeak -ven+f3 -k5 -s150 " + "\"Distance %.1f\"" % distance print text os.system(text)
|