当前位置: 首页 > news >正文

Android 与 ESP-01 WIFI模块通信

ESP-01 配置为 AP 模式

ESP-01 配置为 AP 模式后,Android 设备可以连接到 ESP-01 创建的 WiFi 热点,然后通过 TCP 进行通信。

ESP-01 端代码
#include <SoftwareSerial.h>SoftwareSerial espSerial(2, 3); // RX, TXvoid setup() {Serial.begin(9600);espSerial.begin(115200);// 配置 ESP-01 为 AP 模式sendATCommand("AT+CWMODE=2", 2000);sendATCommand("AT+CWSAP=\"ESP01\",\"12345678\",11,3", 2000); // 设置热点名称和密码sendATCommand("AT+CIPMUX=1", 2000); // 开启多连接模式sendATCommand("AT+CIPSERVER=1,8080", 2000); // 开启服务器,端口为 8080
}void loop() {if (espSerial.available()) {String data = espSerial.readString();Serial.println("Received from Android: " + data);// 可以在这里处理接收到的数据}
}void sendATCommand(String command, unsigned long timeout) {espSerial.println(command);unsigned long startTime = millis();while (millis() - startTime < timeout) {if (espSerial.available()) {String response = espSerial.readString();Serial.println("ESP Response: " + response);}}
}
Android 端代码

Android 端通过 TCP 客户端连接到 ESP-01 的服务器。

Android 端代码
package com.example.esp01communication;import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";private TextView textView;private Socket socket;private BufferedReader bufferedReader;private OutputStream outputStream;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.Show_Text);}public void connectToESP(View view) {new Thread(() -> {try {socket = new Socket("192.168.4.1", 8080); // ESP-01 的 IP 地址和端口bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));outputStream = socket.getOutputStream();runOnUiThread(() -> Toast.makeText(MainActivity.this, "Connected to ESP-01", Toast.LENGTH_SHORT).show());receiveData();} catch (Exception e) {Log.e(TAG, "Error connecting to ESP-01", e);runOnUiThread(() -> Toast.makeText(MainActivity.this, "Connection failed", Toast.LENGTH_SHORT).show());}}).start();}public void sendData(View view) {new Thread(() -> {try {outputStream.write("Hello from Android".getBytes());runOnUiThread(() -> Toast.makeText(MainActivity.this, "Data sent", Toast.LENGTH_SHORT).show());} catch (Exception e) {Log.e(TAG, "Error sending data", e);}}).start();}private void receiveData() {new Thread(() -> {try {String data;while ((data = bufferedReader.readLine()) != null) {runOnUiThread(() -> {textView.setText("Received: " + data);showAlertDialog(data);});}} catch (Exception e) {Log.e(TAG, "Error receiving data", e);}}).start();}private void showAlertDialog(String data) {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Data Received");builder.setMessage(data);builder.setPositiveButton("OK", (dialog, which) -> dialog.dismiss());AlertDialog dialog = builder.create();dialog.show();}@Overrideprotected void onDestroy() {super.onDestroy();try {if (socket != null) {socket.close();}} catch (Exception e) {Log.e(TAG, "Error closing socket", e);}}
}

说明

  1. ESP-01 配置

    • ESP-01 配置为 AP 模式,创建一个 WiFi 热点,Android 设备连接到该热点。

    • ESP-01 开启 TCP 服务器,监听端口 8080。

  2. Android 端

    • 使用 Socket 连接到 ESP-01 的 IP 地址和端口。

    • 通过 OutputStream 发送数据,通过 BufferedReader 接收数据

http://www.dtcms.com/a/251536.html

相关文章:

  • HTTP协议简易入门
  • Vue3相关知识3
  • JS当中怎么定义一个类
  • Linux信号机制:进程异步通信的秘密
  • Kafka 可靠性保障:消息确认与事务机制(一)
  • XR-RokidAR-UXR3.0-Draggable 脚本解析
  • HTML的最基础入门知识,从零开始逐步讲解,适合为后续爬虫技术打基础:
  • 苏州SAP代理商:哲讯科技助力企业数字化转型
  • [python] 堆
  • 贝塞尔曲线的公式推导贝塞尔曲线的公式推导,和 SVG 中 Path 的贝塞尔曲线指令的理解记忆
  • 体验AI智能投资!AI Hedge Fund了解一下
  • Langflow 构建多代理和 RAG 应用的可视化框架
  • STM32103CBT6显示ST7789通过SPI方式显示柬埔寨文
  • 【Dify系列】【Dify 核心功能】【应用类型】【二】【文本生成】
  • 解决虚拟环境中文绘图显示问题
  • RFC4291-IPv6地址架构
  • 计算机求职提前批/求职什么时候投递合适
  • 从0开始学习R语言--Day24--稀疏建模
  • TopNet:基于Transformer的高效点云几何压缩网络模型详解
  • 基于C#部署YoloV5目标检测模型
  • 【系统分析师】2010年真题:综合知识-答案及详解
  • 6月15日星期日早报简报微语报早读
  • Babylon引擎(三)
  • 基于Ultralytics的RT-DETR改进思考
  • BEV 感知算法评价指标简介
  • Appium框架下载时卡主的解决办法(ERR_TLS_CERT_ALTNAME_INVALID)
  • 基于根茎式思维深化后的提示词设计案例
  • 【精选】计算机毕业设计基于SpringBoot高校社团管理系统 社团信息维护 活动发布报名 成员审核与公告发布平台源码+论文+PPT+讲解
  • 智能土木通 - 土木工程专业知识问答系统01:项目简介
  • 4.es、kibana容器的下载安装