树莓派论坛

 找回密码
 立即注册

树莓派作品:红外遥控+2维度步进电机+超声波测距+语音输出

hihi 发表于 2013-4-17 21:17:28 | 显示全部楼层 |阅读模式
视频如下:
一、制作方案:
红外线控制使用1GPIO,使用lirc软件
一个步进器使用4GPIO  × 2
超声波测距 使用2GPIO
语音输出使用espeak软件
面包线若干:(建议公对公头一把,公对母头一把,母对母头一把,方便安装):http://item.taobao.com/item.htm? ... Vqt&id=19638831369&
声明:本人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 24RPi PIN 18
由于Raspberry PiGPIO只能接收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
如果按遥控器上的键,屏幕上能显示出一串plusespace值的话,多半就是正常了。
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. 重启lirc
sudo /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)


树莓派作品1.zip

5.99 KB, 下载次数: 265

树老大 发表于 2013-4-17 21:32:02 | 显示全部楼层
强帖。。。推荐。
树老大 发表于 2013-4-17 21:32:20 | 显示全部楼层
强帖。。。推荐。
树老大 发表于 2013-4-17 21:32:29 | 显示全部楼层
强帖。。。推荐。
heiketiguo 发表于 2013-4-19 09:40:47 | 显示全部楼层
nice!!!
Dimpagger 发表于 2013-4-20 00:52:23 | 显示全部楼层
楼主太牛逼了
Dimpagger 发表于 2013-4-20 00:58:10 | 显示全部楼层
楼主太强悍了
nanatong 发表于 2013-5-6 12:36:23 | 显示全部楼层
mark,超声波测距。
byck2013 发表于 2013-5-9 16:30:07 | 显示全部楼层
这么厉害,我还不懂咋用哦
linux0ne 发表于 2013-5-9 20:32:56 | 显示全部楼层
这有什么具体的生活作用吗?   比如应用方向?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )