1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。
2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。
3、 认识基本esp32的GPIO接口,开始点亮您的第一盏 LED和中断回调实现按键功能 。
4、体会esp32的强大的定时器功能, 实现定时2s闪烁一盏LED灯。
5、接触实践esp32的pwm宽度脉冲功能, 实现呼吸效果闪烁一盏LED灯。
6、smartConfig和微信airKiss在esp32的实现,一键配网轻松快捷连接路由器。
7、利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。
8、esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。
9、esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。
10、乐鑫esp32 SDK编程利用rmt驱动ws2812七彩灯,实现彩虹渐变效果。
11、入门 乐鑫esp-adf 音频框架开发,esp32造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。
12、开源一个微信公众号airkiss配网esp32以及局域网发现功能的工程,分享一个airkiss配网小工具。
13、esp32 内置 dns 服务器,无需外网访问域名返回指定网页。
14、esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录界面。
15、认识本地离线语音唤醒识别框架 esp-skainet ,实现较低成本的硬件语音本地识别控制。
16、学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
17、全网首发,乐鑫esp32 sdk直连京东微联·小京鱼 · IoT开放平台,实现叮咚音响语音智能控制。
18、入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。
19、重磅开源,如何在微信小程序上ble蓝牙配网esp32,blufi的那些事!
20、一篇好文,开发过程中编译esp32固件太大,无法正常启动?教你如何自定义分区表partitions.csv。
能写博客开源一篇文章,我觉得是一件有趣的事情,不仅仅可以对自己的职业生涯有帮助,更可以相识到很多志同道合的朋友;我也交流过很多大佬有乐鑫、安信可在职人员,但并不喜欢写文章或开源,也只是喜欢默默无闻敲代码,说到底,一个喜欢写文章、开源、分享的技术人员,真的不多!物联网嵌入式圈子也就这么小!
上半年已做过了esp8266接入京东微联上架了好几个产品,近几个星期,要把 esp32接入京东微联作为技术储备,说到底,这个接入还是比较简单的。毕竟有对应开源的框架,我们应用层开发者,只需要在业务逻辑上做修改就可以了;
接入过程中,我的接触还是比较多的,京东微联平台一直在更新,从之前没授权激活认证机制到现在的一机一密的形式,说明安全性越来越来,但是比较频繁的更新,对我们开发者也是不友好的,毕竟过程有许多坑,据我所知,接入商家比阿里天猫精灵接入还是较少的;但是,老板叫我们怎么做,我们只能怎么做呗!
京东小京鱼IoT 开放平台(以下简称IoT平台)是京东在IoT时代全力打造的一个综合性开放平台,旨在为广大合伙伙伴提供一体化的智能解决方案,同时利用京东的流量优势,将产品快速推广给C端用户。IoT平台主要服务于生活场景中的智能设备,如智能家居设备,智能家电设备,智能车载,可穿戴设备等。截至目前,IoT平台已接入上百家品牌厂家的上千款产品,已经销售的产品数量达到了上千万数量级。
平台向以下类型的开发者提供合作方案——
平台提供直联和轻联两种接入方式:
我这里主要介绍的是直连方案,不讨论云对云对接方案;
直连接入和接入小米iot平台非常相似,都是需要 设备端开发、H5自主开发,以及最后发布审核;
京东iot平台的控制面板是采用 vue
,而小米的采用 react native
,其实后者体验更好,毕竟 Facebook
已经开源好几年了;但是 rn 语法,比 vue 较难入手,毕竟环境搭建就让你头疼;
首先你要注册账号和新建产品,点击 https://smartdev.jd.com/,无脑式创建,其中的无脑式操作流程一路next就可以了;
但是,创建好之后,产品以下的参数务必记好:
参数 | 含义 |
---|---|
UUID | 产品唯一标识码 |
SecretKey | 一键配置的加密密钥,新版本的这个并没用! |
CID | 品类,比如灯是24 |
BRAND | 厂商Id,比如 FSL是421 |
SoftAp SSID | 热点配网名称 |
PUBLIC_KEY | 设备认证云端公钥 |
MAC | 设备MAC地址,设备端生成 |
PRIVATE_KEY | 私钥 |
而云端认证设备有2种方式:
方式1是一机一密,过程是开发者先上传一批 设备的mac地址到后台,然后下载对应的 私钥,一个一个对应烧录进去,比较麻烦;
方式2是一型一密,只需要申请一个私钥就可以了,就不用一个一个对应烧录进去;
前面说了,京东lot平台插件开发是 vue 语法,并且有公版提供,为了演示方便,我们直接从公版的压缩包文件下的 dist 文件夹里面 index.zip 上传到服务器即可,灯具类默认是这样的:
esp32
工具链框架 3.3 分支 !因为做产品抑或正式版SDK,基本是基于稳定版开发的;所以,官网提供接入是基于 3.3 分支开发的,那么我们需要克隆指定的分支或者在自身的代码中切换分支到3.3;
因为国内拉取 GitHub
仓库是在太慢了,我为大家提供下一个国内码云的镜像,仓库我是同步官网的;
git clone -b v3.3 https://github.com/espressif/esp-idf.git
git clone -b v3.3 https://gitee.com/xuhongv/esp-idf.git
毕竟这个 git 仓库里面有很多子模块,但是子模块也是链接到 GitHub
,所以:大家还要更新下子模块;
git submodule update
esp-idf
文件夹下面的 .gitmodules
文件,全部修改替换为下面代码;[submodule "components/esp32/lib"]
path = components/esp32/lib
url = https://gitee.com/xuhongv/esp32-wifi-lib.git
[submodule "components/esptool_py/esptool"]
path = components/esptool_py/esptool
url = https://gitee.com/xuhongv/esptool.git
[submodule "components/bt/lib"]
path = components/bt/lib
url = https://gitee.com/xuhongv/esp32-bt-lib.git
[submodule "components/micro-ecc/micro-ecc"]
path = components/micro-ecc/micro-ecc
url = https://gitee.com/xuhongv/micro-ecc.git
[submodule "components/coap/libcoap"]
path = components/coap/libcoap
url = https://gitee.com/xuhongv/libcoap.git
[submodule "components/aws_iot/aws-iot-device-sdk-embedded-C"]
path = components/aws_iot/aws-iot-device-sdk-embedded-C
url = https://gitee.com/xuhongv/aws-iot-device-sdk-embedded-C.git
[submodule "components/nghttp/nghttp2"]
path = components/nghttp/nghttp2
url = https://gitee.com/xuhongv/nghttp2.git
[submodule "components/libsodium/libsodium"]
path = components/libsodium/libsodium
url = https://gitee.com/xuhongv/libsodium.git
[submodule "components/spiffs/spiffs"]
path = components/spiffs/spiffs
url = https://gitee.com/xuhongv/spiffs.git
[submodule "components/json/cJSON"]
path = components/json/cJSON
url = https://gitee.com/xuhongv/cJSON.git
[submodule "components/mbedtls/mbedtls"]
path = components/mbedtls/mbedtls
url = https://gitee.com/xuhongv/mbedtls.git
[submodule "components/asio/asio"]
path = components/asio/asio
url = https://gitee.com/xuhongv/asio.git
[submodule "components/expat/expat"]
path = components/expat/expat
url = https://gitee.com/xuhongv/libexpat.git
[submodule "components/lwip/lwip"]
path = components/lwip/lwip
url = https://gitee.com/xuhongv/esp-lwip.git
[submodule "components/mqtt/esp-mqtt"]
path = components/mqtt/esp-mqtt
url = https://gitee.com/xuhongv/esp-mqtt.git
[submodule "components/protobuf-c/protobuf-c"]
path = components/protobuf-c/protobuf-c
url = https://gitee.com/xuhongv/protobuf-c.git
git submodule update
终于到了重点了啦;克隆下仓库就好了;
git clone --recursive https://github.com/espressif/esp-joylink.git
注意在 make menuconfig
时候,esp32芯片必须要打开蓝牙配置,否则编译失败!
由于 esp32 和 esp8266代码不同,导致编译成的固件大小也有不一样,这里支持远程升级的 分区表要自定义下,我开发过程中发现固件竟然有 1.5m,所以我这里顺便分享下我的分区表:
注意应用程序的烧录位置必须是 64k(0x1000) 的倍数,所以选择 4M 的esp32模组,0x1a9000是指17000k也就是1.7m够用了,分区表如下:
nvs, data, nvs, 0x9000, 0x4000
otadata, data, ota, 0xd000, 0x2000
phy_init, data, phy, 0xf000, 0x1000
ota_0, 0, ota_0, 0x10000, 0x1a9000
ota_1, 0, ota_1, 0x210000, 0x1a9000
编译前,先配置好设备参数,否则后面配网不成功或者激活不成功,i下面几个参数务必一一核实!!!
目前 2.0.19 版本京东微联已经停止支持 SmartConfig 的配网方式,目前支持 SoftAp 和 Thunder 配网,芯片上电默认进入 SoftAP 配网,如果用户需要使用 Thunder 配网,需要购买京东的音箱,音箱需要进入沙箱模式,与音箱相关的设置,用户可以咨询京东。
注意配网时候,如果使用的是 app配网,请务必使用沙箱版app!非正式版app!
Q1:设备配网成功,激活错误:“缺少签名密钥”!
{“error_response”:{“en_desc”:“Missing secret”,“zh_desc”:“缺少签名密钥”,“code”:29}}
Q2:编译失败,提示固件太大无法编译;section
.dram0.bss' will not fit in region
dram0_0_seg’
Q3:如何自定义分区表
esp8266
带你飞、加群付费QQ
群,不喜的朋友勿喷勿加:434878850