Mixly图形化编程小车零基础开发教程(MAKER-ESP32电机驱动一体化开发板)

手机WIFI远程遥控M1电机转动

1. 课程介绍
2. Mixly编程需重点掌握的程序语句
3. MAKER-ESP32开发板使用说明
4. 安装Mixly图形化编程软件
5. 给引脚设置数字值-点亮ESP32开发板外接LED小灯
6. 实现LED小灯有限次闪烁-延时语句
7. 实现LED小灯无限次闪烁-循环语句
8. 驱动M1电机转动
9. 驱动M1M2M3M4四路电机转动
10. 手机WIFI远程遥控M1电机转动
11. 小车组装
12. 手机WIFI远程遥控四轮小车完整程序
13. LCD1602显示屏
14. OLED显示屏
15. LCD1602显示屏+DHT11温度传感器
16. LCD1602显示屏+声波雷达传感器
17. 震动马达
18. 蜂鸣器

1. 课程目标

(1)编程使ESP32开发板开启名称为“XDS”,无密码的WIFI热点。

(2)手机连上XDSWIFI热点。

(3)使用手机的“象大帅”APP,向ESP32开发板发送指令数据。“1”按钮按下时发送“1_DOWN”指令,“1”按钮抬起时发送“1_UP”指令。ESP32开发板收到“1_DOWN”指令,驱动M1电机转动。ESP32开发板收到“1_UP”指令,停止M1电机转动。

图片.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. 硬件接线

(1)电机接到开发板的M1驱动口上。

(2)使用电池给开发板供电。

图片.png 

3. 程序代码

图片.png 

Mixly自动生成的代码有点问题。需要点击“代码”对自动生成的代码进行修改,修改后不要切换回图形区,点击“上传”按钮上传代码到开发芯片中。如果切换回图形区,修改的代码会丢失,还原到修改前的代码。

如下图,点击“代码”:

图片.png 

可看到Mixly自动生成的代码如下图,其中有两处错误,见红色文字部分:

import machine

import network

import socket

 

 

pin27 = machine.Pin(27, machine.Pin.OUT)

pin13 = machine.Pin(13, machine.Pin.OUT)

pin27.value(0)

pin13.value(0)

wlan = network.WLAN(network.AP_IF);

wlan.config(essid = 'XDS', channel = 11)

wlan.active(True)

s = socket.socket(socket.SOCK_DGRAM)

s.bind(('0.0.0.0', 8080))

 

while True:

    recv_data_byte_array,sender_info = s.recvfrom(1024)

    recv_data_string = recv_data_byte_array

    if recv_data_string == '1_DOWN':

        pin27.value(1)

        pin13.value(0)

    elif recv_data_string == '1_UP':

        pin27.value(0)

        Pin13.value(0)

1条红色语句缺少参数:socket.AF_INET

2条红色语句使用decode()函数把字节数组转换成字符串。

修改后正确的代码如下:

import machine

import network

import socket

 

 

pin27 = machine.Pin(27, machine.Pin.OUT)

pin13 = machine.Pin(13, machine.Pin.OUT)

pin27.value(0)

pin13.value(0)

wlan = network.WLAN(network.AP_IF);

wlan.config(essid = 'XDS', channel = 11)

wlan.active(True)

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

s.bind(('0.0.0.0', 8080)) # 也可以写成:s.bind(('', 8080))

 

while True:

    recv_data_byte_array,sender_info = s.recvfrom(1024)

    recv_data_string = recv_data_byte_array.decode('utf-8')

    if recv_data_string == '1_DOWN':

        pin22.value(1)

        pin23.value(0)

    elif recv_data_string == '1_UP':

        pin22.value(0)

        pin23.value(0)

4. 实验结果

    参看实验结果视频。


附件:
【象大帅】手机WIFI远程遥控M1电机转动.pdf
手机WIFI远程遥控M1电机转动.py