【2023 · CANN训练营第一季】- 基于Atlas 200I DK A2的智能小车设计与实现 第二章 学习笔记

一、学习目标

1. 掌握单片机类控制的使用方法

二、ESP32控制器

1. 开发板介绍

ESP32 IOT&Robot Board (4Motor)物联网机器人开发板(4 电机),是一款以ESP-WROOM-32单片机为核心的物联网开发板。

 2. 控制器作用

在使小车实现感知周围环境并自主完成相应的功能之前需要了解底层的控制部分是如何实现的,从传感器采集到数据之后,在开发者套件上进行推理,然后需要根据推理结果发出指令控制小车的运动状态,就需要使用微控制器。

 三、ESP32控制器开发入门

1.单片机实现控制原理

目前小车上需要使用ESP32进行控制的主要为四个电机以及摄像头云台的两轴舵机,二者的实现方式均是依靠PWM信号脉冲的占空比。

(1)电机

电机的转动原理:1个电机对接ESP32开发板2个引脚,当两个引脚分别接高低电平则开始以一定方向转动,电平相反则反方向转动,同为低或者高均不转动。

电机转速控制:控制电信号PWM波的占空比,占空比越大,说明周期内高电平持续时间越长,电机转速越快。

(2)舵机

舵机是由直流电机、减速齿轮组、传感器(可变电阻)和控制电路组成的一套自动控制系统。

舵机只能在一定角度内转动(有最大旋转角度比如:180度),支持反馈转动的角度信息(如果带编码器就可以反馈角度),支持控制某物体转动一定角度。

舵机的控制原理:舵机的输入线共有三条,红色是电源线,棕色是地线,这两根线给舵机提供电源。另外一根线是控制信号线,一般为桔黄色。舵机的信号线作为输入线用于接收PWM信号(定时器产生)。改变不同的占空比就可以控制转动的角度。

2.串口实现数据通信

Arduino封装了ESP32的串口库函数,可以直接使用并自定义引脚为收发串口,但是选择的引脚必须是能够支持双向收发的I/o口;同样在Python中的Pyserial包也封装了主控设备串口库函数,修改HardwareSerial类指定对应的引脚即可。

 3.通信协议及控制逻辑

串口通信的方式是单一字节传输,为了减少指令传输时间、提高控制灵敏度,将控制指令数据格式定义为7个short类型的有符号数字其中前四位是对应四个电机的速度值,后接两个舵机的角度值,最后一个是校验码。

 4. ESP32主程序设计

具有了ESP32控制电机、舵机的底层硬件封装库之后,ESP32主程序主要由4个部分组成

 5. Python主程序设计

在拥有ESP32控制程序后,使用Python主程序来进行通信和基本函数的封装,,在其他设备上对其进行控制并方便模型推理之后的调用,主要功能是实现基本运动控制的功能函数、对控制指令进行序列化防止指令冲突和丢失、串口通信数据收发等。两个必须要保证的是同一时刻仅能下发一个指令到ESP32,以及正确将动作解析为电机速度和舵机角度。

四、开发板烧录

1. 配置功能库文件

将Car/ESP32/下的“ESP32_Servo.cpp”、“ESP32_Servo.h”、“RL_ESP32_Motor.cpp”、“RL_ESP32_Motor.h”四个文件复制到Arduino库文件路径下

2. 烧录代码到ESP32开发板

(1)在PC使用Arduino工具单击“文件>打开”按钮,选择“Car/ESP32/car_ctrl_esp32.ino”文件打开

(2)在Arduino工具中烧录控制代码至ESP32单片机

 3. 上传代码到开发者套件

以root用户远程登录小车的开发者套件,将“ascend-devkit-master\src\E2E-Sample”目录中“Car”文件夹上传到开发者套件任意目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值