91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

「行空板Python入門教程」第九課-智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)2

創(chuàng)客生活 ? 來(lái)源:創(chuàng)客生活 ? 作者:創(chuàng)客生活 ? 2022-06-23 11:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

5G元年的列車早已駛出,人工智能、大數(shù)據(jù)的浪潮還在涌動(dòng),云辦公、云問(wèn)診成為防疫期間的熱詞。

現(xiàn)如今,物聯(lián)網(wǎng)技術(shù)正處于時(shí)代發(fā)展的風(fēng)口,相較于傳統(tǒng)的硬件設(shè)備,物聯(lián)網(wǎng)技術(shù)使得各種硬件設(shè)備能夠通過(guò)信息傳輸設(shè)備與互聯(lián)網(wǎng)連接起來(lái),繼而進(jìn)行信息的傳遞,以實(shí)現(xiàn)智能化識(shí)別與管理,為人們的日常生活帶來(lái)便捷。

在上節(jié)課中,我們利用行空板設(shè)計(jì)了一個(gè)智慧農(nóng)業(yè)可視化系統(tǒng),模擬了對(duì)農(nóng)業(yè)中莊稼生長(zhǎng)環(huán)境的實(shí)時(shí)監(jiān)測(cè)和改善,然而,在這其中,監(jiān)測(cè)到的數(shù)據(jù)只能顯示在行空板的屏幕上,我們必須走近行空板方能進(jìn)行觀察,很不方便。那有什么辦法能讓我們待在家中,遠(yuǎn)程就能知曉實(shí)時(shí)的環(huán)境數(shù)據(jù)呢?

這節(jié)課,就讓我們?cè)囍脧?qiáng)大的物聯(lián)網(wǎng)技術(shù),用DFRobot的行空板來(lái)模擬一個(gè)智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng),解決這個(gè)問(wèn)題吧!

任務(wù)目標(biāo)

將通過(guò)土壤濕度傳感器檢測(cè)到的濕度值顯示在屏幕上,同時(shí),開(kāi)啟SIoT物聯(lián)網(wǎng)系統(tǒng),將數(shù)據(jù)同步傳輸?shù)轿锫?lián)網(wǎng)平臺(tái)以便進(jìn)行查看,當(dāng)觀察到的土壤濕度值不佳時(shí),通過(guò)在物聯(lián)網(wǎng)平臺(tái)的網(wǎng)頁(yè)端輸入指定字符“on”和“off”來(lái)控制繼電器和水泵澆水。

poYBAGKz27uAIIjKAABjCvK7ygQ945.pngpYYBAGKz27uAc3tTAAAvIpTXni8654.jpg

知識(shí)點(diǎn)

1、認(rèn)識(shí)物聯(lián)網(wǎng)、MQTT、SIoT

2、學(xué)習(xí)使用SIoT庫(kù)連接物聯(lián)網(wǎng)平臺(tái)的方法

3、學(xué)習(xí)使用SIoT庫(kù)向物聯(lián)網(wǎng)平臺(tái)發(fā)送消息的方法

4、學(xué)習(xí)使用SIoT庫(kù)接收物聯(lián)網(wǎng)平臺(tái)消息的方法

材料清單

硬件清單:

poYBAGKz27yAL5SNAACYj3bik98971.jpg

軟件使用:Mind+編程軟件x1

其他:

1、帶植物的花盆 x1

2、盛有水的燒杯 x1

3、十字/一字兩用螺絲刀 x1

知識(shí)儲(chǔ)備

1、物聯(lián)網(wǎng)

物聯(lián)網(wǎng)(Internet of Things,簡(jiǎn)稱IoT)是借助互聯(lián)網(wǎng)、傳統(tǒng)電信網(wǎng)等信息承載體,讓所有能行使獨(dú)立功能的普通物體實(shí)現(xiàn)互聯(lián)互通的網(wǎng)絡(luò)。

物聯(lián)網(wǎng)是互聯(lián)網(wǎng)的一個(gè)延伸,互聯(lián)網(wǎng)的終端是計(jì)算機(jī)(PC、服務(wù)器),而物聯(lián)網(wǎng)的終端是硬件設(shè)備(手機(jī)電腦、傳感器等等)。通過(guò)物聯(lián)網(wǎng),我們可以用中心計(jì)算機(jī)將各種機(jī)器、設(shè)備連接起來(lái),進(jìn)行集中管理,實(shí)現(xiàn)物物相連。比如,將家中的燈、風(fēng)扇、空調(diào)等電器連入物聯(lián)網(wǎng)中后可以通過(guò)手機(jī)來(lái)控制它們開(kāi)關(guān)。

2、MQTT

計(jì)算機(jī)為了聯(lián)網(wǎng),就必須規(guī)定通信協(xié)議,就好比一群不同國(guó)家的人在一塊兒,只有說(shuō)同一種語(yǔ)言才能實(shí)現(xiàn)互相交流。同樣地,要想實(shí)現(xiàn)萬(wàn)物互聯(lián),也需要一套協(xié)議。事實(shí)上,物聯(lián)網(wǎng)系統(tǒng)的搭建可通過(guò)很多協(xié)議來(lái)實(shí)現(xiàn),常用的物聯(lián)網(wǎng)應(yīng)用層協(xié)議包括MQTT、HTTP、XMPP、CoAP等。這里我們采用的是MQTT,通過(guò)該協(xié)議,我們可以在物聯(lián)網(wǎng)上傳輸消息。

MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,服務(wù)器就是我們要搭建的物聯(lián)網(wǎng)平臺(tái)的載體??蛻舳丝梢允切畔l(fā)布者或訂閱者。每個(gè)客戶端都可以連接到服務(wù)器。舉個(gè)例子,郵局大家都不陌生,我們可以到郵局寄信和收信。當(dāng)我們寄信時(shí),對(duì)于郵局而言我們就是信息發(fā)布者,當(dāng)收信時(shí)我們就成了訂閱者。同時(shí),無(wú)論是寄信者還是收信者,我們都是客戶。而郵局這個(gè)收寄信的平臺(tái)就是所謂的服務(wù)器,為我們提供收信和寄信的服務(wù)。

poYBAGKz27yAeXLAAAAaiqqVk7E452.jpg

當(dāng)發(fā)布者具有要分發(fā)的新數(shù)據(jù)時(shí),它會(huì)將包含數(shù)據(jù)的控制消息發(fā)送到服務(wù)器。然后,服務(wù)器將信息分發(fā)給已訂閱該主題的任何客戶端。發(fā)布者不需要有關(guān)于訂閱者數(shù)量或位置的任何數(shù)據(jù),而訂閱者又不必配置有關(guān)發(fā)布者的任何數(shù)據(jù)。

pYYBAGKz27yAOvPyAAAUxagNfwM691.jpg

另外,MQTT傳輸?shù)南⒖煞譃椋篢opic和payload兩部分

(1)Topic,可以理解為消息的類型,訂閱者訂閱后,就會(huì)收到該主題的消息內(nèi)容(Payload);

(2)payload,可以理解為消息的內(nèi)容,是指訂閱者具體要接收的內(nèi)容。

3、SIoT

SIoT是一個(gè)為教育定制的跨平臺(tái)的開(kāi)源MQTT服務(wù)器程序,S指科學(xué)(science)、簡(jiǎn)單(simple)的意思。SIoT支持Win10、Win7、Mac、Linux操作系統(tǒng),一鍵啟動(dòng),無(wú)需用戶注冊(cè)或者系統(tǒng)設(shè)置即可使用。

SIoT也是為了幫助中小學(xué)生理解物聯(lián)網(wǎng)原理,并且能夠基于物聯(lián)網(wǎng)技術(shù)開(kāi)發(fā)各種創(chuàng)意應(yīng)用。因?yàn)槠渲攸c(diǎn)關(guān)注物聯(lián)網(wǎng)數(shù)據(jù)的收集和導(dǎo)出,是采集科學(xué)數(shù)據(jù)的最好選擇之一。

poYBAGKz272ADCciAAAh671VJ18089.png

這里,于行空板而言,SIoT應(yīng)用程序已經(jīng)被內(nèi)置在了板子上,因此在使用時(shí),我們可直接在應(yīng)用開(kāi)關(guān)內(nèi)通過(guò)點(diǎn)擊它來(lái)開(kāi)啟服務(wù)。同時(shí),為了便于它的使用,我們開(kāi)發(fā)了名為“SIoT”的Python庫(kù),旨在通過(guò)編寫Python程序來(lái)連接MQTT服務(wù)器以及實(shí)現(xiàn)消息的傳輸。

在實(shí)際使用時(shí),開(kāi)啟SIoT服務(wù)的行空板我們就可以當(dāng)作一臺(tái)服務(wù)器,連接傳感器以檢測(cè)數(shù)據(jù)的行空板(設(shè)備)我們可以當(dāng)作客戶端。

pYYBAGKz272AH4xzAAAZIea2ZdI331.jpg

而如果在同一塊板子上既開(kāi)啟SIoT服務(wù),又連接傳感器來(lái)檢測(cè)數(shù)據(jù),那么它既是客戶端又是服務(wù)器。

poYBAGKz272ABMc3AAAfYgXyt-s726.jpg

Tips:在這節(jié)課上,我們將通過(guò)一塊板子來(lái)實(shí)現(xiàn)物聯(lián)網(wǎng)功能,而下節(jié)課中,我們將使用三塊板子來(lái)模擬多節(jié)點(diǎn)的物聯(lián)網(wǎng)系統(tǒng)。

4、SIoT庫(kù)常見(jiàn)函數(shù)

(1)init()、connect()、loop()函數(shù)初始化并連接物聯(lián)網(wǎng)平臺(tái)

SIoT庫(kù)中的init()函數(shù)可以用來(lái)初始化與物聯(lián)網(wǎng)平臺(tái)的連接,使用前,我們首先需要導(dǎo)入庫(kù),之后設(shè)定好連接物聯(lián)網(wǎng)平臺(tái)所需的參數(shù),包括服務(wù)器IP地址、物聯(lián)網(wǎng)平臺(tái)的賬號(hào)用戶名、賬號(hào)對(duì)應(yīng)的密碼,接著使用init()函數(shù)進(jìn)行連接驗(yàn)證,驗(yàn)證成功后再通過(guò)connect()和loop()函數(shù)進(jìn)行與平臺(tái)的連接。

import siot # 導(dǎo)入SIoT庫(kù)

SERVER = "10.1.2.3" # MQTT服務(wù)器IP,輸入個(gè)人實(shí)際Ip

CLIENT_ID = "" # 在SIoT上,CLIENT_ID可以留空

IOT_UserName = 'siot' # 用戶名

IOT_PassWord = 'dfrobot' # 密碼

siot.init(CLIENT_ID, SERVER, user=IOT_UserName,password=IOT_PassWord) # 初始化,確定輸入的用戶名和密碼正確

siot.connect() # 連接SIoT物聯(lián)網(wǎng)平臺(tái)

siot.loop() # 循環(huán)

