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”。
在范例中使用了以下引脚:
ENA | IN1 | IN2 | IN3 | IN4 | ENB |
8 | 9 | 10 | 11 | 12 | 13 |
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 影片
程式码说明
使用 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