Raspberry Pi

Page 1


Raspberry:-

5/1/2014

4:39 PM

Page 1

Raspberry Pi Istra탑ite RPi preko 45 elektronskih projekata



Raspberry Pi Istra탑ite RPi kroz 45 elektronskih projekata

Bert van Dam

Agencija EHO www.infoelektronika.net


Sva prava zadržana. Nijedan deo ove knjige ne može biti reprodukovan u bio kom materijalnom obliku, uključujući fotokopiranje ili slučajno ili nenamerno smeštanje na bilo koji elektronski medijum sa ili uz pomoć bilo kog elektronskog sredstva, bez pismenog odobrenja nosioca autorskog prava osim u skladu sa odredbama Zakona o autorskim pravima, dizajnu i patentima iz 1988 godine ili pod uslovima izdatim od Copyright Licensing Agency Ltd, 90 Tottenham Court Road, London, England W1P 9HE. Prijave za pismene dozvole radi štampanja bilo kog dela ove publikacije upućuje se izdavaču ove knjige. Izdavač je uložio najveće moguće napore da bi se obezbedila tačnost informacija sadržanih u ovoj knjizi. Izdavač ne može da pretpostavi neprijatnosti i ovom izjavom isključuje bilo kakvu odgovornost za bilo koju stranku koja bi imala gubitke ili štetu uzrokovanu greškama ili propustima u ovoj knjizi, bez obzira da li su greške ili propusti nastali usled nemara, nezgode ili bilo kog drugog razloga.

ISBN 978-86-915999-9-7

Prevod sa engleskog: Volođa Pezo Izdavač: Agencija EHO e-mail: redakcija@infoelektronika.net Štampa: Agencija EHO


SADRŽAJ UVOD 1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

POTREBNI USLOVI . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 1.1 RPI . . . . . . . . . . . . . 1.2 SD KARTICA . . . . . . . . 1.3 TASTATURA . . . . . . . . . 1.4 MIŠ . . . . . . . . . . . . . 1.5 DISPLEJ . . . . . . . . . . . 1.6 INTERNET KONEKCIJA . . . 1.7 NAPAJANJE . . . . . . . . . 1.8 USB HUB . . . . . . . . . . 1.9 ZVUČNIK (ILI SLUŠALICE) . 1.10 PROTOTIPSKA PLOČICA . . 1.11 KOMPONENTE . . . . . . . 1.12 SOFTVERSKI OSCILOSKOP

2

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

.12 .12 .12 .13 .13 .15 .16 .16 .17 .17 .18 .18

KRATAK PREGLED RPi RAČUNARA . . . . . . . . . . . . . . . .21 2.1 LXTERMINAL . . . . . . . . . . . . . . . . . . . . . . . 2.2 LXTERMINAL - SKROT . . . . . . . . . . . . . . . . . 2.3 LXTERMINAL - NANO . . . . . . . . . . . . . . . . . . 2.4 IDLEX . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 NAPOMENA O DEBIAN-U . . . . . . . . . . . . . . . . 2.6 MIDORI . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 WIFI CONFIG . . . . . . . . . . . . . . . . . . . . . . 2.8 SCRATCH . . . . . . . . . . . . . . . . . . . . . . . . . 2.9 PRIBORI (ACCESSORIES) - LEAFPAD - TEKST EDITOR 2.10 ACCESSORIES - FAJL MENADŽER . . . . . . . . . . . 2.11 SYSTEM TOOLS - TASK MANAGER . . . . . . . . . .

3

. . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

.22 .23 .23 .25 .25 .25 .26 .26 .26 .27 .27

INSTALACIJA SOFTVERA . . . . . . . . . . . . . . . . . . . . . . .29 3.1 RPI . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Tastatura . . . . . . . . . . . . . 3.1.2 SD kartica većeg kapaciteta 3.1.3 Izmena dodeljene memorije 3.1.4 IP adresa . . . . . . . . . . . . . 3.2 WINDOWS PC (OPCIJA) . . . . . . . . . . 3.2.1 Disk Imager . . . . . . . . . . . 3.2.2 Python, wxPython i IdleX . . 3.2.3 Putty (SSH) . . . . . . . . . . . 3.2.4 Xming (Xwindows) . . . . . . . 3.2.5 WinSCP . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