其中,SERVER指的是開(kāi)啟siot服務(wù)用以連接的服務(wù)器的IP地址;CLIENT_ID指的是客戶端標(biāo)識(shí)符,它是客戶端到服務(wù)器的唯一標(biāo)識(shí),這里我們可以不輸入內(nèi)容; user指的是物聯(lián)網(wǎng)平臺(tái)賬戶的用戶名;password指賬號(hào)對(duì)應(yīng)的密碼。

(2)publish()函數(shù)向物聯(lián)網(wǎng)平臺(tái)發(fā)送消息

在連接上SIoT物聯(lián)網(wǎng)平臺(tái)后,通過(guò)SIoT庫(kù)的publish函數(shù)可以實(shí)現(xiàn)將消息發(fā)送到平臺(tái),使用時(shí)需要先后指定發(fā)送的主題Topic(目的地)和發(fā)送的消息內(nèi)容。

IOT_pubTopic = '智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)/Soil_moisture_value' # 濕度topic,“項(xiàng)目名稱/設(shè)備名稱”

Soil_moisture_value = adc0.read_analog() # 讀取模擬值

siot.publish(IOT_pubTopic, Soil_moisture_value) # 發(fā)布信息至物聯(lián)網(wǎng)平臺(tái)

其中,IOT_pubTopic指主題Topic,包括項(xiàng)目ID和設(shè)備名稱;Soil_moisture_value指要發(fā)送的土壤濕度數(shù)據(jù)消息。

Tips:SIoT平臺(tái)上同時(shí)用Topic表示了項(xiàng)目ID和設(shè)備名稱,因此Topic中需要有“/”符號(hào)將兩者分開(kāi),否則物聯(lián)網(wǎng)平臺(tái)看不到項(xiàng)目。

(3)subscribe()函數(shù)訂閱物聯(lián)網(wǎng)平臺(tái)消息

在連接上SIoT物聯(lián)網(wǎng)平臺(tái)后,通過(guò)SIoT庫(kù)的subscribe()函數(shù)可以訂閱平臺(tái)發(fā)送來(lái)的消息,使用時(shí)需要先后指定發(fā)送的主題Topic(目的地)以及接收到平臺(tái)消息后所要執(zhí)行的操作。

IOT_pubTopic = '智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)/Soil_moisture_value' # 濕度topic,“項(xiàng)目名稱/設(shè)備名稱”

def sub_relay(client, userdata, msg):

topic = msg.topic

payload = msg.payload.decode()

'''定義接收到指令時(shí)的操作'''

print("\nTopic:" + topic + " Message:" + payload) # 打印接收到的信息

if payload == 'on': # 如果接收到“on”

img.config(w=240, h=320, image='img/澆水1.png')

relay.write_digital(1) # 繼電器輸出高電平

elif payload == 'off': # 如果接收到“off”

img.config(w=240, h=320, image='img/關(guān)水1.png')

relay.write_digital(0) # 繼電器輸出低電平

siot.subscribe(IOT_pubTopic, sub_relay) # 訂閱消息

其中,IOT_pubTopic指主題Topic,包括項(xiàng)目ID和設(shè)備名稱;sub_relay是定義的接收到平臺(tái)消息后所要執(zhí)行的功能函數(shù);msg.topic指的是消息中的Topic主題;msg.payload指的是消息的內(nèi)容;decode()是將消息內(nèi)容轉(zhuǎn)換為字符串方便后續(xù)條件判斷。

動(dòng)手實(shí)踐

任務(wù)描述1:發(fā)送濕度數(shù)據(jù)至SIoT物聯(lián)網(wǎng)平臺(tái)

啟動(dòng)SIoT物聯(lián)網(wǎng)系統(tǒng),通過(guò)外接土壤濕度傳感器檢測(cè)濕度值后,將數(shù)據(jù)顯示在屏幕上的同時(shí)也發(fā)送至SIoT物聯(lián)網(wǎng)平臺(tái)并在平臺(tái)網(wǎng)頁(yè)端查看。

1、硬件搭建

STEP1:通過(guò)USB連接線將行空板連接到計(jì)算機(jī)

STEP2:將土壤濕度傳感器接入行空板的P21引腳

pYYBAGKz272AIUahAAAicM-7Ogo230.jpg

STEP3:將土壤濕度傳感器插入花盆中

poYBAGKz272AKfwJAAAbW_A0de0902.jpg

STEP4:啟動(dòng)SIoT服務(wù)

按下HOME鍵進(jìn)入菜單,單擊“應(yīng)用開(kāi)關(guān)”,找到SIoT應(yīng)用后點(diǎn)擊啟用,如下圖所示。

pYYBAGKz272Ad7wZAABkKA1Zmg8215.jpg

STEP5:查看ip并記錄

按下HOME鍵進(jìn)入菜單,單擊“查看網(wǎng)絡(luò)信息”,找到SIoT應(yīng)用后點(diǎn)擊啟用,如下圖所示。

Tips:“10.1.2.3”為板子通過(guò)USB線連接電腦后的固定IP地址。這里我們將它記錄下來(lái),后續(xù)有用。

poYBAGKz276AOJ2XAABcNiW1rNk388.jpg

2、程序編寫

STEP1:創(chuàng)建與保存項(xiàng)目文件

啟動(dòng)Mind+,另存項(xiàng)目并命名為“009、智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)”。

STEP2:創(chuàng)建與保存Python文件

創(chuàng)建一個(gè)Python程序文件“main1.py”,雙擊打開(kāi)。

STEP3:導(dǎo)入圖片文件夾

在項(xiàng)目文件夾中導(dǎo)入背景圖文件夾。(圖片文件夾與程序文件同在項(xiàng)目文件夾中,下載鏈接見(jiàn)附錄1)

STEP4:程序編寫

