Python编程ESP8266开发板零基础教程

ESP-12E L293D两路电机驱动扩展板-手机遥控小车完整程序

1. 课程介绍
2. ESP8266开发板引脚号说明
3. 安装CP2102串口驱动
4. 安装Python编程软件Thonny
5. 程序开发前的准备工作
6. 给引脚设置数字值-点亮ESP8266开发板自带LED小灯
7. 给引脚设置数字值-点亮ESP8266开发板外接LED小灯
8. 延时语句-使得LED小灯闪烁
9. for循环语句-使得开发板外接LED小灯闪烁
10. while循环语句-使得LED小灯无限次闪烁
11. while循环语句-使得LED小灯有限次闪烁
12. 程序保存到芯片设备上
13. ESP-12E L293D两路电机驱动扩展板-测试
14. ESP-12E L293D两路电机驱动扩展板-手机遥控小车完整程序

1. 课程目标

掌握设置WIFI参数,使用手机APP遥控小车。

2. 硬件接线

按如下图组装小车:

图片.png 

图片.png 

接线说明:

(1)左侧两个电机的黑线都接到电机驱动板A-”口上。

(2)左侧两个电机的红线都接到电机驱动板A+”口上。

(3)右侧两个电机的红线都接到电机驱动板B-”口上。

(4)右侧两个电机的黑线都接到电机驱动板B+”口上。

(5)电源的红线(正极)接到电机驱动板VM”口上。

(6)电源的红线(负极)接到电机驱动板GND”口上。

3. 手机安装遥控APP

手机扫描如下二维码,安装遥控APP

图片.png 

如下图,按下A按钮(向上箭头按钮)会发送“A_DOWN”指令,抬起A按钮会发送“A_UP”指令。

图片.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

 

 

4. 程序代码

实现手机APP遥控小车的完整代码:

import machine

import network

import socket

 

#A电机接小车左侧2个轮子电机,对应引脚号:D1(5号引脚,PWM调速)D3(0号引脚,使用高低电平区分方向)

#B电机接小车右侧2个轮子电机,对应引脚号:D2(4号引脚,PWM调速)D4(2号引脚,使用高低电平区分方向)

pin5 = machine.Pin(5, machine.Pin.OUT) #设置5号引脚为输出引脚

pin0 = machine.Pin(0, machine.Pin.OUT) #设置0号引脚为输出引脚

pin4 = machine.Pin(4, machine.Pin.OUT) #设置4号引脚为输出引脚

pin2 = machine.Pin(2, machine.Pin.OUT) #设置2号引脚为输出引脚

 

# 创建AP模式的WIFI对象

apWLAN = network.WLAN(network.AP_IF)

apWLAN.config(essid='XDS',password='',authmode=0)

apWLAN.active(True)   

 

# 创建UDP套接字对象

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

# 绑定本地IP和端口

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": #判断,如果按下“前进”键

        #驱动小车前进

        #驱动A电机正转

        pin5.value(1) #是否转动,0表示停止,1表示转动

        pin0.value(0) #控制方向,0表示正转,1表示反转

        #驱动B电机正转

        pin4.value(1) #是否转动,0表示停止,1表示转动

        pin2.value(0) #控制方向,0表示正转,1表示反转

    elif recv_data_string=="E_DOWN": #判断,如果按下“后退”键

        #驱动小车后退

        #驱动A电机反转

        pin5.value(1) #是否转动,0表示停止,1表示转动

        pin0.value(1) #控制方向,0表示正转,1表示反转

        #驱动B电机反转

        pin4.value(1) #是否转动,0表示停止,1表示转动

        pin2.value(1) #控制方向,0表示正转,1表示反转

    elif recv_data_string=="B_DOWN": #判断,如果按下“左转”键

        #驱动小车左转

        #驱动A电机反转

        pin5.value(1) #是否转动,0表示停止,1表示转动

        pin0.value(1) #控制方向,0表示正转,1表示反转

        #驱动B电机正转

        pin4.value(1) #是否转动,0表示停止,1表示转动

        pin2.value(0) #控制方向,0表示正转,1表示反转

    elif recv_data_string=="D_DOWN": #判断,如果按下“右转”键

        #驱动小车右转

        #驱动A电机正转

        pin5.value(1) #是否转动,0表示停止,1表示转动

        pin0.value(0) #控制方向,0表示正转,1表示反转

        #驱动B电机反转

        pin4.value(1) #是否转动,0表示停止,1表示转动

        pin2.value(1) #控制方向,0表示正转,1表示反转

    else:

        #驱动小车停止A电机和B电机

        pin5.value(0) #1高电平时全速行驶,0停止

        pin0.value(0) #1高电平时全速行驶,0停止

        pin4.value(0) #1高电平时全速行驶,0停止

        pin2.value(0) #1高电平时全速行驶,0停止

        

 

5. 实验结果

参见实验结果视频。


附件:
【象大帅】ESP-12E L293D两路电机驱动扩展板-手机遥控小车完整程序.pdf