Python编程小车零基础开发教程(ESP32-DEV-V20电机驱动一体化开发板)

手机WIFI远程遥控小车完整程序

1. MicroPython课程介绍
2. 安全注意事项
3. ESP32-DEV-20开发板使用说明
4. 安装MicroPython编程软件Thonny
5. 程序开发前的准备工作
6. 给引脚设置电平值-点亮ESP32开发板外接LED小灯
7. 延时语句-使得LED小灯闪烁
8. 手机WIFI远程遥控M1电机转动
9. 小车组装
10. 手机WIFI远程遥控小车完整程序
11. 手机WIFI远程遥控小车完整程序优化

1. 课程目标

通过手机APP中的A(前进)、E(后退)、B(左转)、D(右转)四个键控制小车行驶。

图片.png 

手机APP使用UDP协议发送指令,各按键按下和抬起发送的指令如下表。

指令表

按键

按下发送指令

抬起发送指令

1

1_DOWN

1_UP

2

2_DOWN

2_UP

3

3_DOWN

3_UP

4

4_DOWN

4_UP

5

5_DOWN

5_UP

6

6_DOWN

6_UP

7

7_DOWN

7_UP

8

8_DOWN

8_UP

9

9_DOWN

9_UP

A

A_DOWN

A_UP

B

B_DOWN

B_UP

C

C_DOWN

C_UP

D

D_DOWN

D_UP

E

E_DOWN

E_UP

2. 硬件接线

和上节完全一致。

3. 程序代码

M1电机驱动口有2个口,分别对应32号、33号引脚。只要给其中一个引脚设置高电平(数字1),另一个引脚设置低电平(数字0)就可以驱动电机转动。如果要驱动电机反转,只要调换2个引脚的电平值即可。如果要停止电机,则2个引脚都设置成低电平。

同理,M2电机驱动口有2个口,分别对应18号、19号引脚。只要给其中一个引脚设置高电平(数字1),另一个引脚设置低电平(数字0)就可以驱动电机转动。如果要驱动电机反转,只要调换2个引脚的电平值即可。如果要停止电机,则2个引脚都设置成低电平。

手机WIFI远程遥控小车完整程序代码如下:

#引入使用到的模块

import machine

import network

import socket

 

#申明4个引脚为输出引脚

pin32 = machine.Pin(32, machine.Pin.OUT)

pin33 = machine.Pin(33, machine.Pin.OUT)

 

pin18 = machine.Pin(18, machine.Pin.OUT)

pin19 = machine.Pin(19, machine.Pin.OUT)

 

#发射WIFI信号

apWLAN = network.WLAN(network.AP_IF)

apWLAN.config(essid='XDS',password='',authmode=0) #申明WIFI信号名称为:XDS,密码:无。

apWLAN.active(True)

 

#声明接收遥控指令的端口号

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

udp_socket.bind(("0.0.0.0", 8080))

 

# 循环接受指令

while True:

 

    #接收指令

    recv_data_byte_array, sender_info = udp_socket.recvfrom(1024)

    recv_data_string = recv_data_byte_array.decode('utf-8') #接收的数据格式是字节数组,把字节数组转换成字符串

 

    #对接收到的指令进行判断

    if recv_data_string=="A_DOWN": #当接收到按下前进键按钮

        #驱动M1电机(左侧2个电机)的车轮向前转

        pin32.value(1)

        pin33.value(0)

        #驱动M2电机(右侧2个电机)的车轮向前转

        pin18.value(1)

        pin19.value(0)

    elif recv_data_string=="A_UP": #当接收到抬起前进键按钮

        #停止M1电机

        pin32.value(0)

        pin33.value(0)

        #停止M2电机

        pin18.value(0)

        pin19.value(0)

 

    if recv_data_string=="E_DOWN": #当接收到按下后退键按钮

        #驱动M1电机的车轮向后转

        pin32.value(0)

        pin33.value(1)

        #驱动M2电机的车轮向后转

        pin18.value(0)

        pin19.value(1)

    elif recv_data_string=="E_UP": #当接收到抬起前进键按钮

        #停止M1电机

        pin32.value(0)

        pin33.value(0)

        #停止M2电机

        pin18.value(0)

        pin19.value(0)

 

    if recv_data_string=="B_DOWN": #当接收到按下左转键按钮

        #驱动M1电机的车轮向后转

        pin32.value(0)

        pin33.value(1)

        #驱动M2电机的车轮向前转

        pin18.value(1)

        pin19.value(0)

    elif recv_data_string=="B_UP": #当接收到抬起左转键按钮

        #停止M1电机

        pin32.value(0)

        pin33.value(0)

        #停止M2电机

        pin18.value(0)

        pin19.value(0)

 

    if recv_data_string=="D_DOWN": #当接收到按下右转键按钮

        #驱动M1电机的车轮向前转

        pin32.value(1)

        pin33.value(0)

        #驱动M2电机的车轮向后转

        pin18.value(0)

        pin19.value(1)

    elif recv_data_string=="D_UP": #当接收到抬起右转键按钮

        #停止M1电机

        pin32.value(0)

        pin33.value(0)

        #停止M2电机

        pin18.value(0)

        pin19.value(0)

4. 实验结果

    参看实验结果视频。


附件:
手机WIFI远程遥控小车完整程序.py
【象大帅】手机WIFI远程遥控小车完整程序.pdf