2023
|
|
Messen, Steuern und Regeln mit ESP32 und Compact RN |
|
ESP32: USB-PC-Interface
Ergänzung zum Buch Messen, Steuern und Regeln mit Arduino und Compact
|
Das WiFi_Kit_32 von Heltec stammt aus den Anfangstagen des ESP32. Es starb seinerzeit an einem BrownOut und lag viele Jahre ungeliebt in der Kiste. Ende 2023 gelang die Reanimation des Boards mit ESP32 und OLED, Akku-Unterstützung, einer LED sowie zwei Tastern.
An dieser Stelle soll dieses Board als PC-Interface für Compact Red Needle dienen, um so zu zeigen, wie ein ESP32 als Mess-Interface einsetzbar ist. Als Besonderheit des ESP32 ist in diesem Zusammenhang der integrierte DAC, also ein Digital-Analog-Wandler zu nennen, der mit einer Auflösung von 8 Bit konstante Gleichspannungen an seinen zwei Ausgängen (GPIO 25/26) liefern kann.
Das Board kommuniziert via USB mit der seriellen Schnittstelle des PC. Auch andere ESP32 Boards mit einer entsprechenden Anzahl zugänglicher Anschlüsse sollte mit dieser Software funktionieren und insgesamt die folgenden Anschlüsse bedienen:
- 2 Pins Analogeingänge
- 2 x 8 Pins digitale Ein- und Ausgänge
- 2 Pins serielle Kommunikation
- 2 Pins Analogausgänge
Hardware Phantom-Interface und ESP32-Board
Die Mess-Software Compact Red Needle kann analoge und digitale Signale verarbeiten. Sie basiert auf einem Interface mit zwei analogen Eingängen, acht digitalen Ausgängen und acht digitalen Eingängen. Ein analoger Ausgang wird ebenfalls unterstützt.
Mit dem USB-Anschluss entsteht ein PC-Interface nach nebenstehender Skizze. Alle Ein- und Ausgänge stehen zur Verwendung bereit. Die digitalen und analogen Signale verwenden eine maximale Spannung von 3,3 Volt!
Software Arduino IDE
Mit der Arduino IDE kann ein Programmierer die IDE für den ESP32 einrichten und den sogenannten Sketch vom Arduino für diese Hardware anpassen. Diese Software wird dann einmalig zum ESP hochgeladen, um damit die PC-Software Compact Red Needle zu nutzen.
Mit dem ESP-Download-Tool lassen sich diese Schritte umgehen. Diese Software des ESP-Herstellers kann fertig programmierte Binärdateien, die als Download verfügbar sind, zum ESP32 übertragen. Dadurch entfällt Installation und Einrichtung der Arduino IDE und Programmierkenntnisse sind dadurch ebenfalls nicht erforderlich. Zum Download und Installation der fertigen Software (Sketch).
Der hier dargestellte Sketch für den ESP32 und dem Heltec Kit legt die Anschlüsse der Ein- und Ausgänge des Boards für Compact fest. Dabei finden hier die speziellen Eigenschaften des Kits Berücksichtigung, wie z. B. der Taster, der dem Digital-Eingang Bit 7 (ganz links) in Compact Red Needle entspricht. Ein Analogausgang ist mit der internen weißen LED verbunden. Alle Digitalausgänge liegen nebeneinander, rechts oberhalb der Anzeige. Die Anzeige selber wird hier nicht verwendet, um den Sketch kompatibel zu halten.
Software Arduino IDE Sketch im Quelltext
#define AIN1 60
#define AIN2 58
#define DIN 211
#define DOUT 81
#define PWM 64
#define AOUT 64
//---- GPIO ----
#define PWMPIN 25
#define DAC1 26
#define DAC2 25
#define LED 25 //!
// GPIO ESP32 ON HELTEC KIT 32
//DIGITAL OUT PINS 0 - 7 CLAB
byte Douts[] = {21,22,19,23, 18,5,17,16};
//DIGITAL IN PINS 0 - 7 CLAB
byte Dins[] = { 38, 39, 34, 35, 32,33,27,0}; //BUTTON = 0
//ANALOG IN PINS A - B CLAB
byte Ains[] = {A1,A0}; //37,36
//BitValues
byte Bits[] = {1,2,4,8,16,32,64,128};
void setup()
{ Serial.begin(9600); //Special CLAB
for(int i= 0;i<2;i++)pinMode(Ains [i],INPUT);
for(int i= 0;i<8;i++)pinMode(Dins [i],INPUT_PULLUP);
for(int i= 0;i<8;i++)pinMode(Douts[i],OUTPUT);
}
void loop()
{ int i, val, inbyte; byte b;
val = Serial.available(); //Was da?
if (val>0)
{inbyte=Serial.read(); //abholen
delay(5);
switch(inbyte)
{ case 13 : //CLAB ID nur ab Compact 1.75!
Serial.write(3);delay(2);break; //ID
case DIN : for(i=0,b=0;i<8;i++) //PINS to BYTE
b+= (digitalRead(Dins[i])==HIGH?Bits[i]:0);
Serial.write(b);break;
case AOUT: b=Serial.read(); //Ausgabebyte holen
dacWrite(DAC1, b); //esp32 DAC 1
dacWrite(DAC2, b); //esp32 DAC 2
break;
/*
case PWM: b=Serial.read(); //Ausgabebyte holen
analogWrite(PWMPIN,b);
break;
*/
case DOUT: b=Serial.read(); //Ausgabebyte holen
for(i=0;i<8;i++)
digitalWrite(Douts[i],b&Bits[i]?HIGH:LOW);
break;
case AIN1:
case 48: Serial.write(analogRead(Ains[0])>>4);break;
case AIN2:
case 49: Serial.write(analogRead(Ains[1])>>4);break;
default: break;
}
}
//delay(10);
}
Auskommentiert ist hier die PWM-Ausgabe, die quasi analoge Werte beim Arduino liefert. Beide echten Analogausgänge liefern dieselbe Spannung, wobei ein Ausgang auch die LED (GPIO 25) in ihrer Helligkeit steuert.
|
Anschlüsse und Pin-Festlegung
|
Ein Blick auf die Anschlussbelegungen der 36 Pins des Boards, die dem WiFi-Kit zugrunde liegen führt unter Berücksichtigung der dortigen Festlegungen zu einer möglichen Anschlussbelegung für das PC-Interface.
- Digitale Eingänge 0 bis 7 - GELB
- Digitale Ausgänge 0 bis 7 - BLAU
- Analoge Eingänge A und B - HELLROT
- Analoge Ausgänge 1 und 2 - GRÜN
Klick zur Vergrößerung.
Die Ausführungen in Messen, Steuern und Regeln mit Arduino und Compact funktionieren nun ebenfalls mit dieser Alternative.
|
Download und Installation der Software ESP Download Tool
|
Der Hersteller der ESP-Serie stellt ein eigenes Espressif Download Tool auf seiner Seite zur Verfügung. Unter dem Link Flash Download Tools lässt sich das Werkzeug herunterladen. Nach dem Entpacken des Zip-Archivs entsteht ein Verzeichnis flash_download_tool_3.9.5 mit als Inhalt unter anderem die ausführbare Datei flash_download_tool_3.9.5.exe. Nach dem Start erscheint z. B. die folgende Darstellung in der nur wenige, aber denoch wichtige Einstellungen nötig sind.
Zunächst muss die serielle Schnittstelle eingestellt werden (hier 38). Danach folgt die Einstellung der zu übertragenen Daten. Es handelt sich um die drei Binärdateien des fertig kompilierten Sketches in diesem Archiv (159 kB).
- heltec_clabDAC.ino.bin - Der Sketch für die Adresse 0x10000
- heltec_clabDAC.ino.bootloader.bin - Der Loader für die Adresse 0x1000
- heltec_clabDAC.ino.partitions.bin - Die Partitionierung für die Adresse 0x8000
Ist ein ESP32 an COM 38 angeschlossen, so ergibt sich das folgende Bild während des Hochladens der Dateien. Nach der Beendigung kann nach einem Reset des Boards ein ESP32 als PC-Interface unter Compact Red Needle verwendet werden.
Dazu klickt man einmal auf Seriell verbinden. Bei Erfolg meldet Compact ein bekanntes Interface an der Schnittstelle und die Hälfte der Digitaleingänge leuchtet. Die linke LED reagiert auf dem Taster des WiFi-Kits von Heltec. Ein weiterer Klick auf die analogen Anzeigen schaltet die 3,3 Volt-Skala an. Der analoge Aushang steuert per Schieber die weiße LED des Boards (Skala-Fehler am Analogausgang). Der Analogeingang A zeigt bei der Messung der Spannung einer AA-Batterie etwa 1,5 Volt an. Die Digitalausgänge sind zu Beginn alle ausgeschaltet, liegen also an Masse. Verbindet man eine LED mit D0 und D1, so kann diese Diode mit den Schaltern entsprechend gesteuert werden, je nach Richtung.
Compact Red Needle mit einem ESP32 als PC-Interface
|
Mit den Programmiermöglichkeiten von Compact Red Needle ist auch ein Blinken der LED am Analogausgang auf völlig andere Art möglich.
|
RP PicoW als Compact-Bluetooth-Interface
RP Pico als Compact-Interface
ESP32 als Compact-Bluetooth-Interface
ATtiny88 als Compact-Interface
ATtiny85 Assembler 8-Byte-Blink
ATtiny85 als Compact-Interface
ATtiny und ISP-Programmer
Mehr Software
|