This is an old revision of the document!
INTRO ARDUINO DE COMPLETAT
Pentru a lucra cu platforma Arudino, este necesar mediul de Dezvoltare Integrat (IDE) Arduino rulează într-o mașină virtuală Java. Pașii necesari instalării pe Windows sunt prezentați mai jos:
Ultima variantă a Arduino IDE poate fi descarcată de la urmatoarea adresă:
Download
IDE-ul este disponibil în două variante: cea clasică, care presupune instalarea și cea portabilă, ce poate fi direct rulată.
Instalarea programului se realizeaza similar cu cea a altor aplicatii. După cum observați, driverele sunt instalate odată cu IDE-ul, atât timp cât selectați această opțiune.
După instalare, rulați Arduino IDE. Interfața arată astfel:
Primul lucru care se poate observa sunt cele două funcții standard, void setup() și void loop(). Vom detalia aceste funcții mai târziu. Pentru moment, vom rula un proiect oferit ca exemplu, pentru a ne asigura că instalarea s-a realizat cu succes. Accesați meniul File → Examples → 01. Basics → Blink. O nouă fereastră se va deschide.
După cum este specificat și în descriere, acest proiect va aprinde și va stinge LED-ul aflat pe placa Arudino. Acest LED este conectat la portul digital 13.
Selectați modelul de Arduino și portul identificat anterior
În acest moment, LED-ul de pe Arduino ar trebui să se aprindă și să se stingă, cu o frecvență de 0.5Hz.
Deschideți exemplul 04. Communication → SerialEvent . După cum este explicat și în descriere, datele ce ajung pe magistrala serială (în cazul nostru, cele trimise de pe PC) sunt puse într-un String, până la întâlnirea caracterului \n, moment în care șirul de caractere este trimis pe magistrală, către PC.
Revenind la exemplul nostru, observați prezența celor două funcții descrise anterior, dar și a funcției void serialEvent(). Aceasta este o funcție specială, care este apelată la sfârșitul fiecărei iterații din loop(). Încărcați proiectul și deschideți Serial Monitor.
Experimentați funcționarea programului, prin transmiterea de mesaje atât cu opțiunea No line ending, cât și cu Newline
În general, un sistem de operare controlează procesele și resursele hardware ale unui calculator, definind regulile care permit unui program să acceseze servicii și să interacționeze cu sistemul de calcul.
Pentru a fi considerat de timp real, un sistem de operare trebuie să îndeplinească mai multe caracteristici, precum:
FreeRTOS reprezintă un kernel (doar baza unui sistem de operare, deoarece sistemele încorporate nu necesită toate caracteristicile unui OS generalizat), cu ajutorul căruia aplicațiile de timp real pot respecta limite de timp hard. De asemenea, poate fi utilizat conceptul de multitasking, unde schimbarea contextului de execuție pe un procesor cu un singur nucleu conduce la execuția cvasi-paralelă a mai multor secțiuni de cod din aplicație. Firul de execuție care are acces la resursele hardware este ales de către algoritmul de planificare, prin
asignarea de priorități și urmărirea perioadelor de timp în care un fir de execuție este suspendat.
FreeRTOS este open-source, ceea ce înseamnă că nu este necesară achiziționarea acestuia (după cum sugerează și numele) pentru utilizare în aplicații comerciale. Totuși, există posibilitate achiziționării de garanții suplimentare din partea dezvoltatorului Real Time Engineers Ltd.,
dacă situația din proiect o cere. Ca medii de dezvoltare compatibile, pot fi amintite familiile de microcontrolere ARM Cortex, Atmel SAM, Cypress PSoC, Microchip PIC etc.
Compatibilitatea cu unii dintre membrii familiei Arduino (Uno, Nano, Leonardo, Mega) vine tocmai din utilizarea microprocesoarelor amintite ulterior. În plus, kernel-ul a fost portat sub formă de bibliotecă, instalarea realizându-se din Library Manager. Trebuie specificat că toate funcțiile FreeRTOS pot fi utilizate pe Arduino, iar dintre acestea se pot aminti:
Toate caracteristicile menționate anterior sunt utilizate cu ajutorul API-urilor specializate. Un Application Programming Interface (API) reprezintă un grup de funcții ce pot fi apelate, fiecare având un rezultat diferit. De exemplu, crearea semafoarelor și mutexurilor, ștergerea și modificarea acestora se realizează cu ajutorul Semaphore API. Toate aceste funcții sunt definite și prezentate detaliat în documentația FreeRTOS, disponibilă pe site-ul https://www.freertos.org/.
Fiind portat sub formă de bibliotecă, FreeRTOS pentru Arduino se instalează foarte ușor, accesând Library Manager (Tools → Manage Libraries…). Căutați FreeRTOS și instalați ultima versiune. Tot din această fereastră puteți actualiza biblioteca, atunci când sunteți notificați despre noi variante disponibile.
Primul exemplu pe care il vom rula poate fi accesat din File → Examples → FreeRTOS → TaskStatus .
După ce deschideți acest exemplu, urmăriți pas cu pas elementele din cod, pentru a înțelege modul de funcționare a FreeRTOS în Arduino.
Așa cum ați observat, în acest proiect este exemplificat lucrul cu taskuri, dar și suspendarea și reluarea acestora. După ce încărcați proiectul pe placă, utilizați Serial Monitor pentru a transmite literele s sau r. Veți vedea cum taskul de aprindere și stingere a LED-ului built-in este suspendat sau reluat.
Ultimul exemplu din acest laborator este File → Examples → FreeRTOS → Mutex .
În acest exemplu, utilizăm un mutex pentru a accesa o resursă comună, în acest caz o variabilă globală.