Bogdan's Docs

Table of Contents

Table of Contents

  • Arduino
    • Istoric
    • Microcontroller
    • De ce Arduino?
    • Ce conține o plăcuță Arduino
    • Cum se programează Arduino?
    • Resurse

Ideas

  • Artificial Intelligence
    • Bond Pricing
    • Kubernetes Inference
    • Knowledge Bot
    • Ready to Use Models
    • Satellite Damage Detection

Curs IoT si AI (ro) Resources

  • Links
    • Artificial Intelligence
  • Recipes
    • MacOS
Bogdan's Docs
Docs » iot-si-ai:arduino

Arduino

Istoric

IxD se referă la Interacțiunea Om-Dispozitiv (Interaction Design în limba engleză). Este un domeniu al designului care se concentrează asupra modului în care oamenii interacționează cu produsele digitale sau interfețele utilizator. În esență, Interacțiunea Om-Dispozitiv este legată de proiectarea interfețelor și experiențelor digitale într-un mod care să faciliteze și să îmbunătățească interacțiunea dintre oameni și tehnologie, luând în considerare nevoile și așteptările acestora

Calculul fizic, se referă la extinderea domeniului programelor de calculator, software-uri sau sisteme informatice dincolo de spațiul intern al stărilor mașinilor de calcul. Prin intermediul electronicii, calculatoarele pot percepe mai multe despre lume și pot avea un impact fizic asupra mediului înconjurător.

Întrebare: Ce dimensiune are spațiul stărilor calculatorului pe care-l folosești în acest moment?

Arduino a apărut în 2005, în cadrul Interaction Design Institute Ivrea din Ivrea, Italia, înglobând conceptele interacțiunii om-dispozitiv și al calcului fizic. A fost precedat în cadrul aceluiași institut, de alte două proiecte cu care este în strânsă legătură: Processing (2001) și Wiring (2003).

Processing este o bibliotecă grafică și un mediu de dezvoltare integrat (IDE) simplu și accesibil, special conceput pentru programarea și vizualizarea creativă, fiind frecvent utilizat pentru proiecte în domeniul artei digitale și al programării interactive. Poți descărca processing de aici, proiectul fiind încă activ.

Wiring poate fi considerat un strămoș al Arduino, fiind alcătuit dintr-un mediu de dezvoltare integrat (IDE) inspirat de Processing și de o plăcuță de dezvoltare cu microcontroller. Poți afla mai multe detalii despre Wiring accesând pagina proiectului aici. Proiectul nu mai este activ la momentul redactării acestui material.

Microcontroller

Un microcontroller este un mic dispozitiv electronic care înglobează funcții esențiale de calcul și control într-un singur chip. Acesta conține un procesor, memorie și porturi de intrare/ieșire, permițându-i să execute programe mici și să interacționeze cu mediul înconjurător. Imaginați-vă un mic creier al sistemului, care poate primi informații de la senzori, procesa datele și apoi să ofere comenzi sau să controleze alte dispozitive în funcție de aceste date.

Microcontrollerele sunt folosite într-o varietate de aplicații, de la electrocasnice inteligente și dispozitive medicale până la proiecte DIY (Do It Yourself) și roboți. Avantajul major al microcontrollerelor constă în dimensiunile lor reduse și în eficiența energetică, ceea ce le face ideale pentru integrarea în proiecte unde spațiul și consumul de energie sunt critice. În esență, microcontrollerele sunt nucleul tehnologic care stă la baza unor inovații semnificative în domeniul electronicelor și al Internet of Things (IoT).

