Arduino开发
本文介绍如何使用Arduino IDE开发ESP32S3物联网设备,连接SiliZap物联网平台,实现设备数据上报和远程控制。
一、Arduino平台介绍
1.1 Arduino概述
Arduino起源于2005年,由意大利Ivrea交互设计学院的Massimo Banzi和David Cuartielles等人创立,最初目的是为设计学生提供一个简单易用的工具,帮助他们快速实现交互项目原型。Arduino这个名称来源于意大利北部的一个酒吧,团队经常在那里讨论项目创意。
Arduino是一款开源电子原型平台,包括硬件(各种型号的Arduino兼容板)和软件(Arduino IDE)。它为创客、开发者和爱好者提供了简单易用的开发工具,使电子项目开发变得更加便捷。Arduino生态系统拥有丰富的库和社区支持,特别适合物联网设备开发。
经过多年发展,Arduino已成为全球最受欢迎的开源硬件平台之一,广泛应用于教育、原型设计、艺术创作、工业自动化和物联网等领域。
1.2 ESP32S3芯片特性
ESP32S3是乐鑫科技推出的高性能低功耗Wi-Fi和蓝牙SoC,具有以下特点:
强大的处理能力:
- 双核Xtensa® 32位LX7处理器,最高频率240 MHz
- 512 KB SRAM
- 支持最多16 MB外部Flash存储
- 硬件加密加速器
丰富的外设接口:
- 45个可编程GPIO引脚
- 4个SPI控制器
- 3个I²C控制器
- 3个UART控制器
- 2个12位ADC,20个通道
- USB OTG支持
网络连接:
- 2.4 GHz Wi-Fi 802.11 b/g/n
- 蓝牙5.0 (LE)
- 支持WPA3加密
二、Arduino环境搭建
2.1 开发环境简介
对于物联网开发来说,使用Arduino IDE开发ESP32S3是一种简单高效的方式。Arduino IDE提供了直观的界面和简化的C/C++语法,特别适合嵌入式开发。通过Arduino生态系统,开发者可以快速实现物联网设备的开发和部署。
2.2 安装开发工具
推荐使用Arduino IDE作为ESP32S3开发工具,Mac和Windows都可以使用:
- 访问Arduino官网下载并安装最新版本
- 打开Arduino IDE,点击"文件" > "首选项"
- 在"附加开发板管理器网址"中添加:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - 点击"工具" > "开发板" > "开发板管理器"
- 搜索"esp32"并安装"ESP32 by Espressif Systems"
- 选择"ESP32S3 Dev Module"作为开发板
- 选择正确的串口端口
- 点击"确定"完成设置
三、Arduino代码实现
可以从网上购买其他开发板进行测试,外加四路继电器,例如ESP32-S3-DevKitC-1:



3.1 环境准备
- ESP32S3开发板
- Arduino IDE开发工具
- USB数据线
- 4路继电器模块(对应的引脚分别为15、16、17、18)
- 在SiliZap平台上已创建产品和设备,获取MQTT连接信息
- 必要的库文件(PubSubClient、ArduinoJson、NTPClient)
3.2 代码实现
我们的项目使用一个主要文件:silizap.ino(主程序)。
# 克隆仓库
git clone https://gitee.com/SiliZap/SZ_ESP32_Arduino_PUBLIC.git3.2.1 主程序配置
首先配置主程序silizap.ino,包含连接信息和引脚定义:
// ---------- 必须修改7个全局定义数据 ----------
// (产品ID、用户ID、MQTT服务器地址、MQTT用户名、MQTT密码、WIFI账号、WIFI密码)
String product_id = "XXX"; // 1、产品ID(填入你的产品ID)
String user_id = "XXX"; // 2、用户ID(填入你的用户ID)
const char* mqtt_server = "XXX"; // 3、MQTT服务器地址(填入你的MQTT服务器)
const int mqtt_port = 1883;
const char* mqtt_username = "XXX"; // 4、MQTT用户名(填入你的MQTT用户名)
const char* mqtt_password = "XXX"; // 5、MQTT密码(填入你的MQTT密码)
const char* ssid = "XXX"; // 6、WIFI账号(填入你的WIFI账号)
const char* password = "XXX"; // 7、WIFI密码(填入你的WIFI密码)
// ---------- 定义4个引脚用于控制四个外设 ----------
const int LAMP_PIN = 18; // 台灯引脚
const int AC_PIN = 15; // 空调引脚
const int ALARM_PIN = 16; // 告警引脚
const int FAN_PIN = 17; // 风扇引脚3.2.2 主程序功能
silizap.ino文件实现MQTT通信和设备控制逻辑,主要功能:
- WiFi自动连接与重连
- MQTT协议通信与SiliZap平台交互
- 设备状态自动获取与上报(每10秒)
- 远程控制命令接收与执行
- 一键控制指令序列执行
- 设备状态实时监控与ACK回复
- 自动获取设备MAC地址并生成Client ID
- 时间同步功能(获取北京时间)
3.3 安装必要的库
在Arduino IDE中安装必要的库文件:
- 点击"工具" > "管理库..."
- 搜索"PubSubClient"并安装最新版本
- 搜索"ArduinoJson"并安装版本6.21.3或更高
- 搜索"NTPClient"并安装最新版本
- 安装完成后重启Arduino IDE

3.4 运行程序
- 在Arduino IDE中打开
silizap.ino文件 - 修改以下配置:
product_id:您的产品IDuser_id:您的用户IDmqtt_server:MQTT服务器地址mqtt_username:MQTT用户名mqtt_password:MQTT密码ssid:WiFi账号password:WiFi密码
- 点击"上传"按钮将代码烧录到ESP32S3开发板
- 打开串口监视器,观察输出信息
- 程序会自动获取设备MAC地址,构建Client ID,连接WiFi和MQTT服务器
- 程序每10秒上报一次设备状态数据
- 支持接收远程控制命令和一键控制指令

四、项目运行效果


