在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>基于NODEMCU ESP8266板和6通道繼電器的家庭自動化板

基于NODEMCU ESP8266板和6通道繼電器的家庭自動化板

2022-10-19 | zip | 0.76 MB | 次下載 | 免費

資料介紹

描述

您好,歡迎回來。

這是一款基于 NODEMCU ESP8266 板和 6 通道繼電器的家庭自動化板。

?

該板通過任何瀏覽器訪問其 Web 應用程序在本地控制,它目前可以控制 6 種不同的輸出,但我們可以添加更多,并且很容易更改額外輸出的代碼。

該項目的目標是制作一個簡單易用的家庭自動化系統,任何人都可以通過幾個簡單的步驟來制作和學習。

讓我們開始吧。

所需材料

?
?

以下是該項目中使用的東西-

  • ESP8266 NodeMCU
  • 6通道繼電器模塊
  • PCB面包板
  • 面包板
  • 發光二極管
  • 母頭針
  • USB 微型 THT 端口
  • 用于焊接的銅線或引線

基本面包板設置

?
?
?
pYYBAGNOSkmAW9PcAADlleMv3h4008.jpg
?
1 / 2
?

我們首先準備面包板設置,該設置由與 ESP8266 Nodemcu 板的 D0、D1、D2、D3、D4 和 D5 引腳連接的六個 LED 組成。

正在使用 NodeMCU,但任何 ESP8266 板都可以在這里使用,我們甚至可以通過使用最小的 ESP8266 設置來準備使用 ESP12F 或 12E 模塊的設置。

  • 我們將 LED 與 ESP8266 的 GPIO 引腳連接,如上述接線 Draigarm 中所述,并在其中上傳主草圖。
  • 只需確保在上傳之前更改草圖中的 SSID 和密碼即可。

結果

?
?
?
?
?
1 / 2
?
  • 上傳 Sketch 后,我們打開串口監視器并等待 ESP 與本地 WIFI 網絡連接。
  • 當 ESP 連接到網絡時,您將看到本地 IP 地址,復制此 IP 地址并在瀏覽器中打開它。
  • 我們現在可以通過按下 Web 應用程序中的按鈕來切換 LED。

下一步,使用 PCB BREADBOARD 準備自定義設置

?
?
?
poYBAGNOSk2Ae6xCAAQB5wrvTwc157.jpg
?
1 / 2
?

完成面包板設置后,我們為該項目準備主 PCB,該項目將在定制 PCB 面包板上制作。

PCB 面包板是我為快速原型工作而開發的定制板。它由與普通面包板相同的形狀因子排列的孔組成。

每個孔距每個孔 2.54 毫米,就像物理面包板和插頭引腳中的一樣。

PCBWAY 制造了這個,它的質量非常好。

繼電器模塊

?
?
?
?
?
1 / 3
?

這是控制交流甚至直流負載的主要工作的組件,即 6 通道繼電器模塊。

6路繼電器輸出模塊觸點容量為10A 250V,因此可以處理2500W閾值以下的任何負載。

輸入使用 LOW 信號工作并打開繼電器,使用 HIGH 信號關閉繼電器。

它包含 6 個紅色 LED,每個 LED 都與一個光耦合器連接,該光耦合器控制 N 溝道晶體管的柵極,該晶體管然后打開或關閉繼電器。

每個繼電器都與相同的設置連接,該設置由一個光耦控制繼電器的晶體管組成

pYYBAGNOSk-AA8X5AAFCJXjkjVw443.jpg
?

我已經在萬用表的幫助下按照軌跡為這個繼電器模塊創建了一個示意圖,您可以使用這個示意圖來重新制作您的繼電器模塊。

PCBWAY禮品店

poYBAGNOSlKAWa65AAHT7XdzqZg954.jpg
?

至于采購繼電器模塊,我使用PCBWAY 的禮品店訂購傳感器。

https://www.pcbway.com/project/gifts_detail/6_Channel_DC_5V_Relay_Module_Relay_Expansion_Board.html

除了 PCB Services,PCBWAY 也有專門的元件商店。

PCBWAY GIFTSHOP 是一個在線市場,我們可以從中采購所有主要的電子產品,如 Arduino 板、Raspberry Pi 板、模塊、傳感器等。

PCBWAY 有這個系統,可以讓我們通過豆子從他們的禮品店購買任何東西,豆子就像一種可兌換的貨幣或優惠券,我們通過在 PCBWAY 上下訂單或在社區中分享您的項目來獲得豆子。

從這里檢查 PCBWAY 以獲得出色的 PCB 服務 - https://www.pcbway.com/

最終示意圖

pYYBAGNOSlWAABvcAANcHou2BDs083.jpg
?

這是連接 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 相連。
  • 地到地

主要組件

?
?
?
?
?
1 / 4
?
  • 我們首先將母頭針連接器添加到 ESP8266 板上并切割它以使其適合兩側,然后我對繼電器模塊執行相同的過程來開始主組件。這里的目標不是直接將 nodemcu 的頭針和繼電器與面包板焊接,使用頭針,以便稍后我們可以將它們都移除并重新使用電路板。
  • 接下來,我們將繼電器模塊和 NODEMCU 放置在 PCB 面包板上
  • 我們還在 PCB 面包板的一側添加了一個 USB 端口,用于將外部電源連接到 NODEMCU 和 RELAY MODULE。
  • 然后我們將所有組件焊接到面包板上。

將 IO 引腳與繼電器模塊連接

