LAKI PINGVINI<>
072019<><>

SAMD21 M0 mini

Veličina nije presudna

U Arduino ekosistemu imamo nekoliko porodica 32-bitnih ploča, o nekima smo pisali, o nekima još ne. Na red je došla još jedna ploča iz ARM porodice ploča zasnovane na Atmelovom SAMD21 mikrokontroleru. Već smo pisali o MKR1000, koja koristi isti MCU (SK 9/2018). Mi smo se odlučili za liniju manjeg otpora i izabrali SAMD21 M0 mini, ploču iza koje stoji RobotDyn. Sa raznim proizvodima ovog proizvođača smo se do sada često sretali i nismo imali problema, tako da smatramo da je izbor logičan i opravdan.

SAMD21 M0 mini je ploča neznatno veća od Arduino Nano ploče, mada RobotDyn u ponudi ima i „full size” M0 ploče sa layoutom Una. Na crnoj PCB je mikrokontroler sa punom oznakom SAMD21G18A. Isti MCU koristi Arduino Zero, kao i starija ploča M0. Ploča iz naslova je najpribližnija baš M0 i nju i biramo u okviru IDE, ali o tome posle. Mikrokontroler o kome govorimo je ARM Cortex M0+ sa 32-bitnim jezgrom, uz interni maksimalni klok na 48 megaherca. Pride, tu je i eksterni kristal na 32,768 kiloherca. RobotDyn je MCU opskrbio sa 256 kilobajta fleš memorije i 32 kilobajta SRAM, što je u skladu i sa firmiranim M0 i jasno se vidi da je u pitanju njegova umanjena verzija.

Kao i kod drugih ARM MCU, i ovde je I/O na 3,3 volta, a pinovi nisu tolerantni na više od toga. Za napajanje se može koristiti mikro USB konektor ili VIN pin preko koga ploču možemo da napajamo naponima od pet do devet volti. Ploča se po pinu može opteretiti sa maksimalnih sedam miliampera, na šta treba obratiti pažnju prilikom izbora ploče u zavisnosti od projekta. Na ploči imamo i 3V3 pin koji se može opteretiti sa maksimalnih 180 miliampera. Dok smo kod mikro USB konektora, ovde je u pitanju nativni USB port, što će reći da se može ponašati i kao host, ali i kao device.

Kao i kod Nano, i ovde su svi pinovi poređani sa strana gde pored pomenutih naponskih imamo šest analognih i 16 digitalnih GPIO. Pored ovih 16, u sklopu ICSP hedera imamo još tri digitalna zadužena za SPI interfejs. GPIO D20 i D21 su zaduženi za I2C. Od svih digitalnih pinova, PWM je moguć na njih 12. Analogni ulazi su 10-bitne rezolucije, a zanimljivo je da A0 ujedno ima i ulogu analognog izlaza.

Na ploči još imamo četiri LED gde je jedna Power, zatim TX i RX i poslednja je built-in (L) na pinu 13. Na samom kraju je 'reset' taster. Za debagovanje ARM mikrokontrolera tu je SWD (2 x 5) konektor. U tu svrhu se može koristiti ST-LINK V2, ali ostaje eventualni problem konektora jer ovaj na ploči nije prijateljski nastrojen ka dupont žicama. Iskusniji mejkeri bi, naravno, ovaj konektor već trebalo da imaju u svojoj torbi sa alatom. Za debagovanje se od ovih deset pinova koriste samo 'reset', naponski i SWCLK i SWDIO. Kada smo kod debagovanja, prema proizvođaču mikrokontroler podržava Atmelov Embedded Debugger (EDBG). EDBG se sastoji iz debagera, virtuelnog COM porta i Data Gateway Interface (DGI). SWD konektor je i povezan sa SAMD21 preko EDBG. Ako pogledamo šemu ove ploče, primetićemo da oznake na mikrokontroleru nemaju veze sa oznakama na pinovima. Tako na primer analogni PA02 je zapravo A0, digitalni PA21 je D7. Ono što je bitno je da ih adresiramo po oznakama na ploči i da zanemarimo oznake samog mikrokontrolera.

