Vous êtes sur la page 1sur 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 o serva 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(**&&&.ro ofun.ro*arduino +n Arduino Wifi ,hield - http(**&&&.ro ofun.ro*arduino-&ifi-shield +n alimentator extern Arduino http(**&&&.ro ofun.ro*surse-de-alimentare*alimentatoare*alimentator-extern-arduino +n senzor de presiune atmosferica si temperatura ./0123 .lue Edition http(**&&&.ro ofun.ro*senzori*vreme*senzor-presiune-atmosferica- mp123- lue +n uton mare ric# - http(**&&&.ro ofun.ro*electronice* utoane* uton-mare- ric# +n read oard - http(**&&&.ro ofun.ro* read oard* read oard-mini Fire de conexiune mama-tata si tata-tata - http(**&&&.ro ofun.ro*ca luri

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 ta el(

http://www.robofun.ro/forum

Senzor pin VCC Senzor pin GND Senzor pin SDA Senzor pin SCL

Arduino pin 3.3V Arduino pin GND Arduino pin SDA Arduino pin SCL

6. Conecteaza utonul ric# astfel(


Buton pin GND Buton pin VCC Buton pin OUT Arduino pin GND Arduino pin 5V 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 o serva 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 const unsi7ned char OSS " /$ 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?$ 66 )2C address o- B.(/05 66 O8ersa9p%in7 Settin7

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$ := 66 4; 42 43 :3 " :5 O <///$ Ca%cu%ate B3 " >:2 Q >:= Q :=?**;2?**;;$ " >ac2 Q :=?**;;$ " 4; R 42$ " >>>>>%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; " 4; " 42 " p R" >p**0? Q >p**0?$ >4; Q 3/30?**;=$ >O5355 Q p?**;=$ >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 -%oat -%oat C " ; C " C A " pressure6;/;325$ B " ;65.25500$ C " poC>AAB?$ O C$ 6/.////225555$

return C$ H

http://www.robofun.ro/forum

Vous aimerez peut-être aussi