第14課 智能物聯(lián)系統(tǒng)的軟件設(shè)計 課件 2025-2026學(xué)年八年級下冊信息技術(shù)浙教版_第1頁
第14課 智能物聯(lián)系統(tǒng)的軟件設(shè)計 課件 2025-2026學(xué)年八年級下冊信息技術(shù)浙教版_第2頁
第14課 智能物聯(lián)系統(tǒng)的軟件設(shè)計 課件 2025-2026學(xué)年八年級下冊信息技術(shù)浙教版_第3頁
第14課 智能物聯(lián)系統(tǒng)的軟件設(shè)計 課件 2025-2026學(xué)年八年級下冊信息技術(shù)浙教版_第4頁
第14課 智能物聯(lián)系統(tǒng)的軟件設(shè)計 課件 2025-2026學(xué)年八年級下冊信息技術(shù)浙教版_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第14課

智能物聯(lián)系統(tǒng)的軟件設(shè)計年級:八年級學(xué)科:初中信息科技(浙教版)采集數(shù)據(jù)發(fā)布數(shù)據(jù)訂閱/存儲數(shù)據(jù)智能校園數(shù)字氣象站問題思考:硬件搭建好后就能直接獲取氣象數(shù)據(jù)嗎?軟件編寫發(fā)布訂閱獲取呈現(xiàn)數(shù)據(jù)知識回顧中介Wifi無線路由器

任務(wù)要求:通過編程實現(xiàn)氣象數(shù)據(jù)的實時采集,每隔一段時間獲取新數(shù)據(jù),并在屏幕上顯示。日積月累Python:豐富的類庫編程的過程:

①導(dǎo)入相應(yīng)庫

②調(diào)用相應(yīng)的函數(shù)編程軟件:參考函數(shù):溫度:aht20.read_temp()氣壓:bme.pressure()/1000風(fēng)速:WindSpeed(pin16,factor=4.5)風(fēng)向:WindDirection(pin14)屏幕顯示:oled.print(x,y,data,num)發(fā)布數(shù)據(jù)到主題:mqtt.publish(topic,msg)訂閱主題:mqtt.subscribe(topic,event)任務(wù)一:采集數(shù)據(jù)任務(wù)一:采集數(shù)據(jù)①明確算法01Wifi連接MQTT連接采集數(shù)據(jù)OLED顯示數(shù)據(jù)每隔一段時間發(fā)布數(shù)據(jù)到對應(yīng)主題

任務(wù)要求:將采集到的氣象數(shù)據(jù)發(fā)布到物聯(lián)中臺。②創(chuàng)建項目主題1234主題名稱建議首字母大寫任務(wù)二:發(fā)布數(shù)據(jù)01Wifi連接MQTT連接采集數(shù)據(jù)OLED顯示數(shù)據(jù)每隔一段時間發(fā)布數(shù)據(jù)到不同主題

參考程序fromnpythonimport*whileTrue:

#采集氣象數(shù)據(jù),并賦值給相應(yīng)變量

wendu=aht20.read_temp()

qiya=bme.pressure()/1000

#oled屏幕顯示

oled.print(4,1,'校園數(shù)字氣象站',1)

oled.print(5,2,"溫度:"+str(wendu),1)

oled.print(5,3,"氣壓:"+str(qiya),1)time.sleep(5)

mqtt.publish(“WenDu”,str(wendu))ipserver="xxkj"#無線名稱ippass="123456789"#無線密碼ip=wifi.connect(ipserver,ippass)

#網(wǎng)絡(luò)連接server="57"

#MQTT服務(wù)器地址port=1883

#MQTT服務(wù)器端口號userId="4052"

#用戶IDprojectId="Du0oKLv6fUBRisOHxBWeAJkJ7GNZfvMf"#項目IDmqtt.config(server,port,projectId=projectId,userId=userId,keepalive=1000)

#配置MQTTmqtt.connect()

