×

ESP32到ESP32通过Internet进行通信

消耗积分:2 | 格式:zip | 大小:0.00 MB | 2023-06-15

石玉兰

分享资料个

描述

[编辑:2021 年 7 月 9 日] 该项目已得到改进、修复并从 ArduinoIDE 移植到 platformio。以下评论中的问题应该已经修复。

通常连接的项目具有某种 Web 或移动 UI。如果您想通过另一件事来控制一件事,尤其是在低延迟和通过互联网上很难实现。这就是我创建这个项目的原因。这是一个 Arduino 框架模板,向您展示如何通过 Internet 连接两个基于 ESP32 的板,在Wi-Fi 连接断开或连接板之一临时断电的情况下,通过自动恢复功能最大限度地减少延迟很酷的是,如果 ESP32 板在同一个 Wi-Fi 网络中并且如果在不同的网络中,它就可以工作即使在不同的大陆。

 

我们在此处描述的模板可以作为您基于 ESP32 项目的各种酷接口的基础,例如:

  • 智能手套来控制你的遥控车
  • 远程控制您的智能家居设备
  • 到您家的安全和私人 Wi-Fi 密钥(当连接是 P2P 时,没有第 3 方可以访问加密密钥)
  • 一个非常快速的互联网按钮,您的东西

还有很多很多。

模板的默认功能是通过对面 ESP32 板的按钮对 LED 进行双向控制。您还可以将此模板视为摩尔斯电码 Internet 通信器:)。随意替换代码以通过您需要的任何输入/输出操作来控制按钮和 LED。

这个怎么运作

  • ESP32 既充当 HTTP 服务器(基于ESPAsyncWebServer库)又充当 HTTP 客户端(基于AsyncTCP
  • ESP32 自动检测同一 Husarnet VPN 网络中的所有对等点
  • 当按下按钮时,HTTP 请求被发送到所有其他对等点并打开 LED
  • 释放按钮时,向所有其他对等方发送 HTTP 请求并打开 LED

无线网络任务

如果当前连接断开,则写入 Wi-Fi 任务以自动切换到另一个 Wi-Fi 网络。在配置部分,您可以对多个 Wi-Fi 网络凭据进行硬编码 - 这是一种舒适的解决方案,因为如果您在不同位置打开电路板,您无需重新编程它们。

基本上,ESP32 设备之间的虚拟 LAN 网络是通过以下两条线创建的:

Husarnet.join(husarnetJoinCode, hostNameX);
Husarnet.start();

连接也是完全加密、安全和私密的。它不仅可以在 LAN 中工作,还可以通过 Internet 工作,因为连接由Husarnet提供支持- 一个开源 P2P VPN 客户端,它不仅可以在普通计算机上工作,而且可以在 ESP32 微控制器上工作。Husarnet 仅有助于通过 Internet 建立连接,并且其服务器不会转发用户数据。由于延迟较低。

HTTP 服务器

// A dummy web server (see index.html)
server.on("/", HTTP_GET, [](AsyncWebServerRequest* request) {
    request->send(200, "text/html", html);
});
// Send a GET request to /led//state/<0 or 1>
server.on("^\\/led\\/([0-9]+)\\/state\\/([0-9]+)$", HTTP_GET, 
[] (AsyncWebServerRequest *request) {
    String ledNumber = request->pathArg(0); 
    String state = request->pathArg(1);
    digitalWrite(LED_PIN, state.toInt());
    request->send(200, "text/plain", "LED: " + ledNumber + ", with state: " + state);
});

组装

  • 在引脚P0GND之间连接按钮
  • 在引脚27GND之间串联 LED 二极管和电阻
  • 将电池连接到基于 ESP32 的开发板。在项目中,我们使用带有内置 LDO 的 ESP32 devkit。查看基于 ESP32 的电路板的最大输入电压电平以避免损坏。

准备固件

从 GitHub 存储库克隆项目并按照以下步骤操作:

1.打开项目

  • 从安装了 Platformio 扩展的 Visual Studio Code 打开项目文件夹

2. 配置你的项目(ESP32-to-ESP32.ino 文件)

  • 获取您的 Husarnet VPN 加入代码(允许您将设备连接到同一个 VPN 网络)

您将在https://app.husarnet.com
找到您的加入代码-> 单击所需的网络
->
按钮->选项卡Add element
Join Code

  • 将您的 Husarnet 加入代码放在这里:
const char *husarnetJoinCode = "fc94:b01d:1803:8dd8:b293:5c7d:7639:932a/xxxxxxxxxxxxxxxxxxxxxx
  • 在此处添加您的 Wi-Fi 网络凭据:
// WiFi credentials
const char* wifiNetworks[][2] = {
  {"wifi-ssid-one", "wifi-pass-one"},
  {"wifi-ssid-two", "wifi-pass-two"},
}
  • 如果您的 ESP32 板是 ESP32 TTGO T Display,那么您可以通过第 14 行启用 LCD/TFT 显示
#define ENABLE_TFT 1  //tested on TTGO T Display
  • 将项目上传到您的ESP32 板(所有板的代码相同)
  • 为两个 ESP32 模块供电并等待大约 15 秒,让您的 ESP32 设备连接到 Wi-Fi 网络并建立 P2P 连接(在 LAN 和 Internet 中均有效)。

就这样!我希望你会喜欢。很高兴看到您的反馈。

干杯!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !