Sunteți pe pagina 1din 12

2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Obiectivul proiectului este familiarizarea cu conceptul i programarea sistemelor


ncorporate, utiliznd limbajul C++ pentru sisteme ncorporate, prin intermediul unor proiecte
simple, utiliznd platforme low-cost cu periferie specific de proces.

Mediul de lucru are urmtoarele componente:


1. Limbajul C++ specific pentru modulul hardware utilizat
http://arduino.cc/en/Reference/HomePage?from=Reference.Extended
2. Mediul de dezvoltare Arduino 1.0.6
(descrcabil de la http://arduino.cc/en/Main/Software )
3. Modul de dezvoltare Arduino Uno
Arduino UNO este o platform de procesare open-source, bazat pe software i
hardware flexibil i simplu de folosit. Const ntr-o platform de mici dimensiuni
(6.8 cm / 5.3 cm in cea mai des intalnita varianta) construit n jurul procesorului
ATmega328 i este capabil de a prelua date din mediul nconjurtor printr-o serie
de senzori i de a efectua aciuni asupra mediului prin intermediul luminilor,
servomotoarelor i alte tipuri de dispozitive mecanice/electro-optice. Procesorul
este capabil s ruleze cod scris ntr-un limbaj de programare care este foarte
similar cu limbajul C++.
http://store.arduino.cc/product/A000066
http://www.robofun.ro/arduino/arduino_uno_v3
unde se afl i un tutorial video

4. Calculator PC cu sistemul de operare Windows 8 avnd instalat mediul de


dezvoltare Arduino 1.0.6
5. Periferie specific proiectului (senzori, taste, LED-uri, afiaje, motoare etc.) din
trusa Kit Arduino pentru electroniti
http://www.robofun.ro/cadouri-geeks/kit-arduino-electronisti
precum i ali senzori indicai expres, dac e cazul.
6. Cablu de legtur USB dintre modulul Arduino Uno i PC

Mediul de lucru este configurat sub forma unui stand, ca n figura urmtoare:

Standul de lucru

Cteva explicaii
Nu toate aplicaiile software din jurul nostru sunt de tip Deskop (adic ruleaz pe sisteme de
calcul de tip PC), Apps (aplicaii mobile de pe telefoanele voastre Smartphone) sau pagini
WEB (fie acestea i dinamice). Unele aplicaii ruleaz n cele mai neateptate locuri: n
automobile, n maini de splat sau cuptoare cu microunde, n aparate de fotografiat, sisteme
de nregistrare la purttor pentru datele medicale i nc nenumrate altele. De fapt cele mai
multe aplicaii ruleaz n astfel de circumstane, foarte prezente n viaa noastr i fr s fim
prea contieni c de fapt tot aplicaii software sunt i acestea, fiind dezvoltate tot de ingineri
software sau informaticieni. n mediul artificial din jurul nostru sunt enorm de multe
microcontrollere care asigur funcionaliti foarte utile dar foarte specializate (s v gndii c
sunt miliarde de astfel de sisteme versus milioane de sisteme PC n jurul nostru; ntr-o locuin

Pagina 1 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

sau ntr-un automobil modern pot s fie pn la 50 de astfel de sisteme ncorporate,sau chiar
mai multe). Aceste microcontrollere sunt ncorporate, nglobate n produsele tehnice care ne
fac viaa mai uoar i tocmai de aceea se numesc sisteme ncorporate (embedded systems).
Aceste sisteme sunt destinate s asigure de-a lungul ntregului lor ciclu de existen acelai
set de funcionaliti. De aceea software-ul, odat dezvoltat i testat, de regul este transferat
ntr-o memorie fix a sistemului (este ars sau prjit - spun cei care lucreaz n acest domeniu).
Se cuvine subliniat c un sistem ncorporat este un ansamblu hardware-software i de aceea
dezvoltatorii software care construiesc programele pentru astfel de sisteme trebuie s aib
mcar un set minimal de cunotine de hardware despre microcontrollere.
Un microcontroller, pentru cei care nu tiu, este un microprocesor mai special, care
conine i circuite care permit interfaarea cu intrrile i ieirile, inclusiv de proces (spre
exemplu intrri-ieiri digitale semnale de tip 0-1 sau analogice tensiuni). De
asemenea, un microcontroller are resurse proprii (limitate) de memorie RAM i ROM.
Intrrile-ieirile digitale sunt grupate cte 8 i sunt citite prin intermediul porturilor
(informaia respectiv trebuie folosit la nivel de bit) respectiv intrrile-ieirile analogice
sunt accesate prin intermediul convertoarelor (analog-digital pentru citire, respectiv
digital-analogic pentru scriere). Convertoarele sunt citite prin intermediul unor porturi
dedicate.

Sistemele incorporate au nite caracteristici speciale: execut un singur program, repetat,


sunt supuse la constrngeri importante (cost redus, consum mic de electricitate, dimensiuni
mici, vitez de execuie rezonabil sau chiar mare, resurse proprii spre exemplu memorie
limitate etc.), de obicei trebuie s reacioneze la evenimentele din mediu cu un timp ct mai
scurt - impus - de ntrziere (acest gen de sisteme se numesc n timp real). Asta introduce
nite constrngeri severe i asupra programelor care vor fi scrise pentru aceste sisteme: timpi
de reacie mici, impui (constrngeri de timp real), memorie ocupat de program, limitat
(constrngeri de memorie). n plus, comunicarea cu mediul (spre exemplu cu un eventual
utilizator uman) este foarte diferit de programele Desktop cu care suntem familiarizai,
deoarece nu avem de cele mai multe ori tastatur sau ecran, ci butoane, LED-uri, afiaje sau
chiar nu avem metode de comunicare i de altfel sistemul nici nu a fost conceput s comunice
cu un utilizator uman (spre exemplu, comanda unui Airbag al unei maini nu are nici un fel de
interfa cu un utilizator, dar cu toate acestea sistemul ncorporat asociat primete valori de la
un senzor de impact i poate comanda declanarea Airbag-ului, printr-o comand electric
digital i n plus poate comunica cu alte sisteme ncorporate din main).

Cum este dezvoltat i testat o aplicaie software pentru un sistem ncorporat ?


Evident, trebuie s avem la dispoziie un software de dezvoltare (un Mediu de dezvoltare
Integrat - Integrated Development Environment -IDE) care seamn cu cel utilizat pn acum
n cadrul orelor de laborator, pentru dezvoltarea aplicaiilor Desktop. Acest mediu este necesar
pentru c ne pune la dispoziie funcionalitile cu care suntem obinuii: editarea, gruparea
fiierelor n proiecte, compilarea i legarea (linkeditarea) modulelor, depanarea, asistena de
tip Help etc. ns desigur acestea nu ncap n sistemul ncorporat, ci IDE va rula pe un sistem
universal de tip PC.
Ceea ce ns difereniaz puternic aceste medii specifice de cele cu care am lucrat pn acum
este c executabilul, dei compilat i obinut n acest mediu care ruleaz pe PC, nu poate rula
pe PC deoarece este destinat s ruleze pe microcontrollerul din sistemul ncorporat. Sunt
situaii cnd un software special (emulator), care ruleaz pe PC, imit microcontrollerul,
permind o rulare simulat, pe PC. Dar de cele mai multe ori se prefer ca mediul s transfere
codul executabil n microcontrollerul destinaie, prin intermediul unei legturi fizice cu acesta.
Spre exemplu, n cazul nostru, transferul se va face prin intermediul unui cablu USB (n alte
situaii se poate folosi spre exemplu legtura serial de tip RS232). Asta nseamn c ntre
cele dou sisteme trebuie s existe un set de reguli de comunicaie, o nelegere prealabil,
un protocol. De acest parteneriat se ocup din partea microcontrollerului un program special
instalat n prealabil pe acesta, numit bootloader. Fr aceast component este imposibil s

Pagina 2 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

transferm programul din calculatorul-gazd (sau host) care este PC-ul, n sistemul destinaie
(numit int sau target).
Mediul utilizat conine comenzi speciale care iniiaz transferul i permit apoi lansarea n
execuie a aplicaiei n calculatorul int microcontrollerul din sistemul ncorporat.

nainte de a trece la treab, trebuie ns s fim contieni c depanarea unei aplicaii este mai
dificil dect pn acum, deoarece nu avem la dispoziie facilitile obinuite de depanare, din
moment ce programul NU ruleaz pe sistemul pe care ruleaz mediul. De aceea vom avea
grij ca eventual s introducem n program linii de cod special pentru a ne ajuta la depanare,
acestea urmnd apoi a fi comentate sau eliminate dac suntem siguri c programul
funcioneaz corect.

Caracteristici ale unei aplicaii pentru sisteme ncorporate cu Arduino


Pentru standurile low-cost folosite n proiect, trebuie s precizm c:
a. Limbajul seamn cu C++ dar cu unele restricii care l apropie mai degrab de C
(a se vedea http://arduino.cc/en/Reference/HomePage?from=Reference.Extended)
b. Mediul de dezvoltare Arduino 1.0.6 cu care lucrm este uor de folosit dar este un pic
diferit de ceea ce tim pn acum. Asistenii v vor explica cum se lucreaz dar suntei
rugai s studiai Anexa 1 la acest material (pag. 8).
c. Accesul la periferia specific (butoane, LED-uri, senzori, afiaje, servomotoare etc.) se
face prin intermediul unor biblioteci disponibile, descrcabile de pe Net, pentru fiecare
caz n parte, conform periferiei utilizate (a se vedea www.robofun.ro). De regul,
utilizarea presupune instanierea unui obiect i apelarea unor metode ale clasei
respective.

Exemplu pentru afiarea unui mesaj pe un ecran lcd Hitachi HD44780 de 16x2:
// includerea bibliotecii pentru afisaj:
#include <LiquidCrystal.h>

// instanierea obiectului lcd de tipul LiquidCrystal, in modul de 4 biti


LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //

void setup() {
// setarea numrului de coloane i rnduri:
lcd.begin(16, 2);
// afiarea unui mesaj.
lcd.print("hello, world!");
}

void loop() {
//setarea cursorului pe poziia iniial
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}

d. Instruciunile de citire/scriere uzuale n C++ nu se pot folosi. n schimb se pot utiliza


instruciuni ale limbajului C (println, write), dar acestea nu se vor referi la citire/scriere
la periferice, ci la informaiile transferate prin USB. De aceea vor fi apelate pentru
obiecte de tip Serial (USB este asociat unei interfee seriale COM). Atunci cnd o
aplicaie este lansat de IDE, se deschide o fereastr care va afia ce este trimis de
microcontroller pe USB i va permite trimiterea ctre microcontroller, prin USB, a
informaiei tastate, respectiv, afiarea informaiei transmise de microcontroller, prin
program, ca n exemplul din figura urmtoare:

Pagina 3 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Exemplu:

e. Trebuie s ne ngrijim ca n urma compilrii s rezulte un cod executabil suficient de


compact pentru a putea rula cu resursele limitate ale unui modul Arduino Uno (32 KB,
din care 0.5 KB sunt ocupai de Bootloader).

Ce e de fcut la proiect ?
Studenii trebuie s vin la laborator pregtii (trebuie s fi citit i nsuit temeinic cele
de mai sus, mai ales c nu e mult i pe deasupra e i foarte interesant). Studiai n
special ce urmeaz la pag. 5, deoarece suntei la un laborator de Programare
Orientat pe Obiecte !
n continuare, asistentul va prezenta standurile cu toate componentele sale i modul
de lucru, printr-un exemplu simplu distribuit tututor. Tot el/ea v va atrage atenia
asupra unor reguli elementare de lucru (verificai de dou ori conexiunile nainte de a
porni ceva; nu zglii montajele, nu le tri pe mas, nu le ridicai n aer, nu le scpai,
nu scpai nimic pe ele, precum i alte reguli asemntoare, de bun sim)...
Asistentul va mpri teme de proiectare, cte o tem pentru 2-3 studeni. Temele sunt
toate n Anexa 2 (pag. 10).
Acetia vor studia cu atenie, de mai multe ori, ce au de fcut ! Nu rdei, cei din
industrie ne reproeaz c nu v-am obinuit s citii cu atenie - i responsabilitate - ce
e de fcut !
Mai departe, trebuie s studiai aspectele specifice periferiei utilizate (adic citii de pe
www.robofun.ro cum se vor folosi elementele necesare proiectului) i descrcai
bibliotecile i exemplele de care avei nevoie.
Vei proiecta software-ul utiliznd scheme pe hrtie (scheme logice, diagrame de stare
sau orice altceva considerai c v e de folos).
De-abia dup aceea scriei cod.
Nu uitai s inserai n cod cele necesare depanrii. n acest scop putei utiliza
instruciuni de scriere sau citire clasice, care v vor permite s afiai spre exemplu
valori n fereastra de monitorizare din IDE.
Acum e momentul s testai! Dac nu mai sunt erori de compilare, rulai aplicaia i
depanai innd cont de manifestrile programului i valorile afiate n fereastra de
comunicare.
Nu uitai c ori de cte ori modificai codul, acesta trebuie recompilat i rencrcat n
Arduino.

Pagina 4 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Finalizarea temelor de proiectare se va face conform cerinelor urmtoare:

Echipele de studeni vor face, fiecare, o scurt demonstraie n faa asistentului i vor
preda cte un Referat coninnd:

Realizarea aplicaiei C++ pentru Arduino, care trebuie s fie funcional,


conform cerinelor din tema aleas.

ntocmirea unei documentaii minimale care s conin:

o Titlul temei de proiectare


o Echipa de realizare i taskurile realizate de fiecare
o O schem general a sistemului
o Scurt descriere a funcionrii aplicaiei, enumerarea funciilor
sistemului
o Diagramele Use Case, diagrama de stare, diagrama de secven i
diagrama de clase a aplicaiei
o Rezultatele testrii (ce funcioneaz, ce nu funcioneaz) conform unui
tabel de testare care s conin toate funciile cerute ale sistemului i
modul de verificare

SUCCES !

S nu uitm ns c lucrm la un laborator de Programare


orientat pe obiecte !
De aceea vor trebui definite pentru senzori sau pentru ieiri de proces, cte o clas
de baz abstract i clase derivate care s permit citiri sau ieiri, cu definirea unor funcii
virtuale. Chiar dac n aplicaie va fi doar un senzor sau o ieire utilizabil pentru definire de
clase, ierarhia tot trebuie definit, astfel fiind posibil extinderea la ali senzori sau ieiri, prin
derivarea altor clase pentru acestea, plecnd de la clasa abstract, care codific trsturi
generale ale senzorilor/ieirilor de proces, urmnd ca particularizarea s se fac n clasele
derivate.

Aplicaia din Arduino trebuie s fie realizat orientat pe obiecte. Astfel, vor trebui
definite pentru senzori sau pentru ieiri de proces, cte o clas de baz abstract i clase
derivate care s permit citiri sau ieiri, cu definirea unor funcii virtuale. Chiar dac n
aplicaie va fi doar un senzor sau
o ieire, ierarhia tot trebuie
definit, astfel fiind posibil
extinderea la ali senzori sau
ieiri, prin derivarea altor clase
pentru acestea, plecnd de la
clasa abstract, care codific
trsturi generale ale
senzorilor/ieirilor de proces,
urmnd ca particularizarea s se
fac n clasele derivate.

Exemplu orientativ
pentru senzori (figura alturat):

Pagina 5 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

i codul surs (citirea fiind simulat prin introducere de valori de la tastatur):


class senzor {
protected:
int status; // starea (true daca valoarea citita e disponibila
// si inca nu a fost preluata)
int val_citita; // valoarea citita (va fi setata de citire)
int val_anterioara; // valoarea anterioara va fi transferata din val_citita
// in timpul apelului metodei de citire
// double val_calibrare; // factor de calibrare
public:
virtual void citire() = 0; // citirea este si ea o functie virtuala pura
// virtual void calibrare()=0; // operatia de calibrare
void reset() { status = 0; val_anterioara = 0; val_citita = 0; }
int stare() { return status; } // returneaza starea
int get(); // returneaza valoarea filtrata
};

class senzor_puls : public senzor { // clasa specializata pentru senzor de puls


public:
// void calibrare();
void citire();
};
class senzor_pulsoximetrie: public senzor {// clasa specializata pentru
// senzor de pulsoximetrie
public:
// void calibrare();
void citire();
};

// implementari

int senzor::get()
{
if (status)
{
return val_citita;
status = 0;
}
else
{
return val_anterioara;
}
}

void senzor_puls::citire()
{
// aici se implementeaza citirea reala pentru senzorul de puls
int i;
val_anterioara = val_citita;
cout << "\nSimulare citire valoare senzor puls :";
cin >> i;
val_citita = i; // simulare citirea propriu-zisa de la senzor
status = -1;
}

void senzor_pulsoximetrie::citire()
{
// aici se implementeaza citirea reala pentru senzorul de pulsoximetrie
int i;
val_anterioara = val_citita;
cout << "\nSimulare citire valoare senzor pulsoximetrie :";
cin >> i;
val_citita = i; // simulare citirea propriu-zisa de la senzor
status = -1;
}

Pagina 6 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

int main()
{
senzor *p;_
senzor_puls s_p;_
senzor_pulsoximetrie s_po;
// initializari
p = &s_p;
p->reset();
p = &s_po;
p->reset();
// citire si utilizare valoare pentru pentru senzorul de puls
p = &s_p;
p->citire(); // aici, eventual citire asincrona
cout << "\nValoarea preluata de la senzorul de puls este : "<< p->get();
// folosirea valorii la ceva, aici, afisare
// si totul inca o data pentru celalalt senzor(aproape toata secventa de cod este identica)
p = &s_po;
p->citire();
cout << "\nValoarea preluata de la senzorul de pulsoximetrie este : "<< p->get();
_getch();
return 0;
}

La ce bun ce am fcut ?
Arduino este un sistem simplu, ns ofer o foarte bun coal pentru a realiza ce nseamn
programarea unui sistem ncorporat. Vei constata c e vorba tot de programare, c scopul
final e altul dect acela de a prelua caractere de la tastatur i de a afia rezultatele unei
prelucrri pe ecran, c putei s programai (aproape) tot ce v vine n minte legat de aciuni
i funcionaliti care presupun citiri de valori din mediu i aciuni asupra mediului (acionarea
unor servomotoare) respectiv afiri pe dispozitive non-standard (afiaje, LED-uri). De aici la
sistemele industriale, profesionale, nu e dect pasul care poate fi fcut prin
(auto)perfecionare. Ceea ce ai fcut nu difer foarte mult de ce e necesar pentru un sistem
dintr-un automobil, sau o main de splat, un sistem Home automation sau altele de acest
gen. Cu alte cuvinte, suntei pregtii s v specializai pentru a aborda meserii din acest
domeniu, specifice unor companii importante din Timioara.
n plus, mai e i foarte interesant i chiar haios s faci aplicaii care s mite lucruri n faa ta
i care s semene cu ceea ce ne nconjoar ! Vedei astfel c multe din cele ce sunt artificiale,
n jurul nostru, sunt creaii inginereti i c i voi suntei n stare s facei lucruri asemntoare
sau mai bune ! De acum nainte vei fi capabili s v umplei casa cu automatizri mai simple
sau mai complexe, depinde doar de dorina, fantezia i resursele alocate !

Pagina 7 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Anexa 1.Utilizarea Mediului de dezvoltare Arduino


Arduino IDE este mediul de dezvoltare nativ pentru aplicaiile embedded care vor fi
utilizate pe platforma Arduino. Limbajul utilizat pentru realizarea programelor de tip embedded
pe platforma Arduino este limbajul C/C++.
Ecranul principal al mediului de dezvoltare arat n felul urmtor:

Figura 1. Ecranul principal pentru Arduino IDE

Noul proiect este creat din meniul principal File-> New sau prin combinaia de CTRL+N.
Structura noului proiect generat este vizibil i pe Figura 1. Structura proiectul este
asemntoare cu structura unui program realizat n orice mediu de dezvoltare pentru limbajul
C sau C++.

1. Utilizarea bibliotecilor existente

n programele realizate pentru sistemul embeded Arduino avem


posibilitatea de a apela bibliotecile specifice acestui mediu de dezvoltare .
Sintaxa de includere a unei librrii este urmtoare:

#include "Button.h" // biblioteca pentru utilizarea unui buton

Mediul de dezvoltare are inclus o multitudine de biblioteci pentru diverse


componente specifice i aplicaii corespunztoare. Acestea se pot observa
n figura 2. Pe lng acestea, utilizatorul poate instala altele prin interfaa de
instalare a bibliotecilor sau poate dezvolta unele noi.

2. Declararea variabilelor din program:

n aceast seciune declarm variabilele interne globale care vor fi Figura 2. Biblioteci
folosite pentru a stoca informaiile. Pe lng variabile n aceast seciune native pentru
mediul de
alocm pentru pinii modulului de dezvoltare denumirea i direcia de dezvoltare
transmitere.

Pagina 8 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Exemplu de utilizare:
declararea unei variabile:
int sensorValue = 0; // declarea unei variabile pentru stocarea informaiilor,

alocarea pinilor de analogici


const int analogInPinA0 = A0; // analogInPinA0 este variabila asociat pinului analog A0,
sensorValue = analogRead(analogInPinA0); // citirea datelor analogice

alocarea pinilor digitali:


int pushButton = 2; //alocarea pinilor digitali
pinMode(pushButton, INPUT);// setarea pinului digital 2 pe modul de intrare
pinMode(pushButton, OUTPUT);// setarea pinului digital 2 pe modul de intrare
int buttonState = digitalRead(pushButton); //citirea unui pin digital.
analogWrite(ledPin, 128); //transmiterea unui semnal analogic pe un pin digital prin PWM

3. Funcia void Setup()

Este funcia n care configurm specificaiile elementelor, senzorilor i a altor module


folosite de sistemul arduino. Nu este o regul general dar se recomand utilizarea acestei
funcii pentru a evita erorile de configurare. Aceast funcie se execut odat la pornirea sau
dup resetarea modulului arduino. De exemplu n aceast seciune configurm transmisia
serial, afiajele i alte metode pentru a comunica cu accesoriile i extensiile existente. De
exemplu:

Serial.begin(57600); // viteza de transmisie pentru serial (57600 baud)


lcd.begin(16, 2);// dimesiunea ecranului pentru afisare (2 linii, 16 coloane)

4. Funcia void loop()

Aceast funcie este utilizat pentru rularea codului principal al programului din microcontroler.
Acest cod se va rula intr-o bucl infinit care poate fi intrerupt doar de butonul RESET al
modulului Arduino sau de oprirea alimentrii.

5. ncrcarea programului pe microcontroler

Din meniul Tools, submeniul Board se selecteaz modelul corespunztor de modul Arduino.
Pentru a ncrca programul realizat pe modulul Arduino n primul rnd trebuie s selectm
portul de comunicare dintre calculator i modul folosind comanda din ToolsSerial Port, apoi
utilizatorul selecteaz portul serial corespunztor. Apoi se trimite programul pe modulul
Arduino prin comanda SketchUpload sau combinatia de chei CTRL+U.

Pagina 9 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Anexa 2. Temele de proiectare.


Tema 1. Sistem de comand pentru irigaii

Componente (n afar de Arduino):

a) LED bicolor brick 3 buc, pentru afiarea strii de oprit/pornit, daca s-a pornit irigarea
b) Senzor de umiditate (simulat prin poteniometru legat la o intrare analogic)
c) Ecran LCD
d) Buton

