這篇文章主要介紹“如何利用單片機快速實現(xiàn)家庭智能控制平臺”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“如何利用單片機快速實現(xiàn)家庭智能控制平臺”文章能幫助大家解決問題。
閩侯ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
0x01單片機實現(xiàn)web服務(wù)器
探討用單片機來實現(xiàn)web服務(wù)器的文章通過baidu也能找到幾篇,但比較詳實的實現(xiàn)方法并沒有找到,這里考慮有兩種思路可以完成,一種是有線的lan模塊,如w5500,這種模塊本身就帶有web服務(wù)的部分功能,使用起來比較簡單,但是只能基于lan進行訪問。另一種是通過stm32等單片機,配合網(wǎng)絡(luò)模塊來完成。當前我能想到的最簡單的方法就是用stm32+esp8266來實現(xiàn)。
基于第一種方法,我覺得受模塊性能影響比較大,受限于模塊,沒有開發(fā)感。于是考慮用第二種方法。這個方法里,有人用arduino來完成,這要基于c進行編程。另外,就是考慮用micropython,這樣直接可以用python來實現(xiàn)。這里依然使用tpyboard V202。
0x02模擬實現(xiàn)家庭智能家居控制平臺
因為沒有想好要做一個多么復(fù)雜的實驗,只是想能模擬一下效果,所有在整個的模塊過程中,我選用了tpyboard v202開發(fā)板做主控制板,用一個發(fā)光二極管來模擬一個臺燈(現(xiàn)實中,這里其實可以用一個繼電器來控制其它設(shè)備的通斷電),用一個直流小電機加迷你風扇葉表示模擬電風扇。整個實現(xiàn)還用到了一個三極管(S9014,NPN)來控制直流電機。
0x03硬件的搭建與連接
1、發(fā)光二極管的使用
發(fā)光二極管使用比較簡單,直接看它的兩條“腿”,長的那個是正極,反之是負極。