Internet of Things (IoT), sau Internetul Lucrurilor în limba română, se referă la conceptul de conectarea la internet a diferitelor dispozitive fizice, permițându-le să comunice și să schimbe date între ele fără intervenția umană directă. Ideea centrală este să aducem obiectele din lumea fizică în mediul digital, creând astfel un ecosistem interconectat.
Pentru a înțelege mai bine conceptul, poți să-ți imaginezi diverse dispozitive cotidiene care sunt dotate cu senzori și capacitatea de a se conecta la internet. Acestea pot include de la becuri inteligente și termostate la mașini, dispozitive de sănătate și chiar cutii de produse în lanțul de aprovizionare. Prin integrarea acestor dispozitive în rețea, ele devin capabile să colecteze și să transmită date, să primească comenzi și să interacționeze în timp real.
De exemplu, o casă inteligentă în cadrul IoT ar putea avea termostate care ajustează automat temperatura în funcție de preferințele tale, senzori de mișcare care declanșează iluminatul în camere doar atunci când este nevoie, și un sistem de securitate care îți trimite notificări pe telefon atunci când detectează activități neobișnuite.
IoT adaugă un nivel suplimentar de inteligență și conectivitate în obiectele din jurul nostru, facilitând o gamă largă de aplicații care pot îmbunătăți eficiența, comoditatea și chiar calitatea vieții noastre.

Primul microcontroller este atribuit companiei Intel și a fost realizat în 1971 sub numele de i4004 la comanda companiei japoneze Busicom. i4004 a fost folosit în construirea de calculatoare electronice. Dacă te interesează mai mult, poți citi o scurtă istorie a microcontrollerelor realizată de Toshiba.

În prezent, există numeroase dispozitive populare care utilizează microcontrollere, contribuind la diversitatea tehnologiei moderne. Iată câteva exemple:

  • Smartphones și Dispozitive Mobile: Telefoanele mobile sunt echipate cu microcontrollere puternice care gestionează diverse funcționalități, de la procesarea apelurilor telefonice până la execuția aplicațiilor complexe.
  • Electrocasnice Inteligente: Mașini de spălat, cuptoare, termostate și alte electrocasnice inteligente utilizează microcontrollere pentru a monitoriza și controla diferite aspecte, oferind astfel funcționalități îmbunătățite și eficiență energetică.
  • Dispozitive de Sănătate Portabile: Smartwatches, brățări de fitness și alte dispozitive de monitorizare a sănătății utilizează microcontrollere pentru a colecta și procesa datele biometrice, precum pulsul și nivelul de activitate fizică.
  • Sisteme de Securitate Smart: Camerele de supraveghere inteligente, senzorii de mișcare și sistemele de acces se bazează pe microcontrollere pentru a oferi funcționalități de securitate avansate și pentru a gestiona comunicarea cu utilizatorii.
  • Jucării Inteligente și Drone: Multe jucării interactive și drone sunt echipate cu microcontrollere pentru a oferi funcționalități de control și interacțiune, oferind astfel o experiență de utilizare mai captivantă.
  • Dispozitive IoT (Internet of Things): O gamă largă de dispozitive conectate la internet, precum termostatele inteligente, becurile smart și senzorii de mediu, utilizează microcontrollere pentru a colecta, procesa și transmite date în rețea.

Aceste exemple subliniază versatilitatea și prevalența microcontrolerelor într-o varietate de domenii și aplicații, jucând un rol esențial în facilitarea unei experiențe tehnologice moderne.

În esență, microcontrollerele servesc ca punți tangibile între lumea abstractă a codului și lumea fizică, facilitând interacțiunea om-dispozitiv prin transformarea comenzilor digitale în acțiuni palpabile și experiențe interactive.

De ce Arduino?

Placuța de dezvoltare Basic Stamp este una dintre primele plăci de dezvoltare cu microcontrolere. Aceasta a fost lansată de Parallax Inc. în 1992 și a jucat un rol semnificativ în popularizarea programării microcontrollerelor. Utiliza pentru programare un dialect al limbajului de programare Basic.

Basic Stamp a fost conceput pentru a facilita programarea microcontrolerelor, punând un accent deosebit pe accesibilitatea pentru amatori și începători. Prin urmare, este un exemplu notabil în evoluția plăcilor de dezvoltare cu microcontrolere, permițând entuziaștilor să exploreze și să învețe despre lumea microcontrollerelor într-un mod accesibil.

Arduino este mai mult decât o plăcuță de dezvoltare, iar datorită acestui fapt a reușit să devină cea mai populară platformă de dezvoltare pentru comunitatea de makers.

