项目简介
本项目围绕ESP32芯片的WiFi模块启动展开,借助ESP32芯片与Arduino连接,利用其WiFi功能实现网络通信。旨在构建一个可通过WiFi连入互联网并进行数据交互的系统,采用Adafruit的Airlift Breakout板简化电路设计与芯片编程。该项目源于毕业设计,避免了部分软件开发与数据传输节点配置工作,电路设计含多个功能模块,实用性、拓展性和复用性出色,适合嵌入式系统开发及对ESP32系统感兴趣的人群。
项目的主要特性和功能
特性
- 兼容Arduino框架,开发简洁通用。
- 可通过WiFi连入互联网,实现歌曲在线播放、时间更新、天气预报等功能。
- 模块能通过标准电路板制作技术完成。
- 具备独立组网与扩展能力。
功能
- 通过WiFi连接互联网获取在线资源。
- 实时更新本地时间和天气。
- 实现对系统的在线控制和更新。
系统特点
- 应用Espressif公司最新ESP芯片特性。
- 可在公开软件平台构建自主应用系统,有效进行系统集成和功能升级。
- 提供软件实现方法、硬件电路设计及详细安装使用步骤,便于二次开发。
安装使用步骤(假设用户已下载了项目的源代码文件)
步骤一:环境准备
- 安装Arduino IDE最新版,并完成相应扩展插件的安装与配置。
- 安装ESP核心库。
- 安装Python环境及pip包管理器。
- 确保计算机正确连接开发板(如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】