(1) 導(dǎo)入所需功能庫(kù)

在這個(gè)任務(wù)中,我們需要使用Pinpong庫(kù)來(lái)使土壤濕度傳感器讀取數(shù)值并顯示在屏幕上,因此,我們需要導(dǎo)入Pinpong庫(kù)和unihiker庫(kù)中的GUI模塊,同時(shí),為了能將數(shù)據(jù)實(shí)時(shí)發(fā)送至SIoT物聯(lián)網(wǎng)平臺(tái),我們還需導(dǎo)入SIoT庫(kù)。

from unihiker import GUI # 導(dǎo)入unihiker庫(kù)GUI模塊from pinpong.board import Board, Pin # 導(dǎo)入pinpong庫(kù)下的Board, Pin模塊import time # 導(dǎo)入time庫(kù)import siot # 導(dǎo)入SIoT庫(kù)

(2) 實(shí)例化GUI類并初始化板子和引腳

之后我們創(chuàng)建gui對(duì)象并初始化板子和引腳以便后續(xù)能使用屏幕功能和控制傳感器工作。

gui = GUI() # 實(shí)例化gui對(duì)象 Board().begin() # 初始化行空板adc0 = Pin(Pin.P21, Pin.ANALOG) # 初始化21引腳為模擬輸入模式

(3) 設(shè)置參數(shù)并連接SIoT平臺(tái)

接下來(lái),我們將創(chuàng)建與SIoT物聯(lián)網(wǎng)平臺(tái)的連接,在這之前,我們先設(shè)定好連接時(shí)所需要的參數(shù),包括ip地址,CLIENT_ID,用戶名,密碼以及topic,之后進(jìn)行連接并保持連接狀態(tài)。

Tips:這里的IP地址為之前記錄的“10.1.2.3”。

SERVER = "10.1.2.3" # MQTT服務(wù)器IP,輸入個(gè)人實(shí)際Ip CLIENT_ID = "" # 在SIoT上,CLIENT_ID可以留空IOT_UserName = 'siot' # 用戶名IOT_PassWord = 'dfrobot' # 密碼IOT_pubTopic = '智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)/Soil_moisture_value' # 濕度topic,“項(xiàng)目名稱/設(shè)備名稱” siot.init(CLIENT_ID, SERVER, user=IOT_UserName,password=IOT_PassWord) # 初始化,確定輸入的用戶名和密碼正確siot.connect() # 連接SIoT物聯(lián)網(wǎng)平臺(tái)siot.loop() # 循環(huán)

(4) 顯示背景圖、填充矩形和初始文字

緊接著,我們?cè)谛锌瞻宓钠聊簧巷@示一張背景圖,并添加填充矩形和初始文字,以便后續(xù)直接在此更新數(shù)據(jù)顯示。

# 顯示背景圖片img = gui.draw_image(w=240, h=320, image='img/關(guān)水1.png') # 繪制填充矩形并在矩形框內(nèi)顯示文字gui.fill_rect(x=65, y=35, w=70, h=30, color="white") # 繪制矩形“濕度值”gui.fill_rect(x=148, y=35, w=55, h=30, color="white") # 繪制矩形以顯示濕度值數(shù)據(jù) text_1 = gui.draw_text(x=68, y=36, color="red", text='濕度值:') # 顯示"濕度值:"text_value = gui.draw_text(x=155, y=36, color="red", text="") # 顯示濕度值數(shù)據(jù)

(5) 檢測(cè)土壤濕度并將數(shù)據(jù)顯示在屏幕及發(fā)送到SIoT物聯(lián)網(wǎng)平臺(tái)

最后,我們?cè)O(shè)置通過(guò)傳感器來(lái)讀取檢測(cè)數(shù)據(jù),將濕度值發(fā)送到物聯(lián)網(wǎng)平臺(tái)的同時(shí)也顯示在屏幕上,而為了使得上述操作能每隔一秒不停地執(zhí)行,這里,我們使用while語(yǔ)句。

while True: # 循環(huán) Soil_moisture_value = adc0.read_analog() # 讀取模擬值 print(Soil_moisture_value) # 打印顯示濕度值 siot.publish(IOT_pubTopic, Soil_moisture_value) # 發(fā)布信息至物聯(lián)網(wǎng)平臺(tái) text_value.config(text=Soil_moisture_value) # 更新濕度值 time.sleep(1) # delay1秒

Tips:完整示例程序如下:

from unihiker import GUI # 導(dǎo)入unihiker庫(kù)GUI模塊from pinpong.board import Board, Pin # 導(dǎo)入pinpong庫(kù)下的Board, Pin模塊import time # 導(dǎo)入time庫(kù)import siot # 導(dǎo)入SIoT庫(kù) gui = GUI() # 實(shí)例化gui對(duì)象 Board().begin() # 初始化行空板adc0 = Pin(Pin.P21, Pin.ANALOG) # 初始化21引腳為模擬輸入模式 SERVER = "10.1.2.3" # MQTT服務(wù)器IP,輸入個(gè)人實(shí)際Ip CLIENT_ID = "" # 在SIoT上,CLIENT_ID可以留空IOT_UserName = 'siot' # 用戶名IOT_PassWord = 'dfrobot' # 密碼IOT_pubTopic = '智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)/Soil_moisture_value' # 濕度topic,“項(xiàng)目名稱/設(shè)備名稱” siot.init(CLIENT_ID, SERVER, user=IOT_UserName,password=IOT_PassWord) # 初始化,確定輸入的用戶名和密碼正確siot.connect() # 連接SIoT物聯(lián)網(wǎng)平臺(tái)siot.loop() # 循環(huán) # 顯示背景圖片img = gui.draw_image(w=240, h=320, image='img/關(guān)水1.png') # 繪制填充矩形并在矩形框內(nèi)顯示文字gui.fill_rect(x=65, y=35, w=70, h=30, color="white") # 繪制矩形“濕度值”gui.fill_rect(x=148, y=35, w=55, h=30, color="white") # 繪制矩形以顯示濕度值數(shù)據(jù) text_1 = gui.draw_text(x=68, y=36, color="red", text='濕度值:') # 顯示"濕度值:"text_value = gui.draw_text(x=155, y=36, color="red", text="") # 顯示濕度值數(shù)據(jù) while True: # 循環(huán) Soil_moisture_value = adc0.read_analog() # 讀取模擬值 print(Soil_moisture_value) # 打印顯示濕度值 siot.publish(IOT_pubTopic, Soil_moisture_value) # 發(fā)布信息至物聯(lián)網(wǎng)平臺(tái) text_value.config(text=Soil_moisture_value) # 更新濕度值 time.sleep(1) # delay1秒

