Programovanie Arduino (a derivátov) bez Arduino IDE #6

07.05 | 14:08 | Richard | Richard

Dnes si povieme, ako nahradiť "Serial monitor" a "Serial plotter".

Serial monitor

Serial monitor je nástroj, ktorý je priamo v Arduino IDE. Umožňuje užívateľovi komunikáciu s mikrokontrolérom cez sériovú linku - posielať príkazy do mikrokontroléra, byte za bytom, a zobrazovať informácie, ktoré odošle mikrokontrolér späť.


Na nasledovnej snímke obrazovky je pripojené ESP8266, ktoré je cez WiFi pripojené k NTP serveru a dopytuje sa na presný čas. Na obrázku vidíme, že základom je správne nastavenie prenosovej rýchlosti.

Obr. 0: "Klasický" sériový vrah monitor

Komunikácia v konzole

Jednoducho a spoľahlivo funguje program cu. Celým názvom: Conventional UART, alebo aj Calls Up. Je bežne dostupný v repozitároch a používa sa napríklad takto:
cu -l <zariadenie> -s <rýchlosť>, napríklad:
cu -l /dev/ttyACM0 -s 9600


Pôvodné určenie programu bolo na spojenie pomocou vytáčaného pripojenia.

Obr. 1: Príkaz cu v konzole

 

Samozrejme, Emacs má opäť niečo vstavané

… a tým je zabudované rozšírenie serial-term.
Po spustení rovnomenného príkazu a zadaní/potvrdení zariadenia a rýchlosti sa vytvorí nový buffer s výstupom sériovej komunikácie. Klikaním na modeline môžeme dodatočne upraviť napríklad paritu, počet bitov, stop-bity, riadenie toku a pod.

Obr. 2 - 4: Serial-term v GNU Emacs

Alternatíva s grafickým rozhraním

Tých je viac, ale najjednoduchším a súčasne efektívnym programom je CuteCOM. Opäť - je (asi vždy) v repozitároch.

Aktuálna verzia je poriadne stará (z roku 2015), ale to je aj spôsob sériovej komunikácie!
A má krásnych 70800 kB.


Hlavnými pozitívami programu sú:

Serial plotter

…je nástroj, ktorý umožňuje vizuálne zobraziť dáta, ktoré sú posielané po sériovej linke z mikrokontroléra do počítača. Hádam od verzie 1.6 je súčasťou Arduino IDE.


Relevantná ukážka kódu:

int noiseAI1 = 0 ;
int noiseAI2 = 0 ;

void setup() {
  Serial.begin(9600);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
}

void loop() {
  noiseAI1 = analogRead(A1);
  noiseAI2 = analogRead(A2);

  Serial.print("Šum1:");
  Serial.print(noiseAI1);
  Serial.print(",");
  Serial.print("Šum2:");
  Serial.println(noiseAI2);

  delay(100);
}


Ako je zrejmé z tohto príkladu, tak v premenných noiseA1 resp. noiseA2 máme šum na nezapojených analógových pinoch mikrokontroléra.


Serial plotter má dve osi: os X je časová, v ms, pričom časový bod je definovaný po sebe idúcimi príkazmi Serial.println(); os Y reprezentuje číselné údaje, ktoré sú poslané pomocou Serial.print(). Mierka osi sa nastavuje automaticky.

Obr. 6: Serial plotter

Serial Analyzer

Tento program umožňuje jednoducho prezerať spektrum údajov vypočítaných v reálnom čase. Je to však Serial Plotter na steroidoch.


Program sa dá stiahnuť na https://www.curiores.com/serialanalyzer, je napísaný v electron-e a teda multiplatformný.


Zásadným rozdielom v kóde je to, že časť s prenosom po sériovej linke musí byť:

Serial.print(noiseAI1);
Serial.print(" ");
Serial.print(noiseAI2);
Serial.println();


Jednotlivé údaje sa oddeľujú znakom medzera.

Na nasledujúcom obrázku vidíme, že:

Záver celej série

Nakoniec sme sa úspešne dopracovali na koniec. Je len na láskavom čitateľovi, či ostatne verný originálnemu Arduino IDE, alebo či siahne po niečom inom, hádam lepšom.
Alebo - a to je asi najdôležitejšie - ak má pozitívny návyk na prácu v konkrétnom IDE, nech je to aj spomínaný Geany, Vim, Visual Studio Code, Eclipse, Atom, Kate,… , tak pre prácu na mikrokontroléroch nemusí opúšťať zaužívané prostredie s obľúbenými klávesovými skratkami alebo pluginmi.
Pretože o tomto je softvérová sloboda. A filozofia, že človek by sa nemal prispôsobovať softvéru, ale malo by to byť naopak (myslené samozrejme s nadhľadom).


Happy hacking!

    • RE: Programovanie Arduino (a derivátov) bez Arduino IDE #6 09.05 | 09:58
      Avatar vxmery Mint 21.3 Cinnamon  Používateľ

      Rišo, vďaka za námahu pri tvorbe seriálu, snahu podeliť sa a za skvelú úpravu. Vecne to posúdiť neviem, páč sa tomu nevenujem.