从 ESP32 读取数据到 Python 的问题

Posted

技术标签:

【中文标题】从 ESP32 读取数据到 Python 的问题【英文标题】:Problem reading data from ESP32 to Python 【发布时间】:2021-06-04 16:59:30 【问题描述】:

我有一个问题,我正在尝试通过 ESP32 读取在 Arduino IDE 上制作的代码,但打印的数据显示为 b'' ESP32,它工作得很好。这是代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Mar  5 20:28:19 2021

@author: Andres
"""
import serial

arduino = serial.Serial('COM8', baudrate=115200, timeout=1.0)

    
while(True):
  line = arduino.readline().decode('utf-8')
  print(line)
  

这是ESP32代码(只是通过串口发送数字):

int16_t x=33;
void setup() 
  // put your setup code here, to run once:
Serial.begin(115200);



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

Serial.println(x);
delay(100);

x=x+1;
if(x==97)

x=32;



我必须说我已经尝试过波特率 9600 和 115200。 我在其他电脑上试过,改了端口的名字,还是不行。

【问题讨论】:

你已经三遍检查了它是COM8,串口波特率是9600? 这是PC端运行的代码?您还需要添加 ESP32 代码,否则我们无法帮助您。请查看如何创建Minimal, Reproducible Example @TimRoberts,是的,我已经尝试过不同的波特率,并在其他电脑上尝试过其他 COM。但它不起作用。 @Tarmo 是的,它在 PC 端运行,我在 ESP32 代码中尝试了不同的想法,如下所示:(我将使用 ESP32 代码编辑问题) 在arduino串口监视器上,你能看到日志吗?,试试Serial.println("hello string"); 【参考方案1】:

你需要在打开端口之前将RTSDTR设置为False

import serial

ser = serial.Serial()
ser.port = 'COM11'
ser.baudrate = 115200
ser.setDTR(False)
ser.setRTS(False)

ser.open()

while True:
    b = ser.readline()
    print(b)

【讨论】:

以上是关于从 ESP32 读取数据到 Python 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Arduino ESP32 Web服务器从microSD卡读取

如何将 MAX30100 脉冲传感器连接到 ESP32 的不同 i2c 引脚并读取数据?

ESP32通过程序从闪存文件系统(SPIFFS)读取信息

Arduino ESP8266/ESP32 多路DS18B20温度采样读取

利用中断在 ESP32 MicroPython 程序中读取AM2302

Arduino ESP32 ADC模拟量信号读取