Forum: Mikrocontroller und Digitale Elektronik ESP8266: VCC und A0 messen?


von Christian (Gast)


Lesenswert?

Es gibt zwei Modi des ESP8266, um die Versorgungsspannung bzw. die 
Spannung am Eingang A0 zu messen. Der gewünschte Modus muss im Flash 
abgelegt abgelegt werden (siehe Sript unten) unten. D. h. eine Routine 
schaut vor einer Messung im Flash nach welcher Modus gewählt wurde.

Kann man das Programmieren des Flashs umgehen und entsprechende 
Funktionen direkt aufrufen und wie (Codeschnipsel)?
1
# Quelle: https://micropython.org
2
3
import esp
4
from flashbdev import bdev
5
import machine
6
7
ADC_MODE_VCC = 255          ## Modus VCC des ESP8266
8
ADC_MODE_ADC = 0            ## Modus Spannung am A0-Eingang 
9
10
def set_adc_mode(mode):
11
    sector_size = bdev.SEC_SIZE
12
    flash_size = esp.flash_size() # device dependent
13
    init_sector = int(flash_size / sector_size - 4)
14
    data = bytearray(esp.flash_read(init_sector * sector_size, sector_size))
15
    if data[107] == mode:
16
        return  # flash is already correct; nothing to do
17
    else:
18
        data[107] = mode  # re-write flash
19
        esp.flash_erase(init_sector)
20
        esp.flash_write(init_sector * sector_size, data)
21
        print("ADC mode changed in flash; restart to use it!")
22
        return
23
24
from machine import ADC
25
ADC(1).read()

von Stefan F. (Gast)


Lesenswert?

Was du suchst heißt vermutlich REPL.

Damit bekommst du die Möglichkeit, über den seriellen Port interaktiv 
Python Kommandos auszuführen, so wie auch auf dem PC.

https://docs.micropython.org/en/latest/esp8266/tutorial/repl.html

Der ADC ist allerdings recht ungenau, damit kann man den Batteriestatus 
sowieso nur grob abschätzen. Was hast du damit vor?

von Ingo (Gast)


Lesenswert?

Ich denke, das solltest du in einem ESP-Forum fragen bzw. im Github zum 
SDK. Hier kapiert es kaum einer (wie du gesehen hast).

von Christian (Gast)


Lesenswert?

Ingo schrieb:

> Ich denke, das solltest du in einem ESP-Forum fragen bzw. im Github zum
> SDK. Hier kapiert es kaum einer (wie du gesehen hast).

Immerhin hast Du es verstanden :)

von mIstA (Gast)


Lesenswert?

Christian schrieb:
> Kann man das Programmieren des Flashs umgehen

Klar doch, einfach VCC (bei Bedarf) extern auf A0 legen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.