Skip to content

Latest commit

 

History

History
431 lines (214 loc) · 13 KB

PyESPCar开发环境配置_pyespcar-environment-config.md

File metadata and controls

431 lines (214 loc) · 13 KB

PyESPCar开发环境配置

写在前面

自己配置Ubuntu开发环境略麻烦, 后续1Z实验室会提供配置好的虚拟机给大家.

为什么用Ubuntu?

我们的PyESPCar开发教程以及OpenCV图像处理部分的教程都是在Ubuntu下进行的, 因为Ubuntu下开发环境更加友好. 同时针对VIP用户, 我们还提供Ubuntu远程协助的服务.

Ubuntu是你步入开源世界的大门. 你可以选择在虚拟机下安装Ubuntu, 也可以选择在真机上安装Ubuntu.

在Ubuntu下, 我们的工程使用Python一统天下, Python完成嵌入式开发,机器人控制, Python进行图像处理, Python进行物联网通信. 所以你只需要精通这一门语言就足够了.

Ubuntu下的开发环境配置

为了大家方便, 这里我还是把Ubuntu所需配置的环境在这里讲一下, 做一下汇总.

Ubuntu虚拟机安装

如果你是用的Ubuntu虚拟机的话, 1Z实验室有虚拟机的安装教程:

Ubuntu虚拟机安装-VirtualBox

Git

git是工程版本管理工具, 你可以使用Git从Github克隆PyESPCar的开源工程.

在Ubuntu上安装git:

sudo apt-get install git

pip3

Ubuntu16.04自带的默认Python版本是python3.5, 需要安装pip3 作为python的包管理工具.

sudo apt-get install python3-pip

Python科学计算工具包

做科学计算需要安装下面的一些工具包

sudo pip3 install jupyter ipython numpy scipy matplotlib

安装OpenCV

非官方的OpenCV预编译的包. 同时安装opencv的main还有contrib部分.

pip install opencv-contrib-python

详情见文档: opencv-python 3.4.3.18

PyGame

PyGame是用于写游戏的.

因为我们用到了PyGame的键盘事件监听, 所以需要安装这个包.

sudo pip3 install pygame

MicroPython-ESP32开发环境配置

PyESPCar是基于MicroPython-ESP32的, 所以MicroPython-ESP32的基本操作, 是需要你自己去学习的.

完整的教程见1Z实验室出品的: MicroPython-ESP32从入门到差不多

下面的教程是你玩PyESPCar必须要看的.

下方做了一下汇总:

一个是固件烧录, 你需要安装esptool

sudo pip3 install esptool --upgrade

详情见: MicroPython-ESP32固件烧录

通过REPL与MicroPython-ESP32交互, 你需要使用picocom

sudo apt-get install picocom

详情见: ESP32的REPL使用方法

通过AMPY进行文件同步, 需要安装AMPY

sudo pip3 install adafruit-ampy --upgrade

详情见: 利用AMPY进行文件同步

MQTT相关的, 需要安装mosquitto

sudo apt-get install mosquitto mosquitto-clients 

使用pip3 安装paho-mqtt

sudo pip3 install paho-mqtt

详情见: MQTT入门之项目实战

PyESPCar的工程文件介绍

PyESPCar的工程文件见:

https://github.com/1zlab/1ZLAB_PyEspCar

使用git将这个文件夹clone克隆到本地文件夹.

对git不熟悉的同学, 需要自学一下git相关的操作.

git clone https://github.com/1zlab/1ZLAB_PyEspCar.git

这里主要讲一下工程里面源码的分布:

src/esp32 里面是micropython-esp32相关的代码.

src/pc 上面的代码是在PC上运行的.

➜  src git:(master) ✗ tree
.
├── esp32
│   ├── battery_voltage.py
│   ├── button.py
│   ├── car_config.py
│   ├── car.py
│   ├── cloud_platform.py
│   ├── led.py
│   ├── main.py
│   ├── motor.py
│   ├── mqtt_control_mode.py
│   ├── pca9685.py
│   ├── test_car.py
│   ├── test_motor.py
│   └── user_button.py
└── pc
    ├── car_config.py
    ├── pyespcar_sdk.py
    ├── README.md
    └── test_pyespcar_sdk.py

修改IP地址

需要修改src/esp32/mqtt_control_mode.py 的源码.

这里的SERVER 是我本机(Ubuntu)的IP地址.

SERVER = '192.168.43.16'
CLIENT_ID = 'PYESPCAR_A0'
MQTT_TOPIC_ID = b'PYESPCAR_CTL_MSG'

如何查看PC在局域网的IP地址? 在bash里面输入:

ifconfig

local ip address

其中的inet 地址:192.168.2.211 就是我们的本地地址.

