Pārlūkot izejas kodu

添加开发笔记文档

liuhao 2 gadi atpakaļ
vecāks
revīzija
32d5c18d21

+ 1 - 0
开发笔记/BLE学习笔记-建立连接过程.docx

@@ -0,0 +1 @@
+

+ 17 - 0
开发笔记/C开发笔记.md

@@ -0,0 +1,17 @@
+### C数组初始化特殊操作
+
+可以直接设置初始值,同时可以设置相应下标的元素值,目前只支持GCC编译器
+
+#define MAX 10
+
+char array[MAX] = { [0 ...(MAX-1)] = '8' };
+
+#define MAX 10
+static char array[MAX] = { [0 ...(3)] = '6',[4 ...(6)] = '5',[7 ...(9)] = '1' };
+
+int main(void){
+  for(int i = 0; i< MAX; i++)
+    printf("array[%d]=%c\n",i,array[i]);
+  return 0;
+}
+

+ 16 - 0
开发笔记/addr2line找bug技巧.md

@@ -0,0 +1,16 @@
+# keil5 通过addr2line定位bug点步骤
+
+1,找到编译文件.axf的输出目录,将addr2lin.exe放到该目录下,keil一般是Objects
+
+![image-20220106110352055](E:\TyporaImag\image-20220106110352055.png)
+
+
+
+2,在当前目录下打开命令提示符cmd,查看addr2line支持的命令 通过-e来把地址转换成对应的文件函数行号显示
+
+![image-20220106111420692](E:\TyporaImag\image-20220106111420692.png)
+
+3,输入对应的log信息,PC指针的地址值,格式是 addr2line -e  xxx.axf 地址值 回车查看问题点。
+
+![image-20220106111625164](E:\TyporaImag\image-20220106111625164.png)
+

+ 56 - 0
开发笔记/esp32_alios开发相关.md

@@ -0,0 +1,56 @@
+# idf v4.0 调试esp-aliyun-master 生成对应的 NVS 分区问题
+
+
+
+一、尝试使用乐鑫esp32 接入阿里云 遇到问题(已解决)
+按照官方指导书,一步一步的配置esp32,但是到了在每个设备上烧写与设备对应的 ProductKey、ProductSecret、DeviceName、DeviceSecret时,按照官方所给$IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py --input my_single_mfg_config.csv --output my_single_mfg.bin --size 0x4000
+命令,一直出现错误,错误如下
+usage: nvs_partition_gen.py [-h] {generate,generate-key,encrypt,decrypt} …
+nvs_partition_gen.py: error: argument command: invalid choice: ‘my_single_mfg_config.csv’ (choose from ‘generate’, ‘generate-key’, ‘encrypt’, ‘decrypt’)
+想尽各种办法也没有解决掉,后来在官方文件上找到了原因 实际原因是idf v4.0 上 python的命令格式发生了改变
+以下使正确格式,希望给后来的小伙伴避坑
+
+$IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate my_single_mfg_config.csv my_single_mfg.bin 0x4000
+同时以上命令需要在当前nvs分区文件目录下执行
+
+cd /mnt/hgfs/esp/esp-ali-smartliving/config/mass_mfg$
+
+ $IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate my_single_mfg_config.csv my_single_mfg.bin 0x4000
+
+Creating NVS binary with version: V2 - Multipage Blob Support Enabled
+
+Created NVS binary: ===> /mnt/hgfs/esp/esp-ali-smartliving/config/mass_mfg/my_single_mfg.bin
+
+![image-20210825144817655](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210825144817655.png)
+
+
+
+## windows 下创建阿里云三元组配置文件
+
+首先打开目录到
+E:\esp431\esp-aliyun\config\mass_mfg>
+运行 E:/esp431/esp-idf/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate my_single_mfg_config.csv my_single_mfg.bin 0x4000
+
+![image-20211104170616363](E:\TyporaImag\image-20211104170616363.png)
+
+写入芯片执行 
+
+E:/esp431/esp-idf/components/esptool_py/esptool/esptool.py write_flash 0x210000 my_single_mfg.bin
+
+这里的写flash地址根据芯片下载时提示的fctry扇区进行下载 切记
+
+如下图写入地址就是执行 E:/esp431/esp-idf/components/esptool_py/esptool/esptool.py write_flash 0x3F0000 my_single_mfg.bin
+
+![image-20211106114311216](E:\TyporaImag\image-20211106114311216.png)
+
+## 设置ESP32扇区分区问题
+
+背景:
+ESP32下载的时候遇到esp_image: Image length *** doesn't fit in partition length 1048576错误
+
+解决方法:
+项目文件夹下创建partitions.csv文件,把ota_0和0ta_1的大小改为比固件更大的数值,比如0x180000内容如下:
+
+![image-20211106110441285](E:\TyporaImag\image-20211106110441285.png)
+
+![image-20211106110455586](E:\TyporaImag\image-20211106110455586.png)

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1849 - 0
开发笔记/esp32对接阿里云生活物联网平台.html


