使用树莓派实现声光控制电路
前段时间做了一个利用树莓派实现智能路灯控制的实验,在这里分享一下我的一些经验
1,关于树莓派
既然是利用树莓派来控制,首先自然是要对树莓派有一个简单的了解
-
系统
树莓派没有硬盘,使用sd闪卡替代,到树莓派的官网上下载相应的系统,解压到sd卡的根目录下,开机,一路回车,即可完成安装,网上类似的教程很多,我就不再赘述了。
-
引脚
安装好系统,就可以写代码了,但在这之前,你需要知道树莓派如何是如何实现输入输出的。
我没有留意我当时使用的是3b或是3b+,我的队友说是3b,姑且认为是3b吧。
首先将树莓派摆放成下图(左)所示,图中红色区域内即为树莓派引脚,然后就可以对照下图(右) 来查看各个引脚的的作用了。
其中标有3.3v,5v的即为电源,GROUND为接地,标有GPIO的引脚我们可以自己定义为输入输出,至于ID_SD,ID_SC的我们这里不必理会(好吧,其实我也不懂)
2、关于代码
-
定义引脚
直接上代码
#encoding:utf-8 import RPi.GPIO as GPIO sound = 7 #定义声音传感器引脚 led = 8 #定义led引脚 light = 18 #定义光敏电阻引脚 GPIO.setmode(GPIO.BOARD) #设置树莓派引脚格式,这里选择物理引脚编号 GPIO.setup(led,GPIO.OUT) #定义led为输出 GPIO.setup(sound,GPIO.IN) #定义声音传感器为输入 GPIO.setup(light,GPIO.IN) #定义光敏电阻为输入
为了以防万一,所有的python代码我都会加上第一行,至于这句代码会不会起作用,你猜?
代码第八行这句话很重要,在上图(右)中,我们可以看到,标有GPIO的引脚后面都会跟着一个数字,而第八行的的作用,就是告诉编译器,我们不使用这个编号,代码中,我们定义的sound,led,light都是物理引脚编号,说白了,就是你从上到下、从左到右依次数过去,数到几,这个引脚的编号就是几。
-
声光控制
依旧是代码
while (True): #定义一个死循环 if GPIO.input(light) == 1: #若是光线较暗 if (GPIO.input(sound) == 1): #若是检测到声音 GPIO.output(led,1) #点亮led time.sleep(5) #等待5s GPIO.output(led,0) #关闭led
代码很简单,这里是一个最简单的声光控制,一个死循环,然后依次检测光敏与声感的状态,符合条件即向led引脚输出高电平,也就是点亮led,等待5s后,关闭led。
这个代码可以实现led的声光控制,但是从使用的角度来讲,这里定义一个没有出口的死循环,想要结束程序,只能Ctrl+C强行中断程序,所以还要根据实际情况去设置出口,最简单的便是设置一个全局变量,这里不再赘述。
3、关于程序的运行
在pc上运行一个python程序想来大家都是没什么问题的,windows打开cmd,linux打开shell,输入以下命令
python 文件路径
然而树莓派只有一块芯片,没有显示器,我们如何去执行命令?如果你有外置显示器那最好不过,如果没有,也可以通过网线连接,使用远程桌面进入树莓派,然后在执行以上操作,关于如何远程控制树莓派,网上的教程很多,我这里就不班门弄斧了。
然而,我只是想用树莓派去控制一个led而已,每次重启之后之后,我都需要连接显示器,连接键盘,连接鼠标……是不是有些太麻烦了?可以不可以我一按开关,让程序自己去运行?答案是,当然可以。
4、关于开机自启
关于程序的开机自启,我也不是很懂,在这里,我只介绍一种我用到了的、亲测有效的方式。
首先在树莓派中打开以下路径 /home/pi/.config/autostart
若没有则自己创建
然后新建一个记事本,记事本文件扩展名改为( .desktop),在记事本中输入以下内容
[Desktop Entry]
Name = led
Comment = my program
Exec = python /home/pi/Desktop/led.py
Terminal = false
MultipleArgs = false
Type = Application
Categories = Application;Development;
StartupNotify = true
其中第二行得name与第三行的comment可以自拟,第四行则是你要启动的程序的路径。
重启树莓派,你的程序将会被作为系统的一项服务自行启动。
有关于开机自启这一块,我也是从
https://blog.csdn.net/qq_38960682/article/details/80259321
学习到的,有兴趣的不妨直接访问原文。
5、结语
有关于树莓派实现声光控制的内容就介绍到这里了,如有不足或是错误的地方,希望各位帮忙指正,文中的图片和一些内容来自互联网,若有侵权的地方,请联系我删除。
.