一. 芯片介绍
ESP32 是一套 Wi-Fi (2.4 GHz) 和蓝牙 (4.2) 双模解决方案,集成了高性能的 CPU 内核、超低功耗协处理器和丰富的外设。ESP32 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用和不同功耗需求。
乐鑫为用户提供完整的软、硬件资源进行 ESP32 设备的开发。乐鑫所研发的软件开发环境 ESP-IDF 能够帮助用户快速开发物联网 (IoT) 应用,满足用户对于 Wi-Fi、蓝牙、低功耗等性能的需求。
乐鑫官方提供的参考网页(https://docs.espressif.com/projects/esp-idf/en/stable/get-started/)
二. 环境搭建
操作系统介绍:
建议使用ubuntu开发,作为嵌入式开发工程师来说使用Linux才是王道。ubuntu对于软件开发来说还是比较友好的,各种编译器随便安装,有的杠精会说我想编译.exe程序,ubuntu能开发吗?那我只想告诉你“出门左转,拜拜不送!(我在家也用Windows)”。有人会问我平时用qq或者微信聊天怎么办?收发邮件怎么办?诸如此类问题。。。
下面我说一下我在ubuntu上安装的软件
(1) 中文输入法:搜狗输入法,搜狗输入法官网就可以下载
(2) 音乐:网易云音乐 ,官网提供下载
(3) office:wps ,官网提供下载
(4) 网盘:百度网盘 ,官网提供下载
(5) 翻译:有道词典 ,官网提供下载
(6) 聊天:qq 微信 ,虽然腾讯官方刚刚提供了qq最新安装包,但是用起来还是有点别扭,建议使用国内桌面厂商deepin深度提供的qq和微信,确实比官方的好用
(7) 浏览器:chrome ,官网提供下载
(8) 代码阅读:vscode ,官网提供下载
(9) 邮箱 :thunderbird或者foxmail,虽然深度提供foxmail但是感觉不太好用,如果不嫌弃英文的话可以使用thunderbird。以上就是我在ubuntu使用软件。
好像有点跑题了。
环境搭建
(1) 安装工具包:
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing
(2) 下载编译器
64-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
32-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz
(3) 解压压缩包
在ubuntu用户家目录下创建esp文件夹
mkdir ~/esp
(4) 将编译器解压进去
mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.220-80-g6c4433a-5
(5) 添加目录
工具链将会被解压到 ~/esp/xtensa-esp32-elf/ 目录。要使用工具链,还需要在 ~/.bashrc 文件中更新环境变量 PATH。要使 xtensa-esp32-elf 在所有的终端会话中都有效,需要将下面这一行代码添加到你的 ~/.bashrc 文件中:
export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH"
(6) 保存退出
保存退出 ,执行source 命令
source ~/.bashrc
三. 获取 ESP-IDF
1. 获取代码
cd ~/esp
git clone -b v3.2 --recursive https://github.com/espressif/esp-idf.git //获取3.2版本(此版本支持esp-aliyun)
cd esp-idf
git submodule update --init
2. 设置esp-idf 路径
打开~/.bashrc 文件,添加export IDF_PATH=~/esp/esp-idf 保存退出执行source ~/.bashrc命令
3. 安装python 依赖包
python -m pip install --user -r $IDF_PATH/requirements.txt
四. 获取esp-aliyun
espressif/esp-aliyungithub.com
1.获取代码
cd ~/esp
git clone https://github.com/espressif/esp-aliyun.git
2. 编译工程
cd esp-aliyun
cd examples/solutions/smart_light
make chip=esp32 defconfig
make menuconfig
3. 擦除flash
make earse_flash
将flash清空,主要是因为下一步我们要写入匹配的阿里云产品信息,所以在此要擦除flash。
4. 烧录阿里云密钥
mass_mfg 目录中有一参考配置:single_mfg_config.csv,请拷贝成自己的配置文件,如 my_single_mfg_config.csv
cp single_mfg_config.csv my_single_mfg_config.csv
使用自己的 ProductKey、ProductSecret、DeviceName、DeviceSecret 对 my_single_mfg_config.csv 进行修改
key,type,encoding,value
aliyun-key,namespace,,
DeviceName,data,string,config
DeviceSecret,data,string,dsj3RuY74pgCBJ3zczKz1LaLK7RGApqh
ProductKey,data,string,a10BnLLzGv4
ProductSecret,data,string,pVfLpS1u3A9JM0go
修改完成后,使用命令nvs_partition_gen.py生成对应的 NVS 分区:
nvs_partition_gen.py 存放在:IDF_PATH/components/nvs_flash/nvs_partition_generator 目录下
执行命令
nvs_partition_gen.py my_single_mfg_config.csv my_single_mfg.bin --size 0x4000
使用 esptool 工具将生成的包含秘钥的 NVS 分区烧入对应的 sector,esp32 的默认烧录地址为 0x210000 esptool 存放在$IDF_PATH/components/esptool_py/esptool/
esptool.py write_flash 0x210000 my_single_mfg.bin
将程序烧入到esp32中
make flash
6. 使用串口或者乐鑫提供的调试工具调试代码
make monitor
至此esp32配置完成,接下来开始配置阿里云
阿里云配置
一 创建账号
1. 使用淘宝或者支付宝账号登录阿里云
2. 在主页搜索“生活物联网平台”,登录生活物理网平台
3. 购买的激活码,创建新项目
4. 创建新产品和下载阿里云提供的云智能APP
5. 新建产品
6. 新建功能,对于我们来说只是演示功能,所以点击下一步即可。
7. 选择esp32芯片模组
8. 点击新增测试设备
9. 保存设备的相关密钥,这些密钥就是之前在写入esp32 nvs中的值
10.完成后,点击下一步人家交互
11.配置配网选项,选择使用公版app
12.配置下列选项,默认就可以.
13.点击下一步批量生产,点击开发完成,购买激活码
14..购买完成后,返回上一步,点击配网二维码,同时给esp32通电,就会跳出新生成的二维码,使用手机APP扫描这个二维码,就会进入配网.
16. 以下是手机app操作
打开app,扫描配网二维码
输入wifi密码
输入完成后,开始配网
配网成功后,进入app操作界面,点击按钮就可以控制了
17. 以下是esp32调试界面的截图
当配网成功后,会打印mqtt连接成功的信息
当我们使用手机操作灯泡的开启和关闭时,终端会打印 light 1 的信息,说明我们成功的接收到了手机的控制信号
至此完成了所有功能,这个这是演示功能,如果想控制自己的智能家居设备,对于简单的功能如果说是控制一个灯的开关只需要修改esp32程序即可。## 对于esp-aliyun代码来说,他接收mqtt的服务是在 **linkkit_soli.c**文件中的user_service_request_event_handler函数实现,只需将程序更改成接收到light 1 时对应引脚输出高电平,接收到light 0是对应引脚输出低电平即可。如果想实现复杂一点功能的话,就需在阿里云设备中添加新的功能定义。