局域网下每个设备的IP地址都是不一样的.

注意 SERVER是Ubuntu的IP地址, 不是ESP32的IP地址

注意 SERVER是Ubuntu的IP地址, 不是ESP32的IP地址

注意 SERVER是Ubuntu的IP地址, 不是ESP32的IP地址

虚拟机设置网络桥接

如果你用的是真机可以跳过这个步骤.

另外如果你使用是虚拟机, 默认一般是NAT网络, 局域网下的设备访问不了虚拟机, 主机也访问不了虚拟机.

首先需要把当前的虚拟机关闭.

在虚拟机的设置选项, 点击网络, 需要把网络设置为桥接模式. 设置完成之后, 重启虚拟机. Virtualbox默认是自动配置完成, 局域网IP分配默认会设置为 DHCP.

virtualbox-桥接.png

在Ubuntu虚拟机里面执行ifconfig 查看更新后的IP地址.

后面的操作假定,你的Host主机是Windows.

查看你的Host主机跟虚拟机的IP前缀是否一样, 例如 Host是192.168.2.4 , 虚拟机的IP是192.168.2.221, 他们的前缀都是192.168.43 , 所以是在一个局域网下.

假如你的Host主机是Windows的, 打开Windows的CMD, 输入命令行, 查看IP

ipconfig

然后看在主机能不能ping通虚拟机:

ping 192.168.2.221

如果可以ping通, 就可以进行下一步的配置.

上传代码到ESP32开发板

克隆下来之后src 文件夹下是所有的PyESPCar的源码. 其中src/esp32 文件夹下的文件是需要上传到ESP32开发板的.

1Z实验室后续发货的开发板(带核心板)的版本已经帮大家上传好了所需的文件. 但是src/esp32/mqtt_control_mode.py 还是需要你自己再传一下.

那用什么方式传文件呢?

  1. 你可以选择使用1Z实验室的EMP IDE, 在Web上面把文件一个个传上去.
  2. 可以使用AMPY, 通过命令行的方式一个一个将文件传进去.
  3. 另外阿凯也写了一个批量上传的脚本, update-all . 通过ampy上传当前目录下的所有文件.

自我检查, 文件名命名, 内容有没有粘贴错误!!!!

打开PyESPCar的电源开关

打开PyESPCar电源开关, 电源指示灯会亮.

这一步很重要!!!

关闭WebREPL模式

WebREPL模式会跟MQTT通信资源抢占, 导致网络不稳定.

main.py 里面默认上电运行的是mqtt模式, 所以我们需要把webrepl模式关掉.

注: webrepl模式关掉, 也就意味着关掉后不能与EMP IDE进行连接.

设置boot启动模式为1 boot with wifi startup

>>> import emp_boot
>>> emp_boot.set_boot_mode()

填入数字1,

emp_boot

完成配置.

阶段自我检查

在执行下一步之前, 确保你已经:

  1. 通过picocom连接到ESP32开发板的REPL: ESP32的REPL使用方法
  2. 按照教程里面的说明, 连接上了WIFI热点: ESP32接入WIFI热点 , PC与ESP32连入同一个局域网.
  3. 通过upip安装了emp-1zlabumqtt.simple 使用upip安装包 , MQTT入门之项目实战
  4. 将PyESPCar的工程文件, 传入到了ESP32的文件系统中.
  5. 关闭esp32的webrepl模式
  6. 打开PyESPCar的电源开关
  7. 按下开发板上的reset按钮, 重启后自动进入MQTT远程控制模式.

测试PyESPCarSDK

首先确保PyESPCar进入了MQTT模式, 成功连入局域网.

src/pc 下面是PyESPCar SDK 的源码还有简单的测试.

首先我们要进入到src/pc 所在的目录下.

然后执行ipython , 进入交互式命令行模式.

输入以下内容, 执行测试pyespcar sdk的测试程序.

exec(open('test_pyespcar_sdk.py').read(), globals())

pyespcar

然后你就可以调用sdk的各种方法, 进行测试.

例如调用turn_left 方法, 让小车左转.

>>> sdk.turn_left()
Topic: PYESPCAR_CTL_MSG
SEND:  TURN_LEFT,60
[INFO] car turn left, speed: 60, delay_ms: None

调用turn_right方法, 让小车右转.

>>> sdk.turn_right()
Topic: PYESPCAR_CTL_MSG
SEND:  TURN_RIGHT,60
[INFO] car turn right, speed: 60, delay_ms: None

详情见src/pc/pyespcar_sdk.py

综合项目

examples下是目前所有的PyESPCar的样例代码.

PyESPCar按键控制模式

mqtt keyboards

PyESPCar色块追踪

color track

PyESPCar色块追踪小车-主题课程