本章使用Tibbo EM1000-TEV硬件模块开发「远程鱼缸监控系统」,让用户更方便、更实时、更容易的获得家中饲养鱼之相关信息,不论外工作或出外旅游都能及时掌握其状况。EM1000-TEV设备可以链接鱼缸外围的装置,如:电灯、帮浦与恒温器等,另外也在鱼缸里放入传感器,如:水温器、溶氧量、PH值与导电度等,最后这些感测数值可透过EM1000-TEV之Web Server显示。
一、系统介绍
本范例所开发之「远程鱼缸监控系统」,是方便长时间需在外工作或者出外旅游,无法在家中照顾饲养的观赏鱼所建立的系统。用户可以透过网络和安装在鱼缸旁的EM1000-TEV设备做连结,让使用者可以清楚得知目前鱼缸里的情况,也可以透过EM1000-TEV控制外围电灯与投饵器等之开关,使用者可以视情况做动作或者调整,不用担心家中所饲养的鱼群状况。本范例架构图如图8.1.1所示,主要透过EM1000-TEV去控制水族箱内的设备与获取传感器资料,另外可以加上Camera与数据库等功能,不过本范例中不包含后两者。
图8.1.1 「远程鱼缸监控系统」范例架构图
二、设备安装与设定
本范例需要使用到EM1000-TEV的AI、DO、LCD与Web Server等功能,此些部份在本章中最后有详细说明,请读者自行参阅。
首先要说的是AI(analog input)讯号获取,这里需要搭配研华科技公司的ADAM 4017模块使用。利用EM1000-TEV上的TEV-IB0模块(如图8.2.1)搭配TB100转换模块(如图8.2.2)与研华科技ADAM 4017-AI转RS485模块进行(如图8.2.3的ADAM 4017模块,详细数据可以参考研华科技公司的网站)。其中,ADAM 4017模块是将AI的电压或电流讯号转换成RS485形式后进入TB100模块;TB100模块则是pass上述RS485讯号进入TEV-IB0模块,最后EM1000-TEV透过Tibbo Basic内的ser对象接收数据。
图8.2.1 EM1000-TEV实体图
TB100可以pass RS485格式之资料,不过TB100与TEV-IB0模块都需要先透过jump做相对应的设定,TB100的设定如图8.1.3所示,TEV-IB0模块的设定则如图8.1.4。
图8.2.2 TB100讯号转换模块
图8.2.3 TEV-IB0模块的设定
所有硬件都到位后,需要将其个别连接组合,比较需要注意的是ADAM 4017与TB100连接的方式,接脚对应方式如下:
• TB100上编号8的脚位请连结到ADAM 4017上的「data+」
• TB100上编号9的脚位请连结到ADAM 4017上的「data-」
接脚位置如图8.2.4所示。
图8.2.4 TB100上的第8与第9脚位位置
其次,在传感器部份,可包含有导电度、溶氧量、PH值与水温四种,都可以输出电压值,此部份读者可以视需要换成其它可以输出电压讯号的传感器,在此就不再赘述。撰写程序时需要注意将ser.interface设定成「PL_SER_SI_HALFDUPLEX」,默认值则是「PL_SER_SI_FULLDUPLEX」。TEV-IB0模组的RS485模式启动与设定方式如下程序代码所示:
sub on_ sys_ init( )
'TODO: place "on_ _sys_ init" event handler code here .
dim temp,rh as short
init_1cd(), 呼叫ICD的设定
io.num=PI_IO_NUM_0
io.enabled=YES
'Serial Port RS485
ser.num = 0
ser.baudrate = ser.div9600
ser.interface = PL_SER_SI_HALFDUPLEX
ser.interchardelay = 50
ser.parity = PL_SER_PR_ NONE
ser.rxbuffrq(1)
ser.txbuf frq(1)
sys.buffalloc
ser.enabled = YES
end sub
获取到的数据格式如(1)所示,以「>」开头,以「+」号分隔一整组讯号,例如ADAM 4017具备有8个AI输入,如果全部都使用,那将会有7个「+」号分隔出8组数值。
>+xx.xxx+xx.xxx+xx.xxx (1)
这里透过ser对象获取到的是电压值,因此,最后还需要将电压讯号转成可读值,这部份的转换公式与传感器有关,一般这个可以询问传感器厂商来取得,或自行实验,利用回归得出对应公式再加以计算,此处我们则保留原电压值,不做任何转换计算,网页画面上直接显示电压值,并同时将结果更新显示到LCD屏幕上。
最后,就是外围设备控制部分,本范例主要控件目有加热器、帮浦、电灯与投饵器等。EM1000-TEV上的DO(digital output)控制模块,实体图如图8.2.5所示,Tibbo对其编号如图8.2.6中的TX2与TX3,也就是图8.2.1上的TEV-IB1模块。
图8.2.5 EM1000-TEV上的DO(digital output)控制模块实体图
图8.2.6 TEV-IB1模块实体图
本范例程序将透过程序指定开启TX2与TX3上各自的RELAY2与RELAY3继电器(relay)开关,分别控制电灯、帮浦、投饵器与恒温器。Tibbo将EM1000-TEV设备模块上的TEV-IB0与TEV-IB1模块从右到左依序编号成TX0、TX1、TX2与TX3,如图8.2.6所示。TX2与TX3上面各有3个继电器(relay),透过程控时需要搭配表8-1与图8.2.7进行。
例如要控制TX2板(图8.2.7上TX2的控制脚位号码=13)上的第3个继电器(relay),将其开启,首先需要看表8-1,得到TX2上面第3个继电器(relay)对应到的是DTR2,接着再看图8.2.7,DTR2的控制脚位号码=6,因此,程序代码需要做以下指定,其余以此类推:
1、指定TX2板(图8.2.7上TX2的控制脚位号码=13)
io.num = PL_IO_NUM_13_TX2
2、指定TX2上的第3个relay
io.num = PL_IO_NUM_6
3、启动该IO对象
io.enabled = yes
4、改变relay状态(切换TX2控制板上第3颗relay由normal opened变成closed,设定成LOW)
io.lineset(PL_IO_NUM_6,LOW)
表8-1、EM1000各版上的relay编号表 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200909160316414.png#pic_center)
图8.2.7 EM1000-TEV芯片接线图
三、系统程序
硬件模式设定完成后,我们建立本章范例需要的新项目,并将其命名为「EM1000_fish」,此范例程序将透过TB100与TEV-IB0模块获取传感器的模拟电压讯号,使用者可以透过网络进行监测,并同时将其显示到EM1000-TEV的LCD屏幕上。程序部份需要用到Tibbo Basic的「io」与「ser」两个对象,前者用于模拟电压讯号转换从ADAM 4017转换成RS485前的传输控制,后者用于讯号转换成RS485后的数据获取。
DO控制部分,TEV-IB1模块在Tibbo Basic中对应的对象是「io」。如上节所述,若要控制TX2模块上三颗relay,其完整控制程序如下所示:
sub_ on_ sys_ init()
'TODO: place. "on_ sys_ init" event handler code here
'指定TX2控制板
io.num= PL_IO_NUM_13_TK2
'指定TX2控制板上第1颗RELAY
io.num=PI_IO_NUM_13_TX2
启动io
io.enabled=yes
切换TX2控制板.上第1颗RELAY由normal opened变成closed
io.lineset(PL_IO_NUM_13_TX2,LOW)
指定TX2控制板上第2颗RELAY
io.num=PI_IO_NUM_2
启动io
io.enabled=yes
”切换TX2控制板上第2颗RELAY由normal opened变成closed
io.lineset(PL_I0_NUM_2,LOW)
'指定TX2控制板.上第3颗RELAY
io.num=PL_IO_NUM_6
启动io
io.enabled=yes
”切换TX2控制板上第3颗RELAY由normal opened变成closed
io.lineset(PL_IO_NUM_6,LOV)
end sub
除了AI与DO控制功能外,本范例中我们将获取到的讯后透过EM1000-TEV内的WebServer进行发布与显示,另外更可以透过网页画面进行外围设备的控制,包含加热器、帮浦、电灯与投饵器等。
整个项目详细的范例程序就请读者自行参阅光盘内源代码,程序执行画面则如图8.3.1所示,我们可以看到传感器的值,同时可以透过网络画面直接控制加热器、帮浦、电灯与投饵器等设备。
图8.3.1 项目执行画面
技术支持:司成
联系方式:
seacer@protonmail.com
18538515890@163.com
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)