步骤1:raspberry部件说明:
raspi必须管理不同的事情:
1)(通过红外遥控器)到家庭影院的命令
2)音乐文件
3)触摸屏
4)arduino的心跳(可管理wdt(看门狗计时器))
我从16 g sd卡上的raspbian strech发行版开始(因为我们只会从sd卡读取文件,因此不需要使用hdd)。我不会花时间在这部分上,因为网络上充斥着有关它的信息。
让我们在下一步中查看不同的部分。。..
步骤2:红外遥控器代码
由于找不到家庭影院的电路图,我决定通过远程命令驱动它。
第一步必须完成的工作是学习raspi家庭影院远程命令的代码。
为此,我使用了 austin stanton ir代码
我有一些差异,可能是由于新版本,因为指示者相当旧,hardware.conf文件不再存在(至少我没有找到它)
似乎另外,在tuto中使用的晶体管是pnp晶体管,就我而言,我使用的是2n2222,它是npn,但结果是相同的(除了电缆连接!!!!!!)
引脚分配在/boot/config.txt中给出:
#autorisation de lirc le 2019/07/07
dtoverlay = lirc-rpi,gpio_out_pin = 22,gpio_in_pin = 23
ir led将如此连接到raspi的pin22。
重要提示:在学习raspi的代码时必须使用命令
irrecord --list-namespace
这是我为自动存储塔创建的文件:
pi @ raspitone:/etc/lirc $ cat lircd.conf
#请花一些时间按照#https://sourceforge.net/p/lirc-remotes/wiki/check 。..中的描述完成此文件,并通过以下方式将其提供给他人将其发送到##
#此配置文件是自动生成的
#在2019年5月9日星期四17:33:37使用lirc-0.9.4c(默认)#使用的命令行:-d/dev/lirc0/root/lircd.conf
#内核版本(uname -r):4.14.98-v7 +##远程名称(自配置文件开始):点唱机
#远程设备的品牌,您所拥有的东西手:#远程设备型号nr:
#远程设备信息网址:
#远程设备是否具有捆绑的捕获设备e。 g。,一个
#usb加密狗? :
#对于捆绑的usb设备:usb供应商id,产品id
#和设备字符串(使用dmesg或lsusb):
#受控设备的类型
#(电视,录像机,音频,dvd,卫星,电缆,htpc等):
受此遥控器控制的设备数:
开始使用遥控器
名称自动点唱机
位16
标志space_enc | const_length
eps 30
aeps 100
标题4470 4496
一个542 1693
零542581
ptrail 553
pre_data_bits 16
pre_data 0xc2ca
差距107863
toggle_bit_mask 0x0
频率38000
开始代码
key_power 0x807f
key_aux 0x8877
key_volumeup 0xcc33
key_volumedown 0xdc23
结束代码
结束远程
如您所见,我只需要4条命令来驱动家庭影院
电源(开/关)
aux =》切换到光输入通道(因为hc总是在dvd阅读器上启动)
和音量+/-
相关命令通过lirc命令执行:
例如:“ 放弃send_once自动点唱机key_volumeup ”
步骤3:主程序
主程序是用python编写的:
由于我是python的新手,我想可以做很多改进,但是可以运行。。..
具体说明离子:
1)管理图形屏幕:
为此,我使用的是tkinter的appjar,但针对学生(我的情况)是文明的,这意味着使用起来容易得多,可能可能性较小,但这足以满足我的目的。
2)播放mp3文件:
我将mplayer用于python。
3)生成随机数用于以随机播放模式播放:
由于我不想每个季度都听到同一首歌,所以我建立了一个小程序来检查x以前的数字列表中是否不存在该数字(x取决于
据我所知,python中的randint函数并不是那么“随机”。
4)将“心跳”发送给arduino
5)管理文件播放器:
由于mplayer是异步的,因此当文件启动时,没有办法知道python何时完成(至少我没有找到简单的方法)
要解决这个问题,我使用了mplayer命令来给出文件的长度和当前文件的进度
对于4和5我都使用了appjar产生定期任务的可能性(因为appjar是事件程序,这是创建定期事件的一种方式)。函数是:
#*******************启动任务员************** ********
app.registerevent(taskman)
p.setpolltime(1000)
“任务管理器”的任务负责人,它是程序中的一个定义,用于管理所有非屏幕事件(播放的文件的结尾,填充进度栏,将心跳发送给nano,。..)
启动后,屏幕如下所示:
以下是程序:(可以通过notepad ++或geany打开)
步骤4:raspberry part:自动启动并添加新文件
如果您查看该程序,您会发现我使用了一些bash文件:
1) start_jukebox :
实际上,目的是打开家庭影院的电源并切换到d.in输入(我的家庭影院中的光学输入)
pi @ raspitone:/bin $ cat start_jukebox
#!/bin/bash
激怒send_once juke框key_power
睡眠7
不发送send_once自动点唱机key_aux
睡眠2
2) stop_jukebox:
关闭家庭影院电源
pi @ raspitone:/bin $ cat stop_jukebox
#!/bin/bash
请勿发送send_once自动点唱机key_power
这两个bash文件由python使用 os.system 命令
要启动python脚本,我做了一个小bash :
pi @ raspitone:〜$ cat dem_jukebox.bash
#!/bin/bash
cd/home/pi
python jukebox_gui.py
对于gui模式下的自动启动,我只是在 /etc/xdg/lxsession/中修改了自动启动文件lxde-π结果
的 pi @ raspitone:在/etc/xdg/lxsession/lxde-pi $ cat自动启动
@lxpanel --profile lxde-pi
@pcmanfm --desktop --profile lxde -pi
@xscreensaver-不飞溅
@lxterminal --command =“ dem_jukebox.bash”
point-rpi
》
添加新的mp3文件:
要添加新文件,我更喜欢制作一个小的专用python脚本:
new_song_file.py
我将首先说明系统文件的组织:
所有文件都在/home/中pi
mp3文件存储在/home/pi/music 目录中
每个艺术家都有自己的子目录来托管相关的mp3文件
pi @ raspitone:〜/music/mike_oldfield $ ls -l 《br》总计760516
-rwxr ----- 1 pi pi 2254923 2017年6月30日a_new_beginning.mp3
-rwxr ----- 1 pi pi 2691736 6月3日0 2017 arrival.mp3
-rwxr ----- 1 pi pi 8383244 juin 30 2017 ascension.mp3
-rwxr ----- 1 pi pi 5410816 juin 30 2017 blue_night.mp3
-rwxr ----- 1 pi pi 13125199 juin 30 2017 castaway_(instrumental).mp3
-rwxr ----- 1 pi pi 12903583 juin 30 2017 castaway.mp3
-rwxr ----- 1 pi pi 2969869 juin 30 2017 celt.mp3
-rwxr ----- 1 pi pi 9047745 juin 30 2017 chariots_(instrumental).mp3
-rwxr ----- 1 pi pi 9403263 juin 30 2017 chariots.mp3
在目录中的文档可以找到要播放的文件的内置列表。
pi @ raspitone:〜/documents $ cat list.txt
franz_ferdinand/michael_live.mp3
franz_ferdinand/evil_and_a_heathen.mp3
franz_ferdinand/walk_away_live。 mp3
franz_ferdinand/love_and_destroy.mp3
franz_ferdinand/his_fffire。 mp3
franz_ferdinand/eleanor_put_your_boots_on.mp3
franz_ferdinand/missing_you.mp3
franz_ferdinand/this_fire_(playgroup_remix).mp3
franz_ferdinand/jacqueline.mp3
我们还可以找到播放列表数据 (但这是由python脚本构建的)
小型python脚本在格式化后将新音乐(保存在“音乐”中)添加到list.txt中unix格式的标题
以下是脚本:(可以通过notepad ++或geany打开)
第5步:通过arduino nano进行电源管理
因为我想简单地开始一些事情,所以我决定通过一个小型的nano来完成:
原理:
按下开始按钮时,设备都是战俘ered后,nano启动(1或2秒),并通过触发继电器使按钮触点分路来接管电源管理。
然后,nano等待35秒以接收来自raspberry的心跳(意味着启动过程完成并且自动存储塔程序已运行。)
只要nano接收到心跳,它将保持继电器打开(看门狗计时器)
如果不再有心跳(表示自动存储塔)程序已停止)nano等待20秒(以确保raspi完全停止)以释放功率继电器。
自动存储塔已完全关闭
我添加了一个开关以激活nano的输入以指示维护模式(我使用自动存储塔通过ssh和vnc管理其他raspi服务器)。 nano然后停用看门狗进程
备注:
raspi的心跳输入需要下拉(但nano认为raspi的3.3v为高电平)
可以用ne555完成,但是我很生气,抽屉里总是装有nano !!!!
这是简短的c程序(可以用notepad ++打开)
步骤6:布线
用于屏幕:
一个hdmi电缆和usb电缆在raspi上用于供电和驱动屏幕。
对于前面板:
还从raspi连接了usb电缆,以便可以上传新的文件或进行备份。
从nano连接usb电缆,以便能够访问软件(必要时进行修改)
我还在树莓派上插入了无线键盘加密狗无需使用外部usb插头即可进行维护
由于使用了raspberry和arduino,因此布线非常简单。
全部位于条形矩阵板上。
使用树莓2的gpio:
pin22(用于ir led)
pin 27(用于在arduino上进行心跳)
在arduino
引脚2用作raspi的心跳的中断引脚。
引脚3至5用于驱动led的(启动,wddt,维护)。
引脚6是维护开关。
pin 7输出到继电器屏蔽罩。
以下是压条文件:
第7步:盒子
由于功率放大器和所用扬声器的不同,我不会做太多描述。
作为信息,家庭影院位于电视的底部。盒子。
只需放在扬声器上方:
1个低音扬声器
2个中型扬声器,我对其进行了修改以将它们插入包装盒中。
打开顶部:
带有屏幕的前面板,led,开关和usb插头。
木头:
对于扬声器,侧面我用18毫米木板围起来。
正面是10毫米胶合板,带40毫米螺钉。
为便于布线和维护(如果需要! !!)我将电路放在前面板后面的抽屉中
为避免过热,在后面板的底部做了一个大孔,并在后面板上放置了一个5v风扇(8厘米)
上面的图片只是一个想法。
所以,就是这样!!!!!!!!!
物联网如何确保宠物在航空运输中的安全
盘点当前笔记本主流硬件的性能等级
光纤光栅定义及分类!光纤光栅传感器的工作原理
什么是4K,4K技术的应用领域都有哪些
提升电源设计效率,Vishay推出用于负载点DC/DC电路的PowerCAD在线仿真工具
基于Raspberry 3 B +的自动点唱机的制作教程
通过Raspberry Pi和Python使用PIR运动传感器
银杉2VEG150铅酸胶体蓄电池2V150Ah交直流一体化电源系统成套装置
“苹果系”客户助力:泛海统联业绩持续增长
电动汽车的续航能力大有提升,大大解决了续航里程的顾虑烦恼
家里装漏电开关还是空气开关好?有什么区别
小米Note3和红米Note3哪个值得买?小米Note3和红米Note3配置参数详情对比分析
机器视觉上四大LED光源介绍
未来汽车设计的几种概念车介绍
AI芯片的盛行为晶圆代工市场的成长带来新动能
苹果时代已经结束,苹果可能会步上手机之王诺基亚的后尘
物联网技术在医疗领域中的应用
疫情反复、通货膨胀,上半年智能家居市场表现如何?
2019年8月底全国增值电信业务许可情况分析
怎么用VR正确的看房