#連接MQTT服務(wù)器mqtt.publish(“QiYa”,str(qiya))③編寫程序任務(wù)二:發(fā)布數(shù)據(jù)01任務(wù)二:發(fā)布數(shù)據(jù)MQTT連接訂閱主題獲取該主題下的數(shù)據(jù)存儲在數(shù)據(jù)庫文件中importmqttc,time,sqlite3

#導(dǎo)入MQTT庫文件、time時間模塊、sqlite3數(shù)據(jù)庫模塊srv="57"

#MQTT服務(wù)器地址port=1883

#MQTT服務(wù)器端口號projectId='e0AUj5N84pCm9zI8ujiHrVWdNrGJfzm7'

#定義項目IDuserId='4089'

#用戶IDmqttc.config(srv,port,projectId=projectId,userId=userId)

#mqtt連接參數(shù)配置mqttc.connect()

#mqtt連接sub_topic='WenDu'

#訂閱的主題名稱#定義訂閱回調(diào)函數(shù)defsub_cb(topic,msg):data=msg.decode('utf-8')#將接收到的消息從字節(jié)類型轉(zhuǎn)換為字符串類型cmd=eval(data)#將字符串類型的數(shù)據(jù)轉(zhuǎn)換成字典類型print('訂閱結(jié)果返回:',topic,cmd['msg'])try:

#訂閱傳感器的數(shù)據(jù)保存到數(shù)據(jù)庫now=time.strftime('%Y-%m-%d%H:%M:%S')

#獲取當(dāng)前時間uid=cmd['userId']#提取消息中的用戶ID和數(shù)據(jù)值value=cmd['msg']

#準備插入數(shù)據(jù)庫的SQL語句sql=f"INSERTINTOweather(time,userid,topic,msg)VALUES('{now}','{uid}','{topic}','{value}')"conn=sqlite3.connect('database.db')#連接到SQLite數(shù)據(jù)庫conn.execute(sql)#執(zhí)行SQL語句mit()#提交事務(wù)#訂閱主題mqttc.subscribe(sub_topic,sub_cb)是否有新消息是只需訂閱一次,當(dāng)有新的消息時,訂閱者便會被通知。否任務(wù)三:訂閱主題存儲數(shù)據(jù)任務(wù)三:訂閱主題存儲數(shù)據(jù)折線圖更清晰呈現(xiàn)數(shù)據(jù)的變化趨勢,易于分析表格形式折線圖形式

任務(wù)要求:將獲取的某一天的溫度數(shù)據(jù),通過編程制作其折線圖,了解一天的趨勢走向。importsqlite3,datetime#導(dǎo)入sqlite數(shù)據(jù)庫模塊,datetime時間模塊importmatplotlib.pyplotasplt#導(dǎo)入matplotlib繪圖模塊#用matplotlib繪圖,配置相關(guān)參數(shù)plt.rcParams['font.sans-serif']=['SimHei']

#設(shè)置中文顯示plt.title('一天溫度趨勢圖')

#圖表標題plt.xlabel('時間',size=10)

#圖表x軸坐標標簽plt.ylabel('數(shù)值',size=10)

#圖表y軸坐標標簽conn=sqlite3.connect('database.db')

#連接數(shù)據(jù)庫#定義一個函數(shù),向圖表添加數(shù)據(jù)線defaddLine(plt,query):

dx=[]

#初始化兩個列表用于存儲時間和溫度值dy=[]forfieldsinquery:dx.append(str_to_time(fields[0]))

#將時間字符串轉(zhuǎn)換為datetime對象并添加到dx列表中dy.append(float(fields[1]))

#將溫度值轉(zhuǎn)換為浮點數(shù)并添加到dy列表中plt.plot(dx,dy,'o:b',label='溫度',markersize=3)

#在圖表上繪制一條線,并添加圖例標簽query.close()

#關(guān)閉數(shù)據(jù)表conn.close()

#關(guān)閉數(shù)據(jù)庫plt.legend()

#顯示圖例plt.show()

#顯示圖表窗口1matplotlib為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論