www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > IoT設(shè)計(jì)分享
[導(dǎo)讀]車(chē)庫(kù)門(mén)太重,打開(kāi)和關(guān)閉要費(fèi)很大的力氣。在這個(gè)萬(wàn)物互聯(lián)的物聯(lián)網(wǎng)時(shí)代,我們也應(yīng)該改進(jìn)它。想象一下,只需點(diǎn)擊智能手機(jī)就可以輕松打開(kāi)車(chē)庫(kù)門(mén),這正是我們要在這個(gè)智能車(chē)庫(kù)門(mén)物聯(lián)網(wǎng)項(xiàng)目中構(gòu)建的,我們將使用ESP32開(kāi)發(fā)板和Arduino IDE來(lái)構(gòu)建這個(gè)項(xiàng)目。以前我們也建立了一個(gè)類似的Wi-Fi車(chē)庫(kù)門(mén)開(kāi)啟器項(xiàng)目,使用直流電機(jī),你也可以檢查一下,如果你感興趣。

車(chē)庫(kù)門(mén)太重,打開(kāi)和關(guān)閉要費(fèi)很大的力氣。在這個(gè)萬(wàn)物互聯(lián)的物聯(lián)網(wǎng)時(shí)代,我們也應(yīng)該改進(jìn)它。想象一下,只需點(diǎn)擊智能手機(jī)就可以輕松打開(kāi)車(chē)庫(kù)門(mén),這正是我們要在這個(gè)智能車(chē)庫(kù)門(mén)物聯(lián)網(wǎng)項(xiàng)目中構(gòu)建的,我們將使用ESP32開(kāi)發(fā)板和Arduino IDE來(lái)構(gòu)建這個(gè)項(xiàng)目。以前我們也建立了一個(gè)類似的Wi-Fi車(chē)庫(kù)門(mén)開(kāi)啟器項(xiàng)目,使用直流電機(jī),你也可以檢查一下,如果你感興趣。

構(gòu)建物聯(lián)網(wǎng)車(chē)庫(kù)開(kāi)門(mén)器所需的組件

?NodeMCU ESP32

?2個(gè)伺服電機(jī)(SG90)

?電力供應(yīng)

?電路試驗(yàn)板

?跳線

我們使用NodeMCU ESP32板作為這個(gè)項(xiàng)目的微控制器。它是一個(gè)非常強(qiáng)大的、支持wifi的、非常低成本的微控制器。它是物聯(lián)網(wǎng)項(xiàng)目的完美板。我們有2臺(tái)伺服電機(jī)(SG90)用于物聯(lián)網(wǎng)車(chē)庫(kù)門(mén)的升降機(jī)構(gòu)。它是一種小型的低成本伺服電機(jī),可以在4.8到6V的工作電壓下從0到180度旋轉(zhuǎn)。這9克電機(jī)提供高達(dá)1.8公斤-厘米的扭矩在6V。我們需要一個(gè)5V電源為整個(gè)裝置供電。你可以使用5V適配器或充電寶。對(duì)于所有的連接,我們需要一個(gè)面包板和一些跳線。最后,我們還需要做一個(gè)車(chē)庫(kù),為此我們使用了紙板和海圖紙。

物聯(lián)網(wǎng)車(chē)庫(kù)門(mén)電路圖

由于我們沒(méi)有使用任何物聯(lián)網(wǎng)車(chē)庫(kù)門(mén)傳感器,所以這個(gè)項(xiàng)目的電路非常簡(jiǎn)單。我們只需要兩個(gè)伺服電機(jī)連接到ESP32開(kāi)發(fā)板,如下面的連接圖所示。此外,如果您是第一次使用ESP32板,您應(yīng)該查看我們的ESP32物聯(lián)網(wǎng)項(xiàng)目以探索更多內(nèi)容,并了解可以使用該板構(gòu)建的其他有趣項(xiàng)目。

這是一個(gè)非常簡(jiǎn)單的小電路,只有很少的元件。我們需要將兩個(gè)伺服電機(jī)的VCC引腳連接到VIN引腳,將兩個(gè)伺服電機(jī)的GND引腳連接到NodeMCU ESP32的GND引腳,然后將兩個(gè)伺服電機(jī)的PWM引腳分別連接到D13和D12。下面的表格將幫助你輕松地建立聯(lián)系。

注意:本系統(tǒng)的供電電壓不要超過(guò)6V,否則會(huì)損壞伺服電機(jī)。

我們只用了一個(gè)面包板和一些連接線來(lái)構(gòu)建電路,車(chē)庫(kù)門(mén)模型的構(gòu)建是用簡(jiǎn)單的紙箱和海圖紙來(lái)完成的。在下圖中,您可以看到ESP32開(kāi)發(fā)板連接到車(chē)庫(kù)內(nèi)的伺服電機(jī)。

如果您想使連接更安全,您還可以將ESP32板焊接在零PCB上,并使用男性bergstick引腳連接兩個(gè)伺服電機(jī)。此外,我們已經(jīng)使用ESP32板上的USB端口為整個(gè)項(xiàng)目供電,如果你想讓你的項(xiàng)目遠(yuǎn)程,你也可以考慮使用9V電池或鋰電池。一旦連接準(zhǔn)備好,我們就可以開(kāi)始編程ESP32板,以使用物聯(lián)網(wǎng)構(gòu)建我們的智能門(mén)車(chē)庫(kù)。

如何為基于物聯(lián)網(wǎng)的智能車(chē)庫(kù)門(mén)編程

為我們的基于物聯(lián)網(wǎng)的智能車(chē)庫(kù)門(mén)編程,我們必須專注于兩件事,一是控制ESP32的伺服器,另一個(gè)是建立一個(gè)智能車(chē)庫(kù)門(mén)網(wǎng)絡(luò)服務(wù)器,可用于使用手機(jī)打開(kāi)或關(guān)閉我們的智能門(mén)。完整的代碼可以在頁(yè)面底部找到,相同的解釋如下。

這些行包括Arduino草圖所需的庫(kù)。ESP32Servo.h用于使用NodeMCU ESP32微控制器控制伺服電機(jī),wifi .h是啟用設(shè)備中wifi功能的庫(kù)。

這里我們?yōu)樗欧刂谱隽艘恍┳兞?,為wifi憑證做了一些常量。確保將WiFi名稱和密碼更改為您的。聲明用于存儲(chǔ)HTTP請(qǐng)求的服務(wù)器端口和變量。

在設(shè)置部分,我們已經(jīng)為伺服電機(jī)分配了引腳,并開(kāi)始建立WiFi連接。它將在串行監(jiān)視器上打印Wi-Fi連接狀態(tài)和本地IP地址。注意某個(gè)地方的IP地址,它是網(wǎng)頁(yè)的地址。

在開(kāi)始循環(huán)時(shí),我們的設(shè)備始終處于來(lái)自物聯(lián)網(wǎng)web服務(wù)器的命令接收模式,并檢查是否有任何傳入數(shù)據(jù),如果是,則開(kāi)始從本地IP地址獲取數(shù)據(jù)并將其存儲(chǔ)在變量中。此外,它還用于控制伺服運(yùn)動(dòng)。

在接收到命令之后,我們必須處理一件事,我們有兩個(gè)伺服電機(jī),它們必須以不同的角度同時(shí)旋轉(zhuǎn),因?yàn)樗鼈兌荚谙喾吹姆较蛏?。否則,整個(gè)系統(tǒng)就會(huì)崩潰。為了解決這個(gè)問(wèn)題,我們必須做一個(gè)while循環(huán),這樣兩個(gè)電機(jī)每次都移動(dòng)1度,一個(gè)接一個(gè)地移動(dòng)到期望的位置。

