树莓派和esp8266之间使用tcp协议通信
Posted 高颜值的殺生丸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派和esp8266之间使用tcp协议通信相关的知识,希望对你有一定的参考价值。
树莓派代码:
from flask import Flask, render_template import socket import threading app = Flask(__name__) adc_value = 0 # 接收tcp数据 def receive_tcp_data(): global adc_value # 从ESP8266接收ADC数据 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((\'0.0.0.0\', 5000)) sock.listen(1) while True: conn, addr = sock.accept() data = conn.recv(1024) adc_value = 70 - int(data.decode()) # print(conn,addr,adc_value) conn.close() @app.route(\'/\') def index(): global adc_value # 在Web页面上显示ADC数据 return render_template(\'index2.html\', adc_data=adc_value) # Web服务线程 def start_web_server(): app.run(host=\'0.0.0.0\', port=8888) if __name__ == \'__main__\': # 启动接收tcp数据的线程 udp_thread = threading.Thread(target=receive_tcp_data) udp_thread.daemon = True udp_thread.start() # 启动接收tcp数据的线程 flask_thread = threading.Thread(target=start_web_server) flask_thread.daemon = True flask_thread.start() while True: pass
index2.html
<!DOCTYPE html> <html> <head> <title>ADC Data Display</title> </head> <body> <h1>ADC Data: adc_data </h1> </body> </html>
esp8266 使用arduino
#include <ESP8266WiFi.h> #include <WiFiClient.h> const char* ssid = "litianmenzhenbu"; const char* password = "LT12345678"; const char* serverIP = "192.168.0.110"; // 树莓派的IP地址 const int serverPort = 5000; // 树莓派上Flask服务的端口号 void setup() Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(1000); Serial.println("Connecting to WiFi..."); Serial.println("Connected to WiFi"); // 连接到树莓派上的Flask服务 WiFiClient client; if (client.connect(serverIP, serverPort)) Serial.println("Connected to server"); void loop() // 模拟读取ADC值,此处可替换为实际读取ADC的代码 int adcValue = analogRead(A0); // 发送ADC值到树莓派上的Flask服务 WiFiClient client; if (client.connect(serverIP, serverPort)) String data = String(adcValue); client.print(data); client.flush(); client.stop(); delay(100);
多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
ESP32/ESP8266 WebSocket Server:控制引脚输出
ESP32/ESP8266 WebSocket Server:控制引脚输出
在本教程中,您将学习如何使用WebSocket通信协议构建一个使用ESP8266的web服务器。作为一个示例,如何构建一个web页面来远程控制ESP8266引脚输出。在web页面上显示输出状态,并在所有客户端中自动更新。
引入WebSocket
WebSocket是客户端和服务器之间的持久连接,它允许双方使用TCP连接进行双向通信。这意味着您可以在任何给定的时间将数据从客户机发送到服务器,并从服务器发送到客户机。
客户端通过一个称为WebSocket握手的过程与服务器建立WebSocket连接。握手以HTTP请求/响应开始,允许服务器在同一个端口上处理HTTP连接和WebSocket连接。一旦连接建立,客户端和服务器就可以以全双工模式发送WebSocket数据。
使用WebSockets协议,服务器(ESP8266板)可以向客户端或所有客户端发送信息,而无需请求。这也允许我们在发生更改时向web浏览器发送信息。<
以上是关于树莓派和esp8266之间使用tcp协议通信的主要内容,如果未能解决你的问题,请参考以下文章
基于MicroPython结合ESP8266模块实现TCP通信(AT指令版)
ESP8266 + STC15基于AT指令通过TCP通讯协议获取时间