光线树莓派技术入门应用--树莓派 MCC 118 实现数据采集

mcc com  时间:2021-01-30  阅读:()

树莓派+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

光照强度指数最大时效果如下。

TMThosting:VPS月付55折起,独立服务器9折,西雅图机房,支持支付宝

TMThosting发布了今年黑色星期五的促销活动,即日起到12月6日,VPS主机最低55折起,独立服务器9折起,开设在西雅图机房。这是一家成立于2018年的国外主机商,主要提供VPS和独立服务器租用业务,数据中心包括美国西雅图和达拉斯,其中VPS基于KVM架构,都有提供免费的DDoS保护,支持选择Windows或者Linux操作系统。Budget HDD系列架构CPU内存硬盘流量系统价格单核51...

TmhHost香港三网CN2 GIA月付45元起,美国CN2 GIA高防VPS季付99元起

TmhHost是一家国内正规公司,具备ISP\ICP等资质,主营国内外云服务器及独立服务器租用业务,目前,商家新上香港三网CN2 GIA线路VPS及国内镇江BGP高防云主机,其中香港三网CN2 GIA线路最低每月45元起;同时对美国洛杉矶CN2 GIA线路高防及普通VPS进行优惠促销,优惠后美国洛杉矶Cera机房CN2 GIA线路高防VPS季付99元起。香港CN2 GIA安畅机房,三网回程CN2 ...

HyperVMart:加拿大vps,2核/3G/25G NVMe/G口不限流量/季付$10.97,免费Windows系统

hypervmart怎么样?hypervmart是一家成立了很多年的英国主机商家,上一次分享他家还是在2年前,商家销售虚拟主机、独立服务器和VPS,VPS采用Hyper-V虚拟架构,这一点从他家的域名上也可以看出来。目前商家针对VPS有一个75折的优惠,而且VPS显示的地区为加拿大,但是商家提供的测速地址为荷兰和英国,他家的优势就是给到G口不限流量,硬盘为NVMe固态硬盘,这个配置用来跑跑数据非常...

mcc com为你推荐
非主流桌面背景图片22寸非主流桌面壁纸美团月付怎么关闭美团网付款后怎么取消订单申请退款滚筒洗衣机和波轮洗衣机哪个好一分钟看懂滚筒洗衣机和波轮洗衣机 滚筒洗衣机和波轮洗衣机哪个好手机浏览器哪个好手机上的浏览器哪个比较好?核芯显卡与独立显卡哪个好核芯显卡和独立显卡哪个好?请直接点谢谢啦!网校哪个好会计网校哪个好雅思和托福哪个好考雅思和托福哪个好考一点牡丹江教育云空间登录我想知道校园云空间是用什么账号登录的?首选dns服务器首选DNS服务器和备用DNS服务器有什么区别?网通dns服务器地址湖北省鄂州市葛店镇DNS服务器IP地址是多少
jsp虚拟空间 liquidweb 精品网 搬瓦工官网 godaddy续费优惠码 英文简历模板word unsplash 新世界电讯 国外在线代理 dux 河南m值兑换 服务器干什么用的 中国电信测速网 空间登入 阿里云邮箱登陆地址 实惠 可外链的相册 服务器硬件配置 深圳主机托管 亿库 更多