智能時代一夜間什么都能遠程了。創業者想著如何做智能產品,如何做遠程控制。DIY愛好者也想著如何自制各種奇妙的工具。這里和大家一起學習制作一款廉價的智能溫濕度計。說它廉價是因為共計花費不過40元,說它智能是因為你可以通過手機微信時時知道該設備所在位置的溫濕度。
一、申請微信推送服務
能否實現微信推送服務的平臺有很多,這里我就不一一解釋了。我選用了「Server醬」,英文名「ServerChan」。你完全可以選用你認為比較好用的平臺。「Server醬」的申請方法:
打開該網址http://sc點ftqq點com/3.version,開通并使用:
1. 登入:用GitHub賬號登入網站,點擊進入“發送消息”頁面,就能獲得一個SCKEY。具體見:http://sc點ftqq點com/?c=code
2. 綁定:點擊“微信推送”頁面,掃碼關注同時即可完成綁定
3. 發消息:往https://sc點ftqq點com/SCKEY.send發GET請求,就可以在微信里收到消息啦
二、讓我們開始DIY溫濕度計
1、選擇合適的主控板
更喜歡python編程的我,這里選用支持micropython的TPYBoardv202(esp8266)開發板。該開發板能夠直接用python進行編程,功能還是比較強大的,甚至可用來作web服務器。這里我們主要是用其進行溫濕度傳感器的控制及網絡請求。
2、DHT11溫濕度傳感器
DHT11是常用的溫濕度傳感器,網上可以很輕易就買到。簡單的講,就是可以用這個傳感器獲取的當前環境的溫度和濕度。
該傳感器使用非常簡單,有的有3個引腳,有的有4個引腳。我們在使用時,只用三個,分別為VCC(電源腳,接5V)、DATA(數據引腳)、GND(接地)。
3、正確的連線方法
TPYBoardv202與DHT11的具體接線對應及實物圖
TPYBoard v202 | DHT11傳感器 | +5v | vcc | G5 | DATA | GND | GND |
三、少不了的編程
TPYBoardv202主要有兩個文件來控制,一個是boot,py,一個是main.py。我們只需要修改這兩個文件就可以完成程序的編寫。如果你對如何使用TPYBoardv202還不清楚,可以參照
http://docs點tpyboard點com/zh/latest/tpyboard/tutorial/v202/。
1、編寫boot腳本
- import network
- import utime
-
- pdcn = network.WLAN(network.STA_IF)
- pdcn.active(True)
- pdcn.connect('wifi賬號', 'wifi密碼')
- utime.sleep(5)
- if pdcn.isconnected():
- print("WiFi is connected %s."%pdcn.ifconfig()[0])
- else:
- pdcn.active(False)
- utime.sleep(5)
- print("WiFi cannot connect.")
復制代碼
2、編寫main.py腳本
- # coding=utf-8
- import urequests
- import dht
- import machine
- from machine import Pin
- import time
-
- class AlarmSystem:
- def __init__(self):
- self.d = dht.DHT11(machine.Pin(5))
-
- def dht11(self):
- try:
- self.d.measure()
- return 'Temp:'+str(self.d.temperature())+'°C---Hum:'+str(self.d.humidity())+'%'
-
- except:
- return '0'
-
- def push(self, result):
- title = "TPYBoardv202提示您:注意天氣變化保持健康心情"
- content = 'text='+title+'&'+'desp='+result
- url="https://sc.ftqq.com/SCU9545T6a65dcc064b04f78364fc3e6df6593c45951abe4d7219.send?%s" % content
- r = urequests.get(url)
- r.close()
- p2=Pin(2,Pin.OUT)
- a = AlarmSystem()
- def SendData():
- p2.value(not p2.value())
- data_= a.dht11()
- if(data_!='0'):
- print(data_)
- a.push(data_)
- else:
- print('GET Data Fail')
- if __name__ == '__main__':
-
- while True:
- SendData()
- time.sleep(300)
復制代碼
四、成果分享
到這里,工作完成,方糖就會給你,你就會看到顯示的溫濕度了。
|