Sa construim senzori - Libris.ro construim senzori - Tero Karvinen, Kimmo...bani!) la instalarea...
Transcript of Sa construim senzori - Libris.ro construim senzori - Tero Karvinen, Kimmo...bani!) la instalarea...
Tbno KenvnvrN, Krrvruo KnnvrNnu gl Vrrrr Verroranr
Se construim SenzoriProiecte qi experimente pentru a misura lumea
cu plicile Arduino Ei Raspberry Pi
M.A.S.T, zorT
Cuprins
Prefali
l. Raspberry Pi...............
Raspberry Pi de la zerola prima bootare.....................
Extrageli NOOBS*Conecta[i cabluri]e .......
Boota$ gi instala$ Raspbian.......
Depanarea instalirii defectuoase a Raspberry Pi...................
Familiarizati-vi cu Linux ..
Interfala liniei de comandi este peste tot, intotdeauna........................
Privili in jur.Figiere de text pentru configurare..sudo Fi-mi un sandwich ....;!..................
Conectarea pd.rlii electronice la pinii Raspberry Pi..............
Bun r-enit, GPIO, clipegte dil LEDConslruirea circuitului ....
Doui sisteme de numerotare: scopul gi localia.......Controlul pinilor GPIO din CLI ................Scrierea in figiere {IrI editor....Aprinderea LED-ului......Depanarea
GPIO fire root...............
Depanarea GPIO............
GPIO iD Prthon..-.......Hello Python .,..r.....i..;..........r
11
2l22
23
23
24
26
28
29
30
30
31
JJ
34
36
36
38
39
40
4l43
46
46
46
50
Modul de instalare primar al Arduino.... 52
Lrbuntu Linux............ 52
Windows 7 qi Windows 8..................... 53
os x............. s4
Anatomia unui program Arduino........ ............................Plicile shield conferi simplitate gi robustele..
3. Distanfa. ssExperimenL Misura{i distan{a cu sunetul ultrasonic (PING) 60
Codul Ping gi conexiunile pentru Arduino .................... 6LCodul Ping gi conexiunile pentru Raspberry pi 64
Senzorul ultrasonic HC-SR04...... 67Codul HC-SR04 gi conexiunea pentru Arduino........ 67Codul HC-SR04 9i conexiunile pentru Raspberry pi .... 69Explicarea calcullrii ecoului.......... 7lExperiment de mediu: Obiecte invizibile....... Z3
Experiment Detectarea obstacolelor cu infraroqii(Senzorul de distanta IR) z4Codul intrerupitorului cu infrarogii IR qi conexiunile pentru Arduino... 75Codul intrerupitorului cu infrarogii IR qi conoriunile pentru RaspberryprTT
Experiment de mediu: Cum si vedem infiaroqiile ZgExperiment Urmirili migcarea cu infrarogii (Ochiul compus IR) .......... g0
Codul ochiului compus gi conexiunea pentru Arduino........ 8lCodul ochiului compus gi conexiunile pentru Raspberry pi g4
Instalarea SpiDev.......... gg
Circuite alternative pentru Raspberry Pi ........................ 89Proiect-test: Alarma de pozifie corporal[ (Arduino) 90
Ce vefi invl[a........... 91
Beeper-ul piezoelectric 9lAlarmi, alarmi!......-.. 93Combinarea unui senzor piezoelectric cu unul IR.................. 94Ambalarea lntregului ansamblu intr-un pachet aspectuos...... 9Z
4. Fumul qi gazele...... ............. 100Experiment: detectarea fumului (senzorul analogic de gaze)................... 101
Codul MQ-2 gi conexiunea pentru Arduino....... ........... 102
Codul MQ-2 gi conexiunea pentru Raspberry Pi .......... 104Experiment de mediu: Fumul se duce in sus............. ..... 106Experiment Alcoolmetrul (Senzorul de alcool Me-303A)................ I 07Experiment de mediu: Incercalil frri si beg... ............. t i t
Proiect-test transmiterea alarmei de fum prin email..... ..... 112
Cevefiinvita........... ............. lt2Python pentru email gi mediile de socializare ................ 112
4
56
57
Construcfia .... 113
Cum funclioneazi e-mail-ul?................. ... 113
Poate Arduino si trimitl emailuri? Mai greu. ............... 114
Codul pentru Raspberry Pi ........................ 115
Ambalare..... ... 118
5. Comenzi rrtoucH'....... ........ lz3Experiment butonul......... ......... 123
Rezistenla de ridicare.... ....... 125
Codul gi conexiunea pentru Arduino........ ...................... 125
Ccrlul si coneriunea pentru Raspberry Pi................... ... L27
::r;rer"ment -\licro-intrerupitorul............. ..... 129
Codul micro-intrerupitorului qi conexiunea pentru Arduino ........... 1 30
Codul micro-intrerupitorului gi conexiunea pentru Raspberry Pi.... 132
Erperiment Potenfiometrul (Rezistenla variabill, PoQ ............................ 134
Codul potenliometrului qi conexiunea pentru Arduino...................... 136
Codul potenliometrului 9i conexiunea pentru Raspberry Pi .............. 137
Erperiment detectarea atingerii frri contact (senzorul de contact: :apacitivQTll3) .................. 139
Coful QTI l3 ;i conexiunea pentru Arduino ................ 140
Codd qTl 13 9i conexiunea pentru Raspberry Pi ......... 142Experiment de mediu: Detectarea atingerii prin lemn..... ... 143
Experiment Detectarea presiunii (FlexiForce) .................... 145
Codul Flexilorce gi conexiunea pentru Arduino ................................. 145
Codul Flexilorce gi conexiunea pentru Raspberry Pi.......................... 147
Experiment Construifi singur un senzor de contact.... ...... 149Codul senzorului capacitiv gi conexiunea pentru Raspberry Pi......... 150
PrG1 de tc*are Soneria ma$cA...-..... ......... 152CrEtiiEr4e-.-.-.-.. ............. 153
Serrcmotoarcl€ ..................... 153
Codul rcneriei magice gi conexiunea pentru Arduino........................ 159
Ata$area servomotorului la sonerie. ...............,................ 161
6. Ltigcarea ......... 163Erperiment Cum se ajunge sus? (senzorul cu bili) ............ 163
Codul senzorului de inclinafie gi conexiunea pentru Arduino........... 164Codul senzorului de inclinafie gi conexiunea pentru Raspberry Pi... 165
Experiment Vibralii pozitive cu Interrupt (intrerupere de program)(senzorul digital de vibra!ii)......... .................... 166
Codul senzorului de vibralii qi conexiunea pentru Arduino .............. 167Codul senzorului de vibralii qi conexiunea pentru Raspberry pi....... 169
Experiment: Rotili butonuI..................... ......... l7lCodifi catorul rotativ qi conexiunea pentru Arduino........ .................... 17 2Codul codificatorului rotativ gi conexiunea pentru Raspberry pi ...... 174
Experiment: )oystickul analogic (]oystick analogic cu doui axe)............. 176Codul joystick-ului gi conexiunea pentru Arduino........ ...................... 172Codul joystick-ului gi conexiunea pentru Raspberry pi................... ... 179
Experiment de mediu: pirli recuperate dintr-un controler pentruconsola Xbox............. .................. 181Experiment: Alarma antifurt! (Senzorul pasiv cu infrarogii).................... 182
Codul alarmei antifurt gi conexiunea pentru Arduino........................ 183
Codul alarmei antifurt si conexiunea pentru Raspberry Pi................ 185
Experiment de mediu: ingelarea alarmei ........................ 187Proiect de testare: Pong.............. ....................... 190
Ce veli invila ........... ..........._. l9ZIdei de ambalare pentru Pong.............. ...... Lg6
Pornirea automati a jocului cind Raspberry Pi bootea2e................... 200Rulafi jocul pe Login (logare)...............:................ ........... 200Logarea automati...... ......._... ZOI
7. Lumina......................... ......... 204Experiment: Detectarea flicirii (Senzorul de flaciri)..... .... 204
Codul senzorului de flacird,gi conexiunea pentru Arduino ............... 205Codul senzorului de flaclri si conexiunea pentru Raspberry Pi........ 207
Experiment de mediu: Precizia flicirii........... ....................... 209Experiment: Vedeli lumina (Fotorezistorul, LDR) .............. 210
Codul LDR gi conexiunea pentru Arduino .................... 210Codul LDR gi conexiunea pentru Raspberry Pi ............. 212
Experiment de mediu: O direc!ie..... ............... 214Experiment: Urmirifi 1inia............... ................ 215
Codul senzorului de linie gi conexiunea pentru Arduino ................... 216Codul senzorului de linie qi conexiunea pentru Raspberry Pi............ 218
Experiment de mediu: Negrul este alb ........... 219Experiment: Toate culorile curcubeului.. ....... ZZL
Codul senzorului de culoare gi conexiunea pentru Arduino....... ....... 2Zz
6
Codul senzorului de culoare qi conexiunea pentru Raspberry Pi...... 225
Proiect-test: Domul cameleonic... ............. 228
Ce veli inv[!a........... ............. 228
LED-ul RG8.............. ............ 229
Trecerea gradati de la input la output (easing) .............. 235
Combinarea codurilor...... ... 236
Idei utile la construirea Domului....... ....... 242
8. Accelerafia ................... ....... 246
Acceleralie vs. vitezi unghiulari ..................... 246
Lrperiment Accelerali cu MX2125.. .............. 247
Decodarea lungimii impulsului lalvlX2l25 ................... 248
Codul {*rometrului gi conexiunea pentru Arduino ...................... 25 ICodul accelerometrului gi conexiunea pentru Raspberry Pi.............. 252
Eryeriment Accelerometru gi giroscop impreuni..... ......... 254
Codul MPU 6050 gi conexiunea pentru Arduino................................. 256
Codul MPU 6050 gi conedunea pentru Raspberry Pi......................... 263
Sistemul de calcul hexazecimal, binar gi alte sisteme de ca1cu1........... 268
Operalii cu biti............ .......... 271
:-Er6-.:DeeL Adaptarea unui Wii Nunchuk (cu I2C) .......... 276
Cor&rl NuDchuk gi conexiunea pentru Arduino ............ 277
Codil Nunchuk gi conexiunea pentru Raspberry Pi ..... 281Proiect-tesL mini de robot controlati de Wii Nunchuk........................... 283
Ce veli invl[a........... ............. 284Adiugarea mecanicii miinii........... ........... 288
g.Identitefea ..... 291laxer.r:-a ......,.,..,.., 292
Cr{h:. "c:nrd ii conectarea la Arduino... ..............,..... 293
Qs1fui trcrnrrii 5i cooxiunea pentru Raspberry Pi............................ 296frycrirrpnt & mediu: D€adluirca amprentelor. ................ 299Scannerul de amprente GT-51 1C3.... .............. 300
C.odul senzorului de amprente qi conexiunea pentru Arduino Mega 302Codul senzorului de amprente qi conexiunea la Raspberry Pi............ 309
RFID cu elementul constructiv electronic ELB149C5M ..... 314Codul R-FID qi conexiunea pentru Arduino Mega............................... 316
Codul RIFD Ei conexiunea pentru Raspberry Pi ........... 319
Prrirt-test Cuflr vechi din viitor...... ............ 322
Ce vefi invifa........... .........-... 3ZzModul de funclionare a cufrrului... .......... 322Cuftru1......... ... 323Codul cufirului vechi gi conexiunea pentru Arduino ... 325
Cine sau ce este? ......................... 331
10. Electricitatea gi magrctismul .....-...... 332Experiment Tensiunea 9i curenhrl.... .............. 332
Codul AttoPilot qi conexiunea pentru Arduino........ ..... 334Codul AttoPilot gi conexiunea pentru Raspberry pi ..... 336
Experiment Este magnetic?................... .......... 339Codul senzorului cu efect Hall qi conexiunea pentru Arduino.......... 339Codul senzorului cu efectul Hall gi conexiunea pentru Raspb erry pi 340
Experiment Nordul magnetic cu busola-accelerometru ISM303 ........... 342
Codul LSM303 qi conexiunea pentru Arduino..................................... 344Codul LSM qi conexiunea pentm Raspberry Pi ............. 350Protocolul LSM303 .............. 355Calculul heading-ului (cap-compasului) busotei. .......... 355
Experiment intrerupltorul Ha11............... ...... 358Codul intrerupitorului Hall gi conexiunea pentru Arduino............... 358lntrerupitorul Hall Ei conexiunea pentru Raspberry Pi................... ... 36A
Proiect test: Monitor pentru celuli solarl. ..... 361
Ce ve{i invi[a ........... ............. 362
Conectarea celulelor so1are............ --........-. 362Transformarea plicii Raspberry Pi intr-un server de Internet......... ... 363Gisirea a&esei IP....-.............. -..........-....-.-.. 365
Realizarea propriei pagini de start pe Raspberry Pi ...... 365Codul monitorului panoului solar gi conexiunea pentru RaspberryPi 366
11. Sunetul .-.-._...---_. 371Experiment Auzim vocilnivelul volumului ......................-.- 371
Codul de prototipare al microfonului qi conexiunea pentru Arduino 372
Codul de prototipare al microfonului qi conexiunea pentru Raspberry Pr 373Experiment Auzifi clderea unui ac? .............. 374Proiect 1ss1; \t2tralizali sunetul prin HDMI.. ....................... 375
8
Ce vefi invl!a........... ............. 376
Activarea portului serial in Raspberry Pi................... ..... 376
Codul vizualizatorului gi conexiunea pentru Raspberry Pi................. 377
Transformarea rapidi Fourier......... .......... 380
Ce urmeazi? ......... 382
12. Vremea gi c1ima........ ........ 383
Experiment: Este cald in cameri? ................... 383
Codul LM35 gi conexiunea pentru Arduino .................. 384
Codul LM35 gi conexiunea pentru Raspberry Pi .......... 385
Lrperiment de mediu: Schimbarea temperaturii. ................ 387
E:+,eriment -{,erul este umed aici? ................. 388
Ci & um€di €ste respira$a dumneavoastri?...................................... 389
Co&l DHTI I gi conexiunea pentru Arduino....... ........ 389
Codul DHTI l 9i conexiunea pentru Raspberry Pi................... ............ 392Yorbind cu Arduino de pe Raspberry. Pi............. ............ 394
GY65 pentm presiunea atrnosferici.. ............. 396Codul GY65 gi conexiunea pentru Arduino.....................-........-...-.-..... 397
Folosirea bibliotecilor Arduino ................. 399E-q*icarea bibliotecii Arduino GY65............. ........................ 399
C{drr! GY6i ;i conexiunea pentru Raspberry Pi.................................. 405frycrtltrt.g- p[s6 drrmneavoastri trebuie udatl? (Construili un senzorde umkliate a solului) ............,.. 408
Codrl senzorului de umiditate a solului qi conexiunea pentru Arduino ..... 409Codul senzorului de umiditate a solului qi conexiunea pentruRaspberry Pi................... ....... 410
Proiect test Prognoza meteo cu hirtie electronici..................................... 4lZCe vefi invi!a........... ............. 413Codul prognozei meteo gi conexiunea pentru Arduino ...................... 4L3
irycrl at & meditr gi1s, 6ami, nu-i nimic in prizi! ........................... 422Sto---"ce in filierele de preambul ........................ 422
Progxamul de couversie BMP la C.................... ............... 424Idei de ambalare....... ................... 426
Apendix A. Scurti referire la Raspberry Pi Linux...... .................... 428
Raspbery, Pi
Vi recomandnm sn incepe[i cu Raspberry Pi Model B, care include
conectarea la Ethernet gi destule porturi USB pentru un mouse 9i o
tastaturi. Asdel, este mult mai uqor pentru tnceput.
f :igurc I l. Conexiuni perifence Raspberry Pi
Daci nu cumpirafi Raspberry Pi ca parte a unui kit, probabil ci nu
va avea o carcas4 dar putetr pune placa ca atare pentru impresia de
cxpert in calculatoare.
Sau, daci ave{i acces la o imprimanti 3D CNC sau la un cutter cu
loser, put4i face singur o carcasi, alegind din numeroasele exemple de
pe lr t tp:/hv-ww.thingiverse,com-
Un card de memorie 4 GB SD este suficient de mare Pentru sistemul
de operare. Un card de dimensiuni mai mari poate fi mai pu[in predispus
h uzurl in timp (mai mult spa]iu de stocare de alocat pentru prelungirea
memoriei), aga c6, daci ave[i un card de 8 GB sau mai mare, este chiar
mai bine.
I
2t
Raspberry Pi poate comanda un afiqaj complet high-def gi
chiar si trimiti sunete prin HDMI. Un televizor HD va putea,sigur, si func{ioneze foarte bine ca afiqaj pentru Pi.
Daci avefi la dispozi(ie o tastaturi qi un mouse, vi va veni multuqor si incepefi. Raspberry Pi Model B are exact doui porturisuficiente pentru mouse qi tastaturi.
Dacd vre{i sd addugali un adaptor USB WLAN, aveli nevoie de
terminal U SB in funcfiune. Vezi http : / / elinux. org/ RPI -U SB _Wi - FiAdapters pentru lista de adaptoare WiFi din Pi-ul dudhnd dublu-clic pe icoana WiFi Config de pe Desktop dupd ce
sistemul de operare ;i boota{i la mediul grafc de pe desktop.
Toate cablurile 'tastaturamouse-ul gi afrqajul poa, costa maimult decit doui Raspberry Pi.Daci nu avefi 'deja toate acestepiese pe undeva, pline de praf,atunci este cam mult pentru uncomputer minuscul. Dat chiar
$i a$a, se econornisegte timp (gi
bani!) la instalarea unui mediu delucru confortabil. Mai tirziu, cindproiectul ajunge si funcfioneze,puteti reduce sistemul la pdrlile
Raspberry Pi de lazerolaAcest capitol vi va invifa cum si pornifi 9i si rulafi rapid
Pi. Primul lucru pe care trebuie si-l faceli este s[ instalafi programLinux pe Raspberry Pi. Pentru aceasta, trebuie si urmali urmltorii
. Descircati qi extrage[i setup-ul de instalare pe un card SD formatat.
. Inserati cardul ln Raspberry Pi gi conectafi-l la o tastaturi,mouse gi un monitor.
. Porniti-I, alegeli ce trebuie sI instalafi gi agteptafi.Dupi ce se finalizeazi aceqti paqi, suntefi gata sI accesati Pi-ul pe
desktop setat grafic pentru Linux.
22
strict necesare. Dupi clrm se
spune, Raspterry Pi este singurulcomputer de 35 $ care costl o sutide dolari.
Daci decideli s[ interacfionalicu Raspberry Pi prin SSH sauVNCln refea, nu aveli nevoie dectt siconectali releaua 9i electricitatea qi
nu veli mai avea nevoie de tastaturl,mouse sau monitor decit in timpulinstalirii ini[iale.
bootare
Ve[i avea nevoie de urmitoarele pirfi:. Raspberry Pi Model B. Cablu micro USB qi incircitor USB (sau computer). Card SD de 4GB. Afiqaj cu port HDMI. Cablu HDMI. Mouse USB. Thstaturi USB
Extragefi NOOBS*l)ownloadafi NooBS-vx-Y-z.zip ( incepand cu aceasti formuli,
numele figlerului pani si citili acest lucru ) de pe link-ul http:llnrspherrypi.org/downloads.
l)e asemenea, puteti gdsi toate link-urile necesare aici http://botbook.com, care se potrivesc cu arhivele fisierelor cu con{inut similar.
Inserafi cardul SD in calcu]ator. Majoritatea carduriror SD sunt infirrmat FAT32 din fabricatie, deci vefi intimpina probleme de spa{iu pecrrd numai daci l-a{i formatat singuri cu un alt iip de format de baia.Dup[ ce dezarhivafi arhiva, asigura{i-vi cd fisierulbootcode.bin este indlrectorul de baza al cardului SD.
Dacd-ave{i nevaie sd formatafi cardul sD, folosi{i metoda prezentatdpe (https://www.sdcard.org/downloads/formatter_aD de cdtre SDAssociation.
In versiunile moderne ale Linux, windows sau Mac puteti accesaNooBS.zip doar ddnd dublu-clic sau clic-dreapta si dezarhivare. pentruversiunile vechi ale windows-ului, pute[i instala zzip (http://www.7-zlp.org),pentru a dezarhiva arhivele zip.
Conectarea cablurilorconectarea cablurilor este ugoari, pentru ci fibcare cablu se potrivegte
doar in orificiul destinat lui. conectili mouse-ul gi tastatura in poriulUff a_t-laspberry Pi. Daci folosifi un monitor HDMI, .orr..t-u1i ,r,csblu HDMI intre monitor gi Raspberry pi. Daci forosi{i un monitorN'rsc sau PAL, folosifi un cablu video compozit pentru a conecta figa6rtlben[ a Raspberry Pi la monitor.
23
in continuare, conectafi cablul micro USB la Raspberry pena alimenta cu energie. Introduce(i cablul fie intr-un port USBcomputerului, fie la un incircitor USB de 5 vol$ care asiguri cel700 mA.
Bootarea si instalarea RaspbianImediat ce conectafi la energie Raspberry Pi, acesta se booteazi.
este nevoie de niciun intrerupitor.
Dacii rut dpdre nimic pe ecran, poate cd yrt trebui sd selecta{i modulie;ire adecvat pentru Raspberry Pi. A4odul implicit de ieSire este HI)MIdar rlaca sunte{i conecta{i prin HDM.I Si nu vede{i nitnic, apttsa{i 2tastatura conectata la Raspberrl, Fipetttru a selecta Modul HDMI dSiguran{d. Daca sunteti conecta{i prin conectorul compozit (galbenapdsdfi tasta j pentru un monitor sau televizor PAL, sau tflsta 4 pentrwt monitor snu televizor NTSC.
Vef fi intimpinat printr-un meniu grafic cu diferite sistemeoperare precum qi limba Ei tipul de tastaturi. Selectafi ,,
[RECOMANDAT]" (Figura l-2) 9i selecta{i limba qi tipul depe c:re le vefi utiliza.
I h{ur 06 \ '| GfiE hsrD ft,
AIrilr
np
Otlctlil l-(:
{rsc {j$
Figura 7-2. Alegerea unui sistem de operare
Daci gti{i Ebian, Mint sau [fbuntu, vi veti simti indumneavoastri cu alegerea frcuti; daci nu, citi{i mai departe gi o sisimfifi la fel de confortabil! Raspbian se instaleazi in doar citeva minute
24
(lrigura 1-3). Dupn incheierea instal[rii, ea va anunla c6' a instalat
oistemul de operare cu succes. Apisafi Enter sau OK pentru re-bootare.
f rigura l-3. Raspbian se instaleazi.
Se deschide utilitatea de configurare a Raspberry Pi. Folosi(i sigefileqi Tab pentru a naviga gi apisafi Enter/Return pentru a selecta o opfiune,sqa cum se aratl in Figura 1-4.
Bunvenit ln Raspberry Pi
Acum setlm cardul SD dar nuvI ingrijorafi, ve{i putea incepe siprogramafi in scurt timp
Yrtd.iq *drJr lir $D rard
Hlr%:* UB *r 1l:l l,lli q'*leJ! l{ { t'l$J*.j
I tgurrr I .1. Schimbareaparolei.
25
Va trebui si validafi opfiunea Boot pe Desktop. Dupi ce termina{ischimbarea setirilor, folosifi Tab pentru a selecta Finish gi reboota{iatunci cind vi se cere.
Dupi ce Raspberry Pi s-a rebootat, va rula pe un desktop deja setatgrafic ai va porni automat.
Daci ali ales si nu permiteli bootarea automati pe desktop, veliporni de fiecare data cu interfafa de comandi principali. Logafi-vi ca
,,raspberry'' folosind parola .pi" ( daci nu afi schimbat-o). Dupi ce vilogafi , scrieli startn in bara de start a sistemului Windows.
fltra@
I
,,|1
'$
I#*.
(Figura l-5) Bine ali venit pe Linux! Beneficia{i de Raspbian pe Raspberry Pi
Pentru a inchide Raspberry Pi, dasi dublu-clic pe icani{a ,,Shut down'depe desktop. Dupd finalizarea Procesului de inchidere a sistemului,trebuie sd deconectali aparatul de la sursa de curent.
Depanarea instalirii defectuoase a Raspberry PiIati citeva solufii pentru problemele des intilnite:
Este cardul SDformatat in FAT32?Daci avefi probleme cu bootarea de pe cardul SD , este posibil sd nu
fie formatat corect.- p" ii""", fAorili editorul debazirpentru partifionare (scriefi sudogparted pentru a il porni).Formatafi intregul hard in FAL Puteli folosiun alt instrument impreuni cu comanda sudo pal impsest (sau sudo
26