零基础|宝塔面板|frp内网穿透|esp32cam远程访问|微信小程序

1.准备好阿里云服务器和宝塔面板

2.安装frp服务端

3.测试(密码账号在详情里面)

4.配置客户端

复制代码
 #一、没有域名情况下
[common]
server_addr = #公网ip地址,vps
server_port = 7000 服务的bind_port
token = 12121212 
[httpname]
type = tcp # 没有域名情况下使用 tcp
local_ip = 127.0.0.1 
local_port = 8000 #本地服务端口
remote_port = 8080 # 远程访问端口,x.x.x.x:8080 x.x.x.x(vps等公网ip)

 #2、有域名配置
[httpname]
type = http
local_port = 80
local_ip = 127.0.0.1
custom_domains = www.demo1.com
[httpsname]
type = https
local_port = 443
local_ip = 127.0.0.1
custom_domains = www.demo2.com

5.打开终端

输入下面命令就可以

复制代码
frpc.exe -c frpc.toml

6.成功

7.小程序

(1)ESP8266WIFI模块

复制代码
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>

// 1. WiFi 热点信息(连接你的手机热点或路由器)
const char* ssid = "HONOR 70";         // 替换为你的热点名称
const char* password = "12345600";     // 替换为你的热点密码

// 2. 服务器信息(Python TCP 服务器的局域网IP)
const char* server_ip = "192.168.206.77";  // 替换为你电脑在该热点下的局域网IP,注意会变
const uint16_t server_port = 9000;

WiFiClient client;

void setup() {
  Serial.begin(115200);  // 初始化串口(用于调试或连接 STM32)


  // 连接 WiFi
  WiFi.begin(ssid, password);
  Serial.print("连接WiFi中");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("WiFi已连接,IP地址: ");
  Serial.println(WiFi.localIP());

  // 连接 TCP 服务器
  Serial.print("连接服务器中");
  while (!client.connect(server_ip, server_port)) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("已连接服务器");
}

void loop() {
  // 1. 检查 TCP 是否断开,如果断开就重连
  if (!client.connected()) {
    Serial.println("[ESP8266] TCP断开,尝试重新连接...");
    while (!client.connect(server_ip, server_port)) {
      Serial.print(".");
      delay(1000);
    }
    Serial.println();
    Serial.println("[ESP8266] 已重新连接服务器");
  }

  // 2. 正常接收消息
  if (client.available()) {
    String msg = client.readStringUntil('\n');
    Serial.println("[ESP8266] 收到: " + msg);
    // TODO: 转发给 STM32,如果你有这部分串口逻辑
    Serial.println("[ESP8266] 转发给 STM32");
    Serial.print(msg);
    Serial.print('\n');
    Serial.println("[ESP8266] 成功发送给 STM32");


  }

  delay(10);  // 小延时避免占满 CPU
}