-
第一章ESP8266概述
智能音箱、智能台灯、智能开关、智能窗帘等智能电子产品有一个共同的特征就是能够以无线的方式接入到互联网当中,从而获得互联网的支持,实现智能的能力。ESP8266是兼具MCU控制功能和WiFi功能的国产芯片,本章重点介绍ESP8266芯片特点,开发环境的创建,开发模板的制作、SDK编程方式的特点等,为后续开发打下基础。
-
●1.1综述
所谓智能电子产品是对传统设备进行改造,使传统的设备具备无线互联的能力,实现云加端的典型架构,从而实现远程控制、无线控制、智能控制。本课程采用国产的、市场认可度高的芯片ESP8266作为学习对象,课程用到的资料、软件、硬件获取都很方便,不局限于某本配套教材。因此对于智能电子产品感兴趣的学生,如果你具备了基本的C语言知识,那么欢迎你们来到“智能电子产品设计与制作”的课堂。
-
●1.2环境搭建
如何进行ESP8266的程序开发呢?首先需要搭建开发环境。本节着重介绍三个软件(AIThinker IDE集成开发环境;ESPFlashDownloadTool程序下载工具;AIThinker Serial Tool串口调试工具)的获取和安装。和串口驱动程序ch341的获取和安装。并且宏观的介绍了如何利用这三个软件和一个驱动进行程序开发的流程。
-
●1.3模板制作
ESP8266官方乐鑫公司提供了开发模板(SDK),和API开发手册,让开发者能快速的进行功能开发,本章节重点为大家介绍SDK编程的方法和优势,同时根据实际需求对官方模板进行剪裁,形成自己的开发模板,为后续程序开发做好准备。
-
●1.4模板使用
本章节的内容是使用模板来完成一个简单的串口打印任务,通过此任务,掌握ESP程序开发的完整流程:首先将工程导入AIThinker IDE集成开发环境,编写用户代码,保存和编译,接着利用 Flash下载工具将编译好的二进制文件下载到 esp8266开发板当中,最后通过串口调试助手,显示串口打印信息。
-
第二章8266MCU功能
本章学习 ESP8266微控制器部分,ESP866的本质就是MCU,即微控制器,或者叫做单片机。这种单片机与经典51单片机的区别就在于ESP 8266在单片机的基础上加入了WiFi的功能。本章重点学习ESP8266基于SDK-API的编程方式进行IO接口、串口、定时器、中断等MCU功能的开发节简介
-
●2.1ESP8266单片机综述与GPIO端口
GPIO是General Purpose I/O的缩写。翻译成中文就是通用输入输出接口。本节任务是编程将 ESP8266的GPIO端口设置为输出端口并输出一个控制信号来点亮开发板上的一盏 LED灯,通过这个任务来学习ESP 8266 上GPIO端口的使用。
-
●2.2应用函数与回调函数
回调函数是由事件调用的一种函数,既某个事件发生时,回调函数才会被调用,如果这个事件不发生,则这个函数始终都不会被调用。本节重点介绍回调函数的使用,并且通过与普通应用函数进行对比,来加深回调函数的理解和掌握回调函数的使用。
-
●2.3软件定时器
本节的任务是通过软件定时器实现重复定时功能,每隔两秒钟在串口调试助手上打印hello world字符串。在esp8266或单片机中经常使用定时器重复做同一件事,例如每隔5秒钟向网络服务器上报一次房间的温湿度数据。任务中我们还将进一步学习回调函数的使用,定时器可以看做是一个事件,为此事件写一个回调函数,在回调函数中实现功能打印hello world字符串。
-
●2.4硬件定时器
本节的任务是通过硬件定时器实现重复定时功能,效果是 ESP8266每隔1秒钟在串口调试助手上打印hello world字符串。通过本任务掌握硬件定时器的使用,同时理解软件定时器和硬件定时器的区别和优缺点。
-
●2.5PWM呼吸灯
呼吸灯的效果,近年来被广泛的应用于电子设备之上,起到提醒或装饰的效果。本节的任务是用PWM技术对灯的亮度进行控制,达到灯光反复由暗逐渐变亮,再由亮逐渐变暗的效果。PWM是Pulse Width Modulation的缩写。翻译成中文就是脉冲宽度调制。本任务通过学习相关API函数来设置IO口输出电平的周期和占空比来实现呼吸灯的功能。
-
●2.6UART串口编程
串口作为ESP8266的主要资源,在ESP8266的开发过程中,发挥了重要的作用。第一,我们要通过其串口将编译好的程序下载到ESP8266中。第二,在调试阶段 ESP8266可以通过其串口发送一些调试信息、运行信息到电脑屏幕中显示。本节内容我们将详细了解串口的使用,包括串口驱动程序的添加,波特率的设置等等。
-
●2.7IIC接口温湿度采集
在数字传感器中,IIC是主要的接口,在ESP8266中IIC接口也是作为ESP8266连接外部芯片的接口,在ESP8266连接外部传感器的过程中担负着连接接口的作用, AHT 10温湿度传感器,就是一种具有IIC接口的国产温湿度传感器。这次课的任务是使用ESP8266的IIC接口读取温湿度传感器AHT10的数据,并通过ESP8266的串口将数据送到串口调试助手当中显示。
-
●2.8简单人机交互接口
能将温湿度信息在显示器上显示出来,能更直观的观察温湿度,这节的任务是在ESP8266已经接有温湿度传感器的IIC接口上再接入一个0.96寸的oled屏幕,在屏幕中显示环境温湿度数据,从而达到一个简单的人机交互的效果。
-
第三章8266局域网控制
上一章我们学习了 ESP8266单片机部分的知识,掌握了ESP 8266 GPIO接口、串口、软件定时器、 IIC接口,温湿度传感器, OLED屏幕的操作和使用方法。这些内容,都是电子产品必须具备的基本功能,如果在这个产品上加入联网的功能,让用户能够进行远程的操作控制,通过网络对这个产品进行赋能,实现更复杂的场景应用,那么这个产品就是智能电子产品了。本章将详细讲解和实现局域网内的设备控制,包括设置ESP8266工作模式、获取环境中的WiFi,接入已有WiFi,和局域网中的设备进行数据传输,并实现控制功能。掌握局域网内的通讯是如何被一步步建立起来的,并为后续的远程控制打下基础。节简介
-
●3.1ESP8266局域网内控制
ESP 8266 SDK包中定义了这三种工作模式,设置为STATION_MODE ,则可接入已有的WiFi,设置为SOFTAP_MODE则作为热点,让别的设备接入;还可以设置为STATIONAP_MODE 这样既可接入已有的WIFI,同时作为热点,让别的设备接入。本节任务是,将ESP 8266设置为STATION 模式,然后扫描环境中所有的WiFi信号,为后续接入WiFi做好准备。
-
●3.2设置ESP8266的工作模式
本节任务是接入到一个已知用户名和密码的WiFi,同时要定时查询WiFi是否连接成功,连接成功后在串口调试助手上打印温湿度信息。查询WiFi连接状态,定义一个软件定时器进行重复查询,当连接成功时,关闭WiFi查询定时器,同时开启温湿度采集定时器。
-
●3.3接入已有的WiFi
本节主要介绍UDP传输协议,以及UDP数据传输相关API接口,通过这些接口,实现ESP8266采集到温湿度信息后发送到局域网的另一台设备中。
-
●3.4UDP数据传输
本节主要介绍TCP传输协议,并和UDP传输协议进行对比,介绍了TCP相关的API函数和实现机制,虽然TCP传输机制比UDP复杂,但是通过SDK提供的相关API,能轻松实现ESP8266将采集到温湿度信息发送到局域网的另一台设备中。
-
●3.5TCP数据传输温度上报
本节的任务是利用TCP协议8266作为客户端,服务器端电脑通过网络调试助手,发送命令,控制ESP8266开发板上的LED 灯,从而实现局域网内的控制功能。
-
●3.6局域网内控制开关灯
本节的任务是继续使用相关API函数将ESP8266设置成一个名为WHCVC,密码为12345678的WiFi热点模式。这样同学们的手机就可以接入到esp8266产生的热点。
-
●3.7WIFI热点模式
有这样一种场景,就是当主人回到家时智能家居系统会自动把一些辅助灯光打开,比如门厅,比如玄关处的灯,ESP8266通过API函数可以获取到接入8266热点的所有设备的MAC地址,接入设备的MAC地址与存储在智能家居系统中主人手机的MAC地址进行比较,如果相匹配就认为主人回来了,此时将灯点亮。本节将实现此功能。
-
●3.8家人手机接入热点自动开灯编程
手机接入热点自动开灯编程
-
第四章8266远程控制
在第3章学习的局域网内的控制,其数据的传输就是点到点的,直接由电脑或者手机发送到ESP8266当中。本章将讲解通过远程控制来实现在办公室对家中电气设备的控制,或者是在办公室查看到家中的温湿度、电器设备的运行情况。远程控制的数据转发需要云服务,主要有阿里云,百度云,腾讯云,华为云,还有小米和京东也提供这种数据转发的云服务。
-
●4.1ESP8266远程控制
ESP8266远程控制综述
-
●4.2添加云端设备(百度云)
MQTT配置成功后,本节的内容就要实现对ESP8266的远程控制功能,代码实现中我们将使用esp_mqtt_proj这个示例代码作为模板,过程中将调用相关API完成MQTT的连接,我们将详细讲解代码的加载和执行过程。
-
●4.3通过云端中转实现远程开关灯
最后一个任务是要通过云端消息的转发由8266向电脑或手机发送温湿度数据,我们将运用百度云的物可视服务将温湿度数据在手机端或电脑端显示出来,本节我们将讲解物接入4个核心的概念:一个是属性,一个是物模型,一个是物影子,并完成可视化的相关设置。
-
●4.4云端数据可视化设置
百度云物接入和可视化部分相关设置完成,接下来8266需要完成连接百度智能云,登录MQTT服务器,并将温湿度数据按照固定 json格式上报到物接入的 Update主题。本节将详细讲解这部分的代码实现。
-
●4.5通过MQTT协议上报温湿度数据到云端
通过MQTT协议上报温湿度数据到云端