通过把LCD1602,蜂鸣器和单路径循迹传感器模块都接入到树莓派的GPIO引脚上面,用单路径循迹传感器检测物体的距离或颜色。当物体距离过近时,此时路径传感器模块输出为低电平,这个时候LCD1602显示出“DETECTED:YES”,同时蜂鸣器发出声音。而当物体为黑色或者距离较远时,蜂鸣器没有输出,同时LCD1602显示“DETECTED:NO”。
DIY工具:
主要包括树莓派B+,LCD1602,蜂鸣器,单路径循迹传感器模块。其主要作用如下:
树莓派:主控芯片,根据外部输入控制输出。主要利用树莓派的GPIO口
蜂鸣器:无源蜂鸣器,通过PWM波驱动其发声,由树莓派驱动。
LCD1602:显示必要的信息,输出设备。
单路径循迹传感器模块:输入设备。可以通对反射红外线的接收情况来判断物体的距离。当被检测物体在检测范围内时,红外线被反射回来且强度足够大,模块的输出端为低电平,指示二极管被点亮。否则输出高电平。
分配树莓派的引脚
因为用的是B+的板子,所以GPIO口比较多,我就把其他的小模块直接和树莓派的GPIO口连接起来,不要担心GPPIO口不够用。树莓派和蜂鸣器相连,使用了两个引脚,Pin20和Pin36。其中Pin20是树莓派的Ground引脚,所以我通过Pin36引脚(GPIO16)来发PWM波驱动蜂鸣器。
接下来是树莓派和LCD1602连接。特别主要LCD1602的RW引脚一定要接地,否则可能烧坏树莓派。
对于LCD1602大家应该很熟悉不过了,如果大家之前有玩过单片机的话。这个就是它的样子,我们可以用它来显示字母、数字、符号等信息。它背面总共包含16个引脚,能同时显示16X02个字符。对于一些小应用和演示,还是很不错的一个工具哦。
今天我做的就是把树莓派和LCD1602连接起来。那首先第一问题就出来了?我们怎么连线呢?这需要我们知道树莓派的GPIO口输出信息,也要我们知道LCD1602的引脚信息,只有把这个都对上号了,才能正确给LCD上电,我们才能正式的编程,使用LCD1602。
这个就是我使用的树莓派的GPIO和LCD1602的连线的原理图。
下面是我实际的接线图。
这里有几点需要和大家说一下:
(1)原理图的树莓派是B版,我实际使用的是B+的板子,但是引脚编号没有改变。大家也一定要注意实际和原理图的区别
(2)由于树莓派的引脚很少,所以关于LCD的7~10号引脚我们不使用
(3)由于树莓派没有过流保护,并且十分脆弱在使用中保证LCD1602的RW引脚接地,否则尝试从LCD1602读取数据可能会烧掉树莓派。
(4)原理图中Ri是电位器,即10KΩ滑动变阻器,可以调节LCD的亮度
最后当我们检查完毕,一定不要有短路,确保接地。我们就可以上电了。这个时候LCD就应该点亮了哦。我们旋转电位器,还能看到LCD上的小格子消失或者出现。
树莓派和单路径循迹模块连接,一共有三个引脚,其中一个引脚接电压正极,Pin1,树莓派输出5V。一个接地,Pin34,树莓派的Ground。另外一个是信号输出,Pin3。在程序里面,通过判断树莓派引脚的电压来判断物体的距离。
完成这些步骤以后,我们就基本完成硬件的连接了。接下来就是软件的实现了。
软件实现
这一部分主要和大家介绍的我这个小应用的软件部分。
软件是实现这个功能的核心啊,主要包括以下几个部分:
(1)感应模块,感知无线感应模块的输入
(2)驱动蜂鸣器,需要产生PWM波
(3)显示模块,LCD1602根据不同的感应情况显示不同的信息。
这三部分我们都可以借鉴网上的资料,但是要根据自己的情况做一些修改。当然,我非常推荐下面这个网站:http://wiringpi.com/。我程序里面用到的函数都在下面的目录里,大家点进去,对着我后面的程序找就能找到原型了!
Wiring是为了更好的应用树莓派的GPIO口专门编写的控制函数。这个控制函数包含了很多已经写好了库函数,我们只要按照规则调用就行。当然在使用这些函数的时候,我们要根据自己树莓派GPIO口的连接情况更改一些参数。 |