.29 .29 .30 .31 .31 .36 .37 .37 .39 .40 .44


4

KRATAK UVOD U ... . . . . . . . . . . . . . . . . . . . . . . . . . . .47 4.1 4.2 4.3 4.4

5

DEBIAN LINUX . . . . . . . . . . . PROGRAMIRANJE U BASH-U . . . . PROGRAMIRANJE U PYTHON-U . . PROGRAMIRANJE U JAVASCRIPT-U

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

.47 .53 .58 .85

GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9

UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 BLJESKAJUĆA LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 NAIZMENIČNO BLJESKANJE LED . . . . . . . . . . . . . . . . . . . . . . .100 LED TAJMER SA PROZOROM . . . . . . . . . . . . . . . . . . . . . . . . . .102 PREKIDAČ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 VREMENSKI PREKIDAČ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 NAIZMENIČNI PREKIDAČ . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 STANJE PREKIDAČA U PROZORU . . . . . . . . . . . . . . . . . . . . . . . .113 5.9.1 Upotreba tajmera . . . . . . . . . . . . . . . . . . . . . . . .113 5.9.2 Korišćenje Multi-threadinga . . . . . . . . . . . . . . . . .116 5.10 STANJE PREKIDAČA U PROZORU . . . . . . . . . . . . . . . . . . . . . . .122 5.11 STANJE PREKIDAČA U PROZORU . . . . . . . . . . . . . . . . . . . . . . .124

6

JOŠ SNAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 6.1 TD62783 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Svetla (6V, 65 mA) . . . . . . . . . . . . . . . . . . . 6.1.2 Motor (5V, 145 mA) . . . . . . . . . . . . . . . . . . . 6.2 ULN20037 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Ventilator (12V, 150 mA) i svetlo (6 V, 65 mA) 6.3 IRF740 MOSFET . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Motor (5 V, 550 mA) . . . . . . . . . . . . . . . . . .

7

PWM

. . . . . . .

. . . . . . .

.129 .131 .132 .133 .135 .137 .137

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141

7.1 PWM NA TRI NAČINA . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 Frekventna pobuda . . . . . . . . . . . . . . . . . . . . . 7.1.2 Širina impulsa (mark-space) sa fiksnom učestanošću 7.1.3 ‘Mark-space’ sa promenljivom učestanosti . . . . . 7.2 SVETLO SA POSTEPENIM POVEĆANJEM JAČINE . . . . . . . . . . . . . . 7.3 MOTOR PROMENLJIVE BRZINE . . . . . . . . . . . . . . . . . . . . . . . 8

. . . . . . .

. . . . . .

.142 .143 .145 .147 .148 .152

SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 8.1 8.2 8.3 8.4 8.5 8.6

UVOD U SPI . . . . . . . . . . . . . . . . . . . . . . . . . . MAX522 DIGITALNO PRETVARANJE U ANALOGNO (DAC) DAC SA OPERACIONIM POJAČAVAČEM . . . . . . . . . . . . VIŠE OD DVA SPI UREĐAJA . . . . . . . . . . . . . . . . . . MCP3008 ANALOGNO DIGITALNI PRETVARAČ (ADC) . . . MCP3008 ZA PSEUDO DIFERENCIJALNO MERENJE . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

.155 .158 .164 .169 .170 .176


I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179

9 9.1 9.2 9.3 9.4 10

UVOD U I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . MCP23008 I/O PROŠIRENJE (EKSTENDER ILI EKSPANDER) JOŠ SNAGE EKSTENDERU . . . . . . . . . . . . . . . . . . . . TC74 DIGITALNI TERMOMETAR . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

.197 .198 .200 .202 .204

WEB SERVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211

11.1 UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 HTML SERVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.1 HELLO USER . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.2 Broj posetilaca u brojaču . . . . . . . . . . . . . . . . . . 11.3.3 Prenos promenljivih sa pretraživača na server . . . 11.3.4 GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.5 GPIO sa JavaScript-om . . . . . . . . . . . . . . . . . . . 11.3.6 I2C alarm za frižider sa automatskom veb stranicom 12

