- 此系列文章源于SYSU 2024电信学院通信工程专业工训课的训练题目,同时也是2024电子设计校内赛的题目。题目的要求描述如下:
无线手持二维码识别器是一个通过图像识别技术,对二维码图片进行识别,并解析出二维码的内容数据,并通过无线传输给手机或电脑的一种设备,通过这个设备,可以快速对物品进行扫描并在电脑端进行归档。要求能够对二维码图片进行扫描,二维码可自行生成,源信息包含字母和数字,能够支持将扫描数据上传到电脑,并在电脑端设计上位机进行数据显示,能够支持识别特殊二维码时,进行报警鸣叫处理,同时要使用3D建模软件对识别器进行建模并制作,大小符合手持。- 项目使用的主控为立创梁山派GD32F470ZGT6,项目源码存放地址为https://github.com/liangbm3/GD32_QR_Decoder
- 此系列文章更多的是对开发过程的记录和思路的呈现,文章分则可以作为教程实现单个功能,合则可以作为复现整个项目的教程。
- 文章的撰写部分参考了立创官方文档
- 文章未经作者许可,不得转载。
文章目录
前言
由于需要将识别的结果传输到上位机,这里使用ESP01s模块,开发方式选择Arduino+VScode+PlatformIO。同时GD32和ESP01s之间采用串口通讯。
一、相关知识介绍
1.ESP01s模块的介绍
(1)简介
ESP8266 系列模组是深圳市安信可科技有限公司开发的一系列基于乐鑫ESP8266EX的低功耗UART-WiFi芯片模组,可以方便地进行二次开发,接入云端服务,实现手机3/4G全球随时随地的控制,加速产品原型设计。
模块核心处理器 ESP8266 在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。支持标准的 IEEE802.11 b/g/n 协议,完整的 TCP/IP 协议栈。用户可以使用该模块为现有的设备添加联网功能,也可以构建独立的网络控制器。
ESP8266 是高性能无线 SoC,以最低成本提供最大实用性,为 Wi-Fi 功能嵌入其他系统提供无限可能。
(2)管脚定义
为了方便烧录,可以购买esp01s烧录模块,也可以使用usb转ttl模块,引脚连线如下
USB转TTL模块 | ESP01S模块 |
---|---|
3V3 | 3V3 |
GND | GND |
RX | TX |
TX | RX |
无 | EN(接高电平) |
无 | IO0(下载时下拉,运行时上拉) |
2.Arduino介绍
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。我们这里指的是ArduinoIDE
由于该模块使用的是乐鑫的esp8266芯片,而乐鑫公司为esp系列芯片添加了对arduino开发环境的支持,允许使用熟悉的 Arduino 函数和库编写 sketches,并直接在 ESP8266 上运行,无需外部微控制器。
由于使用ESP-IDF开发需要复杂的环境配置和各种接口函数,使用AT指令开发需要学习各种AT指令,且开发过程不方便。使用Arduino开发ESP01S则可以避免上述情况,更加方便快捷。
3.PlatformIO介绍
PlatformIO是一款开源的跨平台嵌入式开发环境,为嵌入式开发者提供了一种更加便捷和高效的开发解决方案。它支持多种主流嵌入式平台和开发板,提供了丰富的开发工具和库,并且具备强大的生态系统和社区支持。
PlatformIO 是独立于平台运行的,实际上它只依赖于 python,然而 python 在 macOS、linux 和 windows 都能完美适配. 也就是说 PlatformIO 的工程从一个电脑很容易迁移到另一个电脑,只需要拷贝再使用 PlatformIO 就能完美打开,不管团队中的成员使用什么操作系统 PlatformIO 可以让工程共享变得异常简单. 除此之外, PlatformIO 不仅可以在笔记本和台式机上运行,同样可以运行在没有显示桌面的服务器。PlatformIO 的核心(PlatformIO Core) 就是一个终端程序, 它能配合您喜欢的多款云 IDE、桌面 IDE 或者 通用代码编辑器构建 PlatformIO 的 IDE,比如 Atom, CLion, Eclipse, Emacs, NetBeans, Qt Creator, Sublime Text, VIM, Visual Studio, VSCode 等等。目前官方推荐的 IDE 使用方案就是 VSCode + PlatformIO IDE 插件。
二、Arduino+VScode+PlatformIO开发环境的配置
(1)安装软件
1.下载ArduinoIDE,下载地址:https://www.arduino.cc/en/software
我下载的是1.8.x版本的,如图
2.下载安装完成后,系统应该会自动添加环境变量,如果没有则自己添加,如图
3.在vscode中安装PlatformIO插件,安装完成后的界面如下
(2)创建工程
1.点击New Project,根据所用的模块选择合适的开发板,如图
2.等待一段时间后工程创建完成,在src文件夹下找到main.cpp
,
3.在下方找到√图形,点击进行编译,再点击➡进行烧录
如图,烧录完成,环境配置成功
三、ESP01S与GD32的串口通讯
这个实现的思路也很简单,对于GD32,配置与前面的所讲的类似;对于ESP01s,可以用Arduino中的串口发送函数和串口接收函数。只需在两者之间指定一定的通信规则即可,这里指定回车位一条字符串的结尾。
1.ESP01S串口通信的编写
#include <Arduino.h>
String inputString = ""; // 定义一个字符串用来接收
boolean stringComplete = false; // 一条字符串接收完成的标志位
void serialEvent();
void setup()
{
Serial.begin(115200