This is an old revision of the document!


Laboratorul 06: Introducere Arduino

1. Introducere

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:

2. Instalarea Arduino IDE

Pasul 1: Download

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ă.

Pasul 2: Instalarea

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.

Pasul 3: Rularea Arduino IDE

După instalare, rulați Arduino IDE. Interfața arată astfel:

În cazul în care nu ați mai lucrat cu Arduino, familiarizați-vă mai întai cu interfața Arduino IDE.

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.

Pasul 4: Rularea unui exemplu

Exemplul arată astfel:

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.

Pentru a continua, conectați placa Arduino la PC și verificați portul de comunicare, accesând Control Panel → Device Manager → Ports (COM & LPT)

Selectați modelul de Arduino și portul identificat anterior


Încărcați codul pe placă

În acest moment, LED-ul de pe Arduino ar trebui să se aprindă și să se stingă, cu o frecvență de 0.5Hz.

Pasul 5: Rularea unui exemplu cu Serial Monitor

Ce este Serial Monitor?
Serial Monitor este o fereatră prin care putem vedea datele ce sunt transmise de la plăcuța Arudino. De asmenea, putem transmite valori sau alte inputs către Arudino. Pentru a accesa această fereastră, dați click pe lupa din colțul stânga sus sau folosiți tastele CTRL + Shift + M

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.

setup() vs loop()
Acestea sunt cele două funcții de bază într-un proiect Arduino. Funcția void setup() este rulată o singură dată, atunci când proiectul este încărcat pe placă sau când este realimentată cu energie electrică. În mod normal, în această funcție sunt inițializate variabilele, sunt setați pinii, este pornită magistrala serială etc. Cea de-a doua funcție este void loop(), care este rulată iterativ, atât timp cât placa este sub tensiune. Este echivalentul funcției main() dintr-un program clasic, diferența fiind rularea continuă a acesteia. Astfel, logica proiectului este descrisă aici.

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

2. Instalarea FreeRTOS

Î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:

  • Respectarea limitelor de timp (hard și soft);
  • Utilizarea de algoritmi de planificare specializați și de priorități de execuție;
  • Asigurarea unui răspuns determinist la rularea succesivă a unei secțiuni de cod;
  • Utilizarea de mecanisme de comunicație între procese, multitasking, limitarea accesului mutual la resurse.

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:

  • Preempțiune pentru taskurile cu prioritate mai mare;
  • Asignarea și modificarea priorității taskurilor;
  • Mecanisme de notificare;
  • Cozi;
  • Semafoare și mutexuri;
  • Timere software.

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/.

patr/laboratoare/06.1638517784.txt.gz · Last modified: 2021/12/03 09:49 by alexandru.ionita99
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0