.179 .179 .181 .187

SERIJSKI PORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197

10.1 UVOD U RS232 . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.1 SERIJSKA VEZA SA POVRATNIM SPOJEM (LOOPBACK) 10.2 SERIJSKA KONEKCIJA IZMEĐU RPI I PIKOLINA . . . . . . . . 10.2.1 Serijski eho . . . . . . . . . . . . . . . . . . . . . . 10.2.2 Serijsko analogno merenje (ADC) . . . . . . 11

. . . .

.211 .211 .214 .215 .219 .221 .224 .228 .236

KLIJENT SERVER . . . . . . . . . . . . . . . . . . . . . . . . . . . .241

12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8

UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . TCP MULTIPLIKACIJA . . . . . . . . . . . . . . . . . . . . TCP LED KONTROLA . . . . . . . . . . . . . . . . . . . TCP DAC . . . . . . . . . . . . . . . . . . . . . . . . . TCP GENERATOR TESTERASTIH I ČETVRTASTIH SIGNALA TCP VOLTMETAR SA 8 KANALA . . . . . . . . . . . . . . UDP EHO . . . . . . . . . . . . . . . . . . . . . . . . . . UDP MERAČ SVETLOST . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

.241 .241 .247 .249 .250 .259 .264 .267

PRILOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273 1 2 3 4 5

PODESIVO NAPAJANJE KOLO GPIO LETVICE SADRŽAJ PAKETA . . SPISAK DELOVA . . . DRUGE KNJIGE ISTOG

. . . .

. . . .

. . . .

. . . .

. . . .

AUTORA

. . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

.273 .275 .276 .277 .278


91

5 GPIO Pre nego započnete bilo koji projekt trebalo bi prvo da pročitate sledeći uvod a naročito instrukcije koje se tiču bezbednosti. Trebalo bi da ste uvek proverili da li je RPi isključen pre izrade hardvera od navedenih projekata. Nemojte samo da izvučete utikač nego RPi isključite na propisan način. To se može uraditi na dva načina: Korišćenjem komande sudo shutdown -h now Preko linije zadataka: korišćenjem ikone sa krajnje desne strane. Linux je obično u mogućnosti da se obnovi ako ste izvukli utikač dok je RPi uključen ali ne uvek. Ukoliko iznenada isključite napajanje i RPi neće ponovo da startuje, trebalo bi izvršiti obnovu uz pomoć rezervne SD kartice koju ste napravili po odeljku 3.2.1. Sav posao koji ste napravili do tada će biti izgubljen i biće potrebno da ga uradite ponovo ispočetka.

5.1 Uvod Dvoreda letvica sa izvodima (GPIO) je sa gornje leve strane i sastoji se od 26 izvoda (pinova). Prva četiri pina su označena pa vidite kako idu brojevi. Neparni brojevi su sa jedne strane a parni sa druge. GPIO letvica obavlja različite funkcije, kao što su obični pinovi (u knjizi ih zovemo GPIO), I2C, SPI, PWM i serijski port. Način na koji koristimo ove četiri vrste pinova će biti objašnjen detaljno u narednim poglavljima. Neki od izvoda se ne koriste i označeni su sa ‘n/a’ (npr. pin 4)


92

5. GPIO

Slika 37. GPIO konektor na RPi.

Tabela 12. Pregled funkcija na izvodima konektorske letvice. Sa gornje slike možete videti da brojevi GPIO izvoda ne odgovaraju brojevima pinova na konektorskoj letvici. Na primer GPIO 2 je spojen na pin 3 letvice, dok se GPIO 7 nalazi čak na 26. izvodu letvice. Kad pravite kolo morate paziti na ovo! U paketu koji skidate sa interneta možete pronaći fajl header.bmp koji možete odštampati tako da uvek možete imati vidljivu informaciju. Na GPIO konektor možete lako vezati sve vrste elektronskih uređaja, kao što su LED i prekidači. Velika nepogodnost je da ovi spojevi nemaju nekakvu zaštitu.. Napon ili struja koja je samo malo veća može uništiti RPi. Oni koji su navikli da koriste mikrokontrolere, navikli su da se nose sa takvim udarcima. Ukoliko jedan uništite, možete ga zameniti jer je jeftin.


