資料介紹
描述
您好,歡迎回來(lái)。
這是一款基于 NODEMCU ESP8266 板和 6 通道繼電器的家庭自動(dòng)化板。
該板通過(guò)任何瀏覽器訪問(wèn)其 Web 應(yīng)用程序在本地控制,它目前可以控制 6 種不同的輸出,但我們可以添加更多,并且很容易更改額外輸出的代碼。
該項(xiàng)目的目標(biāo)是制作一個(gè)簡(jiǎn)單易用的家庭自動(dòng)化系統(tǒng),任何人都可以通過(guò)幾個(gè)簡(jiǎn)單的步驟來(lái)制作和學(xué)習(xí)。
讓我們開(kāi)始吧。
所需材料
以下是該項(xiàng)目中使用的東西-
基本面包板設(shè)置

我們首先準(zhǔn)備面包板設(shè)置,該設(shè)置由與 ESP8266 Nodemcu 板的 D0、D1、D2、D3、D4 和 D5 引腳連接的六個(gè) LED 組成。
正在使用 NodeMCU,但任何 ESP8266 板都可以在這里使用,我們甚至可以通過(guò)使用最小的 ESP8266 設(shè)置來(lái)準(zhǔn)備使用 ESP12F 或 12E 模塊的設(shè)置。
- 我們將 LED 與 ESP8266 的 GPIO 引腳連接,如上述接線 Draigarm 中所述,并在其中上傳主草圖。
- 只需確保在上傳之前更改草圖中的 SSID 和密碼即可。
結(jié)果
- 上傳 Sketch 后,我們打開(kāi)串口監(jiān)視器并等待 ESP 與本地 WIFI 網(wǎng)絡(luò)連接。
- 當(dāng) ESP 連接到網(wǎng)絡(luò)時(shí),您將看到本地 IP 地址,復(fù)制此 IP 地址并在瀏覽器中打開(kāi)它。
- 我們現(xiàn)在可以通過(guò)按下 Web 應(yīng)用程序中的按鈕來(lái)切換 LED。
下一步,使用 PCB BREADBOARD 準(zhǔn)備自定義設(shè)置

完成面包板設(shè)置后,我們?yōu)樵擁?xiàng)目準(zhǔn)備主 PCB,該項(xiàng)目將在定制 PCB 面包板上制作。
PCB 面包板是我為快速原型工作而開(kāi)發(fā)的定制板。它由與普通面包板相同的形狀因子排列的孔組成。
每個(gè)孔距每個(gè)孔 2.54 毫米,就像物理面包板和插頭引腳中的一樣。
PCBWAY 制造了這個(gè),它的質(zhì)量非常好。
繼電器模塊
這是控制交流甚至直流負(fù)載的主要工作的組件,即 6 通道繼電器模塊。
6路繼電器輸出模塊觸點(diǎn)容量為10A 250V,因此可以處理2500W閾值以下的任何負(fù)載。
輸入使用 LOW 信號(hào)工作并打開(kāi)繼電器,使用 HIGH 信號(hào)關(guān)閉繼電器。
它包含 6 個(gè)紅色 LED,每個(gè) LED 都與一個(gè)光耦合器連接,該光耦合器控制 N 溝道晶體管的柵極,該晶體管然后打開(kāi)或關(guān)閉繼電器。
每個(gè)繼電器都與相同的設(shè)置連接,該設(shè)置由一個(gè)光耦和控制繼電器的晶體管組成。

我已經(jīng)在萬(wàn)用表的幫助下按照軌跡為這個(gè)繼電器模塊創(chuàng)建了一個(gè)示意圖,您可以使用這個(gè)示意圖來(lái)重新制作您的繼電器模塊。
PCBWAY禮品店

