Ce e Arduino?
Arduino este o platformă hardware și software pentru construirea de sisteme electronice controlate prin intermediul unui microcontroller. Acesta se prezintă sub forma unui microcontroller montat pe o placă de dezvoltare, care poate fi programat să execute comenzi și să interacționeze cu alte componente electronice prin intermediul intrărilor/ieșirilor digitale și analogice.
Arduino a devenit popular datorită flexibilității sale și accesibilității, fiind potrivit atât pentru proiecte personale, cât și pentru aplicații de producție mici sau medii. Unul dintre avantajele care recomandă platforma Arduino este comunitatea activă de utilizatori și dezvoltatori care oferă suport, documentație și cod sursă deschis, ceea ce îl face ușor de utilizat de către începători.
În general, Arduino poate fi utilizat pentru a controla dispozitive electronice, precum leduri, afișaje, motoare, senzori și alte componente, și poate fi programat pentru a efectua o gamă largă de funcții, de la acționarea unui LED până la crearea unui robot sau a unui sistem de monitorizare a temperaturii.
Ce include un Arduino?
În cele mai multe variante, Arduino este bazat pe microcontroller-ul ATMega328P. ATmega328P este un microcontroller foarte popular produs de compania https://www.microchip.com/\Microchip, care face parte din familia AVR de microcontroale. Este folosit ca microcontroller pe placile Arduino datorită raportului bun între puterea de calcul și consumul de energie, numărul mare de periferice integrate. dimensiunii compacte și costului redus.
ATmega328P are un nucleu RISC de 8 biți, ce rulează la o frecvență de până la 20 MHz, iar memoria programabilă are o capacitate de 32KB Flash, 2KB RAM și 1KB EEPROM. De asemenea, acesta are o gamă largă de periferice, inclusiv până la 23 de pini digitali de intrare/ieșire, 6 intrări analogice, 2 timeri/counteri și o interfață serială USART.
Aceste caracteristici fac ATmega328P un microcontroller puternic și versatil, potrivit pentru o gamă largă de aplicații, de la controlul dispozitivelor electronice simple până la proiectarea de sisteme mai complexe. De exemplu, datorită perifericelor sale de comunicare serială, ATmega328P poate fi utilizat pentru a crea interfețe pentru senzori și dispozitive externe sau pentru a controla dispozitive de comunicație. De asemenea, capacitățile sale de control analogic îl fac potrivit pentru aplicații precum monitorizarea temperaturii și a altor variabile fizice.
În general, o placă Arduino este compusă din mai multe componente în afară de microcontrollerul ATMega328P. În timp ce designul și componentele pot varia în funcție de modelul plăcii, unele dintre componentele comune includ:
- Regulator de tensiune - Această componentă convertește tensiunea de alimentare de la sursa externă într-o tensiune de lucru stabilă pentru microcontroller și alte componente. Tensiunea de alimentare uzuală a ATMega328P este de 5V astfel încânt în majoritatea cazurilor, regulatorul de tensiune utilizat este o sursă liniară de tensiune 7805. Pentru că o parte dintre senzorii care se pot conecta la Arduino necesită 3.3V, în multe cazuri un Arduino poate conține și un regulator liniar pentru această tensiune.
- Cristal cu cuarț - Cristalul cu cuarț este cel care furnizează semnalul de ceas necesar pentru sincronizarea operațiilor microcontroller-ului. Nu este întotdeauna necesar, deoarece ATMega328P conține și un oscilator intern, mai puțin precis, bazat pe componente discrete.
- Interfață serială - Interfața serială permite comunicația cu alte dispozitive prin intermediul portului serial. Majoritatea Arduino conțin și un circuit care emulează o interfață serială prin portul USB.
- Buton de reset - Acest buton resetează programul din microcontroller și îl repornește în caz de necesitate.
- LED-uri - Acestea furnizează informații vizuale pentru utilizator, cum ar fi starea alimentării, activitatea interfeței seriale sau starea activității.
Diagrama unui Arduino simplu care poate fi construit folosind un breadboard este disponibila aici: Cum construiesc un Arduino?
Ce pot sa conectez la un Arduino?
Înainte de toate, Arduino este un mic calculator programabil care, spre deosebire de calculatorul de pe care citești acest text, poate interacționa direct cu lumea reală. Arduino face acest lucru prin pinii de care dispune.
Arduino conține:
Pini digitali, numerotați de la D0 la D13.
Acești pini pot fi programați fie să genereze să producă un potențial de 0V (numit și LOW) sau 5V (numit și HIGH), putând comanda direct LED-uri de putere mică, furnizând un curent maxim de 40mA. Pinii digitali pot fi configurați și ca intrări digitale fiind sensibili la tranziția tensiunii către 0V sau 5V. Deoarece impedanța acestora de intrare este de ordinul zecilor de MOhmi, prin software pot fi programate rezistoare de aproximativ 10 kOhmi conectate între pini și fie 0V, fie 5V. Aceste rezitoare poartă denumirea de rezistoare PULL UP, atunci când sunt conectate la 5V sau PULL DOWN, atunci când sunt conectate la 0V.
Pini analogici, numerotați de la A0 la A5.
Arduino are unii pini care sunt capabili să măsoare semnale analogice, acești pini fiind numiți “pini analogici”. În contrast cu pini digitali care pot fi doar 'HIGH' sau 'LOW', pini analogici pot citi semnale variabile, cum ar fi tensiunea electrică sau intensitatea luminii.
Acești pini analogici sunt utilizați pentru citirea semnalelor analogice de la senzori sau alte dispozitive care generează astfel de semnale. Spre deosebire de semnalele digitale, semnalele analogice pot varia într-un interval continuu, ceea ce le face ideale pentru măsurarea și monitorizarea unor variabile precum temperatura, presiunea, umiditatea sau luminozitatea.
Pentru a citi semnale analogice, pinii analogici ai Arduino pot fi utilizați împreună cu funcția 'analogRead()'. Această funcție permite citirea valorilor analogice de la pinii respectivi și returnează o valoare între '0' și '1023', reprezentând nivelul analogic al semnalului măsurat. Pentru a obține valoarea reală a semnalului măsurat, este necesară convertirea valorii citite în unități corespunzătoare de măsură, utilizând formule specifice pentru senzorul respectiv.
Pinul AREF
Pinul 'AREF' (Analog REFerence) al Arduino este utilizat pentru a oferi o sursă externă de referință analogică pentru măsurarea semnalelor analogice de pe pinii analogici ai plăcii Arduino. Prin utilizarea acestei surse externe de referință, se poate obține o măsurătoare mai precisă a semnalelor analogice decât în cazul în care se folosește referința implicită a plăcii.
Pinul 'AREF' este de obicei lăsat nepopulat și referința implicită a plăcii este utilizată pentru măsurarea semnalelor analogice. Cu toate acestea, în anumite situații, cum ar fi atunci când se dorește o precizie mai mare în măsurarea semnalelor analogice sau când se utilizează senzori care necesită o referință specifică, poate fi necesară utilizarea unei surse externe de referință analogică prin conectarea acesteia la pinul 'AREF'.
Pentru a utiliza o sursă externă de referință analogică, trebuie mai întâi să se facă o conexiune fizică între această sursă și pinul AREF. După aceea, se poate seta referința utilizată în codul Arduino prin intermediul funcției 'analogReference()', care acceptă unul dintre următoarele parametri: 'DEFAULT', 'INTERNAL' sau 'EXTERNAL'. Dacă se dorește utilizarea sursei externe de referință conectată la pinul AREF, se va folosi parametrul 'EXTERNAL'.
Pini PWM, D3, D5, D6, D9, D10 și D11.
Pinii PWM (Pulse Width Modulation) ai Arduino sunt pini digitali care permit generarea de semnale PWM, adică semnale digitale care pot fi transformate în semnale analogice cu ajutorul unui filtru RC sau a unui amplificator.
Semnalele PWM sunt semnale digitale care variază între două niveluri de tensiune, numite nivelul 'LOW' (logic 0) și nivelul 'HIGH' (logic 1), și care au o perioadă constantă. În interiorul fiecărei perioade, durata impulsului (timpul în care semnalul este în nivelul 'HIGH') poate fi variată, astfel încât raportul dintre durata impulsului și perioada semnalului poate fi modificat. Această modificare a raportului dintre durata impulsului și perioada semnalului permite obținerea unui nivel de tensiune mediu variabil pe un anumit interval, ceea ce face ca semnalele PWM să fie utile în controlul motoarelor, a LED-urilor sau a altor dispozitive care necesită o tensiune variabilă.
Pe placa Arduino există anumiți pini digitali care sunt capabili să genereze semnale PWM, care sunt marcați cu simbolul '~' în fața numărului pinului. Acești pini sunt de obicei utilizați pentru a controla viteza unui motor DC sau pentru a modula luminozitatea unui LED.
Pentru a genera semnale PWM pe un pin Arduino, se poate utiliza funcția 'analogWrite()' în codul Arduino, care acceptă două parametri: numărul pinului pe care se dorește să se genereze semnalul PWM și valoarea raportului dintre durata impulsului și perioada semnalului, exprimată ca un număr întreg între 0 și 255. Valoarea 0 corespunde unui raport de 0%, ceea ce înseamnă că semnalul este mereu în nivelul 'LOW', iar valoarea 255 corespunde unui raport de 100%, ceea ce înseamnă că semnalul este mereu în nivelul 'HIGH'. Alte valori corespund unui raport de durată a impulsului față de perioada semnalului între 0% și 100%, ceea ce permite controlul nivelului de tensiune mediu generat pe acel pin.
Interfață UART
Interfața UART (Universal Asynchronous Receiver-Transmitter) este o interfață serială de comunicație utilizată pentru transferul de date între dispozitive. Aceasta permite transmiterea de date între două dispozitive fără a necesita un semnal de ceas suplimentar. Datele sunt transmise asincron, ceea ce înseamnă că nu există un semnal de ceas comun între cele două dispozitive. În schimb, semnalele de start și stop sunt utilizate pentru a defini începutul și sfârșitul fiecărui byte de date transmis.
Interfața UART este folosită de multe dispozitive, cum ar fi microcontrolere, procesoare, module GPS, module de radiofrecvență și multe altele. Este o interfață simplă și eficientă pentru transferul de date între dispozitive în aplicații de automatizare, roboți, IoT, comunicații wireless, controlere de sistem și multe altele.
Majoritatea plăcilor de dezvoltare Arduino au pini specifici pentru interfața UART (Universal Asynchronous Receiver-Transmitter), care permite comunicarea serială între placa Arduino și alte dispozitive. În general, acești pini sunt numiți 'TX' (transmitere) și 'RX' (recepție).
Pini specifici pentru UART sunt prezenți pe următoarele plăci Arduino UNO și compatibile: pinul 0 ('RX') și pinul 1 ('TX').
Este important să verifici documentația specifică a plăcii Arduino pe care o folosești pentru a identifica pini specifici pentru UART și pentru a configura comunicarea serială cu dispozitivele externe.
Interfață I2C
Interfața I2C (Inter-Integrated Circuit) este un protocol de comunicație serială sincronă folosit pentru conectarea dispozitivelor digitale între ele. Acesta permite transmiterea datelor între dispozitivele conectate prin intermediul unui fir de date și unul de ceas, economisind astfel numărul de pini necesari pentru a conecta dispozitivele.
I2C este folosit pentru a conecta dispozitive precum senzori, afișaje, memorii și alte circuite integrate la un microcontroller sau la un alt dispozitiv digital. De asemenea, poate fi utilizat și pentru a controla mai multe dispozitive de pe același fir de date.
Pe placa Arduino, pini specifici sunt dedicați pentru interfața I2C, aceștia fiind numiți 'SDA' (Serial Data) și 'SCL' (Serial Clock). Acești pini sunt adesea identificați pe placa Arduino cu litera “A” urmată de numărul pinului, cum ar fi 'A4' și 'A5' pe modelele mai vechi și 'SDA' și 'SCL' pe modelele mai noi.
Interfață SPI
SPI (Serial Peripheral Interface) este o interfață serială sincronă utilizată pentru a conecta dispozitive periferice cu un controller principal (master). Această interfață este folosită pentru transmiterea de date între dispozitive cu viteze de transfer rapide și este utilizată într-o gamă largă de aplicații, cum ar fi comunicațiile wireless, memorii flash, senzori, convertoare analog-digitale, interfețe audio, etc.
Arduino dispune de mai mulți pini care pot fi utilizați pentru SPI, dar în general, pini precum MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Serial Clock) și SS (Slave Select) sunt utilizați în această interfață. În funcție de modelul Arduino, acești pini pot fi numiți diferit, dar funcționalitatea lor este aceeași. De exemplu, pe Arduino UNO, pini 11, 12 și 13 sunt utilizați pentru MOSI, MISO și SCK, în timp ce pinul 10 este utilizat pentru SS. Este important de remarcat că pinul SS poate fi configurat pentru a selecta mai multe dispozitive slave, prin intermediul unei selecții software.
Versiuni utilizate în acest curs
Seeduino Lotus
Seeduino Lotus este o plăcuță de dezvoltare creată de compania Seedstudio, compatibilă în totalitate cu Arduino Uno, care folosește în locul componentelor through-hole ale Arduino UNO, aceleași componente dar în format SMD și care are în plus conectori pentru senzori care folosesc interfața Grove. Apasă aici pentru a accesa documentația originală.
Arduino Uno R4 WiFi
Arduino Uno R4 WiFi este ultimul membru oficial al familiei de plăcuțe de dezvoltare create de compania Arduino. Spre deosebire de Arduino Uno, R4 WiFi conține un procesor mult mai puternic împreună cu un modul de conectare la WiFi integrat. Plăcuța se poate programa folosind același mediu de dezvoltare cu celelalte plăcuțe din familia Arduino.
BreadboarDuino
BreadboarDuino este o variantă pe care poți să o construiești singur, folosind componente discrete. Este baza de pornire a dezvoltării de produse inteligente integrate. Poți vedea aici cum se construiește un BreadboarDuino.

