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] 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/
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