[原创] 【一起玩Micropython】+家用气象仪 完工展示

strong161   2016-7-5 11:19 楼主
我的气像仪终于完工了,与前面申请的时候写的方案有所更改,首先去掉了光强BH1750与温湿度 DHT11,因为光强检测在这上面暂时感觉意义不大,而且与BMP180一样都是I2C接口,板载只有两个硬件I2C,考虑以后记录时间可以需要用到一个,所以就省去掉了,DHT11,检测温湿度,因为BMP180有温度功能,重复了,湿度也就省掉吧。原来想用蓝牙发送数据到手机,可是LightBlue接到的数据没法入眼,又不会做上位机,所以暂时就不做蓝牙发送了。
已实现的功能:通过串口读取PM2.5传感器数据,通过I2C读取气压、温度数据,使用ADC读取MQ2传感器数据,每次读取完成数据读取后通过SPI驱动5110屏进行显示,然后每一分钟将当时检测数据存放到SD卡中指定的文件中。
接下来就是成品的样子了,这灯开了不好拍,关灯更清爽
01.JPG
02.JPG
原来以为5110屏坏了!后成拆开一看,只是屏与转接板的软接不稳定,处理了下又好了,由一个充电宝供电,经过一个电源稳压板来供电,因为板载是3.3V,而MQ2与PM2.5模块需要用5V供电,所以用到了稳压板,
03.JPG
然后就是这个BMP180气压传感器。
04.JPG
MQ2,易燃气体传感器
05.JPG
PM2.5,粉尘传感器
06.JPG
主控板,这个主角啦。
07.JPG
板子就这样用一个2900mah充电宝供电,MQ2传感器需要加热,功耗特别大本来打算记录一个晚上的变化数据,结果,只运行了1小时多就没有电了。因为程序是每分钟左右记录一次数据,所以只有一小时的数据,数据就存在这个文件里面,SD/senser.txt,
08.JPG
如果不存在这个文件,程序会新建,每次都会接着上次数据在后面添加新数据。由于还没有RTC芯片,所以没有记录准确的时候,只用了1分钟计时输出。数据输出样式如下: 09.jpg
可以用Excel 把数据处理一下,生成图表,更直观,这个表前1-51是昨晚运行记录的数据,后面20分钟是今天测试视频生成的数据。可以与视频进行对比下。
10.jpg
11.jpg
12.jpg
13.jpg
15.jpg
把视频压成FLV后不是太清晰,
[media]http://player.youku.com/player.php/sid/XMTYzMjExOTY0OA==/v.swf[/media]
截了几个测试截图如下:
16.jpg
17.jpg
18.jpg
19.jpg
接下来是源文件
BMP180驱动,自己做的字体,LCD5110驱动,
PM 是lkl0305的驱动加上 和我的GP2Y 因为都是同一种类的驱动所以放一起了!
bmp180.py (6.9 KB)
(下载次数: 16, 2016-7-5 11:03 上传)
font.py (4.48 KB)
(下载次数: 10, 2016-7-5 11:03 上传)
lcd5110.py (851 Bytes)
(下载次数: 14, 2016-7-5 11:03 上传)
main.py (3.44 KB)
(下载次数: 18, 2016-7-5 11:03 上传)
PM.py (4.72 KB)
(下载次数: 14, 2016-7-5 11:03 上传)
senser.txt (10.83 KB)
(下载次数: 27, 2016-7-5 11:03 上传)
upcd8544.py (9.4 KB)
(下载次数: 11, 2016-7-5 11:03 上传)
本帖最后由 strong161 于 2016-7-7 22:01 编辑

回复评论 (19)

抢占沙发,绑定
作为一个菜逼,干货并没有多少。唯一会的就是水,所以回帖水分大。望见谅!
点赞  2016-7-5 11:21
不错不错
点赞  2016-7-5 11:30
顶一下
疏雨客晚归,荒烟乱,几许江南无晴!又落花,残香织梦,莫  莫  莫,白首衷肠……
点赞  2016-7-5 11:37
非常不错。

pyboard带有RTC功能,不需要外部的RTC模块,还支持RTC唤醒功能。

功耗部分,pyboard本身是支持休眠降低功耗的pyb.stop()和pyb.standby(),然后通过RTC唤醒,在就是液晶应该也可以控制功耗,特别是背光功耗较大。
点赞  2016-7-5 11:57
引用: dcexpert 发表于 2016-7-5 11:57
非常不错。

pyboard带有RTC功能,不需要外部的RTC模块,还支持RTC唤醒功能。

功耗部分,pyboard本身 ...

