前言&致謝
為甚麼說「從零開始」呢,主要因為這是我第一次接觸硬體,之前覺得硬體很難、很可怕,但是畢業前想給自己挑戰一下,所以毅然決然決定期末課堂專題要做出一個遙控車車。想要致謝的是,非常感謝開發路上與我討論、解惑的巴友們,謝謝你們,讓我不會被無助感勸退。
*使用ESP8266是因為他比較便宜,要做到低延遲可能要使用ESP32的藍芽功能,但我還滿會燒壞板子的,所以先用便宜的。
成品:
程式碼一樣在
個人網站上比較方便觀看
![](https://i2.bahamut.com.tw/editor/emotion/16.gif)
![](https://i2.bahamut.com.tw/editor/emotion/16.gif)
。
遙控器材料
- ESP8266
- 3V電池 (兩個3A電池串聯)
- MCP3008:類比數位轉換器(ADC),主要是因為ESP板子只有一個類比接口,但JoyStick有兩個(x,y)類比訊號,所以須使用ADC擴充。
- JoyStick模組
NodeMCU ESP8266
叫它ESP8266其實不太正確,ESP8266是上面的wifi模組晶片,而下面比較大的是NodeMCU擴充基座。
ESP8266 晶片
再注意的是NodeMCU有分V3 (CH340),和V2(CP2102 )兩版,主要差在尺寸和USB晶片,如果要再買擴充基座的話要仔細看好版本。
![](https://i.imgur.com/oyrK4yD.png)
(左)NodeMCU V3;(中)NodeMCU V2 ;(右) V2的擴充基座。 但V2的USB微處理器被我燒掉了。
左半邊多為"S"開頭的針腳,S表"Serial",通常是走SPI協定時需要用到。
硬體傳輸介面[2]
傳輸介面常見的有UART、I2C、SPI,通常板子上都會提供多種介面針腳供使用。
UART
UART使用RX和TX接口進行一對一傳輸: R表接收"Receive"、T表傳輸"Transport"。 當兩裝置要透過UART相接時,需Rx接另一端的Tx,反之亦然。
例如以前的序列埠(Serial port) RS系列,以前鍵盤是透過這種接頭連接電腦,現在多演變成USB了。
優點:接孔簡單。
缺點:傳輸慢、只能一對一。
I2C
I2C一樣只使用兩個針腳(串列資料線SDA、串列時鐘線SCL)連接,但透過時脈分流,達到一對多個裝置的連接。[3]
有些裝置(如加速度模組)會提供走I2C介面或SPI介面的接口。
如果走I2C介面,可只接SDA和SCL,SDO是走SPI介面的。
優點:可接多個裝置。
缺點:不能同時發送與接收訊息。
冷知識:2是2次方的意思,英文應唸作:"I squared C"
SPI (串行外設介面)
採全雙工,能同時傳輸與接收訊息,且可接多個裝置(N+3條線)。
記憶體(如SD卡、快閃)是基於這個介面做發展的。
圖源[4],每多接一個裝置就需多一條SS線路。SS(片選訊號)一般為低電位,由主機選擇要使要哪個裝置。
優點:速度較快、可接多個裝置。
缺點:每多接一個裝置就需多一條SS線路。
講完古之後,接下來要解釋怎麼接JoyStick。
2軸JoyStick 模組
針腳如下:
- GND:接地。
- +5V:電源,接3v即可使用。
- VRx:輸出類比x軸資訊。
- VRy:輸出類比y軸資訊。
- SW:按鈕(輸出0,1)。
![](https://lastminuteengineers.b-cdn.net/wp-content/uploads/arduino/PS2-Joystick-Module-Movement-Analog-Values-on-Arduino.png)