Introducere
Odată cu extinderea accesului la tehnica de calcul prin apariţia primelor
calculatoare personale (PC) în anii `80 utilizatorii şi-au pus problema interfaţării
acestora cu dispozitive fizice reale în vederea executării anumitor comenzi
palpabile. La început calculatorul personal oferea posibilitatea creării unei ”lumi
virtuale” constituită din text, formule şi imagini care dispărea odată cu încetarea
funcţionării acestuia. Utilizatorii doreau însă mai mult şi anume folosirea
calculatorului pentru efectuarea unor comenzi şi operaţiuni fizice concrete. Desigur
existau specialişti şi exista şi infrastructura materială adecvată pentru transpunerea
acestor deziderate în realitate, dar acest lucru reprezenta apanajul unui cerc restrâns
de utilizatori. Era nevoie aşadar de imaginarea unui sistem fizic (hardware) şi
informatic (software), destinat unei comunităţi largi de utilizatori, care să nu
implice utilizarea unor resurse materiale importante sau o pregătire de specialitate
în domeniul informaticii, dar care să extindă posibilităţile de utilizare a
calculatorului personal la acţiuni practice concrete. Aşa sa născut ideea creării unui
mic dispozitiv care să includă principalele caracteristici ale unui calculator şi care
să reprezinte o interfaţă între un PC şi elemente de execuţie (actuatori), sau
elemente de culegere a unor informaţii din mediul exterior (senzori). Ideea s-a
materia materializat mai târziu prin apariţia platformei Arduino. Aceasta include
atât sistemul de programare IDE, cât si o platformă fizică electronică reală care să
permită o conexiunea reală cu elemente externe. Modulul fizic se conectează
simplu la un PC printr-un cablu USB, iar programarea se face folosind limbajul
c++, accesibil unei mase largi de utilizatori. Din acest moment aplicaţiile de
automatizare, robotizare şi chiar inteligenţă artificială sau multiplicat foarte mult,
platforma Arduino ducând la apariţia unei adevărate comunităţi de specialişti sau
simpli amatori implicaţi în conceperea şi realizarea unor astfel de sisteme. Dacă la
început elementele de execuţie şi control erau conectate la placa Arduino prin
conductori reali, îngreunând şi limitând conectivitatea dintre acestea, în scurt timp,
necesitatea transmiterii la mare distanţă a datelor, a dus la înlocuirea lor cu module
de conectare fără fir (wireless). Au fost realizate module speciale de transmisie
bazate pe folosirea ultrasunetelor, radiaţiei infraroşiii (IR), sau a undelor radio.
ataşabile plăcii Arduino. care permiteau o conectivitate simplificată între elemente.
În multe cazuri acestea permit doar o conexiune pereche (P2P peer to peer) sau
între un număr limitat de participanţi şi numai între echipamente de acelaşi tip sau
compatibile. Odată cu extinderea şi dezvoltare internetului s-a pus problema
conexiunilor la mare distanţă prin reţele web şi a compatibilităţii cu alte
echipamente inteligente, cum ar fi dispozitivele Android sau IOS. De aici
necesitatea unor sisteme hardware şi software care să permită conexiunea între
7
Android şi Arduino fie în mod direct P2P, fie prin intermediul reţelelor web locale
sau la distanţă. Pentru a uşura această comunicare a fost necesară şi dezvoltarea
unor aplicaţii specifice dispozitivelor Android sau IOS compatibile cu Arduino. La
ora actuală aceste sisteme sunt bine puse la punct şi sunt prezentate atât în literatura
de specialitate cât şi prin postări pe internet, dar pentru înţelegerea lor o prezentare
sistematică de la simplu la complex, cu exemplificări concrete, ar fi utilă. Este şi
scopul acestei lucrări. S-a optat pentru prezentarea conexiunilor de tip radio
deoarece la ora actuală oferă cel mai mare grad de libertate şi independenţă fizică a
modulelor interconectate. La început sunt prezentate modulele simple Rx/Tx 433
MHz care îndeplinesc doar funcţii radio de tip emisie (Tx) şi recepţie (Rx), partea
de prelucrare a datelor şi protocolul de transmisie fiind preluat de placa Arduino.
Urmează module mai complexe de tipul NRF 24L01, RF 69 şi HC 12 care preiau o
parte din protocolul de transmisie. Sunt prezentate apoi modulele bluetooth HC 05
ce permit şi conectarea cu dispozitive Android sau IOS. Pentru conexiuni la
reţelele web a fost inclus modulul NodeMCU ESP 8266, iar pentru sisteme
complexe de conexiuni prin bluetooth şi web modulul ESP32. În final este
prezentat modulul ESP-32 CAM care oferă pe lângă facilităţile bluetooth şi web şi
posibilitatea transmiterii de imagini. Fiecare modul este prezentat într-un capitol
separat, ce conţine o parte teoretică referitoare la protocolul de comunicaţie folosit,
urmată de exemple concrete ce includ atât partea fizică folosită hardware cât şi
codurile de programare (software).
Toate sistemele prezentate, coduri şi hard, au fost realizate fizic şi testate în
mod real şi reprezintă concepţia proprie a autorului, sau preluări şi adaptări ale
unor exemple disponibile în literara de specialitate sau pe internet, de fiecare dată
fiind specificată sursa de informare. Sunt libere a fi folosite si dezvoltate de către
cititor. Explicaţii ale codurilor sunt de asemenea incluse pentru fiecare exemplu
prezentat. Pentru ilustraţii s-au folosit elemente grafice disponibile pe internet sau
realizate de autor, iar majoritatea schemelor electrice au fost realizate folosind
programul Fritzing, de asemenea disponibil pe internet.
Proiectele prezentate au un caracter exemplificativ, dar cu mici modificări
pot fi adaptate unor aplicaţii reale. Lucrarea are un caracter didactic, adresându-se
studenţilor facultăţilor de ştiinţe dar şi cititorilor pasionaţi de informatică aplicată,
necesitând doar minime cunoştinţe de programare în limbajul c+. Pentru a facilita
accesul cititorului la partea de programare, cartea este însoţită de un CD ce conţine
toate codurile prezentate şi librăriile necesare.