5.2 LED

Sve ovo znači da RPi tretiramo mnogo pažljivije. Zato koristimo nekoliko zlatnih pravila: 1. Isključite RPi pre izmene kola, čak i ako hoćete samo da odspojite provodnik (žicu).1 2. Zaštitite sve spojeve od neželjenih operacija. 3. Koristite komponente sa malom potrošnjom i koristite eksterno napajanje kad god je potrebno. Projektovana struja po pinu na GPIO je 3 mA. Za sve izvode uključujući i *3,3 V iznosi 51 mA. Kad ne koristite sve izvode možete povući više od 3mA sve do maksimuma od 16 mA po pinu. Ukupna potrošnje ne sme biti veća od 51mA. Preporučuje se da se uvek potrošnja po pinu drži ispod 3mA, koliko god je to moguće, što smo uvek i radili u ovoj knjizi. Sa Napajanjem od !A možete uzeti oko 250mA (model B) do 300mA (model A) sa pina od +5V. U praksi ovo opet zavisi od potrošnje struje drugih uređaja spojenih na RPi, kao što su tastatura i slično. Za sve projekte u knjizi koristimo napajanje od 3,3 V. Razlog je to što RPi radi na 3,3 V tako da svi izlazi pinova (za očekivanje) su 3,3V. Na letvici postoji izvod sa naponom od +5V ali ostali izvodi ne tolerišu taj napon. Drugim rečima dizajneri RPI-ja nisu predvideli da bi neko mogao da ostale pinove spoji na +5 V. To ne znači da bi RPi trenutno pregoreo kad bi mu doveli 5 V, neko vreme bi radio ali bi brzo odustao.2

5.2 LED Maksimalna struje koju RPi može da da sa 3,3 V je 51 mA i to na sve pinove! To je razlog da kao LED koristimo isključivo one koje prihvatljivo

1 Ne povlačite utikač da bi isključili RPi, već ga prvo zaustavite preko menija ili preko LXterminala komandama “sudo shutdown -h now“. 2 Mi ćemo se striktno držati ovog pravila ali na internetu ćete naći dosta projekata gde elektronika nije pravilno povezana. Potrebno je da budete veoma pažljivi kad pravite nešto sa interneta. 3 LED iz hardverskog kita sa oznakom Everlight 264-10UYD/S530-A3/T2.

93


94

5. GPIO

svetle na 2mA sjajem od 8mcd.3 Slika 38. Ograničenje struje uz pomoć otpornika za ograničenje.

Ova Led očigledno treba da ima otpornik za ograničenje struje, što se lako da izračunati. Prema tehničkim podacima ova LED ima pad napona od 2V. Ovo znači da će napon biti kroz strujni otpornik biti 3,3 - 2 = 1,3 V . Pošto struja sme da bude samo 2mA računamo potrebni otpornik uz pomoć Omovog zakona:

U=I*R ili: I=U/R ili R= U/I

gde su

U = V (napon u voltima) I = A (struja u amperima) R = otpornost u omima (Ohm)

Formulu ćemo ispisati na drugi način kao R=U/I i zameniti vrednostima 1,3/2*10-3 =650 Ohm Ova vrednost ne postoji a najbliže standardne vrednosti su 560 Ohm ili 680 Ohm. Biramo 680 Ohm tako da potrošnja struje bude nešto niža od 2mA (biće 1,3/680=1,9mA). Kolor kod za otpornik od 680 oma je plavosivo-smeđe. Spajanje se vrši na sledeći način: Nizovi kvadratića sa brojevima se nalaze na konektorskoj letvici RPI-ja. Pinovi 1 i 2 su na ivici RPI-ja kao što se vidi na fotografiji na slici 37. Otpornik se spaja između pina 7 i LED. Ovo je spojeno na pin 6 koji predstavlja masu (GND). U prilogu ćete naći raspored svih pinova sa njihovim nazivima.


5.2 LED

Slika 39. Spajanje LED na konektorsku letvicu.

Slika 40. Anoda i katoda LED.