?
?
?
?
?
1 / 4
?
  • 接下來,我們使用銀銅線將ESP8266 Board的每個IO Pin與nodemcu Board的IO Pin連接起來。
  • 我們在 GPIO 引腳附近添加銅線,然后將其焊接到位,接下來我們在前一條銅線的末端添加另一根銅線,并與繼電器模塊的 IO 引腳連接。
  • 我們為所有 GPIO 執行此操作
  • 對于一些連接,我們添加了電線。

總裝

?
?
  • 完成焊接工作后,我們添加帶有繼電器模塊的 PCB 面包板,電路板現已完成,我們可以繼續向其添加主代碼。

WEB APP及其主要代碼

poYBAGNOSlmAULdJAACzYdL7QL4928.jpg
?

這是用于控制家庭自動化設置的主要 WEB PAGE 或 WEB 應用程序,此網絡應用程序是完全定制的,完全由一個草圖制成,無需使用任何第三方工具。

#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 融合了經典的嵌入式 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 狀態。

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 都由下面的行觸發。

// 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 和您在同一網絡上瀏覽 APP 的設備。(本地網絡運營)

結果

?
?
?
?
?
1 / 2
?

?

?

這是結果,如您所見,該系統正在運行。

每當我們通過 WEB APP 切換繼電器時,每個繼電器模塊頂部都有一個 LED 指示燈會打開和關閉。

交流負載測試

在開始進行此設置之前,請確保佩戴適當的絕緣橡膠手套,并在插入交流電源后盡量不要觸摸交流側。

  • 我們按照上述接線方案將交流燈泡座與繼電器的公共和 NC 連接器以及交流電源接線連接起來。
  • 接下來,我們打開 WEB APP 并切換連接到交流電源的負載 1。

總結與改進

?
?
?
?
?
1 / 2
?

此設置有效,現在我們可以將其添加到我們家中的 MCB 盒中,以控制特定區域或任何控制至少 6 個光輸出的照明開關附近。

它的工作方式也很簡單,繼電器就像物理開關,我們可以將它們與任何光源或輸出串聯添加。通過將 RELAY 的狀態更改為 HIGH 或 LOW,它可以斷開或連接電路并控制與其連接的負載。

此設置使用帶有外部 5V 電源的 NodeMCU 板。

理想情況下,板載 240V AC 至 5V 1A DC 轉換器以及通過單線輕松連接的負載輸出。NodeMCU 可以替換為基于最小 ESP12F 的設置,該設置將在相同的拓撲中實現自己的繼電器模塊板。這就是我將在這個項目的第 2 版中做的事情。

這就是今天的內容,如果您在設置此項目時遇到任何問題,請發表評論。

特別感謝 PCBWAY 提供了我在這個項目中使用的組件,檢查它們以獲得各種 PCB 或 PCBA 相關的服務以降低成本。

謝謝,我很快就會帶著一個新項目回來。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1DC電源插座圖紙
  2. 0.67 MB   |  1次下載  |  免費
  3. 2AN84-線性技術雜志電路集,第一卷第四集
  4. 2.28MB   |  次下載  |  免費
  5. 3AN43-橋式電路
  6. 3.64MB   |  次下載  |  免費
  7. 4AN69-LT1575超快線性控制器提供快速瞬態響應電源
  8. 218.44KB   |  次下載  |  免費
  9. 5AN98-2004年秋季的信號源、調理器和電源電路
  10. 864.98KB   |  次下載  |  免費
  11. 6高頻7代電源說明書
  12. 1.04 MB   |  次下載  |  免費
  13. 7AN-616:AD9430評估板對XTAL振蕩器時鐘的修改
  14. 162.24KB   |  次下載  |  免費
  15. 8AN-237: 放大器直接數字頻率合成的DAC選型器應用漫談
  16. 461.58KB   |  次下載  |  免費

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  450次下載  |  免費
  3. 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  137次下載  |  1 積分
  5. 3基于STM32單片機智能手環心率計步器體溫顯示設計
  6. 0.10 MB   |  128次下載  |  免費
  7. 4使用單片機實現七人表決器的程序和仿真資料免費下載
  8. 2.96 MB   |  44次下載  |  免費
  9. 53314A函數發生器維修手冊
  10. 16.30 MB   |  31次下載  |  免費
  11. 6美的電磁爐維修手冊大全
  12. 1.56 MB   |  22次下載  |  5 積分
  13. 7如何正確測試電源的紋波
  14. 0.36 MB   |  15次下載  |  免費
  15. 8感應筆電路圖
  16. 0.06 MB   |  10次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935121次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73810次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 国产美女作爱| 国产黄色高清视频| 色噜噜狠狠成人网| 午夜爱爱免费视频| 特级aaa片毛片免费观看| 四虎中文| 免费国产在线视频| 激情91| 大尺度在线播放| 午夜大片网| 免费观看欧美成人1314色| 操美女的视频网站| h在线免费| 超h 高h 污肉1v1御书屋| 亚洲jizzjizz妇女| 日本wwwwwwwww| 国产一区二区三区美女在线观看 | 亚洲人成电影综合网站色| 午夜三级毛片| 欧美成人一区二区三区在线电影| 久久亚洲精品成人综合| 97影院理论片手机在线观看| 天天干干干干| 啪啪免费看| 一区二区三区电影| 欧美性色黄在线视| 国产卡1卡2卡三卡网站免费| 天天草夜夜操| 欧美成人鲁丝片在线观看| 美女扒开尿囗给男生桶爽| 四虎在线永久免费视频网站| 久久综合久| 天天射网站| 欧美涩区| 亚洲性色成人| 美女视频一区| 亚洲免费小视频| 啪啪免费网| 午夜激情啪啪| 国产拍拍拍免费视频网站| 日本tv欧美tv天堂|