![66ab7c8ac503be9e2b50b0bc564b6a4b.png](https://i-blog.csdnimg.cn/blog_migrate/b7822bd72814f11f427c0e844add5297.jpeg)
去年就开始接触树莓派,可由于时间关系从没有正儿八经地写过代码,2020年恰逢额温枪卖断了货,想着能不能自己做一个,于是在百度各种的搜,发现额温枪的红外采温部分是其软硬件的核心部分,可红外传感器外面卖得死贵而且还拿不到货,于是只能另辟蹊径从一批‘灰头土脸’的元器件里面找出来一块DHT11模块(温湿度传感器)。现在红外传感器总算找到了替代品。显示屏是在淘宝上挑了好久才下单买回来的一款2.2英寸的串口彩屏模块。就这样,两个关键器件都确定下来了,这个项目就没有悬念了。
硬件篇
1. 2.2寸串口彩屏模块 +USB-TTL转换头
显示部分选用了尚视界科技的串口彩屏模块,经过一番对比和琢磨,发现这款串口屏除了接线和软件操作简单外,其高分辨率(240*376)、16:9独特尺寸比例(长边比市面上常规的4:3显示屏容纳更多的显示内容)同时超薄的结构设计和宽视角(IPS)、半反半透的显示的效果,使得这款产品非常适合用在消费和手持类产品的界面显示,用来做额温枪的显示也很合适,更重要的是价格很亲民。
![067b883c8b46c80d14e92cf96e245e66.png](https://i-blog.csdnimg.cn/blog_migrate/5ec17f07c050314cb6c0c92816844de0.jpeg)
树莓派与串口屏的连接非常简单,只要把串口屏的J5接口和USB-TTL用厂家提供的双端连接线连接起来,然后把USB-TTL的USB端口插到树莓派的USB host 上就好了
2.树莓派3B 、micro USB供电电源线
树莓派是一种卡片电脑,其体积小,硬件资源丰富,可以装载多种linux发行版本。其性价比高,是学习和开发产品的绝佳选择。
![bde3ba126479972489cc5dee332a1828.png](https://i-blog.csdnimg.cn/blog_migrate/6a46759249b73269917c021ad33bcdfe.jpeg)
3.DHT11传感器
单总线传感器,用于采集环境的温度和湿度值,并通过单总线传给树莓派,由于这里用来模拟额温枪的红外传感器,所以只采集了DH11的温度值。注意DHT11的数据输入输出脚接了树莓派的第7脚。
![3a3fea47423915517528f110147fe5d1.png](https://i-blog.csdnimg.cn/blog_migrate/782a5161b1a5bca277935f9aac5dd552.jpeg)
![acd0ede48a48bb6652a7af404fcc3850.png](https://i-blog.csdnimg.cn/blog_migrate/8517f04b07ab962b847c3e5750694000.jpeg)
4. 轻触开关
这里选用2个带线的轻触开关,一个用于测量模式的选择,一个用于启动温度的采集。这两个开关分别接到树莓派的38脚和36脚。
![6cc9007a352c64913a1781453bd04ff6.png](https://i-blog.csdnimg.cn/blog_migrate/a9efd8dc6298a628ed01c3148af20a62.png)
![6bf573a88edde13a87a43adfae5204db.png](https://i-blog.csdnimg.cn/blog_migrate/1540be20f8805c1c8b7bb0c73a77b28f.png)
5.蜂鸣器电路
蜂鸣器的作用,一是提示用户是否已经启动了测量体温操作,让用户等待数据的输出。,不同的模式下体温的误差范围是不一样的:
![7c42cb352fb43a660f314af6ac3b7846.png](https://i-blog.csdnimg.cn/blog_migrate/f838232428dca9ea659dd169e6f923ce.png)
![4e957a0c44c7a9839ae5edc27f1d110d.png](https://i-blog.csdnimg.cn/blog_migrate/225c43069827b330829d56194db4858a.jpeg)
![d56743addbbe4881e6ebeef0c7c68056.png](https://i-blog.csdnimg.cn/blog_migrate/ea7c677be84ee5f3b295c15ec3212bd0.png)
注意:蜂鸣器一定要加三极管驱动电路,简单的驱动电路见上图。当IO口输入高电平时,驱动NPN三极管输出为低电平,从而打开蜂鸣器的电源回路,使蜂鸣器发声。
另外,蜂鸣器要选用有源的,因为这里只是把驱动电路的输入口(也就是下图的I/O口)接到了树莓派的普通IO口(树莓派3B的32脚),如果是无源的蜂鸣器,就只能修改软件将树莓派的32口设置为PWM输出,否则是无法正常发出'哔哔’提示声。
6.外围连接(显示屏除外):
![8630e6349db3d3449e7a8aa74e452717.png](https://i-blog.csdnimg.cn/blog_migrate/25e76239ab5fbcc0b73112dd7d4c2be2.jpeg)
软件篇
1.系统工具
(1).安装树莓派操作系统
树莓派系统可以使用NOOBS的方式来安装:下载NOOBS系统安装包,把安装包解压后,通过读卡器将解压后的文件拷贝到SD卡中(SD卡要格式化),将SD卡插入树莓派并给树莓派上电,上电后就会进入系统安装引导,一路"下一步",就可以完成系统的安装。具体的操作方法详见树莓派的官网:https://www.raspberrypi.org/downloads/noobs/
![d4e17ec09afe16bd36efccd33818fbc9.png](https://i-blog.csdnimg.cn/blog_migrate/d460c3ead70379fa4e84009578252d54.jpeg)
注意:
树莓派在安装的时候需要外接HDMI显示器,如果你的电脑显示器支持HDMI接口,直接用HDMI数据线把树莓派和显示器连接起来就可以。如果电脑不支持HDMI接口,也可以去网上购买树莓派匹配的HDMI显示器,我用的是这一款:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-14603162610.11.63a819d6KztKC2&id=605432962495 。另外在系统安装的时候USB键盘和USB鼠标也是需要的,否则你没办法点击’下一步’来完成系统的安装。
树莓派开启了SSH服务后,就能够通过电脑远程访问树莓派,因此,在配置好网络后,就能够在你的WINDOW 主机上面通过putty软件在PC机上设置树莓派的各项配置同时通过filezilla来进行文件的互传,我是使用了这种方法来操作树莓派。因此,你需要在PC机上下载putty和fillezilla客户端软件。当然,如果通过树莓派外接显示器,通过键盘和鼠标直接操作树莓派也是可以的。
(2).树莓派连接WIFI网络
登录树莓派,打开终端,切换到管理员的权限:
![5a2202c6d9d8e23cb72176473f0ab6a1.png](https://i-blog.csdnimg.cn/blog_migrate/9ac34976e587e8482fa5010a7cde62d4.png)
进入/etc/wpa_supplicant/ 目录 编辑wpa_supplicant.conf文件:
![40a4feae4d4a1cf97e1dd783b5d5a7ea.png](https://i-blog.csdnimg.cn/blog_migrate/98a5c28f8f9096850ecc0519febce5e1.png)
把下面network部分的内容敲进去,其中ssid="xxxx"双引号里面的xxxx就是你wifi的账户,psk="yyyy",yyyy是你网络密码,修改成你的网络信息后,Ctrl+X 退出,同时键盘敲下’Y’保存你修改的内容。
![5bcf654e4b9c35d99af8b3f4809ee593.png](https://i-blog.csdnimg.cn/blog_migrate/9a0d53b5369385ed6378ce568aff692e.png)
![a595fdccc1dea0825d174e2085f5e022.png](https://i-blog.csdnimg.cn/blog_migrate/e8338b55c5d799f634b40f6dedfe76b6.png)
这样你的树莓派就可以上网了。
(3).设置电脑通过WIFI网络访问树莓派
在管理员权限下,在终端中敲入’raspi-config’,进入树莓派的设置菜单
![35b8613785ee8bc4787f0745067dbdbd.png](https://i-blog.csdnimg.cn/blog_migrate/2f47823dd4c88adf3fbd2fa9c6b90b0b.png)
选中“Interfacing Options”
![41423a92d34080d6ed1ad59d0eaf503f.png](https://i-blog.csdnimg.cn/blog_migrate/67255cb32487d2c1feb795766b06bea3.jpeg)
回车,进入如下的二级菜单
![ac79be2ce2e42e99cbf95de16896b6b4.png](https://i-blog.csdnimg.cn/blog_migrate/6dba92b67f4c349ac24f7f08a562c92b.png)
再次回车,选中Yes 退出配置菜单:
![b8ca9d0b8a9c5c813bb132c2484f3e40.png](https://i-blog.csdnimg.cn/blog_migrate/64def0960ed1fe509c3cdb662b11a92d.png)
这样树莓派就可以通过PC机进行访问了。
PC机上双击putty软件,在界面中敲入树莓派的IP地址(注意:获取树莓派的IP地址方法很多,我是在手机上装了fing来扫描树莓派的ip地址)连接方式选SSH,端口默认不变。
![ab793e0bc5724be576ae62357f947d91.png](https://i-blog.csdnimg.cn/blog_migrate/9da8e9c1e0706d81ea68f69661399d0a.jpeg)
点击’Open’后,就会弹出树莓派的登录界面,默认用户名:’pi’,默认的密码:raspberry(建议修改默认的树莓派密码,修改密码的方式请自行百度),密码敲完后直接按回车就OK了。
![8f72c03cd6e005ebb6dc6be3cb1f05e5.png](https://i-blog.csdnimg.cn/blog_migrate/dbe79fe270fac234758592526585485b.png)
已经成功登入树莓派了:
![0ee78eef06b631757a8c0a31ea0589a9.png](https://i-blog.csdnimg.cn/blog_migrate/abd957bb2d66754bfde6379396823339.jpeg)
(4).设置树莓派与PC机的文件互传
打开filezilla界面,敲入树莓派的ip地址、用户名和密码,点击”快速连接”,就可以登上树莓派了,现在你就可以通过拖拽的操作在PC机和树莓派之间互传文件。
![25411867d568f3896ac301aad440343a.png](https://i-blog.csdnimg.cn/blog_migrate/3dcd8f39a052b6ab4b0f533cff6f3a13.jpeg)
![7159c0a972604594ee87098a8562ae44.png](https://i-blog.csdnimg.cn/blog_migrate/81833c0395655a58fae4ec660823c3be.jpeg)
(5).树莓派安装python库
<1>.serial库
树莓派默认了支持python,但由于串口屏通讯是使用了UART串口,为了能访问UART串口,python需要安装serial库,在树莓派终端中敲入:sudo apt-get install python-serial,就能直接安装了,我的树莓派是安装过的,所以提示下面的信息。
![f55f76f9a95aedb95726dce6e279f1a3.png](https://i-blog.csdnimg.cn/blog_migrate/3f22dc63c43bc1ac7c19076d1faa26a9.png)
<2>.传感器Adafruit_DHT库
首先更新树莓派的库:
apt-get update
apt-get install build-essential python-dev
接着从git hub里面克隆传感器的代码:
git clone git://http://github.com/adafruit/Adafruit_Python_DHT.git
下载完了代码,进入文件的目录,通过下面的命令安装代码:
python setup.py install
嗯,库总算安装完了,下面就可以开始实现功能代码了。
2.功能代码实现(python语言)
万事具备,接下来就是撸代码了,在撸代码之前,先介绍下代码的实现思路。
代码的实现可以归纳为两大部分功能:
(1).界面的刷新
在这个项目中,界面的元素分为图片和字符串:除日期和时间是字符串,其他的元素均是各种不同大小的图片。由于尚视界的串口屏能够将图片脱机写入到它内部的FLASH中,而且能够通过FSIMG命令指定对应的图片编号(0.1…)和坐标位置(X,Y)调出在屏幕上面显示,因此,树莓派只要简单的发送指令就能不费劲的将图片调出来在屏幕上面显示。
![37dc4ac8e82349971fb9da59247d3b7e.png](https://i-blog.csdnimg.cn/blog_migrate/039b233501c0b6e4d96237e15df9b451.png)
![c1d13fcbd7db68a92df70d979d0f0733.png](https://i-blog.csdnimg.cn/blog_migrate/2d0a2e765ba52fb0d2a599d9eb97070a.jpeg)
![e101f947f75712f06a65f9a1e3f8bc8c.png](https://i-blog.csdnimg.cn/blog_migrate/73a485913b5ead77b2825005ee9a639d.jpeg)
![d81d8fb6ab50bfcd078a1df14a17087b.png](https://i-blog.csdnimg.cn/blog_migrate/fcba03f82b8ea23e344526380e1e0913.jpeg)
![591310ac0a4c3b246ca72661e1886bf2.png](https://i-blog.csdnimg.cn/blog_migrate/284b6fbfebcbc7aa04527114f67cab65.jpeg)
<1>.开机界面显示
系统上电后会载入开机等待logo,接着会刷出运行界面,等待用户的按键输入。
![1bcf4ba6ec55a1ffec5ca48c786794f0.png](https://i-blog.csdnimg.cn/blog_migrate/5dd85eeb4edccd5501b96a14bd46701d.jpeg)
![eda5d699924bc728e620d3e983921297.png](https://i-blog.csdnimg.cn/blog_migrate/78fc11820e1b0ef00b9f7ef871a5a3b8.png)
<2>.图标的更新
图标的更新出现在输入模式的切换和启动体温测试时输出测试结果的这两个环节,当然电池电量的变化(这一部分功能还未实现)也会引起电量图标的变化。下面是图标的位置信息,FSIMG指令需要获取对应的坐标信息(X,Y)才能在正确的位置显示,具体见上面的指令的内容。
![3090535664f5ad260f1ac4889355f6b0.png](https://i-blog.csdnimg.cn/blog_migrate/d7b501632295689cf419b1e8d6000da7.jpeg)
<3>.日期&时间的更新
串口屏集成了16、24、32、48号的全中英文字库,树莓派只要通过串口发送一个DCV指令就能够将前日期和时间显示在屏幕上。
(2).输入的检测
<1>.IO口检测
2个IO口设定为输入,检测两个按键的状态
<2>.传感器数据检测
通过启动模式按键来发出数据采集命令给传感器,以阻塞的方式回读传感器的温度值,并最终在屏幕上更新显示结果。
关键代码分析:
导入RPi.GPIO 库,设定2个输入口和一个蜂鸣器的输出口
![256ae1bde17ebd62d8d30d8f47208eb3.png](https://i-blog.csdnimg.cn/blog_migrate/51008d73aebc9dd95a7be8384504966a.png)
设置串口,往串口屏发送清屏幕和设置背光的指令。
![1d17b15a05a63fab6b49629e20359f16.png](https://i-blog.csdnimg.cn/blog_migrate/6a7dc9dcdeafc87857d65b95c0332995.png)
![37d247567457b2b8a85a75fe3ca5eb65.png](https://i-blog.csdnimg.cn/blog_migrate/10e9f17c2df3d8a73152f3666cfce9a2.png)
导入Adafruit_DHT库,获取体温值:
![54f24717585220a2dd0b77d8a9001ea2.png](https://i-blog.csdnimg.cn/blog_migrate/8ab5f8885daa69b2dc4bbb0ddda9b974.png)
屏幕上更新体温值:
![b956aea0e16d904da22be32de0229434.png](https://i-blog.csdnimg.cn/blog_migrate/6e5b48ae910279ed109b77017d23b2f1.jpeg)
保留测温的最后四条记录:
![c912608e8d6c425bfd861038d4e6af80.png](https://i-blog.csdnimg.cn/blog_migrate/4c6cd61ad03950ad146ac75884c91078.jpeg)
显示当前的日期和时间值:
![931a9d68ac3c7fa0519439471b2880cf.png](https://i-blog.csdnimg.cn/blog_migrate/a9c3b8e2b75d15e1a9837865ee1fb18e.jpeg)
总结篇
贴出实物图:
![0af48aefd50202039c234daf6739e996.png](https://i-blog.csdnimg.cn/blog_migrate/c869735e729bda9dbb43a56a1024e82b.jpeg)
前面已经说过,树莓派模拟的这个‘额’温枪项目,主要是将我学到的树莓派知识串起来,形成一个积累,方便后续学习的查阅,由于没有红外传感器,不能用于实际的额温测试。
写这个项目,仅仅是想整合我学到的树莓派相关软硬件知识,用于后续的学习和查阅。当然也可以作为一个传感器数据采集的参考案例,供有需要的人参考。也希望通过这个文档,使更多的人了解彩屏的编程方法,以助大家做出更多更炫的人机交互产品。
python源代码、UI设计图、屏相关资料,可以到这个链接去下载:
https://note.youdao.com/yws/api/personal/file/E4B209499FAB43509C1FF903CA427519?method=download&shareKey=69b5c4d4be3a9a61cf399039dc2a07cc