2024
HOME

Messen, Steuern und Regeln mit Arduino und Compact RN
ESP32-S2 als USB-Interface am PC
Ergänzung zum Buch Messen, Steuern und Regeln mit Arduino und Compact

RP PicoW mir espBASICEine preiswerte Variante des ESP32 nennt sich ESP32-S2 und kommt ohne Bluetooth. Alle anderen wesentlichen Eigenschaften sind jedoch an Bord, insbesondere zwei DAC, also Digital-Analog-Converter, um echte steuerbare Gleichspannungen zu erhalten. Um dieses Board als Interface unter Compact Red Needle zu verwenden sind nur sehr wenige Schritte erforderlich.

Packt man ein fabrikneues Board eines ESP32-S2 mini aus und verbindet es über USB mit dem PC, so passiert vermutlich überhaupt nichts und der Gedanke kommt auf, dass man ein defektes Board erhalten hat.


USB-Verhalten ESP32-S2 mini


Das Board verfügt über zwei Taster und einen USB-C-Anschluss, aber keinen USB-Serial-Baustein. Ein S2 erzeugt eine solche serielle Verbindung selber mit den eingebauten Möglichkeiten. Der RST-Taster startet den Baustein, wie zu erwarten, neu. Um in den Flash-modus per USB-Serial zu gelangen, muss, während der Taster 0 gedrückt ist, kurz der RST-Taster betätig werden. Ein PC meldet dann akustisch ein USB-Serial-Gerät mit entsprechender COM-Schnittstelle. Nun ist ein ESP32-S2 bereit zum Upload neuer Software.

Nach dem Upload bzw. dem Flashvorgang muss einmal die RST-Taste betätigt werden, um die neue Software zu starten und den Upload-Modus zu verlassen. Falls die neue Software serielle Ausgaben tätigt, meldet ein PC nach dem akustischen Abmelden ein neues Anmelden einer seriellen Schnittstelle. Ansonsten entfällt die serielle Schnittstelle des ESP32-S2 über USB.


USB-Interface ESP32-S2 - Ausschnitt Kapitel 3.4.1


Ein Computer-Interface war lange Zeit ein Stück Hardware, welche über eine serielle Schnittstelle mit dem PC verbunden war und den Anwender in die Lage versetzte ohne Mikrocontroller-Kenntnisse Messungen und Steuerungen vorzunehmen. Lehrmittelfirmen, wie Leybold und modul-bus, vertrieben solche Interfaces als Cassy und CompuLab. Entsprechen-de Software war untere dem Namen CassyLab und Compact verfügbar. Die aktuelle Version von Compact nennt sich Edition Red Needle und ist für alle gängigen Desktop-Betriebssysteme frei erhältlich.

Prinzip Compact

Compact benutzt aktuelle Mikrocontroller als sogenanntes PC-Interface zum Messen und Steuern. Dabei besteht eine ständige Verbindung zwischen Gerät und PC. Die Verbindung erfolgt über USB-Kabel oder drahtlos über Bluetooth. Alle Aktionen gehen vom Computer und Compact aus. Das PC-Interface hat dabei die folgenden Eigenschaften, die vom jeweiligen Mikrocontroller emuliert werden.

  • 2 Pins Analogeingänge
  • 8 Digitale Eingänge
  • 8 Digitale Ausgänge
  • 2 Analogausgänge

Eine reale und praktische Umsetzung kann unterschiedlich ausfallen, je nach Preis und Bedarf, beginnend bei €4 für einen Pi Pico mit RP2040 ohne WiFi. Compact versucht durch bewusst begrenzt erscheinende Möglichkeiten die Konzentration auf das Wesentliche zu erhöhen. Als Beispiel sei die relativ niedrige 8 Bit Auflösung der Analog-Eingänge zu nennen, die dazu führt, dass Zahlen meist nur im Bereich von 0 bis 255 vorkommen, welche genau der Größe eines Bytes entsprechen, die Programmiersprache kennt somit auch nur einen Variablenspeicher für eine Ganzzahl.

