News Wokwi – Schaltungs- und Softwaresimulation im Browser


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

Generische Schaltungssimulation ist ein Liebe-Hass-Thema: manche lieben PSPice, während andere dem System nicht über den Weg trauen. Mit Wokwi steht ein insbesondere auf die Bedürfnisse von Makern optimiertes System zur Verfügung, das – WebAssembly und Co sei dank – komplett im Browser lebt und sich der Unterstützung diverser Ökosystem-Player (Stichwort Espressif) erfreut.

Erste Gehversuche mit der kostenlosen Basisversion

Für die Anmeldung beim unter https://wokwi.com/dashboard/projects bereitstehenden Simulator kann der geneigte Entwickler auf Google, GitHub oder ein lokales Konto setzen. Innovativ an letzterem ist die Art der Anmeldung – Wokwi sendet einfach einen Link an das Email-Account, mit dem man sich sofort im Backend wiederfindet. Zum Erzeugen eines neuen Projekts bietet Wokwi dann die in der Abbildung gezeigten Optionen an – der Autor entschied sich für einen grundlegenden ESP32.

(Bildquelle alle: Screenshot)

Lohn der Mühen ist das Aufscheinen des zweigeteilten Hauptschirms der Simulation – rechts das Schaltbild, links ein Hello World-Sketch auf Basis des Arduino Cores:

1
void setup() {
2
// put your setup code here, to run once:
3
Serial.begin(115200);
4
Serial.println("Hello, ESP32!");
5
}
6
7
void loop() {
8
// put your main code here, to run repeatedly:
9
delay(10); // this speeds up the simulation
10
}

Zum Zeitpunkt der Drucklegung unterstützt WokWi IDF nicht. Das Anklicken des Play-Symbols sorgt dann dafür, dass – siehe auch Abbildung zwei – eine Konsole für die Interaktion mit der Runtime aufscheint.

Versuche mit emulierter Hardware

Als Nächstes bietet sich ein kleines Experiment mit virtueller Hardware an: im Hintergrund setzt Wokwi nicht auf SPICE; sondern auf eine hauseigene rein digitale Simulationsumgebung (siehe hierzu auch die diversen Featurewünsche in GitHub). Aus diesem Grund ziehen wir zwei rote LEDs in die Schaltung, eine wird mit Vdd, eine mit dem ESP32 verbunden. Die Steuerungsdatei diagram.json verändert sich dann nach folgendem Schema – wichtig ist, dass manuelle Eingriffe in das File zum Setzen mancher im GUI nicht zugänglicher Attribute notwendig und legitim sind:

1
{
2
  "version": 1,
3
  "author": "Anonymous maker",
4
  "editor": "wokwi",
5
  "parts": [
6
    { "type": "wokwi-esp32-devkit-v1", "id": "esp", "top": 0, "left": 0, "attrs": {} },
7
    {
8
      "type": "wokwi-led",
9
      "id": "led1",
10
      "top": 128.27,
11
      "left": -75.8,
12
      "attrs": { "color": "red" }
13
    },
14
    { "type": "wokwi-gnd", "id": "gnd1", "top": 206.53, "left": -74.2, "attrs": {} },
15
    {
16
      "type": "wokwi-led",
17
      "id": "led2",
18
      "top": 124.93,
19
      "left": -129.13,
20
      "attrs": { "color": "red" }
21
    },
22
    { "type": "wokwi-vcc", "id": "vcc1", "top": 52.63, "left": -116.93, "attrs": {} }
23
  ],
24
  "connections": [
25
    [ "esp:TX0", "$serialMonitor:RX", "", [] ],
26
    [ "esp:RX0", "$serialMonitor:TX", "", [] ],
27
    [ "esp:D12", "led1:A", "green", [ "h0" ] ],
28
    [ "vcc1:VCC", "led2:A", "red", [ "v0" ] ],
29
    [ "led2:C", "gnd1:GND", "green", [ "v0" ] ],
30
    [ "led1:C", "gnd1:GND", "green", [ "v41.27", "h-2.2" ] ]
31
  ]
32
}

Als Programm dient folgendes Snippet:

