回到顶部 回到顶部
best-icon

智能农场信息监测站 简单

头像 DFSyEbTgVDP 2022.08.05 661 5

       5G元年的列车早已驶出,人工智能、大数据的浪潮还在涌动,云办公、云问诊成为防疫期间的热搜词。


       现如今,物联网技术正处于时代发展的风口,相较于传统的硬件设备,物联网技术使得各种硬件设备能够通过信息传输设备与互联网连接起来,继而进行信息的传递,以实现智能化识别与管理,为人们日常生活带来便捷。       如果只模拟了对农业生产中植物生长环境的实时监测和改善,那么,在这其中,监测到的数据只能显示在行空板的屏幕上,我们必须走进田地,靠近行空板才能进行监测,很不方便。那有什么办法能让我们呆在家中,远程就能知晓实时的环境数据呢?

这次,就让我们试着利用强大的物联网技术,来模拟一个智慧农业物联网系统,解决这个问题吧!

 

project-image

话不多说,先看视频

 

步骤1 目标任务

任务目标

将通过土壤湿度传感器检测到的湿度、空气温湿度传感器检测到的湿度、温度值、行空板自带的光敏传感器检测到的光强值显示在屏幕上,同时,开启SIoT物联网系统,将数据同步传输到物联网平台以便进行查看。

材料清单

软件使用:Mind+编程软件x1
 

知识储备

1、物联网

物联网(Internet of Things,简称IoT)是借助互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。

物联网是互联网的一个延伸,互联网的终端是计算机(PC、服务器),而物联网的终端是硬件设备(手机、电脑、传感器等等)。通过物联网,我们可以用中心计算机将各种机器、设备连接起来,进行集中管理,实现物物相连。比如,将家中的灯、风扇、空调等电器连入物联网中后可以通过手机来控制它们开关。


 

2、MQTT

计算机为了联网,就必须规定通信协议,就好比一群不同国家的人在一块儿,只有说同一种语言才能实现互相交流。同样地,要想实现万物互联,也需要一套协议。事实上,物联网系统的搭建可通过很多协议来实现,常用的物联网应用层协议包括MQTT、HTTP、XMPP、CoAP等。这里我们采用的是MQTT,通过该协议,我们可以在物联网上传输消息。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,服务器就是我们要搭建的物联网平台的载体。客户端可以是信息发布者或订阅者。每个客户端都可以连接到服务器。举个例子,邮局大家都不陌生,我们可以到邮局寄信和收信。当我们寄信时,对于邮局而言我们就是信息发布者,当收信时我们就成了订阅者。同时,无论是寄信者还是收信者,我们都是客户。而邮局这个收寄信的平台就是所谓的服务器,为我们提供收信和寄信的服务。

 

当发布者具有要分发的新数据时,它会将包含数据的控制消息发送到服务器。然后,服务器将信息分发给已订阅该主题的任何客户端。发布者不需要有关于订阅者数量或位置的任何数据,而订阅者又不必配置有关发布者的任何数据。

 

另外,MQTT传输的消息可分为:Topic和payload两部分

(1)Topic,可以理解为消息的类型,订阅者订阅后,就会收到该主题的消息内容(Payload);

(2)payload,可以理解为消息的内容,是指订阅者具体要接收的内容。

3、SIoT