LED ima pozitivan i negativan kraj (pozitivan se zove anoda a negativan katoda). Kad pažljivo zagledate unutar LED videćete da je jedan od izvoda širi od drugog. To je izvod koji se spaja na negativnu elektrodu. Često ovaj kraj ima i nešto kraći izvod. Na električnoj šemi simbol LED izgleda kao strelica sa linijom na krajevima. Korisno pravilo je da strelica uvek pokazuje na negativno. Slika 41. Nameštanje na prototipskoj pločici.

95


129

6 Još snage

Količina struje koju može da izda RPi na 3,3 V je maksimalno 51 mA i to računajući sve izvode zajedno. Pin od 5 V može da daje nešto više struje. Ovaj pin, u zavisnosti od napajanja i potrošnje RPi-ja može dati 250 i 300 mA. To zvuči bolje ali to ograničava broj periferalija koje možete spojiti, a koje zahtevaju energiju. Na primer WiFi adapter ili optički miš. U ovom poglavlju pogledaćemo nekoliko načina kako da RPi daje više snage i na višem naponu. Projekt TD62783 ULN2003 IRF740

Implementacija 8 konekcija, maksimalno 500mA / 50 V 7 konekcija, maksimum 500 mA / 50 V (razliþiti naponi za svaki pin) 1 konekcija, maksimalno 10 A / 400 V

U ovim projektima upotrebljavamo spoljašnje napajanje za svaku komponentu. Korisno je ako imate promenljivi izvor napajanja jer vam olakšava vezivanje različitih komponenti iz navedenih projekata od kojih svaka zahteva drukčije napajanje. Nema sumnje da bi ionako eksperimentisali sa drugim naponima. U Prilogu 1 možete naći uzorke kola za jedno promenljivo napajanje sa naponima od 1,24 V do 13 V pri struji od 1,5 A. Ovo napajanje je korišćeno za sve eksperimente u knjizi. Uvek je najbolje da napajanje uključite na kraju, kad sve proverite i da prvo isključite kad želite da isključite RPi.

6.1 TD62783 Integrisano kolo TD62783 je 8-kanalna pobuda sa izvorima čiji izlazi nominalno daju 500mA i mogu se nositi do napona od 50 V.


130

6. JOŠ SNAGE

Slika 54 Izlazne struje prema tehničkim podacima za komponentu TD62783 1 Jedan izlaz može dati 500 mA ali ne ako se koriste još nekoliko izlaza. Navedene brojke su iz tehničkih podataka za TD62783 i pokazuju dve vrednosti za maksimalnu struju kad se koriste svih 8 izlaza. Kod odnosa signal pauza od 10% (PWM duty cycle) za širinsku modulaciju svaki kanal može dati 260 mA (za PDIP) a kod odnosa 50% ovo se smanjuje na 59 mA po kanalu što ukupno čini 472 mA. Lepa stvar o ovom čipu je da je svaki izlaz obezbeđen diodom tako da možete motor spojiti direktno na čip. 2 Slika 55. Raspored izvoda na TD62783

Pozitivni signal na ulazu znači pozitivni signal na izlazu. Čip radi na TTL naponu od 5 V ali i 3,3 volta smatra logičkom jedinicom (1). Ovo znači da se ulaz TD62783 može direktno spojiti na RPi. Struja koja se povlači iz ulaza je 0,13 MA što je daleko ispod maksimuma za RPi. Raspored izvoda na TD62783 je prikazan na gornjoj slici. Svi izlazi imaju zajednički ulazni napon na pinu 9 (VCC). NA pinu 10 je zajednička masa 1 Možete koristiti UDN2981 koji ide do 80V/350mA ali je inače identičan. Zapazite da u tehničkim podacima stoji da UDN2981 može dati 500 mA ali grafik za strujni maksimum ima granicu na 350 mA (dokument Dwg. No. A-11,107B). 2 Drugi nazivi za klamp diode su : ‘flyback’, ‘snubber’, suppression’, ‘catch’. Kasnije ćemo razmotriti funkciju ovih dioda.


6.1 TD62783