1
void setup() {
2
  // put your setup code here, to run once:
3
  Serial.begin(115200);
4
  Serial.println("Hello, ESP32!");
5
    pinMode(12, OUTPUT);
6
7
}
8
9
void loop() {
10
  digitalWrite(12, HIGH);  
11
  delay(500);
12
  digitalWrite(12, LOW);  
13
  delay(500);
14
}

Lohn der Programmausführung ist das in der Abbildung gezeigte Verhalten. Interessant ist, dass Wokwi die Zerstörung der roten LED (direkt an 3V3) nicht in der Simulation abbildet.

Auch sonst ist das Modell simpel. Wer nach folgendem Schema eine Art PWM realisiert, sieht keine Abdunkelung der LED:

1
void loop() {
2
  digitalWrite(12, HIGH);  
3
  delay(50);
4
  digitalWrite(12, LOW);  
5
  delay(50);
6
}

Fortgeschrittenes Projekt aus Vorlage

Wokwi bietet Fertigprojekte als Basis an – als kleines Versuchsobjekt dient das unter https://wokwi.com/projects/346340290067432020 bereitstehende Pong-Spiel. Interessant ist an ihm die Datei libraries.txt, die nach folgendem Schema Arduinobibliotheken einbindet:

1
# Wokwi Library List
2
# See https://docs.wokwi.com/guides/libraries
3
4
# Automatically added based on includes:
5
Adafruit GFX Library
6
7
Adafruit SSD1306

Die Einrichtung des auf einem SSD1306 basierenden OLEDs erfolgt dann wie in der Realität:

1
void setup() 
2
{
3
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
4
5
    // Display the splash screen (we're legally required to do so)
6
    display.display();
7
    unsigned long start = millis();
8
9
. . .
10
11
        // Player paddle
12
        display.drawFastVLine(MCU_X, mcu_y, PADDLE_HEIGHT, WHITE);
13
        display.drawFastVLine(PLAYER_X, player_y, PADDLE_HEIGHT, BLACK);

Lohn der Mühen ist hier das in der Abbildung gezeigte Programm.

Mehr Funktionen für zahlende Kunden

Der unter https://docs.wokwi.com/getting-started/wokwi-club bereitstehende und sieben Euro pro Monat kostende Wokwi Club bietet Zusatzfunktionen an: neben einem besseren WLAN-Emulator und der Möglichkeit zum Hochladen von Binärdateien in den MicroSD-Speicher gibt es ein System, mit dem “Votieren” für die Weiterentwicklung möglich ist.

Lohnt es sich?

Außer Frage steht, dass Wokwi ob der – durchaus brauchbaren – Simulation des ESP32 bzw des Arduino das Ausprobieren der Hardware-Software-Interaktion ermöglicht. Andererseits ist die Modellierungsengine durch die Beschränkung auf das digitale Verhalten arg eingeschränkt; ein Ersatz für die reale Laborarbeit ist das System zumindest nach Meinung des Autors auf keinen Fall.


: Bearbeitet durch NewsPoster
von Stefan (sstaub)


Lesenswert?

Es ist sinnvoller auf einfache Elektronikkenntnisse zurückzugreifen als 
Simulationen zu benutzen mit denen sich die meisten Probleme mit 
Microcontroller nur unzureichend abbilden lassen.

von M. K. (sylaina)


Lesenswert?

Stefan schrieb:
> Es ist sinnvoller auf einfache Elektronikkenntnisse zurückzugreifen als
> Simulationen zu benutzen mit denen sich die meisten Probleme mit
> Microcontroller nur unzureichend abbilden lassen.

Naja, vielleicht macht man es ja so rum: Man überlegt sich etwas mit 
Hilfe der Elektronikkenntnisse und überprüft dann in der Simulation ob 
das zu den Überlegungen passt. Und wenn das Korreliert kann man ja immer 
noch den ganzen Spass in der Realität aufbauen ;)

von Operator S. (smkr)


Lesenswert?

Stefan schrieb:
> Es ist sinnvoller auf einfache Elektronikkenntnisse zurückzugreifen als
> Simulationen zu benutzen mit denen sich die meisten Probleme mit
> Microcontroller nur unzureichend abbilden lassen.

Ich vermute bei diesem Projekt werden eher die Kunden angesprochen, 
welche aus der anderen Richtung kommen.
Da wird zuerst simuliert und auf dieser Basis die Elektronikkenntnisse 
erarbeitet (falls überhaupt erwünscht)

