AmebaMotors - 使用 Ameba 作為服務器來控制小車

AmebaMotors介紹

AmebaMotors 是一個提供如何控制馬達相關的 API 庫。
請下載 AmebaMotors(https://github.com/ambiot/ambd_arduino/raw/master/Arduino_zip_libraries/AmebaMotors.zip)
並且新增 AmebaMotors 至 Ameba: https://www.arduino.cc/en/Guide/Libraries#toc4

材料準備

• AmebaD [ AMB21 / AMB22 / AW-CU488 Thing Plus ] x 1

• L298N H-Bridge x 1
• 4輪車 or 2輪車+萬向輪

範例說明

流程

在這個範例中,我們將 Ameba 連接到 WiFi 並使用 Ameba 作為服務器,用戶可以通過網頁控制 4 輪/2 輪小車。

首先,將 Ameba 連接到 L298N H-Bridge 和小車。

要了解有關 L298N H-Bridge 技術細節的更多信息,請查看此處 https://www.amebaiot.com/en/ameba-arduino-amebamotors-basic/
打開範例,“Files” -> “Examples” -> “AmebaWiFi” -> “WiFiControlCar”。

在範例中使用了以下引腳:

ENAIN1IN2IN3IN4ENB
8910111213

Wiring:

Note:

• 這邊我們將Ameba的5V接到L298N的+12V供電的地方,但並不是每個L298N模組都可以使用5V供電。如果不行的話,請使用其它電源(Ex. +12V)供電給L298N的+12V接腳,再用L298N的+5V供電給Ameba。
• 馬達的正確接線取決於每個型號(不同型號可能相反)。 請先運行測試程序,在組裝小車前確保它運行正常。
• 為方便起見,建議使用杜邦線來處理馬達和L298N 的接線。

接線完之後,在每次需要改動程式時,可以先將L298N的電源拔掉,避免馬達不預期地亂跑。然後再將Ameba接上電源。上傳完程式並確定開始測試時再將L298N的電源插上。

然後,將代碼上傳到 Ameba

在範例中,將標示的代碼段修改為相應的資訊。

上傳代碼並按下 Ameba 上的重置按鈕。 建立連接後,您會在Arduino IDE中看到“To see this page in action, open a browser to http://xxx.xxx.xxx.xxx”的信息,如圖:

接下來,打開同一網域下的電腦或手機瀏覽器並輸入網址。

在網頁中,您可以按相應的按鈕來控制4個方向中的任何一個方向來控制小車。

Demo 影片

https://youtu.be/ItVaPQ4dv8Q

程式碼說明

使用 WiFi.begin() 建立 WiFi 連接。
https://www.arduino.cc/en/Reference/WiFiBegin

獲取 WiFi 連接信息:

使用 WiFi.SSID() 獲取當前連接網絡的 SSID。
https://www.arduino.cc/en/Reference/WiFiSSID

使用 WiFi.RSSI() 獲取連接的信號強度。
https://www.arduino.cc/en/Reference/WiFiRSSI

使用 WiFi.localIP() 獲取 Ameba 的 IP 地址。
https://www.arduino.cc/en/Reference/WiFiLocalIP

使用 WiFiServer server() 創建一個監聽指定端口的服務器。
https://www.arduino.cc/en/Reference/WiFiServer

使用 server.begin() 使服務器開始監聽連接。
https://www.arduino.cc/en/Reference/WiFiServerBegin

使用 server.available() 獲取連接到服務器並具有可供讀取數據的客戶端。
https://www.arduino.cc/en/Reference/WiFiServerAvailable

使用 client.connected 獲取客戶端是否已連接。
https://www.arduino.cc/en/Reference/WiFiClientConnected

使用 client.println() 打印數據。
https://www.arduino.cc/en/Reference/WiFiClientPrintln

使用 client.print() 將數據打印到客戶端連接的服務器。
https://www.arduino.cc/en/Reference/WiFiClientPrint

使用 client.available() 返回可供讀取的字節數。
https://www.arduino.cc/en/Reference/WiFiClientAvailable

使用 client.read() 讀取從客戶端連接的服務器接收到的下一個字節。
https://www.arduino.cc/en/Reference/WiFiClientRead

使用 client.stop() 斷開客戶端與服務器的連接。
https://www.arduino.cc/en/Reference/WiFIClientStop

請先確認已安裝QQ通訊軟體