100个物联网项目(基于ESP32)1ESP32的基础
1-NodeMCU、ESP32的基础
简介
NodeMCU是一个开源的IoT(物联网)平台,包括在乐鑫的ESP8266 Wi-Fi SoC上运行的固件和基于ESP-12模块的硬件。它是由一乐鑫在2014年创建的,他们希望为物联网项目提供低成本和灵活的平台。ESP32是低成本的微芯片,具有Wi-Fi和蓝牙功能,由乐鑫开发,是一家中国的微控制器和集成电路制造商。它于2016年发布,作为ESP8266的继任者,由于其改进的性能和额外的蓝牙连接,它已成为物联网项目的流行选择。
乐鑫司成立于2008年,由一群对为新兴物联网市场开发低成本、高性能微控制器感兴趣的中国工程师组成。除了ESP8266和ESP32之外,该公司还发布了一系列用于物联网应用的其他微芯片和模块。
NodeMCU ESP8266和ESP32哪个更好?
ESP8266和ESP32都是低成本的微芯片,具有Wi-Fi和微控制器功能,使它们非常适合于物联网(IoT)应用。两种芯片都有自己的优势,根据你的需要,可能更适合某些项目。
下面是ESP8266和ESP32之间的一些关键区别:
- 性能: ESP32比ESP8266拥有更强大的处理器和更多的内存,使其更适合于需要更多处理能力和内存的应用。
- 连接性: ESP32除了支持Wi-Fi外,还支持蓝牙,这使得它在需要这两种无线技术的应用中更具通用性。
- 功耗: ESP32的功耗比ESP8266低,使其更适合电池供电的应用。
- 价格: ESP8266通常比ESP32便宜,使其成为项目中更适合预算的选择。
总的来说,ESP32通常被认为比ESP8266更强大,功能更全面,但它也更昂贵。如果你需要具有更多处理能力和内存的芯片,或者你需要蓝牙连接,ESP32可能是更好的选择。如果你的预算有限,而且不需要那么多的处理能力或蓝牙连接,ESP8266可能是更合适的选择。
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- HANDBOOK OF NODEMCU ESP32:Top 100 Internet of Things (IoT) Project Ideas with NodeMCU, ESP8266, and ESP32 for Beginners and Inventors
NodeMCU和ESP32的实时应用
在物联网(IoT)领域,NodeMCU和ESP32有许多实时应用。下面是几个例子:
- 智能家居自动化: NodeMCU和ESP32可用于建立智能家居自动化系统,如智能恒温器、智能插头和智能照明。这些系统可以使用智能手机应用程序进行远程控制,它们可以被编程以响应来自传感器和其他设备的实时数据。
- 工业自动化: NodeMCU和ESP32可用于建立工业自动化系统,如自动化生产线控制器和传感器网络。这些系统可用于实时监测和控制工业流程,提高效率和降低成本。
- 环境监测: NodeMCU和ESP32可用于建立环境监测系统,如空气质量传感器和气象站。这些系统可用于监测和报告实时数据,如温度、湿度和空气质量。
- 可穿戴技术: NodeMCU和ESP32可用于建立可穿戴技术,如健身追踪器和智能手表。这些设备可用于监测和报告实时数据,如心率、所走的步骤和睡眠模式。
- 远程控制: NodeMCU和ESP32可用于建立远程控制系统,如遥控车辆和无人机。这些系统可以使用智能手机应用程序或其他远程控制设备进行实时远程控制。
总的来说,NodeMCU和ESP32非常适合物联网领域的实时应用,因为它们成本低,可用性广,而且易于使用。它们可以用来建立广泛的连接设备和系统,可以实时监测和控制各种过程。
开始使用ESP8266和ESP32?
下面是一些开始使用NodeMCU和ESP32的简短步骤:
- 安装Arduino IDE: NodeMCU和ESP32都可以使用Arduino集成开发环境(IDE)进行编程。你可以从Arduino网站下载最新版本的Arduino IDE ( https://www.arduino.cc/en/Main/Software )。
- 将NodeMCU或ESP32板添加到Arduino IDE中:为了在Arduino IDE中使用NodeMCU或ESP32,你需要将该板添加到可用板的列表中。要做到这一点,请遵循以下步骤:
- 打开Arduino IDE,进入文件>首选项。
- 在 "额外的板子管理器URLs"领域,输入以下URL:http://arduino.esp8266.com/stable/package_esp8266com_index.json(用于NodeMCU)或https://dl.espressif.com/dl/package_esp32_index.json(用于ESP32)。
- 进入工具 > 板卡 > 板卡管理器。
- 搜索 "esp8266"(用于NodeMCU)或 "esp32"(用于ESP32)并安装ESP8266社区(用于NodeMCU)或Espressif Systems(用于ESP32)的相应软件包。
- 将NodeMCU或ESP32板连接到您的计算机上:用一根微型USB电缆将NodeMCU或ESP32板连接到您的计算机上。
- 选择NodeMCU或ESP32板和端口: 在Arduino IDE中,进入工具>板,选择 "NodeMCU 1.0(ESP-12E模块)"(对于NodeMCU)或 "ESP32 Dev Module"(对于ESP32)。然后,转到工具>端口,选择你的板子所连接的端口。
- 编-写并上传你的第一个草图: 你现在可以编写并上传你的第一草图(程序)到NodeMCU或ESP32板。草图是一组指令,告诉板子要做什么。要创建新的草图,进入文件>新建。然后,在出现的窗口中编写你的代码。当你准备把草图上传到电路板上时,点击上传按钮(朝右的箭头图标)。
- 测试你的NodeMCU或ESP32板: 你可以通过编写简单的草图来测试你的NodeMCU或ESP32板,使LED打开和关闭。要做到这一点,你需要将LED连接到板子上。按照下面的步骤进行:
使用面包板和跳线将LED的正极(较长的那条)连接到NodeMCU或ESP32板的数字引脚D1。
将LED的负极(较短的那条腿)连接到电路板上的GND引脚。
编写以下草图,并将其上传到电路板上:
void setup() {
// Set pin D1 as an output
pinMode(D1, OUTPUT);
}
void loop() {
// Turn the LED on
digitalWrite(D1, HIGH);
// Wait for 1 second
delay(1000);
// Turn the LED off
digitalWrite(D1, LOW);
// Wait for 1 second
delay(1000);
}
如果一切设置正确,LED应该每秒钟打开和关闭。
要开始使用ESP8266或ESP32,你将需要以下组件:
- ESP8266或ESP32板。
- USB-micro-USB电缆: 你将需要这条电缆来连接你的ESP8266或ESP32板和你的电脑。
- 面包板: 面包板是一种原型设计工具,可以让你轻松地将元件连接在一起。你将需要一块面包板来连接ESP8266或ESP32板和其他元件,如传感器和执行器。
- 跳线: 跳线是短而灵活的电线,用于连接面包板上的元件。你将需要跳线来连接ESP8266或ESP32板和其他组件。
- 传感器和执行器等组件: 根据您的项目,您可能还需要额外的组件,如传感器(如温度传感器、湿度传感器等)和执行器(如LED、电机等)。这些组件可以使用面包板和跳线连接到ESP8266或ESP32板上。
除了这些组件外,你还需要一台安装了Arduino IDE的电脑( https://www.arduino.cc/en/Main/Software )。这是你用来编写和上传代码到ESP8266或ESP32板的软件。
ESP32和ESP8266的引脚配置
ESP32和NodeMCU都有类似的引脚配置,可以使用相同的工具进行编程。ESP32和NodeMCU上的引脚都标有字母和数字,如 "D0 "或 "A5"。字母指的是引脚的功能,而数字指的是微控制器上的具体引脚。
下面是ESP32和NodeMCU的主要引脚类型的总结:
- 数字引脚: 这些引脚可用于读取或写入数字值(高或低)。它们可以用来控制LED,读取开关输入,或使用I2C或SPI等数字协议与其他设备通信。
- 模拟引脚: 这些引脚可用于读取模拟值,如电压或电阻。它们可以用来读取传感器值,控制LED的亮度,或产生PWM信号。
- 电源引脚: 这些引脚可用于向电路板或其他设备供电。ESP32和NodeMCU有一个3.3V的电源引脚,可以用来给电路板和其他3.3V设备供电,还有一个5V的电源引脚,可以用来给电路板和其他5V设备供电。
- 接地引脚: 这些引脚用于为电路板和其他设备建立一个共同的接地参考。
- 串行引脚: 这些引脚可以用来与其他使用UART、I2C和SPI等串行协议的设备通信。
你可以在ESP32和NodeMCU各自的数据手册中找到更多关于其引脚的详细信息,或者参考制造商提供的文件。
受欢迎原因
具体来说,因为有以下特点:
- 低成本: ESP32只需6美元就可以买到,这使得一般人都能负担得起。
- 低功耗: 与其他微控制器相比,ESP32的耗电量非常小,而且它支持低功耗模式状态,如深度睡眠,以节省电力。
- Wi-Fi功能: 对于物联网和家庭自动化项目来说,ESP32是必不可少的,它可以快速而方便地加入现有的Wi-Fi网络来访问互联网(站模式),或者它可以建立自己的Wi-Fi无线网络(接入点模式),让其他设备连接到它。
- 蓝牙: ESP32可与经典蓝牙和蓝牙低能耗(BLE)一起工作,这使它对许多物联网应用非常有用。
- 双核: 大多数ESP32是双核的,这意味着它们有两个Xtensa 32位LX6微处理器,分别命名为核0和核1。
- 丰富的外设输入/输出接口--ESP32支持广泛的输入(从外部世界读取数据)和输出(向外部世界发送命令/信号)外设,如电容式触摸、ADC、DAC、UART、SPI、I2C、PWM等。
- 与Arduino "编程语言 "兼容: 那些已经知道如何对Arduino板进行编程的人,会很高兴听到ESP32可以用同样的方式进行编程。
- 与MicroPython兼容: MicroPython固件是Python 3的重新实现,专门设计用于微控制器和其他嵌入式系统,可以用来为ESP32编写程序。
ESP32规格
对于那些喜欢更多技术和细节的人,可以考虑以下方法ESP32的详细规格(来源:http://esp32.net/)
无线连接 WiFi:
150.0 Mbps的数据速率,使用HT40
- 蓝牙: BLE(蓝牙低能量)和蓝牙经典
- 处理器: Tensilica Xtensa双核32位LX6微处理器,运行频率为160或240 MHz
存储器:
- ROM: 448 KB (用于启动和核心功能)
- SRAM: 520 KB (用于数据和指令)
- RTC fas SRAM:8KB(用于数据存储和RTC启动时的主CPU从深度睡眠模式)。
- RTC慢速SRAM:8KB(用于在深度睡眠模式下访问协处理器)。
- eFuse:1K比特(其中256比特用于系统(MAC地址和芯片配置),其余768比特保留给客户应用,包括Flash-加密和芯片-ID)
嵌入式闪存:
在ESP32-D2WD和ESP32-PICO-D4上通过IO16、IO17、SD_CMD、SD_CLK、SD_DATA_0和SD_DATA_1内部连接闪存。
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD, 和 ESP32-S0WD芯片)
- 2 MiB (ESP32-D2WD芯片)
- 4 MiB (ESP32-PICO-D4 SiP模块)
低功耗
确保你仍然可以使用ADC转换,例如,当你处于深度睡眠状态。
输入/输出:
- 支持DMA并具有电容式触摸的外设接口
- ADC(模数转换器),DAC(数模转换器)。
- I²C (互连电路)
- UART(通用异步接收器/发射器)
- SPI(串行外设接口),I²S(集成片间声)。
- RMII(精简媒体独立接口),PWM(脉冲宽度调制)。
- 安全性:用于加密协议的硬件加速器,如AES和SSL/TLS
ESP32开发板
ESP32一词指的是ESP32芯片的整体。然而,术语 "ESP32 "也可以指ESP32开发板。使用ESP32裸芯片是很困难和不方便的,特别是在学习、测试和制作原型时。大多数时候,一个ESP32开发板就足够了。
这些开发板有你开始工作所需的一切,包括给芯片供电和编程的电路、与电脑的连接、连接外设的引脚、电源和控制LED、Wi-Fi天线等等。有些,如ESP32-CAM,甚至包括板上的补充硬件,如内置摄像头或各种传感器和模块。
如何选择ESP32开发板?
当你开始在网上寻找ESP32板时,你会看到来自不同供应商的大量板子。虽然它们的功能都差不多,但有些板子可能比其他的更适合某些任务。在选购ESP32开发板时,有各种因素需要考虑:
-
USB到UART接口和稳压电路。这两个功能在大多数全功能的开发板上都有。这是必要的,以便简单地将ESP32连接到你的计算机,以便上传代码和应用电源。
-
BOOT和RESET/EN按钮可以使板子处于闪烁模式或重置(重启)板子。并非所有的板子都有BOOT按钮。通常情况下,这些板子会自己进入闪烁模式。
-
引脚配置和引脚数量。 你需要获得板子的引脚配置,以便以适合你的应用的方式使用ESP32(比如一张显示哪个引脚对应哪个GPIO及其功能的地图)。因此,请确保你能够获得你将要购买的电路板的引脚分布。否则,你有可能误用ESP32,给自己带来麻烦。
-
天线连接器。大多数板子都包括一个内置的Wi-Fi天线。有些板子包括一个天线连接器,如果需要的话,可以连接一个外部天线。增加一个额外的天线可以扩大你的Wi-Fi范围。
-
电池接口。如果你想使用电池为你的ESP32供电,有一些开发板带有锂电池的插头。这可能更方便。你也可以用电池通过电源引脚为 "普通 "ESP32供电。
额外的硬件功能。有一些ESP32开发板具有额外的硬件功能。有些可能包括OLED显示屏,LoRa模块,SIM800模块(用于GSM和GPRS),电池座,摄像头,或其他功能。
什么是最适合初学者的ESP32开发板?
对于初学者来说,我们推荐一个ESP32板,它有大量可访问的GPIO,没有额外的硬件功能。同样关键的是,它要有标准的电压输入,以及一个用于供电和代码上传的USB输入。我们在大多数ESP32项目中使用ESP32 DEVKIT DOIT板,它是我们推荐给初学者的。这个板子有三种不同的配置,每种配置都有不同数量的可访问引脚(30、36和38)--所有板子的功能都差不多。其他具有前面所述功能的类似板子,如Adafruit ESP32 Feather、Sparkfun ESP32 Thing、NodeMCU-32S、Wemos LoLin32等,也可能是一个不错的选择。
它有微型USB接口,可以让你把板子连接到电脑上,这样你就可以上传代码或给它供电。它使用CP2102芯片(USB转UART),通过COM端口的串行接口与你的计算机对话。CH340是另一个著名的芯片。找出你的板子有什么样的USB-to-UART芯片转换器,因为你需要为你的计算机安装正确的驱动程序,以便能够与板子对话(本指南后面会有更多相关信息)。这个板子还有一个RESET(或EN)按钮,用来关闭和重新开启板子,还有一个BOOT按钮,用来将板子置于闪动模式(可用于接收代码)。请记住,并不是所有的板子都有一个BOOT按钮。
它还内置了一个蓝色的LED,从内部接线到GPIO 2。这个LED对调试很有帮助,因为它可以提供某种可以看到的物理输出。板子上还有红色的LED,当你给它供电时,它会亮起来。
ESP32的GPIO引脚分布
ESP32芯片有48个引脚,都做不同的事情。并非所有的ESP32开发板都有所有的引脚暴露,有些引脚不应该被使用。大多数时候,ESP32 DEVKIT V1 DOIT板有36个GPIO,这些GPIO是暴露的,可以用来连接外设。
电源引脚
在大多数情况下,电源引脚3V3、GND和VIN已经安装在电路板上。如果你不通过USB端口给电路板供电,你可以使用这些引脚给电路板供电。如果你通过USB端口给板子供电,你可以用这些引脚给其他设备供电。
通用输入输出引脚(GPIOS)
大多数的GPIO都被赋予了一个编号,因此你应该总是用这个编号来指代它们。你可以通过在代码中设置这些信息来选择哪些ESP32引脚用于UART、I2C或SPI。ESP32芯片的多路复用功能使之成为可能,它可以将许多功能分配给一个引脚。
如果你没有在代码中指定这些引脚,那么这些引脚将被默认设置为下图所示(引脚的位置可能会根据制造商的不同而改变)。此外,一些引脚具有特殊的特性,决定了它们是否适合于一个特定的项目。根据你的开发板的型号,GPIO的位置可能有所不同。然而,无论你使用的是哪种开发板,每个单一的GPIO通常以相同的方式工作(有一些例外)。例如,GPIO 5通常总是VSPI CS0引脚,GPIO 23通常是用于SPI通信的VSPI MOSI引脚,等等,与板子无关。