Termenul makers se referă la o comunitate de oameni pasionați de creație, inovație și DIY (Do It Yourself). Makers sunt indivizi care își folosesc abilitățile tehnice pentru a proiecta, construi și modifica obiecte sau dispozitive, de obicei la scară mică, în propriile ateliere sau laboratoare. Aceștia pot implica o gamă largă de competențe, inclusiv programare, electronică, design, lucru cu materiale diverse și multe altele.
Makers explorează idei creative, dezvoltă prototipuri, și împărtășesc deschis cunoștințele și proiectele lor cu comunitatea. Mișcarea maker a câștigat popularitate, mai ales în ultimii ani, datorită accesibilității sporite la tehnologii precum imprimantele 3D, plăci de dezvoltare (cum ar fi Arduino și Raspberry Pi), și numeroase resurse online care facilitează împărtășirea cunoștințelor și a proiectelor.

Arduino înseamnă totalitatea componentelor descrise în continuare:

  • Un limbaj de programare derivat din C++ împreună cu bibliotecile necesare pentru controlul funcțiilor și perifericelor unui microcontroller.
  • Un mediu de dezvoltare integrat prietenos, derivat din Processing, care are o curbă lentă de învățare, potrivit începătorilor: Arduino IDE
  • Un manual de utilizare al componentelor software cu exemple care pot fi folosite pentru prototiparea rapidă: Arduino Reference
  • O comunitate activă de makers: Arduino Forum
  • Inițial o plăcuță de dezvoltare bazată pe ATMega8 accesibilă ca preț, în prezent 47 de plăcuțe de dezvoltare diferite.

Plăcuța de dezvoltare Arduino a fost concepută pentru a fi mai robustă și mai iertătoare decât Wiring sau alte microcontrollere mai vechi. Studenții și profesioniștii, în special cei cu experiență în design sau arte, obișnuiau des să își deterioreze microcontrollerul în câteva minute de utilizare, doar prin conectarea greșită a firelor. Această fragilitate reprezenta o problemă majoră nu doar din punct de vedere financiar, ci și pentru succesul plăcilor în afara cercurilor tehnice. Plăcuța Arduino inițială oferea posibilitatea de a schimba microcontrollerul, astfel încât, în caz de deteriorare, putea fi înlocuit doar cipul, nu întreaga placă. O altă diferență semnificativă între Arduino și alte plăcuțe de dezvoltare cu microcontrollere este costul. În 2005, un alt microcontroller popular, Basic Stamp, costa aproape de patru ori mai mult decât un Arduino, iar în 2014, o plăcuță Wiring costa aproape de două ori prețul unei plăci Arduino.

Ce conține o plăcuță Arduino

