天域至尊 发表于 2019-3-18 15:41

[python]树莓派第一课之DS18B20温度传感器

本帖最后由 wushaominkk 于 2019-3-18 16:54 编辑

好久没更新,主要是这一段时间的事情太多了,秋招签了家北京的企业,找了个当地法院的兼职,兼职还是比较轻松,所以那段时间更新比较多,后来老师给了个问卷数据分析的任务,毕业设计也上来了,前三周有一门课设,老师都快凶死了,我都不知道我课设改了多少遍,加上还要在春招尝试下能不能把自己卖的更贵,所以就从法院辞职回来专心把这些烂摊子处理下,现在课设结束了,虽然还有数据分析和毕设,但是也按耐不住激动的心情,开始玩转树莓派!

首先,肯定有一大群人是来凑热闹的,啥是树莓派啊?吃过黄瓜派,冬瓜派,甘蔗派,六神花露水派,你这是树莓做的派?

是的,采用python编程,精选高海拔顶级天然树莓,精制而成,所需树莓连起来可绕地球一圈,我们不生产树莓派,我们只是树莓的搬运工。

得得得,扯不下去了,树莓派简单来讲就是一个微型电脑,可以用来做物联网,价格低廉,最新款3B+估价220+,低级一点的就更便宜,还有90块的,详情参考百度百科,最近抄百科都快抄吐了,我是不想抄了,大家可以自己看。喏,图在这


就是这玩意,看长得多么漂亮,沉鱼落雁,闭月羞花啊,美不胜收,我知道你看不出来好看,拜托,培养下程序猿审美可好?
这个东西里面呢,可以写入系统,Linux系统,win10 IoT都可以写入,然后可以跟电脑无差的使用,看见上面那排排针吗?这玩意可以干的事就多了,控制开关啊,接入传感器啊,总之,只有你想不到,没有他做不到。妙,妙啊!
今天是第一课,扯得犊子有点多,言归正传,我们今天要把DS18B20温度传感器接入树莓派,检测房间内温度。

DS18B20温度传感器是啥玩意?顾名思义,他是检测温度的温度传感器。长啥样?


就这样,最要紧的是前面的半圆柱型黑球,那是传感器,我买的是现成的模块,就是人家给你加了电阻和指示灯,随拿随用。估价6-7元。

材料清单(宽油警告):
1.   树莓派3B+一台,内置Linux操作系统。估价220元。
2.   面板板一个,估价5元。
3.   公对公插线若干,公对母插线若干。估价1元。
4.   DS18B20温度传感器模块一个。估价6元。
5.   简单树莓派扩展板一个。估价7元
6.   USB供电器一个。估价10元。
7.   USB供电线一个。估价10元。
8.   电脑一台。估价很贵。
9.   可发射WiFi的路由器或手机一台。估价不便宜?
10.程序猿一只,估价一杯奶茶。

RMB劝退的患者,别忘了评分投币哦
准备好,开始接线。


接线简单吧,备好WiFi,开机。给你一张我的成品图


电脑和树莓派开机后,找到树莓派的ip地址,使用XSHELL软件连接。
关于怎么让树莓派联网和怎么找到他那神奇的ip的问题,我就不讲了,度娘一大堆。 树莓派默认密码是树莓派的英文小写。
另外树莓派的root的用户不允许远程登陆,所以你的远程登录用户名就是pi。密码刚才说了。
如果,神奇的xshell提醒你这个,点否就行了。


然后,开始执行第一条命令,安装vim(如果你坚持用vi的话,你哭晕在厕所我也不给你送纸)
sudo apt-get install vim

安装好以后,输入以下命令。

sudo raspi-config界面多么美丽


没错选第五个,请大家注意下英文内容啊,不要只看序号,以后序号可能会变的。


对的,再选它,把它打开,打开是enable。

选是,就打开了,然后退出。
然后,进入/boot/config.txt这个文件里,查看有没有这样的一句话。
执行命令:sudo vim /boot/config.txt



这句话出现的位置可能不同,但是你要有耐心的找。

如果没有,你就手动在文件的最后加上吧。

dtoverlay=w1-gpio-pullup,gpiopin=4

如果,你传感器接入的位置不在GPIO4号口,就把上面那句话最后的4改成对应的编号。
然后,执行下面的命令,重启:
sudo reboot

