树莓派+MCC118实现数据采集
最近从树莓派实验室拿到一块MCC 118 DAQ扩展板的试用这是我第一次接触专业的DAQ采集卡怀着对数据采集的好奇开始摸索。
首先了解到这个板卡可以同时支持8路数据采集但我这里暂时只需要用到其中1路来实现一个环境光线的采集。
我会使用一个安放在室外、具有模拟输出功能的光线传感器模块采集其模拟电信号并线性转换成一个光照的亮度指数。
在室内的一个鱼缸里我安装了一个LED氛围灯并尝试用采集到的室外光照亮度指数来设置这个LED氛围灯的亮度。
最终实现室内鱼缸的光照度和室外自然光照度实时同步我的爱鱼也能实时感受到室外的天气变化了~
材料清单
树莓派Raspberry Pi一块
MCC 118DAQHAT一块
光线传感器模块带模拟输出一个
RGB LED模块一个共阴或共阳本例使用共阴
面包板一块
杜邦线若干
瑞士军刀扩展板一块可选
一、安装环境
树莓派建议安装官方的Raspbian系统不需要特别的配置。直接开始部署MCC 118配套的SDK和范例试试数据采集卡的工作情况步骤如下这里直接参考了这篇教程。sudo apt-get updatesudo apt-get install gitcd ~git clone https://github.com/mccdaq/daqhats.gitcd ~/daqhatssudo ./install.shpip install dash dash-renderer dash-html-componentsdash-core-components
二、接线
先看光线传感器模块。
为什么用带模拟输出AO的光线传感器呢是因为这款传感器如果只有数字输出DO的话其输出的数据只能是高电平或低电平只能反映光线是否达到某个设定的值而无法反映出光线的强弱。
但树莓派本身并没有AD C无法直接读取模拟电信号信号的强弱和光线强弱相关 。这时MCC 118 DAQ就派上用场了。
MCC 118的排座设计将GPIO全部引出了很方便外接其他传感器。
引脚连接表
光线传感器 VC C—树莓派 5V
光线传感器 GND—MCC 118 GND
光线传感器 AO—MCC 118 CH1
RGBLED模块 GND—树莓派 GND
RGBLED模块 R—树莓派 BCM17
RGBLED模块 G—树莓派 BCM27
RGBLED模块 B—树莓派 BCM22
三、测量采集和数值换算
启动Web波形图程序cd ~/daqhats/examples/python/mcc118/web_server
./web_server.py
接下来就可以在浏览器中打开h tt p://:8080访问了。将其中的替换成树莓派的I P地址或主机名。
要想停止Web服务可以回到命令行界面按下Ctrl+C中止。
首先试试看这个传感器的AO输出的电压范围用MCC 118SDK中自带的web_server范例可以非常方便的检测到。这是一个类似示波器的应用启动之后在浏览器打开选择通道1后启动数据采集通过开关灯可以看到电压的实时变化。通过完全遮住光线传感器的光敏电阻看到AO输出电压最大升至5V用手机自带闪光灯照射在光敏电阻上看到AO输出电压最小降到0V。看来0~5V就是这个传感器的模拟电信号输出范围图表显示的电压伏特数是精确到小数点后6位的 。为了简化后面的程序我把0~5V的电压范围通过简单的公式换算到100~0的范围内而树莓派的PWM支持的参数范围也是0~100这样刚好可以用树莓派的PWM来设置LED的亮度。
#从通道1读取模拟电信号电压value = hat.a_in_read(1, options)
#光照亮度指数换算light_index = 100 - round(value * 1000 / 50)
#根据光照亮度指数通过PWM来设置LED的光照强度和颜色
#红色光pwmR.ChangeDutyCycle(light_index)
#绿色光pwmG.ChangeDutyCycle(light_index)
#蓝色光pwmB.ChangeDutyCycle(100)
其效果是白天光线最强时鱼缸灯光达到最强的白色光到晚间灯光中的红色和绿色光源逐渐减弱至0则呈现出夜晚的蓝色光氛围。
四、代码和运行
完整代码如下这个代码是在MCC 118范例single_value_read基础上修改而来的范例做得清晰易懂很方便修改 。
#!/usr/bin/env python
# -*- coding: utf-8 -*-from __future__ import print_functionfrom time import sleepfrom sys import stdoutfrom daqhats_utils import select_hat_device, enum_mask_to_stringfrom daqhats import mcc118, OptionFlags, HatIDs, HatError
# RGBLEDimport RPi.GPIO
# Constants
CURSOR_BACK_2 = '\x1b[2D'
ERASE_TO_END_OF_LINE = '\x1b[0K'
# RGBLED
R,G,B=17,27,22
RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(R, RPi.GPIO.OUT)
RPi.GPIO.setup(G, RPi.GPIO.OUT)
RPi.GPIO.setup(B, RPi.GPIO.OUT)pwmR = RPi.GPIO.PWM(R, 70)pwmG = RPi.GPIO.PWM(G, 70)pwmB = RPi.GPIO.PWM(B, 70)pwmR.start(0)pwmG.start(0)pwmB.start(0)def main() :
"" "
This function is executed automatically when the module is rundirectly.
"" "options = OptionFlags.DEFAULT
low_chan = 0
high_chan = 3mcc_118_num_channels = mcc118.info() .NUM_AI_CHANNELSsample_interval = 0.5 # Secondslight_index = 0try:
# Get an instance of the selected hat device object.address = select_hat_device(HatIDs.MCC_118)hat = mcc118(address)print( '\nMCC 118 single data value read example' )print( ' Options: ' , enum_mask_to_string(OptionFlags, options))try:input("\nPress 'Enter' to continue")except (NameError, SyntaxError) :passprint( '\nAcquiring data . . . Press Ctrl-C to abort' )try:while True:
# Read a single value from each selected channel.value = hat.a_in_read(1, options)light_index = 100 - round(value * 1000 / 50)led_display(light_index)print( '\r{:12.5} V' .format(value),
'\tIndex:{:5.4}' .format(light_index) , end=' ' )stdout.flush()
# Wait the specified interval between reads.sleep(sample_interval)except KeyboardInterrupt:
# Clear the '^C' from the display.print(CURSOR_BACK_2, ERASE_TO_END_OF_LINE, '\n' )except (HatError, ValueError) as error:print( '\n' , error)pwmR.stop()pwmG.stop()pwmB.stop()
RPi.GPIO.cleanup()def led_display(index) :
#print(index)pwmR.ChangeDutyCycle(index)pwmG.ChangeDutyCycle(index)pwmB.ChangeDutyCycle(100)if __name__ == '__main__' :
# This will only be run when the module is called directly.main()
将程序代码文件l ight.py上传至树莓派进入程序所在目录运行python l ight.py
光照强度指数最大时效果如下。
RAKsmart 商家这几年还是在做事情的,虽然他们家顺带做的VPS主机并不是主营业务,毕竟当下的基础云服务器竞争过于激烈,他们家主营业务的独立服务器。包括在去年开始有新增多个数据中心独立服务器,包括有10G带宽的不限流量的独立服务器。当然,如果有需要便宜VPS主机的他们家也是有的,比如有最低月付1.99美元的美国VPS主机,而且可选安装Windows系统。这里商家有提供下面六款六月份的活动便宜V...
LOCVPS商家我们还是比较熟悉的老牌的国内服务商,包括他们还有其他的产品品牌。这不看到商家的信息,有新增KVM架构轻量/迷你套餐,提供的机房包括香港云地和美国洛杉矶,适用全场8折优惠,月付29.6元起。LOCVPS是一家成立于2011年的稳定老牌国人商家,主要从事XEN、KVM架构的国外VPS销售,主推洛杉矶MC、洛杉矶C3、香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡等数据中心...
Virtono最近推出了夏季促销活动,为月付、季付、半年付等提供9折优惠码,年付已直接5折,而且下单后在LET回复订单号还能获得双倍内存,不限制付款周期。这是一家成立于2014年的国外VPS主机商,提供VPS和服务器租用等产品,商家支持PayPal、信用卡、支付宝等国内外付款方式,可选数据中心包括罗马尼亚、美国洛杉矶、达拉斯、迈阿密、英国和德国等。下面列出几款VPS主机配置信息,请留意,下列配置中...