Ove ploče pored RobotDyna prave još i Wemos i DIYMore pa se tako može naleteti na primerak na kome se nalazi samo bootloader koji dozvoljava prebacivanje skeča putem SWD konektora (ROM based). Ovakvi primerci su retki, ali postoje. Mi smo, srećom (ako se tako može reći), dobili primerak koji dozvoljava prebacivanje skeča putem USB porta (FLASH based). U okviru IDE je potrebno pod Boards Manager u polje za pretragu uneti SAMD i instalirati podršku za SAMD ploče. IDE će prilikom instalacije dodati i neophodan drajver za njih. Nakon toga, dovoljno je izabrati Arduino MO i odgovarajući port. U slučaju da naletite na ploču sa ROM based bootloaderom, odgovarajući bootloader možete naći u Google pretrazi koristeći ključne reči – adafruit m0 bootloader.

RobotDynov SAMD21 radi bez mušica. Ono što se može nazvati razlikom u odnosu na programiranje standardnih Arduino kompatibilnih ploča je pravljenje Serial objekta. Kod SAMD21 M0 Mini bi Hello World preko serijal terminala išao ovako:

void setup(){

SerialUSB.begin(9600);

}

void loop(){

delay(1000);

SerialUSB.println(„Hello World!”);

}

Delay od jedne sekunde je obavezan. U suprotnom, terminal će ostati bez „Zdravo Svete!”.

Razlog ovakvom pravljenju serial objekta je što je na ovoj ploči (kao i na drugim SAMD21) USB port nativan. Skečevi koji koriste serial terminal jednostavno neće funkcionisati. Ovaj (nazovimo) problem se može rešiti standardnim USBtoTTL adapterom (FTDI, recimo) koji ćemo povezati na TX/RX same ploče i terminal pratiti, recimo, preko PuTTY. Naravno, možemo koristiti bilo koji digitalni pin uz SoftwareSerial biblioteku.

Pored standardnog pisanja skeča u okviru IDE, SAMD21 se može programirati i koristeći CircuitPython. CircuitPython je varijanta MicroPythona koji je razvila Adafruit. Po prirodi stvari, ako će se pisati standardni skeč i koristiti IDE, koristićemo Flash based bootloader. Za upload se u ovom slučaju koristi BOSSAC, kao i kod Arduino Due. Ako je izbor CircuitPython, jedino logičko rešenje je flešovati ROM based bootloader. Više o ovoj verziji Pythona možete naći na stranicama Adafruit, sekcija learn.

S obzirom na to da se dok ovo pišemo bliži kraj školske godine, rešili smo da malo propitamo SAMD21 iz matematike da bismo videli razliku u odnosu na neke druge ploče, prvenstveno Due i pomenuti MKR1000. Očekivano, M0 Mini je postigao identično vreme sa MKR1000 u računanju broja Pi, a to je 1958 milisekundi za 100.000 iteracija. SAMD21 je očekivano brz, ipak nedovoljno u poređenju sa Due. ESP32 je naravno sve ovo gledao iz prikrajka i smeškao se. Za veliki broj scenarija ovaj RobotDyn može biti idealno rešenje. Dimenzije su minimalne, mikrokontroler je brz i pritom govorimo o ARMu. Prilikom maltretiranja na časovima matematike je trošio jedva 12 miliampera, što naravno nije neko merilo, ali može dati određeni uvid. Cena za ploču sa ARM mikrokontrolerom je i te kako prihvatljiva, ipak za standardne projekte AVR je svakako pristupačniji.

Dejan PETROVIĆ

 
Enso OS 0.3.1
SAMD21 M0 mini
Šta mislite o ovom tekstu?
Nuts and Bolts (3): 74HC595 IC
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera