Raspberry PI cz12 (kopia), Raspberry Pi + PHP + APACHE + Mysql

[ Pobierz całość w formacie PDF ]
//-->Na warsztacieSZKOŁAPoziom tekstu: średnio trudnyTo już 12-ty odcinek kursu Raspberry Pi. Numery archiwalne MTz poprzednimi odcinkami można kupić na www.ulubionykiosk.plRaspberry Pi (12)łączenie logikiWykorzystanie Raspberry Pi do kontrolowania innych urządzeń elektronicznychotwiera przed konstruktorami całą kategorię nowych wyzwań. Nawiązaniekomunikacji między RPi a np. czujnikiem odległości oznacza koniecznośćpokonania barier komunikacyjnych – wzajemnego rozumienia „języka”, którymłączone elementy się posługują. Do tego dochodzą jeszcze zagadnienia typowofizyczne – takie, jak kwestie zasilania (napięcie, prąd) i różnych poziomównapięcia, jakimi mogą operować układy. Są to kwestie na tyle specyficzne,że często sprawiają problemy Młodym Technikom. Co więcej – pozostawiającsprawy samym sobie, ryzykujecie uszkodzenie tych układów.Wyposażenie Raspberry Pi w złącze GPIO umożliwiałączenie go z wieloma różnymi układami elektro-nicznymi. Mogą to być urządzenia wejściowe, jakczujniki zbierające dane o otoczeniu, np. odległo-ści, koloru, dymu – a nawet kamery termowizyjne.Urządzenia wyjściowe informują (lub ostrzegają)otoczenie o wynikach przetwarzania zebranychdanych. Na pewno słyszeliście o różnego rodzajuwyświetlaczach (diody LED, LCD) oraz układachgenerujących dźwięki (buzzery, syreny itp.). Rynekjest pełen nie tylko poszczególnych elementów, alei całych modułów gotowych do podłączenia do jed-nostki sterującej. Dzięki temu projekty zaczynająprzypominać budowanie z klocków.Niestety, czasami bywa to złudne. Mimo wielu uła-twień, każdy układ elektroniczny ma swoją specyficznąnaturę. Wymaga odpowiedniego napięcia zasilania,pobiera moc, komunikuje się w charakterystyczny dlasiebie sposób. Nie wszystkie klocki pasują do innych– a niektóre nawet się nie lubią. Weźmy za przykładkondensatory elektrolityczne. Znajdują się w wielu mo-dułach. Zasilenie ich niezgodnie z polaryzacją sprawi,że kondensatory zaczną puchnąć, żeby po chwili eks-plodować! Oczywiście część układów będzie na takąewentualność zabezpieczona. Ale nie wszystkie! Ostrakonkurencja cenowa sprawia, że produkty są „odchu-dzane” o co mniej efektowne funkcje. Możecie powie-dzieć, że dioda kosztuje grosze. Przemnóżcie jednakte grosze przez miliony sprzedanych sztuk, a szybkozbierze się sumka nie do pogardzenia.Wnioski z powyższego sprowadzają się do ko-nieczności uprzedniego dokładnego przyjrzenia sięwłaściwościom danego modułu. Jakiego napięciawymaga, jaki prąd pobiera, jak komunikuje sięz układem sterującym, na co jest wrażliwy.Rozumu nigdy za wieleWśród adeptów budowania własnych urządzeńelektronicznych (tzw. DYI – ang.do it yourself,czylirodzime zrób-to-sam) obserwuję niebezpiecznątendencję do kompletnego zawierzenia wszelkimporadnikom, których całe mnóstwo można znaleźćw Internecie. Chciałbym Was szczególnie uczulićna to, że nie zawsze są one prawdziwe, aktualnei uniwersalne. Generalnie powinniście zachowaćdużą ostrożność i nigdy nie robić niczego na ślepoczy tylko na podstawie jednego tekstu. Często ichautorzy idą na różne skróty (specjalnie lub z niewie-dzy), a przedstawione przez nich rozwiązania mogąmieć charakter bardzo prowizoryczny. Zazwyczajzadziałają – ale czy po pół godzinie nie doprowadządo przegrzania jakiegoś układu, znacznie skracającczas jego życia (czasami do tej właśnie pół godzi-ny)? Czy po dłuższym okresie używania nie stanąsię źródłem zagrożenia? Jest to szczególnie istotnew dziedzinie budowania automatyki domowej. Tam,gdzie w grę wchodzą duże napięcia i prądy, napraw-dę warto zachować rozsądek i na chłodno podejśćdo tematu. A zanim zaczniecie grzebać w skrzyncez bezpiecznikami, może lepiej poradzić się zawodo-wego elektryka?Wiele z rozwiązań prezentowanych w Sieci jestczęsto dokumentowanych po fakcie. Łatwo w ta-kim przypadku zapomnieć o pewnych istotnych82m.technik – www.mt.com.pl – nr 7/2015szczegółach. W rezultaciezainwestujecie w projektpieniądze (kupno kompo-nentów), a na końcu możesię okazać, że nie działa, jakpowinien, lub tak, jak to wy-gląda na filmiku zamieszczo-nym przez autora.Kolejną kwestią są samekomponenty. Nigdy niema nic za darmo. Kupując„odpowiednik” lub „klon”kosztujący dziesięć razymniej niż firmowy układ,1. Przetwornica DC-DC, generująca piki napięcia na wyjściu USB, przy pod-musicie wziąć pod uwagę,łączaniu i odłączaniu jej od źródła zasilaniaże niższa cena nie bierze sięz niczego. Oczywiście, częśćceny każdego produktu stanowią koszty związaneNie jestem jednak przeciwnikiem tanich kompo-z jego projektowaniem, dystrybucją i utrzymaniemnentów (oczywiście pod warunkiem, że nie naruszająpracowników. Płacicie także za „markę”. Ale częśćniczyich praw autorskich, majątkowych itp.). Co więcejz tych kosztów to również elementy o większych– uważam, że to głównie dzięki nim i ich masowejtolerancjach błędów, które potrafią dłużej wytrzy-dostępności, jesteśmy świadkami boomu na DYI.mać przeciążenia, są bardziej odporne na zakłóce-Proponuję jednak, żebyście zawsze podchodzili do nichnia i spełniają odpowiednie normy środowiskowe.z pewną rezerwą. Oscyloskop to raczej droga „zabawka”.Pamiętajcie, że do tych norm w niektórych krajachNawet podstawowy model kosztuje co najmniej tysiąc zł.przykłada się większą wagę niż w innych.Pozwala jednak na dokładną analizę tego, co dzieje sięW efekcie możecie dostać wyrób modułopodobny,z układami. Nie raz uratował mi projekt. Jeżeli już maciektóry w zasadzie działa, trochę działa, lub czasemdostateczne przekonanie, że z elektroniką zwiążecie siędziała... Może się okazać, że wymagane są np.na dłużej – warto w niego zainwestować.dodatkowe kondensatory filtrujące na zasilaniu (np.Wiele można się również dowiedzieć za pomocąklony nrf24l01), albo układ jest dużo mniej stabil-zwykłego multimetru. Pozwoli Wam stwierdzić, czyny niż jego firmowy odpowiednik. Często – idącw badanym układzie nie ma przypadkiem żadnychtropem obniżania kosztów – okrojona jest też samazwarć. Warto sprawdzić pod tym kątem każdy nowyfunkcjonalność.moduł, zanim podłączycie go do Waszego Raspberry.Problem z niefirmowymi elementami polegaŻeby badać zachowania już uruchomionych ukła-na tym, że nie zawsze są one odpowiednio udoku-dów zaopatrzcie się w analizator stanów logicznych.mentowane. Brakuje odpowiednich schematów.Ceny najtańszych narzędzi tego typu zaczynają sięNa płytkach umieszcza się tajemnicze przyciskizazwyczaj od 30 zł – i takie dla amatorów są zazwy-i zworki, których funkcjonalność można odkryćczaj wystarczające.dopiero po zakupie. Dodatkową kwestią jest jakośćPoza tym gorąco namawiam Was do czytania,wykonania. Zdarzają się elementy po prostu wadliwe.czytania i jeszcze raz czytania. Nie poprzestawajcieJedno z moich Arduino padło ofiarą rozszerzenia (ang.na jednej stronie www. Spójrzcie na kilka podobnychshield),które spinało zasilanie z masą. Efekty takiegoprojektów, korzystajcie z zaufanych źródeł – stronproblemu są nietrudne do przewidzenia. Kiedyś natra-producentów lub firm specjalizujących się w apli-fiłem na egzemplarz przetwornicy DC-DC z wyjściemkacji modułów i przede wszystkim oficjalnych notUSB. Wszystko byłoby w porządku, gdyby nie pikikatalogowych. A gdy już będziecie wiedzieli, czegozasilania generowane przy jej włączaniu. Powodowałynie rozumiecie – poszukajcie odpowiedzi na specja-one krótkie, trwające kilkadziesiąt milisekund poja-listycznych forach. Pod warunkiem zadania pytaniawienia się napięcia. Podłączone do USB urządzeniedotyczącego unikalnego problemu, na pewno znaj-włączało się na część sekundy, a potem wyłączało. Niedzie się ktoś, kto udzieli fachowej rady.trzeba chyba Wam tłumaczyć, co mogłoby to oznaczaćI najważniejsze: nie odpuszczajcie. Czasami zrozu-dla np. twardego dysku czy Raspberry otwierającegomienie samego problemu zajmuje godziny, dni i ty-system plików. Problem polega na tym, że są to zacho-godnie. Ale dzięki poświęconemu czasowi będzieciewania, które bez porządnego sprzętu laboratoryjnegomogli odkryć prawdziwą naturę zagadnienia i poznaćraczej ciężko przebadać.wiele szczegółów, które pozwolą Wam uniknąć po-W przypadku towarów będących przedmiotemdobnych sytuacji w przyszłości. Dotyczy to nie tylkoprywatnego importu z Dalekiego Wschodu praktycz-samego sprzętu, ale również oprogramowania.nie nie ma możliwości wyegzekwowania gwarancjiBiblioteki dostępne są najczęściej na zasadach(rękojmi) ani uzyskania pomocy od producenta.wolnych i otwartych licencji. Taki model pozwala83Na warsztaciena analizę kodu źródłowego a to z kolei – na zro-zumienie reguł rządzących daną implementacją.To wspaniale podnosi poziom wiedzy, umiejętno-ści i – moim zdaniem – jest jednym z kluczowychczynników sprzyjających rozwojowi kompetencjitechnicznych.Kod udostępniany na zasadach Open Source możemieć jednak swoje wady. Czasami jest tworzonyna potrzeby bardzo konkretnego projektu – wca-le nie z zamiarem bycia uniwersalnym (ta uwagadotyczy również rozwiązań sprzętowych). Możesię więc zdarzyć, że nie będzie dokładnie pasowałdo Waszych potrzeb. Wtedy pozostaje odpowiedniogo zmodyfikować (najlepiej publikując zmiany dalej,na potrzeby kolejnych „pokoleń”) lub... poszukaćinnej biblioteki. I tak się często dzieje. Powstaje wiele„klonów” mniej lub bardziej różniących się od ory-ginalnej pracy – nie zawsze z nią do końca zgodnych(tzw. kompatybilność wstecz). Miksowanie takichbibliotek z oryginalnym rozwiązaniem może nieprzynieść spodziewanych efektów.np. dla Arduino opartego na mikrokontrolerze AtmelATMega328p dopiero napięcie 3 V na wejściu będzieoznaczało „1”; w szczególności:• logiczne „0” na wyjściu = 0-0,9 V;• logiczne „0” na wejściu = 0-1,5 V;• logiczne „1” na wyjściu = 4,2-5 V;• logiczne „1” na wejściu = 3-5 V.Dla CMOS’owych urządzeń 3,3 V, jakim jest CPURaspberry (zob. [2]), poziomy te będą całkiem inne:• logiczne „0” na wyjściu = 0-0,5 V;• logiczne „0” na wejściu = 0-0,8 V;• logiczne „1” na wyjściu = 2,4-3,3 V;• logiczne „1” na wejściu = 2-3,3 V.Zauważcie, że w obydwu przypadkach – dla TTLi CMOS – istnieje pewna „szara strefa”, gdzie napię-cie już nie jest „zerem” ale jeszcze nie jest „jedynką”.I jak to w szarej strefie – nigdy nie wiadomo, jakzostanie to zinterpretowane.Załóżmy teraz (czysto teoretycznie!), że podłącza-my piny GPIO Raspberry bezpośrednio do portówArduino. Stan niski na wyjściu pinu Raspberryto do 0,5 V. Arduino na wejściu za stan niski uważanapięcie do 1,5 V, więc tu się urządzenia dogadają.Stan wysoki na wyjściu Raspberry to minimum 2,4 V– na wejściu Arduino to 3 V. Arduino może więcuznać taki sygnał za szum. Praktycznie Raspberrydaje na stanie wysokim sygnał pod 3 V – więc tu naj-prawdopodobniej nie powinno być problemów.W drugą stronę Raspberry zrozumie „0” z Arduino.Jednak „1” z Atmela może już uszkodzić Raspberry!Przyłożenie na piny GPIO napięcia większego niżPoziom tekstu: średnio trudnySZKOŁA(Nie)Zgodność charakterówUdało się Wam już upewnić, że zebrane moduły nieprzedstawiają bezpośredniego zagrożenia dla życiai portfela. Teraz czas na analizę, czy będą ze sobąwspółpracować. W tym tekście zajmę się tylkokomunikacyjną częścią dopasowania elementówelektronicznych. Sprawdzimy, czy istnieją logiczneprzeszkody, żeby elementy ze sobą „rozmawiały”.W szczególności przeanalizujemy tu zagadnieniazwiązane z dopasowaniem poziomów logiki.Poziomy logikiBinarne układy cyfrowe posługują się sygnałamilogicznymi o dwóch poziomach. Określamy je jako„zero” i „jedynkę” lub sygnał „niski” i „wysoki”.Sygnały te realizowane są przez impulsy o odpo-wiednim napięciu i minimalnym natężeniu (rzędumiliamperów). Większość układów posługuje się sys-temami opartymi na elementach 3,3 V (CMOS) lub5 V (TTL). Popularnie uważa się, że np. sygnał 0 Vto logiczne „0”, a sygnał 3,3 V lub 5 V (w zależnościod typu układu) to logiczna „1”. W rzeczywistościposługiwanie się napięciami o dokładnie takichwartościach byłoby bardzo trudne do realizacji i jed-nocześnie mało praktyczne. Zamiast konkretnychwartości, mamy do czynienia z pewnymi przedziała-mi napięć uważanymi za „0” lub „1”, dodatkowo róż-nymi na ich wejściu i wyjściu. I tak dla 5 V układówTTL (zob. [1]):• logiczne „0” na wyjściu = 0-0,4 V;• logiczne „0” na wejściu = 0-0,8 V;• logiczne „1” na wyjściu = 2,7-5 V;• logiczne „1” na wejściu = 2-5 V.Oczywiście są to wartości teoretyczne, wynikającez budowy samych tranzystorów. Praktyczne reali-zacje mogą się różnić o tolerancje lub specyficznewarunki – jak w przypadku granicznego 5 V. I tak2. Zazębianie się poziomów logiki84m.technik – www.mt.com.pl – nr 7/20153,3 V (tu: 4,2-5 V) jest niebezpieczne dla Raspberry.Konieczna jest konwersja napięcia wyjściowegologiki z Arduino na odpowiedni poziom napię-cia wejściowego dla Raspberry. Przeanalizujmyto na podstawie ultradźwiękowego miernika odległo-ści HC-SR04 oraz cyfrowego czujnika temperaturyDS18B20.time.sleep(1)print „Rozpoczynam pomiar”GPIO.output(TRIG_PIN, True)time.sleep(0.00001)GPIO.output(TRIG_PIN, False)#Czekamy na stan wysoki; uwagana wcieciewhile GPIO.input(ECHO_PIN) == 0:impuls_start = time.time()#to jest odpowiedz czujnika; uwagana wcieciewhile GPIO.input(ECHO_PIN) == 1:impuls_koniec = time.time()#obliczmy ilosc milisekund i odległoscimpuls_czas = impuls_koniec- impuls_startodległosc = impuls_czas * 17150print „Odleglosc: „, odleglosc, „ cm”Uwaga: funkcja time.time() działa z dokładnościąco do dziesiątek milisekund (2 miejsca po przecinkusekund) – zależnie od systemu.Teraz zajmiemy się podłączeniem kabelków – alena razie bez pinuEcho.Połączcie więc:• pinGNDczujnika do pinu 9 Raspberry (ja mamna 6 podłączony UART);• pinVCCczujnika do pinu 2 Raspberry (zasilanie5 V);• pinTrigczujnika do pinu 7 Raspberry (GPIO4);• pinEchoczujnika – na razie niepodłączony.Dodatkowo do czujnika podłączyłem analizatorlogiczny. Przejściówka UART-USB pozwoliła mina łatwą komunikację (podłączona GND – pin 6,Rx/Tx do pinów 8 i 10). Układ testowy wyglądał jakna ilustracji3.Wydruk z analizatora logicznego znajdzieciena ilustracji4.Długi impuls na Echo miał czas3. Testowanie czujnika HC-SR04Ultradźwiękowy czujnikodległości HC-SR04Ultradźwiękowy miernik odległości HC-SR04 macztery piny: dwa opisane jakoTrigi Echo odpowie-dzialne za wymianę danych, masę oraz zasilanie Vcc(zob. [3]). Czujnik wymaga zasilania 5 V i posługujesię logiką TTL. Zgodnie ze specyfikacją pobieraok. 15 mA prądu, co mieści się w zakresie możli-wości pinu 2 (5 V) Raspberry. Jego obsługa polegana podaniu impulsu na pinTrig(od ang.trigger– wyzwalacz) i obserwacji odpowiedzi na pinieEcho.Sekwencja wygląda tak:• wystaw krótki sygnał wysoki na pinTrig(Python:time.sleep(0.0001));• zaczekaj aż pinEchozmieni swój stan na wysoki;• zmierz czas, przez który pinEchoutrzymuje sięw stanie wysokim;• pomnóż zmierzony czas przez 17 150, a otrzy-masz odległość do przeszkody w cm.Napiszmy teraz w Pythonie program, który pozwo-li nam przeprowadzić doświadczenie. Wymagane jestzainstalowanie biblioteki Rpi.GPIO (preinstalowanaw większości nowszych dystrybucji):$ sudo apt-get install python-rpi.gpioOtwórzcie nowy skrypt w edytorzenano(na pod-stawie [4]; uwaga na wcięcia charakterystyczne dlaPythona):$ nano dist.py#importujemy bibliotekiimport RPi.GPIO as GPIOimport time#Numeracja portow wedlug BCM i wylacze-nie ostrzezenGPIO.setmode(GPIO.BCM)GPIO.setwarnings(False)#Piny odpowiedzialnedzenia, fizyczny 7TRIG_PIN=4#Piny odpowiedzialnedzenia, fizyczny 11ECHO_PIN=27#ustawiamy ktory pina ktory wejsciemGPIO.setup(TRIG_PIN,GPIO.setup(ECHO_PIN,za wysylanie pobu-za odebranie pobu-jest wyjsciemGPIO.OUT)GPIO.IN)#Poczekaj na ustalenie czujnikaGPIO.output(TRIG_PIN, False)85Na warsztacietrwania ok. 0,9 ms, dajeto ok. 15,5 cm – co zgadzałosię z odległością czujnikaod testowej przeszkody.Pobudzenie działa, kodgotowy – dlaczego jesz-cze nie podłączyłemEchodo Raspberry? Żeby Wamto dokładnie pokazać,zamiast analizatora logicz-nego użyję oscyloskopu(ilustracja 5).Widać tu, że o ile pobu-dzenie jest na poziomie 3,3 V– odpowiedź ma 5 V! To zde-cydowanie może zaszkodzićRaspberry. Wyniki zgadzająsię z teoretyczną dysku-sją z początku tego tekstu.Czujnik, będąc układem TTL,na wejściu jako logiczną „1”oczekuje napięcia co najmniej2 V. CMOS’owy Raspberryna wyjściu podaje od 2,4 V.To sprawia, że czujnik „rozu-mie” pobudzenie z Raspberryi poprawnie na nie odpowia-da. Zgodnie z teorią – odpo-wiada sygnałem 5 V na pinieEcho.Taka wartość napięciajest jednak niebezpieczna dlaRaspberry!Poziom tekstu: średnio trudnySZKOŁA4. HC-SR04 pobudzony z Raspberry odpowiada na wyjściuEchosygnałemo długości odpowiadającym odległości od wykrytej przeszkodyKonwersjapoziomów logiki5. Pobudzenie i odpowiedź czujnika HC-SR04 na wydruku z oscyloskopudwukierunkowa pozwala natomiast na łączenie ukła-dów porozumiewających się np. za pomocą protoko-łu i2c. Stosując konwertery w Waszych realizacjach,musicie być świadomi takich właściwości i odpo-wiednio dobierać ich piny do potrzeb (ilustracja6).Schemat podłączenia Raspberry do czujnikaodległości HC-SR04 poprzez konwerter z liniamijednokierunkowymi (lewy na ilustracji 6) przedsta-wiłem na ilustracji7.Zauważcie, że:• po stronie „HIGH” podłączacie napięcie 5 Vz Raspberry i wejścia/wyjścia czujnika;• po stronie „LOW” podłączacie napięcie 3,3 Vi GPIO z Raspberry;• musicie zwrócić uwagę, które z linii są jednokie-runkowe – tutaj H2 do L2 i H3 do L3.Wniosek z powyższego: konwertery są prostew używaniu, nie trzeba się ich obawiać. Ich cenykształtują się na poziomie kilku zł, nie obciążą więcznacząco budżetu. Niestety, wymagają dodatkowychpodłączeń, co w ciasnych obudowach może byćkłopotliwe. Jeżeli planujecie używać wielu układówoperujących różnymi poziomami logiki (np. czuj-niki), musicie w swoim projekcie uwzględnić kilkadodatkowych elementów i kabli.Do „tłumaczenia” różnych poziomów logiki stosujesię gotowe układy, tzw. konwertery poziomów logicz-nych. Zamieniają one sygnały 5 V na 3,3 V – w jed-ną lub obydwie strony. Każdy z takich modułówwymaga podłączenia zasilania 5 V i 3,3 V oraz masy.Pozostałe piny służą do łączenia linii logiki.Poszczególne realizacje takich konwerterów mogąsię od siebie znacząco różnić. Niektóre z nich oferująlinie jednokierunkowe – gdzie napięcia konwer-towane są jedynie z wyższych na niższe. Praca6. Konwertery logiki: niektóre linie są jednokierunko-we (z lewej produkowany przez msx-elektronika.pl)86m.technik – www.mt.com.pl – nr 7/2015 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • agraffka.pev.pl