智能時代一夜間什么都能遠(yuǎn)程了。創(chuàng)業(yè)者想著如何做智能產(chǎn)品,如何做遠(yuǎn)程控制。DIY愛好者也想著如何自制各種奇妙的工具。這里和大家一起學(xué)習(xí)制作一款廉價的智能溫濕度計。說它廉價是因為共計花費不過40元,說它智能是因為你可以通過手機(jī)微信時時知道該設(shè)備所在位置的溫濕度。
一、申請微信推送服務(wù)
能否實現(xiàn)微信推送服務(wù)的平臺有很多,這里我就不一一解釋了。我選用了「Server醬」,英文名「ServerChan」。你完全可以選用你認(rèn)為比較好用的平臺!窼erver醬」的申請方法:
打開該網(wǎng)址<http://sc.ftqq點com/3.version>,開通并使用:
1.登入:用GitHub賬號登錄網(wǎng)站 <https://sc.ftqq點com/?c=github&a=login>,點擊進(jìn)入“發(fā)送消息”頁面,就能獲得一個SCKEY <https://sc.ftqq點com/?c=code>。具體見:<http://sc.ftqq點com/?c=code>
2.綁定:點擊“微信推送”頁面,掃碼關(guān)注同時即可完成綁定
3.發(fā)消息:往 <https://sc.ftqq點com/SCKEY.send> 發(fā)GET請求,就可以在微信里收到消息啦
二、我們開始DIY溫濕度計
1、選擇合適的主控板
更喜歡python編程的我,這里選用支持micropython的TPYBoard v202(esp8266)開發(fā)板。該開發(fā)板能夠直接用python進(jìn)行編程,功能還是比較強(qiáng)大的,甚至可用來作web服務(wù)器。這里我們主要是用其進(jìn)行溫濕度傳感器的控制及網(wǎng)絡(luò)請求。

2、DHT11溫濕度傳感器
DHT11是常用的溫濕度傳感器,網(wǎng)上可以很輕易就買到。簡單的講,就是可以用這個傳感器獲取的當(dāng)前環(huán)境的溫度和濕度。

該傳感器使用非常簡單,有的有3個引腳,有的有4個引腳。我們在使用時,只用三個,分別為VCC(電源腳,接5V)、DATA(數(shù)據(jù)引腳)、GND(接地)。
3、正確的連線方法
TPYBoard v202與DHT11的具體接線對應(yīng)及實物圖

三、少不了的編程
TPYBoard v202主要有兩個文件來控制,一個是boot,py,一個是main.py。我們只需要修改這兩個文件就可以完成程序的編寫。如果你對如何使用TPYBoard v202還不清楚,可以參照
<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/你的密鑰.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) |
四、 成果分享
到這里,工作完成,方糖就會給你,你就會看到顯示的溫濕度了。

|