感谢“电子发烧友网”和小河狸创客科技有限公司提供了小河狸创客格物L3开发板的评测机会。 前面两次我们介绍了智能升降车和飞机弹射器,这两个测试都是基于小河狸提供的编程环境,程序也比较简单。最后这次自由我们将测试小河狸创客的MicroPython编程能力,并借助App Inventor开发手机软件实现遥控转向小车。 一、 硬件组装
转向小车的后轮结构和智能升降车差不多,使用360度舵机驱动。
前面的转向结构为经典的平行四边形结构。小河狸提供了齿条,但是太长了,不适合小车。所以直接使用180度舵机控制四边形结构的转动,实现左右各90度的旋转。格物板作为核心控制部件,编程控制2个舵机。
二、 MicroPython编程
小河狸格物板处理支持类似Scratch的图形界面编程,还可以使用MicroPython进行软件编程控制。我们使用的编程工具是Mu Editor,它的优点是上手简单。
使用USB线连接电脑和格物板,然后在Mu Editor中选择模式为“ESP32 MicroPython”,再点击“REPL”就可以连接到板卡上了。点击“运行”按钮就可以在板子上执行MicroPython程序了。
我们的控制方案是由格物板开启WiFi热点,热点SSID为yourSSID,密码为yourPASSWD。然后监听10086端口。由格物板开启WiFi热点可以避免繁琐的配网工作,适合各种场合的切换,特别是室外没有WiFi信号的情况。手机先连上格物板的WiFi热点,并向指定的端口发送简单的控制命令就可以完成对小车的控制,如FWD和BACK控制前后移动,LEFT和RIGHT控制左右转向。
完整的程序如下:
- # generated by GewuBit
- import gewu
- from wifi import *
- import network
- import socket
- iot_wifi = gewu_wifi()
- angle = 90
- def on_start():
- global angle
- iot_wifi.enable_APWiFi(str('yourSSID'), str('yourPASSWD'))
- gewu.display.text(str('Hello world!'), 0, 0, 6)
- gewu.display.show()
- gewu.servo_p3.set_angle(angle)
- listenSocket = None
- port = 10086
- listenSocket = socket.socket() # create socket
- print(listenSocket)
- listenSocket.bind(('', port)) # bind ip and port
- print("bind OK")
- listenSocket.listen(1)
- listenSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- print("tcp waiting...")
- while True:
- print("accepting......")
- conn, addr = listenSocket.accept()
- print(addr, "connected")
- while True:
- data = conn.recv(1024)
- if len(data) == 0:
- print("close socket")
- conn.close()
- break
- data = data.decode()
- print(data)
- gewu.display.text(str(data), 0, 20, 6)
- gewu.display.show()
- #命令解析:
- if data == "FWD":
- gewu.servo_p4.set_speed(-30)
- if data == "BACK":
- gewu.servo_p4.set_speed(30)
- elif data == "STOP":
- gewu.servo_p4.set_speed(0)
- elif data == "RIGHT":
- angle += 15
- if angle > 180:
- angle = 0
- print(angle)
- gewu.servo_p3.set_angle(angle)
- elif data == "LEFT":
- angle -= 15
- if angle < 0:
- angle = 0
- print(angle)
- gewu.servo_p3.set_angle(angle)
- elif data == "ZERO":
- gewu.servo_p3.set_angle(0)
- data=''
- yield
- def repeat():
- next(func_start)
- while True:
- repeat()
- gewu.sleep_ms(1)
三、 App Inventor编程
App Inventor 是谷歌推出一种软件工具,可以使用户更容易的为Android智能手机编写应用程序。该工具使用和小河狸编程工具类似的拖放代码块的图形方式。所以使用该工具开发手机App对于小河狸的用户应该是上手很快的。
Google App Inventor是一个完全在线开发的Android编程环境,国内用户一般使用离线版。有关App Inventor离线版的下载和使用请参考:https://blog.csdn.net/bemfa/article/details/119565437。
用户界面的设计比较简单,就是设计了5个按钮,方便用于发送控制命令。
逻辑部分也是相当的简单。
最后使用打包APK功能就可以得到在手机上安装的APK文件了。
四、 测试视频
最后看一下测试的视频吧,简单但是很有趣。