(GND) koja bi trebalo da je spojena na RPi masu (GND, pin 6 na letvici). Napajanje, pin VCC, očigledno nikako ne sme biti spojen na RPi! 6.1.1 Svetla (6V, 65 mA) Počinjemo sa jednostavnim kolom gde spajamo svetlo od 6V sa 65 mA. Vidite da je ZD62783 vezan na 23 pin GPIO (16 pin na letvici). Masa RPI i promenljivi izvor napajanja su spojeni. Očigledno nisu spojeni +3,3 V i + 6V. Napon od +3,3 V mikrokontrolera RPi se ne koristi pošto se TD62783 napaja preko VCC (pin 9) koji je spojen na promenljivi izvor napajanja. Slika 56. Spojevi TD62783 na letvici.

Slika 57. Postavka na prototipskoj pločici

Dve žice koje idu van fotografije na desno su prema promenljivom izvoru napajanja. Svetlo će bljeskati uz sledeće:

131


132

6. JOŠ SNAGE

import os import wiringpi from time import sleep os.system( ‘gpio export 23 out’ ) sleep(0.5) io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_SYS) io.pinMode(23,io.OUTPUT) while True: io.digitalWrite(23,1) sleep(1) io.digitalWrite(23,0) sleep(1) U projektu 7.2 ćemo pokazati kako menjati sjaj svetla. Program pokrećete sa python td6273.py a zaustavljate sa Ctrl-C. 6.1.2 Motor (5V, 145 mA) Motor (ili rele) sadrži namotaje. Struja kroz namotaje preostaje, što znači da kad se ukloni napon struja teče još neko vreme. Pošto struja nema kuda da ode jer je napajanje sklonjeno napon će drastično porasti što bi moglo da uništi RPi i druge komponente. Da bi ovo sprečili, preko konektora motora se inverzno spaja dioda. Ova dioda (koja se naziva klamp ili prigušna dioda) normalno ne provodi jer je spojena inverzno ali baš zbog toga će propustiti preostalu struju. Za motor je problem još veći pošto on nastavlja da se okreće i posle isključenja pa radi kao dinamo (generator napona). Kolo TD62783 već ima ove klamp diode interno spojene pa motor možemo da vežemo direktno na čip.1 U ovom projektu koristimo motor Mitsumi od 5 V. Motor troši 15 mA kad se slobodno vrti i 145 mA kad se zaustavi.1 Umesto ovoga možete iskoristiti neki svoj motor, sve dok

1 Ovo važi i za UDN2981. Ako uzmete neki drugi čip trebalo bi pogledati tehničke podatke. Ukoliko Vaš čip nema klamp diode možete ih sami dodati. Kao primer možete koristiti diode 1N4007 čiji je probojni napon 1000 V i izdržavaju struje od 1 A sa impulsima od 30 A. Pošto ova dioda normalno ne provodi trebalo bi je spojiti inverzno.


6.2 ULN2003

su napon i struja u okviru specifikacija TD62783. Kolo je identično sa prethodnim samo je umesto svetla vezan motor. Slika 58. Postavka sa elektromotorom

Isti program koristimo za motor kao i za svetlo. U projektu 7.3 ćemo vam pokazati kako da menjate brzinu motora. 6.2 ULN2003, niz od 7 darlington tranzistora sa otvorenim kolektorom. ULN je niz od 7 darlington tranzistora sa sedam izlaza koji izdržavaju napon od 50 V. Pojedini izlaz daje 500 mA ali ne i kad se koristi više od jednog izlaza u isto vreme. Grafik sa slike 59 (sledeća stranica) je uzet iz tehničkih podataka i važi za kućište PDIP (koje odgovara prototipskoj pločici). Na horizontalnoj liniji je odnos signal pauza za PWM gde je DC jednako 100% ili potpuni signal. Vertikalna osa je za maksimalnu potrošnju struje u mA. Ovo su vršne vrednosti pa su znači apsolutni maksimum. Sa jednim aktivnim izlazom (izlaz daje struju) maksimum je 500mA. Za dva aktivna izlaza maksimum pri punom opterećenju (tj DC) je oko 390 mA po izlazu. Kad se koriste svih sedam izlaza maksimum se smanjuje na 179 mA po izlazu. Izlazi ovog čipa se mogu spojiti paralelno da obezbede više snage. Ukoliko bi spojili svih sedam paralelno dobili bi struju od 7x170 = 1190 mA. Pretpostavljam da je pod tim uslovima neophodno imati dobar hladnjak!