3、程序運(yùn)行

STEP1:遠(yuǎn)程連接行空板,運(yùn)行程序并觀察效果

觀察行空板,可以看到在智慧農(nóng)業(yè)的背景圖上,每隔一秒顯示著檢測(cè)到的土壤濕度值。

pYYBAGKz276AZX60AACiCzAfvHg284.png

STEP2:平臺(tái)網(wǎng)頁(yè)端查看消息

(1)打開(kāi)瀏覽器,輸入“10.1.2.3”后回車,進(jìn)入行空板的網(wǎng)頁(yè)菜單,找到應(yīng)用開(kāi)關(guān)下的SIoT服務(wù),點(diǎn)擊“打開(kāi)頁(yè)面”。

poYBAGKz276ADYz4AABPBumLAbM709.jpg

(2)輸入默認(rèn)的賬號(hào)“siot”,密碼“dfrobot”,點(diǎn)擊登錄

pYYBAGKz27-ASkajAAAZGX6rmDo194.jpgpoYBAGKz27-AZ60sAAAZKgMo3Us500.jpg

(3)點(diǎn)擊“智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)”項(xiàng)目下的“查看設(shè)備列表”

pYYBAGKz27-ALOLNAAAbIdXI0ns075.jpg

可以看到“項(xiàng)目ID”、“名稱”分別對(duì)應(yīng)為程序中“IOT_pubTopic”的信息

poYBAGKz27-AXPaCAAAZuvNa3h0081.jpg

(4)點(diǎn)擊“查看消息”

pYYBAGKz27-ARrtFAAAZXE65uBE181.jpg

隨后我們就可以查看到“智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)/Soil_moisture_value”這個(gè)Topic的MQTT消息記錄啦,并伴有具體的消息內(nèi)容及發(fā)送時(shí)間,這就是我們檢測(cè)到的該時(shí)刻的土壤濕度值,如下圖。

poYBAGKz27-AcVGUAAAk1rtONp0523.jpg

(5)點(diǎn)擊“自動(dòng)刷新消息”

pYYBAGKz27-AWQTsAAAeEOxdo6M874.jpg

通過(guò)刷新消息,我們發(fā)現(xiàn)土壤濕度數(shù)據(jù)每隔一秒進(jìn)行了更新,如下圖,

poYBAGKz28CAZWFTAABYD3OZGI0800.jpg

(6)點(diǎn)擊“隱藏/顯示圖標(biāo)”

點(diǎn)擊后,我們可以發(fā)現(xiàn)數(shù)據(jù)以圖表的形式呈現(xiàn)了出來(lái),如下圖。

pYYBAGKz28CANjBBAABAk3zjMWw815.jpg

(7)點(diǎn)擊“導(dǎo)出查詢結(jié)果”

這里我們可以將數(shù)據(jù)以表格的形式下載下來(lái)以便后續(xù)作進(jìn)一步分析。

poYBAGKz28CAQXsdAAAvFEFPWHI138.jpg

任務(wù)描述2:平臺(tái)網(wǎng)頁(yè)端控制澆水

在上一任務(wù)中,我們實(shí)現(xiàn)了將土壤濕度傳感器檢測(cè)到的數(shù)據(jù)上傳到SIoT物聯(lián)網(wǎng)平臺(tái),并從平臺(tái)的網(wǎng)頁(yè)端實(shí)時(shí)查看濕度值,接下來(lái),我們給板子添加訂閱平臺(tái)消息的功能,使得我們能夠在土壤較干燥的時(shí)候通過(guò)SIoT物聯(lián)網(wǎng)平臺(tái)的網(wǎng)頁(yè)端來(lái)及時(shí)控制澆水。

1、硬件搭建

STEP1:將繼電器接入行空板的P23引腳

pYYBAGKz28CAaRjoAAA84ZZKeVg667.jpg

STEP2:利用螺絲刀將水泵正負(fù)線與轉(zhuǎn)接頭連接起來(lái),具體步驟同上節(jié)課。

poYBAGKz28CAHcEgAAAaHpddjSw287.jpg

STEP3:利用繼電器將12V電源開(kāi)關(guān)與水泵的轉(zhuǎn)接頭連接起來(lái)

pYYBAGKz28CAJi2mAAAsmk0O7Xk902.jpg

STEP4:將繼電器開(kāi)關(guān)撥至NC端

poYBAGKz28GAT1XoAAAxKj_zTs4038.png

STEP5:將水泵固定在滿水的燒杯中

pYYBAGKz28GAIuJ9AAB_FoUDTOw655.png

STEP6:將水管插入花盆中

poYBAGKz28GAb2iQAAAdIPMyAvc464.jpg

