前言
大学毕业那会儿本来想尝试一下物联网,后来由于工作比较忙并且不在物联网这个行业,买的一块机智云的 Gokit3 开发板一直放在家里几乎都快遗忘了。最近华为开源 HarmonyOS 2.0,内心有点激动,想起当年在实验室的时光,想买一块鸿蒙的开发板学习一下,然后突然想起家里的 Gokit3 开发板还一直没有玩过,那就尝试从Gokit3 开始入门学习一下。
Gokit3 开发套件
Gokit3 是 GoKit 产品系列的第三代,支持 MCU、SoC、BLE、语音、模式切换等特性。
GoKit3 有三种类型的套件:
- GoKit3(S)-SoC 版:分体式的设计方案,即底板( SoC 方式应去掉)+功能板+模组。
- 乐鑫模组(ESP-12F)
- MCU 和 SoC 两种连接方式
- AirLink 和 SoftAP 两种方式配置入网
- GoKit3(V)-语言模组版:整体式的设计方案,较低的开发成本。
- Lark7618 语音模组
- MCU 连接方式
- SoftAP 和音波配置入网
- 支持本地语音识别、识别词条自定义、提示音自定义及 P0 数据点关联;
- GOKit3(H)-高性能模组版:高性能模组
ESP8266 :乐鑫的一款高性能无线WiFi模组,可直接控制扩展板片上资源。
功能扩展板:兼容多种型号的WiFi模组,用于连接各种外设传感器,用于模拟实际应用功能。
目前支持的 SoC 方案模组有 ESP8266、Hi3518E、宇音天下模组等。
硬件功能
序号 | 硬件功能 | 功能说明 |
---|---|---|
1 | 乐鑫ESP8266 WiFi模组 | ⽀持STA/AP⼯作模式 |
2 | 红外探测器 | 可以探测是否有阻挡 |
3 | RGB LED | 可编程全彩LED灯 |
4 | 可编程电机 | 可编程正反转及调速电机 |
5 | 温湿度传感器 | |
6 | 三个可编程按键 | |
7 | 一组咪头接口 | |
8 | 扬声器接口 | |
9 | 语音降噪模块接口 | |
10 | USB转Uart接口 | 可以更方便对GoKit供电,并打印日志 |
11 | Uart TTL程序烧写接口 | 可用USB转TTL烧写模组SOC程序 |
12 | 双模式模组接口 | 可按需求切换为SOC模式(GoKit3(S)所使用的模式)或MCU模式 |
13 | OLED接口 | 可复用SPI等其他接口 |
预留接口 | 具有电源输出、SWD、Uart TTL、外置Arduino等接口功能 |
ESP8266 模组
ESP8266 :乐鑫的一款高性能无线WiFi模组,可直接控制扩展板片上资源。
官网:https://www.espressif.com/zh-hans/products/modules/esp8266
WiFi 模组(正面):
WiFi 模组(反面):
扩展板按钮
按键 | 触发 | 功能 |
---|---|---|
Reset | 短按 | 复位WiFi模组 |
Key1 | 短按 | 自定义 |
Key1 | 长按(3s) | 复位WiFi模组 |
Key2 | 短按 | 进入Soft AP模式 |
Key2 | 长按(3s) | 进入AirLink模式 |
Key3 | 自定义 | 自定义 |
GoKit3(S) 使用模式
GoKit3 的扩展板的模组接口采用双排母的设计,模组的单排针根据用法不同选择 MCU (MCU模式接口) 和 SoC (SoC 模式接口) 两种接入方式。
MCU 模式
MCU 模式的玩法与 GoKit2 一样,采用底板+扩展板+模组的方式(如下图所示),支持标准版(STM32底板)和创客版(arduino底板)两种底板,支持的模组包括所有已经对接机智云的各合作伙伴厂家的模组,如 ESP8266、QCA4004、RealTek8711AM、HF LBP100、庆科等模组。MCU 模式是分体式的设计方案。WiFi 模组只负责信息的接收与发送,它通过串口等方式与 MCU 进行通信,需要在 MCU 上进行协议解析与外设相关的开发。这种方案的优点是不受限于 WiFi SOC 片上资源、应用扩展度高;缺点是开发难度大、生产成本高。
使用 MCU 的连接方式需要开发者自更新 wifi 模组的固件,固件下载地址及烧录方法见下面链接:
- 1、GAgent固件,下载页面,选择“GAgent for ESP8266”。
- 2、GAgent固件烧录方法
3、STM32 MCU源码包,下载页面,选择“微信宠物屋 for GoKit 2 STM”进行下载。
SoC 模式
SoC 模式是另外一种接入方式,由扩展板+模组组成。SoC版直接控制外设,节省了一颗 MCU 及周边电路,板子结构更简单,更经济。通过扩展板双排模组接口的方式支持,目前支持的模组有 ESP8266 模组、Hi3518E 等。SOC 模式是整体式的设计方案。它将 WiFi 模组与外设驱动模块直接连接起来,直接在 WiFi SOC 上进行开发,省去了一层通讯过程。这种方案的优点是能降低开发难度、降低生产成本;缺点是受限于 WiFi SOC 片上资源,应用有限。
说明:SoC 模式的模组应该插到扩展板的 SoC 模式接口上;SoC 模式使用时应与底板分离,否则模组程序无法正常启动。
二次开发源码包及原理图已经开放,地址是:1、ESP8266 SoC源码包下载页面 ,选择“微信宠物屋 for GoKit3(S) ESP8266”进行下载。
- 2、原理图: http://club.gizwits.com/thread-2889-1-1.html
新人疑问解答:在淘宝上购买的 Gokit3 (SoC 版) 并不仅仅只有 SoC 模式,并且出厂默认模式是 MCU 模式,开源通过扩展板的双模式组合接口切换,但是需要自己编译程序。
ESP8266 交叉编译环境搭建
根据官方文档和社区介绍,GoKit3 SoC 模式的编译需要在 linux 环境进行,而代码烧录又是在 Window 环境,开发环境搭建具有以下三种方式:
- 使用乐鑫官方的 ESP8266 开发环境
- 虚拟机 VMware(12.0版) + Ubuntu系统(14.04 <64位版>)
- 安信可提供的一体化 IDE:https://docs.ai-thinker.com/tools
这里提供 Windows 和 Mac 两个平台交叉编译环境搭建的方法,Windows 系统基于 WSL2 + Ubuntu 提供 Linux 环境编译环境,Mac 系统本身就是 Unix 环境,很容易就支持交叉编译环境。
Windows 平台交叉编译环境搭建
WSL2 + Ubuntu 安装
官方文档:适用于 Linux 的 Windows 子系统文档
1.安装适用于 Linux 的 Windows 子系统
必须先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发版。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2.启用“虚拟机平台”可选组件
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动计算机,以完成 WSL 安装并更新到 WSL2。
3.将 WSL 2 设置为默认版本
以管理员的身份打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
4.安装所选的 Linux 分发版
打开 Microsoft Store,并选择你偏好的 Linux 分发版。
选择 Ubuntu 进行安装。按照提示创建账号和密码,账号不一定需要和 windows 账号相同。
安装交叉编译工具链
Step 1: 安装 linux 环境相关的软件库
sudo apt-get update
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python-is-python2
Step 2: 下载交叉编译工具 xtensa-lx106-elf
ESP8266 集成了 32 位 Tensilica 处理器,Xtensa 处理器体系结构是一个可配置、可扩展和可集成的 32 位 RISC 处理器核心。ESP8266 需要使用交叉编译工具 xtensa-lx106-elf,可以从 esp-open-sdk 项目编译得到,也可以直接下载编译好的包:
- for 64-bit Linux:https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
- for 32-bit Linux:https://dl.espressif.com/dl/xtensa-lx106-elf-linux32-1.22.0-100-ge567ec7-5.2.0.tar.gz
Tips: 终端输入 getconf LONG_BIT 命令判断安装的 linux 是 32 位还是 64 位。
wget -O ~/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
mkdir -p /opt/esp
cd /opt/esp
tar -xzf ~/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
工具链将解压缩到 /opt/esp/xtensa-lx106-elf 目录。
Step 3: 安装 Xtensa 库和头文件
下载库补丁至 /opt/esp/xtensa-lx106-elf/xtensa-lx106-elf/lib, 先切换目录,注意是 xtensa-lx106-elf 下面的xtensa-lx106-elf 同名子目录:
wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
tar -xvzf include.tgz
可以在 Windows 系统下载完成,拷贝到 WSL 里面:
cp -a /mnt/d/work/gokit3/开发工具/xtensa/lib/libc.a lib/libc.a
cp -a /mnt/d/work/gokit3/开发工具/xtensa/lib/libhal.a lib/libhal.a
cp -a /mnt/d/work/gokit3/开发工具/xtensa/include.tgz include.tgz
tar -xvzf include.tgz
Step 4: 配置 ~/.profile 文件
vim ~/.profile
在 .profile 最后一行添加:
export PATH="$PATH:/opt/esp/xtensa-lx106-elf/bin"
alias get_lx106='export PATH="$PATH:/opt/esp/xtensa-lx106-elf/bin"'
保存退出,执行:
source ~/.profile
执行 xtensa-lx106-elf-gcc -v 显示如下所以表示配置正确:
Mac OS 平台交叉编译环境搭建
1.安装编译环境的依赖:
sudo easy_install pip
sudo pip install pyserial
2.安装交叉编译工具 xtensa-lx106-elf:
下载 https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-macos.tar.gz 文件,然后将其解压缩到 ~/esp 目录中:
mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-macos.tar.gz
工具链将解压缩到 ~/esp/xtensa-lx106-elf 目录。
配置 PATH 环境变量:
vim ~/.bash_profile
~/.bash_profile 文件添加:
export PATH=$PATH:$HOME/esp/xtensa-lx106-elf/bin
更新 ~/.bash_profile:
source ~/.bash_profile
检查交叉编译包:
xtensa-lx106-elf-gcc -v
GoKit3(S)源码编译
生成源代码
GoKit3(S)的源码获取方式请查看:代码自动生成工具介绍 文档中 生成SoC方案代码 一节。
其中关于硬件平台中的选择需要知道 Flash 的容量大小:
具体开源看 ESP8266 模组后面的型号,然后参考选型表对照:
参考:http://wiki.ai-thinker.com/esp8266
源代码编译
将 GoKit3(S) 源码解压后拷贝到 WSL 目录下:
cp -a /mnt/d/work/gokit3/program/SoC_ESP8266_32M_source /home/zhaomenghuan/gokit3/program/SoC_ESP8266_32M_source
进入编译目录:
cd ~/gokit3/program/SoC_ESP8266_32M_source/app
运行编译脚本:
./gen_misc.sh
GoKit3(S)固件下载
下载烧写软件
- Windows 平台 Flash 下载工具(ESP8266 & ESP32 & ESP32-S2)
https://www.espressif.com/zh-hans/support/download/other-tools
下载解压点击 flash_download_tool_v3.8.5.exe 即可。
- Mac OS ESP8266 Flash 工具:https://apps.apple.com/cn/app/esp8266flash/id1344542675?mt=12
设置烧写选项
GoKit3(S) 烧写固件分为 SoC 版和 MCU 版,开发者应根据 GoKit3(S) 的模式烧写对应版本的固件。
编译后的固件:
SOC版的程序固件名称为:user1.4096.new.6.bin
编译后固件默认保存位置:~/gokit3/program/SoC_ESP8266_32M_source/bin/upgrade
确认烧写选项:
需要烧写 bin/blank.bin、bin/boot_v1.6.bin、bin/esp_init_data_default.bin、bin/upgrade/user1.4096.new.6.bin 四个固件。这几个固件的含义如下:
⽂件列表 | 是否必选 | 说明 |
---|---|---|
blank.bin | 必选 | 初始化系统参数,由 ESP8266 SDK 提供 |
boot_v1.6.bin | 必选 | Bootloader,由 ESP8266 SDK 提供 |
esp_init_data_default.bin | 必选 | 初始化射频参数,由 ESP8266 SDK 提供 |
user1.4096.new.6.bin | 初次使⽤必选 | 主程序,编译代码⽣成 |
烧写具体过程
1.连接 TTL 转 USB 接口
2.给 Gokit 扩展板供电
新人误区:扩展板不是提供了 USB 转串口的接口,为啥还需要单独用 USB 转 TTL 串口线进行连接?这是因为扩展板上的串口 CP2102 只是输出 DEBUG 信息用,不能用来下载固件。
3.上电烧录固件
首先,将拨码开关设为程序烧录模式(下拨位置)
相继按下烧录工具的“START”键与WiFi模组的“Reset”键,开始烧录程序:
若显示“完成”及烧录成功
4.切换正常工作模式
将拨码开关设为正常使用模式(上拨位置)
按下 Reset键重启模组**,程序开始工作
VS Code 代码编写
WSL 中使用 VS Code
Windows 环境安装 VS Code,然后安装 Remote WSL 拓展。
安装好之后,打开一个 linux 远程窗口:
导入工程,可以直接在终端编译调试:
为了方便写代码,可以在 WSL 的 VS Code 安装 C/C++ 相关的插件。
运行微信宠物屋 Demo
参考官方文档 通讯模组SoC方案接入机智云流程,通过开发者中心自动生成代码,然后本地修改自动生成的代码,然后按照上面的步骤烧录代码即可实现官方的 Demo。烧录成功后,使用串口调试工具可以查看设置运行的日志,后面我们可以通过在源码中添加一些自定义的日志,这样就可以开始去看源代码了。
参考
- Gokit3 系列开发套件简介(Gokit 3.x 超详细版)
- GoKit3 SoC模式和MCU模的简单说明以及出厂固件
- GoKit3(S)使用说明书
- GoKit3(S)开发套件介绍
- GoKit3(S) 二次开发—开发环境搭建
- Gokit3入门视频(2016)视频教程
- GoKit3(S) 二次开发—开发环境搭建
- GoKit3(S)开发环境准备
- 如何知道ESP8266内部FLASH容量大小及SPI MODE
- ESP32 Development on Windows Subsystem for Linux
- Visual Studio Code 与 Win10 64bit Ubuntu bash 的ESP8266 编译开发环境搭建
- Standard Setup of Toolchain for Linux
- Standard Setup of Toolchain for Mac OS
- SDK – ESP8266 – Xtensa architecture toolchain
写文章不容易,也许写这些代码就几分钟的事,写一篇大家好接受的文章或许需要几天的酝酿,如果文章对您有帮助请我喝杯咖啡吧!