Cerine:
La apasarea butonului se porneste/opreste sistemul.
n funcie de umiditatea msurata la un interval de timp se citete valoarea senzorului de
umiditate i se afieaz pe ecranul LCD. Dac senzorul de umiditate citete o valoare peste
un prag prestabilit udarea nu are loc n ziua current i se aprinde ledul de culoare albastra.

Tema 2. Sistem anti efracie


Componente (n afar de Arduino):

a) LED RGB brick 1 buc, pentru afiarea strii n care se afl sistemul anti efracie
b) Senzor magnetic Hall 1buc
c) Senzor de vibraie pentru detectarea micrii
d) Ecran LCD
e) Buton

Cerine:
La apasarea butonului se porneste/opreste sistemul.
Dac sistemul de anti efractie este activat i senzorii detecteaz o efracie aceast efracie
este semnalizat pe ecran iar LED-ul rgb se coloreaz n rou. Dac sistemul este dezarmat
si senzorii detecteaz ceva pe ecran se afieaz un mesaj care conine senzorul activat pentru
posibila bre de securitate iar senzorul RGB lumineaz in albastru. Dac sistemul este armat
si nu este nici o efractie LED-ul RGB lumineaz alternative in Rou i Albastru.

Tema 3. Intersecie semaforizat

Componente (n afar de Arduino):