+ 198 - 0
开发笔记/esp32对接阿里云生活物联网平台.md

@@ -0,0 +1,198 @@
+## 一,搭建Linux ESP-IDF开发环境,本博客不在叙述具体搭建过程,请参考网上教程。
+
+> ESP-IDF: 请切换到 release v4.2 tag 版本: `git checkout v4.2`
+
+> ESP8266_RTOS_SDK: 请切换到 v3.3 tag 版本: `git checkout v3.3`
+
+## 二,拉取官方阿里云生活物联网平台 & 天猫精灵 IoT 开放平台SDK开发版本
+
+拉取官方链接:git clone https://github.com/espressif/esp-ali-smartliving.git
+
+我个人码云链接: git clone https://gitee.com/http1520/esp-ali-smartliving.git
+
+拉取完成如下图:
+
+![image-20210826085500079](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826085500079.png)
+
+## 三,到阿里云生活物联网平台创建项目
+
+1,官方平台链接:[项目管理 - 生活物联网平台 (aliyun.com)](https://living.aliyun.com/)  创建可参考[创建项目 (aliyun.com)](https://help.aliyun.com/document_detail/126404.html)  一步一步进行配置。
+
+![image-20210826085958916](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826085958916.png)
+
+输入名称,选择品牌
+
+![image-20210826090057330](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826090057330.png)
+
+
+
+项目创建成功选择创建产品
+
+![image-20210826090253271](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826090253271.png)
+
+创建成功后进行功能配置,可以自行添加其他功能,我这里不做修改直接用默认功能测试
+
+![image-20210826090618093](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826090618093.png)
+
+输入产品信息,选择App,我这里选择公版App测试
+
+![image-20210826090854109](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826090854109.png)
+
+然后设置设备面板,先在手机上安装好云智能App,然后就可以通过扫描预览二维码进行查看了
+
+![image-20210826091015525](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826091015525.png)
+
+选择一个面板,也可以自定义面板,我这里直接选一个官方模板的测试
+
+![image-20210826091217962](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826091217962.png)
+
+设置配网信息。
+
+![image-20210826091348232](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826091348232.png)
+
+
+
+配置完成如下图
+
+![image-20210826091534859](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826091534859.png)
+
+然后新建一个测试设备,记录下这里的参数信息。
+
+![image-20210826091722421](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826091722421.png)
+
+## 四,配置SDK,编译烧录。
+
+### 1,编译 ali-smartliving-device-sdk-c 库
+
+ 找到esp-ali-smartliving 目录下执行:
+
+cd ali-smartliving-device-sdk-c
+
+![image-20210826093223834](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826093223834.png)
+
+再执行 make reconfig (选择SDK平台)
+
+![image-20210826093347711](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826093347711.png)
+
+make menuconfig (选择相关功能配置,默认不需要修改,该步骤可以省略)
+
+![image-20210826093502614](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826093502614.png)
+
+最后执行make (生成相关头文件和库文件) 等待编译完成
+
+![image-20210826093645812](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826093645812.png)
+
+
+
+### 2 编译 demo 例程
+
+在目录esp-ali-smartliving/config/mass_mfg下找到`single_mfg_config.csv`文件,复制重命名为`my_single_mfg_config.csv` 文件
+
+![image-20210826094011303](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826094011303.png)
+
+`修改my_single_mfg_config.csv` 文件内容,到阿里云平台找到四元组信息填好
+
+![image-20210826094433137](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826094433137.png)
+
+然后按照官方步骤执行以下命令生成nvs配置bin文件,
+
+```
+$IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py --input my_single_mfg_config.csv --output my_single_mfg.bin --size 0x4000
+```
+
+我这里会一直出现错误,错误如下
+usage: nvs_partition_gen.py [-h] {generate,generate-key,encrypt,decrypt} …
+nvs_partition_gen.py: error: argument command: invalid choice: ‘my_single_mfg_config.csv’ (choose from ‘generate’, ‘generate-key’, ‘encrypt’, ‘decrypt’)
+实际原因是idf v4.0以上python的命令格式发生了改变
+**正确格式应该是:**
+
+```
+$IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate my_single_mfg_config.csv my_single_mfg.bin 0x4000
+```
+
+
+![image-20210826095337698](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826095337698.png)
+
+生成bin文件后先烧录到ESP32执行以下命令:
+
+```
+$IDF_PATH/components/esptool_py/esptool/esptool.py write_flash 0x210000 my_single_mfg.bin
+```
+
+![image-20210826100707720](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826100707720.png)
+
+然后打开esp-ali-smartliving 目录下执行:
+
+```
+cd examples/solutions/smart_light
+```
+
+```
+make defconfig
+```
+
+![image-20210826095614119](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826095614119.png)
+
+执行make menuconfig命令配置烧录参数,可省略
+
+执行idf.py build命令执行编译工程,编译完成idf.py flash进行烧录
+
+![image-20210826100057852](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826100057852.png)
+
+执行命令查看串口打印信息,正常运行打印如下数据
+
+```
+idf.py monitor
+```
+
+
+
+![image-20210826101512723](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826101512723.png)
+
+首次运行上电,默认就是配网状态下,可以看到如下信息:
+
+![image-20210826101714557](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826101714557.png)
+
+然后打开云智能App进行配网,也可以直接使用天猫精灵进行语音配网,我这里用app进行配置。找到之前的阿里云平台配置界面,点击配网+APP二维码这里。然后用手机先连接WiFi 再打开App进行扫描配置。
+
+![image-20210826101902854](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826101902854.png)
+
+扫描后弹出这个界面。扫描到后会提示进度。
+
+![image-20210826102351237](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826102351237.png)
+
+![image-20210826102457885](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826102457885.png)
+
+我们再查看设备端串口打印的调试数据,可以看到配网流程信息如下
+
+
+
+![image-20210826102143454](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826102143454.png)
+
+然后点击手机上的开关指令可以看到设备端接收信息
+
+![image-20210826102722163](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826102722163.png)
+
+但是硬件上的灯并没有变化,这时我们需要打开源码查看是什么问题。查看源码发现开关指令的标识符不对与我们实际接收的不一致。需要在此处修改一下才行,是因为平台端的开关标识符默认是powerstate。同时下面的RGB标识符也需要修改一下,我这里采用HSV调光。
+
+![image-20210826103107781](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826103107781.png)
+
+![image-20210826105450577](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826105450577.png)
+
+修改后编译下载成功运行;
+
+![image-20210826110503020](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826110503020.png)
+
+![image-20210826110537323](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826110537323.png)
+
+相关IO口定义在lightbulb.c文件
+
+![image-20210826105937770](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210826105937770.png)
+
+### 注意事项:
+
+1,四元组信息一定要设置好,并且成功烧录到对应NVS分区
+
+2,配网的WiFi一定要是2.4G频段的
+
+3,控制IO以及相关标识符要对应。

+ 93 - 0
开发笔记/esp32对接阿里云生活物联网平台.pdf

@@ -0,0 +1,93 @@
+一,搭建Linux ESP-IDF开发环境,本博客不在叙述具体搭
+建过程,请参考网上教程。
+
+    ESP-IDF: 请切换到 release v4.2 tag 版本: git checkout v4.2
+    ESP8266_RTOS_SDK: 请切换到 v3.3 tag 版本: git checkout v3.3
+
+二,拉取官方阿里云生活物联网平台 & 天猫精灵 IoT 开放
+平台SDK开发版本
+
+拉取官方链接:git clone https://github.com/espressif/esp-ali-smartliving.git
+我个人码云链接: git clone https://gitee.com/http1520/esp-ali-smartliving.git
+拉取完成如下图:
+
+三,到阿里云生活物联网平台创建项目
+
+1,官方平台链接:项目管理 - 生活物联网平台 (aliyun.com) 创建可参考创建项目 (aliyun.com) 一步一
+步进行配置。
+
+输入名称,选择品牌
+项目创建成功选择创建产品
+创建成功后进行功能配置,可以自行添加其他功能,我这里不做修改直接用默认功能测试
+输入产品信息,选择App,我这里选择公版App测试
+然后设置设备面板,先在手机上安装好云智能App,然后就可以通过扫描预览二维码进行查看了
+选择一个面板,也可以自定义面板,我这里直接选一个官方模板的测试
+
+设置配网信息。
+配置完成如下图
+然后新建一个测试设备,记录下这里的参数信息。
+四,配置SDK,编译烧录。
+
+1,编译 ali-smartliving-device-sdk-c 库
+
+找到esp-ali-smartliving 目录下执行:
+cd ali-smartliving-device-sdk-c
+
+再执行 make reconfig (选择SDK平台)
+
+make menuconfig (选择相关功能配置,默认不需要修改,该步骤可以省略)
+最后执行make (生成相关头文件和库文件) 等待编译完成
+
+2 编译 demo 例程
+
+在目录esp-ali-smartliving/config/mass_mfg下找到 single_mfg_config.csv 文件,复制重命名为
+my_single_mfg_config.csv 文件
+
+修改my_single_mfg_config.csv 文件内容,到阿里云平台找到四元组信息填好
+然后按照官方步骤执行以下命令生成nvs配置bin文件,
+   $IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py --
+   input my_single_mfg_config.csv --output my_single_mfg.bin --size 0x4000
+
+我这里会一直出现错误,错误如下
+usage: nvs_partition_gen.py [-h] {generate,generate-key,encrypt,decrypt} …
+nvs_partition_gen.py: error: argument command: invalid choice: ‘my_single_mfg_config.csv’
+(choose from ‘generate’, ‘generate-key’, ‘encrypt’, ‘decrypt’)
+实际原因是idf v4.0以上python的命令格式发生了改变
+正确格式应该是:
+
+   $IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py
+   generate my_single_mfg_config.csv my_single_mfg.bin 0x4000
+
+生成bin文件后先烧录到ESP32执行以下命令:
+   $IDF_PATH/components/esptool_py/esptool/esptool.py write_flash 0x210000
+   my_single_mfg.bin
+然后打开esp-ali-smartliving 目录下执行:
+   cd examples/solutions/smart_light
+   make defconfig
+
+执行make menuconfig命令配置烧录参数,可省略
+执行idf.py build命令执行编译工程,编译完成idf.py flash进行烧录
+
+执行命令查看串口打印信息,正常运行打印如下数据
+   idf.py monitor
+
+首次运行上电,默认就是配网状态下,可以看到如下信息:
+然后打开云智能App进行配网,也可以直接使用天猫精灵进行语音配网,我这里用app进行配置。找到
+之前的阿里云平台配置界面,点击配网+APP二维码这里。然后用手机先连接WiFi 再打开App进行扫描
+配置。
+
+扫描后弹出这个界面。扫描到后会提示进度。
+我们再查看设备端串口打印的调试数据,可以看到配网流程信息如下
+然后点击手机上的开关指令可以看到设备端接收信息
+
+但是硬件上的灯并没有变化,这时我们需要打开源码查看是什么问题。查看源码发现开关指令的标识符
+不对与我们实际接收的不一致。需要在此处修改一下才行,是因为平台端的开关标识符默认是
+powerstate。同时下面的RGB标识符也需要修改一下,我这里采用HSV调光。
+修改后编译下载成功运行;
+相关IO口定义在lightbulb.c文件
+注意事项:
+
+1,四元组信息一定要设置好,并且成功烧录到对应NVS分区
+2,配网的WiFi一定要是2.4G频段的
+3,控制IO以及相关标识符要对应。
+

+ 13 - 0
开发笔记/esp32开发linux相关命令.md

@@ -0,0 +1,13 @@
+**Ubuntu串口监视器**
+
+监视某一个端口 make  /dev/ttyUSB0 monitor
+
+退出监视 Ctrl + ] 
+
+**Ubuntu串口工具**
+
+sudo apt-get install cutecom   便可安装
+cutecom                   便可执行**
+
+
+

+ 7 - 0
开发笔记/esp32自定义项目结构Cmake问题.md

@@ -0,0 +1,7 @@
+# 解决ESP32开发 CMakeLists包含同级目录.h文件,error: gpioX.h: No such file or directory
+
+![image-20210802172312376](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210802172312376.png)
+
+# ESP32 ESP-IDF增加自定义components 注意事项,以及自定义子文件目录下文件引用IDF组件时注意事项。
+
+![image-20210802172441393](C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\image-20210802172441393.png)

+ 7 - 0
开发笔记/linux相关设置.md

@@ -0,0 +1,7 @@
+**实现windows与linux环境下复制粘贴**
+
+执行以下几条命令即可
+sudo apt-get install open-vm-tools
+sudo apt-get install open-vm-tools-desktop
+
+[(2条消息) Linux下python的卸载与安装_yimisiyang-CSDN博客_linux卸载python](https://blog.csdn.net/yimisiyang/article/details/104037739)

+ 5 - 0
开发笔记/阿里云物联网平台云流转功能.md

@@ -0,0 +1,5 @@
+![image-20220328101443137](E:\TyporaImag\image-20220328101443137.png)
+
+
+
+![image-20220328101749111](E:\TyporaImag\image-20220328101749111.png)

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels