esp8266单片机

cooolr 于 2022-03-28 发布

连接WiFi

#include "ESP8266WiFi.h"
#define SSID "ChinaNet-ztvq"
#define PSK "guqqmcwk"

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(1000);
  WiFi.begin(SSID, PSK);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.print("\nConnected to WiFi, IP:");
  Serial.println(WiFi.localIP());
  
}

void loop() {
  // put your main code here, to run repeatedly:
}

socket控制LED

#include "ESP8266WiFi.h"
#define SSID "ChinaNet-ztvq"
#define PSK "guqqmcwk"

WiFiServer wifiServer(1024);

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(115200);
  delay(1000);
  WiFi.begin(SSID, PSK);
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(900);
    digitalWrite(LED_BUILTIN, LOW);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi, IP: ");
  Serial.println(WiFi.localIP());
  wifiServer.begin();
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
  WiFiClient client = wifiServer.available();
  String msgs = "";
  int isconnected = 0;
  while (client.connected()) {
    if (isconnected == 0) {
      Serial.println("Client connected");
      digitalWrite(LED_BUILTIN, LOW);
      isconnected = 1;
    }
    while (client.available() > 0) {
      char c = client.read();
      msgs += c;
    }
    if (msgs.length() > 0) {
      digitalWrite(LED_BUILTIN, HIGH);
      Serial.println(msgs);
      client.print(msgs);
      msgs = "";
      delay(100);
      digitalWrite(LED_BUILTIN, LOW);
    }
  }
  if (isconnected == 1) {
    client.stop();
    Serial.println("Client disconnected");
    digitalWrite(LED_BUILTIN, HIGH);
    isconnected = 0;
  }
}

socket远程控制LED

import time
import socket
from _thread import start_new_thread

led_list = []

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.bind(('0.0.0.0', 10242))
sock.listen(1024)

def pull(conn):
    global led_list
    while True:
        if not led_list:
            continue
        try:
            conn.send(b'1')
            led_list.pop()
        except:
            break
    conn.close()

def push(conn):
    global led_list
    led_list.append(1)
    conn.close()

while True:
    conn, addr = sock.accept()
    header = conn.recv(1024).decode()
    print(time.ctime()[11:19], header)
    if header == 'pull':
        start_new_thread(pull, (conn,))
    else:
        start_new_thread(push, (conn,))

sock.close()
#include "ESP8266WiFi.h"
#define SSID "ChinaNet-ztvq"
#define PSK "guqqmcwk"

WiFiClient client;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(115200);
  delay(1000);
  WiFi.begin(SSID, PSK);
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(900);
    digitalWrite(LED_BUILTIN, LOW);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi, IP: ");
  Serial.println(WiFi.localIP());
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
  String msgs = "";
  client.connect("111.230.24.37", 10242);
  client.print("pull");
  while (client.connected()) {
    if (!client.connected()) {
      break;
    }
    while (client.available() > 0) {
      if (!client.connected()) {
        break;
      }
      digitalWrite(LED_BUILTIN, LOW);
      char c = client.read();
      delay(5);
      digitalWrite(LED_BUILTIN, HIGH);
    }
  }
}

键盘联动LED

import socket,time
import keyboard

def led():
    with socket.socket() as s:
        s.connect(("192.168.47.64", 1024))
        time.sleep(0.01)

def main():
    key_event = "1234567890-=qwertyuiop[]asdfghjkl;'zxcvbnm,./"
    for i in key_event:
        keyboard.add_hotkey(i, led)
    keyboard.add_hotkey('Space', led)
    keyboard.add_hotkey('Enter', led)
    keyboard.add_hotkey('Backspace', led)
    keyboard.add_hotkey('Left', led)
    keyboard.add_hotkey('Right', led)
    keyboard.add_hotkey('Up', led)
    keyboard.add_hotkey('Down', led)
    keyboard.add_hotkey('Tab', led)

main()
keyboard.wait("Esc")

手机联动LED

import socket,time
import pexpect

def led():
    with socket.socket() as s:
        s.connect(('192.168.47.64', 1024))
        time.sleep(0.01)

child = pexpect.spawn("rish -c 'getevent -l'")
while True:
    try:
        child.expect('BTN_TOUCH            DOWN')
    except Exception as e:
        pass
    else:
        led()

http服务

#include "ESP8266WiFi.h"
#define SSID "ChinaNet-ztvq"
#define PSK "guqqmcwk"

WiFiServer wifiServer(80);

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(115200);
  delay(1000);
  WiFi.begin(SSID, PSK);
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(900);
    digitalWrite(LED_BUILTIN, LOW);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi, IP: ");
  Serial.println(WiFi.localIP());
  wifiServer.begin();
  delay(100);
  digitalWrite(LED_BUILTIN, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
  WiFiClient client = wifiServer.available();
  String msgs = "";
  String body = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nHello World";
  while (client.connected()) {
    Serial.println("Client connected");
    digitalWrite(LED_BUILTIN, LOW);
    while (client.available() > 0) {
      char c = client.read();
      msgs += c;
    }
    if (msgs.length() > 0) {
     Serial.println(msgs);
     client.print(body);
     msgs = "";
     client.stop();
     Serial.println("Close Client");
     digitalWrite(LED_BUILTIN, HIGH);
     break;
    }
  }
}