LV01-01-AliOSThings-05-esp8266
本文主要是esp8266开发板简介与esp8266工程创建、编译和烧写运行的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows版本 | windows11 |
Ubuntu版本 | Ubuntu22.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) |
点击查看本文参考资料
分类 | 网址 | 说明 |
官方网站 | 阿里云 | 阿里云官网主页 |
阿里生活物联平台 | 生活物联网平台(飞燕平台)主页 | |
AliGenie | 天猫精灵开放平台AliGenie主页 | |
阿里物联网平台 | 阿里物联网平台主页 | |
Bluetooth 技术网站 | 蓝牙协议规范什么的可以来这里找 | |
Telink | Telink | Chips for a Smarter IoT (telink-semi.com) Telink中文官网 | |
开发手册 | AliOS Things开发指南 | AliOS Things开发指南,这里是最新版本,可以直接从官网找到 |
AliOS Things开发指南 | AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档 | |
AliOS Things开发指南(3.0) | AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档 | |
生活物联网平台开发文档 | 生活物联网平台(飞燕平台)开发文档 《设备端开发指南》 | |
Wi-Fi IoT品类定义与功能开发 | 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发 | |
硬件平台 | mk3080 WiFi开发板 | WiFi开发板使用指南-阿里云开发者社区 |
esp8266开发板 | 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com) | |
TLSR8258 Datasheet | Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258 | |
参考资料 | AliOS Things 3.0 应用开发指南 | 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考 |
IP知识百科 - 华为 (huawei.com) | IP的一些相关知识点 |
点击查看相关文件下载
分类 | 网址 | 说明 |
蓝牙规范相关文档 | Core Specification 5.2 | 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。 《Core_v5.2.pdf》 |
Mesh Model(v1.1) | 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。 本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。 《MshMDL_v1.1.pdf》 | |
Mesh Profile(v1.0.1) | 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。 《MshPRFv1.0.1.pdf》 | |
Mesh Device Properties | 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。 但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》 | |
GATT Specification Supplement | GATT Specification Supplement | Bluetooth® Technology Website。 好像可以在线看:《GATT Specification Supplement》 | |
Assigned Numbers | GATT的一些类型定义可以在这里找。 | |
AliOS Things | alios-things/AliOS-Things | Gitee上的AliOSThings SDK源码仓库 |
alibaba/AliOS-Things | GitHub上的AliOSThings SDK源码仓库 | |
天猫精灵蓝牙Mesh协议栈 | alibaba-archive/genie-bt-mesh-stack | GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。 之前是在alibaba/genie-bt-mesh-stack这个仓库。 写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a |
蓝牙Mesh设备开发指南 | 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容 |
我这里没有esp8266开发板,所以仅仅是根据课程做个笔记,并没有进行实操,但是其实它是跟mk3080很类似的。
一、esp8266开发板介绍
1. 开发板简介
esp8266 指的是一个wifi SOC 芯片。下面的开发板,学名叫nodeMcu:
NodeMCU是一个开源的IoT物联网硬件开发板,由于它支持WIFI功能且使用方法十分类似Arduino开发板。NodeMCU尺寸与Arduino Nano类似。它并不是Arduino团队开发的,但是我们也可以使用Arduino IDE 对它进行开发。作为万物互联的IoT基础,首先物联网控制板的成本不能过高。高昂的物联网控制元件不利于项目成本控制也不利于广大创客爱好者学习和使用它。在这一点上,NodeMCU比树莓派以及Arduino家族的IoT平台等更具优势。
2. ESP8266和NodeMCU?
在一些的网站或资料中,有时是用ESP8266有时是用NodeMCU。那么ESP8266和NodeMCU之间具体是什么关系呢?
ESP8266是一块芯片,如下图所示:
而NodeMCU是以ESP8266为核心的开发板,如下图:
这里有一个官网,但是开发板跟上边的图不太一样,作为参考吧:NodeMcu – 像Arduino一样简单的开源可编程固件,还有Wifi哦!。
3. 产品特性与参数
NodeMcu是一款运行于乐鑫ESP8266芯片之中的可编程固件。它以lua语言为基础,同时提供了封装esp8266硬件操作的高级API,可以让开发者以类似于arduino的方式与底层硬件打交道,使软件开发人员轻松操作设备。同时NodeMcu还提供了时间驱动型的网络API,Nodejs风格的编程方式更是让互联网开发人员如鱼得水。
目前NodeMcu推出的第一代开发板名字是NodeMcu Dev Kit。ESP8266封装模块ESP12进行扩展,包括了∶
(1)D1~D10:均可复用为GPIO,PWM,I2C,1-Wire
(2)AO:1路ADC
(3)USB供电
(4)USB转串口调试接口
可用RAM为20Kbyte:目前采用512K Flash,用户可用存储空间150Kbyte。同时使用NodeMcu Flash Programmer自动烧写固件。低成本的ESP8266硬件、高度抽象NodeMcuAPI将助推众多开发者们的创造性想法,让我们的原型开发快速推进。网上挺多类型开发板的,就十来块,一般都会赠送详细的资料的。就例如下边就是我随便找的一款:
各个引脚对应情况如下:
4. 开发板接口
4.1 引脚概述
我们以下面这款开发板,简单了解一下exp8266开发板吧:
NodeMCU开发板的引脚名指的是开发板上印刷的文字。通常这些引脚名都是一个字符接一个数字的组合,如:D0、D1、A0… 我们会用“开发板引脚”或直接使用“引脚”来表示它们。简而言之,只要您看到GPIO这几个字母,就说明是芯片引脚,而没有GPIO这几个字母,那肯定是指开发板引脚。
ESP8266芯片的GPIO与开发板的引脚是连在一起的。但是GPIO与开发板引脚又是如何相互连接的呢?如下图所示:
特殊引脚情况说明:
(1)GPIO2引脚 在NodeMCU开发板启动时是不能连接低电平的。
(2)GPIO15引脚在开发板运行中一直保持低电平状态。因此请不要使用GPIO15引脚来读取开关状态或进行I2C通讯。
(3)GPIO0引脚在开发板运行中需要一直保持高电平状态。否则ESP8266将进入程序上传工作模式也就无法正常工作了。我们无需对GPIO0引脚进行额外操作,因为NodeMCU的内置电路可以确保GPIO0引脚在工作时连接高电平而在上传程序时连接低电平。
4.2 上拉电阻/下拉电阻
GPIO 0-15引脚都配有内置上拉电阻。这一点与Arduino十分类似。GPIO16 引脚配有内置下拉电阻。
4.3 模拟输入
ESP8266 只有一个模拟输入引脚(该引脚通过模拟-数字转换将引脚上的模拟电压数值转化为数字量)。此引脚可以读取的模拟电压值为 0 – 1.0V。请注意:ESP8266 芯片模拟输入引脚连接在1.0V以上电压可能损坏ESP8266芯片。
以上所描述的是针对ESP8266芯片的引脚。而对于NodeMCU开发板引脚,情况就不同了。NodeMCU开发板配有降压电路。我们可以用NodeMCU开发板的模拟输入引脚读取0-3.3V的模拟电压信号。这个主要还是要看开发板的电路了。
4.4 通讯
4.4.1 串行端口
ESP8266有2个硬件串行端口(UART)。串行端口0(UART0)使用GPIO1和GPIO3引脚。其中GPIO1引脚是TX0,GPIO3是RX0。串行端口1(UART1)使用GPIO2和GPIO8引脚。其中GPIO2引脚是TX1,GPIO8是RX1。请注意,由于GPIO8被用于连接闪存芯片,串行端口1只能使用GPIO2来向外发送串行数据。
4.4.2 I2C
ESP8266只有软件模拟的I²C端口,没有硬件I2C端口。也就是说我们可以使用任意的两个GPIO引脚通过软件模拟来实现I2C通讯。ESP8266的数据表(datasheet)中,GPIO2标注为SDA,GPIO14标注为SCL。
4.4.3 SPI
ESP8266的SPI端口情况如下:
1 | GPIO14——CLK |
二、创建esp8266工程
1. 创建工程
1 | aos create project -b esp8266 -t helloworld_demo helloworld_esp8266 |
2. 编译工程
2.1 编译命令
1 | aos make |
编译成功会有如下信息提示:
2.2 编译信息简析
初次编译最开始会有如下信息打印:
最开始的时候会检查编译工具链,如上图,发现esp8266工程的交叉编译工具链为gcc-xtensa-lx106,但是我们的系统没有安装,所以就会开始自动安装。之后才会进行整个工程的编译。
1 | hk@vm:~/6AliOS/helloworld_esp8266$ aos make |
注意: esp8266 没有编译bootloader文件,mk3080却进行了编译并得到了成果物(不过我们似乎并不需要重新烧写bootloader)。为什么?这是因为esp8266厂家的bootloader不开源,他们提供boot.bin文件,我们直接拿来烧写就可以了,mk3080的是开源的,我们可以自己编译。
3. 烧写到开发板
3.1 烧写哪一个文件?
还是烧写这个bin文件,只是对于esp8266来说,我们还需要两外一个文件,它在 AliOS-Things-SDK/platform/mcu/esp8266/bsp 目录下:
这个是bootloader程序的bin文件,烧写的时候要用,名字中的921600表示波特率,意思就是这个boot程序会初始化串口,串口的波特率为921600,烧写的时候波特率记得对应。
3.2 烧写工具
我们使用的是flash_download_tools。我们可以去乐鑫的官网下:工具|乐鑫科技 (espressif.com.cn):
下载解压后我们会得到以下文件:
我们打开后界面如下:
会首先弹出框①,然后我们选择这个DownloadTool之后就会弹出框②,这个框②就是下载界面。
3.3 烧写文件
我们得到上边的两个bin文件后,在烧写工具做如下配置:
波特率为bootloader初始化串口的波特率,然后我我们点击啊START等下载完成就好了
3.4 串口查看打印信息
烧写完成后,我们还是使用MobaXterm连接对应的串口,然后复位开发板,就看到以下打印信息说明我们烧写成功: