【花雕学编程】Arduino动手做(233)---综合采集ESP32-S3 UNO(N16R8)的各种参数并串口输出

在这里插入图片描述

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+Wi-Fi+蓝牙5.0+36个GPIO

偶然发现了这块ESP32-S3 UNO(N16R8)开发板,与Arduino UNO的外观设计规格是一样的。

在这里插入图片描述
ESP32-S3 UNO 开发板是基于 ESP32-S3-WROOM-1-N16R8 微控制器的扩展板,基于 Arduino 开发板架构。凭借 2.4GHz Wi-Fi 和集成蓝牙 5.0 等高级功能,它为开发各种项目提供了一个强大的平台。ESP32-S3 UNO 配备 16MB 闪存和 8MB RAM,特别适用于物联网 (IoT)、机器人和其他工程项目的复杂应用。该开发板支持 Python 和 C 等流行的编程语言,可以在 Arduino IDE 开发环境中轻松编程和使用。该板的高级功能,包括对多种通信协议的支持和高处理能力,使其成为专业工程师和开发人员的理想工具。

在这里插入图片描述
在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+Wi-Fi+蓝牙5.0+45个GPIO
{花雕动手做}项目之三:综合采集ESP32-S3 UNO(N16R8)的各种参数并串口输出

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+Wi-Fi+蓝牙5.0+45个GPIO
  {花雕动手做}项目之三:综合采集ESP32-S3 UNO(N16R8)的各种参数并串口输出
*/

#include <WiFi.h>
#include <esp_wifi.h>
#include <esp_system.h>
#include <esp_chip_info.h>
#include <esp_spi_flash.h>

// WiFi网络信息
const char* ssid = "zhz3";
const char* password = "z156721";

void setup() {
  // 初始化串口
  Serial.begin(115200);
  Serial.println(" ");
  Serial.println("ESP32-S3 UNO(N16R8)准备就绪!");
  Serial.println(" ");
  delay(1000);

  // 连接WiFi
  WiFi.begin(ssid, password);
  Serial.print("连接到WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print("...");
  }
  Serial.println(" 接通");

  // 打印WiFi信息
  Serial.print("IP地址: ");
  Serial.println(WiFi.localIP());
  Serial.print("信号强度 (RSSI): ");
  Serial.println(WiFi.RSSI());

  // 打印芯片信息
  esp_chip_info_t chip_info;
  esp_chip_info(&chip_info);
  Serial.printf("ESP32 芯片型号: %d\n", chip_info.model);
  Serial.printf("芯核数量: %d\n", chip_info.cores);
  Serial.printf("芯片修订版本: %d\n", chip_info.revision);

  // 打印CPU频率
  Serial.printf("CPU 频率: %d MHz\n", getCpuFrequencyMhz());

  // 打印内存信息
  Serial.printf("当前内存大小: %d bytes\n", esp_get_free_heap_size());
  Serial.printf("最小可用堆内存大小: %d bytes\n", esp_get_minimum_free_heap_size());

  // 打印芯片温度
  Serial.printf("芯片温度: %.2f°C\n", temperatureRead());

  // 获取并打印芯片MAC地址
  uint64_t chipid = ESP.getEfuseMac();
  Serial.printf("芯片MAC地址: %04X%08X\n", (uint16_t)(chipid >> 32), (uint32_t)chipid);

  // 打印芯片ID数字形式
  uint32_t chipId = 0;
  for (int i = 0; i < 17; i = i + 8) {
    chipId |= ((chipid >> (40 - i)) & 0xff) << i;
  }
  Serial.printf("芯片ID : %u\n", chipId);

  // 打印芯片架构信息
  Serial.printf("芯片架构: %s\n", CONFIG_IDF_TARGET);

  // 打印芯片复位原因
  esp_reset_reason_t reset_reason = esp_reset_reason();
  Serial.printf("复位原因: %d\n", reset_reason);

  // 打印WiFi模式
  wifi_mode_t mode;
  esp_wifi_get_mode(&mode);
  Serial.printf("WiFi模式: %d\n", mode);

  // 打印WiFi信道
  uint8_t primaryChan;
  wifi_second_chan_t secondChan;
  esp_wifi_get_channel(&primaryChan, &secondChan);
  Serial.printf("WiFi信道: %d\n", primaryChan);

  // 打印WiFi传输功率
  int8_t power;
  esp_wifi_get_max_tx_power(&power);
  Serial.printf("WiFi传输功率: %d dBm\n", power);
}

void loop() {
  // 在这里可以添加其他测试代码
  delay(10000); // 每10秒打印一次
}

代码解读:
1、初始化串口通信:

Serial.begin(115200);
Serial.println(" ");
Serial.println("ESP32-S3 UNO(N16R8)准备就绪!");
Serial.println(" ");
delay(1000);

Serial.begin(115200);:设置串口通信的波特率为115200。
Serial.println(" ");:打印一个空行。
Serial.println(“ESP32-S3 UNO(N16R8)准备就绪!”);:打印一条消息,表示开发板已准备就绪。
delay(1000);:延迟1秒,给系统一些时间进行初始化。

2、连接WiFi:

WiFi.begin(ssid, password);
Serial.print("连接到WiFi");
while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print("...");
}
Serial.println(" 接通");

WiFi.begin(ssid, password);:开始连接到指定的WiFi网络。
Serial.print(“连接到WiFi”);:打印连接WiFi的提示信息。
while (WiFi.status() != WL_CONNECTED) { … }:循环等待,直到WiFi连接成功。
Serial.println(" 接通");:打印连接成功的消息。

