# arduino_get_started **Repository Path**: esp-friends/arduino_get_started ## Basic Information - **Project Name**: arduino_get_started - **Description**: 本仓库用来存放以下示例:基于 Arduino 平台来实现通过手机 APP ESP-RainMaker 来远程控制开关、显示实时的天气信息还有发送提醒。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 3 - **Created**: 2023-09-21 - **Last Updated**: 2025-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README | Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-S3 | | ----------------- | ----- | -------- | -------- | -------- | # Arduino 项目入门开发实战 这个项目旨在帮助初次接触 ESP 芯片的新手,使用 Arduino 平台进行快速入门。项目最终完成的功能是通过手机应用程序 ESP-RainMaker 来实现远程控制开关、显示实时的天气信息以及发送提醒。此项目还提供了详细的视频教程:https://www.bilibili.com/video/BV1HH4y1X7fb 本项目分成了以下三个示例,允许初学者逐步学习和理解不同的概念和技术。每个示例都可以专注于特定的功能或任务,降低学习和理解的难度。 1. **connect_wifi** 包含: - 简单的 Wi-Fi 连接 2. **get_weather** 包含: - 简单的 Wi-Fi 连接 - HTTP 请求 - JSON 格式的数据运用/解析 - GPIO 按键 3. **get_weather_RainMaker** 包含: - 简单的 Wi-Fi 连接 - HTTP 请求 - JSON 格式的数据运用/解析 - GPIO 按键/输出 - RainMaker 云端交互 # 示例使用说明 ## **准备硬件** 如果使用的是 **connect_wifi** 或者 **get_weather** 示例,需准备: - **ESP32-S3** 开发板,如 [ESP32-S3-DevKitC-1](https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-8715811636.11.3f9767d8cGTwF1&id=653155344338) - **USB 数据线** (A 转 Micro-B) - 电脑(Windows、Linux 或 macOS) 如果使用的是 **get_weather_RainMaker** 示例,需准备: - **ESP32-S3** 开发板,如 [ESP32-S3-DevKitC-1](https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-8715811636.11.3f9767d8cGTwF1&id=653155344338) - **USB 数据线** (A 转 Micro-B) - 电脑(Windows、Linux 或 macOS) - 杜邦线 - 两个 LED 灯,或者一个 RGB LED 模块 ## **搭建开发环境** ### **安装 Arduino IDE** - 如果你还没有安装 Arduino IDE,请先下载并安装它。 1. 从 [Arduino 官网](https://www.arduino.cc/en/software#future-version-of-the-arduino-ide) 获取安装包 2. 使用下载的 ``.exe``文件,一键安装 Arduino IDE ### **安装 ESP32 库** - 根据官网提供的链接导入 [arduino-esp32](https://github.com/espressif/arduino-esp32) 库 稳定版本链接 **(推荐)** : ``` https://espressif.github.io/arduino-esp32/package_esp32_index.json ``` 开发者版本链接: ``` https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json ``` 1. 打开 ``File —> Preferences`` 界面 2. 将官网提供的链接导入 ``Additional boards manager URLs`` 下,点击 ok 3. 打开 ``Tools -> Board -> Boards Manager`` 界面(快捷键 Ctrl + Shift + B) 4. 搜索 ``esp32``, 安装下方 **esp32** 库 5. 安装成功后会在 ``Tools —> Board —> esp32`` 界面增加 **ESP32** 系列开发板选项,在 ``File -> Examples`` 中可以看到乐鑫官方提供的示例代码。 ### **安装必要的库** - 安装 **ArduinoJson** 库,用于解析百度地图返回的 JSON 数据 - 打开 ``Tools —> Manage Libraries`` 界面,搜索 ``ArduinoJson``, 然后点击 ``Install`` ### **手机下载 ESP RainMaker APP** ## **获取百度地图 API 密钥** - 前往 [百度开发者平台](http://lbsyun.baidu.com/) 点击 **创建应用** 获取开发者密钥,并将其替换为 ``apiServer`` 变量中的密钥。 ## **配置项目** ### 使用 **connect_wifi** 或者 **get_weather** - 在代码中配置 ssid(Wi-Fi名称)、password(共享密钥)、和 apiServer(百度地图 API 服务地址) ``` const char* ssid = "ssid"; const char* password = "password"; const char* apiServer = "https://api.map.baidu.com/weather/v1/?district_id=区县的行政区划编码&data_type=all&ak=百度开发者密钥"; ``` ### 使用 **get_weather_RainMaker** - 在代码中配置 service name(广播名称)、pop(共享密钥)、和 apiServer(百度地图 API 服务地址) ``` const char* service_name = "ESP_Friend"; const char* pop = "1234567"; const char* apiServer = "https://api.map.baidu.com/weather/v1/?district_id=区县的行政区划编码&data_type=all&ak=百度开发者密钥"; ``` - 配置 LED 引脚: ``` static uint8_t LED_1 = 19; static uint8_t LED_2 = 20; ``` - 在 ``Tools`` -> ``Partition Scheme`` 中选择默认的 ``RainMaker`` 分区表。 - 将代码烧录到开发板后打开 RainMaker APP 使用 BLE 进行配网。 ## **编译和烧录** 使用 Arduino IDE 打开本项目,点击左上角 upload 图标完成一键编译和烧录。 # 示例输出 下面是使用 **connect_wifi** 示例在终端中打印出的输出: ``` ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x44c load:0x403c9700,len:0xbe4 load:0x403cc700,len:0x2a68 entry 0x403c98d4 开始连接 Wi-Fi ! Wi-Fi 连接中。。。 Wi-Fi 连接中。。。 Wi-Fi 连接成功! 192.168.1.100 ``` 下面是使用 **get_weather** 示例在终端中打印出的输出: ``` ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x44c load:0x403c9700,len:0xbe4 load:0x403cc700,len:0x2a68 entry 0x403c98d4 Connecting to WiFi! Wi-Fi 连接中。。。 Wi-Fi 连接中。。。 Wi-Fi 连接成功! 192.168.1.100 ------------天气信息---------------- 浦东新区 天气现象:暴雨 温度:30 相对湿度:66 风力:2级 ----------------------------------- ``` 下面是使用 **get_weather_RainMaker** 示例在终端中打印出的输出: ``` ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x44c load:0x403c9700,len:0xbe4 load:0x403cc700,len:0x2a68 entry 0x403c98d4 [ 9093][I][RMaker.cpp:17] event_handler(): RainMaker Initialised. [ 9094][I][WiFiProv.cpp:139] beginProvision(): Starting AP using BLE. service_name : ESP_Friend, pop : 1234567 [113614][I][RMaker.cpp:20] event_handler(): RainMaker Claim Started. [117926][I][RMaker.cpp:23] event_handler(): RainMaker Claim Successful [ 382][I][RMaker.cpp:17] event_handler(): RainMaker Initialised. [ 384][I][WiFiProv.cpp:155] beginProvision(): Already Provisioned [ 384][I][WiFiProv.cpp:159] beginProvision(): Attempting connect to AP: cc2.4 ------------天气信息---------------- 地区:浦东新区 天气:暴雨 温度:30 风力:2级 相对湿度:66 ----------------------------------- [ 55011][I][RMakerDevice.cpp:209] updateAndReportParam(): Device : 今日天气, Param Name : 地址, Val : 浦东新区 [ 55013][I][RMakerDevice.cpp:209] updateAndReportParam(): Device : 今日天气, Param Name : 天气, Val : 暴雨 [ 55023][I][RMakerDevice.cpp:209] updateAndReportParam(): Device : 今日天气, Param Name : 风力, Val : 2级 [ 55033][I][RMakerDevice.cpp:181] updateAndReportParam(): Device : 今日天气, Param Name : 湿度, Val : 66 [ 55045][I][RMakerDevice.cpp:195] updateAndReportParam(): Device : 今日天气, Param Name : Temperature, Val : 30.000000 [ 55053][I][RMakerDevice.cpp:209] updateAndReportParam(): Device : 星期, Param Name : 星期, Val : 星期一 ``` # 故障排除 程序上传失败 - 硬件连接不正确,检查 **COM 端口** 和 **USB 驱动** ESP RainMaker APP 闪退 - 检查 ESP RainMaker APP 是否有更新 # 技术支持和反馈 - 对于技术问题,请访问 [esp32.com](https://esp32.com/) 论坛 - 对于功能请求或错误报告,请创建 [GitHub issue](https://github.com/espressif/esp-idf/issues) 问题