0x04利用micropython實現(xiàn)web服務(wù)器
首先,編輯一個main.py文件。v202 開機自啟動main.py 文件
try:
import usocket as socket
except:
import socket
import network
from machine import UART
from machine import Pin
led_flag=Pin(2, Pin.OUT)#esp8266模塊上的小燈 高電平:滅 低電平:亮
led = Pin(4, Pin.OUT)#發(fā)光二極管的控制引腳
motor = Pin(5, Pin.OUT)#直流電機的控制引腳
#初始化
led.low()
motor.low()
led_flag.high()
def do_connect(ssid,pwd):
sta_if = network.WLAN(network.STA_IF)#STA 模式
sta_if.active(False)
if not sta_if.isconnected():#判斷是否連接
sta_if.active(True)
sta_if.connect(ssid,pwd)#ssid:WIFI名稱 pwd:WIFI 密碼
while not sta_if.isconnected():
pass
if sta_if.isconnected():
return sta_if.ifconfig()[0]
def main(ip_,dev_data,login_data,name,pwd):
s = socket.socket()
ai = socket.getaddrinfo(ip_, 80)
addr = ai[0][-1]
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(addr)
s.listen(5)
led_flag.low()
#s_data=login_data
while True:
res = s.accept()
client_s = res[0]
client_addr = res[1]
led_flag.high()
req =client_s.readline()
while True:
h = client_s.readline()
if h == b"" or h == b"\r\n":
break
#print(h)
req+=(h.decode('utf-8').lower())
print("Request:")
req=req.decode('utf-8').lower().split('\r\n')
#http header 解析
req_data=req[0].lstrip().rstrip().replace(' ','')
print(req_data)
if req_data.find('favicon.ico')>-1:
client_s.close()
continue
else:
if len(req_data)<=12:
#說明是第一次訪問,輸入login.html
s_data=login_data
else:
req_data=req_data.replace('get/?','').replace('http/1.1','')
_name=req_data.find('name')
_pwd=req_data.find('pwd')
if _name>-1 and _pwd>-1:
#判斷是否是用戶登錄
if req_data.find(name)>-1 and req_data.find(pwd)>-1:
s_data=dev_data
print('Login Success!')
else:
f=open('fail.html','r')
s_data=f.read()
f.close()
print('Login Fail!')
else:
#判斷是否是控制LED
_index=req_data.find('led=')
if _index>-1:
s_data=dev_data
led_val=req_data[_index+4:_index+6].lstrip().rstrip()
print('led:',led_val)
if led_val=='on':
led.value(1)
else:
led.value(0)
#判斷是否是控制電機
_index=req_data.find('motor=')
if _index>-1:
s_data=dev_data
motor_val=req_data[_index+6:_index+8].lstrip().rstrip()
print('motor_val:',motor_val)
if motor_val=='on':
motor.value(1)
else:
motor.value(0)
print('-----------')
client_s.send(s_data)
client_s.close()
led_flag.low()
f=open('device.html','r')
dev_html=f.read()
f.close()
f=open('login.html','r')
login_html=f.read()
f.close()
f=open('info.txt','r')
info=f.read()
f.close()
name=info.split(',')[0].lstrip().rstrip()
pwd=info.split(',')[1].lstrip().rstrip()
print('name:',name)
print('pwd:',pwd)
myip_=do_connect('essid','pwd')#家中網(wǎng)絡(luò)的WIFI名稱和密碼
print(myip_)
main(myip_,dev_html,login_html,name,pwd)login.html登錄頁面
<html>
<head>
<title>智能家庭網(wǎng)絡(luò)</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
h3
{
margin-top:4%;
margin-bottom:40px;
}
</style>
</head>
<body>
<center>
<h3>歡迎登錄智能家庭網(wǎng)絡(luò)平臺</h3>
<form action="/" method="get" accept-charset="utf-8">
<p>用戶名: <input type="text" name="name" /></p>
<p>密 碼: <input type="password" name="pwd" /></p>
<input type="Submit" value="登錄" />
</form>
</center>
</body>
</html>device.html控制頁面
<html>
<head>
<title>智能家庭網(wǎng)絡(luò)平臺</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
h3
{
margin-top:4%;
margin-bottom:40px;
}
</style>
</head>
<body>
<center>
<h3>歡迎使用智能家庭網(wǎng)絡(luò)-控制平臺</h3>
<form action="/" method="get" accept-charset="utf-8">
<p>燈光: <input type="Submit" value="ON" name="led" /> <input type="Submit" value="OFF" name="led" /></p>
<p>風扇: <input type="Submit" value="ON" name="motor" /> <input type="Submit" value="OFF" name="motor" /></p>
</form>
</center>
</body>
</html>fail.html登錄錯誤頁面(就是把login.html 稍做了一下改動)
<html>
<head>
<title>智能家庭網(wǎng)絡(luò)</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
h3
{
margin-top:4%;
margin-bottom:40px;
}
</style>
</head>
<body>
<center>
<h3>歡迎登錄智能家庭網(wǎng)絡(luò)平臺</h3>
<form action="/" method="get" accept-charset="utf-8">
<p >用戶名或密碼錯誤!</p>
<p>用戶名: <input type="text" name="name" /></p>
<p>密 碼: <input type="password" name="pwd" /></p>
<input type="Submit" value="登錄" />
</form>
</center>
</body>
</html>info.txt 這里是用文件存放的用戶名和密碼(英文逗號分隔),前面是用戶名,后面是密碼。
這里的用戶名和密碼是用來登錄我們 智能家居控制平臺的。
admin,123456
0x05程序下載測試
使用MicroPython File Uploader 工具,將源代碼下載到v202中。
工具下載地址: http://tpyboard.com/download/tool/170.html
1、 使用usb數(shù)據(jù)線將v202接入到電腦,打開設(shè)備管理器,查看加載的端口。我的是COM44
※如果驅(qū)動安裝失敗,可以下載CH340的驅(qū)動,手動安裝。
CH340驅(qū)動下載地址:http://tpyboard.com/download/drive/163.html

2、 打開MicroPython File Uploader 選擇端口,點擊[Open]。








關(guān)于“如何利用單片機快速實現(xiàn)家庭智能控制平臺”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。
分享文章:如何利用單片機快速實現(xiàn)家庭智能控制平臺
網(wǎng)頁地址:http://chinadenli.net/article44/jhpshe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、全網(wǎng)營銷推廣、品牌網(wǎng)站制作、網(wǎng)站收錄、用戶體驗、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)