1 Zaustavljen, znači da se motor ne okreće neko vreme dok je na njemu pun napon. Ukoliko sami želite da merite struju ukočenog motora (stalled) to morate brzo izvesti jer se većina motora hladi samo dok se vrti. Ukočen motor se može brzo pregrejati.

133


197

10 Serijski port 10.1 Uvod u RS232 RS232 je definisan kao standard 1969 godine za komunikaciju između računara i periferija, obično teleprintera (kombinacija štampača i tastature koji su se koristili pre pojave monitora). Uzevši u obzir doba nije iznenađenje da su specifikacije za signale pomalo čudne. Pošto računari rade na +5V (ili +3,3V) za 1 i 0, RS232 koristi negativni napon između -3 i -12 V za 1 i pozitivan napon između +3 i +12V za 0. Opseg između -3 i +3V se ne koristi da bi se sprečile greške uslovljene dugim vodovima. Konekcija korist do osam provodnika za signale i zajedničku masu. Kod RPi-ja su upotrebljene samo dve od kojih je TX za predaju a RX za prijem podataka. Ono što jedan uređaj šalje, trebalo bi da primi drugi pa se signalni vodovi ukrštaju. Naziv masa (COMMON) se ovde odnosi na zajedničku masu pa je RPi-ju to GND.

Slika 113. Osnovni spoj serijske veze. Važan parametar ovih komunikacija je brzina prenosa (prim. prev. engleski baudrate) u bodima (baud). To je mera brzine prenosa podataka. Projekti u ovoj knjizi rade sa 9600 boda. Uporedite to sa brzinom takta pa će vam biti jasno da to baš nije brz protokol.


198

10. SERIJSKI PORT

U ovom poglavlju počinjemo sa serijskim povratnim spojem (loopback). Zatim postavljamo RS232 konekciju na TTL nivou sa Piccolino-m. Pikolino je brza razvojna platforma sa PIC mikrokontrolerom koji je programiran u JAL. 1

10.1.1 Serijska veza sa povratnim spojem (loopback) U ovom projektu kreiramo serijsku konekciju sa povratnom vezom. Ovo znači da je serijski izlaz vezan na ulaz. Na ovaj način možete brzo proveriti da li softverska podešavanja i port radi ispravno. U principu bi mogli na RPi-ju direktno spojiti pinove TXD i RXD. Na kraju svi mogući izlazni signali na TXD pinu će sami po sebi biti sa ispravnim naponima za RXD pin. Kao i obično mi brinemo šta bi se desilo ukoliko napravimo grešku sa pinovima. Sasvim je moguće da oba pina budu konfigurisana kao izlazi od kojih je jedan u visokom naponskom stanju a drugi u niskom naponskom stanju. Direktna veza pravi kratak spoj sa katastrofalnim posledicama. Da bi to izbegli stavljamo otpornik od1,8 kOhm između pinova. Neće uticati na serijsku komunikaciju ali zgodno izbegava štetu na RPi-ju kad postoji greška u programu. Maksimalna struja bi bila: I=U/R= 3,3/1k8=1,8 mA Slika 114. Serijska petlja sa otpornikom od 1k8.

1 JAL i drugi razvojni softver za Pikolino se može skinuti sa Pikolino stranice na Elektoru. Platforma Pikolino se može nabaviti od Elektora. Knjiga uz Pikolino je “Piccolino -30 Projects, Mods, Hacks and Extension Boards” koja će tek biti izdana 2014.


10.1 UVOD U RS232

Minicom komunikacioni program se pokreće komandom: minicom -b 9600 -o -w -D /dev/ttyAMA0 gde su parametri komande sledećeg značenja:1 b 9600

