一,前言
其實(shí)自己動手制作一個智能排插很容易,看見網(wǎng)上的教程有點(diǎn)亂,所以我決定自己寫一篇,只需要你懂一點(diǎn)編程知識,就可以制作自己專屬的智能排插。有興趣的小伙伴可以往下看,下面我會給出代碼和需要購買的硬件,和淘寶購買鏈接,你們也可以買同款的就行。個人覺得自己制作一個智能排插還是很酷的,這是智能家居的第一步,而且這個教程對于初學(xué)者來說也很簡單。只需要懂一點(diǎn)點(diǎn)的編程知識和基本的電路知識!準(zhǔn)備的硬件材料,材料在淘寶都可以買到,而且便宜。你們可以自己淘寶購買
1、一個ESP8266繼電器模塊;
2、220v轉(zhuǎn)5v直流電源模塊一個;
3、esp8266下載器一個;
4、普通排插一個。
其實(shí)最后就是將這些模塊集成在排插里面,讓排插變成一個我們可以控制的器件,實(shí)物如下圖:
注意事項(xiàng):1、將變壓模塊輸入端連接到220V輸出端連接到esp8266模塊的電源輸入端;2、將排插的火線截?cái)?,兩根分別連接到繼電器的com端和nc端
二,編程準(zhǔn)備
對ESP8266程序?qū)懭氲慕坛檀笾掠袃煞N,1是下載別人做好的bin文件包,使用專用軟件燒錄到ESP8266,我查了下,資料比較多,貌似難度很大;2是使用USB轉(zhuǎn)TTL工具進(jìn)行寫入,先利用Arduino IDE進(jìn)行寫入,我們就用這種方法。
打開Arduino IDE,默認(rèn)的Arduino IDE是沒有ESP8266庫的,需要我們自己添加上。
點(diǎn)擊Arduino IDE的文件-首選項(xiàng),在附加開發(fā)板管理器網(wǎng)址中填入:
這些工作都準(zhǔn)備好以后我們就可以編程
// An highlighted block#include #define MAX_SRV_CLIENTS 5 //定義可連接的客戶端數(shù)目最大值 不能超過5個
//設(shè)置成TCP連接,服務(wù)端WiFiServer server(8080);//服務(wù)器端口8080WiFiClient serverClients[MAX_SRV_CLIENTS];//WiFiClient client; //創(chuàng)建客戶端//const int tcpPort = 8266;//服務(wù)器端口//打開繼電器uint8_t tmp1[]= {0xA0,0x01,0x01,0xA2};//關(guān)閉繼電器uint8_t tmp2[]= {0xA0,0x01,0x00,0xA1};
char ssid[] = "WWW"; // 你的路由器SSID (name)char password[] = "cc123456"; // 你的wifi密碼 passwordString aa = "";//接收到客戶端的數(shù)據(jù)uint8_t fale1 = 0;uint8_t fale2 = 0;//char *Value16;void setup(){ //這個波特率是和模塊的通訊頻率,不能更改 Serial.begin(9600); pinMode(4,OUTPUT);//繼電器io // IPAddress Localip(192,168,8,107);//指派模塊的局域網(wǎng)ip IPAddress Gateway(192,168,8,1);//局域網(wǎng)網(wǎng)關(guān),路由器ip,這里的ip根據(jù)你的路由設(shè)置 IPAddress Subnet(255,255,0,0);//局域網(wǎng)子網(wǎng)掩碼 ,可以在電腦或者路由器查到 WiFi.config(Localip, Gateway, Subnet);//配置網(wǎng)絡(luò) WiFi.begin(ssid, password);//連接wifi WiFi.mode(WIFI_STA);//wifi為客戶端 //啟動UART傳輸和服務(wù)器 server.begin(); server.setNoDelay(true); } void loop(){ // kongzhi();// if(Serial.available() >0)// { // Value16 =(char*)(Serial.read()); // } uint8_t i; //檢測服務(wù)器端是否有活動的客戶端連接 if (server.hasClient()){ for(i = 0; i < MAX_SRV_CLIENTS; i++){ //查找空閑或者斷開連接的客戶端,并置為可用 if (!serverClients[i] || !serverClients[i].connected()){ if(serverClients[i]) serverClients[i].stop(); serverClients[i] = server.available(); continue; } } //若沒有可用客戶端,則停止連接 WiFiClient serverClient = server.available(); serverClient.stop(); } //檢查客戶端的數(shù)據(jù) for(i = 0; i < MAX_SRV_CLIENTS; i++){ if (serverClients[i] && serverClients[i].connected()){ if(serverClients[i].available()){ //從Telnet客戶端獲取數(shù)據(jù),并推送到串口 while(serverClients[i].available()) { aa+= char(serverClients[i].read());//aa就是收到的數(shù)據(jù),用來做對比執(zhí)行操作 delay(2);} if(aa == "a") //接收到字符a打開繼電器 { //回復(fù)客戶端,已經(jīng)接收到指令 serverClients[i].write("kai"); if(fale1 == 0){ fale1 = 1; fale2 = 0; // int Length1 = sizeof(tmp1); //打開繼電器 for(int j = 0 ; j<=3 ;j++) { Serial.write(tmp1[j]); // Serial.print(tmp1[j],HEX); // Serial.println(""); } } } if(aa == "b") { //關(guān)閉繼電器 serverClients[i].write("guan"); if (fale2 == 0){ // int Length2 = sizeof(tmp2); fale1 = 0; fale2 = 1; for(int j = 0 ; j<=3 ;j++) { Serial.write(tmp2[j]); // Serial.print(tmp1[j],HEX); // Serial.println(""); } } } if(aa == "c") { //心跳包 serverClients[i].write("ok"); } aa = "";
} } }}
然后就可以燒錄程序了。
三,燒錄1、將esp8266的驅(qū)動安裝好;2、將esp8266插在燒錄器上,使用ARDUINO燒錄;3、將燒錄好的esp8266插回去繼電器模塊;四,改裝排插1、把220V接在220V轉(zhuǎn)5V的變壓模塊輸入上,注意不要接反了;2、將變壓模塊輸出口接在繼電器模塊的電源口上;3、之后將排插的火線截?cái)?,接在繼電器的COM口和NC口上,最后整理一下,把排插蓋上。效果圖:
使用TCP測試工具,測試信號是否導(dǎo)通。用電腦打開TCp助手,按圖上配置,按連接,然后發(fā)送字符a看排插是否通電了。
如果可以通電,再發(fā)送b,看是否關(guān)閉。如果都可以,那就是已經(jīng)成功了!經(jīng)過上面,就可以在局域網(wǎng)控制家中的家電了,現(xiàn)在只是局域網(wǎng),如果你想在外面查看家中電器的打開或者關(guān)閉情況,則你需要部署到服務(wù)器,或者你也可以在家里做個內(nèi)網(wǎng)穿透。
-
繼電器
+關(guān)注
關(guān)注
132文章
5349瀏覽量
148917 -
WIFI
+關(guān)注
關(guān)注
81文章
5297瀏覽量
203737 -
排插
+關(guān)注
關(guān)注
0文章
9瀏覽量
9979
發(fā)布評論請先 登錄
相關(guān)推薦
評論