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

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.xdnf.cn/news/14382.html

相关文章:

  • Tomcat 配置双击启动
  • 141. 环形链表
  • 概率期望DP
  • 【茶社茶楼专用软件】佳易王茶社茶楼计时计费会员管理软件介绍
  • 深度解析企业风控API技术实践:构建全方位企业风险画像系统
  • 【运维系列】【ubuntu22.04】安装Docker
  • 【性能优化】启用zram
  • 个人笔记-- TCL 替换
  • WebAssembly的本质与核心价值
  • 电磁场与电磁波篇---介质媒质导体
  • C++: 类 Class 的基础用法
  • 人工智能:神经网络原理、案例与 Python 代码
  • java 设计模式_行为型_19命令模式
  • 一个应用程序或移动网站项目提供最佳UI解决方案
  • python动态重叠爱心图
  • 【Linux】KVM简单介绍
  • WebSocket深度指南:从零基础到生产级应用
  • Linux下的MySQL从DDL到DQL的基础操作
  • Leetcode 刷题记录 15 —— 二分查找
  • Elastic Search 学习笔记
  • 强化学习-UCB示例
  • Python 模块
  • 鸿蒙Next仓颉语言开发实战教程:设置页面
  • 实验绘图参考-0615版(自用)
  • 力扣第 454 场周赛
  • 「AI产业」| 《德勤:AI案例精选》
  • NJet Portal 应用门户管理介绍
  • Django构建简易视频编辑管理系统
  • Hadoop HDFS存储机制与块大小选择权衡
  • 如何面试网络信息安全岗位答疑(一)NISP管理中心