树莓派技术入门应用--树莓派 + MCC 118 实现数据采集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
树莓派+ MCC 118 实现数据采集
最近从树莓派实验室拿到一块MCC 118 DAQ 扩展板的试用,这是我第一次接触专业的DAQ 采集卡,怀着对数据采集的好奇开始摸索。
首先了解到这个板卡可以同时支持8路数据采集,但我这里暂时只需要用到其中1路来实现一个环境光线的采集。
我会使用一个安放在室外、具有模拟输出功能的光线传感器模块,采集其模拟电信号,并线性转换成一个光照的亮度指数。
在室内的一个鱼缸里,我安装了一个LED氛围灯,并尝试用采集到的室外光照亮度指数来设置这个LED氛围灯的亮度。
最终实现室内鱼缸的光照度和室外自然光照度实时同步,我的爱鱼也能实时感受到室外的天气变化了~
材料清单
树莓派(Raspberry Pi)一块
MCC 118 DAQ HAT一块
光线传感器模块(带模拟输出)一个
RGB LED 模块一个(共阴或共阳,本例使用共阴)
面包板一块
杜邦线若干
瑞士军刀扩展板一块(可选)
一、安装环境
树莓派建议安装官方的Raspbian 系统,不需要特别的配置。直接开始部署MCC 118 配套的SDK 和范例试试数据采集卡的工作情况,步骤如下(这里直接参考了这篇教程)。
二、接线
先看光线传感器模块。
为什么用带模拟输出(AO)的光线传感器呢?是因为这款传感器如果只有数字输出(DO)的话,其输出的数据只能是高电平或低电平,只能反映光线是否达到某个设定的值,而无法反映出光线的强弱。
但树莓派本身并没有ADC,无法直接读取模拟电信号(信号的强弱和光线强弱相关)。这时MCC 118 DAQ 就派上用场了。
MCC 118 的排座设计将GPIO全部引出了,很方便外接其他传感器。
引脚连接表
光线传感器:VCC —树莓派:5V
光线传感器:GND — MCC 118:GND
光线传感器:AO — MCC 118:CH1
RGBLED模块:GND —树莓派:GND
RGBLED模块:R —树莓派:BCM 17
RGBLED模块:G —树莓派:BCM 27
RGBLED模块:B —树莓派:BCM 22
三、测量采集和数值换算
启动Web 波形图程序:
接下来就可以在浏览器中打开http://:8080 访问了。将其中的替换成树莓派的IP 地址或主机名。
要想停止Web 服务,可以回到命令行界面按下Ctrl+C 中止。
首先试试看这个传感器的AO输出的电压范围,用MCC 118 SDK 中自带的
web_server 范例可以非常方便的检测到。这是一个类似示波器的应用,启动之后在浏览器打开,选择通道1后启动数据采集,通过开关灯可以看到电压的实时变化。
通过完全遮住光线传感器的光敏电阻,看到AO输出电压最大升至5V;用手机自带闪光灯照射在光敏电阻上,看到AO输出电压最小降到0V。看来0~5V就是这个传感器的模拟电信号输出范围(图表显示的电压伏特数是精确到小数点后6位的)。
为了简化后面的程序,我把0~5V的电压范围通过简单的公式换算到100 ~ 0 的范围内,而树莓派的PWM 支持的参数范围也是0 ~ 100,这样刚好可以用树莓派的PWM 来设置LED 的亮度。
其效果是白天光线最强时鱼缸灯光达到最强的白色光,到晚间,灯光中的红色和绿色光源逐渐减弱至0,则呈现出夜晚的蓝色光氛围。
四、代码和运行
完整代码如下,这个代码是在MCC 118 范例single_value_read 基础上修改而来的(范例做得清晰易懂很方便修改)。
将程序代码文件light.py 上传至树莓派,进入程序所在目录运行:python light.py
光照强度指数最大时效果如下。
光照强度指数最小时效果如下。
应用到鱼缸(效果图)。
五、延伸应用
做这个实验的过程中在想如果MCC 118 能自带一款显示屏用来显示采集到的实时数据就好了,后来发现手头有一款集成了数码管的瑞士军刀扩展板,刚好可以插在这个MCC 118 引出的排针上,如图:
瑞士军刀扩展板也有很方便的SDK,简单的整合了两部分代码,就实现了数码管动态显示光照强度指数,并能控制板载的8个LED实现1-8级亮度的小夜灯。
完整代码如下:
六、小结
看起来在专业领域才会接触到的数据采集,实际上也可以应用在日常的DIY 实验之中。MCC 118 这块数据采集卡配以完善的程序库和范例,是树莓派平台上很容易上手的数据采集方案。在它的帮助下,我的爱鱼也能实时感受到室外的天气变化了~