littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于Arduino框架的ESP32芯片WiFi启动系统

项目简介

本项目围绕ESP32芯片的WiFi模块启动展开,借助ESP32芯片与Arduino连接,利用其WiFi功能实现网络通信。旨在构建一个可通过WiFi连入互联网并进行数据交互的系统,采用Adafruit的Airlift Breakout板简化电路设计与芯片编程。该项目源于毕业设计,避免了部分软件开发与数据传输节点配置工作,电路设计含多个功能模块,实用性、拓展性和复用性出色,适合嵌入式系统开发及对ESP32系统感兴趣的人群。

项目的主要特性和功能

特性

  • 兼容Arduino框架,开发简洁通用。
  • 可通过WiFi连入互联网,实现歌曲在线播放、时间更新、天气预报等功能。
  • 模块能通过标准电路板制作技术完成。
  • 具备独立组网与扩展能力。

功能

  • 通过WiFi连接互联网获取在线资源。
  • 实时更新本地时间和天气。
  • 实现对系统的在线控制和更新。

系统特点

  • 应用Espressif公司最新ESP芯片特性。
  • 可在公开软件平台构建自主应用系统,有效进行系统集成和功能升级。
  • 提供软件实现方法、硬件电路设计及详细安装使用步骤,便于二次开发。

安装使用步骤(假设用户已下载了项目的源代码文件)

步骤一:环境准备

  1. 安装Arduino IDE最新版,并完成相应扩展插件的安装与配置。
  2. 安装ESP核心库。
  3. 安装Python环境及pip包管理器。
  4. 确保计算机正确连接开发板(如Arduino),在Arduino IDE中选择适配的板卡型号。

步骤二:下载并安装Arduino IDE

Arduino官网下载最新版本的Arduino IDE,启动安装程序并按提示完成安装。

步骤三:安装适当的开发板核心

按照Adafruit Feather M4 Express设置指南后续页面的步骤,在Arduino IDE的开发板管理器中安装SAMD开发板。

步骤四:对开发板进行编程

将开发板连接到计算机,在Arduino IDE的“工具 > 端口”菜单中选择对应的端口。复制并粘贴以下代码到Arduino IDE中,然后上传: ```cpp // SPDX-FileCopyrightText: 2018 Arduino SA // // SPDX-License-Identifier: LGPL-2.1-or-later /* SerialNINAPassthrough - Use esptool to flash the ESP32 module For use with PyPortal, Metro M4 WiFi...

Copyright (c) 2018 Arduino SA. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */

include

unsigned long baud = 115200;

#if defined(ADAFRUIT_FEATHER_M4_EXPRESS) || \ defined(ADAFRUIT_FEATHER_M0_EXPRESS) || \ defined(ARDUINO_AVR_FEATHER32U4) || \ defined(ARDUINO_NRF52840_FEATHER) || \ defined(ADAFRUIT_ITSYBITSY_M0) || \ defined(ADAFRUIT_ITSYBITSY_M4_EXPRESS) || \ defined(ARDUINO_AVR_ITSYBITSY32U4_3V) || \ defined(ARDUINO_NRF52_ITSYBITSY) || \ defined(ARDUINO_PYGAMER_M4_EXPRESS) // Configure the pins used for the ESP32 connection #define SerialESP32 Serial1 #define SPIWIFI SPI // The SPI port #define SPIWIFI_SS 13 // Chip select pin #define ESP32_RESETN 12 // Reset pin #define SPIWIFI_ACK 11 // a.k.a BUSY or READY pin #define ESP32_GPIO0 10 #define NEOPIXEL_PIN 8

elif defined(ARDUINO_AVR_FEATHER328P)

#define SerialESP32 Serial1 #define SPIWIFI SPI // The SPI port #define SPIWIFI_SS 4 // Chip select pin #define ESP32_RESETN 3 // Reset pin #define SPIWIFI_ACK 2 // a.k.a BUSY or READY pin #define ESP32_GPIO0 -1 #define NEOPIXEL_PIN 8

elif defined(TEENSYDUINO)

#define SerialESP32 Serial1 #define SPIWIFI SPI // The SPI port #define SPIWIFI_SS 5 // Chip select pin #define ESP32_RESETN 6 // Reset pin #define SPIWIFI_ACK 9 // a.k.a BUSY or READY pin #define ESP32_GPIO0 -1 #define NEOPIXEL_PIN 8

elif defined(ARDUINO_NRF52832_FEATHER )

#define SerialESP32 Serial1 #define SPIWIFI SPI // The SPI port #define SPIWIFI_SS 16 // Chip select pin #define ESP32_RESETN 15 // Reset pin #define SPIWIFI_ACK 7 // a.k.a BUSY or READY pin #define ESP32_GPIO0 -1 #define NEOPIXEL_PIN 8

elif!defined(SPIWIFI_SS) // if the wifi definition isnt in the board variant

// Don't change the names of these #define's! they match the variant ones #define SerialESP32 Serial1 #define SPIWIFI SPI #define SPIWIFI_SS -1 // Chip select pin #define SPIWIFI_ACK -1 // a.k.a BUSY or READY pin #define ESP32_RESETN 12 // Reset pin #define ESP32_GPIO0 10 // Not connected #define NEOPIXEL_PIN 8

endif

if defined(ADAFRUIT_PYPORTAL)

#define PIN_NEOPIXEL 2

elif defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE)

#define PIN_NEOPIXEL 40

endif

Adafruit_NeoPixel pixel = Adafruit_NeoPixel(1, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);

void setup() { Serial.begin(baud); pixel.begin(); pixel.setPixelColor(0, 10, 10, 10); pixel.show();

while (!Serial); pixel.setPixelColor(0, 50, 50, 50); pixel.show();

delay(100); SerialESP32.begin(baud);

pinMode(SPIWIFI_SS, OUTPUT); pinMode(ESP32_GPIO0, OUTPUT); pinMode(ESP32_RESETN, OUTPUT);

// manually put the ESP32 in upload mode digitalWrite(ESP32_GPIO0, LOW);

digitalWrite(ESP32_RESETN, LOW); delay(100); digitalWrite(ESP32_RESETN, HIGH); pixel.setPixelColor(0, 20, 20, 0); pixel.show(); delay(100); }

void loop() { while (Serial.available()) { pixel.setPixelColor(0, 10, 0, 0); pixel.show(); SerialESP32.write(Serial.read()); }

while (SerialESP32.available()) { pixel.setPixelColor(0, 0, 0, 10); pixel.show(); Serial.write(SerialESP32.read()); } } ```

步骤五:进行电气连接

按照以下方式进行电气连接: - 开发板3V连接到ESP32的VIN。 - 开发板GND连接到ESP32的GND。 - 开发板引脚12连接到ESP32的Reset。 - 开发板引脚10连接到ESP32的GPIO0。 - 开发板TX连接到ESP32的RXI。 - 开发板RX连接到ESP32的TXO。

步骤六:下载NINA固件

步骤七:安装esptool.py

打开终端,运行以下命令安装esptool.py: sh pip install esptool

步骤八:使用esptool.py刷写固件

在终端中导航到保存NINA固件文件的目录,运行以下命令刷写固件,将COM11替换为你的开发板端口(可在设备管理器中查找),将NINA_W102-1.7.4替换为你下载的固件版本号: sh esptool.py --port COM11 --before no_reset --baud 115200 write_flash 0 NINA_W102-1.7.4.bin 若命令成功运行,则表示已成功刷写ESP32芯片。若遇到问题,可参考此网站进行故障排除。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】