SIoT是一个为教育定制的跨平台的开源MQTT服务器程序,S指科学(science)、简单(simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系统,一键启动,无需用户注册或者系统设置即可使用。

SIoT也是为了帮助中小学生理解物联网原理,并且能够基于物联网技术开发各种创意应用。因为其重点关注物联网数据的收集和导出,是采集科学数据的最好选择之一。

 

这里,于行空板而言,SIoT应用程序已经被内置在了板子上,因此在使用时,我们可直接在应用开关内通过点击它来开启服务。同时,为了便于它的使用,我们开发了名为“SIoT”的Python库,旨在通过编写Python程序来连接MQTT服务器以及实现消息的传输。

在实际使用时,开启SIoT服务的行空板我们就可以当作一台服务器,连接传感器以检测数据的行空板(设备)我们可以当作客户端。

 

而如果在同一块板子上既开启SIoT服务,又连接传感器来检测数据,那么它既是客户端又是服务器。

 

 

project-image
project-image
project-image

总的代码是这样,下面我将会一一解析

project-image
代码
#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from pinpong.board import DHT11
from unihiker import GUI
import siot


siot.init(client_id="",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
Board().begin()
u_gui=GUI()
siot.connect()
siot.loop()
p_p21_analog=Pin(Pin.P21, Pin.ANALOG)
p_p22_analog=Pin(Pin.P22, Pin.ANALOG)
siot.getsubscribe(topic="DFRobot/Seifer")
dht1 = DHT11(Pin((Pin.P24)))
u_gui.draw_text(text="欢迎使用智能环境",x=10,y=0,font_size=20, color="#0000FF")
u_gui.draw_text(text="信息监测站",x=50,y=35,font_size=20, color="#0000FF")
u_gui.draw_text(text="空气温度:    ",x=15,y=70,font_size=20, color="#0000FF")
u_gui.draw_text(text="空气湿度:  ",x=15,y=100,font_size=20, color="#0000FF")
u_gui.draw_text(text="土壤湿度:  ",x=15,y=130,font_size=20, color="#0000FF")
u_gui.draw_text(text="环境光度:",x=15,y=160,font_size=20, color="#0000FF")
u_gui.draw_text(text="制作:钟皓阳",x=15,y=250,font_size=20, color="#0000FF")
T=u_gui.draw_digit(text=" ",x=135,y=80,font_size=20, color="#0000FF")
R=u_gui.draw_digit(text=" ",x=135,y=110,font_size=20, color="#0000FF")
Y=u_gui.draw_digit(text=" ",x=135,y=140,font_size=20, color="#0000FF")
X=u_gui.draw_digit(text=" ",x=135,y=170,font_size=20, color="#0000FF")

while True:
    wendu = dht1.temp_c()
    siot.publish(topic="DFRobot/Seifer", data=(str("空气温度:  ") + str(wendu)))
    T.config(text=wendu)
    shidu = dht1.humidity()
    siot.publish(topic="DFRobot/Seifer", data=(str("空气湿度:  ") + str(shidu)))
    R.config(text=shidu)
    shidu2 = p_p21_analog.read_analog()
    siot.publish(topic="DFRobot/Seifer", data=(str("土壤湿度:  ") + str(shidu2)))
    Y.config(text=shidu2)
    guangdu = p_p22_analog.read_analog()
    siot.publish(topic="DFRobot/Seifer", data=(str("光照强度:") + str(guangdu)))
    X.config(text=guangdu)
                         钟皓阳制作       (此行无需复制!)

步骤2 编写程序

1.当程序开始时先连接MQTT 注意!发布到mqtt时要记得订阅,默认订阅是下面这个(DFRobot/Seiter)

(默认就是下面的参数 ↓ ↓ ↓ )

project-image
project-image

然后就是初始化硬件和行空板上的文字

project-image

注意:这里要写对象名,可以用于替换,字体自己选

 

project-image

注意!硬件初始化的时候要选引脚,不能直接用文字填写,而要用下面这个模块拖到里面去,引脚不一定要这个

project-image

这个是具体的读取程序,最好是设个变量     

 

project-image

步骤3 siot的连接

启动SIoT服务

按下HOME键进入菜单,单击“应用开关”,找到SIoT应用后点击启用,如下图所示。

 

 

STEP5:查看ip并记录

按下HOME键进入菜单,单击“查看网络信息”,找到SIoT应用后点击启用,如下图所示。

Tips:“10.1.2.3”为板子通过USB线连接电脑后的固定IP地址。这里我们将它记录下来,后续有用。

 

 

 

project-image

输入10.1.2.3:8080

输入默认的账号“siot”,密码“dfrobot”,点击登录

点击项目下的“查看设备列表”

可以看到“项目ID”、“名称”分别对应为程序中“IOT_pubTopic”的信息

点击“查看消息”

随后我们就可以查看到Topic的MQTT消息记录啦,并伴有具体的消息内容及发送时间,这就是我们检测到的该时刻的土壤湿度、空气温度值、湿度值、环境光强值,如下图。

点击“自动刷新消息”

通过刷新消息,我们发现数据每隔一秒进行了更新

 

project-image
project-image
project-image
project-image

步骤4 外观封装

外壳切割图如下

project-image
project-image

外观如下:

project-image
project-image
project-image
project-image

行空板和掌控板对比的优点

1.优点

(1)行空板自带操作系统,搭载siot

(2)屏幕为彩色,有更多东西可写

(3)屏幕可触摸

(4)板载硬件多

(5)图形化转python,更方便

 

挑战自我

想一想,在农业系统中,还有哪些因素是会影响庄稼生长的呢,我们有何方法来检测它呢,自己来研究一下吧,并结合物联网平台,试着以远程的方式分析一下它对庄稼长势的影响吧!
 

今天的分享到此结束,快去试试吧!

评论

user-avatar
  • DFSyEbTgVDP

    DFSyEbTgVDP2022.08.29

    @坚果2 可以

    0
    • DFSyEbTgVDP

      DFSyEbTgVDP2022.08.29

      @黄金华 暂时没有

      0
      • 黄金华

        黄金华2022.08.23

        请问,编程有通过mixly实现的版本吗

        0
        • 坚果2

          坚果22022.08.21

          交个朋友好吗我是做监测自动化工程的

          0
          • DFSyEbTgVDP

            DFSyEbTgVDP2022.08.13

            钟皓阳原创文章,未经授权禁止转载。

            0