[Micropython]TPYBoard v202 自制微信遠程智能溫溼度計

智能時代一夜間什麼都能遠程了。創業者想著如何做智能產品,如何做遠程控制。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溫溼度計

選擇合適的主控板

更喜歡python編程的我,這裡選用支持micropython的TPYBoard v202(esp8266)開發板。該開發板能夠直接用python進行編程,功能還是比較強大的,甚至可用來作web服務器。這裡我們主要是用其進行溫溼度傳感器的控制及網絡請求。

DHT11溫溼度傳感器

DHT11是常用的溫溼度傳感器,網上可以很輕易就買到。簡單的講,就是可以用這個傳感器獲取的當前環境的溫度和溼度。

該傳感器使用非常簡單,有的有3個引腳,有的有4個引腳。我們在使用時,只用三個,分別為VCC(電源腳,接5V)、DATA(數據引腳)、GND(接地)。

正確的連線方法

TPYBoard v202與DHT11的具體接線對應及實物圖

三、少不了的編程

TPYBoard v202主要有兩個文件來控制,一個是boot,py,一個是main.py。我們只需要修改這兩個文件就可以完成程序的編寫。如果你對如何使用TPYBoard v202還不清楚,可以參照此教程:
http://docs.tpyboard.com/zh/latest/tpyboard/tutorial/v202/start/。

編寫boot腳本

boot.py:

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.")

編寫main.py腳本

main.py:

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)


分享到:


相關文章: