資料介紹
描述
您好,歡迎回來。
這是一款基于 NODEMCU ESP8266 板和 6 通道繼電器的家庭自動化板。
該板通過任何瀏覽器訪問其 Web 應用程序在本地控制,它目前可以控制 6 種不同的輸出,但我們可以添加更多,并且很容易更改額外輸出的代碼。
該項目的目標是制作一個簡單易用的家庭自動化系統(tǒng),任何人都可以通過幾個簡單的步驟來制作和學習。
讓我們開始吧。
所需材料
以下是該項目中使用的東西-
基本面包板設置
我們首先準備面包板設置,該設置由與 ESP8266 Nodemcu 板的 D0、D1、D2、D3、D4 和 D5 引腳連接的六個 LED 組成。
正在使用 NodeMCU,但任何 ESP8266 板都可以在這里使用,我們甚至可以通過使用最小的 ESP8266 設置來準備使用 ESP12F 或 12E 模塊的設置。
- 我們將 LED 與 ESP8266 的 GPIO 引腳連接,如上述接線 Draigarm 中所述,并在其中上傳主草圖。
- 只需確保在上傳之前更改草圖中的 SSID 和密碼即可。
結果
- 上傳 Sketch 后,我們打開串口監(jiān)視器并等待 ESP 與本地 WIFI 網(wǎng)絡連接。
- 當 ESP 連接到網(wǎng)絡時,您將看到本地 IP 地址,復制此 IP 地址并在瀏覽器中打開它。
- 我們現(xiàn)在可以通過按下 Web 應用程序中的按鈕來切換 LED。
下一步,使用 PCB BREADBOARD 準備自定義設置
完成面包板設置后,我們?yōu)樵擁椖繙蕚渲?PCB,該項目將在定制 PCB 面包板上制作。
PCB 面包板是我為快速原型工作而開發(fā)的定制板。它由與普通面包板相同的形狀因子排列的孔組成。
每個孔距每個孔 2.54 毫米,就像物理面包板和插頭引腳中的一樣。
PCBWAY 制造了這個,它的質(zhì)量非常好。
繼電器模塊
這是控制交流甚至直流負載的主要工作的組件,即 6 通道繼電器模塊。
6路繼電器輸出模塊觸點容量為10A 250V,因此可以處理2500W閾值以下的任何負載。
輸入使用 LOW 信號工作并打開繼電器,使用 HIGH 信號關閉繼電器。
它包含 6 個紅色 LED,每個 LED 都與一個光耦合器連接,該光耦合器控制 N 溝道晶體管的柵極,該晶體管然后打開或關閉繼電器。
每個繼電器都與相同的設置連接,該設置由一個光耦和控制繼電器的晶體管組成。
我已經(jīng)在萬用表的幫助下按照軌跡為這個繼電器模塊創(chuàng)建了一個示意圖,您可以使用這個示意圖來重新制作您的繼電器模塊。
PCBWAY禮品店
至于采購繼電器模塊,我使用PCBWAY 的禮品店訂購傳感器。
https://www.pcbway.com/project/gifts_detail/6_Channel_DC_5V_Relay_Module_Relay_Expansion_Board.html
除了 PCB Services,PCBWAY 也有專門的元件商店。
PCBWAY GIFTSHOP 是一個在線市場,我們可以從中采購所有主要的電子產(chǎn)品,如 Arduino 板、Raspberry Pi 板、模塊、傳感器等。
PCBWAY 有這個系統(tǒng),可以讓我們通過豆子從他們的禮品店購買任何東西,豆子就像一種可兌換的貨幣或優(yōu)惠券,我們通過在 PCBWAY 上下訂單或在社區(qū)中分享您的項目來獲得豆子。
從這里檢查 PCBWAY 以獲得出色的 PCB 服務 - https://www.pcbway.com/
最終示意圖
這是連接 ESP8266 NodeMCU 板和 6 通道繼電器模塊的示意圖。
- ESP8266 的 D0 引腳與 Relay 的 IN1 引腳相連。
- D1 與 IN2 相連
- D2與IN3相連
- D3與IN4相連
- D4與IN5相連
- D5與IN6相連
- VCC 或 USB IN 電壓與 Relay Module 的 VCC 和 NodeMCU Board 的 Vin 相連。
- 地到地
主要組件
- 我們首先將母頭針連接器添加到 ESP8266 板上并切割它以使其適合兩側,然后我對繼電器模塊執(zhí)行相同的過程來開始主組件。這里的目標不是直接將 nodemcu 的頭針和繼電器與面包板焊接,使用頭針,以便稍后我們可以將它們都移除并重新使用電路板。
- 接下來,我們將繼電器模塊和 NODEMCU 放置在 PCB 面包板上
- 我們還在 PCB 面包板的一側添加了一個 USB 端口,用于將外部電源連接到 NODEMCU 和 RELAY MODULE。
- 然后我們將所有組件焊接到面包板上。
將 IO 引腳與繼電器模塊連接
- 接下來,我們使用銀銅線將ESP8266 Board的每個IO Pin與nodemcu Board的IO Pin連接起來。
- 我們在 GPIO 引腳附近添加銅線,然后將其焊接到位,接下來我們在前一條銅線的末端添加另一根銅線,并與繼電器模塊的 IO 引腳連接。
- 我們?yōu)樗?GPIO 執(zhí)行此操作
- 對于一些連接,我們添加了電線。
總裝
- 完成焊接工作后,我們添加帶有繼電器模塊的 PCB 面包板,電路板現(xiàn)已完成,我們可以繼續(xù)向其添加主代碼。
WEB APP及其主要代碼
這是用于控制家庭自動化設置的主要 WEB PAGE 或 WEB 應用程序,此網(wǎng)絡應用程序是完全定制的,完全由一個草圖制成,無需使用任何第三方工具。
#include
// Replace with your network credentials
const char *ssid = "add your ssid";
const char *password = "add your password yo";
// Set web server port number to 80
WiFiServer server(80);
// Variable to store the HTTP request
String header;
// Auxiliar variables to store the current output state
String output1State = "off";
String output2State = "off";
String output3State = "off";
String output4State = "off";
String output5State = "off";
// Assign output variables to GPIO pins
const int output1 = 16; //D0
const int output2 = 5; //D1
const int output3 = 4; //D2
const int output4 = 0; //D3
const int output5 = 2; //D4
void setup() {
Serial.begin(115200);
// Initialize the output variables as outputs
pinMode(output1, OUTPUT);
pinMode(output2, OUTPUT);
pinMode(output3, OUTPUT);
pinMode(output4, OUTPUT);
pinMode(output5, OUTPUT);
// Set outputs to LOW
digitalWrite(output1, LOW);
digitalWrite(output2, LOW);
digitalWrite(output3, LOW);
digitalWrite(output4, LOW);
digitalWrite(output5, LOW);
// Connect to Wi-Fi network with SSID and password
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Print local IP address and start web server
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Listen for incoming clients
if (client) { // If a new client connects,
Serial.println("New Client."); // print a message out in the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) { // loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
Serial.write(c); // print it out the serial monitor
header += c;
if (c == '\n') { // if the byte is a newline character
// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
// turns the GPIOs on and off
if (header.indexOf("GET /1/on") >= 0) { //LOAD1
Serial.println("LOAD1 on");
output1State = "on";
digitalWrite(output1, HIGH);
} else if (header.indexOf("GET /1/off") >= 0) {
Serial.println("LOAD1 off");
output1State = "off";
digitalWrite(output1, LOW);
} else if (header.indexOf("GET /2/on") >= 0) { //LOAD2
Serial.println("LOAD2 on");
output2State = "on";
digitalWrite(output2, HIGH);
} else if (header.indexOf("GET /2/off") >= 0) {
Serial.println("LOAD2 off");
output2State = "off";
digitalWrite(output2, LOW);
} else if (header.indexOf("GET /3/on") >= 0) { //LOAD3
Serial.println("LOAD3 on");
output3State = "on";
digitalWrite(output3, HIGH);
} else if (header.indexOf("GET /3/off") >= 0) {
Serial.println("LOAD3 off");
output3State = "off";
digitalWrite(output3, LOW);
} else if (header.indexOf("GET /4/on") >= 0) { //LOAD4
Serial.println("LOAD4 on");
output4State = "on";
digitalWrite(output4, HIGH);
} else if (header.indexOf("GET /4/off") >= 0) {
Serial.println("LOAD4 off");
output4State = "off";
digitalWrite(output4, LOW);
} else if (header.indexOf("GET /5/on") >= 0) { //LOAD5
Serial.println("LOAD5 on");
output5State = "on";
digitalWrite(output5, HIGH);
} else if (header.indexOf("GET /5/off") >= 0) {
Serial.println("LOAD5 off");
output5State = "off";
digitalWrite(output5, LOW);
}
// Display the HTML web page
client.println("");
client.println("");
client.println("");
client.println("");
// Web Page Heading
client.println("HOME AUTOMATION BASIC
");
// Display current state, and ON/OFF buttons for OUTPUT1
client.println("LOAD1 - State "
+ output1State + "");
// If the output1State is off, it displays the ON button
if (output1State=="off") {
client.println("");
} else {
client.println("");
}
// Display current state, and ON/OFF buttons for OUTPUT2
client.println("LOAD2 - State "
+ output2State + "");
// If the output2State is off, it displays the ON button
if (output2State=="off") {
client.println("");
} else {
client.println("");
}
// Display current state, and ON/OFF buttons for OUTPUT3
client.println("LOAD3 - State "
+ output3State + "");
// If the output3State is off, it displays the ON button
if (output3State=="off") {
client.println("");
} else {
client.println("");
}
// Display current state, and ON/OFF buttons for OUTPUT4
client.println("LOAD4 - State "
+ output4State + "");
// If the output4State is off, it displays the ON button
if (output4State=="off") {
client.println("");
} else {
client.println("");
}
// Display current state, and ON/OFF buttons for OUTPUT5
client.println("LOAD5 - State "
+ output4State + "");
// If the output5State is off, it displays the ON button
if (output5State=="off") {
client.println("");
} else {
client.println("");
}
client.println("");
// The HTTP response ends with another blank line
client.println();
// Break out of the while loop
break;
} else { // if you got a newline, then clear currentLine
currentLine = "";
}
} else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
}
}
// Clear the header variable
header = "";
// Close the connection
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}
這是我在此設置中使用的代碼,它是一個簡單的基于 WEB 服務器的草圖,可讓我們使用 WEB APP 控制五個 GPIO。
這個 Sketch 融合了經(jīng)典的嵌入式 C 語言和帶有一點 CSS 的 HTML。
我們通過以下幾行在此草圖中設置了 HTML 頁面。
// Display the HTML web page
client.println("html><html>");
client.println("<head><meta name=\"viewport" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon" href=\"data:,">");
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #6a195b; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #a82890;}style>head>");
// Web Page Heading
client.println("<body><h1>HOME AUTOMATION BASICh1>");
這個草圖比較容易理解,我們有 5 個輸出,它們在草圖開始時聲明并設置為 LOW 狀態(tài)。
const int output1 = 16; //D0
const int output2 = 5; //D1
const int output3 = 4; //D2
const int output4 = 0; //D3
const int output5 = 2; //D4
digitalWrite(output1, LOW);
digitalWrite(output2, LOW);
digitalWrite(output3, LOW);
digitalWrite(output4, LOW);
digitalWrite(output5, LOW);
當按下 HTML 按鈕時,每個 GPIO 都由下面的行觸發(fā)。
// turns the GPIOs on and off
if (header.indexOf("GET /1/on") >= 0) { //LOAD1
Serial.println("LOAD1 on");
output1State = "on";
digitalWrite(output1, HIGH);
} else if (header.indexOf("GET /1/off") >= 0) {
Serial.println("LOAD1 off");
output1State = "off";
digitalWrite(output1, LOW);
請注意,此設置僅適用于 ESP8266 和您在同一網(wǎng)絡上瀏覽 APP 的設備。(本地網(wǎng)絡運營)
結果
?
這是結果,如您所見,該系統(tǒng)正在運行。
每當我們通過 WEB APP 切換繼電器時,每個繼電器模塊頂部都有一個 LED 指示燈會打開和關閉。
交流負載測試
在開始進行此設置之前,請確保佩戴適當?shù)慕^緣橡膠手套,并在插入交流電源后盡量不要觸摸交流側。
- 我們按照上述接線方案將交流燈泡座與繼電器的公共和 NC 連接器以及交流電源接線連接起來。
- 接下來,我們打開 WEB APP 并切換連接到交流電源的負載 1。
總結與改進
此設置有效,現(xiàn)在我們可以將其添加到我們家中的 MCB 盒中,以控制特定區(qū)域或任何控制至少 6 個光輸出的照明開關附近。
它的工作方式也很簡單,繼電器就像物理開關,我們可以將它們與任何光源或輸出串聯(lián)添加。通過將 RELAY 的狀態(tài)更改為 HIGH 或 LOW,它可以斷開或連接電路并控制與其連接的負載。
此設置使用帶有外部 5V 電源的 NodeMCU 板。
理想情況下,板載 240V AC 至 5V 1A DC 轉(zhuǎn)換器以及通過單線輕松連接的負載輸出。NodeMCU 可以替換為基于最小 ESP12F 的設置,該設置將在相同的拓撲中實現(xiàn)自己的繼電器模塊板。這就是我將在這個項目的第 2 版中做的事情。
這就是今天的內(nèi)容,如果您在設置此項目時遇到任何問題,請發(fā)表評論。
特別感謝 PCBWAY 提供了我在這個項目中使用的組件,檢查它們以獲得各種 PCB 或 PCBA 相關的服務以降低成本。
謝謝,我很快就會帶著一個新項目回來。
- NodeMCU家庭自動化(ESP8266)
- 制作一個MQTT ESP8266家庭自動化項目
- 基于ESP32的12通道IOT家庭自動化
- 家庭自動化4通道節(jié)點模式esp8266
- ESP8266家庭自動化控制器
- ESP8266 4通道繼電器
- 調(diào)用Lua新建的WEB服務器 操作Nodemcu esp8266 控制繼電器實現(xiàn)物聯(lián)網(wǎng)
- 配置esp8266開發(fā)板的Arduino開發(fā)環(huán)境
- esp8266 nodeMCU arduino開發(fā)環(huán)境
- NodeMcu ESP8266 無需任何基礎 制作wifi小車
- 關于ESP8266-NodeMCU和onenet通信傳輸學習總結
- ESP8266 nodemcu使用arduino編程點亮OLED測試
- 【物聯(lián)網(wǎng)】基礎篇 ESP8266-NodeMCU學習一
- ESP8266-NodeMCU
- NodeMCU基于ESP8266的一款wifi開發(fā)板 525次下載
- 機智云ESP8266開發(fā)板RGB彩燈控件 176次閱讀
- ESP8266自動下載電路分析 2800次閱讀
- ESP8266紅外信號收發(fā)實驗 1678次閱讀
- ESP8266硬件 4143次閱讀
- ESP8266/ESP32自動下載原理 4249次閱讀
- 如何使用ESP8266制作可配置的Web服務器 1.2w次閱讀
- 如何使用ESP8266開發(fā)板制作光強度檢測器 3907次閱讀
- ESP8266上運行代碼如何實現(xiàn) 2768次閱讀
- 基于PlatformIO IDE的家庭自動化系統(tǒng)設計方案實現(xiàn) 2297次閱讀
- 如何對ESP8266單片機進行編程? 6789次閱讀
- STM32系列設計,ESP8266聯(lián)網(wǎng)授時時鐘 7825次閱讀
- esp8266中文資料匯總(esp8266引腳圖_與單片機連接_串口wifi實例) 22.4w次閱讀
- ESP8266 Wi-Fi到底傳多遠_esp8266 wifi信號強度測距 5.1w次閱讀
- esp8266 at指令集詳解 14.1w次閱讀
- esp8266串口wifi實例 1.8w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多