2、程序編寫

STEP1:創(chuàng)建與保存項(xiàng)目文件

新建一個(gè)Python程序文件“main2.py”,雙擊打開(kāi)。

Step2:程序編寫

(1)初始化引腳

這里,由于我們將使用繼電器控制水泵進(jìn)行澆水,因此我們需要補(bǔ)充對(duì)繼電器引腳的初始化操作,設(shè)置其23號(hào)引腳為數(shù)字輸出模式。

relay = Pin(Pin.P23, Pin.OUT) # 初始化23引腳為數(shù)字輸出模式

(2)定義接收到平臺(tái)消息后的操作

由于后續(xù)我們將接收平臺(tái)發(fā)送的消息,當(dāng)消息為“on”時(shí),控制繼電器輸出高電平來(lái)澆水,當(dāng)消息為“off”時(shí),控制繼電器輸出低電平停止?jié)菜?。因此在這里,我們補(bǔ)充定義一個(gè)回調(diào)函數(shù),來(lái)表示接收到平臺(tái)消息后需執(zhí)行的操作,以便在后續(xù)調(diào)用。

def sub_relay(client, userdata, msg): topic = msg.topic payload = msg.payload.decode() '''定義接收到指令時(shí)的操作''' print("\nTopic:" + topic + " Message:" + payload) # 打印接收到的信息 if payload == 'on': # 如果接收到“on” img.config(w=240, h=320, image='img/澆水1.png') relay.write_digital(1) # 繼電器高電平 elif payload == 'off': # 如果接收到“off” img.config(w=240, h=320, image='img/關(guān)水1.png') relay.write_digital(0) # 繼電器低電平

(3)訂閱平臺(tái)發(fā)送的消息

最后,為了能接收到物聯(lián)網(wǎng)平臺(tái)發(fā)送的消息,這里,我們?cè)谶B接上平臺(tái)后補(bǔ)充一下對(duì)消息的訂閱。

siot.subscribe(IOT_pubTopic, sub_relay) # 訂閱消息

Tips:完整示例程序如下:

from unihiker import GUI # 導(dǎo)入unihiker庫(kù)GUI模塊from pinpong.board import Board, Pin # 導(dǎo)入pinpong庫(kù)下的Board, Pin模塊import time # 導(dǎo)入time庫(kù)import siot # 導(dǎo)入SIoT庫(kù) gui = GUI() # 實(shí)例化gui對(duì)象 Board().begin() # 初始化行空板adc0 = Pin(Pin.P21, Pin.ANALOG) # 初始化21引腳為模擬輸入模式relay = Pin(Pin.P23, Pin.OUT) # 初始化23引腳為數(shù)字輸出模式 SERVER = "10.1.2.3" # MQTT服務(wù)器IP,輸入個(gè)人實(shí)際IP CLIENT_ID = "" # 在SIoT上,CLIENT_ID可以留空IOT_UserName = 'siot' # 用戶名IOT_PassWord = 'dfrobot' # 密碼IOT_pubTopic = '智慧農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)/Soil_moisture_value' # 濕度topic,“項(xiàng)目名稱/設(shè)備名稱” def sub_relay(client, userdata, msg): topic = msg.topic payload = msg.payload.decode() '''定義接收到指令時(shí)的操作''' print("\nTopic:" + topic + " Message:" + payload) # 打印接收到的信息 if payload == 'on': # 如果接收到“on” img.config(w=240, h=320, image='img/澆水1.png') relay.write_digital(1) # 繼電器輸出高電平 elif payload == 'off': # 如果接收到“off” img.config(w=240, h=320, image='img/關(guān)水1.png') relay.write_digital(0) # 繼電器輸出低電平 siot.init(CLIENT_ID, SERVER, user=IOT_UserName,password=IOT_PassWord) # 初始化,確定輸入的用戶名和密碼正確siot.connect() # 連接SIoT物聯(lián)網(wǎng)平臺(tái)siot.subscribe(IOT_pubTopic, sub_relay) # 訂閱消息siot.loop() # 循環(huán) # 顯示背景圖片img = gui.draw_image(w=240, h=320, image='img/關(guān)水1.png') # 繪制填充矩形并在矩形框內(nèi)顯示文字gui.fill_rect(x=65, y=35, w=70, h=30, color="white") # 繪制矩形“濕度值”gui.fill_rect(x=148, y=35, w=55, h=30, color="white") # 繪制矩形以顯示濕度值數(shù)據(jù) text_1 = gui.draw_text(x=68, y=36, color="red", text='濕度值:') # 繪制矩形“濕度值”text_value = gui.draw_text(x=155, y=36, color="red", text="") # 顯示濕度值數(shù)據(jù) while True: # 循環(huán) Soil_moisture_value = adc0.read_analog() # 讀取模擬值 print(Soil_moisture_value) # 打印顯示濕度值 siot.publish(IOT_pubTopic, Soil_moisture_value) # 發(fā)布信息至物聯(lián)網(wǎng)平臺(tái) text_value.config(text=Soil_moisture_value) # 更新濕度值 time.sleep(1) # delay1秒

3、程序運(yùn)行

STEP1:將12V電源開(kāi)關(guān)插上220V電源插座

STEP2:遠(yuǎn)程連接行空板,運(yùn)行程序并觀察效果

觀察行空板,可以發(fā)現(xiàn)濕度值依舊不停得更新顯示在屏幕上。

pYYBAGKz276AZX60AACiCzAfvHg284.png

STEP3:平臺(tái)發(fā)送消息

