Seite 1 von 1

Micropython: ESP32 ADC auslesen bei bestehender Netzwerkverbindung

Verfasst: Mittwoch 26. Juni 2024, 18:57
von hjliedtke
Moin,
ich habe ein Programm geschrieben, das verschiedene LEDs bei einem Solarregler überwacht und den Zustand auf einem Display ausgibt. Perspektivisch möchte ich das über eine kleine Website darstellen.
Das Programm funktioniert wie gewollt, aber wenn ich eine WLAN -Verbindung aufbaue und dann die ADCs auslesen will, bekomme ich eine Fehlermeldung:

ValueError: invalid atten

Zum Testen habe ich es etwas vereinfacht:

# Vorbereitung Wlan Verbindung und Test ADC

try:
import usocket as socket
except:
import socket
from time import sleep
import network

import esp
esp.osdebug(None)

import gc
gc.collect()

from machine import ADC, Pin

ssid = 'xxx'
password = 'yyy'

station = network.WLAN(network.STA_IF)

station.active(False)
station.active(True)
station.connect(ssid, password)

while station.isconnected() == False:
pass

print('Connection successful')
print(station.ifconfig())

FloatL = ADC(Pin(13)) in dieser Zeile entsteht der Fehler: ValueError: invalid atten
dabei ist es egal, welchen ADC-Pin ich auswähle
a = FloatL

Ohne die Zeilen zum Wlan funktioniert alles.
Deaktivieren die Zeilen zum Wlan-Aufbau die ADC-Pins?

Hans-Jürgen

Re: Micropython: ESP32 ADC auslesen bei bestehender Netzwerkverbindung

Verfasst: Mittwoch 26. Juni 2024, 19:28
von Dennis89
Hallo,

kannst du bitte immer die vollständige Fehlermeldung im Code-Tag mit kopieren?

Mit `atten` kann man die Referenzspannung angeben. Eventuell die mal mit angeben, es gibt folgende Möglichkeiten:
https://docs.micropython.org/en/latest/ ... f.html#ADC

Grüße
Dennis

Re: Micropython: ESP32 ADC auslesen bei bestehender Netzwerkverbindung

Verfasst: Donnerstag 27. Juni 2024, 13:36
von hjliedtke
Moin Dennis
das war die vollständige Fehlermeldung. Ich war auch etwas überrascht, weil sie unvollständig aussieht.
[code]
Traceback (most recent call last):
File "<stdin>", line 35, in <module>
ValueError: invalid atten
>>>
[/code]

Dein Link war aber trotzdem sehr hilfreich. Es hatte zwar nichts mit einer Spannungsangabe zu tun, aber weiter oben im Text stand, dass die ADC -Pins zu Blöcken zusammengefasst sind. "Meine" Pins gehören zu Block 2. Und dieser Block wird bei eingeschaltetem WiFi von WiFi mit benutzt, führt also beim Versuch einen aus der Gruppe als ADC zu verwenden zu einem Fehler. In meinem TestProgramm habe ich jetzt einen aus Block1 genommen und bekomme keinen Fehler.
Ich ändere in meinem Programm die Pinzuordnungen und dann läuft es.
Vielen Dank.
Hans-Jürgen

Re: Micropython: ESP32 ADC auslesen bei bestehender Netzwerkverbindung

Verfasst: Donnerstag 27. Juni 2024, 14:31
von DeaD_EyE
Genau das gleiche Problem hatte ich auch einmal. Dummerweise ist das erst aufgefallen, nachdem das PCB angefertigt worden ist.
Bei Mikrocontrollern sollte man immer genau darauf achten, welche Pins was können und in welchen Situationen diese Pins nicht mit Funktion XY genutzt werden können.

Bei ESP32 ist z.B. auch der erste SPI-Bus belegt. Dort müsste sich der externe SPIFLASH befinden. Falls man noch SPIRAM hat, fällt noch ein SPI-Bus weg, den man nicht nutzen kann oder sollte/kann.
Dann kann man bestimmte Pins nicht im deepsleep/lightsleep zum Aufwecken nutzen.