一起玩儿物联网人工智能小车(ESP32)——16. 用ESP32的GPIO控制智能小车运动起来(MicroPython)

摘要:本文介绍用MicroPython实现ESP32的GPIO控制智能小车朝各个方向运动

前边的Mixly开发之后,对应生成的代码是C语言的。可能很多人都觉得C语言很难学,现在学Python的人很多,觉得学起来更容易一些。其实,语言本身的难度差别不大,难在实现的功能不同以及各语言的库函数(或者类库)不太相同,才会觉得开发的难度不同。

对于嵌入式开发来说,本身对语言的要求是不高的,简单应用的逻辑都是不复杂的,大家可以尝试一下C语言的开发方法。毕竟C语言在嵌入式开发领域的好处是显而易见的,程序精简,运行速度快。特别适合需要高速响应的系统中,在运动控制、机器人领域是应用最广的开发语言。

为了照顾更多的读者,在智能小车这一系列文章中,还是增加一些MicroPython的讲解。在整个系列文章中,还是会以C语言为主,也会阶段性的增加一些MicroPython的实现方法。下面就先来讲解一下用Mixly的Python Esp32功能模块如何实现小车的各种运动。

运行“Mixly”软件,在初始的开发板和开发语言选择页面选择“Python Esp32”功能,单击后进入到软件开发设计界面。这时需要在右上角选择开发板为“ESP32 Generic(4MB)”,端口选择为开发板在电脑上生成的串口设备对应的串口。如下图所示:

一起玩儿物联网人工智能小车(ESP32)——16. 用ESP32的GPIO控制智能小车运动起来(MicroPython)_第1张图片

对于第一次使用MicroPython的开发板,在开发之前需要首先执行一下菜单栏上的“初始化固件”功能,这是因为Python是一种解释型编程语言,它不像C语言那样,执行前需要把源程序编译成机器代码,然后在上传到机器中去执行。解释型编程语言,在开发的时候是不需要编译的,上传也只是把源代码传到了执行的机器上,等到程序执行的时候,再边解析边执行。而机器本身并不认识Python源代码,这就需要有一个中间机构,可以把源代码动态解析成机器码去执行。这个就是通常说的虚拟机。就是可以运行Python程序的虚拟的主机,初始化固件的目的就是把这个虚拟的主机安装到ESP32芯片中,这样它就可以执行Python程序了。

初始化固件成功之后在输出窗口会显示“烧录成功”,如下图所示。

一起玩儿物联网人工智能小车(ESP32)——16. 用ESP32的GPIO控制智能小车运动起来(MicroPython)_第2张图片

接下来我们就来实现一个让小车向前运动3秒钟的MicroPython程序。首先需要使用的是“输入/输出”功能模块里面的初始化功能,需要初始化控制智能小车向前前进的4个GPIO引脚,为每个引脚定义一个唯一的名字,配置好之后,如下图所示。

一起玩儿物联网人工智能小车(ESP32)——16. 用ESP32的GPIO控制智能小车运动起来(MicroPython)_第3张图片

接下来就是将这4个引脚设置成高电平输出,然后延迟3秒钟,再恢复成低电平输出了。这需要使用的功能是“输入/输出”功能模块区的数字输出功能了,相信有了前面的基础,应该很容易就完成了。如下图所示:

一起玩儿物联网人工智能小车(ESP32)——16. 用ESP32的GPIO控制智能小车运动起来(MicroPython)_第4张图片

好了,程序的开发工作就完成了。下面就来测试一下。需要将源程序上传到ESP32芯片内部,单击最上边工具栏中的“上传”按钮就可以了。程序上传完成后,会自动启动运行。再这里需要注意的是,这里的主程序并不会被循环调用,而是只会运行一次。如果需要循环运行,则需要相应的循环功能模块来实现,这是与C语言不同的地方。

接下来也看一下Mixly为程序生成的MicroPython源代码。如下所示:

import machine

import time

pin21 = machine.Pin(21, machine.Pin.OUT)

pin23 = machine.Pin(23, machine.Pin.OUT)

pin26 = machine.Pin(26, machine.Pin.OUT)

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

pin21.value(1)

pin23.value(1)

pin26.value(1)

pin32.value(1)

time.sleep_ms(3000)

pin21.value(0)

pin23.value(0)

pin26.value(0)

pin32.value(0)

下面对主要代码解释一下:

import machine

import time

这两句用来引入machine和time包,表示你要使用这两个包中的功能。

pin21 = machine.Pin(21, machine.Pin.OUT)

将21引脚设置成输出状态,并生成一个引脚对象。

pin21.value(1)

将21引脚的输出设置为1(高电平为1,低电平为0)。

time.sleep_ms(3000)

延时3000毫秒。

这个生成的代码基本也是和页面中的功能是一一对应的。应该不难理解。接下来可以自己尝试一下实现其他的各种运动了。

你可能感兴趣的:(ESP32,开发工具软件,物联网,单片机,Mixly,MicroPython)