1. 程式人生 > >帶以太網的MicroPython開發板:TPYBoardv201溫濕度上傳實例

帶以太網的MicroPython開發板:TPYBoardv201溫濕度上傳實例

延時 實例 brush 應用 不為 網絡 被占用 nbsp borde

  轉載請以鏈接形式註明文章來源,MicroPythonQQ交流群:157816561,公眾號:MicroPython玩家匯

  歷來關於溫濕度的檢測都是沒有間斷過的,這次我們繼續檢測溫濕度,同樣還是使用DHT11來檢測。但是這次檢測到的溫濕度不進行顯示,也不進行報警,這次要把檢測到的數據通過以太網上傳到服務器上去。

  先來說一下需要的器件:

  TPYBoard_V201開發板一塊;

  DHT11溫濕度模塊一個;

  面包板一個(可省略);

  杜邦線若幹;

  先來簡單介紹一下各個器件。

  TPYBoard_V201開發板

  TPYBoard_V201是以遵照MIT許可的MicroPython為基礎,由TurnipSmart公司制作的一款MicroPython開發板,它基於STM32F405單片機,通過USB接口進行數據傳輸。該開發板內置4個LED燈、板載V201網口功能,可在3.3V-10V之間的電壓正常工作。可以說這個開發板在網絡穩定方面是一霸也不為過,板上其他硬件資源也非常豐富,像單總線,i2c,spi,串口等接口也是應有盡有,這次我們就要用到串口和單總線的功能。

  DHT11

  DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器,它應用專用的數字模塊采集技術和溫濕度傳感技術,確保產品具有極高的可靠性和卓越的長期穩定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,並與一個高性能8位單片機相連接。

  上面介紹了所需器件,下面我們來說一下實驗所需的環境。這裏只需要能給開發板供電,以及可以支持有線網絡連接(可以給開發板接上網線)即可。

  下面實驗開始

  一.按照下表進行接線

DHT11

V201開發板

GND

GND

VCC

VIN

DATA

X8

  其次就是給開發板進行供電和插上網線,看到V201網口上的綠色指示燈亮起來,說明已經連接上網絡。

  二.配置V201網口

  這一步是為了設置V201網口模塊的目的地址,本地端口,波特率,數據位,校驗位等一系列信息。

  接著我們來說一下基本的邏輯流程:

  1.我們這次是為了把溫濕度數據上傳服務器,第一步肯定是現在開發板上獲取到溫濕度的數據,關於DHT11的使用,開發板這邊提供了非常詳細的使用方法和DHT11的庫,這裏就不做多余介紹啦。

  2.在我們成功獲取到溫濕度以後,把溫濕度數據進行分割處理,說白了就是把溫度和濕度分開。

  3.前面把要傳的數據都處理好了,接下來就是進行傳輸,在保證網絡通暢的前提下,設置串口6,也就是Y1和Y2,具體的波特率這個要參照你前面設置給V201網口的波特率來定。

  4.在這裏需要說一句的是,這個開發板在使用以太網功能的時候,Y1,Y2,Y3這三個引腳是被占用的,其中Y1和Y2是串口,執行通信功能。

  5.這裏需要介紹一下Y3,Y3是V201網口的設置引腳,當Y3不為低電平時,V201網口處於正常工作狀態,可以進行數據上傳,也可以利用設置軟件通過網絡進行配置。當Y3為低電平時,V201網口進入串口配置模式,可利用設置軟件通過串口進行配置,此時不能進行數據上傳。

  6.以上工作全部完成後,剩下的就是把配置好的數據,通過串口6發送出去。

  7.最後我們只需要監控數據是不是上傳正常就可以了。

  實物及數據圖

  下面是我做實驗的實物圖和數據監控截圖,我是在我的電腦上開了個模擬的端口,雖然low了點,但是效果一樣的。

技術分享

  實物圖

技術分享

  數據監控截圖

  源代碼

  下面是我做的源代碼,共享給大家。

  

import pyb
from pyb import UART
from pyb import Pin
from ubinascii import hexlify
from ubinascii import *
from DHT11 import DHT11#定義溫濕度傳感器的庫

ulan = UART(6, 115200)#定義串口,我的網口設置了115200的波特率
K=1
#*******************************主程序**********************************
print(‘while‘)
while (K>0):
    S=DHT11()#調用溫濕度傳感器的方法
    A=S.read_temps()#讀取溫濕度的值
    print(‘A:‘,A)
    print(‘A:‘,A[0:2])
    print(‘A:‘,A[3:5])#打印溫濕度的值
    ulan.write(‘temperature is:‘+A[0:2]+‘\r\n‘)#上傳溫度
    pyb.delay(2000)#做延時是為了讓給模擬服務器一個反應時間
    ulan.write(‘wet is:‘+A[3:5]+‘%‘+‘\r\n‘)#上傳濕度
    pyb.delay(12000)

  

帶以太網的MicroPython開發板:TPYBoardv201溫濕度上傳實例