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