手机或者电脑控制ESP32

自己建立一个web server,就是自己建立一个网站服务器,就会有一个ip地址,在手机或电脑和esp32连接同一个wifi的情况下,让手机或电脑登录那个ip地址的网站就可以给esp32发送相应信息,esp32收到不同的信息执行不同操作,本代码就是实现控制开灯与关灯。
在这里插入图片描述

from machine import Pin
import network
import socket


led = Pin(2,Pin.OUT)

ssid = 'Mi10s'             #wifi名称
password = 'jjh18776489677'         #wifi密码

def wifi_connect():
    wlan=network.WLAN(network.STA_IF)
    wlan.active(True)
    
    if not wlan.isconnected():
        print("connecting to network ......")
        wlan.connect(ssid,password)
        
        while not wlan.isconnected():
            led.value(1)
            time.sleep_ms(250)
            led.value(0)
            time.sleep_ms(250)
            
        led.value(0)
        return False
    else:
        led.value(0)
        print("network information:",wlan.ifconfig())
        return True
        
def web_page():
    
    html = """<html><head><meta name="viewport"
        content="width=device-width, initial-scale=1"></head>
          <body><h1>Ojay Server</h1><a
        href=\"?led=on\"><button>ON</button></a>&nbsp;
          <a
        href=\"?led=off\"><button>OFF</button></a></body><html>"""
    return html
  
  
if __name__=="__main__":
    if wifi_connect():
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind(('',80))
        s.listen(5)

        while True:
          client, addr = s.accept()
          print('Got a connection from %s' % str(addr))
          
          request = conn.recv(1024)
          request = str(request)
          print('Content = %s' % request)
          
          led_on = request.find('/?led=on')#接收到对象在第几个位置出现,返回出现的第几个位置
          led_off = request.find('/?led=off')
          
          if led_on == 6:#第六个位置接收到, href=\"?led=on\"(在第六个字符)
              print('LED ON')
              led.value(1)
          if led_off == 6:
              print('LED OFF')
              led.value(0)
              
          response = web_page()
          conn.send('HTTP/1.1 200 OK\n')
          conn.send('Content-Type: text/html\n')
          conn.send('Connection: close\n\n')
          conn.send('HTTP/1.1 200 OK\n')
          conn.sendall(response)
          conn.close()


if led_on == 6:##接收到的在第六个位置
在这里插入图片描述

在返回的IP地址,复制在网页中打开即可,如192.168.191.5
参考https://blog.youkuaiyun.com/weixin_45116099/article/details/119191907

### 使用 ESP32 通过蓝牙控制手机 #### 设备准备 为了使 ESP32 可以与手机建立蓝牙连接并进行数据交换,需确保已安装必要的库文件,并配置好硬件环境。ESP32 支持经典蓝牙(Bluetooth Classic)和低功耗蓝牙(BLE),这使得它非常适合用于无线通信项目[^1]。 #### 安装依赖库 在 Arduino IDE 中使用 ESP32 的蓝牙功能前,应先确认已经安装了 `esp32` 平台支持包以及 `BluetoothSerial.h` 库。可以通过 Arduino IDE 的板子管理器来完成这些操作。 #### 示例代码:ESP32 发送消息给 Android/iOS 手机应用 下面是一个简单的例子,展示了如何利用 ESP32 来发送字符串信息至配对成功的移动应用程序: ```cpp #include <BluetoothSerial.h> #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled! Please run `make menuconfig` to enable it. #endif BluetoothSerial SerialBT; void setup() { // 初始化串行监视器波特率为115200bps Serial.begin(115200); // 创建名为 "ESP32Test" 的蓝牙设备名称 SerialBT.begin("ESP32Test"); } void loop() { if (Serial.available()) { String data = Serial.readString(); // 将接收到的数据转发给相连的手机客户端 SerialBT.write(data.c_str()); } } ``` 此段程序会创建一个叫做 “ESP32Test”的可发现蓝牙服务,在成功连接之后可以从电脑或其他设备向其发送命令并通过蓝牙传递给绑定好的手机端软件处理[^2]。 对于接收来自手机的消息,则可以在上述基础上增加如下逻辑: ```cpp if(SerialBT.available()){ char command = SerialBT.read(); switch(command){ case 'A': /* 处理 A 命令 */ break; case 'B': /* 处理 B 命令 */ break; default : /* 默认行为*/ ; } } ``` 这段附加部分允许 ESP32 接收由手机发出的不同字符指令,并根据不同情况执行相应的动作。 #### 配置手机APP 要让手机能与 ESP32 成功交互,还需要有一个可以作为客户端的应用程序。市面上有许多开源或付费的选择可用于安卓平台上的蓝牙调试工具;而对于 iOS 用户来说,由于苹果公司严格的权限管控政策,可能需要寻找特定的支持 BLE 或者传统蓝牙模式的应用程序来进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值