a) LED bicolor brick (pentru semaforul pietonal)


b) LED multicolor RGB brick (pentru semaforul de vehicole)
c) Buton brick pentru pornit/oprit programul
d) Minidifuzor brick (semnal audio pentru nevazatori)
e) Senzor vibratii brick (pune semaforul de vehicole pe galben intermitent in caz de
cutremur)

Pagina 10 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Cerinte:

La apasarea butonului se porneste/opreste automatul de semaforizare.

Pentru vehicole timpii vor fi:


- 10 secunde rosu;
- 15 secunde verde;
- 3 secunde galben;

Pentru pietoni timpii vor fi:


- 8 secunde verde;
- 20 secunde rosu;

Se vor sincroniza astfel semafoarele incat atunci cand pietonii au verde, vehicolele sa aiba
rosu (atentie la decalajele de timp).

La inceputul programului ambele semafoare vor fi puse pe rosu timp de 10 secunde, dupa
care programul va incepe cu verde la pietoni (semnal audio pentru nevazatori) si rosu la
vehicole.

In caz de "cutremur" semafoarele pentru vehicole vor fi puse pe galben intermitent iar cele
pentru pietoni vor fi stinse. Semnal audio diferit pentru nevazatori.

Se va realiza i o diagrama de timpi a semafoarelor precizand decalajele.

