SCUMaker入门培训第三弹半-IOT开发深入

SCUMaker入门培训第三弹半-IOT开发深入

本教程将基于Arduino开发环境进行,使用ESP32主控,开发板是我们定制的一套开发板,外设要比第三弹的多一些,也会讲更多的内容。(其实就是给课上写的PPT和教案不拿来复用就可惜了)
在这一系列中,你可以学到这些内容:

  1. 常见的外设,以及其工作原理
  2. 对于按键的响应(两种方式)
  3. 通讯能力(ESPNOW协议与BLE通信)

1 个赞

Part0 相关资料连接

1. ESP32-Arduino官方文档

  1. 官方参考手册:Getting Started

2. 板上外设学习文档

  1. MAX7219
  2. DHT11

3. 相关知识链接

  1. 取模软件
  2. 点阵屏字体
  3. ESPNOW
  4. BLE

4. 示例代码

Part1:片上资源介绍

1. MAX7219驱动的8*8点阵屏


双击.ino文件打开示例工程,可以直接上传到开发板查看效果

如何方便的自定义显示内容

2. DHT11

直接双击.ino文件打开示例工程,可以直接上传到开发板,上传后打开串口监视器,观察串口监视器的信息显示
image
image

3. 无源蜂鸣器

无源是指内部没有信号源,需要使用IO口产生方波信号使其发出声音。在Arduino环境下使用PWM输出可以便捷地获得方波信号,这里我们使用ESP提供的LEDCAPI来生成指定频率的PWM信号(占空比设置为一半,获得比较标准的方波)。


直接双击.ino文件打开示例工程,可以直接上传到开发板,上传后可以听到随时间变化的音调。音调对应的频率范围就是1khz-20khz。可以自行修改。
image

4. 按键

4.1 引入


USB接口是轮询式:系统不停地去问鼠标
PS2接口是中断式:每次移动主动告知系统(更底层,支持关机唤醒等底层功能)

4.2 轮询式

案例:按下按键A开启蜂鸣器,按下按键B关闭蜂鸣器
image
这是一个无阻塞(delay)的程序,观察串口输出,试试取消注释,看看发生了什么。

案例:按下按键A屏幕显示0123,按下按键B屏幕显示你好世界
(仿照轮询的方式,有什么问题)
image

4.3 中断

案例:按下按键A屏幕显示0123,按下按键B屏幕显示你好世界(使用中断的方式修改程序)
image
image
思考:和修改之前是一样的吗?可不可以在isa、isb中直接调用绘制?调用了会是怎么样呢?

4.3 总结

选择中断方式还是轮询方式呢:我们会发现,对于外部响应,如果是轮询式,在单线程的情况下,总是会出现问题的。往往采用中断式。

中断函数注意事项:

一定要简短!尽可能减少执行时间(栈有限)
通常采用标志位方式利用中断,即在loop中检测标志位执行对应动作,中断的回调函数只修改标志位!

5. WIFI

AP模式:ESP32开启热点,用手机或者电脑连接,进入192.168.4.1,尝试控制和读取信息(注意每个需要同学自行修改SSID和密码!)
image
连接后网页显示如图:

STA模式:
扫描附近的WIFI信息,输出到串口
image