Sunteți pe pagina 1din 13

Textul si imaginile din acest document sunt licentiate

Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare,
sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document
poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari.
Arduino monitorizare locuinta
In acest tutorial vei descoperi cum se poate monitoriza o locuinta utilizand un senzor de
temperatura, un senzor de efractie, o placa Arduino si un shield Wi-FI. Este o solutie simpla prin care
poti oserva daca cineva ti-a deschis usa de la intrare sau daca temperatura este normala.
Exista o gama variata de senzori care pot detecta efractia !senzor magnetic, inductiv,
fotoelectric". In cazul de fata s-a utilizat, pe post de senzor de efractie, un uton ric#. $aca utonul a
fost apasat se considera ca usa a fost deschisa si senzorul a fost declansat.
Toata informatia o vei citi cu a%utorul unui ro&ser deoarece placa Arduino se va comporta ca
si un server &e. Asta inseamna ca iti poti monitoriza locuinta chiar si de pe un smartphone cu
conexiune la internet.
'ei avea nevoie de urmatoarele componente(
) placa Arduino - http(**&&&.roofun.ro*arduino
+n Arduino Wifi ,hield - http(**&&&.roofun.ro*arduino-&ifi-shield
+n alimentator extern Arduino
http(**&&&.roofun.ro*surse-de-alimentare*alimentatoare*alimentator-extern-arduino
+n senzor de presiune atmosferica si temperatura ./0123 .lue Edition
http(**&&&.roofun.ro*senzori*vreme*senzor-presiune-atmosferica-mp123-lue
+n uton mare ric# - http(**&&&.roofun.ro*electronice*utoane*uton-mare-ric#
+n readoard - http(**&&&.roofun.ro*readoard*readoard-mini
Fire de conexiune mama-tata si tata-tata - http(**&&&.roofun.ro*caluri
Cum se conecteaza senzorul si butonul brick ?
4. Infige shield-ul Wifi in pinii placii Arduino.
5. Conecteaza senzorul de presiune atmosferica si temperatura ./0123 .lue Edition dupa
urmatorul tael(
http://www.robofun.ro/forum
Senzor pin VCC Arduino pin 3.3V
Senzor pin GND Arduino pin GND
Senzor pin SDA Arduino pin SDA
Senzor pin SCL Arduino pin SCL
6. Conecteaza utonul ric# astfel(
Buton pin GND Arduino pin GND
Buton pin VCC Arduino pin 5V
Buton pin OUT Arduino pin D2
7. Conecteaza alimentatorul Arduino in mufa 8ac#.
http://www.robofun.ro/forum
Codul sursa.
$upa ce ai realizat toate conexiunile fizice dintre senzori si placa Arduino, acum este momentul
sa incarci s#etch-ul de mai %os.
Inainte de a incarca s#etch-ul in Arduino cauta cele 5 linii si modifica-le conform routerului tau(
char ssid! " #ssid#$
char pass! " #paro%a secreta#$
Copiaza codul de mai %os cu cop9*paste, incarca-l in placa Arduino si deschide /onitorul
,erial. :a cateva momente de la deschiderea /onitorului ,erial iti va aparea urmatoarea informatie.
Informatia de mai sus iti arata ca placa Arduino s-a conectat cu succes la router si este pregatita
sa primeasca cereri. I0-ul care apare in imagine este I0-ul pe care il tastezi in ro&ser.
0oti sa deschizi orice ro&ser si sa tastezi I0-ul in ara de lin#-uri. Asa iti va aparea informatia
dupa ce te-ai conectat la placa Arduino.
+tilizand un smartphone iti va aparea asa.
http://www.robofun.ro/forum
In acelasi timp poti oserva in /onitorul ,erial cateva detalii despre dispozitivul care se
conecteaza la placa Arduino.
http://www.robofun.ro/forum
&inc%ude 'S().h*
&inc%ude '+i,i.h*
&inc%ude '+ire.h*
&de-ine B.(/051ADD23SS /455 66 )2C address o- B.(/05
const unsi7ned char OSS " /$ 66 O8ersa9p%in7 Settin7
66 Ca%i:ration 8a%ues
int ac;$
int ac2$
int ac3$
unsi7ned int ac<$
unsi7ned int ac5$
unsi7ned int ac=$
int :;$
int :2$
int 9:$
int 9c$
int 9d$
%on7 :5$
char ssid! " #ssid#$
char pass! " #paro%a secreta#$
int status " +L1)DL31STATUS$
:oo%ean door1status " -a%se$
+i,iSer8er ser8er>0/?$
8oid setup>? @
pin.ode>2A )N(UT?$
66 start seria% port -or de:u77in7 purposes
Seria%.:e7in>B=//?$
+ire.:e7in>?$
:9p/05Ca%i:ration>?$
66 Attach interrupt to pin 2
attach)nterrupt>/A setDoorStatusA ,ALL)NG?$
66 atte9pt to connect to +i-i netCorDE
Chi%e > status F" +L1CONN3CT3D? @
Seria%.print>#Atte9ptin7 to connect to SS)DE #?$
Seria%.print%n>ssid?$
http://www.robofun.ro/forum
status " +i,i.:e7in>ssidA pass?$
66 Cait ;/ seconds -or connectionE
de%aG>;////?$
H
ser8er.:e7in>?$
66 GouIre connected noCA so print out the statusE
print+i-iStatus>?$
H
8oid %oop>? @
66 %isten -or inco9in7 c%ients
+i,iC%ient c%ient " ser8er.a8ai%a:%e>?$
i- >c%ient? @
Seria%.print%n>#neC c%ient#?$
66 an http reJuest ends Cith a :%anD %ine
:oo%ean currentLine)sB%anD " true$
Chi%e >c%ient.connected>?? @
i- >c%ient.a8ai%a:%e>?? @
char c " c%ient.read>?$
Seria%.Crite>c?$
66 i- GouI8e 7otten to the end o- the %ine >recei8ed a
neC%ine
66 character? and the %ine is :%anDA the http reJuest has
endedA
66 so Gou can send a rep%G
i- >c "" IKnI LL currentLine)sB%anD? @
66 send a standard http response header
c%ient.print%n>#MTT(6;.; 2// ON#?$
c%ient.print%n>#ContentOTGpeE te4t6ht9%#?$
c%ient.print%n>#ConnnectionE c%ose#?$
c%ient.print%n>?$
c%ient.print%n>#'FDOCTP(3 MT.L*#?$
c%ient.print%n>#'ht9%*#?$
c%ient.print%n>#'9eta httpOeJui8"K#re-reshK#
content"K#5K#*#?$
-%oat te9perature " :9p/05GetTe9perature>:9p/052eadUT>??$
-%oat pressure " :9p/05Get(ressure>:9p/052eadU(>??$
-%oat at9 " pressure 6 ;/;325$ 66 #standard at9osphere#
-%oat a%titude " ca%cA%titude>pressure?$
c%ient.print>#Te9peraturaE #?$
c%ient.print>te9perature?$
c%ient.print># 7rade C.#?$
c%ient.print># (resiuneaE #?$
c%ient.print>at9?$
c%ient.print># at9.#?$
http://www.robofun.ro/forum
i- >door1status "" -a%se?@
c%ient.print%n># Usa este securizata#?$
H
e%se @
c%ient.print%n># AtentieF Usa a -ost deschisa.#?$
H
c%ient.print%n>#':r 6*#?$
c%ient.print%n>#'6ht9%*#?$
:reaD$
H
i- >c "" IKnI? @
66 GouIre startin7 a neC %ine
currentLine)sB%anD " true$
H
e%se i- >c F" IKrI? @
66 GouI8e 7otten a character on the current %ine
currentLine)sB%anD " -a%se$
H
H
H
66 7i8e the Ce: :roCser ti9e to recei8e the data
de%aG>;?$
66 c%ose the connectionE
c%ient.stop>?$
Seria%.print%n>#c%ient disonnected#?$
H
H
8oid print+i-iStatus>? @
66 print the SS)D o- the netCorD GouIre attached toE
Seria%.print>#SS)DE #?$
Seria%.print%n>+i,i.SS)D>??$
66 print Gour +i,i shie%dIs )( addressE
)(Address ip " +i,i.%oca%)(>?$
Seria%.print>#)( AddressE #?$
Seria%.print%n>ip?$
66 print the recei8ed si7na% stren7thE
%on7 rssi " +i,i.2SS)>?$
Seria%.print>#si7na% stren7th >2SS)?E#?$
Seria%.print>rssi?$
Seria%.print%n># dB9#?$
H
http://www.robofun.ro/forum
8oid setDoorStatus>? @
door1status " true$
H
8oid :9p/05Ca%i:ration>?
@
ac; " :9p/052ead)nt>/4AA?$
ac2 " :9p/052ead)nt>/4AC?$
ac3 " :9p/052ead)nt>/4A3?$
ac< " :9p/052ead)nt>/4B/?$
ac5 " :9p/052ead)nt>/4B2?$
ac= " :9p/052ead)nt>/4B<?$
:; " :9p/052ead)nt>/4B=?$
:2 " :9p/052ead)nt>/4B0?$
9: " :9p/052ead)nt>/4BA?$
9c " :9p/052ead)nt>/4BC?$
9d " :9p/052ead)nt>/4B3?$
H
66 Ca%cu%ate te9perature in de7 C
-%oat :9p/05GetTe9perature>unsi7ned int ut?@
%on7 4;A 42$
4; " >>>%on7?ut O >%on7?ac=?Q>%on7?ac5? ** ;5$
42 " >>%on7?9c '' ;;?6>4; R 9d?$
:5 " 4; R 42$
-%oat te9p " >>:5 R 0?**<?$
te9p " te9p 6;/$
return te9p$
H
%on7 :9p/05Get(ressure>unsi7ned %on7 up?@
%on7 4;A 42A 43A :3A :=A p$
unsi7ned %on7 :<A :5$
:= " :5 O <///$
66 Ca%cu%ate B3
4; " >:2 Q >:= Q :=?**;2?**;;$
42 " >ac2 Q :=?**;;$
43 " 4; R 42$
:3 " >>>>>%on7?ac;?Q< R 43?''OSS? R 2?**2$
66 Ca%cu%ate B<
4; " >ac3 Q :=?**;3$
http://www.robofun.ro/forum
42 " >:; Q >>:= Q :=?**;2??**;=$
43 " >>4; R 42? R 2?**2$
:< " >ac< Q >unsi7ned %on7?>43 R 325=0??**;5$
:5 " >>unsi7ned %on7?>up O :3? Q >5////**OSS??$
i- >:5 ' /40///////?
p " >:5'';?6:<$
e%se
p " >:56:<?'';$
4; " >p**0? Q >p**0?$
4; " >4; Q 3/30?**;=$
42 " >O5355 Q p?**;=$
p R" >4; R 42 R 35B;?**<$
%on7 te9p " p$
return te9p$
H
char :9p/052ead>unsi7ned char address?
@
unsi7ned char data$
+ire.:e7inTrans9ission>B.(/051ADD23SS?$
+ire.Crite>address?$
+ire.endTrans9ission>?$
+ire.reJuest,ro9>B.(/051ADD23SSA ;?$
Chi%e>F+ire.a8ai%a:%e>??
$
return +ire.read>?$
http://www.robofun.ro/forum
H
66 2ead 2 :Gtes -ro9 the B.(/05
66 ,irst :Gte Ci%% :e -ro9 IaddressI
66 Second :Gte Ci%% :e -ro9 IaddressIR;
int :9p/052ead)nt>unsi7ned char address?
@
unsi7ned char 9s:A %s:$
+ire.:e7inTrans9ission>B.(/051ADD23SS?$
+ire.Crite>address?$
+ire.endTrans9ission>?$
+ire.reJuest,ro9>B.(/051ADD23SSA 2?$
Chi%e>+ire.a8ai%a:%e>?'2?
$
9s: " +ire.read>?$
%s: " +ire.read>?$
return >int? 9s:''0 S %s:$
H
66 2ead the unco9pensated te9perature 8a%ue
unsi7ned int :9p/052eadUT>?@
unsi7ned int ut$
66 +rite /423 into 2e7ister /4,<
66 This reJuests a te9perature readin7
+ire.:e7inTrans9ission>B.(/051ADD23SS?$
+ire.Crite>/4,<?$
+ire.Crite>/423?$
+ire.endTrans9ission>?$
66 +ait at %east <.59s
de%aG>5?$
66 2ead tCo :Gtes -ro9 re7isters /4,= and /4,5
ut " :9p/052ead)nt>/4,=?$
return ut$
H
66 2ead the unco9pensated pressure 8a%ue
unsi7ned %on7 :9p/052eadU(>?@
unsi7ned char 9s:A %s:A 4%s:$
unsi7ned %on7 up " /$
http://www.robofun.ro/forum
66 +rite /43<R>OSS''=? into re7ister /4,<
66 2eJuest a pressure readin7 C6 o8ersa9p%in7 settin7
+ire.:e7inTrans9ission>B.(/051ADD23SS?$
+ire.Crite>/4,<?$
+ire.Crite>/43< R >OSS''=??$
+ire.endTrans9ission>?$
66 +ait -or con8ersionA de%aG ti9e dependent on OSS
de%aG>2 R >3''OSS??$
66 2ead re7ister /4,= >.SB?A /4,5 >LSB?A and /4,0 >TLSB?
9s: " :9p/052ead>/4,=?$
%s: " :9p/052ead>/4,5?$
4%s: " :9p/052ead>/4,0?$
up " >>>unsi7ned %on7? 9s: '' ;=? S >>unsi7ned %on7? %s: '' 0? S
>unsi7ned %on7? 4%s:? ** >0OOSS?$
return up$
H
8oid Crite2e7ister>int de8iceAddressA :Gte addressA :Gte 8a%? @
+ire.:e7inTrans9ission>de8iceAddress?$ 66 start trans9ission to
de8ice
+ire.Crite>address?$ 66 send re7ister address
+ire.Crite>8a%?$ 66 send 8a%ue to Crite
+ire.endTrans9ission>?$ 66 end trans9ission
H
int read2e7ister>int de8iceAddressA :Gte address?@
int 8$
+ire.:e7inTrans9ission>de8iceAddress?$
+ire.Crite>address?$ 66 re7ister to read
+ire.endTrans9ission>?$
+ire.reJuest,ro9>de8iceAddressA ;?$ 66 read a :Gte
Chi%e>F+ire.a8ai%a:%e>?? @
66 Caitin7
H
http://www.robofun.ro/forum
8 " +ire.read>?$
return 8$
H
-%oat ca%cA%titude>-%oat pressure?@
-%oat A " pressure6;/;325$
-%oat B " ;65.25500$
-%oat C " poC>AAB?$
C " ; O C$
C " C 6/.////225555$
return C$
H
http://www.robofun.ro/forum

S-ar putea să vă placă și