Brzina konekcije u bodima (to je podrazumevana RS232 TTL brzina za Pikolino

D

Ime serijskog porta na RPi-ju (/dev/ttyAMA0)

/dev/ttyAMA0

o

Bez inicijalizacije modema (nema ga jer je spoj direktan)

w

Uključuje smeštanje redova teksta tako da uvek bude vidljiv na ekranu.

Minikom se potpuno kontroliše preko tastature. Sa Ctrl-A dobijate stanje linije na dnu ekrana koja daje neke osnovne podatke o konekciji. U statusnu liniju možete uneti komande kombinacijom tastera. Najčešće korišćene naredbe su: Ctrl-A

X C Z

izlaz briše ekran pomoć

Od sada sve što kucate biće poslato preko pina TXD i biće trenutno primljeno preko otpornika na RXD pinu i prikazano na ekranu.

Slika 115. Minicom program za serijsku komunikaciju.

1 Uputstvo možete pogledati upisivanjem “man minicom” gde je man skraćenica za uputstvo

199


200

10. SERIJSKI PORT

10.2 Serijska konekcija između RPi i Pikolina RS232 je serijski protokol koji koristi signale od -12 V i + 12 V. Ni Pikolino ni RPi ne mogu dati signale tog nivoa. Umesto njih oni prave signale sa naponom od 0V i +VDD. Pošto je protokol i dalje RS232 mi ga nazivamo Rs232-TTL. 1 Ne bi imalo smisla ako bi na RPi i Pikolino dodali čipove za pretvaranje napona samo da bi mogli da imamo prave RS232 signale umesto TTL. Ovako ih lako možemo spojiti direktno. Slika 116. Prenos slova ‘b’ uz pomoć signala RS232 i RS232TTL.

Pikolino radi na 5V a RPi na 3,3V pa moramo koristiti naponski delitelj koji smanjuje 5V na 3,3 V na vezama koje idu od Pikolina na RPi. Kao naponski delitelj koristimo dva otpornika sa vrednostima os 1,k8 i 3k3 koji su spojeni na sledeći način: Slika 117. Naponski delitelj: od 5 (VIN+) na 3,3 V (VOUT+).

1 TTL je skraćenica za Transistor-Transistor Logic.


10.2 SERIJSKA KONEKCIJA IZMEĐU RPI I PIKOLINA

U gornjoj šemi VIN+ dolazi sa Pikolina a VOUT+ ide na RPi. GND je očigledno spojena na Pikolino i RPi. Kada je VIN 5 V, izlaz VOUT se računa na sledeći način: VOUT= 5 * (3k3/3k3+1k8) = 3,24 V Ovo samo malo manje od 3,3 V što je idealno za RPi. Struja koja ide iz Pikolina je: I= (5/1k8+3k3)=1mA što je dovoljno malo. Struja iz RPi-ja u slučaju da pin proglasite za visoki izlaz je: I=3,3/3k3=1mA Ništa ne moramo da radimo u drugom smeru konekcije jer Pikolino smatra 3,3 V visokim naponskim stanjem. Ipak smo dodali naponski delitelj kao meru bezbednosti. Taj član neće uticati na signal od RPi-ja ka Pikolinu. Otpornik će malo smanjiti struju tako da nema uticaja na rad. Naponski delitelj je tu da zaštiti RPi pošto vas ništa ne sprečava da se program izvršava sa Pikolina koji postavlja TTLIN pin u visoko stanje, što znači da bi 5 V moglo otići na RPi. Pod takvim uslovima naponski delitelj bi smanjio napon na sigurnih 3,24 V. Druga programska greška koju bi mogli napraviti je da konfigurišete RPi pinove kao izlaze i postavite ih u nisko stanje a kako imate Pikolino sa pinovima koji su izlazi u visokom stanju. Ovim se pravi kratak spoj ali na sreću otpornik u naponskom delitelju ograničava veličinu struje. Maksimalna struja bi tada bila: I=U/R = 5/1k8 = 2,8mA RPi se još uvek može nositi sa tom vrednošću a Pikolino teško da bi uopšte opazio tu struju. Hardver za oba projekta u ovom poglavlju je identičan. Sastoji se od RPi, Pikolina i dva naponska delitelja sa vrednostima otpornika 1k8 (kod bojenih prstenova smeđ-siv-crven) i 3k3 (prsteni narandžast-narandžast-crven).

201


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.