Compact bietet zunächst eine Übersicht der Ein- und Ausgänge dieses Interfaces mit einigen angehängten Werkzeugen wie Zeitschreiber, XY-Schreiber, Logik-Schreiber und eine einfache Programmiermöglichkeit. Bei erkannter Hardware schaltet die Nadel automatisch um auf Rot.


Firmware Upload im Browser


Inzwischen ist es möglich ESP-Bausteine per WEB-Interface zu flashen. Flashen ist ein Upload von fertig kompilierter Software für den ESP, ist also quasi vergleichbar mit der Installation einer ausführbaren Datei am PC.


Web-Interface des ESPTools erkennt auch eine ESP32-S2

Folgende Schritte führen zum Ziel:

Bei Betätigung des Tasters RST bei gedrücktem Taster 0 meldet der USB-Klang eine neue Schnittstelle (hier COM30)

  • Mit Verbinden bzw. Connect erfolgen Ausgaben mit Bausteininformationen.
  • Vor dem Upload müssen hier drei bin-Dateien mit ihrem Ziel-Offset festgelegt werden. Der Offset ist per Tastatur zu ändern, die Datei-Auswahl aus dem entpackten Zip der Firmware für den ESP32-S2 und Compact Red Needle erfolgt durch Klick auf Choose a file:
  1. 0x10000 für das Hauptprogramm ESP32-S2-clabDAC.ino.esp32s2-0x10000.bin
  2. 0x1000 für den Bootloader ESP32-S2 bootloader 0x1000.bin
  3. 0x8000 für die Patitionstabelle ESP32-S2 partitions 0x8000.bin ESP32-S2 partitions 0x8000.bin
  • Mit Program erfolgt der einmalige Upload der Firmware für Compact Red Needle

Nach erfolgreichem Upload muss einmalig der RST-Taster gedrückt werden. USB meldet ab und sofort wieder an, das die Firmware ja USB-Serial verwendet. Diese Schnittstelle erscheint nun in Compact Red Needle und steht zur Verbindung des neuen Interfaces bereit.


GPIO-Belegung des ESP32-S2 als CompuLab-Interface

Die Blaue LED ist Digital-Ausgang 0 und der Taster 0 ist der linke Digitaleingang. Die Anschlüsse wurden im Sketch der Firmware festgelegt. Ein Klick auf die Analog-Anzeigen schaltet auf 3,3 Volt-Ansicht.


Firmware in C Arduino IDE


Wer selber Hand anlegen möchte und seine IDE entsprechend eingerichtet hat, kann den angegebenen Sketch anpassen. Hier der Quelltext pur und in formatierter Ansicht:

#define AIN1 60
#define AIN2 58
#define DIN 211
#define DOUT 81
#define PWM 64
#define AOUT 64
//---- GPIO ----
#define PWMPIN 15
#define LED 15  //!

// GPIO ESP32 ON S2 MINI V1.0.0

//DIGITAL OUT PINS 0 - 7 CLAB
byte Douts[] = {LED,5,7,9, 39,37,35,33};
//DIGITAL IN  PINS 0 - 7 CLAB
byte Dins[]  = {8,10,13,14, 40,38,36,0}; //BUTTON = 0
//ANALOG IN PINS A - B CLAB
byte Ains[]  = {A0,A1};
//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])>>5);break;
    case AIN2: 
    case 49:   Serial.write(analogRead(Ains[1])>>5);break;
    default:   break;
  }
 }
 //delay(10);
}


																							


																	

												
Mittels dieser drei bin-Dateien kann ein ESP32-S2 auf einfachste Weise in ein PC-Interface verwandelt werden, welches mit Compact genauso gut zusammenarbeitet, wie ein Arduino Uno. Bei den Ausführungen im Buch ist lediglich die unterschiedliche Betriebsspannung zu beachten, die beim Pico nur 3,3 Volt beträgt.

Das 2022/23 erschienene Messen, Steuern und Regeln mit Arduino und Compact zeigt was mit der freien Software Compact Red Needle alles möglich ist.


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

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt