遙控開關 === ## 目錄 [TOC] # 團購表單 [google表單](https://forms.gle/Ajyf9AAQ7n7bMr7b6) 其實我也不知道有沒有人真的要啦,反正先做個表單統計一下,如果超過一定的人數再來開團(? ## 準備材料 1. ESP-01 ![image](https://hackmd.io/_uploads/ByiEkDfhp.png =20%x) 3. ESP8266 USB轉接燒錄板 ![image](https://hackmd.io/_uploads/Hy_ElvM2p.png =20%x) 4. SG-90 伺服馬達 ![image](https://hackmd.io/_uploads/BJaIxvM26.png =20%x) ★ 注意伺服馬達的線顏色都是固定的,分別是訊號(橘)、VCC(紅)、GND(棕) 4. 杜邦線(買公對公跟母對母的就好) ![image](https://hackmd.io/_uploads/ryY5eDznp.png =20%x) 6. 供電的東西(插座、電池盒、行動電源) 7. 麵包版(如果打算直接插USB,不接電池的不用買) ![image](https://hackmd.io/_uploads/Sk4ZWwz2T.png =20%x) 8. 裝飾小物(不然陽春的很醜) 9. 爸爸或有機電基礎的 ( 工 ) 朋 ( 具 ) 友 ( 人 ) - Q:哪裡買? A:蝦皮、電子材料行、學過Arduino的朋友家裡 ## 動手前的小提醒 建議看完再決定要不要動手 1. 這個懶人小物會吃電,所以要馬附近要有插座,要馬要準備電池組或行動電源供電 2. 因為用的是esp8266webserver庫,所以要使用的時候是要在同一個網域下才能使用,並不能實現 真•遠端操控 (至少要在同個房子收到同個WI-FI) 3. 如果不裝飾真的很醜!!!!!!!!!!! ## 教學 ### Arduino (學過基礎的人可直接從目錄跳到下一步) 1. 下載[Arduino IDE](https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE "下載YA面(○'◡'○)ノ") ![image](https://hackmd.io/_uploads/H1gv2MG26.png "不是點圖片的下載啦") 基本上就是 我同意 -> 下一步 -> 下一步,就安裝好了 2. 下載ESP8266 USB轉接燒錄板的晶片模組,但注意的是ESP-01的轉接板有兩種晶片! - [CH34X](https://www.wch.cn/download/CH341SER_EXE.html) ![image](https://hackmd.io/_uploads/HkvrzIzna.png) 直接點那個又大又藍的按鍵就對了 - [CP210X](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads) ![image](https://hackmd.io/_uploads/S1JCZLznp.png) 選擇CP210x Windows Drivers 3. 將ESP-01跟轉接燒錄板組合,插上電腦(不要用USB延長線,可能會辨識不到) ![S__192184322](https://hackmd.io/_uploads/SJgZyUMhp.jpg "Do Re Mi So~~" =70%x) 4. 打開裝置管理員 -> 連接埠 -> 查看剛剛插上去的USB在哪個COM幾,記下來 (我的舉例的話就是COM6) ![image](https://hackmd.io/_uploads/HkEmkIf3a.png) 5. 接下來就是打開Arduino做環境安裝了! 檔案 -> 喜好設定 下面的 其他開發板管理員網址裡面加上下面這行 http://arduino.esp8266.com/stable/package_esp8266com_index.json 確定☑️ 工具 -> 開發板 -> 開發板管理員 ![image](https://hackmd.io/_uploads/HkoEm8MhT.png) 搜尋8266,並選擇ESP8266 ![image](https://hackmd.io/_uploads/rk8HXUG26.png) 回到工具 -> 開發板 -> 出現esp8266 -> 選擇 Generic ESP8266 Module ![image](https://hackmd.io/_uploads/SyqUQIMnp.png) 最後工具 -> 連接埠 -> 選擇第四步驟中看到的COM ![image](https://hackmd.io/_uploads/S17vmUM26.png) 恭喜這樣Arduino就設定好囉ヽ(〃'▽'〃)ノ ### 程式碼 可以不用搞懂直接複製貼上,但是其中的網路名稱跟密碼一定要改!! 不然連不上網路就白搞了 Wi-Fi名稱跟密碼在第14行 ==wifiMulti.addAP("你的Wi-Fi名稱", "你的Wi-Fi密碼");== ```c= #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> #include <ESP8266WebServer.h> #include <Servo.h> Servo Servo1; ESP8266WiFiMulti wifiMulti; ESP8266WebServer esp8266_server(80); void setup(void){ Serial.begin(9600); Servo1.attach(0); //給伺服馬達綁定一個接腳,我這裡舉例用0 wifiMulti.addAP("你的Wi-Fi名稱", "你的Wi-Fi密碼"); // 這裡需要輸入你家的Wi-Fi名稱跟密碼,裝置啟動後會掃描當前所有網路,並查找有沒有這裡列出的Wi-Fi ID,如果有就會嘗試用你在這裡儲存的密碼去做連接 //wifiMulti.addAP("你的Wi-Fi名稱2", "你的Wi-Fi密碼2"); //如果家裡不只一個網路,可以輸入多個,但要記得手機也要連到同個網路才能操作,需要的話自行把最前面兩條斜線刪掉 Serial.println("Connecting ..."); int i = 0; while (wifiMulti.run() != WL_CONNECTED) { delay(1000); Serial.print(i++); Serial.print(' '); } // Wi-Fi如果成功連接,會在序列埠監控窗輸出中顯示成功訊息 Serial.println('\n'); Serial.print("Connected to "); Serial.println(WiFi.SSID()); Serial.print("IP address:\t"); Serial.println(WiFi.localIP()); // 這個IP很重要,一樣會在序列埠監控窗中顯示 esp8266_server.begin(); esp8266_server.on("/", HTTP_GET, handleRoot); esp8266_server.on("/openLed", HTTP_GET, openLed); esp8266_server.on("/closeLed",HTTP_GET,closeLed); esp8266_server.onNotFound(handleNotFound); Serial.println("HTTP esp8266_server started");// 出現這行代表網路功能成功啟動 } void loop(void){ delay(100); esp8266_server.handleClient(); } void handleRoot() { esp8266_server.send(200, "text/html","HI"); } void openLed() { Serial.println("open"); Servo1.write(0); //開燈的角度 delay(1000); Servo1.write(45); //閒置時的角度 esp8266_server.sendHeader("Location","/"); esp8266_server.send(303); } void closeLed() { Serial.println("close"); Servo1.write(100); //關燈的角度 delay(1000); Servo1.write(45); //閒置時的角度 esp8266_server.sendHeader("Location","/"); esp8266_server.send(303); } void handleNotFound(){ esp8266_server.send(404, "text/plain", "404: Not found"); } ``` 這邊打完先不要按上傳,我們先來把線接好 ### 接線 有兩種接線,自己選擇自己合適的 #### 用燒錄器當USB充電 這種的接線比較簡單 ![image](https://hackmd.io/_uploads/SkL5wvGhT.png) 通常燒錄器後面都會有接腳的對應說明,照著接就好了 ![EBD0042B-46CC-4377-86D3-96656CFE41D9](https://hackmd.io/_uploads/ByuADwGha.jpg =70%x) 接完線之後只要把USB插到插頭或是行動電源後就 Do Re Mi So (∩^^ᴗ^^)⊃━☆゚ {%youtube W0EC6qbLp1I %} #### 使用電池 這種的接線比較複雜,需要另外接麵包板比較方便 ![image](https://hackmd.io/_uploads/HyktJ_z3a.png) Tinkercad沒有esp8266,小畫家又不太好畫畫請見諒( ´•̥ω•̥` ) 大致是來講就是麵包板中每一個橫排的五個動都是相通的,左右兩邊是不相通的哦! 簡單來說就是 - VCC 接 紅色線 接 正極 - GND 接 棕色線 接 負極 - GPIO0 接 橘色線 這樣接完後,因為用串聯的方式所以電壓會是 1.5V * 3 = 4.5V 但是ESP-01 可承受的電壓為3.3 ~ 3.6V,所以再加裝個電阻比較能延長壽命 這裡就先不示範了因為我家沒有三組入的電池盒 ### 上傳程式碼 好,現在我們回到Arduino IDE,因為我們要實現手機控制,所以我們必須在上傳程式碼前先把序列埠監控窗打開 ![image](https://hackmd.io/_uploads/ry-aIuz2p.png) 點完放大鏡後會發現下面除了輸出,多了一個序列埠監控窗 ![image](https://hackmd.io/_uploads/H1uZwdM2T.png) 這個時候再點擊上傳,就是那個 -> 箭頭的符號 ★ 注意上傳的時候伺服馬達一定要接在上面,不然你會發現監控窗會是空白神麼都跑不出來 如果上傳後,點進監控窗有跳出下面的資訊就代表你成功了! ![image](https://hackmd.io/_uploads/HJ43DuMhp.png) 其中 Connected to XXXXX(會是你的網路名稱) IP address後面的數字是你的ESP8266的IP ### 上電後控制 1. http://192.168.1.142/openLed 2. http://192.168.1.142/closeLed 上面是開燈的網址,下面是關燈的網址 **192.168.1.142** ⭠ 這個部分要改成自己ESP8266的IP,你連我的也沒用你關不到我家的燈 σ ゚∀ ゚)σ 理論上到這裡就告一段落了,接下來是如何用手機控制 ### iPhone 捷徑 這個直接上影片示範 {%youtube YUmenaNOvCQ %} ### Android 捷徑 先道歉我沒有用安卓的朋友 <(_ _)> 期待有人可以看完iPhone的之後知道Android怎麼設定,然後願意跟我分享我再跟大家說 ## 注意點 1. ESP-01 可承受的電壓為3.0 ~ 3.6V,通常會使用3.3V去做供電,但落在這區間都算OK 小於這個值的可以試試但有可能會跑不動 大於這個值的就不要用了,特別是很多行動電源都是5V供電,會燒壞8266,所以用之前最好先看一下後面的供電電壓 2. 在固定伺服馬達之前,先讓他跑個幾次確定開關有沒有反,一開始沒有測試的話,固定後要在改就很麻煩了 建議是在板子通電、手機設定完後先按按鈕確定開關燈、閒置角度合適再上牆 最好是在馬達在閒置的狀態下去把手臂平行裝上去,再看開關燈角度去做微調