- 单片机概述
- Arduino Download
- CH340驱动
- 为ESP8266-NodeMCU搭建Arduino IDE开发环境
- ESP8266 Arduino Core
- esp8266/32进行socket双向通信
- arduino固件库socket客户端通信
- **esp8266接入米家,小爱同学控制_开源**
连接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;
}
}
}