Tema 4. Sistem de alarm

Componente (n afar de Arduino):

a) Senzor Lumina Brick (sistemul se porneste automat "noaptea" - sub un anumit prag)
b) LED-uri brick (rosu, verde si albastru)
c) Minidifuzor brick (semnal audio pentru alarma)
d) Senzor vibratii brick (declansare alarma la vibratii)
e) Shield LCD 16X2 (afiseaza starea sistemului)
f) Buton

Cerinte:

La apasarea butonului se porneste/opreste sistemul. Daca sistemul este oprit va fi aprins


ledul rosu iar daca este pornit ledul verde.
Sa se realizeze simularea unui sistem de alarma care porneste automat noaptea. In caz de
vibratii se va declansa alarma: LED-urile vor clipi intermitent (alb si albastru) si difuzorul va
suna.
Pe LCD se vor afisa starile alarmei:
- Armat (doar noaptea)
- Dezarmat (doar ziua)
- Alarma!

Pagina 11 din 12
2016-2017 Proiect neautonom la Programare Orientat pe Obiecte

Tema 5. Sistem de supraveghere a strii de sntate a pacientului

Componente (n afar de Arduino):


a) Senzor puls
b) Senzor Temperatura Brick
c) Shield LCD 16X2
d) 2 LED brick 2 buc (rou i verde) pentru a semnaliza daca este pornit sau nu sistemul
e) Buton brick pentru pornit/oprit programul

