Skip to content

Mixly 教程

资料下载(重要)

注意:请先在此下载Mixly课程的代码和库文件,后面不再提供下载途径。

点击下载:Mixly资料

开发环境设置

1.下载软件

Mixly For Windows(注意电脑是32位还是64位的系统,一般都是64位的(即下载带x64的,也就是第3和第4个):

https://pan.baidu.com/s/1Phhp3JF4891kIDUc1pK_yQ?pwd=keye

image-20251009211922844

Mixly For Mac(根据系统选择):

https://pan.baidu.com/s/1QAOE_Wloskwn8UqI7f68Wg?pwd=keye

image-20251009201946789

2.安装软件

1.Windows版本安装:

特别提醒 建议解压到硬盘根目录,路径不能包含中文及特殊字符(如:._( )等)。

因为Mixly是一个绿色免安装软件,所以“mixly2.0-win32-x64-rc4完整版”版本在解压之后就可以直接使用了。如果是下载“一键更新版”版本的压缩包,压缩包解压后,需要左键双击打开“一键更新.bat”按照提示更新Mixly。

完整的Mixly文件夹中的内容如下图所示:

Img

启动软件:

这里双击“Mixly.exe”就能打开Mixly软件。如下图所示:

Img

打开Mixly软件后,找到并且单击“ Arduino ESP32 ”就可以进入Mixly编程界面。软件界面如下图所示:

Img

2.Mac版本安装:

这里有MAC安装Mixly2.0.txt文件说明。

Img

页面介绍:

Img

Img

总体来说,Mixly软件界面分为4部分。

1.界面左侧为模块区,这里包含了Mixly中所有能用到的程序模块,根据功能的不同,大概分为以下几类:“输入/输出”、“控制”、“数学”、“逻辑”、“文本”、“数组”、“变量”、“函数”、“串口”、“传感器”、“执行器”、“显示器”、“通信”、“存储”、“网络”。每种类型的模块都用不同的颜色块表示,其中每一个分类中的模块会在附录A中有专门的介绍。

2.模块区的右侧是程序构建区,模块区的模块可通过鼠标拖拽放到程序构建区,拖诟过来的模块会在这里组合成一段有一定逻辑关系的程序块。这个区域有点类似代码程序编辑软件中写代码的地方,在这个区域的右下角有一个垃圾桶,当我们删除模块时,就要将模块拖到垃圾桶中,在垃圾桶的上方有三个圆形的按钮,能够实现程序构建区的放大、缩小以及居中。

3.模块区和程序构建区的上方是基本功能区,类似一般软件的菜单区。这里不仅包含了“新建”、“打开”、“保存”、“另存为”、“导出库”和“管理库”软件都具有的按钮,还包含了硬件编程软件中需要用到的“编译”、“上传”、“控制板选择”、“串口端口”、“串口”这样的按钮。

4.界面的最下方是提示区,这里在软件编译、上传的过程中会显示相应的提示信息。我们可以通过提示信息来解决编译上传过程中出现的一些问题。

最后还要补充两点:

第一点是 Mixly支持多国语言,我们可以通过如下界面找到并且点击 Img 进入个性化设置页面,找到语言下面的简体中文下拉菜单,选择不同的语言版本,此时这个下拉菜单显示的是简体中文,如下图所示:

Img

Img

第二点是在界面最上方右侧有一个 Img 按钮,单击这个按钮就能进入纯代码形式,如下图所示:

Img

Mixly作为一款将图形化编程方式和代码编程方式融合在一起的开发环境,如果只能单独地显示代码或显示图形程序块,那么肯定是不够好的。在Mixly中是能够将代码和图形程序块一起呈现在屏幕上的,这个功能可以通过界面最上方右侧有一个按钮实现,单击这个 Img 按钮之后,如下图所示:

Img

这时,在程序构建区的右侧会显示出对应的代码,这段代码是与程序构建区中的模块所组成的程序块对应的,会随着模块的变化而变化,不过区域中的代码是不可编辑的。同时,界面最右侧那个向左的箭头按钮变成了向右的箭头。

3.添加Mixly库文件

注意:Mixly库文件( index 库)必须添加好,否则后面涉及到相关模块的示例代码是打不开的。 特别提醒:库文件在上面 资料下载 处提供有,请下载并且安装好库文件。 Mixly软件下载安装后,点击 Arduino ESP32 进入代码编辑器,先点击右上角“ 设置 ”,再点击“ 管理库 ”进入添加库文件界面。如下图所示:

Img

Img

先点击“ 导入库 ”,再点击 Img 进入库文件所放的位置,找到 index.xml 库文件并选中它,然后单击“ 确定 ”。之后,就可以看到库文件在导入中,一会儿会出现“ 导入成功 ”字样,说明库文件导入成功。如下图所示:

Img

Img

Img

点击“管理库”,可以看到添加成功的库文件。如下图所示:

Img

关闭添加库文件的窗口界面,在代码编辑器左侧看到所添加的库文件。如下图所示:

Img

4.编写代码并上传至 ESP32 主控板后面上传项目代码的步骤也一样,即:同下

确保ESP32主控板与计算机连接成功,然后双击“ Mixly.exe ”图标打开Mixly软件。

方法①:从直接拖动代码块到程序构建区进行代码编写,选用管脚IO15,如下图所示:

Img

编写完成后保存到电脑上,单击“ 文件 ”-->“ 另存为 ”,如下图所示:

Img

选择ESP32主控板的板型 “ESP32 Dev Moduel” 和串口端口(COM6)(提示:不同的电脑,串口端口是不一样的,(注意:将ESP32主板通过USB线连接到计算机后才能看到对应的端口。),如下图所示:

Img

Img

单击 Img将代码上传到ESP32主控板,如下图所示:

Img

方法②:从电脑打开已经编写好的代码

将我们提供的代码文件压缩包解压,把解压后的代码文件夹保存到方便使用的位置。

“ 文件 ”-->“ 打开 ”,然后选择保存代码的路径,选中代码文件打开即可。如下图所示:

Img

Img

代码文件打开后,需要手动选择ESP32主控板的板型 “ESP32 Dev Moduel” 和串口端口(COM6)(提示:不同的电脑,串口端口是不一样的,(注意:将ESP32主板通过USB线连接到计算机后才能看到对应的端口。),如下图所示:

Img

Img

单击Img将代码上传到ESP32主控板,如下图所示:

Img

项目01 Hello World

1.项目介绍:

对于ESP32的初学者,我们将从一些简单的东西开始。在这个项目中,你只需要一个ESP32主板,USB线和电脑就可以完成“ Hello World! ”项目。它不仅是ESP32主板和电脑的通信测试,也是ESP32的初级项目。

2.项目元件:

图片不存在 图片不存在
ESP32*1 USB 线*1

3.项目接线:

在本项目中,我们通过USB线将ESP32和电脑连接起来。

图片不存在

4.代码说明:

Img

设置串口波特率,一般是设置为9600。

Img

自动换行输出数据。从串行端口输出数据,跟随一个回车和一个换行符。

Img

从串行端口不换行输出数据。

Img

将程序的执行暂停一段时间,也就是延时。单位是毫秒。

5.项目代码:

代码可以从前面“资料下载”中找到,建议直接使用下载的资料里面的代码。

你也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”。

  3. 从 “Img” 拖出 “Img”。

  4. 从 “Img” 拖出 “Img” 放入 “Img”,将 hello 修改为 Hello World

  5. 从 “Img” 拖出 “Img”。

完整代码:

Img

在上传项目代码到ESP32之前,需要手动选择Arduino ESP32主控板的板型 “ESP32 Dev Moduel” 和串口端口(COM6)(提示:不同的电脑,串口端口是不一样的)。(注意:将ESP32主板通过USB线连接到计算机后才能看到对应的端口。) (后面上传项目代码的步骤也一样,即:同下

Img

Img

单击 Img 将项目代码上传到ESP32主板上。(下同)

Img

注意:(下同 如果上传代码不成功,可以再次点击Img后用手按住ESP32主板上的Boot键图片不存在,出现上传进度百分比数后再松开Boot键,如下图所示:

Img

项目代码上传成功!

Img

6.项目结果:

项目代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为9600,这样串口监视器打印“Hello World!”。

Img

Img

Img

项目02 点亮LED

1.项目介绍:

在这个项目中,我们将向你展示点亮LED。我们使用ESP32的数字引脚打开LED,使LED被点亮。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 红色LED*1
图片不存在 图片不存在 图片不存在
220Ω电阻*1 跳线*2 USB 线*1

3.元件知识:

(1)LED

图片不存在

LED是一种被称为“发光二极管”的半导体,是一种由半导体材料(硅、硒、锗等)制成的电子器件。它有正极和负极。短腿为负极,接GND,长腿为正极,接3.3V或5V。

图片不存在

(2)五色环电阻

电阻是电路中限制或调节电流流动的电子元件。左边是电阻器的外观,右边是电阻在电路中表示的符号。电阻(R)的单位为欧姆(Ω),1 mΩ= 1000 kΩ,1kΩ= 1000Ω。

我们可以使用电阻来保护敏感组件,如LED。电阻的强度(以Ω为单位)用小色环标记在电阻器的主体上。每种颜色代表一个数字,你可以用电阻对照卡查找。

图片不存在

在这个套件中,我们提供了3个具有不同电阻值的五色环电阻。这里以3个五色环电阻为例:

220Ω电阻×10

图片不存在

10KΩ电阻×10

图片不存在

1KΩ电阻×10

图片不存在

在相同的电压下,会有更小的电流和更大的电阻。电流、电压、电阻之间的联系可以用公式表示:I=U/R。在下图中,目前通过R1的电流: I = U / R = 3 V / 10 KΩ= 0.0003A= 0.3mA。

图片不存在

不要把电阻值很低的电阻直接连接在电源两极,这样会使电流过高而损坏电子元件。电阻是没有正负极之分。

(3)面包板

面包板是实验室中用于搭接电路的重要工具。面包板上有许多孔,可以插入集成电路和电阻等电路元件。熟练掌握面包板的使用方法是提高实验效率,减少实验故障出现几率的重要基础之一。下面就面包板的结构和使用方法做简单介绍。一个典型的面包板如下所示:

图片不存在

面包板的外观和内部结构如上图所示,常见的最小单元面包板分上、中、下三部分,上面和下面部分一般是由一行或两行的插孔构成的窄条,中间部分是由中间一条隔离凹槽和上下各5 行的插孔构成的条。

图片不存在

在面包板的两个窄条分别有两行插孔,两行之间是不连通的,一般是作为电源引入的通路。上方第一行标有“+”的一行有10组插孔(内部都是连通),均为正极;上方第二行标有“-”的一行有10组插孔,(内部都是连通),均为接地。面包板下方的第一行与第二行结构同上。如需用到整个面包板,通常将“+”与“+”用导线连接起来,“-”与“-”用导线连接起来。

中间部分宽条是由中间一条隔离凹槽和上下各5 行的插孔构成。在同一列中的5 个插孔是互相连通的,列和列之间以及凹槽上下部分则是不连通的。外观及结构如下图:

图片不存在

中间部分宽条的连接孔分为上下两部分,是面包板的主工作区,用来插接原件和跳线。在同一列中的5个插孔(即a-b-c-d-e,f-g-h-i-j)是互相连通的;列和列之间以及凹槽上下部分是不连通的。在做实验的时候,通常是使用两窄一宽组成的小单元,在宽条部分搭接电路的主体部分,上面的窄条取一行做电源,下面的窄条取一行做接地。中间宽条用于连接电路,由于凹槽上下是不连通的,所以集成块一般跨插在凹槽上。

(4)电源

ESP32需要3.3V-5V电源,在本项目中,我们通过用USB线将ESP32和电脑连起来。

图片不存在

4.项目接线图:

首先,切断ESP32的所有电源。然后根据接线图搭建电路。电路搭建好并验证无误后,用USB线将ESP32连接到电脑上。

注意:避免任何可能的短路(特别是连接3.3V和GND)!

警告:短路可能导致电路中产生大电流,造成元件过热,并对硬件造成永久性损坏。

图片不存在

注意:

怎样连接LED

图片不存在

怎样识别五色环220Ω电阻

图片不存在

5.代码说明:

Img

向指定管脚设置“高”或“低”,选择“高”代表给该管脚设置高电平,有电压,有电流,则LED点亮;选择“低”代表给管脚设置低电平,没电压,没有电流,则LED不亮。

6.项目代码:

代码也可以从前面“资料下载”中找到,建议直接使用下载的资料里面的代码。

你也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,管脚为 15 ,设为 “低” 。

  3. 又从 “Img” 拖出 “ Img ” ,管脚为 15 ,设为 “高” 。

完整代码:

Img

7.项目现象:

项目代码上传成功后,利用USB线供电,LED被点亮。

图片不存在

项目03 LED闪烁

1.项目介绍:

在这个项目中,我们将向你展示LED闪烁效果。我们使用ESP32的数字引脚打开LED,让它闪烁。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 红色LED*1
图片不存在 图片不存在 图片不存在
220Ω电阻*1 跳线*2 USB 线*1

3.项目接线图:

首先,切断ESP32的所有电源。然后根据电路图和接线图搭建电路。电路搭建好并验证无误后,用USB线将ESP32连接到电脑上。

注意:避免任何可能的短路(特别是连接3.3V和GND)!

警告:短路可能导致电路中产生大电流,造成元件过热,并对硬件造成永久性损坏。

图片不存在

注意:

怎样连接LED

图片不存在

怎样识别五色环220Ω电阻

图片不存在

4.项目代码:

代码也可以从前面“资料下载”中找到,建议直接使用下载的资料里面的代码。(注意:从本课程开始后续课程不再进行此提示)

你也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,管脚为 15 ,设为 “低” 。

  3. 从 “Img” 拖出 “ Img ” ,管脚为 15 ,设为 “高” 。

  4. 从 “Img” 拖出 “Img”,设置延时为500毫秒。

  5. 复制代码块 “Img ” 1 次,将 “高” 改为 “低”。

完整代码:

Img

5.项目现象:

项目代码上传成功后,利用USB线上电,可以看到的现象是:可以看到电路中的LED会反复闪烁。

图片不存在

项目04 呼吸灯

1.项目介绍:

在之前的研究中,我们知道LED有亮/灭状态,那么如何进入中间状态呢?如何输出一个中间状态让LED“半亮”?这就是我们将要学习的。呼吸灯,即LED由灭到亮,再由亮到灭,就像“呼吸”一样。那么,如何控制LED的亮度呢?我们将使用ESP32的PWM来实现这个目标。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 红色LED*1
图片不存在 图片不存在 图片不存在
220Ω电阻*1 跳线*2 USB 线*1

3.元件知识:

图片不存在

模拟信号 & 数字信号

模拟信号在时间和数值上都是连续的信号。相反,数字信号或离散时间信号是由一系列数字组成的时间序列。生活中的大多数信号都是模拟信号,一个熟悉的模拟信号的例子是:全天的温度是连续不断变化的,而不是突然从0到10的瞬间变化。然而,数字信号的值可以瞬间改变。这个变化用数字表示为1和0(二进制代码的基础)。如下图所示,我们可以更容易地看出它们的差异。

图片不存在

在实际应用中,我们经常使用二进制作为数字信号,即一系列的0和1。由于二进制信号只有两个值(0或1),因此具有很大的稳定性和可靠性。最后,可以将模拟信号和数字信号相互转换。

PWM:

脉宽调制(PWM)是一种利用数字信号控制模拟电路的有效方法。普通处理器不能直接输出模拟信号。PWM技术使这种转换(将数字信号转换为模拟信号)非常方便。PWM技术利用数字引脚发送一定频率的方波,即高电平和低电平的输出,交替持续一段时间。每一组高电平和低电平的总时间一般是固定的,称为周期(注:周期的倒数是频率)。高电平输出的时间通常称为脉宽,占空比是脉宽(PW)与波形总周期(T)之比的百分比。高电平输出持续时间越长,占空比越长,模拟信号中相应的电压也就越高。下图显示了对应于脉冲宽度0%-100%的模拟信号电压在0V-3.3V(高电平为3.3V)之间的变化情况.

图片不存在

PWM占空比越长,输出功率越高。既然我们了解了这种关系,我们就可以用PWM来控制LED的亮度或直流电机的速度等等。从上面可以看出,PWM并不是真实的模拟信号,电压的有效值等于相应的模拟信号。因此,我们可以控制LED和其他输出模块的输出功率,以达到不同的效果。

ESP32 与 PWM

在ESP32上,LEDC(PWM)控制器有16个独立通道,每个通道可以独立控制频率,占空比,甚至精度。与传统的PWM引脚不同,ESP32的PWM输出引脚是可配置的,每个通道有一个或多个PWM输出引脚。最大频率与比特精度的关系如下公式所示:

图片不存在

其中比特的最大值为31。例如: 生成PWM的8位精度(2ˆ8 = 256。取值范围为0 ~ 255),最大频率为80,000,000/255 = 312,500Hz。)

4.项目接线图:

图片不存在

5.代码说明:

Img

向指定管脚设置通道,赋值可以为0 ~ 255。

Img

将数字管脚15的通道设置为CH0(LT0),赋值为0 ,是LED熄灭。

Img

将管脚 15 的通道设置为CH0(LT0),赋值为i。

Img

设置一个变量 i ,i从 0 逐渐增加到 255,每一次都加 5,总共加了 51 次, 每次以10毫秒的频率增加 5,LED逐渐变亮。

Img

设置一个变量i,i从 255 逐渐减少到 0,每一次都减5,总共减了51次, 每次以 10 毫秒的频率减 5,LED逐渐变暗。

6.项目代码:

本项目设计使GPIO15 输出PWM,脉宽由0%逐渐增加到100%,再由100%逐渐减小到0%。

你也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,管脚为 15 ,通道设置为CH0(LT0),赋值为 0。

  3. 从 “Img” 拖出 “ Img ” ,从 1 到 10 步长为 1 改成从 0 到 255 步长为 5。

  4. 从 “Img” 拖出 “ Img ” 放入 “ Img ”,管脚为 15 ,通道设置为CH0(LT0);又从 “ Img” 拖出 “Img ” 放入赋值为 0 处。

  5. 从 “Img” 拖出 “Img” 放入 “ Img ”,设置延时为10毫秒。

  6. 复代码块 “ Img” 1 次,从 0 到 255 步长为 5 改成从 255 到 0 步长为 -5。

完整代码:

Img

7.项目现象:

项目代码上传成功后,利用USB线上电,可以看到的现象是:电路中的LED从暗逐渐变亮,再从亮逐渐变暗,就像呼吸一样。

图片不存在

项目05 交通灯

1.项目介绍:

交通灯在我们的日常生活中很普遍。根据一定的时间规律,交通灯是由红、黄、绿三种颜色组成的。每个人都应该遵守交通规则,这可以避免许多交通事故。在这个项目中,我们将使用ESP32和一些led(红,黄,绿)来模拟交通灯。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 红色LED*1 黄色 LED*1
图片不存在 图片不存在 图片不存在 图片不存在
绿色LED*1 220Ω电阻*3 跳线若干 USB 线*1

3.项目接线图:

图片不存在

4.项目代码:

你也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 分别拖出 “ Img ” 、 “ Img ” 、 “ Img ” 放入 “Img”,红色LED管脚为 0 、黄色LED管脚为 2 、绿色LED管脚为 15 ,全部设为 “低”。

Img

  1. 复制代码块 “ Img ” 1 次,将红色LED设为 “高”;又从 “Img” 拖出 “Img”,设置延时为5000毫秒;再复制复制代码块 “ Img ” 1次,延时为500毫秒。

Img

  1. 从 “Img” 拖出 “ Img ” ,从 1 到 10 步长为 1 改成从 1 到 3 步长为 1。

  2. 复制代码块 “ Img ” 1 次 放入 “ Img ”,将黄色LED设为 “低” 改成设为 “高”,再复制代码块 “ Img ” 1 次放入 “ Img ” ,

Img

  1. 复制代码块 “ Img ” 1次,将红色LED设为 “高” 改成 “低” ,再把绿色LED设为 “低” 改成设为 “高”。

Img

  1. 复制代码块 “ Img ” 1次。

完整代码:

Img

5.项目现象:

项目代码上传成功后,利用USB线上电,你会看到的现象是:1.首先,红灯会亮5秒,然后熄灭;2.其次,黄灯会闪烁3次,然后熄灭;3.然后,绿灯会亮5秒,然后熄灭;4.继续运行上述1-3个步骤。

图片不存在

项目06 RGB LED

图片不存在

1.项目介绍:

RGB led由三种颜色(红、绿、蓝)组成,通过混合这三种基本颜色可以发出不同的颜色。在这个项目中,我们将向你介绍RGB LED,并向你展示如何使用ESP32控制RGB LED发出不同的颜色光。即使RGB LED是非常基本的,但这也是一个介绍自己或他人电子和编码基础的伟大方式。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 RGB LED*1
图片不存在 图片不存在 图片不存在
220Ω电阻*3 跳线若干 USB 线*1

3.元件知识:

显示器大多遵循RGB颜色标准,电脑屏幕上的所有颜色都是由红、绿、蓝三种颜色以不同比例混合而成。

图片不存在

这个RGB LED有4个引脚,每个颜色(红,绿,蓝)和一个共同的阴极。为了改变RGB led的亮度,我们可以使用ESP的PWM引脚。PWM引脚会给RGB led不同占空比的信号以获得不同的颜色。

如果我们使用3个10位PWM来控制RGBLED,理论上我们可以通过不同的组合创建2^10 ×2^10 ×2^10= 1,073,741,824(10亿)种颜色。

4.项目接线图:

图片不存在

5.代码说明:

Img

设置共阴RGB亮不同颜色光,R、G、B可以在 0 ~ 255 之间设置任何数字。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,R 管脚 为 0 、G 管脚 为 2 、B 管脚 为 15 ,R 、G、B 的值都赋值为 0 。

Img

  1. 从 “Img” 拖出 “ Img ” ,从 1 到 10 步长为 1 改成从 0 到 255 步长为 1。

  2. 复制代码块 “ Img ” 1 次放入 “ Img ” ,又从 “ Img” 拖出 “Img ” 放入 R(0 ~ 255)后面 0 处;再从 “ Img ” 拖出 “ Img 放入 G(0 ~ 255)后面 0 处,将 “ + ” 改成 “ - ” ,把“ - ”前面的 1 改成 128,“ - ”后面的 1 替换成变量 i ;再复制代码块 “ Img ” 放入 G(0~255)后面 0 处,将 128 改成 255 ;再延时 10 毫秒。

Img

  1. 复制代码块 “ Img ” 1 次,将 从 0 到 255 步长为 1 改成 从 255 到 0 步长为 -1 。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电后,你会看到的现象是:RGB LED开始显示随机颜色。

图片不存在

项目07 流水灯

1.项目介绍:

在日常生活中,我们可以看到许多由不同颜色的led组成的广告牌。他们不断地改变灯光(像流水一样)来吸引顾客的注意。在这个项目中,我们将使用ESP32控制10个leds实现流水的效果。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 红色LED*10
图片不存在 图片不存在 图片不存在
220Ω电阻*10 跳线若干 USB 线*1

3.项目接线图:

Img

4.项目代码:

本项目是设计制作一个流水灯。这是这些行动:首先打开LED 1,然后关闭它。然后打开LED 2,然后关闭…并对所有10个LED重复同样的操作,直到最后一个LED关闭。这一过程反复进行,以实现流水的“运动”。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 先从 “ Img” 拖出 “Img” 放入 “Img” 中;再从 “Img” 拖出 “Img” 放入 “Img”中,将 “item” 改成 “ i ” 。

Img

  1. 从 “Img” 拖出 “ Img ” 放入 “Img”,从 1 到 10 步长为 1 改成从 12 到 22 步长为 1。

Img

  1. 先从 从 “Img” 拖出 “ Img ” 放入 “ Img” ;再从 “ Img” 拖出 “ Img ” 放入 “管脚 0 ” 处 ,“ 高 ” 改成 “ 低 ”。

Img

  1. 先从 “Img” 拖出 “ Img ” ,从 1 到 10 步长为 1 改成从 12 到 22 步长为 1 ;又从 “Img” 拖出 “ Img ” 放入 “ Img”;再从 “ Img” 拖出 “ Img ” 放入 “管脚 0 ” 处 ;添加延时200毫秒。

Img

  1. 复制代码块 “ Img ” 1次,从 12 到 22 步长为 1 改成从 22 到 12 步长为 -1 ,“ 高 ” 改成 “ 低 ”。

Img

完整代码:

Img

5.项目现象:

代码上传成功后,利用USB线上电后,你会看到的现象是:10个LED将从右到左点亮,然后从左到右返回。

Img

Img

项目08 一位数码管

1.项目介绍:

七段数码管是一种显示十进制数字的电子显示设备,广泛应用于数字时钟、电子仪表、基本计算器和其他显示数字信息的电子设备。甚至我们在电影中看到的炸弹也有七段数码管。也许七段数码管看起来不够现代,但它们是更复杂的点阵显示器的替代品,在有限的光线条件下和强烈的阳光下都很容易使用。在这个项目中,我们将使用ESP32控制一位数码管显示数字。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 一位数码管*1
图片不存在 图片不存在 图片不存在
220Ω电阻*8 跳线若干 USB 线*1

3.元件知识:

图片不存在

一位数码管显示原理: 数码管显示是一种半导体发光器件。它的基本单元是一个发光二极管(LED)。数码管显示根据段数可分为7段数码管和8段数码管。8段数码管比7段多一个LED单元(用于小数点显示)。七段LED显示屏的每段是一个单独的LED。根据LED单元接线方式,数码管可分为共阳极数码管和共阴极数码管。

在共阴极7段数码管中,分段LED的所有阴极(或负极)都连接在一起,你应该把共阴极连接到GND,要点亮一个分段LED,你可以将其关联的引脚设置为HIGH。

在共阳极7段数码管中,所有段的LED阳极(正极)都连接在一起,你应该把共阳极连接到+5V。要点亮一个分段LED,你可以将其关联的引脚设置为LOW。

图片不存在

数码管的每个部分由一个LED组成。所以当你使用它的时候,你也需要使用一个限流电阻。否则,LED会被烧坏。在这个实验中,我们使用了一个普通的共阴极一位数码管。正如我们上面提到的,你应该将公共阴极连接到GND。要点亮一个分段LED,你可以将其关联的引脚设置为HIGH。

4.项目接线图:

注意:插入面包板的七段数码管方向与接线图一致,右下角多一个点。

图片不存在

图片不存在

5.代码说明:

Img

初始化一位数码管的管脚,二维数组等等。

Img

这是显示数字的一位数码管指令方块,可以显示 1 位数字:0 ~ 9。

6.项目代码:

数字显示分7段,小数点显示分1段。当显示某些数字时,相应的段将被点亮。例如,当显示数字1时,b和c段将被打开。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”。

  3. 从 “ Img ” 拖出 “ Img ”,数字 0 改成 9 。

  4. 从 “Img” 拖出 “Img”,设置延时为1000毫秒。

  5. 复制代码块 “Img” 9次,将数字 9 分别改成 8、7、6、5、4、3、2、1、0。

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电后,你会看到的现象是:一位数码管将显示从9到0的数字。

图片不存在

项目09 四位数码管

1.项目介绍:

四位数码管是一种非常实用的显示器件,电子时钟的显示,球场上的记分员,公园里的人数都是需要的。由于价格低廉,使用方便,越来越多的项目将使用4位数码管。在这个项目中,我们使用ESP32控制四位数码管来显示四位数字。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 四位数码管*1
图片不存在 图片不存在
4P转杜邦线公单*1 USB 线*1

3.元件知识:

TM1650四位数码管: 是一个12脚的带时钟点的四位共阴数码管(0.36英寸)的显示模块,驱动芯片为TM1650,只需2根信号线即可使单片机控制四位数码管。控制接口电平可为5V或3.3V。

G:电源负极

V:电源正极,+5V

DIO:数据IO模块,可以接任意的数字引脚

CLK:时钟引脚,可以接任意的数字引脚

4位数码管模块规格参数:

工作电压:DC 3.3V-5V

工作电流:≤100MA

最大功率:0.5W

数码管显示颜色:红色

4位数码管模块原理图:

图片不存在

4.项目接线图:

图片不存在

5.代码说明:

Img

初始化TM1650四位数码管模块的管脚。

Img

打开/关闭,或清屏四位数码管模块

Img

四位数码管模块显示 4 位字符串(数字或字母等等)。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 分别拖出 “Img” 和 “Img” 放入 “Img”,CLK管脚为 22 ,DIO管脚为 21。

Img

  1. 先从 “Img” 拖出 “Img” ,将字符串 1234 改成 0000;再从 “Img” 拖出 “Img”,设置延时为1000毫秒。

Img

  1. 复制代码块 “Img” 9次,分别将字符串 0000 改成 1111、2222、3333、4444、5555、6666、7777、8888、9999。

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电后,你会看到的现象是:四位数码管显示四位数字0000-9999,并在一个无限循环中重复这些动作。

图片不存在

项目10 8×8点阵屏

1.项目介绍:

点阵屏是一种电子数字显示设备,可以显示机器、钟表、公共交通离场指示器和许多其他设备上的信息。在这个项目中,我们将使用ESP32控制8x8 LED点阵来显示图案。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 8×8点阵屏*1
图片不存在 图片不存在
4P转杜邦线公单*1 USB 线*1

3.元件知识:

8×8点阵屏模块: 8×8的点阵由64个LED组成,每个LED被放置在一排和一列的交叉点上。利用单片机驱动一个8×8点阵时,我们总共需要用到16个数字口,这样就极大的浪费单片机资料。为此,我们特别设计了这个模块,利用HT16K33芯片驱动1个8×8点阵,只需要利用单片机的I2C通信端口控制点阵,大大的节约了单片机资源。

8×8点阵屏模块规格参数:

工作电压:DC 5V

工作电流:≤200MA

最大功率:1W

8×8点阵屏模块原理:

如原理图所示,如果想要点亮第一行第一列的LED灯,只需要把C1置高电平,R1置低电平,它就亮了。如果我们想让第一行led全部点亮,那么我们让R1为低电平,C1~C8全部为高电平就可以了,原理非常简单。但是这样的话我们总共需要用到16个IO口,这样就极大的浪费单片机资源。为此,我们特别设计了这个模块,利用HT16K33芯片驱动1个8*8点阵,只需要利用单片机的I2C通信端口控制点阵,大大的节约了单片机资源。

图片不存在

有些模块上自带3个拨码开关,可以让你随意拨动开关,这是用来设置I2C通信地址的,设置方法如下表格。我们的这个模块中,模块已经固定了通信地址,A0,A1,A2全部接地,即地址为0x70。

图片不存在

4.项目接线图:

图片不存在

5.代码说明:

Img

初始化HT16K338×8点阵屏模块的地址和管脚。

Img

对HT16K338×8点阵屏模块清屏

Img

可以对HT16K338×8点阵屏设置图案,每个灰点对应于模块上的LED ,勾选其中一个灰点,模块上对应的LED点亮。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 分别拖出 “Img” 和 “Img” 放入 “Img”,SDA管脚为 21 ,SCL管脚为 22,地址默认为 0x70 。

Img

  1. 从 “Img” 拖出 “Img” ,点击灰点(√),设置显示的图案。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:8*8点阵屏显示“笑脸”图案。

图片不存在

项目11 74HC595N控制8个LED

1.项目介绍:

在之前的项目中,我们已经学过了怎样点亮一个LED。

ESP32上只有32个IO端口,我们如何点亮大量的led呢? 有时可能会耗尽ESP32上的所有引脚,这时候就需要用移位寄存器扩展它。你可以使用74HC595N芯片一次控制8个输出,而只占用你的微控制器上的几个引脚。你还可以将多个寄存器连接在一起,以进一步扩展输出,在这个项目中,我们将使用ESP32,74HC595芯片和LED制作一个流水灯来了解74HC595芯片的功能。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 74HC595N芯片*1 红色LED*8
图片不存在 图片不存在 图片不存在
220Ω电阻*8 跳线若干 USB 线*1

3.元件知识:

图片不存在

74HC595N芯片: 简单来说就是具有8 位移位寄存器和一个存储器,以及三态输出功能。移位寄存器和存储器同步于不同的时钟,数据在移位寄存器时钟SCK的上升沿输入,在存储寄存器时钟RCK的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入端(SI)和一个用于级联的串行输出端(SQH),8位移位寄存器可以异步复位(低电平复位),存储寄存器有一个8位三态并行的总线输出,当输出使能(OE)被使能(低电平有效)将存储寄存器中输出至74HC595N的引脚(总线)。

Img

引脚说明:

引脚: 引脚说明:
13引脚OE 是一个输出使能引脚,用于确保锁存器的数据是否输入到Q0-Q7引脚。在低电平时,不输出高电平。在本实验中,我们直接连接GND,保持低电平输出数据。
14引脚SI/DS 这是74HC595接收数据的引脚,即串行数据输入端,一次只能输入一位,那么连续输入8次,就可以组成一个字节了。
10引脚SCLR/MR 一个初始化存储寄存器管脚的管脚。在低电平时初始化内部存储寄存器。在这个实验中,我们连接VCC以保持高水平。
11引脚SCK/SH_CP 移位寄存器的时钟引脚,上升沿时,移位寄存器中的数据整体后移,并接收新的数据输入。
12引脚RCK/ST_CP 存储寄存器的时钟输入引脚。上升沿时,数据从移位寄存器转存到存储寄存器中。这时数据就从Q0~Q7端口并行输出。
9引脚SQH 引脚是一个串行输出引脚,专门用于芯片级联,接下一个74HC595的SI端。
Q0--Q7(15引脚,1-7引脚) 八位并行输出端,可以直接控制数码管的8个段。

4.项目接线图:

注意:需要注意74HC595N芯片插入的方向。

图片不存在

图片不存在

5.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 先从 “ Img ” 拖出 “Img” 3 次 放入 “Img” 中;再从 “Img” 拖出 “Img” 3 次 放入 “Img”中,将 item 分别改成 dataPin、latchPin、clockPin,对应的赋值后面数字 0 改成 14、12、13 。

Img

  1. 从 “Img” 拖出 “Img” ,从 1 到 10 步长为 1 改成从 0 到 255 步长为 1。

  2. 从 “Img” 分别拖出 “Img” 、“Img” 、“Img ” 放入 “ Img ” 中,再从 “Img” 分别拖出 “Img”、“Img”、“Img”、“Img”,“Img” 依次对应的放入;将 第 1 个管脚 latchPin 后面的 “ 高 ” 改成 “ 低 ”,“ 高位先入 ” 改成 “ 低位先入 ” 。

Img

  1. 从 “Img” 拖出 “Img” 放入 “Img” 中,设置延时为100毫秒。

完整代码:

Img

6.项目现象:

代码上传成功后,利用USB线上电,可以看到的现象是:8个LED开始以流水模式闪烁。

图片不存在

项目12 有源蜂鸣器

1.项目介绍:

有源蜂鸣器是一个发声组件。它被广泛用作电脑、打印机、报警器、电子玩具、电话、计时器等的发声元件。它有一个内在的振动源,只需连接5V电源,即可持续发出嗡嗡声。在这个项目中,我们将使用ESP32控制有源蜂鸣器发出“滴滴”声。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 有源蜂鸣器*1 NPN型晶体管(S8050)*1
图片不存在 图片不存在 图片不存在
1KΩ电阻*1 跳线若干 USB线*1

3.元件知识:

图片不存在

有源蜂鸣器: 它内部有一个简单的振荡器电路,可以将恒定的直流电转换成特定频率的脉冲信号。一旦有源蜂鸣器收到一个高电平,它将产生声音。而无源蜂鸣器是一种内部没有振动源的集成电子蜂鸣器,它必须由2K-5K方波驱动,而不是直流信号。这两个蜂鸣器的外观非常相似,但是一个带有绿色电路板的蜂鸣器是无源蜂鸣器,而另一个带有黑色胶带的是有源蜂鸣器。无源蜂鸣器不能区分正极性而有源蜂鸣器是可以。如下所示:

图片不存在

图片不存在

晶体管: 由于蜂鸣器需要很大的电流,ESP32输出能力的GPIO不能满足要求,这里需要一个NPN型晶体管来放大电流。晶体管,全称:半导体晶体管,是一种控制电流的半导体器件。晶体管可以用来放大微弱信号,也可以用作开关。它有三个电极(pin):基极(b),集电极(c)和发射极(e)。当电流通过“be”之间时,“ce”将允许几倍的电流通过(晶体管放大),此时,晶体管在放大区工作。当“be”之间的电流超过某个值时,“ce”将不再允许电流增加,此时晶体管工作在饱和区。晶体管有两种类型如下所示:PNP和NPN

图片不存在

在我们的套件中,PNP晶体管标记为8550,NPN晶体管标记为8050。

基于晶体管的特性,它常被用作数字电路中的开关。由于单片机输出电流的能力很弱,我们将使用晶体管来放大电流和驱动大电流的元件。在使用NPN晶体管驱动蜂鸣器时,通常采用以下方法:如果GPIO输出高电平,电流将流过R1,晶体管将传导,蜂鸣器将发出声音。如果GPIO输出低电平,没有电流流过R1,晶体管就不会传导,蜂鸣器也不会响。在使用PNP晶体管驱动蜂鸣器时,通常采用以下方法:如果GPIO输出低电平,电流将流过R1,晶体管将传导,蜂鸣器将发出声音。如果GPIO输出高电平,没有电流流过R1,晶体管就不会传导,蜂鸣器也不会响。

图片不存在

4.项目接线图:

图片不存在

注意:该电路中蜂鸣器的电源为5V。在3.3V的电源下,蜂鸣器可以工作,但会降低响度。

5.代码说明:

Img

向指定管脚设置“高”或“低”,选择“高”代表给该管脚设置高电平,有电压,有电流,则有源蜂鸣器鸣叫;选择“低”代表给管脚设置低电平,没电压,没有电流,则有源蜂鸣器不响。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,管脚为 15 ,设为 “低” 。

  3. 从 “Img” 拖出 “ Img ” ,管脚为 15 ,设为 “高” 。

  4. 从 “Img” 拖出 “Img”,设置延时为500毫秒。

  5. 复制代码块 “ Img ” 1 次,将 “高” 改为 “低”。

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,可以看到的现象是:有源蜂鸣器发出“滴滴”声。

图片不存在

项目13 无源蜂鸣器

1.项目介绍:

在之前的项目中,我们研究了有源蜂鸣器,它只能发出一种声音,可能会让你觉得很单调。这个项目将学习另一种蜂鸣器,无源蜂鸣器。与有源蜂鸣器不同,无源蜂鸣器可以发出不同频率的声音。在这个项目中,你将使用ESP32控制无源蜂鸣器工作。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 无源蜂鸣器*1 NPN型晶体管(S8050)*1
图片不存在 图片不存在 图片不存在
1KΩ电阻*1 跳线若干 USB线*1

3.元件知识:

图片不存在

无源蜂鸣器: 它是一种内部没有振动源的集成电子蜂鸣器。它必须由2K-5K方波驱动,而不是直流信号。与有源蜂鸣器的外观非常相似,但是一个带有绿色电路板的蜂鸣器是无源蜂鸣器,而另一个带有黑色胶带的是有源蜂鸣器。无源蜂鸣器不能区分正极性而有源蜂鸣器是可以。

图片不存在

晶体管: 请参考项目12

4.项目接线图:

图片不存在

5.代码说明:

Img

向指定管脚关闭无源蜂鸣器,使蜂鸣器不发声。

Img

向指定管脚设置无源蜂鸣器发声的音调和节拍。

Img

向指定管脚设置无源蜂鸣器播放特定音乐。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,管脚为 15 。

  3. 先从 “Img” 拖出 “ Img ” ,管脚为 15 ,选择 “圣诞歌” ;再拖出 “ Img ” ,管脚为 15 。

  4. 从 “Img” 拖出 “Img”,设置延时为2000毫秒。

  5. 复制代码块 “ Img ” 1次,选择 “生日快乐歌” 。

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:无源蜂鸣器播放音乐。

图片不存在

项目14 小台灯

1.项目介绍:

你知道ESP32可以在你按下外接按键的时候点亮LED吗? 在这个项目中,我们将使用ESP32,一个按键开关和一个LED来制作一个迷你台灯。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 按键*1
图片不存在 图片不存在 图片不存在
10KΩ电阻*1 红色 LED*1 220Ω电阻*1
图片不存在 图片不存在 图片不存在
按键帽*1 跳线若干 USB 线*1

3.元件知识:

图片不存在

按键: 按键可以控制电路的通断,把按键接入电路中,不按下按键的时候电路是断开的, 一按下按键电路就通啦,但是松开之后就又断了。可是为什么按下才通电呢?这得从按键的内部构造说起。没按下之前,电流从按键的一端过不去另一端;按下的时候,按键内部的金属片把两边连接起来让电流通过。

按键内部结构如图:图片不存在,未按下按键之前,1、2就是导通的,3、4也是导通的,但是1、3或1、4或2、3或2、4是断开(不通)的;只有按下按键时,1、3或1、4或2、3或2、4才是导通的。

在设计电路时,按键开关是最常用的一种元件。

按键的原理图:

图片不存在

什么是按键抖动?

我们想象的开关电路是“按下按键-立刻导通”“再次按下-立刻断开”,而实际上并非如此。 按键通常采用机械弹性开关,而机械弹性开关在机械触点断开闭合的瞬间(通常 10ms左右),会由于弹性作用产生一系列的抖动,造成按键开关在闭合时不会立刻稳定的接通电路,在断开时也不会瞬时彻底断开。

图片不存在

那又如何消除按键抖动呢?

常用除抖动方法有两种:软件方法和硬件方法。这里重点讲讲方便简单的软件方法。 我们已经知道弹性惯性产生的抖动时间为10ms 左右,用延时命令推迟命令执行的时间就可以达到除抖动的效果。

所以我们在代码中加入了0.02秒的延时以实现按键防抖的功能。

图片不存在

4.项目接线图:

图片不存在

注意:

怎样连接LED

图片不存在

怎样识别五色环220Ω电阻和五色环10KΩ电阻

图片不存在

图片不存在

5. 代码说明:

Img

从指定的数字管脚读取按键开关的数字信号(高/低电平)。

Img

布尔型(bool)变量的值只有真 (true) 和假 (false)。 C++中如果值非零就为True,为零就是False。这里可以知道ledState初始值为0。

Img

将ledState的当前值取反后再赋值给ledState本身。

Img

这里延时的作用是软件方法消抖。按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。代码中检测出键闭合后执行一个延时程序,10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下.

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,管脚为 4 ,设为 “低” 。

Img

  1. 先从 “ Img” 拖出 “Img” 放入 “Img” 中,将 “ 整数 ” 改成 “布尔” ,“item” 改成 “ledState” ;再从 “Img” 拖出 “Img” 放入 “Img”中,选择 “假”。

Img

  1. 先从 “Img” 拖出 “Img” ;接着从 “Img” 拖出 “Img” 放入 “Img” 中;再从 “Img” 拖出 “ Img ” 放入 “ = ” 左侧,管脚为 15 ;最后从 “Img” 拖出 “Img” 放入 “ = ” 右侧。

Img

  1. 从 “Img” 拖出 “Img”,设置延时为10毫秒。

Img

  1. 先复制代码块 “ Img ” 1次,将延时10毫秒改成200毫秒;再复制代码块 “ Img ” 1次,将数字 0 改成 1.

Img

  1. 复制代码块 “Img ” 1次,将延时10毫秒移除,接着从 “ Img” 拖出 “Img” ,再从 “ Img ” 拖出 “Img ”,最后又从 “ Img” 拖出 “ Img ”。

Img

  1. 从 “Img” 拖出 “ Img ” ,管脚为 4 ,又从 “ Img” 拖出 “ Img ” 放入 “高” 处。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:按下按钮,LED亮起;当按钮松开时,LED仍亮着。再次按下按钮,LED熄灭;当按钮释放时,LED保持关闭。是不是很像个小台灯?

图片不存在

项目15 模拟沙漏

1.项目介绍:

古代人没有电子时钟,就发明了沙漏来测时间,沙漏两边的容量比较大,在一边装了细沙,中间有个很小的通道,将沙漏直立,有细沙的一边在上方,由于重力的作用,细沙就会往下流通过通道到沙漏的另一边,当细沙都流到下边了,就倒过来,把一天反复的次数记录下来,第二天就可以通过沙漏反复流动的次数而知道这一天大概的时间了。这一课我们将利用ESP32控制倾斜开关和LED灯来模拟沙漏,制作一个电子沙漏。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 倾斜开关*1 10KΩ电阻*1
图片不存在 图片不存在 图片不存在 图片不存在
红色 LED*4 220Ω电阻*1 跳线若干 USB 线*1

3.元件知识:

图片不存在

倾斜开关也叫数字开关或球形开关,里面有一个金属球。它用于检测小角度的倾斜。

原理很简单:当开关倾斜一定角度时,里面的球会向下滚动,接触到连接到外面引脚的两个触点,从而触发电路。否则,球将远离触点,从而断开电路。

这里用倾斜开关的内部结构来说明它是如何工作的,显示如下图:

图片不存在

4.项目接线图:

图片不存在

注意:

怎样连接LED

图片不存在

怎样识别五色环220Ω电阻和五色环10KΩ电阻

图片不存在

图片不存在

5.代码说明:

Img

从指定的数字管脚读取倾斜开关的数字信号(高/低电平)。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”。

  3. 先从 “ Img” 拖出 “Img” 放入 “Img” 中;再从 “Img” 拖出 “Img” 放入 “Img”中,将 “ 整数 ” 改成 “字节” ,将 “item” 改成 “switch_state” 。

Img

  1. 先从 “Img” 拖出 “Img” ,再从 “Img” 拖出 “ Img ” ,管脚为 15 。

Img

  1. 先从 “Img” 拖出 “ Img ”,再从 “ Img” 拖出 “Img ” 。

Img

  1. 先从 “Img” 拖出 “Img” ;接着从 “Img” 拖出 “Img” 放入 “Img” 中;再从 “ Img” 拖出 “Img ” 放入 “ = ” 左侧 ;最后从 “Img” 拖出 “Img” 放入 “ = ” 右侧。

Img

  1. 先从 “Img” 拖出 “ Img ” 放入 “ Img ” ,将从 1 到 10 步长为 1 改成从 16 到 19 步长为 1;又从 “Img” 拖出 “ Img ” 放入 “ Img ”;再从 “ Img” 拖出 “ Img ” 放入 “管脚 0 ” 处 ;添加延时500毫秒。

Img

  1. 复制代码块 “ Img ” 1次,将 “ = ” 右侧的数字 0 改成 1,从 16 到 19 步长为 1 改成从 19 到 16 步长为 -1 ,“ 高 ” 改成 “ 低 ” 。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:将面包板倾斜到一定角度,led就会一个一个地亮起来。当回到上一个角度时,led会一个一个关闭。就像沙漏一样,随着时间的推移,沙子漏了出来。

图片不存在

项目16 防窃警报器

1.项目介绍:

人体红外传感器测量运动物体发出的热的红外(IR)线。该传感器可以检测人、动物和汽车的运动,从而触发安全警报和照明。它们被用来检测移动,是安全的理想选择,如防盗警报和安全照明系统。在这个项目中,我们将使用ESP32控制人体红外传感器、蜂鸣器和LED来模拟防盗报警器。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 人体红外传感器*1 NPN型晶体管(S8050)*1
图片不存在 图片不存在 图片不存在 图片不存在
有源蜂鸣器*1 红色 LED*1 220Ω电阻*1 1KΩ电阻*1
图片不存在 图片不存在 图片不存在
3P转杜邦线公单*1 跳线若干 USB 线*1

3.元件知识:

人体红外传感器: 是一款基于热释电效应的人体红外传感器,能检测到人体或动物身上发出的红外线,配合菲涅尔透镜能使传感器探测范围更远更广。它主要采用RE200B-P传感器元件,当附近有人或者动物运动时,该模块会输出一个高电平1;否则输出低电平0。特别注意,这个传感器可以检测在运动中的人、动物和汽车,静止中的人、动物和汽车是检测不到的,检测最远距离大约为7米左右。

注意:人体红外传感器应避开日光、汽车头灯、白炽灯直接照射,也不能对着热源(如暖气片、加热器)或空调,以避免环境温度较大的变化而造成误报。同时还易受射频辐射的干扰。

传感器技术参数:

最大输入电压:DC 5-15V

最大工作电流:50MA

最大功率:0.3W

静态电流: <50uA

工作温度:-20 ~ 85℃

控制信号:数字信号(1/0)

延迟时间:大约2.3到3秒钟

感应角度:小于100度锥角

检测最远距离:大约7米左右

传感器原理图:

图片不存在

4.项目接线图:

图片不存在

5.代码说明:

Img

从指定的数字管脚读取人体红外传感器的数字信号(高/低电平),是用来检测附近是否有人或者动物运动。如果检测到附近有人或者动物运动时,输出一个高电平 1 ;否则,输出低电平 0 。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”。

  3. 先从 “ Img” 拖出 “Img” 放入 “Img” 中,将 “ 整数 ” 改成 “字节” ,将 “item” 改成 “pirStat” ;再从 “Img” 拖出 “Img” 放入 “Img”中。

Img

  1. 先从 “Img” 拖出 “Img” ,再从 “Img” 拖出 “ Img ” ,管脚为 15 。

Img

  1. 先从 “Img” 拖出 “ Img ”,再从 “ Img” 拖出 “ Img ” 。

Img

  1. 先从 “Img” 拖出 “Img” ;接着从 “Img” 拖出 “Img” 放入 “Img” 中;再从 “ Img” 拖出 “ Img ” 放入 “ = ” 左侧 ;最后从 “Img” 拖出 “Img” 放入 “ = ” 右侧,将数字 0 改成 1 。

Img

  1. 从 “Img” 分别拖出 “ Img ” 和 “ Img ” 放入 “ Img ” ,红色LED灯的管脚为 0 ,有源蜂鸣器的管脚为2 ;再从 “Img” 拖出 “Img”,设置延时为500毫秒。

Img

  1. 复制代码块 “ Img ” 1 次放入“ Img ”,2个 “ 高 ” 都改成 “ 低 ” 。

Img

  1. 复制代码块 “ Img ” 1次,将 “=” 右侧的数字 1 改成 0 ,删除代码块 “ Img ” 和 2 个延时500毫秒的指令方块。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:如果人体红外传感器检测到附近有人移动时,蜂鸣器就会不断地发出警报,且LED不断地闪烁。

图片不存在

项目17 I2C 128×32 LCD

1.项目介绍:

在生活中,我们可以利用显示器等模块来做各种实验。你也可以DIY各种各样的小物件。例如,用一个温度传感器和显示器做一个温度测试仪,或者用一个超声波模块和显示器做一个距离测试仪。下面,我们将使用LCD_128X32_DOT模块作为显示器,将其连接到ESP32控制板上。将使用ESP32主板控制LCD_128X32_DOT显示屏显示各种英文文字、常用符号和数字。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 LCD_128X32_DOT*1
图片不存在 图片不存在
4P转杜邦线公单*1 USB 线*1

3.元件知识:

图片不存在

LCD_128X32_DOT: 一个像素为128*32的液晶屏模块,它的驱动芯片为ST7567A。模块使用IIC通信方式,它不仅可以显示英文字母、符号,还可以显示中文文字和图案。使用时,还可以在代码中设置,让英文字母和符号等显示不同大小。

LCD_128X32_DOT原理图:

图片不存在

LCD_128X32_DOT技术参数:

显示像素:128*32 字符

工作电压:DC 5V

工作电流:100mA (5V)

模块最佳工作电压:5V

亮度、对比度可通过程序指令控制

4.项目接线图:

图片不存在

5.代码说明:

Img

初始化LCD_128X32_DOT的管脚。

Img

对LCD_128X32_DOT清屏

Img

设置LCD_128X32_DOT显示内容的位置。

Img

LCD_128X32_DOT显示字符串(数字,符号和字母等等)。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 分别拖出 “Img” 和 “Img” 放入 “Img” 。

Img

  1. 从 “Img” 分别拖出 “Img” 和 “Img” ,设置第 0 行第4,将字符串 abcd 改成 KEYESTUDIO 。

Img

  1. 复制代码块 “Img” 3次,将(0,4)分别改成(1,0)、(2,0)、(3,0);将字符串 KEYESTUDIO 分别改成 ABCDEFGHIJKLMNOPQR 、123456789+-*/<>=$@ 、%^&(){}:;'|?,.~\[] 。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:128X32LCD模块显示屏第一行显示“KEYESTUDIO”、第二行显示“ABCDEFGHIJKLMNOPQR”、第三行显示“123456789+-*/<>=$@”、第四行显示“%^&(){}:;'|?,.~\[]”。

图片不存在

项目18 小风扇

1.项目介绍:

在炎热的夏季,需要电扇来给我们降温,那么在这个项目中,我们将使用ESP32控制130电机模块和小扇叶来制作一个小电扇。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 130电机模块*1
图片不存在 图片不存在 图片不存在
面包板专用电源模块*1 6节5号电池盒*1 风扇叶*1
图片不存在 图片不存在 图片不存在
4P转杜邦线公单*1 5号电池(自备)*6 USB 线*1

3.元件知识:

图片不存在

130电机模块: 该电机控制模块采用HR1124S电机控制芯片,HR1124S是应用于直流电机方案的单通道H桥驱动器芯片。HR1124S的H桥驱动部分采用低导通电阻的PMOS和NMOS功率管,低导通电阻保证芯片低的功率损耗,使得芯片安全工作更长时间。此外HR1124S拥有低待机电流,低静态工作电流,这些性能使130电机模块易用于玩具方案。

130电机模块参数:

工作电压:5V

工作电流:≤200MA

工作功率:2W

工作温度:-10℃~+50℃

130电机模块原理:

HR1124S芯片的作用是助于驱动电机,而电机所需电流较大,无法用三极管驱动更无法直接用IO口驱动。让电机转动起来的方法很简单,给电机两端添加电压即可。不同电压方向电机转向也不相同,在额度电压内,电压越大,电机转动得越快;反之电压越低,电机转动得越慢,甚至无法转动。控制方式有两种:一种是高低电平控制(控制转动和停止),一种是PWM控制(控制转速)。

图片不存在

面包板专用电源模块:

图片不存在

说明:

此模块,能方便的给面包板提供3.3V和5V的电源,具有DC2.1输入(DC7-12V),另外,具备USB Type C接口的电源输入。

规格:

输入电压:DC座:7-12V;Type C USB:5V

电流:3.3V:最大500mA;5V:最大500mA;

最大功率: 2.5W

尺寸: 53mmx26.3mm

环保属性: ROHS

接口说明:

图片不存在

原理图:

图片不存在

4.项目接线图:

图片不存在

(注: 先接好线,然后在直流电机上安装一个小风扇叶片。)

5.代码说明:

Img

Img

这 2 个指令方块都可以用来设置直流电机(小风扇)不转。

Img

设置直流电机(小风扇)逆时针转动。

Img

设置直流电机(小风扇)顺时针转动。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img” ,INA 管脚为 15 ,INB管脚为 2 ,将 “高” 都改成 “低” 。

Img

  1. 先从 “Img” 拖出 “Img” ,INA 管脚为 15 ,INB管脚为 2 ,将 INB 后面的“高” 改成 “低”,再从 “Img” 拖出 “Img”,设置延时为5000毫秒。

Img

  1. 复制代码块 “ Img ” 1次,将 INA 后面的“高” 改成 “低”,延时5000毫秒改成2000毫秒。

Img

5 复制代码块 “ Img ” 1 次,将 INA “高” INB “低” 改成 INA “低” INB “高” ,其他的不变。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,外接电源,上电后,你会看到的现象是:小风扇先逆时针转5秒,停止2秒,再顺时针转5秒,停止2秒,以此规律重复执行。

图片不存在

项目19 舵机

1.项目介绍:

舵机是一种可以非常精确地旋转的电机。目前已广泛应用于玩具车、遥控直升机、飞机、机器人等领域。在这个项目中,我们将使用ESP32控制舵机转动。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 舵机*1
图片不存在 图片不存在
跳线若干 USB 线*1

3.元件知识:

图片不存在

舵机: 舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0度到180 度。

控制舵机的脉冲周期为20ms,脉冲宽度为0.5ms ~ 2.5ms,对应位置为-90°~ +90°。下面是以一个180°角的舵机为例:

图片不存在

舵机有多种规格,但它们都有三根连接线,分别是棕色、红色、橙色(不同品牌可能有不同的颜色)。棕色为GND,红色为电源正极,橙色为信号线。

图片不存在

4.项目接线图:

舵机供电时请注意,电源电压应为3.3V-5V。请确保在将舵机连接到电源时不会出现任何错误。 图片不存在

5.代码说明:

Img

向指定管脚设置舵机的转动角度和延时。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “ Img ” 拖出 “ Img ” 放入 “Img”,管脚为 15 ,角度为 0 ,延时 200 毫秒。

Img

  1. 先从 “Img” 拖出 “ Img ” 将 从 1 到 10 步长为 1 改成 从 0 到 180 步长为 1;又从 “ Img ” 拖出 “ Img ” 放入 “ Img ” ,管脚为 15 ;再从 “ Img” 拖出 “ Img ” 放入 “角度 0 ” 处 ;延时15毫秒。

Img

  1. 复制代码块 “ Img ” 1 次,将 从 0 到 180 步长为 1 改成 从 180 到 0 步长为 -1 。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:舵机将从0°旋转到180°,然后反转方向使其从180°旋转到0°,并在一个无限循环中重复这些动作。

图片不存在

项目20 步进电机

1.项目介绍:

步进电机定位准确,是工业机器人、3D打印机、大型车床等机械设备中最重要的部件。在这个项目中,我们将使用ESP32控制ULN2003步进电机驱动板来驱动步进电机转动。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 ULN2003步进电机驱动板*1
图片不存在 图片不存在 图片不存在
面包板专用电源模块*1 6节5号电池盒*1 步进电机*1
图片不存在 图片不存在 图片不存在
公对母杜邦线若干 5号电池(自备)*6 USB 线*1

3.项目知识:

图片不存在

步进电机: 是由一系列电磁线圈控制的电机。它可以根据需要旋转精确的度数(或步数),允许你将它移动到一个精确的位置并保持该位置。它是通过在很短的时间内为电机内部的线圈供电来做到这一点的,但你必须一直为电机供电,以保持它在你想要的位置。有两种基本类型的步进电机,单极步进和双极步进。在本项目中,我们使用的是单极步进电机28-BYJ48。

图片不存在

28BYJ-48步进电机工作原理:

步进电机主要由定子和转子组成,定子是固定不动的,如下图绕着A、B、C、D线圈组的部分,线圈组导通电就会产生磁场;转子就是转动的部分,如下图定子中间的部分,两极是永磁铁。

单步4节拍的转动原理:开始A组线圈导通,转子两极正对着A组线圈;接着A组线圈断开,B组线圈导通,转子就会顺时针转到B组线圈,转子转了一步;B断开,C导通,转子转到C组;C断开,D导通,转子转到D组;D组断开,A组导通,转子转到A组线圈。这样转子就转了半圈180度,接着再重复一次,B-C-D-A,转子转回到A组线圈,这样转子就转了一圈,总共转动了8步。如下图所示,这就是步进电机单节拍转动的原理A - B - C - D - A ....。

如果想让步进电机逆时针转动,那只要把节拍顺序反过来就行,D - C - B - A - D .....。

图片不存在

半步8节拍转动原理:8节拍,采用的是单双拍的形式,A - AB - B - BC - C - CD - D - DA - A ...... ,这样运转一拍,转子只会转动半步,例如,A组线圈导通,转子转到正对着A组线圈;接着A和B组一起导通,这样产生的磁场最强的地方在AB组线圈中间,转子两极就会转到AB组线圈中间,也就是顺时针转了半步。

步进电机参数:

我们所提供的步进电机需要转动32步,转子才能转一圈,还经过了1:64的减速齿轮组带动输出轴,这样输出轴转动一圈需要:32 * 64 = 2048 步。

电压5V,4相步进电机 ,4节拍模式的步进角为11.25, 8节拍模式步进角为5.625, 减速比为1:64。

ULN2003步进电机驱动板: ULN2003型步进电机驱动器,将微弱信号转换为更强的控制信号,从而驱动步进电机。

下面的原理图显示了如何使用ULN2003步进电机驱动板接口将一个单极步进电机接到ESP32的引脚上,并显示了如何使用四个TIP120的接口。

图片不存在

4.项目接线图:

图片不存在

5.代码说明:

Img

初始化步进电机的管脚,步数和速度的设置。

Img

设置步进电机的移动步数,正负值与转动方向有关。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “ Img ” 拖出 “ Img ” 放入 “Img”,管脚1#为 15 ,管脚2#为 16 ,管脚3#为 17 ,管脚4# 18 ,设置步数为 100 ,设置转速为 200 。

Img

  1. 先从 “ Img ” 拖出 “ Img ” ,设置移动步数为 -2048 ;再从 “Img” 拖出 “Img”,设置延时为1000毫秒。

Img

  1. 复制代码块 “ Img ” 1 次,将 -2048 改成 2048 。

Img

完整代码:

Img

7.项目现象:

代码上传成功后,外接电源,上电后,你会看到的现象是:ULN2003驱动模块上的D1,D2,D3,D4四个LED点亮,步进电机旋转,并保持此状态循环。

图片不存在

项目21 继电器

1.项目介绍:

在日常生活中,我们一般使用交流来驱动电气设备,有时我们会用开关来控制电器。如果将开关直接连接到交流电路上,一旦发生漏电,人就有危险。从安全的角度考虑,我们特别设计了这款具有NO(常开)端和NC(常闭)端的继电器模块。在这节课我们将学习一个比较特殊,好用的开关,就是继电器模块。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 继电器模块*1 红色LED*1
图片不存在 图片不存在 图片不存在 图片不存在
3P转杜邦线公单*1 USB 线*1 220Ω电阻*1 跳线若干

3.元件知识:

继电器: 它主要采用HK4100F-DC 5V-SHC继电器元件。继电器有3个接线柱用于外接电路,分别为NO、COM和NC端(背后丝印)。

常开(NO):该引脚是常开的,除非向继电器模块的信号引脚提供信号,因此,普通接触针通过NC脚断开其连接,通过NO脚建立连接。

公共触点(COM):此引脚用来连接其他模块/元器件,如LED。

LED:图片不存在

常闭(NC):此NC引脚通过COM引脚连接,形成闭合电路,可以通过ESP32等开发板,控制继电器模块,来切换闭合或断开。

当继电器没有接控制信号时,COM端和NC端连通,COM端和NO端断开。 控制时,把G接控制板的GND,V接控制板的5V,S接控制板的数字口。当S信号端设置为高电平时,继电器开启,继电器COM端和NC端断开,COM端和NO端连通;S信号端设置为低电平时,继电器关闭,继电器COM端和NC端连通,COM端和NO端断开。

  • 工作电压:5V(DC)
  • 工作电流:≤50MA
  • 最大功率:0.25W
  • 输入信号:数字信号
  • 触点电流:<3A

继电器原理图:

图片不存在

4.项目接线图:

图片不存在

5.代码说明:

Img

向指定管脚设置“高”或“低”,选择“高”代表给该管脚设置高电平,有电压,有电流,则继电器吸合;选择“低”代表给管脚设置低电平,没电压,没有电流,则继电器打开。

6.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “ Img ” 放入 “Img”,管脚为 15 ,设为 “低” 。

  3. 从 “Img” 拖出 “ Img ” ,管脚为 15 ,设为 “高” 。

  4. 从 “Img” 拖出 “Img”,设置延时为500毫秒。

  5. 复制代码块 “ Img ” 1 次,将 “高” 改为 “低”。

完整代码:

Img

7.项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:继电器将循环开与关,开启1秒LED点亮1秒,关闭1秒LED熄灭1秒。同时可以听到继电器开与关的声音,还可以看到继电器上的指示灯指示状态的变化。

图片不存在

项目22 调光灯

1.项目介绍:

电位器是一个带有滑动或旋转触点的三端电阻器,它形成一个可调的分压器。它的工作原理是在均匀电阻上改变滑动触点的位置。在电位器中,整个输入电压被施加到电阻的整个长度上,输出电压是固定触点和滑动触点之间的电压值。在这个项目中,我们将学习使用ESP32读取电位器的值,并结合LED制作一个调光灯。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 可调电位器*1 红色 LED*1
图片不存在 图片不存在 图片不存在
220Ω电阻*1 USB 线*1 跳线若干

3.元件知识:

图片不存在

可调电位器: 可调电位器是电阻和模拟电子元件的一种,具有0和1两种状态(高电平和低电平)。模拟值不同,其数据状态呈现为1 ~ 1024等线性状态。

ADC: ADC是一种电子集成电路,用于将模拟信号(如电压)转换为由1和0组成的数字或二进制形式。我们在ESP32上的ADC的范围是12位,这意味着分辨率是2^12=4096,它表示一个范围(3.3V)将被平均划分为4096份。模拟值的范围对应于ADC值。因此,ADC拥有的比特越多,模拟的分区就越密集,最终转换的精度也就越高。

图片不存在

分节1: 0V—(3.3/4095)V 范围内的模拟量对应数字0;

分节2: (3.3/4095)V—2*(3.3/4095)V 范围内的模拟量对应于数字1;

......

下面的模拟将被相应地划分。换算公式如下:

图片不存在

DAC: 这一过程的可逆需要DAC,数字到模拟转换器。数字I/O端口可以输出高电平和低电平(0或1),但不能输出中间电压值,这就是DAC有用的地方。ESP32有两个8位精度的DAC输出引脚GPIO25和GPIO26,可以将VCC(这里是3.3V)分成2^8=256个部分。例如,当数字量为1时,输出电压值为3.3/256×1V,当数字量为128时,输出电压值为3.3/256 ×128=1.65V, DAC的精度越高,输出电压值的精度就越高。

换算公式如下:

图片不存在

ESP32主板上的ADC:

ESP32有16个引脚,可以用来测量模拟信号。GPIO引脚序列号和模拟引脚定义如下表所示:

图片不存在

ESP32主板上的DAC:

图片不存在

4.读取电位器的模拟值:

我们将电位器连接到ESP32的模拟IO口上来读取电位器的模拟值。接线请参照以下接线图:

图片不存在

代码说明:

Img

从指定的模拟管脚读取旋转电位器的模拟信号,模拟信号的范围为:0 ~ 4095 。

详细了解请参考链接:https://vimsky.com/examples/usage/arduino-language-functions-analog-io-analogread-ar.html

Img

将旋转电位器的模拟信号(0 ~ 4095)映射给LED的亮度(0 ~ 255)。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img” ;接着从 “ Img ” 拖出 “ Img ”,管脚为 36 。

  4. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印出电位器的模拟值,转动电位器手柄时,模拟值发生变化。

Img

5.调光灯的接线图:

在前面一步,我们读取了电位器的模拟值,现在我们需要将电位器的模拟值转换成LED的亮度,来做成一个亮度可调的灯。见如下所示接线图:

图片不存在

6.项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:转动电位器手柄,LED的亮度会相应地改变。

图片不存在

项目23 火焰警报器

1.项目介绍:

火灾是一种可怕的灾害,火灾报警系统在房屋,商业建筑和工厂中是非常有用的。在本项目中,我们将使用ESP32控制火焰传感器,蜂鸣器和LED来模拟火灾报警装置。这是一个有意义的创客活动。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 火焰传感器*1 红色 LED*1
图片不存在 图片不存在 图片不存在 图片不存在
有源蜂鸣器*1 220Ω电阻*1 10KΩ电阻*1 跳线若干
图片不存在 图片不存在 图片不存在
NPN型晶体管(S8050)*1 1kΩ 电阻*1 USB 线*1

3.元件知识:

图片不存在

火焰传感器(红外接收三极管): 火焰会发出一定程度的IR光,这种光人眼是看不到的,但我们的红外接收三极管可以检测到它,并提醒微控制器(如ESP32)已经检测到火灾。红外接收三极管可以探测火焰,然后将火焰亮度转换为波动水平信号。红外接收三极管的短引脚是负极,另一个长引脚是正极。我们应该连接短引脚(负极)到5V,连接长引脚(正极)到模拟引脚,一个电阻和GND。如下图所示:

图片不存在

注意:火焰传感器应避开日光、汽车头灯、白炽灯直接照射,也不能对着热源(如暖气片、加热器)或空调,以避免环境温度较大的变化而造成误报。同时还易受射频辐射的干扰。

4.读取火焰传感器的模拟值:

我们首先用一个简单的代码来读取火焰传感器的模拟值并打印出来。接线请参照以下接线图:

图片不存在

代码说明:

Img

从指定的模拟管脚读取火焰传感器的模拟信号,模拟信号的范围为:0 ~ 4095 。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img” ;接着从 “ Img ”,管脚为 36 。

  4. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印火焰传感器读取的模拟值,当火焰靠近火焰传感器时,模拟值增大;反之,模拟值减小。

Img

5.火焰报警的接线图:

接下来,我们将使用火焰传感器和蜂鸣器、LED制作一个有趣的项目——火灾报警装置。当火焰传感器检测到火焰时,LED闪烁,蜂鸣器报警。

图片不存在

6.项目代码:

注意:代码中的阀值500可以根据实际情况自己重新设置

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:当火焰传感器检测到火焰时,LED闪烁,蜂鸣器报警;否则,LED不亮,蜂鸣器不响。

图片不存在

项目24 小夜灯

1.项目介绍:

传感器或元件在我们的日常生活中是无处不在的。例如,一些公共路灯在晚上会自动亮起,而在白天会自动熄灭。为什么呢? 事实上,这些都是利用了一种光敏元件,可以感应外部环境光强度的元件。晚上,当室外亮度降低时,路灯会自动打开;到了白天,路灯会自动关闭。这其中的原理是很简单的,在本实验中我们使用ESP32控制LED就来实现这个路灯的效果。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 光敏电阻*1 红色 LED*1
图片不存在 图片不存在 图片不存在 图片不存在
220Ω电阻*1 10KΩ电阻*1 跳线若干 USB 线*1

3.元件知识:

图片不存在

光敏电阻:是一种感光电阻,其原理是光敏电阻表面上接收亮度(光)降低电阻,光敏电阻的电阻值会随着被探测到的环境光的强弱而变化。有了这个特性,我们可以使用光敏电阻来检测光强。光敏电阻及其电子符号如下:

图片不存在

下面的电路是用来检测光敏电阻电阻值的变化:

图片不存在

在上述电路中,当光敏电阻的电阻因光强的变化而改变时,光敏电阻与电阻R2之间的电压也会发生变化。因此,通过测量这个电压就可以得到光的强度。本项目是采用上图左边的电路来接线的。

4.读取光敏电阻的模拟值:

我们首先用一个简单的代码来读取光敏电阻的模拟值并打印出来。接线请参照以下接线图:

图片不存在

代码说明:

Img

从指定的模拟管脚读取光敏电阻的模拟信号(光照强度),模拟信号的范围为:0 ~ 4095 。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img” ;接着从 “ Img ”,管脚为 36 。

  4. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印光敏电阻读取的模拟值,当逐渐减弱光敏电阻所处环境中的光线强度时,模拟值逐渐增大;反之,模拟逐渐减小。

Img

5.光控灯的接线图:

我们在前面做了一个小小的调光灯,现在我们来做一个光控灯。它们的原理是相同的,即通过ESP32获取传感器的模拟值,然后调节LED的亮度。

图片不存在

6.项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:当减弱光敏电阻所处环境中的光线强度时,LED变亮,反之,LED变暗。

图片不存在

项目25 人体感应灯

1.项目介绍:

人体感应灯一般都用在黑漆漆的楼道区域,随着科技的发展,人体感应灯的使用在我们现实生活中十分常见。小区的楼道,房间的卧室、地下城的车库、卫生间等区域都会用到人体感应灯。现实生活中的人体感应灯一般是由人体红外传感器、灯、光敏电阻传感器等组成的。

在本项目中,我们将学习如何利用人体红外传感器、LED、光敏电阻来制作一款人体感应灯。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 光敏电阻*1 红色 LED*1
图片不存在 图片不存在 图片不存在 图片不存在
220Ω电阻*1 10KΩ电阻*1 跳线若干 USB 线*1
图片不存在 图片不存在
人体红外传感器*1 3P转杜邦线公单*1

3.项目接线图:

图片不存在

4.项目代码:

Img

5.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:当你的手覆盖光敏电阻的感光部分来模拟黑暗状态时,然后用另一只手在人体红外传感器前面晃动,LED点亮 5 秒;如果光敏电阻的感光部分没有被覆盖,这时候用手在人体红外传感器前面晃动,LED处于熄灭状态。

图片不存在

项目26 声控风扇

1.项目介绍:

声音传感器有一个内置的电容驻极体麦克风和功率放大器。它可以用来检测环境的声音强度。在这个项目中,我们利用ESP32控制声音传感器和电机模块模拟一个声控风扇。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 130电机模块*1 声音传感器*1
图片不存在 图片不存在 图片不存在 图片不存在
面包板专用电源模块*1 6节5号电池盒*1 风扇叶*1 3P转杜邦线公单*1
图片不存在 图片不存在 图片不存在
4P转杜邦线公单*1 5号电池(自备)*6 USB 线*1

3.元件知识:

图片不存在

声音传感器: 通常用于检测周围环境中的声音响度。微型控制板可以通过模拟输入接口采集其输出信号。传感器的S引脚是模拟输出,是麦克风电压信号的实时输出。传感器附带一个电位器,这样你就可以调整信号强度。你可以使用它来制作一些交互式作品,如语音操作的开关等。

声音传感器参数:

  • 工作电压:3.3V-5V(DC)
  • 工作电流:≤100mA
  • 最大功率:0.5W
  • 输出信号:模拟信号

声音传感器原理图:

它主要采用一个高感度麦克风元件和LM386芯片。高感度麦克风元件用于检测外界的声音。利用LM386芯片搭建合适的电路,我们对高感度麦克风检测到的声音进行放大,最大倍数为200倍。使用时我们可以通过旋转传感器上电位器,调节声音的放大倍数。调节时,顺时针调节电位器到尽头,放大倍数最大。

图片不存在

4.读取声音传感器的模拟值:

我们首先使用一个简单的代码来读取声音传感器的模拟值并将其打印出来,接线请参照以下接线图:

图片不存在

代码说明:

Img

读取外界声音强度(模拟值)。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img” ;接着从 “ Img ” 拖出 “ Img ”,管脚为 36 。

  4. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,打开串口监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印声音传感器读取的模拟值,当对着传感器拍拍手,声音传感器的模拟值发生了显著的变化。

Img

5.智能风扇的接线图:

接下来,我们正式进入这个项目。我们用声音传感器、130电机模块和风叶片来模拟一个声控风扇。接线图如下:

图片不存在

(注: 先接好线,然后在直流电机上安装一个小风扇叶片。)

6.项目代码:

注意:代码中的阀值600可以根据实际情况自己重新设置)

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,外接电源,上电后,你会看到的现象是:对着声音传感器拍拍手,当声音强度超过阈值 600 时,小风扇旋转起来;反之,小风扇不旋转。

图片不存在

项目27 温度测量

1.项目介绍:

LM35是一种常用且易于使用的温度传感器。它不需要其他硬件你只需要一个模拟端口就可以了。难点在于编译代码,将其读取的模拟值转换为摄氏温度。在这个项目中,我们使用一个温度传感器和3个LED灯来制作一个温度测试仪。当温度传感器接触不同的温度物体时,LED灯就会显示不同的颜色。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 红色LED*1 黄色 LED*1
图片不存在 图片不存在 图片不存在 图片不存在
绿色LED*1 220Ω电阻*3 LM35温度传感器*1 3P转杜邦线公单*1
图片不存在 图片不存在
跳线若干 USB 线*1

3.元件知识:

图片不存在

LM35温度传感器: 是一种常用的LM35温度传感器,它主要采用LM35DZ传感器元件。该元件的输出电压与摄氏温标呈线性关系。在室温下,无需额外的校准处理即可达到1/4℃的精度。LM35温度传感器可以根据不同的温度产生不同的电压,当温度为0℃时输出0V;每升高1℃,输出电压将增加10mv。换算公式如下:

图片不存在

4.读取LM35的温度值:

我们首先使用一个简单的代码读取温度传感器的值并将其打印出来,,其接线图如下所示:

图片不存在

代码说明:

Img

读取LM35传感器检测的温度值。

这里,LM35输出给ESP32的模拟引脚是GPIO36。这个模拟电压被转换成数字形式,并经过处理得到温度读数。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img ” 拖出 “ Img ”,将 “ hello ” 改成 “temperature: ”。

  4. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img ” 拖出 “ Img ”,管脚为 36 。

  5. 复制代码块 “Img” 1次,将 “不换行” 改成 “自动换行” ,“temperature: ” 改成 “ ℃ ” 。

  6. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印LM35温度传感器读取的温度值。用手捏住LM35温度传感器上的LM35元件,LM35温度传感器读取的温度值在变化。

Img

5.温度测量的接线图:

现在使用LM35温度传感器和3个led做一个温度测试。当LM35温度传感器感应到不同的温度时,不同的led会点亮。按照下图进行接线。

图片不存在

6.项目代码:

注意:代码中的阀值20和25可以根据实际情况自己重新设置)

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:打开串口监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印LM35温度传感器读取的温度值,当LM35温度传感器感应到不同的温度时,不同的led会点亮。

图片不存在

项目28 摇杆控制RGB灯

1.项目介绍:

摇杆模块是一个有两个模拟输入和一个数字输入的组件。广泛应用于游戏操作、机器人控制、无人机控制等领域。在这个项目中,我们使用ESP32和摇杆模块控制RGB。这样,你可以在实践中对摇杆模块的原理和操作有更深入的了解。 

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 摇杆模块*1 RGB LED*1
图片不存在 图片不存在 图片不存在 图片不存在
220Ω电阻*3 跳线若干 USB 线*1 5P转杜邦线公单*1

3.元件知识:

图片不存在

摇杆模块: 主要是采用PS2手柄摇杆元件,实际上摇杆模块有3个信号端引脚,模拟3维空间,摇杆模块的引脚分别是GND、VCC、信号端(B、X、Y),其中信号端X、Y模拟空间的X轴和Y轴,控制时,模块的X、Y信号端是连接控制板模拟口,通过控制2个模拟输入值来控制物体在空间X、Y轴的坐标。信号端B模拟空间Z轴,它一般是接数字口,做按键使用。

VCC接控制板的电源输出端V/VCC(3.3/5V),GND接控制板的G/GND,原始状态下读出电压大约为1.65V/2.5V左右,对于X轴方向,当随箭头方向逐渐移动,读出电压值随着增加,且可以达到最大电压;随箭头相反方向逐渐移动,读出电压值逐渐减少,减少到最小电压。对于Y轴方向,当沿着模块上的箭头方向逐渐按下,读出电压值随着增加,且可以达到最大电压;随箭头相反方向逐渐按下,读出电压值逐渐减少,减少到最小电压。对于Z轴方向,信号端B接数字口,原始状态下输出0,按下输出1。这样,我们可以读取两个模拟值和一个数字口的高低电平情况,来判断模块上摇杆的工作状态。

模块参数:

  • 输入电压:DC 3.3V ~ 5V
  • 输出信号:X/Y双轴模拟值+Z轴数字信号
  • 适用范围:适用于控制点坐标在平面内的运动,双自由度舵机的控制等。
  • 产品特点:外观精美,摇杆手感优越,操作简单,反应灵敏,使用寿命长。

4.读取摇杆模块的值:

我们必须使用ESP32的模拟IO口从摇杆模块的X/Y引脚读取值,并使用数字IO口读取按钮的数字信号。请按照下面的接线图进行接线:

图片不存在

代码说明:

Img

读取摇杆模块在X轴、Y轴方向上的模拟值。

Img

读取摇杆模块在Z轴方向上的按键值。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img ” 拖出 “ Img ”,将 hello 改成 X: 。

  4. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img ” 拖出 “ Img ”,管脚为 36 ,选择 x 。

  5. 复制代码块 “Img” 1次,将 X: 改成 Y:,选择 y ,管脚为 39 。

  6. 先复制代码块 “Img” 1 次 ,将 Y: 改成 Z: ;接着从 “Img” 拖出 “Img” ,再从 “ Img ” 拖出 “ Img ”,管脚为 14 。

  7. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印当前摇杆的模拟值和数字值,移动摇杆或按下摇杆帽将改变串口监视器窗口中的模拟值和数字值。

图片不存在

Img

5.摇杆模块控制RGB的接线图:

我们刚读了摇杆模块的值,这里我们需要用摇杆模块和RGB做一些事情,按照下图连接:

图片不存在

6.项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:①如果摇杆在X方向上移动到最左边,RGB亮红灯; ②如果摇杆在X方向上移动到最右边,RGB亮绿灯; ③如果摇杆在Y方向上移动到最上面,RGB亮白灯; ④如果摇杆在Y方向上移动到最下面,RGB亮蓝灯;⑤如果按下摇杆帽,RGB熄灭。

图片不存在

图片不存在

项目29 温湿度表

1.项目介绍:

在冬季时,空气中的湿度很低,就是空气很干燥,再加上寒冷,人体的皮肤就容易过于干燥而裂,所以需要在用加湿器给家里的空气增加湿度,但是怎么知道空气过于干燥了呢?那就需要检测空气湿度的设备,这节课就来学习温湿度传感器的使用。我们使用温湿度传感器制作一个温湿度计,并且还结合LCD 128X32 DOT来显示温度和湿度值。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 LCD_128X32_DOT*1 温湿度传感器*1
图片不存在 图片不存在 图片不存在
3P转杜邦线公单*1 4P转杜邦线公单*1 USB 线*1

3.元件知识:

图片不存在

温湿度传感器: 是一款含有已校准数字信号输出的温湿度复合传感器,其精度湿度±5%RH,温度±2℃,量程湿度20-90%RH, 温度0~50℃。温湿度传感器应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。温湿度传感器包括一个电阻式感湿元件和一个NTC测温元件,非常适用于对精度和实时性要求不高的温湿度测量场合。 工作电压在3.3V-5.5V范围内。

温湿度传感器有三个引脚,分别为VCC,GND和S。S为数据输出的引脚。使用的是串行通讯。

温湿度传感器的单总线格式定义:

名称 单总线格式定义
起始信号 微处理器把数据总线(SDA)拉低一段时间至少 18ms(最大不得超过 30ms),通知传感器准备数据。
响应信号 传感器把数据总线(SDA)拉低 83µs,再接高 87µs 以响应主机的起始信号。
湿度 湿度高位为湿度整数部分数据,湿度低位为湿度小数部分数据
温度 温度高位为温度整数部分数据,温度低位为温度小数部分数据,且温度低位 Bit8 为 1 则表示负温度,否则为正温度
校验位 校验位=湿度高位+湿度低位+温度高位+温度低位

温湿度传感器数据时序图:

用户主机(MCU)发送一次开始信号后,温湿度传感器从低功耗模式转换到高速模式,待主机开始信号结束后,温湿度传感器发送响应信号,送出 40bit 的数据,并触发一次信采集。信号发送如图所示。

图片不存在

温湿度传感器可以很容易地将温湿度数据添加到您的DIY电子项目中。它是完美的远程气象站,家庭环境控制系统,和农场或花园监测系统。

温湿度传感器的参数:

  • 工作电压:+5 V
  • 温度范围:0-50 °C ,误差:± 2 °C
  • 湿度范围:20-90% RH ,误差:± 5% RH
  • 数字接口

温湿度传感器的原理图:

图片不存在

4.读取温湿度值:

图片不存在

代码说明:

Img

这是读取温湿度传感器检测的温度和湿度,温湿度传感器有 3 种型号,根据不同型号选择,这里是选择 DHT11 型号。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img ” 拖出 “ Img ”,将 hello 改成 RH: 。

  4. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img ” 拖出 “ Img ”,管脚为 13 ,选择 “获得湿度” 。

  5. 复制代码块 “ Img ” 1次,将 RH: 改成 % 。

  6. 复制代码块 “Img” 1次,将 RH: 改成 Temp: ,选择 “获得温度” ,将 % 改成 C ,将最下面的 “不换行” 改成 “自动换行” 。

  7. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。你会看到的现象是:串口监视器窗口将打印当前显示当前环境中的温湿度数据,如下图。

Img

5.温湿度仪表的接线图:

现在我们开始用LCD_128X32_DOT打印温湿度传感器的值,我们会在LCD_128X32_DOT的屏幕上看到相应的值。让我们开始这个项目吧。请按照下面的接线图进行接线:

图片不存在

6.项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:LCD 128X32 DOT的屏幕上显示温湿度传感器检测环境中相应的温度值和湿度值。

图片不存在

项目30 测距仪表

1.项目介绍:

HC-SR04超声波传感器是一种非常实惠的距离传感器,主要用于各种机器人项目中的物体躲避。它也被用于水位传感器,甚至作为一个停车传感器。我们把超声波传感器当作蝙蝠的眼睛,在黑暗中,蝙蝠仍然可以通过超声波识别前方的物体和方向。在本项目中,我们使用ESP32控制超声波传感器和LED模拟超声波测距仪。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 超声波传感器*1 4P转杜邦线公单*1
图片不存在 图片不存在 图片不存在 图片不存在
红色 LED*4 220Ω电阻*4 跳线若干 USB 线*1

3.元件知识:

HC-SR04超声波传感器: 像蝙蝠一样使用声纳来确定与物体的距离,它提供了精准的非接触范围检测、高精度和稳定的读数。它的操作不受阳光或黑色材料的影响,就像精密的照相机(在声学上像布料这样比较软的材料很难被探测到)。它带有超声波发射器和接收器。

图片不存在

在超声波传感器的前面是两个金属圆筒,这些是转换器。转换器将机械能转换成电信号。在超声波传感器中,有发射转换器和接收转换器。发射转换器将电信号转换为超声波脉冲,接收转换器将反射的超声波脉冲转换回电信号。如果你看超声波传感器的背面,你会看到的发射转换器后面有一个IC。这是控制发射转换器的IC。在接收转换器后面也有一个IC,这是一个四运算放大器,它将接收转换器产生的信号放大成足以传输到微控制器的信号。

时序图:

图示HC-SR04的时序图。为了开始测量,SR04的Trig必须接受至少10us的高(5V)脉冲,这将启动传感器将发射出8个周期的40kHz的超声波脉冲,并等待反射的超声波脉冲。当传感器从接收器检测到超声波时,它将设置回波引脚为高(5V)和延迟一个周期(宽度),与距离成比例。为了获得距离,测量Echo引脚的宽度。

图片不存在

时间=回波脉冲宽度,单位为us(微秒)

距离厘米=时间/ 58

距离(英寸)=时间/ 148

4.读取超声波传感器距离值

我们将从一个简单的超声波测距开始,并打印测量的距离。

图片不存在

HC-SR04超声波传感器有四个引脚:Vcc、Trig、Echo和GND。Vcc引脚提供产生超声波脉冲的电源,接Vcc/+5V。GND引脚接地/GND。Trig引脚是控制板发送信号来启动超声波脉冲的地方。Echo引脚是超声波传感器向控制板发送关于超声波脉冲行程持续时间的信息的地方。按下图接线:

图片不存在

代码说明:

Img

读取超声波传感器检测的距离。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “ Img” 拖出 “Img” 放入 “Img” 中,将 “ 整数 ” 改成 “字符串” ;从 “Img” 拖出 “Img” 放入 “Img”中,将 item 改成 distance 。

Img

  1. 先从 “ Img” 拖出 “Img” ;再从 “ Img ” 拖出 “ Img ” Trig管脚为 13 ,Echo 管脚为 14 。

Img

  1. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img ” 拖出 “ Img ”,将 hello 改成 Distance: 。

Img

  1. 先从 “Img” 拖出 “Img” ,将 “自动换行” 改成 “不换行”;接着从 “ Img” 拖出 “ Img ”。

Img

  1. 复制代码块 “ Img ” 1次,将 “不换行” 改成 “自动换行” ,Distance: 改成 cm 。

Img

  1. 从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印超声波传感器和物体之间的距离值。

Img

5.超声波测距仪的接线图:

接下来,我们将使用ESP32控制超声波传感器和4个LED模拟超声波测距仪。按如下图接好线:

图片不存在

6.项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,打开串口监视器,设置波特率为115200。可以看到的现象是:串口监视器窗口将打印超声波传感器和物体之间的距离值。另外,当我们用手在超声波传感器前移动时,相应的LED会亮起来。

图片不存在

项目31 温度仪表

1.项目介绍:

热敏电阻是一种电阻,其阻值取决于温度和温度的变化,广泛应用于园艺、家庭警报系统等装置中。因此,我们可以利用这一特性来制作温度仪表。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 LCD_128X32_DOT*1 热敏电阻*1
图片不存在 图片不存在 图片不存在 图片不存在
10KΩ电阻*1 4P转杜邦线公单*1 USB 线*1 跳线若干

3.元件知识:

热敏电阻: 热敏电阻是一种温度敏感电阻。当热敏电阻感应到温度的变化时,它的电阻就会发生变化。我们可以利用热敏电阻的这种特性来检测温度强度。热敏电阻及其电子符号如下所示。

图片不存在

热敏电阻的电阻值与温度的关系为:

图片不存在

式中:

Rt为热敏电阻在T2温度下的电阻;

R为热敏电阻在T1温度下的标称阻值;

EXP[n]是e的n次幂;

B为温度指数;

T1,T2是开尔文温度(绝对温度),开尔文温度=273.15 +摄氏温度。对于热敏电阻的参数,我们使用:B=3950, R=10KΩ,T1=25℃。热敏电阻的电路连接方法与光敏电阻类似,如下所示:

图片不存在

我们可以利用ADC转换器测得的值来得到热敏电阻的电阻值,然后利用公式来得到温度值。因此,温度公式可以推导为:

图片不存在

4.读取热敏电阻的值:

首先我们学习热敏电阻读取当前的温度值并将其打印出来。请按下面的接线图接好线:

图片不存在

代码说明:

Img

读取模拟温度传感器(热敏电阻)的温度值。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “Img” 拖出 “Img ” ;接着从 “Img” 拖出 “Img” ;将 “自动换行” 改成 “不换行” ,“hello” 改成 “Temperature:” 。

  4. 先从 “Img” 拖出 “Img ” ;接着从 “Img” 拖出 “Img” ,管脚为 36 ;将 “自动换行” 改成 “不换行” 。

  5. 复制代码块 “ Img” 1次,将 “不换行” 改成 “自动换行” ,“Temperature:” 改成 “ ℃ ” ;再从 “Img” 拖出 “Img”,设置延时为100毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。你会看到的现象是:串口监视器窗口将不断显示热敏电阻检测到当前环境中的温度值。试着用食指和拇指捏一下热敏电阻(不要碰触导线)一小段时间,你应该会看到温度值增加。

Img

5.温度仪表的接线图:

图片不存在

6.项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:LCD 128X32 DOT的屏幕上显示热敏电阻检测到当前环境中的温度值。

Img

项目32 RFID

1.实验介绍:

现在很多小区的门使用了刷卡开门这个功能,非常的方便。这节课我们将学习使用RFID(射频识别)无线通信技术和对卡(钥匙扣/白色磁卡)进行读、写操作及RFID-MFRC522模块控制舵机转动。

2.实验元件:

图片不存在 图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 RFID-RC522模块*1 舵机*1 白色磁卡*1
图片不存在 图片不存在 图片不存在 图片不存在
4P转杜邦线公单*1 跳线若干 USB 线*1 钥匙扣*1

3.元件知识:

RFID: 无线射频识别,读卡器由频射模块及高平磁场组成。Tag应答器为待感应设备,此设备不包含电池。他只包含微型集成电路芯片及存储数据的介质以及接收和发送信号的天线。读取tag中的数据,首先要放到读卡器的读取范围内。读卡器会产生一个磁场,因为磁能生电由楞次定律,RFID Tag就会供电,从而激活设备。

RFID-RC522模块: 采用Philips MFRC522原装芯片设计读卡电路,使用方便,成本低廉,适用于设备开发、读卡器开发等高级应用的用户、需要进行射频卡终端设计/生产的用户。本模块可直接装入各种读卡器模具。模块采用电压为5V,通过SPI接口简单的几条线就可以直接与用户任何CPU主板或单片机相连接通信。

图片不存在

规格参数:

  • 工作电压:DC 5V
  • 工作电流:13—100mA/DC 5V
  • 空闲电流:10-13mA/DC 5V
  • 休眠电流:<80uA
  • 峰值电流:<100mA
  • 工作频率:13.56MHz
  • 最大功率:0.5W
  • 支持的卡类型:mifare1 S50、mifare1 S70、mifare UltraLight、mifare Pro、mifare Desfire
  • 环境工作温度:摄氏-20—80℃
  • 环境储存温度:摄氏-40—85℃
  • 环境相对湿度:相对湿度5%—95%
  • 数据传输速率:最大10Mbit/s

4.RFID 读取 UID:

我们将读取RFID卡的唯一ID号(UID),识别RFID卡的类型,并通过串口显示相关信息,其接线图如下所示:

图片不存在

代码说明:

Img

初始化RFID RC522 I2C模块的管脚等等。

Img

RFID RC522 I2C模块读取白色磁卡和钥匙扣的值。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 从 “Img” 拖出 “Img” 放入 “Img”中。

Img

  1. 先从 “ Img” 拖出 “Img” 放入 “Img” 中,将 “ 整数 ” 改成 “字符串” ;再从 “Img” 拖出 “Img” 放入 “Img”中,删除 “hello”。

Img

  1. 从 “ Img” 拖出 “Img” ,再从 “ Img ” 拖出 “ Img ” 。

Img

  1. 先从 “Img” 拖出 “Img ”;接着从 “ Img” 拖出 “Img” ;再从 “Img” 拖出 “Img”,设置延时为100毫秒。

Img

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。你会看到的现象是:将白色磁卡和钥匙扣分别靠近模块感应区,串口监视器窗口将分别显示白色磁卡和钥匙扣的卡号值。如下图所示:

Img

特别注意:对于不同的RFID-RC522的白色磁卡和钥匙扣,其白色磁卡值和钥匙扣值可能都不一样。

5.RFID MFRC522的接线图:

现在使用RFID-RC522模块、白色磁卡/钥匙扣和舵机模拟做一个智能门禁系统。当白色磁卡/钥匙扣靠近RFID-RC522模块感应区舵机转动。按照下图进行接线。

图片不存在

6.项目代码:

特别注意:对于不同的RFID-RC522的白色磁卡和钥匙扣,其RFID-RC522读取的白色磁卡和钥匙扣值可能都不一样。你们将自己的RFID-RC522模块读取的白色磁卡和钥匙扣的值替换程序代码中对应的白色磁卡和钥匙扣的值,要不然可能会导致白色磁卡和钥匙扣控制不了舵机。

例如: 你把程序代码Img中的 item 字符串替换成自己的RFID-RC522模块读取的白色磁卡和钥匙扣的值。

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200;你会看到的现象是:当我们使用白色磁卡或者钥匙卡刷卡时,串口监视器显示出白色磁卡或者钥匙卡信息和“open the door”,如下图,舵机转动到对应的角度模拟开门。

Img

图片不存在

项目33 密码锁

1.项目介绍:

常用的数字按钮传感器,一个按钮就使用一个IO口,而有时我们需要的按钮比较多时,就会占用过多的IO口,为了节省IO口的使用,把多个按钮做成了矩阵类型,通过行列线的控制,实现少IO口控制多个按钮。在本项目中,我们将来学习ESP32和薄膜4*4矩阵键盘控制舵机和蜂鸣器。

2.项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 舵机*1
图片不存在 图片不存在 图片不存在
薄膜4×4矩阵键盘*1 USB 线*1 跳线若干
图片不存在 图片不存在 图片不存在
NPN型晶体管(S8050)*1 有源蜂鸣器*1 1KΩ电阻*1

3.元件知识:

薄膜4×4矩阵键盘: 键盘是一种集成了许多键的设备。如下图所示,一个薄膜4x4键盘集成16个键。

图片不存在

与LED矩阵集成一样,在薄膜4x4矩阵键盘中,每排键都是用一根引脚连接,每一列键都是一样的。这样的连接可以减少处理器端口的占用。内部电路如下所示。

图片不存在

使用方法类似于矩阵LED,即使用行扫描或列扫描方法检测每列或每行上的键的状态。以列扫描法为例,向第4列(Pin4)发送低电平,检测第1、2、3、4行电平状态,判断A、B、C、D键是否按下。然后依次将低电平发送到列3、2、1,检测是否有其它键被按下。然后,你可以获得所有键的状态。

4.读取薄膜4*4矩阵键盘的键值:

我们首先使用一个简单的代码读取薄膜4*4矩阵键盘的键值并将其打印出来,其接线图如下所示:

图片不存在

代码说明

Img

初始化薄膜4*4矩阵键盘的行管脚和列管脚,定义键盘,等等。

Img

获取薄膜4*4矩阵键盘的按键值。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 从 “Img” 拖出 “Img” ,行管脚分别为:22、21、19、18;列管脚分别为:17、6、4、0 。

  4. 先从 “Img” 拖出 “Img ”,再从 “Img” 拖出 “Img” 。

  5. 从 “Img” 拖出 “Img”,设置延时为500毫秒。

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。你会看到的现象是:按下薄膜4×4矩阵键盘上的按键,串口监视器窗口将打印对应的键值,如下图所示。

Img

5.密码锁的接线图:

在上一实验中,我们已经知道了薄膜4×4矩阵键盘的键值,接下来,我们使用薄膜4×4矩阵键盘作为键盘来控制舵机和蜂鸣器。

图片不存在

6.项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:用手按下薄膜4*4矩阵按键盘上的按键 “ 3 ” ,舵机会转动180°角度,蜂鸣器鸣叫;然后松开,舵机又回到原来的位置,蜂鸣器不鸣叫。

图片不存在

项目34 红外遥控控制声音和LED

1.项目介绍:

红外遥控是一种低成本、易于使用的无线通信技术。IR光与可见光非常相似,除了它的波长稍长一点。这意味着红外线是人眼无法检测到的,这对于无线通信来说是完美的。例如,当你按下电视遥控器上的一个按钮时,一个红外LED会以每秒38000次的频率反复开关,将信息(如音量或频道控制)传送到电视上的红外感光器。

我们将首先解释常见的红外通信协议是如何工作的。然后我们将从一个遥控器和一个红外接收组件开始这个项目。

2.项目元件:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 红外接收器*1 RGB LED*1
图片不存在 图片不存在 图片不存在 图片不存在
有源蜂鸣器*1 220Ω电阻*3 10KΩ电阻*1 红外遥控器*1
图片不存在 图片不存在 图片不存在 图片不存在
NPN型晶体管(S8050)*1 1kΩ电阻*1 USB 线*1 跳线若干

3.元件知识:

红外(IR)遥控器: 是一种可以发射红外光信号的设备。按下不同的按钮,位于遥控器前端的红外发射管会发出不同指令的红外线。红外遥控技术应用广泛,如电视、空调等。因此,在当今科技发达社会,红外遥控技术使你切换电视节目和调节空调温度都很方便。

我们使用的遥控器如下所示,该红外遥控器采用NEC编码。

图片不存在

红外(IR)接收器: 是VS1838B红外接收传感器元件,可以接收红外光,所以可以用它来检测红外遥控器发出的红外光信号。

图片不存在

红外接收器是集接收、放大、解调一体的器件,将接收到的红外光信号在其内部IC就已经完成了解调(将红外光信号转换回二进制),输出的就是数字信号,然后将信息传递给微控制器。它可接收标准38KHz调制的遥控器信号。

红外信号调制过程图:

图片不存在

4.解码红外信号:

我们按照下面接线图将红外接收元件连接到ESP32。

图片不存在

代码说明:

Img

红外接收器接收红外遥控器上按键值信号,初始化管脚。

Img

串口端口自动换行打印接收到的十六进制的红外遥控器按键值信号。

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 从 “ Img ” 拖出 “ Img ” ,管脚为 0 。

  4. 先从 “Img” 拖出 “Img” 放入 “ Img ” 中;再从 “Img” 拖出 “ Img ” 放入 “Img” 中数字 0 处,将 “不换行” 改成 “自动换行”。

Img

完整代码:

Img

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,单击图标Img进入串行监视器,设置波特率为115200。你会看到的现象是:将红外遥控器发射器对准红外接收头,按下红外控制器上的按键,串口监视器将打印当前接收到的按键编码值。多次按下相同的按键以确保你拥有该按键的正确编码值。如果看到FFFFFFFF,请忽略它。

Img

写下红外遥控器与每个按键相关联的按键编码值,因为你稍后将需要这些信息。

图片不存在

5. 红外遥控的接线图:

图片不存在

6. 项目代码:

Img

7.项目现象:

编译并上传代码到ESP32,代码上传成功后,利用USB线上电,你会看到的现象是:按红外遥控器的1~7键,蜂鸣器都会鸣响一次,同时RGB分别亮红灯,绿灯,蓝灯,黄灯,洋红灯,蓝绿灯,白灯。按其他另一按键(除1-7键以外),RGB熄灭。

图片不存在

项目35 蓝牙

本章主要介绍如何通过ESP32的蓝牙与手机进行简单的数据传输。

1. 项目元件:

图片不存在 图片不存在 图片不存在
ESP32*1 USB 线*1 智能手机/平板电脑(自备)*1

在本项目中,我们需要使用一个名为串口蓝牙终端的蓝牙应用程序来协助实验。如果您还没有安装它,请点击安装:https://www.appsapk.com/serial-bluetooth-terminal/ 。 下面是它的标志。

图片不存在

2.元件知识:

蓝牙是一种短距离通信系统,可分为两种类型,即低功耗蓝牙(BLE)和经典蓝牙。简单的数据传输有两种模式:主模式和从模式。

主模式: 在这种模式下,工作在主设备上完成,并且可以与从设备连接。我们可以搜索和选择附近的从设备来连接。当设备在主模式下发起连接请求时,需要其他蓝牙设备的地址和配对密码等信息。配对完成后,可直接与它们连接。

从模式: 处于从模式的蓝牙模块只能接受来自主机的连接请求,但不能发起连接请求。与主机设备连接后,可以向主机设备发送数据,也可以从主机设备接收数据。蓝牙设备之间可以进行数据交互,一个设备处于主模式,另一个设备处于从模式。当它们进行数据交互时,处于主模式的蓝牙设备会搜索并选择附近要连接的设备。在建立连接时,它们可以交换数据。当手机与ESP32进行数据交换时,手机通常处于主模式,ESP32为从模式。

图片不存在

3.项目接线:

使用USB线将ESP32主板连接到电脑上的USB口。

图片不存在

4.项目代码:

提醒: 此代码从 “ Img ” 一起拖出,将 “ ESP32BT ” 改成 “ ESP32test ” 即可。

Img

5.项目现象:

编译并上传代码到ESP32 主控板,上传成功后,打开串行监视器,波特率设置为 115200

请确认你的手机已开启手机蓝牙,且已安装好“串口蓝牙终端”的蓝牙应用程序。

图片不存在

图片不存在

手机自动搜索附近的蓝牙设备,点击“ESP32 test”进行配对,出现配对对话框,点击“配对”,这样“ESP32 test”设备就连接好了。

图片不存在

图片不存在

图片不存在

打开软件APP,点击终端左侧。选择 "Devices"。

图片不存在

图片不存在

选择经典蓝牙模式下的ESP32test,会出现如下图所示的连接成功提示。

图片不存在

图片不存在

现在,数据可以通过ESP32在你的手机和电脑之间传输。

在串口监视器中的文本框输入“Hi!”,当手机收到它的时候,给你的手机回复“Hi!”;手机发送“Hello!”,当电脑收到它的时候,给你的电脑回复“Hello!”。

Img

图片不存在

项目36 WiFi 工作模式

在如今科技高速发展的时代,人们的生活质量越来越好,生活节奏越来越快,开始有人觉得复杂多样的智能化设备控制起来十分麻烦,通过手机统一控制智能化设备这种方法逐渐得到了人们的青睐。这种方法是利用单片机通过wifi模块和Internet网络建立手机和智能化设备之间的连接以此来实现对智能化设备的远程控制。在本章中,我们将重点关注ESP32的WiFi基础设施。ESP32有3种不同的WiFi工作模式:Station模式、AP模式和AP+Station模式。所有WiFi编程项目在使用WiFi前必须配置WiFi运行模式,否则无法使用WiFi。

特别提醒:在本项目中,只讲解 ESP32 的 WiFi Station 模式

项目36.1: WiFi Station 模式

1.实验元件:

图片不存在 图片不存在
USB 线 x1 ESP32x1

2.实验接线:

使用USB线将ESP32主板连接到电脑上的USB口。

图片不存在

3.元件知识:

Station 模式: 当ESP32选择Station模式时,它作为一个WiFi客户端。它可以连接路由器网络,通过WiFi连接与路由器上的其他设备通信。如下图所示,PC和路由器已经连接,ESP32如果要与PC通信,需要将PC和路由器连接起来。

图片不存在

4.项目代码:

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “ Img” 拖出 “ Img ” 放入 “ Img ” ,设置波特率为 115200 。

  3. 从 “Img” 拖出 “Img” 。

完整代码:

Img

特别提醒:由于各地的WiFi名称和密码是不同,所以在程序代码运行之前,用户需要在下图所示的框中输入你们自己的WiFi名称和密码

Img

5.项目现象:

确认正确输入自己的WiFi名称和密码后,编译并上传代码到ESP32主板,上传成功后,单击图标Img进入串行监视器,设置波特率为115200。当ESP32成功连接到WiFi时,串行监视器将打印出WiFi分配给ESP32的IP地址。然后串口监视器窗口将显示如下:(如果打开串口监视器且设置波特率为115200之后,串口监视器窗口没有显示如下信息,可以按下ESP32的复位键图片不存在

Img

项目37 WiFi 测试

1.实验简介:

在本实验中,我们先使用ESP32的WiFi Station模式读取WiFi的IP地址,然后通过APP连接WiFi来读取APP上各功能按钮发送的字符。

2.实验元件:

图片不存在 图片不存在 图片不存在
ESP32*1 USB 线*1 智能手机/平板电脑(自备)*1

3.实验接线:

使用USB线将ESP32主板连接到电脑上的USB口。

图片不存在

4.安装APP:

(1) 安卓系统设备(手机/平板)APP:

我们提供了Android APP 的安装包:

图片不存在

安装步骤:

A. 现将文件夹中的keyes wifi.apk文件转移到安卓系统手机或平板电脑上。

或者用安卓系统手机/平板电脑的浏览器中的扫码功能扫下面的二维码。

图片不存在

B. 点击keyes wifi.apk文件进入安装页面,点击“允许”按钮,然后点击“安装”按钮,过一会儿,安装完成后点击“打开”按钮就可以进入APP界面。

图片不存在

图片不存在

图片不存在

图片不存在

图片不存在

图片不存在

(2) IOS系统设备(手机/iPad)APP

a. 打开App Store。

图片不存在

b.在搜索框输入keyes link,点击搜索,出现下载界面,点击“图片不存在”,就可以下载安装keyes link的APP。接下来的操作和安卓系统类似的,可以参考上面安卓系统的步骤进行操作。

5.代码说明:

Img

输入WiFi名称和密码,连接WiFi热点,读取WiFi分配的IP地址。

Img

APP按键发送数据,通过无线WiFi,ESP32接收相关数据,即:读取WiFi数据。

6.项目代码:

特别注意:确保计算机网络,手机/平板的网络,ESP32主板,路由器,代码中输入你自己的WiFi名称和密码都必须是在同一个局域网(WiFi)下。

Img

你可以打开我们提供的代码,也可以自己编写代码,其如下:

  1. 从 “Img” 拖出 “Img”。

  2. 从 “Img” 拖出 “Img” 放入 “Img”,设置波特率为 115200 。

  3. 先从 “ Img” 拖出 “Img” 放入 “Img” 中,将 “ 整数 ” 改成 “字符串” ;再从 “Img” 拖出 “Img” 放入 “Img”中,删除 “hello”。

Img

  1. 从 “Img” 拖出 “Img” 。

  2. 先从 “ Img” 拖出 “Img” ,再从 “Img” 拖出 “Img” 。

Img

  1. 先从 “Img” 拖出 “Img” ,再从 “Img” 拖出 “Img” 。

Img

完整代码:

Img

特别注意:需要先将项目代码 Img 中的用户Wifi名称(SSID 名称)和用户Wifi密码(PASSWD 密码)改成你们自己的Wifi名称和Wifi密码。

7.实验现象

特别注意:确保计算机网络,手机/平板的网络,ESP32主板,路由器,代码中输入你自己的WiFi名称和密码都必须是在同一个局域网(WiFi)下。

Img

确认程序代码中的Wifi名称和Wifi密码修改正确后,编译并上传代码到ESP32主板上。

打开串口监视器,设置波特率为115200,这样,串口监视器打印检测到的WiFi IP地址,然后打开WiFi APP。 在WIFI按钮前面的文本框中输入检测到的WIFI IP地址(例如,下上面串口监视器检测到的IP地址:192.168.1.136),再点击WIFI按钮,“403 Forbidden”或“网页无法打开”就会变成“192.168.1.136”。这样,就说明APP已经连接上了WIFI。

图片不存在

用手分别点击APP上的各个功能按钮,然后串口监视器会打印接收到的对应字符。

Img

注意: 如果打开串口监视器且设置波特率为115200之后,串口监视器窗口没有显示如下信息,可以按下ESP32的复位键图片不存在

项目38 WiFi 智能家居

1.实验说明:

在前面的实验中,我们已经了解了ESP32的WiFi Station模式。那么在本章实验中,我们将使用ESP32的WiFi Station模式通过APP连接WIFI来控制多个传感器/模块工作,实现WiFi智能家居的效果。

2.实验器材:

图片不存在 图片不存在 图片不存在 图片不存在
ESP32*1 面包板*1 130直流电机模块*1 继电器模块*1
图片不存在 图片不存在 图片不存在 图片不存在
舵机*1 温湿度传感器*1 超声波传感器*1 4P转杜邦线公单*2
图片不存在 图片不存在 图片不存在 图片不存在
智能手机/平板电脑(自备)*1 面包板专用电源模块*1 6节5号电池盒*1 风扇叶*1
图片不存在 图片不存在 图片不存在 图片不存在
5号电池(自备)*6 MicroUSB线*1 3P转杜邦线公单*2 跳线若干

3.实验接线图:

继电器 ESP32主板 温湿度传感器 ESP32主板
G G G G
V 5V V 5V
S IO32 S IO15
超声波传感器 ESP32主板 130 风扇模块 ESP32主板
Vcc 5V G G
Trig IO14 V 5V
Echo IO27 IN+ IO19
Gnd G IN- IO18
舵机 ESP32主板
红色线 5V
棕色线 G
橙色线 IO4

图片不存在

(注: 先接好线,然后在直流电机上安装一个小风扇叶片。)

4.安装APP:

安装APP的方法请参照 项目37 WiFi测试 。这里就不重复讲解。

5.项目代码:

特别注意:需要先将项目代码 Img 中的用户Wifi名称(SSID 名称)和用户Wifi密码(PASSWD 密码)改成你们自己的Wifi名称和Wifi密码。

Img

6.实验现象:

特别注意:确保计算机网络,手机/平板的网络,ESP32主板,路由器,代码中输入你自己的WiFi名称和密码都必须是在同一个局域网(WiFi)下。

Img

确认程序代码中的Wifi名称和Wifi密码修改正确后,编译并上传代码到ESP32主板上。

Img

打开串口监视器,设置波特率为115200,这样,串口监视器打印检测到的WiFi IP地址。(注意: 如果打开串口监视器且设置波特率为115200之后,串口监视器窗口没有显示如下信息,可以按下ESP32的复位键图片不存在

Img

然后打开WiFi APP,在WIFI按钮前面的文本框中输入检测到的WIFI IP地址(例如,上面串口监视器检测到的IP地址:192.168.1.136),接着点击WIFI按钮来连接WiFi。(WiFi的IP地址有时候会改变,如果原来的IP地址不行,需要重新检测WiFi的IP地址

Img

APP已经连接上了WiFi后,开始进行如下操作:

图片不存在

(1)点击图片不存在按钮,继电器打开,模块上的指示灯点亮;再次点击图片不存在按钮,继电器关闭,模块上的指示灯不亮。

(2)点击图片不存在按钮,舵机转动到180°处;再次点击图片不存在按钮,舵机转动到0°处。

(3)点击图片不存在按钮,电机(带小风扇叶)转动;再次点击图片不存在按钮,关闭电机。

(4)在超声波传感器前放一个物体,点击图片不存在按钮,超声波传感器测距,串口监视器窗口显示距离值,说明此时物体离超声波传感器的距离为301.2cm;再次点击图片不存在按钮,关闭超声波。

(5)点击图片不存在按钮,温湿度传感器测量环境中的温度,串口监视器窗口显示温度值,说明此时环境中的温度为28.6℃;再次点击图片不存在按钮,关闭温湿度传感器。

(6)点击图片不存在按钮,温湿度传感器测量环境中的湿度,串口监视器窗口显示湿度值,说明此时环境中的湿度为54.4%;再次点击图片不存在按钮,关闭温湿度传感器。

Img