遙控開關
===
## 目錄
[TOC]
# 團購表單
[google表單](https://forms.gle/Ajyf9AAQ7n7bMr7b6)
其實我也不知道有沒有人真的要啦,反正先做個表單統計一下,如果超過一定的人數再來開團(?
## 準備材料
1. ESP-01 
3. ESP8266 USB轉接燒錄板 
4. SG-90 伺服馬達 
★ 注意伺服馬達的線顏色都是固定的,分別是訊號(橘)、VCC(紅)、GND(棕)
4. 杜邦線(買公對公跟母對母的就好) 
6. 供電的東西(插座、電池盒、行動電源)
7. 麵包版(如果打算直接插USB,不接電池的不用買) 
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面(○'◡'○)ノ")

基本上就是 我同意 -> 下一步 -> 下一步,就安裝好了
2. 下載ESP8266 USB轉接燒錄板的晶片模組,但注意的是ESP-01的轉接板有兩種晶片!
- [CH34X](https://www.wch.cn/download/CH341SER_EXE.html)

直接點那個又大又藍的按鍵就對了
- [CP210X](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads)

選擇CP210x Windows Drivers
3. 將ESP-01跟轉接燒錄板組合,插上電腦(不要用USB延長線,可能會辨識不到)

4. 打開裝置管理員 -> 連接埠 -> 查看剛剛插上去的USB在哪個COM幾,記下來 (我的舉例的話就是COM6)

5. 接下來就是打開Arduino做環境安裝了!
檔案 -> 喜好設定
下面的 其他開發板管理員網址裡面加上下面這行
http://arduino.esp8266.com/stable/package_esp8266com_index.json
確定☑️
工具 -> 開發板 -> 開發板管理員

搜尋8266,並選擇ESP8266

回到工具 -> 開發板 -> 出現esp8266 -> 選擇 Generic ESP8266 Module

最後工具 -> 連接埠 -> 選擇第四步驟中看到的COM

恭喜這樣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充電
這種的接線比較簡單

通常燒錄器後面都會有接腳的對應說明,照著接就好了

接完線之後只要把USB插到插頭或是行動電源後就
Do Re Mi So (∩^^ᴗ^^)⊃━☆゚
{%youtube W0EC6qbLp1I %}
#### 使用電池
這種的接線比較複雜,需要另外接麵包板比較方便

Tinkercad沒有esp8266,小畫家又不太好畫畫請見諒( ´•̥ω•̥` )
大致是來講就是麵包板中每一個橫排的五個動都是相通的,左右兩邊是不相通的哦!
簡單來說就是
- VCC 接 紅色線 接 正極
- GND 接 棕色線 接 負極
- GPIO0 接 橘色線
這樣接完後,因為用串聯的方式所以電壓會是 1.5V * 3 = 4.5V
但是ESP-01 可承受的電壓為3.3 ~ 3.6V,所以再加裝個電阻比較能延長壽命
這裡就先不示範了因為我家沒有三組入的電池盒
### 上傳程式碼
好,現在我們回到Arduino IDE,因為我們要實現手機控制,所以我們必須在上傳程式碼前先把序列埠監控窗打開

點完放大鏡後會發現下面除了輸出,多了一個序列埠監控窗

這個時候再點擊上傳,就是那個 -> 箭頭的符號
★ 注意上傳的時候伺服馬達一定要接在上面,不然你會發現監控窗會是空白神麼都跑不出來
如果上傳後,點進監控窗有跳出下面的資訊就代表你成功了!

其中 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. 在固定伺服馬達之前,先讓他跑個幾次確定開關有沒有反,一開始沒有測試的話,固定後要在改就很麻煩了
建議是在板子通電、手機設定完後先按按鈕確定開關燈、閒置角度合適再上牆
最好是在馬達在閒置的狀態下去把手臂平行裝上去,再看開關燈角度去做微調