这样子呀!好吧!那是不是每次运行都人设置时间?我看看,谢谢提醒!晚上没有开液晶灯,是MQ2模块需要加热,很耗电。
点赞  2016-7-5 11:59
不错,,,哥们有没有好想法,做点能赚钱的东西出来啊
人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
点赞  2016-7-5 12:01
引用: wugx 发表于 2016-7-5 12:01
不错,,,哥们有没有好想法,做点能赚钱的东西出来啊

想法很多,就是得好好学习再能做出来!技术太菜,哦!
点赞  2016-7-5 12:03
引用: strong161 发表于 2016-7-5 12:03
想法很多,就是得好好学习再能做出来!技术太菜,哦!

这个不能这么说,一个成熟的作品,并不是只靠技术堆出来的,况且技术这个东西是车道山前必有路,肯定能克服的,现在这个社会一个人单打独斗太难了,靠团队协作
人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
点赞  2016-7-5 12:06
引用: strong161 发表于 2016-7-5 11:59
这样子呀!好吧!那是不是每次运行都人设置时间?我看看,谢谢提醒!晚上没有开液晶灯,是MQ2模块需要加 ...

如果在vbat上接后备电池,就不需要每次设时间了。
点赞  2016-7-5 12:10
引用: dcexpert 发表于 2016-7-5 12:10
如果在vbat上接后备电池,就不需要每次设时间了。

嗯!那就比较麻烦了!呵呵!
点赞  2016-7-5 12:11
引用: strong161 发表于 2016-7-5 12:11
嗯!那就比较麻烦了!呵呵!

稍微有点麻烦,VBAT其实已经引出来了,只要一个CR1220小纽扣电池就可以。

点赞  2016-7-5 12:29
引用: dcexpert 发表于 2016-7-5 12:29
稍微有点麻烦,VBAT其实已经引出来了,只要一个CR1220小纽扣电池就可以。

嗯!想到办法了!呵呵!拿胶枪粘到背后!
点赞  2016-7-5 12:46
引用: wugx 发表于 2016-7-5 12:06
这个不能这么说,一个成熟的作品,并不是只靠技术堆出来的,况且技术这个东西是车道山前必有路,肯定能克 ...

嗯,这个年代什么都需要有团队,呵呵!等技术熟点了就开始开发点各种小的智能设备。
点赞  2016-7-5 19:17
这个很不错,一定要顶。
点赞  2016-7-9 12:18
Python 在嵌入式里是不是更要注重语法的优化?比如while True改成1这之类的。
我新手哈,没玩过硬件。只是写过应用层的爬虫... 大神莫怪!
点赞  2016-8-8 10:39
引用: 凉冰 发表于 2016-8-8 10:39
Python 在嵌入式里是不是更要注重语法的优化?比如while True改成1这之类的。
我新手哈,没玩过硬件。只 ...

你说的这个总是我也不大清楚,今年4月份社区活动,才听说有python这门语言,不过while True 与while 1是没有区别的呀,写while Trun 应该从阅读上来讲会更好。至于语法优化,应该来说都是一样。嵌入式与应用软件最大的区别可能是 嵌入式操作的对像更多的是涉及到硬件外设寄存器,而软件的话不涉及。寄存器打包好了,也就是当软件API用没有什么特别大的区别。
点赞  2016-8-8 23:10
引用: strong161 发表于 2016-8-8 23:10
你说的这个总是我也不大清楚,今年4月份社区活动,才听说有python这门语言,不过while True 与while 1是 ...

True的可读性是好点,不过他多了一层的转化。
我没做过嵌入式,但我在做应用层开发的时候是有些性能变化的。
下面是我在Linux下做的简单测试,也许嵌入式已经做好优化之类的了:)

root@debian:~# time python a.py

real    0m21.231s
user    0m21.225s
sys     0m0.004s
root@debian:~# time python b.py

real    0m32.465s
user    0m32.446s
sys     0m0.016s
root@debian:~# diff a.py b.py
2c2
< while 1:
---
> while True:
root@debian:~# cat a.py b.py
i=0
while 1:
    i += 1
    if i > 200000000:
        break
i=0
while True:
    i += 1
    if i > 200000000:
        break
点赞  2016-8-9 11:07
引用: 凉冰 发表于 2016-8-9 11:07
True的可读性是好点,不过他多了一层的转化。
我没做过嵌入式,但我在做应用层开发的时候是有些性能变化 ...

python语言理论上是存在这个问题,无论是嵌入式还是应用层都会存在这个问题,因为py文件为更多是方便阅读代码,是边解释边运行的语言,都会存在你说的这个问题,解释的过程会存在差异,如果要运行快的话,建议编译成pyc后再运行进行对比,应该来说两者会减少差异或者没有什么差异,毕竟编写的过程中注重代码的阅读,而运行的话编成pyc两者可能都没有差别吧,建议你试运行一下发个经验贴给大家学习下。
点赞  2016-8-10 08:15
学习一下
点赞  2018-6-5 08:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复