Arduino Uno este construit în jurul microcontrollerului ATMega328PU. Circuitul integrat cu 28 de pini conține aproape tot ceea ce este necesar pentru a face Arduino să functioneze. Totuși, pentru a-l face ușor de folosit de către începători, pe lângă microcontroller se găsesc și următoarele componente:

  • Un rezonator cu cuarț Q1 cu frecvența de rezonanță de 16MHz, împreună cu condensatoarele necesare completarea circuitului, C3 și C4, ambele de 15pF, dar fără a avea o valoare critică, orice valoare între 12pF și 22pF putând fi utilizată atâta timp cât C3 și C4 au aceeași valoare. Cele trei componente au funcția de a stabili frecvența ceasului intern al ATMega328PU la 16MHz, făcând circuitul capabil să execute o instrucțiune la fiecare 62.5ns. ATMega328PU deține și un ceas intern, mai puțin precis, de aproximativ 8MHz. Cu toate acestea, Arduino folosește cele trei componente externe deoarece protocoalele de comunicație pe care acesta le folosește sunt de cele mai multe ori sensibile la variațiile ceasului. Chiar și în aceste condiții, ceasul Arduino nu este precis fiind dependent de varianțiile de temperatură, de umiditate, ale tensiunii de alimentare și vibrații mecanice.
  • Un stabilizator de tensiune alcătuit din componentele IC1, C1 și C2. IC1 este un stabilizator liniar integrat de tipul 7805, având tensiunea de ieșire fixă de 5V față de terminalul GND. Cele două condensatoare au rolul de a filtra eventualele variații ale sursei de alimentare. Valoarea lor este de 100nF și din nou nu este critică, orice valoare între 47nF și câțiva uF este suficientă. Rolul stabilizatorului liniar este de a fixa tensiunea de alimentare a ATMega328PU în intervalul acceptat, care în funcție de variantă, este între 3 și 5.5V. În cazul în care folosești pentru alimentare portul USB sau orice alimentator care generează o tensiune stabilă între 4.5 și 5.5V, poți să elimini aceste componente.
  • Un circuit de reset, alcătuit din butonul S1, rezistorul R1 și condensatorul C6. Rolul rezistorului R1 este de a menține intrarea de reset a ATMega328PU la nivelul de 5V, nivel care nu permite resetarea circuitului. Apăsând butonul S1, potențialul pinului 1 scade brusc la 0V față de GND, resetând microcontrollerul. Rezistorul R1 poartă numele de pull-up și din nou nu are o valoare critică. Orice valoare între 1K și 47K poate fi folosită. Condensatorul C6 este folosit pentru cuplaj. În momentul în care apare o variație de potențial al terminalului DTR, această variație este transmisă sub forma unui puls către pinul 1, resetând o singură dată microcontrollerul. După ce microcontrollerul este programat, C6 și S1 pot fi eliminate, fiind necesar doar rezistorul R1.
  • Condesatorul C5 este un condensator e filtrare pentru tensiunea internă de referință folosită pentru măsurarea valorilor analogice. Valoarea lui nu este critică, putând folosi orice valoare între 10nF și 470nF. Cu cât referința internă este mai stabilă și mai lipsită de zgomot, cu atât măsurătorile efectuate sunt mai exacte. Pinul 21 (AREF) poate fi conectat la o sursă externă de tensiune stabilizată, putând astfel crește precizia măsurătorilor dincolo de performanțele ATMega328PU.
  • Terminalul ICSP este folosit pentru programrea inițială a Arduino, prin intermediul acestuia putând fi încărcat bootloaderul specific Arduino. Tot acest terminal poate fi folosit și pentru metode mai avansate de utilizare a microcontrollerului.
  • Terminalul Serial este folosit pentru programarea Arduino folosind interfața serială - de obicei un adaptor USB/serial. Poți folosi acest port de programare numai după ce în microcontroller a fost scris programul numit bootloader. De obicei, pe plăcuțele de dezvoltare comerciale cum sunt Arduino Uno, Seeduino Lotus sau Arduino Uno Rev4 WiFi acest port nu este direct disponibil, circuitul convertor USB/Serial fiind deja prezent pe plăcuță. Un lucru interesant este că pentru a reduce costul, conversia USB/Serial se realizează tot cu ajutorul unui microcontroller.
Întrebare: Prin ce metode pot să cresc precizia ceasului intern al Arduino?

Cum se programează Arduino?

Ce conferă unicitate unui Arduino? Multe aspecte, dar unul dintre cele mai importante este modul în care fiecare plăcuță Arduino poate fi programată cu ușurință folosind Software-ul Arduino (IDE). Este suficient să o conectezi la portul USB al calculatorului și să apeși iconița “Upload” pentru a începe un proces care transferă schița ta în memoria Flash a microcontrollerului.

Comportamentul descris mai sus se întâmplă datorită unei bucăți speciale de cod care este executată la fiecare resetare a microcontrollerului și care caută codul care trebuie încărcată folosindu-se de portul serial/USB și utilizând un protocol și o viteză specifice. Dacă nu se detectează nicio conexiune, microcontrollerul începe să execute codul existent în memorie.

Această mică bucată de cod (în mod obișnuit 512 bytes) se numește bootloader și se află într-o zonă a memoriei microcontrollerului - la sfârșitul spațiului de adrese - care nu poate fi reprogramată în mod obișnuit.

Întregul proces de încărcare a codului bootloader și programarea corectă a siguranțelor pentru a transforma un microcontroller ATmega într-un “Arduino” este gestionat de Software-ul Arduino (IDE). Găsești în interfață un meniu specific care îți permite să utilizezi o varietate de dispozitive de programare, printre care și un alt Arduino Arduino as ISP.

Resurse

https://excalidraw.com/#json=Qy3MBomurhvcFF7eFY1Pe,CPRPwUP4JTJiUErJ91e_EQ

Previous Next