Wenn ich sehe, wie Schreiner, Metallbauer, Steinhauer und die ganzen 
Künstler mit Arduino die gewünschten Zusatzeffekte in ihr Werk bringen, 
ist mit so einer Simulation schon viel gewonnen.

Und bei den ganzen xxSpice programmen hat es vermutlich auch erstmal mit 
den absoluten Basics begonnen. Wer muss schon ein RC-Glied simulieren, 
wenn man das doch einfach ausrechnen kann, werden sich die Ingenieure 
gedacht haben. Wenn man heute sieht wie weit es gekommen ist, traue ich 
durchaus auch diesem Wokwi zu, das es in 5 Jahren auch mal Simulationen 
für herausfordernde Aufgaben schafft.

von Frank O. (frank_o)


Lesenswert?

Operator S. schrieb:
> Und bei den ganzen xxSpice programmen hat es vermutlich auch erstmal mit
> den absoluten Basics begonnen. Wer muss schon ein RC-Glied simulieren,
> wenn man das doch einfach ausrechnen kann, werden sich die Ingenieure
> gedacht haben. Wenn man heute sieht wie weit es gekommen ist, traue ich
> durchaus auch diesem Wokwi zu, das es in 5 Jahren auch mal Simulationen
> für herausfordernde Aufgaben schafft.

Hier gibt es ja immer die, die meinen, dass man alles von der Pieke auf 
gelernt haben muss.
Als Vierjähriger den Elektronikbaukasten besessen haben muss und ohne 
Assembler gar keinen Mikrocontroller anfassen darf.

Ich habe noch nicht mit ST gearbeitet (oder nur kurz) und Cube ist da 
schon einmal (meine Meinung) der Weg in die richtige Richtung.
Man kann das Pferd auch von hinten aufzäumen. Erstmal leicht und dann 
Assembler.
Keine Frage, wer die Dinger in Assembler programmiert, der kennt jedes 
Bit in dem Controller.
Ich finde es jedenfalls gut, wenn alles einfacher wird.
Und die Assembler Nerds können sich dann ja drum kümmern, dass die 
Software, die den anderen das Leben leichter macht, auch richtig 
funktioniert.

von Jochen D. (joe_d1)


Lesenswert?

M. K. schrieb:
> Naja, vielleicht macht man es ja so rum: Man überlegt sich etwas mit
> Hilfe der Elektronikkenntnisse und überprüft dann in der Simulation ob
> das zu den Überlegungen passt. Und wenn das Korreliert kann man ja immer
> noch den ganzen Spass in der Realität aufbauen ;)

Blöd nur das die Simulation anscheinend Fehler in der realen Welt als 
völlig problemlos in der Simulation anzeigt (rote LED direkt an 3V3).

Da funktioniert dann in der Simulation alles prima und nach einem 
Versuchsaufbau entweicht der elektronische Rauch aus den realen 
Bauteilen ;)

von Mark S. (voltwide)


Lesenswert?

Jaaa - darüber bin ich in der Anfangszeit auch gestolpert. Damals habe 
ich gesagt, ich fasse Simulation erst dann wieder an, wenn überlastete 
Bauteile mir ein Loch in den Bildschirm brennen. Inzwischen habe ich 
mich mit den Grenzen der Simulation arrangiert.

von Gerald B. (gerald_b)


Lesenswert?

Wenn das Ziel ist, "Maker" in Elektronik fit zu machen, dann sollten 
fehlende Abblock C's mit Abstürzen und undefinierbarem Verhalten 
"belohnt" werden. Verpolung wird mit Totalschaden aller ICs quittiert. 
Ein verpolter Elko lässt den magischen Rauch raus, ebenso werden 
fehlende und falsch dimensionierte Basiswiderstände je nachdem mit einem 
sich schwärzenden Widerstand oder einem abdampfenden Transistor 
angezeigt. Die LED ohne Vorwiderstand wurde schon angesprochen.
Nur so werden langfristig die im Internet publizierten Schaltungen 
besser.
Wir mußten das "zu Fuß" schließlich auch lernen ;-)

Dieser Beitrag kann nur von angemeldeten Benutzern beantwortet werden. 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.