ESP32 падает с Micropython с простой тестовой программой - PullRequest
0 голосов
/ 10 октября 2019

Вот простая программа на Micropython, которую я написал для тестирования моей платы ESP32 Vroom32. Вылетает через несколько минут. Я получил около 38000 отсчетов.

from time import sleep

n = 0
while 1:
    print(n)
    n += 1

    sleep(0.02)

Вот код, который я использую для его чтения.

import serial, serial.tools.list_ports
import time

def find_port():  #Finds which port the arduino is plugged into
    ports = list(serial.tools.list_ports.comports())
    for p in ports:
        if "EA60" in p[2]:
            return(p[0])
usbport = find_port()
ser = serial.Serial(usbport, 115200) #setup serial
while 1:      
    try:  
        data = ser.readline()
        ser.flushInput()
        data = data.strip().decode()
        print(data) 
        time.sleep(0.02)
    except Exception as e:
        print(e)

Я пробовал разные вещи, такие как мигание светодиода и замедление времени до 0,2 секунды. ,После выполнения этих двух вещей он работал около 8 часов, а затем потерпел крах. Когда это разбилось. Мне пришлось отключить устройство, подключить его снова и перезапустить программу python на компьютере, прежде чем она снова запустится. Простая перезагрузка устройства не сработала. Кроме того, после добавления кода мигания светодиода (не включенного в приведенный выше пример) светодиод продолжал мигать все время. Казалось, что он все еще работает, но не общается.

Новый код микропифона, который мигает:

from time import sleep
from machine import Pin
n = 0
led = Pin(2, Pin.OUT)
while 1:        
    print(n)        
    n += 1
    led.value(not led.value())
    sleep(0.2)

Обновление:

Вчера вечером я добавил код, чтобы попытаться отловить ошибку. Плата все еще не работала, и файл ошибок не был создан.

New main.py
from time import sleep
from machine import Pin
n = 0
led = Pin(2, Pin.OUT)
while 1:
    try:
        led.value(not led.value())
        n += 1
        print(n)
        sleep(0.2)
    except Exception as e:
        print("ESP32: ", e)

Новый настольный скрипт:

import serial, serial.tools.list_ports
import time

def find_port():  #Finds which port the arduino is plugged into
    ports = list(serial.tools.list_ports.comports())
    for p in ports:
        if "EA60" in p[2]:
            return(p[0])
usbport = find_port()
ser = serial.Serial(usbport, 115200, timeout=10) #setup serial
while 1:      
    try:  
        data = ser.readline()
        ser.flushInput()
        data = data.strip().decode()
        print(data) 
        if "ESP32" in data:
            with open("errors.txt", "a") as f:
                err = data + "\n"
                f.write(err)
        time.sleep(0.2)
    except Exception as e:
        print(e)
...