adxl345-raspberrypi

Upload: adi-adi

Post on 02-Jun-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 ADXL345-RaspberryPI

    1/15

    Textul si imaginile din acest document sunt licentiate

    Attribution-NonCommercial-NoDerivsCC 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.

  • 8/10/2019 ADXL345-RaspberryPI

    2/15

    RaspberryPI si ADXL345

    ADXL345 este un accelerometru de dimensiuni mici, are un consum redus de energie iarmasuratorile efectuate pe cele 3 axe au o rezolutie mare (13 iti!" #oate masura pana la 1$g, iardatele sunt reprezentate in format digital, la alegere, prin interfata %#& sau &'C"

    ADXL345 este foarte potri it pentru masuratori ale acceleratiei statice a gra itatiei inaplicatii care sesizeaza ascularea, dar si acceleratia dinamica rezultata din miscare sau socuri"Accelerometrul are o rezolutie mare (4 mg)L%*! si permite masurarea sc+im arilor de inclinatie

    mai mici de 1, -".ai multe functii de sesizare speciale sunt furnizate" %esizarea acti itatii si inacti itatii

    depisteaza prezenta sau lipsa miscarii si daca acceleratia pe oricare axa excede un ni el setat decatre utilizator" %esizarea atailor usoare depisteaza ataile simple sau du le" %esizarea caderiili ere depisteaza daca senzorul se afla se afla in cadere" Aceste functii pot fi mapate pe unul din doi

    pini de iesire de intrerupere" /n uffer first in, first out (0&0 ! cu 3' de ni ele integra poate fifolosit pentru a stoca datele pentru a minimiza inter entia procesorului cu care comunica senzorul"

    %enzorul poate functiona si in moduri cu consum redus de energie"

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    3/15

    &n acest tutorial ei programa placa asp err #& sa afiseze pe un s+ield LCD ' x4acceleratiile corespunzatoare celor 3 axe"

    6ei a ea ne oie de urmatoarele componente2

    placa asp err #&"

    /n s+ield LCD ' x4 pentru asp err #&"

    /n senzor ADXL345"

    0ire pentru conexiuni"

    *read oard"

    sursa de alimentare pentru asp err #& (56!

    Cum conectez shield-ul LCD si senzorul ADXL345

    1" Conecteaza s+ield7ul la portul 8#& al placii asp err #&" %+ield7ul poate fi infiptdirect in portul 8#& sau il poti conecta prin intermediul panglicii de tip co ler"

    '" Asigura7te ca areta mama 'x13 este lipita pe s+ield, altfel nu poti conecta senzorulADXL345" La ac+izitionarea s+ield7ului poti opta pentru s+ield cu areta lipita"

    3" Conecteaza accelerometrul la placa asp err #& conform ta elului urmator2

    Raspberry PI 3.3V ADXL345 VCC

    Raspberry PI 3.3V ADXL345 CS

    Raspberry PI GND ADXL345 GND

    Raspberry PI GND ADXL345 SDO

    Raspberry PI SDA ADXL345 SDA

    Raspberry PI SCL ADXL345 SCL

    4" 0oloseste, ca referinta, sc+ema portului 8#& si sc+ema electronica de mai 9os2

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    4/15

    Dupa realizarea conexiunilor, ei o tine urmatoarea imagine"

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    5/15

    Cum pro!ramez placuta Raspberry PI

    .ai 9os sunt listate ' programe, dintre care, primul se executa cu # t+on si se ocupa cuinitializarea afisa9ului LCD si afisarea acceleratiilor pe fiecare rand iar cel de7al doilea program estescris in lim a9ul C si se ocupa cu initializarea interfetei &'C a senzorului si citirea acceleratiilor dinel" &n mod normal ei executa doar programul scris in C, deoarece acesta realizeaza apel automatcatre programul # t+on"

    Codul sursa este listat mai 9os si il poti copia cu cop )paste, dar inainte de asta sunt necesarecate a configurari2

    1" Desc+ide urmatorul fisier si asigurate ca ai cele ' linii2

    sudo nano /et /!odu"es

    Liniile2

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    6/15

    #$ %b !$&'(

    #$ %de)

    '" :xecuta o restartare cu2

    sudo reboot

    3" Dupa restartare, executa cele ' comenzi2

    sudo apt%*et #nsta"" pyt+on%s!bus

    sudo apt%*et #nsta"" #$ %too"s

    4" Desc+ide fisierul cu urmatoarea comanda si asigura7te ca este prezent cate un ; pefiecare linie2

    sudo nano /et /!odprobe.d/rasp#%b"a ,"#st. on-

    5" 6erifica daca senzorul este detectat corect prin comanda2

    sudo #$ dete t %y

    Comanda returneaza toate adresele detectate" Daca senzorul este detectat corect, atunci el a

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    7/15

    raporta adresa x53"

    $" Descarca si instaleaza pac+etul p t+on #i"8#& "4"1a" #rogramul # t+on depinde

    de acest pac+et"

    sudo *et+ttps0//pyp#.pyt+on.or*/pa ,a*es/sour e/R/RP#.GPIO/RP#.GPIO%'.4. a.tar.*1

  • 8/10/2019 ADXL345-RaspberryPI

    8/15

    5" #orneste programul care citeste si afiseaza senzorul prin comanda2

    ./read ad2"

    6ei o tine urmatoarele imagini2

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    9/15

    Pro!ramul Python"

    -ro! datet#!e #!port datet#!e#!port RP#.GPIO as GPIO#!port t#!e

    #!port os#!port subpro ess#!port sys

    LCD RS $5LCD $4LCD D4 $3LCD D5 &LCD D6 (LCD D& $$L D ON 5

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    10/15

    LCD 7ID89 $'LCD C9R 8rueLCD C:D ;a"se

    LCD LIN '2('LCD LIN $ '2C'LCD LIN 3 '2 '.''''5

    de- !a#n?@0

    te2tL#ne8 o ACC L X0 B str?#nt?-"oat?sys.ar*) @@@

    te2tL#ne8+ree ACC L >0 B str?#nt?-"oat?sys.ar*) $ @@@ te2tL#ne;our ACC L E0 B str?#nt?-"oat?sys.ar*) 3 @@@

    " d #n#t?@ " d byte?LCD LIN F LCD C:D@ " d str#n*? Rp# and ADXL345 F$@ " d byte?LCD LIN $F LCD C:D@ " d str#n*?te2tL#ne8 oF @ " d byte?LCD LIN 3F LCD C:D@ " d str#n*?te2tL#ne8+reeF @ " d byte?LCD LIN 4F LCD C:D@ " d str#n*?te2tL#ne;ourF @

    de- " d #n#t?@0 GPIO.set arn#n*s?;a"se@ GPIO.set!ode?GPIO. C:@ GPIO.setup?LCD F GPIO.O=8@ GPIO.setup?LCD RSF GPIO.O=8@ GPIO.setup?LCD D4F GPIO.O=8@ GPIO.setup?LCD D5F GPIO.O=8@ GPIO.setup?LCD D6F GPIO.O=8@ GPIO.setup?LCD D&F GPIO.O=8@

    " d byte?'233FLCD C:D@ " d byte?'23$FLCD C:D@ " d byte?'2$(FLCD C:D@ " d byte?'2'CFLCD C:D@

    " d byte?'2'6FLCD C:D@ " d byte?'2' FLCD C:D@

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    11/15

    de- " d str#n*?!essa*eFsty"e@0 H sty"e Le-t ust#-#ed H sty"e $ Centred H sty"e 3 R#*+t ust#-#ed

    #- sty"e 0 !essa*e !essa*e." ust?LCD 7ID89F @

    e"#- sty"e $0 !essa*e !essa*e. enter?LCD 7ID89F @ e"#- sty"e 30 !essa*e !essa*e.r ust?LCD 7ID89F @

    -or # #n ran*e?LCD 7ID89@0 " d byte?ord?!essa*e # @FLCD C9R@

    de- " d byte?b#tsF !ode@0 H Send byte to data p#ns H b#ts data H !ode 8rue -or +ara ter H ;a"se -or o!!and

    GPIO.output?LCD RSF !ode@ H RS

    H 9#*+ b#ts GPIO.output?LCD D4F ;a"se@ GPIO.output?LCD D5F ;a"se@ GPIO.output?LCD D6F ;a"se@ GPIO.output?LCD D&F ;a"se@ #- b#tsJ'2 ' '2 '0 GPIO.output?LCD D4F 8rue@ #- b#tsJ'2$' '2$'0 GPIO.output?LCD D5F 8rue@ #- b#tsJ'24' '24'0 GPIO.output?LCD D6F 8rue@ #- b#tsJ'2(' '2('0 GPIO.output?LCD D&F 8rue@

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    12/15

    H 8o**"e K nab"eK p#n t#!e.s"eep? D LA>@

    GPIO.output?LCD F 8rue@t#!e.s"eep? P=LS @

    GPIO.output?LCD F ;a"se@t#!e.s"eep? D LA>@

    H Lo b#ts GPIO.output?LCD D4F ;a"se@ GPIO.output?LCD D5F ;a"se@ GPIO.output?LCD D6F ;a"se@ GPIO.output?LCD D&F ;a"se@ #- b#tsJ'2' '2' 0 GPIO.output?LCD D4F 8rue@ #- b#tsJ'2'$ '2'$0 GPIO.output?LCD D5F 8rue@ #- b#tsJ'2'4 '2'40 GPIO.output?LCD D6F 8rue@ #- b#tsJ'2'( '2'(0 GPIO.output?LCD D&F 8rue@

    H 8o**"e K nab"eK p#n t#!e.s"eep? D LA>@

    GPIO.output?LCD F 8rue@t#!e.s"eep? P=LS @

    GPIO.output?LCD F ;a"se@t#!e.s"eep? D LA>@

    #- na!e K !a#n K0 !a#n?@

    Pro!ramul C"

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    13/15

    // * %o read ad2" read#n*ADXL345.

    H#n "ude std#o.+M H#n "ude std"#b.+M

    H#n "ude - nt".+M H#n "ude un#std.+M H#n "ude str#n*.+M H#n "ude sys/#o t".+M H#n "ude sys/types.+M H#n "ude sys/stat.+M H#n "ude "#nu2/#$ %de).+M

    Hde-#ne ADXL345 I$C ADDR '253

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    14/15

    )o#d se"e tDe)# e?#nt -dF #nt addrF +ar na!e@

    #- ?#o t"?-dF I$C SLAV F addr@ '@

    -pr#nt-?stderrF s not presentQn F na!e@ //e2#t? @

    )o#d r#te8oDe)# e?#nt -dF #nt re*F #nt )a"@

    +ar bu- $ bu- ' re* bu- )a" #- ? r#te?-dF bu-F $@ T $@ -pr#nt-?stderrF CanKt r#te to ADXL345Qn @ //e2#t? @

    #nt !a#n?#nt ar* F +ar ar*)@

    uns#*ned #nt ran*e #nt ountF b s+ort 2F yF 1 -"oat 2aF yaF 1a #nt -d uns#*ned +ar bu- 6 +ar str (' +ar syste! str $56

    #- ??-d open? /de)/#$ % F O RD7R@@ '@ // Open port -or read#n* and r#t#n* -pr#nt-?stderrF ;a#"ed to open #$ busQn @ e2#t? @

    / #n#t#a"#se ADXL345 /

    se"e tDe)# e?-dF ADXL345 I$C ADDRF ADXL345 @

    r#te8oDe)# e?-dF '2$dF '@ r#te8oDe)# e?-dF '2$dF 6@ r#te8oDe)# e?-dF '2$dF (@ r#te8oDe)# e?-dF '23 F '@ r#te8oDe)# e?-dF '23 F @

    +#"e ? @

    +ttp2)) "ro ofun"ro)forum

    http://www.robofun.ro/forumhttp://www.robofun.ro/forum
  • 8/10/2019 ADXL345-RaspberryPI

    15/15

    / se"e t ADXL345 /

    se"e tDe)# e?-dF ADXL345 I$C ADDRF ADXL345 @

    bu- ' '23$ #- ?? r#te?-dF bu-F @@ T @ // Send t+e re*#ster to read -ro! -pr#nt-?stderrF rror r#t#n* to #$ s"a)eQn @ //e2#t? @ #- ?read?-dF bu-F 6@ T 6@ // XF >F E a e"erat#ons

    -pr#nt-?stderrF =nab"e to read -ro! ADXL345Qn @ //e2#t? @ e"se 2 bu- (U bu- ' y bu- 3 (U bu- $ 1 bu- 5 (U bu- 4 2a ?