至于采購(gòu)繼電器模塊,我使用PCBWAY 的禮品店訂購(gòu)傳感器。
https://www.pcbway.com/project/gifts_detail/6_Channel_DC_5V_Relay_Module_Relay_Expansion_Board.html
除了 PCB Services,PCBWAY 也有專(zhuān)門(mén)的元件商店。
PCBWAY GIFTSHOP 是一個(gè)在線市場(chǎng),我們可以從中采購(gòu)所有主要的電子產(chǎn)品,如 Arduino 板、Raspberry Pi 板、模塊、傳感器等。
PCBWAY 有這個(gè)系統(tǒng),可以讓我們通過(guò)豆子從他們的禮品店購(gòu)買(mǎi)任何東西,豆子就像一種可兌換的貨幣或優(yōu)惠券,我們通過(guò)在 PCBWAY 上下訂單或在社區(qū)中分享您的項(xiàng)目來(lái)獲得豆子。
從這里檢查 PCBWAY 以獲得出色的 PCB 服務(wù) - 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 板上并切割它以使其適合兩側(cè),然后我對(duì)繼電器模塊執(zhí)行相同的過(guò)程來(lái)開(kāi)始主組件。這里的目標(biāo)不是直接將 nodemcu 的頭針和繼電器與面包板焊接,使用頭針,以便稍后我們可以將它們都移除并重新使用電路板。
- 接下來(lái),我們將繼電器模塊和 NODEMCU 放置在 PCB 面包板上
- 我們還在 PCB 面包板的一側(cè)添加了一個(gè) USB 端口,用于將外部電源連接到 NODEMCU 和 RELAY MODULE。
- 然后我們將所有組件焊接到面包板上。
將 IO 引腳與繼電器模塊連接
- 接下來(lái),我們使用銀銅線將ESP8266 Board的每個(gè)IO Pin與nodemcu Board的IO Pin連接起來(lái)。
- 我們?cè)?GPIO 引腳附近添加銅線,然后將其焊接到位,接下來(lái)我們?cè)谇耙粭l銅線的末端添加另一根銅線,并與繼電器模塊的 IO 引腳連接。
- 我們?yōu)樗?GPIO 執(zhí)行此操作
- 對(duì)于一些連接,我們添加了電線。
總裝
- 完成焊接工作后,我們添加帶有繼電器模塊的 PCB 面包板,電路板現(xiàn)已完成,我們可以繼續(xù)向其添加主代碼。
WEB APP及其主要代碼