3、打印WiFi信息:

Serial.print("IP地址: ");
Serial.println(WiFi.localIP());
Serial.print("信号强度 (RSSI): ");
Serial.println(WiFi.RSSI());

Serial.print("IP地址: ");:打印“IP地址”提示。
Serial.println(WiFi.localIP());:打印设备的IP地址。
Serial.print("信号强度 (RSSI): ");:打印“信号强度”提示。
Serial.println(WiFi.RSSI());:打印WiFi信号强度(RSSI)。

4、打印芯片信息:

esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
Serial.printf("ESP32 芯片型号: %d\n", chip_info.model);
Serial.printf("芯核数量: %d\n", chip_info.cores);
Serial.printf("芯片修订版本: %d\n", chip_info.revision);

esp_chip_info_t chip_info;:定义一个结构体变量来存储芯片信息。
esp_chip_info(&chip_info);:获取芯片信息并存储到chip_info变量中。
Serial.printf(“ESP32 芯片型号: %d\n”, chip_info.model);:打印芯片型号。
Serial.printf(“芯核数量: %d\n”, chip_info.cores);:打印芯片的核心数量。
Serial.printf(“芯片修订版本: %d\n”, chip_info.revision);:打印芯片的修订版本。

5、打印CPU频率:

Serial.printf("CPU 频率: %d MHz\n", getCpuFrequencyMhz());

Serial.printf(“CPU 频率: %d MHz\n”, getCpuFrequencyMhz());:打印CPU的频率。

6、打印内存信息:

Serial.printf("当前内存大小: %d bytes\n", esp_get_free_heap_size());
Serial.printf("最小可用堆内存大小: %d bytes\n", esp_get_minimum_free_heap_size());

Serial.printf(“当前内存大小: %d bytes\n”, esp_get_free_heap_size());:打印当前可用的堆内存大小。
Serial.printf(“最小可用堆内存大小: %d bytes\n”, esp_get_minimum_free_heap_size());:打印自系统启动以来最小的可用堆内存大小。

7、打印芯片温度:

Serial.printf("芯片温度: %.2f°C\n", temperatureRead());

Serial.printf(“芯片温度: %.2f°C\n”, temperatureRead());:打印芯片的温度。

8、获取并打印芯片MAC地址:

uint64_t chipid = ESP.getEfuseMac();
Serial.printf("芯片MAC地址: %04X%08X\n", (uint16_t)(chipid >> 32), (uint32_t)chipid);

uint64_t chipid = ESP.getEfuseMac();:获取芯片的MAC地址。
Serial.printf(“芯片MAC地址: %04X%08X\n”, (uint16_t)(chipid >> 32), (uint32_t)chipid);:打印芯片的MAC地址。

9、打印芯片ID数字形式:

uint32_t chipId = 0;
for (int i = 0; i < 17; i = i + 8) {
  chipId |= ((chipid >> (40 - i)) & 0xff) << i;
}
Serial.printf("芯片ID : %u\n", chipId);

uint32_t chipId = 0;:初始化芯片ID变量。
for (int i = 0; i < 17; i = i + 8) { … }:通过循环计算芯片ID。
Serial.printf(“芯片ID : %u\n”, chipId);:打印芯片ID。

10、打印芯片架构信息:

Serial.printf("芯片架构: %s\n", CONFIG_IDF_TARGET);

Serial.printf(“芯片架构: %s\n”, CONFIG_IDF_TARGET);:打印芯片的架构信息。

11、打印芯片复位原因:

esp_reset_reason_t reset_reason = esp_reset_reason();
Serial.printf("复位原因: %d\n", reset_reason);

esp_reset_reason_t reset_reason = esp_reset_reason();:获取芯片的复位原因。
Serial.printf(“复位原因: %d\n”, reset_reason);:打印复位原因。

12、打印WiFi模式:

wifi_mode_t mode;
esp_wifi_get_mode(&mode);
Serial.printf("WiFi模式: %d\n", mode);

wifi_mode_t mode;:定义一个变量来存储WiFi模式。
esp_wifi_get_mode(&mode);:获取当前的WiFi模式。
Serial.printf(“WiFi模式: %d\n”, mode);:打印WiFi模式。

13、打印WiFi信道:

uint8_t primaryChan;
wifi_second_chan_t secondChan;
esp_wifi_get_channel(&primaryChan, &secondChan);
Serial.printf("WiFi信道: %d\n", primaryChan);

uint8_t primaryChan;:定义一个变量来存储主信道。
wifi_second_chan_t secondChan;:定义一个变量来存储次信道。
esp_wifi_get_channel(&primaryChan, &secondChan);:获取当前的WiFi信道。
Serial.printf(“WiFi信道: %d\n”, primaryChan);:打印WiFi信道。

14、打印WiFi传输功率:

int8_t power;
esp_wifi_get_max_tx_power(&power);
Serial.printf("WiFi传输功率: %d dBm\n", power);

int8_t power;:定义一个变量来存储传输功率。
esp_wifi_get_max_tx_power(&power);:获取最大传输功率。
Serial.printf(“WiFi传输功率: %d dBm\n”, power);:打印WiFi传输功率。

主要目的是初始化ESP32-S3 UNO开发板,连接到WiFi网络,并通过串口输出各种系统和网络参数。

实验串口返回情况

在这里插入图片描述

实验场景图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值