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

介绍

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] x 1

  • L298N H-Bridge x 1

  • 4輪車 or 2輪車+萬向輪

範例説明

流程

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

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

要了解有關 L298N H-Bridge 技術細節的更多信息,請查看 此處
Open the example, “Files” “Examples” “WiFi” “WiFiControlCar”.
在範例中使用了以下引腳:

ENA

IN1

IN2

IN3

IN4

ENB

8

9

10

11

12

13

Wiring:

1

備註

  • 這邊我們將Ameba的5V接到L298N的+12V供電的地方,但並不是每個L298N模組都可以使用5V供電。如果不行的話,請使用其它電源(Ex. +12V)供電給L298N的+12V接腳,再用L298N的+5V供電給Ameba。

  • 馬達的正確接線取決於每個型號(不同型號可能相反)。 請先運行測試程序,在組裝小車前確保它運行正常。

  • 為方便起見,建議使用杜邦線來處理馬達和L298N 的接線。

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

然後,將代碼上傳到 Ameba

在範例中,將標示的代碼段修改為相應的資訊。
2
上傳代碼並按下 Ameba 上的重置按鈕。建立連接後,您會在Arduino IDE中看到“To see this page in action, open a browser to http://xxx.xxx.xxx.xxx”的信息,如圖:

3

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

4

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

Demo 影片

程式碼説明

使用 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