這是用于控制家庭自動(dòng)化設(shè)置的主要 WEB PAGE 或 WEB 應(yīng)用程序,此網(wǎng)絡(luò)應(yīng)用程序是完全定制的,完全由一個(gè)草圖制成,無(wú)需使用任何第三方工具。
#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("");
}
}
這是我在此設(shè)置中使用的代碼,它是一個(gè)簡(jiǎn)單的基于 WEB 服務(wù)器的草圖,可讓我們使用 WEB APP 控制五個(gè) GPIO。
這個(gè) Sketch 融合了經(jīng)典的嵌入式 C 語(yǔ)言和帶有一點(diǎn) CSS 的 HTML。
我們通過(guò)以下幾行在此草圖中設(shè)置了 HTML 頁(yè)面。
// 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>");
這個(gè)草圖比較容易理解,我們有 5 個(gè)輸出,它們?cè)诓輬D開(kāi)始時(shí)聲明并設(shè)置為 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);
當(dāng)按下 HTML 按鈕時(shí),每個(gè) 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);
請(qǐng)注意,此設(shè)置僅適用于 ESP8266 和您在同一網(wǎng)絡(luò)上瀏覽 APP 的設(shè)備。(本地網(wǎng)絡(luò)運(yùn)營(yíng))
結(jié)果
?
這是結(jié)果,如您所見(jiàn),該系統(tǒng)正在運(yùn)行。
每當(dāng)我們通過(guò) WEB APP 切換繼電器時(shí),每個(gè)繼電器模塊頂部都有一個(gè) LED 指示燈會(huì)打開(kāi)和關(guān)閉。
交流負(fù)載測(cè)試
在開(kāi)始進(jìn)行此設(shè)置之前,請(qǐng)確保佩戴適當(dāng)?shù)慕^緣橡膠手套,并在插入交流電源后盡量不要觸摸交流側(cè)。
- 我們按照上述接線方案將交流燈泡座與繼電器的公共和 NC 連接器以及交流電源接線連接起來(lái)。
- 接下來(lái),我們打開(kāi) WEB APP 并切換連接到交流電源的負(fù)載 1。
總結(jié)與改進(jìn)
此設(shè)置有效,現(xiàn)在我們可以將其添加到我們家中的 MCB 盒中,以控制特定區(qū)域或任何控制至少 6 個(gè)光輸出的照明開(kāi)關(guān)附近。
它的工作方式也很簡(jiǎn)單,繼電器就像物理開(kāi)關(guān),我們可以將它們與任何光源或輸出串聯(lián)添加。通過(guò)將 RELAY 的狀態(tài)更改為 HIGH 或 LOW,它可以斷開(kāi)或連接電路并控制與其連接的負(fù)載。
此設(shè)置使用帶有外部 5V 電源的 NodeMCU 板。
理想情況下,板載 240V AC 至 5V 1A DC 轉(zhuǎn)換器以及通過(guò)單線輕松連接的負(fù)載輸出。NodeMCU 可以替換為基于最小 ESP12F 的設(shè)置,該設(shè)置將在相同的拓?fù)渲袑?shí)現(xiàn)自己的繼電器模塊板。這就是我將在這個(gè)項(xiàng)目的第 2 版中做的事情。
這就是今天的內(nèi)容,如果您在設(shè)置此項(xiàng)目時(shí)遇到任何問(wèn)題,請(qǐng)發(fā)表評(píng)論。
特別感謝 PCBWAY 提供了我在這個(gè)項(xiàng)目中使用的組件,檢查它們以獲得各種 PCB 或 PCBA 相關(guān)的服務(wù)以降低成本。
謝謝,我很快就會(huì)帶著一個(gè)新項(xiàng)目回來(lái)。
- NodeMCU家庭自動(dòng)化(ESP8266)
- 制作一個(gè)MQTT ESP8266家庭自動(dòng)化項(xiàng)目
- 基于ESP32的12通道IOT家庭自動(dòng)化
- 家庭自動(dòng)化4通道節(jié)點(diǎn)模式esp8266
- ESP8266家庭自動(dòng)化控制器
- ESP8266 4通道繼電器
- 調(diào)用Lua新建的WEB服務(wù)器 操作Nodemcu esp8266 控制繼電器實(shí)現(xiàn)物聯(lián)網(wǎng)
- 配置esp8266開(kāi)發(fā)板的Arduino開(kāi)發(fā)環(huán)境
- esp8266 nodeMCU arduino開(kāi)發(fā)環(huán)境
- NodeMcu ESP8266 無(wú)需任何基礎(chǔ) 制作wifi小車(chē)
- 關(guān)于ESP8266-NodeMCU和onenet通信傳輸學(xué)習(xí)總結(jié)
- ESP8266 nodemcu使用arduino編程點(diǎn)亮OLED測(cè)試
- 【物聯(lián)網(wǎng)】基礎(chǔ)篇 ESP8266-NodeMCU學(xué)習(xí)一
- ESP8266-NodeMCU
- NodeMCU基于ESP8266的一款wifi開(kāi)發(fā)板 526次下載
- 機(jī)智云ESP8266開(kāi)發(fā)板RGB彩燈控件 442次閱讀
- ESP8266自動(dòng)下載電路分析 4212次閱讀
- ESP8266紅外信號(hào)收發(fā)實(shí)驗(yàn) 2013次閱讀
- ESP8266硬件 4865次閱讀
- ESP8266/ESP32自動(dòng)下載原理 4741次閱讀
- 如何使用ESP8266制作可配置的Web服務(wù)器 1.3w次閱讀
- 如何使用ESP8266開(kāi)發(fā)板制作光強(qiáng)度檢測(cè)器 4305次閱讀
- ESP8266上運(yùn)行代碼如何實(shí)現(xiàn) 3039次閱讀
- 基于PlatformIO IDE的家庭自動(dòng)化系統(tǒng)設(shè)計(jì)方案實(shí)現(xiàn) 2489次閱讀
- 如何對(duì)ESP8266單片機(jī)進(jìn)行編程? 7047次閱讀
- STM32系列設(shè)計(jì),ESP8266聯(lián)網(wǎng)授時(shí)時(shí)鐘 8097次閱讀
- esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例) 22.5w次閱讀
- ESP8266 Wi-Fi到底傳多遠(yuǎn)_esp8266 wifi信號(hào)強(qiáng)度測(cè)距 5.2w次閱讀
- esp8266 at指令集詳解 14.3w次閱讀
- esp8266串口wifi實(shí)例 1.9w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論