重启完成后,去尝试打开这个文件夹。执行命令:

cd /sys/bus/w1/devices/

如果系统提示你文件夹不存在,请查看你上面加在文件里的话是不是有中文标点啊,是不是加了空格等等。另外检查下线有没有接对。

总之打不开,一定是你错了,注意查错。

好了,该文件夹下有个文件夹,28-********,后面那是序列号,像我的

cd 进去。
里面有很多文件。

其中w1_slave是存放温度数据的。执行命令看下:

cat w1_slave

最后这个T就是温度,要除以1000,所以我现在的温度是18.937℃。还是挺冷的。
crc=a7 YES 表示温度采集成功

前面那些是循环冗余校验,我们自己用也看不到,但是开发商用的同学请注意了。
至此大功告成,对了多个温度传感器可以并联接入。

那么到这里python程序有什么用呢?
无非就是从文件读取出温度,上传服务器罢了。
首先在服务器mysql内新建数据库other。新建数据表pi,命令如下:
create table pi(id int not null,itime datetime not null,val double not null);
解释:Id是为了区分设备,itime是为了记录数据上传时间,val是记录数据。

程序流程图


源码:



大功告成,测试运行下


没有报错,我们看下数据库的情况


成功了。我们上传到树莓派执行下


报错了,原来是我们的文件路径忘了改,那么数据库是不是获取了相关的错误码呢?我们去看下


-404状态码已经进入了,说明大功告成,修改下,将路径修改为服务器文件路径


重新上传,到服务器执行下,数据库上已经有了新的数据了


至此,大功告成! 这时会有人说,如果我想定时启动,比如每一分钟就获取一次数据。那该怎么搞?
简单,我们用软件crontab,输入命令:
crontab –e

如果提醒你下面的内容,就是让你选择编辑器,选VIM即可,我这里是3号。

在文件的最后,加上内容:

*/1 * * * * python3 /home/pi/DS18B20.py

保存退出即可!
至此,大功告成,我们去看看服务器上是不是自动上传了最新数据。


每十分钟一条数据,漂亮吧,为啥最后一条26度了?
我用手指头捂了传感器,要不然总是18度岂不是太无聊了!
源代码在附件,编写不易,喜欢的别忘了投币、点赞、评论三连!
免费的源码在这里哦:链接:https://pan.baidu.com/s/17liP7V3KgY5ARF6yh-A3dw 提取码:7cjq

版权声明:

未经本人书面许可,禁止以任何形式引用、抄袭、转载本篇文章。

天域至尊 发表于 2019-3-19 12:56

本帖最后由 天域至尊 于 2019-4-12 13:46 编辑

第二课链接:https://www.52pojie.cn/thread-903925-1-1.html
第三课链接:https://www.52pojie.cn/forum.php?mod=viewthread&tid=911228
第四课温湿度传感器链接https://www.52pojie.cn/thread-927626-1-1.html

天域至尊 发表于 2019-3-18 22:00

icegs 发表于 2019-3-18 19:35
得先有点基础才能看懂

对的,入门是最枯燥的,最好跟我一样接一个项目,就能很快入门

天域至尊 发表于 2019-4-26 16:39

zw11223344 发表于 2019-4-23 20:28
楼主大大.最近想入手树莓派可以发一份淘宝清单地址么,, 怕买错了东东.谢谢哒

不好意思,出于防止发生打广告的误会,我不能给你提供淘宝链接,但是你可以想好自己做什么东西,我可以给你点硬件的建议。

坐久落花多 发表于 2019-3-18 15:55

树莓派是挺好玩的

_小白 发表于 2019-3-18 16:15

期待第二课

cmy5201314 发表于 2019-3-18 16:36

关注了 大佬!

icegs 发表于 2019-3-18 19:35

得先有点基础才能看懂

xwl 发表于 2019-3-18 19:37

收藏了,打算入手树莓派.非常感谢

yoin 发表于 2019-3-18 21:55

期待后续更新,已关注!

天域至尊 发表于 2019-3-18 22:00

_小白 发表于 2019-3-18 16:15
期待第二课

提前预告,第二课是树莓派控制继电器,可以接220V的继电器哦

leo23 发表于 2019-3-19 09:09

关注大佬!
页: [1] 2 3
查看完整版本: [python]树莓派第一课之DS18B20温度传感器