這個(gè)循環(huán)的下一部分完全致力于基于HTML的web界面。我們已經(jīng)設(shè)計(jì)了按鈕和名稱,您可以根據(jù)您的選擇更改它們。它將在網(wǎng)頁(yè)上創(chuàng)建一個(gè)交互界面,這樣我們就不需要每次輸入和關(guān)閉,我們將有一個(gè)按鈕。

智能車(chē)庫(kù)門(mén)物聯(lián)網(wǎng)項(xiàng)目使用ESP32 -工作

建好電子部件后,我們必須為它造一個(gè)車(chē)庫(kù)。我用了硬紙板和一些不同顏色的海圖。然后我用熱熔膠槍把伺服電機(jī)安裝在車(chē)庫(kù)門(mén)上。

安裝伺服電機(jī)后,我們必須照顧整個(gè)面包板電路設(shè)置。我用雙面膠帶把它固定在側(cè)壁上,用透明膠帶固定電線。

完成所有設(shè)置和連接后,它就可以工作了。我用的是充電寶。

在構(gòu)建項(xiàng)目之后,有一個(gè)小的過(guò)程可以用智能手機(jī)控制它。首先,如果您想將此設(shè)備連接到路由器,請(qǐng)確保將您的智能手機(jī)連接到相同的網(wǎng)絡(luò)。你也可以使用你的智能手機(jī)熱點(diǎn)連接你的設(shè)備。當(dāng)設(shè)備連接到互聯(lián)網(wǎng)時(shí),你可以在串行監(jiān)視器上找到它的IP地址。然后在智能手機(jī)上的任何瀏覽器的搜索欄中輸入此IP地址,然后您將看到該網(wǎng)頁(yè)。您可以將該頁(yè)面添加到“主界面”中,這樣就不需要每次都重新搜索IP地址了。最后,您的設(shè)備連接到智能手機(jī),我們的智能車(chē)庫(kù)門(mén)物聯(lián)網(wǎng)項(xiàng)目已準(zhǔn)備好進(jìn)行演示。這個(gè)項(xiàng)目的完整工作可以在下面的視頻中找到,希望你學(xué)到了一些有用的東西,并喜歡這個(gè)項(xiàng)目。

//Code for IoT Smart Garage Door Opener

//by iotdesignpro.com

#include

#include

Servo servo1;

Servo servo2;

const char* ssid = "0000";

const char* password = "12345678";

int pos = 0;

WiFiServer server(80); // Set port to 80

String header; // Stores the HTTP request

String doorstate = "off"; // state of door

void setup() {

servo1.attach(15);

servo2.attach(13);

Serial.begin(115200);

// Set the pinmode of the pins to which the LEDs are connected and turn them low to prevent flunctuations

//connect to access point

WiFi.begin(ssid, password);

Serial.print("Connecting to ");

Serial.println(ssid);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}

// Print local IP address and start web server

Serial.println("");

Serial.println("WiFi connected.");

server.begin();

Serial.println("IP address: ");

Serial.println(WiFi.localIP()); // this will display the Ip address of the Pi which should be entered into your browser

}

void loop() {

WiFiClient client = server.available(); // Listen for incoming clients

if (client) { // If a new client connects,

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) {

client.println("HTTP/1.1 200 OK");

client.println("Content-type:text/html");

client.println("Connection: close");

client.println();

if (header.indexOf("GET /door/on") >= 0) {

Serial.println("Door Open");

doorstate = "on";

while (pos < 100) {

Serial.println(pos);

servo1.write(pos);

servo2.write(180 - pos);

pos++;

delay(10);

}

} else if (header.indexOf("GET /door/off") >= 0) {

Serial.println("Door Close");

doorstate = "off";

while (pos > 0) {

servo1.write(pos);

servo2.write(180 - pos);

Serial.println(pos);

pos--;

delay(10);

}

}

// Display the HTML web page

client.println("");

client.println("");

client.println("");

// CSS to style the on/off buttons

client.println("");

client.println("

IoT Based Garage Door

");

if (doorstate == "off") {

client.println("

Open

");

} else {

client.println("

Close

");

}

client.println("


本文編譯自iotdesignpro



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