从零开始制作魔方机器人(四)编译、刷写固件
1. 安装Ubuntu系统
为了尽量接近开源作者的开发环境少踩坑,我专门装了Ubuntu系统,找了一块不用的硬盘替换到了我的ThinkPad上,用完还可以把硬盘换回来以还原win系统,这个Ubuntu系统盘还能留着备用(Thinkpad拆装硬盘还是很方便的)。
USB转TTL连接电脑后会自动安装CH340驱动,如果不能正常驱动,可能是因为驱动占用导致的,执行 sudo apt remove brltty
命令,重新插拔一次即可,问题参考:
https://blog.51cto.com/u_15473553/5437058
https://blog.csdn.net/weixin_41536025/article/details/100115105
设备名称可能不一样,在我的Ubuntu系统里,debug USB接口设备名是 /dev/ttyACM0
,USB转ttl串口设备名是 /dev/ttyUSB0
后边可能会用到的应用先安装了:
sudo apt install vim
sudo apt install minicom
sudo apt install openssh-server
sudo apt install net-tools
sudo apt install make
sudo apt install cmake
sudo apt install gcc
sudo apt install git
2. PICO开发环境搭建:
Ubuntu系统参照: https://blog.csdn.net/tianizimark/article/details/122713031
Windows系统参照: https://blog.csdn.net/feilusia/article/details/132336543
3. 编译单片机固件
编译成功的前提是PICO开发环境搭建完成,PICO_SDK_PATH
和PICO_TOOLCHAIN_PATH
环境变量正确设置,开始编译
cd ./src_21_step/mcu
mkdir build && cd build
cmake ..
make
几十秒钟即可编译完成,在build目录下会生成cube_robot.uf2
文件。然后将电路板的USB1口连接到电脑上,电脑上出现一个U盘,将cube_robot.uf2
文件拷贝到U盘中,U盘会自动消失,即完成RP2040单片机的固件刷写,刷写完成单片机会自动重启。
此时可以通过 sudo minicom -D /dev/ttyACM0
命令查看单片机的调试信息。
如果要重新刷固件,需要按住SW1按钮,同时将USB1口连接到电脑上。
4. 刷写SPI NAND FLASH
通过USB转TTL工具,把电路板的 H2
连接到电脑,会看到一个 /dev/ttyUSB0
设备。注意,USB转TTL工具的TXD和RXD跟电路板的这两个口要交差连接
按住SW3按钮将USB1重新连接电脑,观察/dev/ttyACM0
口的调试信息,显示的是一个进度,这个进度是在校验NAND FLASH。还没有刷写的时候会显示校验失败,自动进入刷写模式,打开一个新的终端窗口运行 ./prog /dev/ttyUSB0
命令开始刷写,写入有点慢,我的用了16分钟。
注意:
- 通过DebugUSB口查看校验信息,写入lookup.dat文件时,终端里会打印程序执行的信息。
- 如果执行失败,可重新编译
prog
。在./src_21_step/prog_flash
目录下,执行make
命令即可生成针对你系统的prog
可执行文件。 - 遇到
can not open /dev/ttyUSB0
错误,可运行sudo chmod 666 /dev/ttyUSB0
命令后重新执行。
5. 检测
执行完上一步,再一次按住SW3按钮将USB1重新连接电脑,查看校验信息,顺利的话,这次会在调试信息里看到 FLASH CRC ok.
,校验通过。
接下来将颜色传感器连接到电路板的C0和C1口,依次短接三个霍尔传感器的GND和OUT引脚,短接的时候对应的指示灯会亮,然后可以看到颜色传感器的自检通过信息 tcs3472_check_id(0/1) pass
。
6. 测试电机
断电将电机连接到电路板,电机会一直转。依次短接三个霍尔传感器,三个电机会依次停止转动,都短接完,三个电机会抖一下,此时的电机轴是无法用手转动的。电机的连接线序参照: https://blog.csdn.net/weixin_44543463/article/details/125624679