树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx

上传人:b****3 文档编号:8213987 上传时间:2023-05-10 格式:DOCX 页数:15 大小:2.06MB
下载 相关 举报
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第1页
第1页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第2页
第2页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第3页
第3页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第4页
第4页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第5页
第5页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第6页
第6页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第7页
第7页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第8页
第8页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第9页
第9页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第10页
第10页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第11页
第11页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第12页
第12页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第13页
第13页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第14页
第14页 / 共15页
树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx

《树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx》由会员分享,可在线阅读,更多相关《树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

树莓派技术入门应用树莓派 + MCC 118 实现数据采集文档格式.docx

sudoapt-getupdate

sudoapt-getinstallgit

cd~

gitclone

cd~/daqhats

sudo./install.sh

pipinstalldashdash-rendererdash-html-componentsdash-core-components

二、接线

先看光线传感器模块。

为什么用带模拟输出(AO)的光线传感器呢?

是因为这款传感器如果只有数字输出(DO)的话,其输出的数据只能是高电平或低电平,只能反映光线是否达到某个设定的值,而无法反映出光线的强弱。

但树莓派本身并没有ADC,无法直接读取模拟电信号(信号的强弱和光线强弱相关)。

这时MCC118DAQ就派上用场了。

MCC118的排座设计将GPIO全部引出了,很方便外接其他传感器。

引脚连接表

光线传感器:

VCC—树莓派:

5V

GND—MCC118:

GND

AO—MCC118:

CH1

RGBLED模块:

GND—树莓派:

R—树莓派:

BCM17

G—树莓派:

BCM27

B—树莓派:

BCM22

三、测量采集和数值换算

启动Web波形图程序:

cd~/daqhats/examples/python/mcc118/web_server

./web_server.py

接下来就可以在浏览器中打开http:

//:

8080访问了。

将其中的替换成树莓派的IP地址或主机名。

要想停止Web服务,可以回到命令行界面按下Ctrl+C中止。

首先试试看这个传感器的AO输出的电压范围,用MCC118SDK中自带的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,则呈现出夜晚的蓝色光氛围。

四、代码和运行

完整代码如下,这个代码是在MCC118范例single_value_read基础上修改而来的(范例做得清晰易懂很方便修改)。

#!

/usr/bin/envpython

#-*-coding:

utf-8-*-

from__future__importprint_function

fromtimeimportsleep

fromsysimportstdout

fromdaqhats_utilsimportselect_hat_device,enum_mask_to_string

fromdaqhatsimportmcc118,OptionFlags,HatIDs,HatError

#RGBLED

importRPi.GPIO

#Constants

CURSOR_BACK_2='

\x1b[2D'

ERASE_TO_END_OF_LINE='

\x1b[0K'

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)

defmain():

"

"

Thisfunctionisexecutedautomaticallywhenthemoduleisrundirectly.

options=OptionFlags.DEFAULT

low_chan=0

high_chan=3

mcc_118_num_channels=mcc118.info().NUM_AI_CHANNELS

sample_interval=0.5#Seconds

light_index=0

try:

#Getaninstanceoftheselectedhatdeviceobject.

address=select_hat_device(HatIDs.MCC_118)

hat=mcc118(address)

print('

\nMCC118singledatavaluereadexample'

Options:

'

enum_mask_to_string(OptionFlags,options))

input("

\nPress'

Enter'

tocontinue"

except(NameError,SyntaxError):

pass

\nAcquiringdata...PressCtrl-Ctoabort'

whileTrue:

#Readasinglevaluefromeachselectedchannel.

value=hat.a_in_read(1,options)

light_index=100-round(value*1000/50)

led_display(light_index)

\r{:

12.5}V'

.format(value),'

\tIndex:

{:

5.4}'

.format(light_index),end='

stdout.flush()

#Waitthespecifiedintervalbetweenreads.

sleep(sample_interval)

exceptKeyboardInterrupt:

#Clearthe'

^C'

fromthedisplay.

print(CURSOR_BACK_2,ERASE_TO_END_OF_LINE,'

\n'

except(HatError,ValueError)aserror:

error)

pwmR.stop()

pwmG.stop()

pwmB.stop()

RPi.GPIO.cleanup()

defled_display(index):

#print(index)

pwmR.ChangeDutyCycle(index)

pwmG.ChangeDutyCycle(index)

pwmB.ChangeDutyCycle(100)

if__name__=='

__main__'

:

#Thiswillonlyberunwhenthemoduleiscalleddirectly.

main()

将程序代码文件light.py上传至树莓派,进入程序所在目录运行:

pythonlight.py

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

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

应用到鱼缸(效果图)。

五、延伸应用

做这个实验的过程中在想如果MCC118能自带一款显示屏用来显示采集到的实时数据就好了,后来发现手头有一款集成了数码管的瑞士军刀扩展板,刚好可以插在这个MCC118引出的排针上,如图:

瑞士军刀扩展板也有很方便的SDK,简单的整合了两部分代码,就实现了数码管动态显示光照强度指数,并能控制板载的8个LED实现1-8级亮度的小夜灯。

完整代码如下:

fromsakshatimportSAKSHAT

importtime

#DeclaretheSAKSBoard

SAKS=SAKSHAT()

SAKS.buzzer.off()

SAKS.digital_display.show(("

##%d"

%int(index)))

ifindex<

50:

SAKS.ledrow.set_row([True,True,True,True,True,True,True,True])

else:

SAKS.ledrow.set_row([False,False,False,False,False,False,False,False])

 

六、小结

看起来在专业领域才会接触到的数据采集,实际上也可以应用在日常的DIY实验之中。

MCC118这块数据采集卡配以完善的程序库和范例,是树莓派平台上很容易上手的数据采集方案。

在它的帮助下,我的爱鱼也能实时感受到室外的天气变化了~

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2