觀察檢測(cè)到的突然濕度數(shù)據(jù),當(dāng)濕度值過(guò)低時(shí),我們?cè)诰W(wǎng)頁(yè)端指定位置輸入“on”,并點(diǎn)擊發(fā)送,可以發(fā)現(xiàn)繼電器開(kāi)始工作,控制水泵不斷將燒杯中的水抽入花盆中。

pYYBAGKz27uAc3tTAAAvIpTXni8654.jpgpYYBAGKz28GAfhjIAAAgQPomPJw129.jpg

之后,當(dāng)水量合適后,我們?cè)僭谙⒖蛑休斎搿皁ff”,點(diǎn)擊發(fā)送后,可以發(fā)現(xiàn)水泵停了下來(lái)。

poYBAGKz28GASw4NAAAvN_tJVUc889.jpgpYYBAGKz28GAeIfAAAAhD1OCioE241.jpg

挑戰(zhàn)自我

想一想,在農(nóng)業(yè)系統(tǒng)中,還有哪些因素是會(huì)影響莊稼生長(zhǎng)的呢,我們有何方法來(lái)檢測(cè)它嗎,自己來(lái)研究一下吧,并結(jié)合物聯(lián)網(wǎng)平臺(tái),試著以遠(yuǎn)程的方式分析一下它對(duì)莊稼的影響規(guī)律吧!