Cerinte:

La apasarea butonului se porneste/opreste sistemul. Daca sistemul este oprit va fi aprins ledul
rosu iar daca este pornit ledul verde.
Dac sistemul este n stare activ se produce:
- afisarea unui mesaj pe LCD de alarm n caz c valorile primite de la senzorul de puls
sunt mai mari sau mai mici fa de intervalul precizat
- afisarea unui mesaj pe LCD n caz c temperatura ambiental poate crea probleme
de sntate pentru o persoana (ex. Prea cald sau prea rece)

Tema 6. Sistem ECG

Componente (n afar de Arduino):

a) Modul ECG cu cabluri de conctare i electrozi


b) Shield LCD 16X2
c) 2 LED brick 2 buc (rou i verde) pentru a semnaliza daca este pornit sau nu sistemul
d) Difuzor

La apasarea butonului se porneste/opreste sistemul. Daca sistemul este oprit va fi aprins


ledul rosu iar daca este pornit ledul verde.
La modulul Arduino se va afia pe LCD
- un mesaj de alarm n caz c valorile primite de la ECG nu se ncadreaz n limitele
prestabilite normal acceptabile si se va auzi un sunet de alarm ape difuzor
- un mesaj sistemul este activ sau sistem n ateptare
- pe calculator cu ajutorul programului Processing se va putea vizualiza semnalul de ECG.

Pagina 12 din 12