[ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 24.05.22
Príspevky: 440
Témy: 193 | 193
Bydlisko: Poprad-okolie

Wokwi je simulátor pre vývoj jednoúčelových projektov a prototypov v jazyku Wiring (Arduino Core). Simulátor je dostupný zdarma, alebo v platenej verzii (členstvo) na webe, kde celá simulácia prebieha. Používateľ môže využiť rôzne podporované mikrokontroléry, napríklad z rady AVR ATmega na vývojových kitoch Arduino Uno, Nano, Mega. K dispozícii je aj populárny mikrokontróler ESP32 od Espressif Systems a Raspberry Pi Pico. Taktiež je na výber aj mikrokontróler ATtiny85, či TinyPICO. ESP32 je možné programovať aj v Microphytone a Rpi Pico v Javascripte či Circuitpythone.
Wokwi - simulátor pre Arduino projekty
Na simulátor som narazil pred niekoľkými mesiacmi v jednej z Arduino skupín na Facebooku. Rozhodol som sa simulátor vyskúšať po dobu pár mesiacov a dnes by som rád zhrnul moje poznatky a pripomienkym a taktiež aj porovnanie s inými populárnymi cloud simulátormi ako napríklad TinkerCAD. Wokwi je dostupný v anglickom a dnes už aj v českom jazyku vďaka používateľovi @Ajtak.

Nakoľko využívam iba mikrokontroléry Arduino a ESP32 programované pod Wiringom (Arduino Core), nebude sa táto recenzia venovať iným mikrokontrolérom a programovacím jazykom, ktoré sú na Wokwi dostupné. Testovaná bola verzia simulátora zdarma bez predplateného členstva. Projekty vo Wokwi je možné uložiť a zamknúť, prípadne ich je možné celé zdieľať s možnosťou ich uloženia druhou stranou ako svoj projekt. Projekt môže vyskúšať a odsimulovať aj neregistrovaný používateľ, nemôže ho však pochopiteľne uložiť.
Wokwi - simulátor pre Arduino projekty

Dokumentácia
V prvom rade musím pochváliť dokumentáciu projektu Wokwi pre jednotlivé mikrokontroléry. Používateľ v prehľadnej dokumentácii okamžite zistí, ktoré z podporovaných zberníc mikrokontroléra sú v simulátore implementované a môže ich použiť a vyskúšať. Taktiež sú k dispozícii aj ukážkové zdrojové kódy pre základné projekty typu Blink, ovládania NeoPixel LED pásikov, ringov a podobne. Pre mikrokontróler ESP32 som v dokumentácii zistil, že v dobe keď som začal s Wokwi ešte neexistovala podpora simulácie pre kryptografické akcelerátory.

Z toho dôvodu som nemohol otestovať projekty, ktoré využívali šifrované spojenie s webserverom cez HTTPS protokol, alebo s MQTT brokerom po MQTTS protokole. Bolo možné otestovať iba projekty s HTTP a MQTT konektivitou. Dnes je už však podpora kryptografických akcelerátorov implementovaná a plne funkčná. ESP32 pod Wokwi využíva poslednú release verziu Arduino Core 2.0.2 (platné k 15. Aprílu 2022), ktorá je založená na ESP-IDF 4.4-beta1. Existujúce projekty, ktoré som predtým spúšťal zrazu na Wokwi nefungovali. Táto verzia ESP-IDF má nevýhodu v podobe nepodpory šifrovaného spojenia so serverom, ak sa využíva TLS 1.3. Príklad knižnice WiFiClientSecure na doménu howmyssl fungoval dobre a spojenie sa vykonalo, avšak na freehosting sa mi ESP32 nedokázalo pripojiť.

Po niekoľko-hodinovom pátraní som prišiel nato, že po downgrade release verzie Arduino Core v Arduino IDE na 2.0.1, alebo upgrade na development verziu 2.0.3-RC1 spojenie fungovalo. Changelog verzie medzi 2.0.2 na 2.0.3-RC1 obsahoval aj commit s aktualizáciou knižnice mbed_TLS. Verzie 2.0.1 a 2.0.3-RC1 sú založené na ESP-IDF 4.4 (release, nie beta verzia).

Verziu SDK (ESP-IDF) na ktorom je aktuálne Arduino Core použité môžete získať zavolaním a vypísaním funkcie getSdkVersion() pre objekt ESP:
Kód:
void setup() {
Serial.begin(115200);
Serial.println("Using ESP object:");
Serial.println(ESP.getSdkVersion());
}
void loop() {}

Wokwi - simulátor pre Arduino projekty

Okrem samotnej verzie SDK (ESP-IDF) môžeme získať z vypísaného názvu aj to, či ide o release verziu ESP-IDF, alebo beta verziu (pre-release), či dev (vývojársku verziu). Taktiež je možné získať počet commitov (189) a taktiež aj commit ID posledného commitu (ga79dc75f0a). To môže pomôcť vývojárom z Espressif Systems napríklad pri riešení nahlásených bugov používateľmi, keďže môže používateľ využívať aj hlavnú development vetvu a nie release verziu Arduino Core pre ESP32. Vývojár si tak môže zobraziť rozdiely medzi commitmi a urýchli to riešenie problému.

Obmedzenia
Ako som spomenul na začiatku článku, simulátor je dostupný zdarma, alebo v platenej verzii. Platená verzia je mesačné predplatné pre využívanie výhod klubu Wokwi. Mesačné predplatné je dobrovoľné od 5 USD, pričom na základe výšky má používateľ výhody okrem iných v podobe Superhlasov (1 superhlas za 1 dolár) pre hlasovanie v anketách pridávania nových funkcionalít a hardvéru.
Wokwi - simulátor pre Arduino projekty

Používateľ klubu má k dispozícii v simulátore možnosť pripojenia sa k WiFi sieti (2,4 GHz) s WPA/WPA2-PSK šifrovaním, ktorú sám generuje so stiahnutým IoT Wokwi Gateway softvérom. Mikrokontróler takéhoto používateľa taktiež podporuje prichádzajúce pripojenia (Incomming connections). Výhodou je aj vysoká stabilita WiFi pripojenia. Medzi výrazné výhody klubu je možnosť pridávania .bin súborov do projektu pre microSD kartu na ktorých môžu byť multimediálne súbory - zvuky, bitmapy ale taktiež aj projekt vykompilovaný napríklad z ESP-IDF frameworku... Ďalšou z výhod je možnosť importu vlastných knižníc pre senzory.

Používateľ bez statusu člena klubu môže využívať nešifrovanú (otvorenú) WiFi sieť, pričom je traffic monitorovaný administrátormi a v prípade veľkého vyťažovania servera vás môže odpojiť, či zrušiť bežiacu simuláciu. Na základe dokumentácia má byť aj znížená prenosová rýchlosť, avšak na moje projekty typu prenos pár bajtov dát do cloudu som v rýchlosti oproti reálnej nezistil rozdiel. Používateľ nemôže využiť prichádzajúce spojenia. To znamená, že v prípade HTTP servera na ESP32 ste schopní projekt simulovať, avšak k webserveru ako takému sa nepripojíte.

ESP32 môžete z toho dôvodu využívať iba v režime klienta, ktorý sa pripája k externému serveru (webclient). Taktiež nie je možné bez členstva využívať UDP komunikáciu v smere na mikrokontróler. Používateľ môže do projektu nakopírovať aj vlastné knižnice (.cpp a .h), treba ich však v zdrojových kódoch aplikácie linkovať lokálne. Importované súbory sú však dostupné iba v danom projekte. Do iného projektu je nutné opätovne súbory nahrať a linkovať lokálne v zdrojových kódoch.

Simulácia
Po vybratí mikrokontroléra z hlavnej ponuky sa zobrazí na pravej strane mikrokontróler, ku ktorému je možné pridávať moduly a tie následne prepájať. Použité moduly je možné rotovať klávesovou skratkou R. Pri kliknutí na modul sa zobrazí otáznik, na ktorý je možné kliknúť. Po kliknutí na otáznik vás wokwi presmeruje na dokumentáciu k danému modulu, kde je možné nájsť aj ukážkový zdrojový kód s kompatibilnou knižnicou z ponuky Wokwi. Na ľavej strane rozhrania je sketch, ktorý je možné editovať a písať vlastný program v tomto IDE. Simulácia sa spúšťa kliknutím na Play. Všetky senzory, prepojovacie káble sú obsiahnuté v diagram.json súbore, ktorý zároveň slúži aj ako editačný súbor pre zmenu farieb a vlastností a pozícii.

Súbor diagram.json umožňuje definovať aj špecifické správanie pre Serial monitor. Štandardne nie je obsiahnutý v diagram.json, je však funkčný a nastavený na hodnotu auto, ktorá ho automaticky spustí pri výpise na UART - Serial.print() / Serial.write(). V prípade, že máte program bez výpisu, alebo s výpisom po prijatí dát, Serial monitor sa nespustí a nemôžete zadať dáta. Z toho dôvodu je nutné Serial monitor nastaviť v diagram.json na always. Tým pádom sa Serial monitor otvorí pri štarte simulácie a je možné doň zadávať používateľský vstup, prepínať výstup na plotter a podobne. Štandardne je Serial monitor pre používateľský vstup nastavený s ukončovacím znakom lf, čo znamená ukončovací znak riadku "\n". Ukončovacie znaky Serial monitora pri odoslaní správy je taktiež možné konfigurovať prostredníctvom diagram.json súboru.
Wokwi - simulátor pre Arduino projekty
Treťou záložkou menu je Library Manager (Manažér knižníc), ktorý umožňuje výber knižnice pre komunikáciu s perifériou. Využiť je možné iba dostupné knižnice, nakoľko štandardný používateľ nemôže importovať svoju knižnicu (iba súbory manuálne). V mojom prípade som využil knižnicu LiquidCrystal_I2C pre komunikáciu s LCD znakovým displejom po I2C zbernici. Program sa neskompiloval, nakoľko knižnica v simulátore Wokwi bola iná, ako moja v projekte v Arduino IDE. Zmena bola minimálna, funkciu lcd.begin() bolo nutné nahradiť za lcd.init(). Nepodarilo sa mi dohľadať, akú LiquidCrystal_I2C knižnicu používa priamo Wokwi, moja knižnica bola z Githubu od @fdebrabander.

Wokwi disponuje aj rôznymi ne-senzorovými knižnicami, ktoré umožňujú realizovať napríklad MQTT (PubSubClient) spojenie, alebo parsing JSON štruktúr (ArduinoJson), TaskScheduler pre pseudo-multitasking, umožňuje vykonávanie rutín v pravidelných intervaloch. Taktiež sa tu nájdu aj knižnice pre pripojenie k populárnym IoT clodovým službám typu ThingSpeak, WIOTerminal, ThingsIoT cez MQTT protokol, ktoré umožujú Publish, i Subscribe dát z nastaveného topicu priamo s parsingom dát zo štruktúr JSON, či XML. K dispozícii je aj množstvo Ethernet knižníc pre moduly Wiznet W5XXX, alebo ENC28J60 pre architektúru mikrokontrolérov AVR ATmega, avšak žiaden modul pre Ethernet nie je v simulátore momentálne dostupný...
Wokwi - simulátor pre Arduino projekty

Práve knižnice sú jeden z kameňov úrazu pri využívaní tohto simulátora. Chcel som otestovať senzorový uzol na ESP32, ktorý využíva ultrazvukový senzor vzdialenosti HC-SR04. V knižniciach však bola iba knižnica NewPing, ktorá funguje len pre architektúru mikrokotrolérov AVR ATmega. Knižnica NewPingESP8266, ktorá je uspôsobená pre mikrokontroléry ESP8266 a ESP32 od Espressif Systems tu nie je dostupná. Z toho dôvodu som senzor použiť nemohol a využil som iba preddefinované číslo, ktoré som senzorovým uzlom prenášal na vzdialený webserver, existovala ale aj možnosť využiť vstavanú funkciu pulseIn() pre načítania počtu milisekúnd od vyslania po prijatie ultrazvuku zo senzora pre prepočet na vzdialenosť.

Zhodnotenie a porovnanie s TinkerCAD
Simulácia v simulátore Wokwi funguje naozaj veľmi dobre. V pravej časti simulovaného projektu je vidieť čas simulácie a taktiež aj percentuálny pomer behu programu oproti reálnemu času. Zaznamenal som problémy napríklad v slučkách s delayom, kedy sa beh programu znižíl asi na 30%. Keď mám porovnať Wokwi so simulátorom TinkerCAD, išiel by som určite do Wokwi. Wokwi je novovznikajúci projekt, ktorý má širokú základňu fanúšikov a potenciál ďalej rásť. TinkerCAD nemá WiFi mikrokontroléry (ESP8266, ktorý tam bol podporovaný, dnes už nie je dostupný).
Wokwi - simulátor pre Arduino projekty
V TinkerCAD-e viazla aj dokumentácia, obsahoval skôr hotové zapojenia, ktoré bolo možné s preddefinovaným zdrojovým kódom spustiť, neobsahoval možnosť využitia iných (používateľských) knižníc. Nemal možnosť real-time simulácie, nakoľko reálna rýchlosť vykonávania programu bola asi na 15 až 20% reálneho času, čo bolo otravné najmä v projektoch s tlačidlami, ktoré bolo potrebné držať v simulácii niekoľko sekúnd, aby sa vykonala niekoľko milisekundová podmienka. Pre ESP32 je možné na Wokwi využívať aj operačný systém reálneho času FreeRTOS a tasky. FreeRTOS funguje dobre, dlhšia je však kompilácia programu. Od Februára 2022 je beh ESP32 aplikácii v simulátore Wokwi zrýchlený.

Čo mi vo Wokwi aktuálne najviac chýba?
    Populárne senzory pre meteo dáta (DS18B20, BME280, BMP280, SHT3X)
    Aspoň jedna RFID čítačka (NXP RC522 / RDM6300...)
    Existujúce knižnice s kompatibilitou pre ESP architektúru
    Mikrokontróler ESP8266
    Možnosť simulácie na pozadí 24/7, možnosť logovania
    Možnosť kombinovania viacerých mikrokontrolérov v projekte
    Externý zdroj napätia / prúdu
    Multimeter / osciloskop
    Export schémy zapojenia / vytvorenie zapojenia v schéme

Vyskúšajte Wokwi na ukážkových projektoch:


 [ Príspevok: 1 ] 


Wokwi - simulátor pre Arduino projekty



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Ovládanie hlasom pre Arduino/NodeMCU/ESP32/Raspberry/Orange Pi ... projekty

v Mikropočítače

1

800

16.09.2017 9:16

ado130

V tomto fóre nie sú ďalšie neprečítané témy.

Ponuka prace pre programatorov hier. ( nextgen projekty )

v Ponuka práce

0

2895

30.11.2006 15:00

maxman

V tomto fóre nie sú ďalšie neprečítané témy.

XLoader - kompaktný uploader pre strojové kódy - Arduino

v Články

0

295

26.12.2020 16:00

martinius96

V tomto fóre nie sú ďalšie neprečítané témy.

ThingSpeak - IoT platforma pre Arduino / ESP8266 / ESP32

v Články

0

459

16.01.2020 23:59

martinius96

V tomto fóre nie sú ďalšie neprečítané témy.

DOMINATOR cez Arduino pre Airsoft / Paintball / Nerf Wars

v Články

2

2117

30.11.2018 21:41

eon5

V tomto fóre nie sú ďalšie neprečítané témy.

Simulator windowsovych programov pre PDA

v Ostatné programy

2

366

17.03.2010 11:27

mathias

V tomto fóre nie sú ďalšie neprečítané témy.

Letecky simulator pre vojenske stihacky

v Počítačové hry

2

1460

10.05.2008 23:19

SonnY

V tomto fóre nie sú ďalšie neprečítané témy.

V: Euro Truck Simulator 2 GOLD za Farming Simulator 15

v Vymením a darujem

1

585

18.02.2016 13:03

t0m@$

V tomto fóre nie sú ďalšie neprečítané témy.

PC pre hru Farming Simulator 2013

v PC zostavy

4

464

08.07.2014 15:14

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Realistický letecký simulátor - Digital Combat Simulátor

v Počítačové hry

0

384

12.09.2019 14:09

Molnija1985

V tomto fóre nie sú ďalšie neprečítané témy.

Letecký simulátor pre Google Earth s multiplayerom

v Novinky

6

749

07.11.2011 20:28

emer

V tomto fóre nie sú ďalšie neprečítané témy.

Problém u Traktor Simulátor(Traktor Zetor Simulátor)

v Počítačové hry

24

2358

03.06.2011 14:47

Jeffo

V tomto fóre nie sú ďalšie neprečítané témy.

Moje projekty

v Webdesign

12

1102

19.08.2007 16:22

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

podobne webove projekty

v Obchody, reklamácie a právo

4

585

17.03.2011 17:16

jablko05

V tomto fóre nie sú ďalšie neprečítané témy.

Java : projekty ku knihe

v Assembler, C, C++, Pascal, Java

2

504

24.10.2009 11:31

mathias

V tomto fóre nie sú ďalšie neprečítané témy.

Projekty z NetBeans importovať do Eclipse

v Ostatné

2

535

22.02.2010 20:33

petanorech



© 2005 - 2022 PCforum, edited by JanoF