更多行空板Python入門教程學(xué)習(xí)請(qǐng)關(guān)注“蘑菇云創(chuàng)造”公眾號(hào)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2945

    文章

    47826

    瀏覽量

    415261
  • 溫濕度傳感器
    +關(guān)注

    關(guān)注

    6

    文章

    655

    瀏覽量

    37627
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4877

    瀏覽量

    90076
  • 智慧農(nóng)業(yè)
    +關(guān)注

    關(guān)注

    4

    文章

    886

    瀏覽量

    21261
  • DFRobot
    +關(guān)注

    關(guān)注

    4

    文章

    1164

    瀏覽量

    12439
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    博聯(lián)智能榮膺第九聯(lián)網(wǎng)照明大會(huì)“智光杯”大獎(jiǎng)

    近日,第九聯(lián)網(wǎng)照明大會(huì)暨“智光杯”優(yōu)秀會(huì)員典禮在上海成功舉辦。博聯(lián)智能(BroadLink)榮膺大會(huì)頒發(fā)的 “智能跨界優(yōu)秀企業(yè)” 稱號(hào)。這一獎(jiǎng)項(xiàng),正是行業(yè)對(duì)其以開(kāi)放技術(shù)打破生態(tài)壁壘、持續(xù)推動(dòng)智能家居產(chǎn)業(yè)走向無(wú)界融合的實(shí)踐與實(shí)
    的頭像 發(fā)表于 01-26 16:00 ?567次閱讀

    #農(nóng)業(yè)聯(lián)網(wǎng) 智慧農(nóng)業(yè)氣象監(jiān)測(cè)系統(tǒng)

    農(nóng)業(yè)聯(lián)網(wǎng)
    juying
    發(fā)布于 :2025年12月25日 16:48:34

    智慧柑橘農(nóng)業(yè)聯(lián)網(wǎng)系統(tǒng)方案

    及時(shí)解決,積少成多,影響農(nóng)業(yè)生產(chǎn)效率。 某企業(yè)為全國(guó)各地農(nóng)業(yè)提供標(biāo)準(zhǔn)化、定制化的智慧農(nóng)業(yè)解決方案,為水果、蔬菜、花卉等不同行業(yè)提供可靠數(shù)字化支持。本次為某地柑橘產(chǎn)業(yè)園提供解決方案,通過(guò)
    的頭像 發(fā)表于 12-22 14:16 ?343次閱讀
    <b class='flag-5'>智慧</b>柑橘<b class='flag-5'>農(nóng)業(yè)</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>系統(tǒng)</b>方案

    學(xué)習(xí)聯(lián)網(wǎng)怎么入門?

    的關(guān)鍵步驟。學(xué)習(xí)聯(lián)網(wǎng)需要進(jìn)行實(shí)踐操作,通過(guò)實(shí)踐操作掌握聯(lián)網(wǎng)的相關(guān)技術(shù)和應(yīng)用??梢酝ㄟ^(guò)購(gòu)買聯(lián)網(wǎng)
    發(fā)表于 10-14 10:34

    智慧農(nóng)業(yè)節(jié)水灌溉聯(lián)網(wǎng)系統(tǒng)方案

    聯(lián)網(wǎng)系統(tǒng)成為必然趨勢(shì)。 通博聯(lián)以水利數(shù)采網(wǎng)關(guān)為核心,針對(duì)灌區(qū)場(chǎng)景打造智慧農(nóng)業(yè)節(jié)水灌溉
    的頭像 發(fā)表于 08-28 15:25 ?870次閱讀
    <b class='flag-5'>智慧</b><b class='flag-5'>農(nóng)業(yè)</b>節(jié)水灌溉<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>系統(tǒng)</b>方案

    智慧工廠技術(shù)入侵農(nóng)業(yè):大棚聯(lián)網(wǎng)系統(tǒng)如何實(shí)現(xiàn)工業(yè)級(jí)可控?

    在 “靠天吃飯” 的傳統(tǒng)農(nóng)業(yè)語(yǔ)境里, “精準(zhǔn)可控” 曾是天方夜譚 —— 土壤濕度憑經(jīng)驗(yàn)判斷、溫濕度靠人工調(diào)節(jié)、病蟲害發(fā)現(xiàn)即損失。但有人智能將 工業(yè)智慧工廠的核心技術(shù)邏輯 移植到農(nóng)業(yè)大棚,用
    的頭像 發(fā)表于 08-18 09:55 ?667次閱讀

    智慧養(yǎng)殖聯(lián)網(wǎng)系統(tǒng)的架構(gòu)及功能

    在當(dāng)今科技飛速發(fā)展的時(shí)代,智慧養(yǎng)殖作為農(nóng)業(yè)現(xiàn)代化的重要組成部分,正逐漸改變著傳統(tǒng)養(yǎng)殖模式。智慧養(yǎng)殖聯(lián)網(wǎng)
    的頭像 發(fā)表于 08-11 10:40 ?1015次閱讀
    <b class='flag-5'>智慧</b>養(yǎng)殖<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>系統(tǒng)</b>的架構(gòu)及功能

    邊緣計(jì)算網(wǎng)關(guān)賦能智慧農(nóng)業(yè)聯(lián)網(wǎng)邊緣計(jì)算的創(chuàng)新應(yīng)用與實(shí)踐

    監(jiān)測(cè)土壤濕度、光照強(qiáng)度、氣溫、作物生長(zhǎng)狀態(tài)等關(guān)鍵信息。藍(lán)蜂聯(lián)網(wǎng)邊緣計(jì)算網(wǎng)關(guān)就如同智慧農(nóng)業(yè)系統(tǒng)的“中樞神經(jīng)”,將這些分散的傳感器數(shù)據(jù)匯聚起來(lái)
    的頭像 發(fā)表于 07-22 10:21 ?560次閱讀
    邊緣計(jì)算網(wǎng)關(guān)賦能<b class='flag-5'>智慧</b><b class='flag-5'>農(nóng)業(yè)</b>:<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>邊緣計(jì)算的創(chuàng)新應(yīng)用與實(shí)踐

    智慧農(nóng)業(yè)聯(lián)網(wǎng)管理平臺(tái)解決方案

    。 智慧農(nóng)業(yè)應(yīng)運(yùn)而生,它依托聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算、人工智能等前沿技術(shù),對(duì)農(nóng)業(yè)生產(chǎn)的全流程進(jìn)行智能化、精準(zhǔn)化管控,徹底革新了傳統(tǒng)
    的頭像 發(fā)表于 07-21 16:35 ?589次閱讀
    <b class='flag-5'>智慧</b><b class='flag-5'>農(nóng)業(yè)</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>管理平臺(tái)解決方案

    智慧農(nóng)業(yè)聯(lián)網(wǎng)解決方案以及應(yīng)用場(chǎng)景

    隨著科技的不斷進(jìn)步與農(nóng)業(yè)現(xiàn)代化的深入發(fā)展,傳統(tǒng)農(nóng)業(yè)生產(chǎn)模式逐漸暴露出效率低、資源浪費(fèi)嚴(yán)重、環(huán)境可控性差等問(wèn)題。智慧農(nóng)業(yè)
    的頭像 發(fā)表于 06-27 11:23 ?675次閱讀

    聯(lián)網(wǎng)的應(yīng)用范圍有哪些?

    與及時(shí)維護(hù),提高醫(yī)院的運(yùn)營(yíng)效率。 農(nóng)業(yè)生產(chǎn):智慧農(nóng)業(yè)利用聯(lián)網(wǎng)實(shí)現(xiàn)精準(zhǔn)種植與養(yǎng)殖。在農(nóng)業(yè)種植中,
    發(fā)表于 06-16 16:01

    明晚七點(diǎn)!手把手教你做PC第九課:全功能TypeC驅(qū)動(dòng)框架適配

    《手把手教你做PC》系列直播再度開(kāi)播!《KaihongOS筆記本電腦開(kāi)發(fā)實(shí)戰(zhàn)第九課:全功能TypeC驅(qū)動(dòng)框架適配》將于5月21日19:00開(kāi)播↑掃碼入群,領(lǐng)課程講義資料包↑深開(kāi)鴻資深工程師親臨直播
    的頭像 發(fā)表于 05-20 08:07 ?589次閱讀
    明晚七點(diǎn)!手把手教你做PC<b class='flag-5'>第九課</b>:全功能TypeC驅(qū)動(dòng)框架適配

    KaihongOS筆記本電腦開(kāi)發(fā)實(shí)戰(zhàn)第九節(jié):全功能TypeC驅(qū)動(dòng)框架適配

    《手把手教你做PC》系列直播再度開(kāi)播 !《 KaihongOS筆記本電腦開(kāi)發(fā)實(shí)戰(zhàn)第九節(jié):全功能TypeC驅(qū)動(dòng)框架適配》將于5月21日19:00開(kāi)播 ↑掃碼入群,領(lǐng)課程講義資料包↑ 深開(kāi)鴻資深
    發(fā)表于 05-19 18:29

    明遠(yuǎn)智睿SSD2351開(kāi)發(fā):儀器儀表與智慧農(nóng)業(yè)的創(chuàng)新利器

    在儀器儀表和智慧農(nóng)業(yè)領(lǐng)域,對(duì)設(shè)備的精度、穩(wěn)定性和智能化程度有著較高的要求。明遠(yuǎn)智睿的SSD2351開(kāi)發(fā)以其獨(dú)特的優(yōu)勢(shì),成為這兩個(gè)領(lǐng)域的創(chuàng)新利器。 在儀器儀表方面,SSD2351開(kāi)發(fā)
    發(fā)表于 05-09 19:09

    智慧消防聯(lián)網(wǎng)平臺(tái)

    本人想建立一個(gè)聯(lián)網(wǎng)智慧消防平臺(tái),想找懂技術(shù)的有合伙意愿的共同投資開(kāi)發(fā),有感興趣的聯(lián)系我13633612945
    發(fā)表于 04-15 22:18