Page 1

16,00 zł

(w tym 8% VAT)

PRICE: 8 EUR Nakład 27000 egz.

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


Nowoczesne

Ponad

centrum

400 000

logistyczne

w ofercie

produktów

Przedstawiciele

regionalni

w terenie

24h

Czy wiesz, że

mamy 5000

zestawów i modułów?

Patchblock - modułowy programowalny syntezator i system przetwarzania sygnału Patchblock jest systemem przetwarzania sygnału z dowolnie programowalnym modułowym syntezatorem, w którym to Ty decydujesz, jakiej koniguracji sprzętu używasz. Potrzebujesz modułu iltra lub mocno brzmiącego basu z wbudowanym arpeggiatorem? Zaprogramowanie modułów odbywa się za pomocą tak zwanego „wizualnego języka programowania”, który umożliwia napisanie kodu nawet osobom dopiero rozpoczynającym przygodę z programowaniem. Dzięki temu możesz wybrać jeden z wielu niskopoziomowych elementów przetwarzania dźwięku i łączyć je za pomocą „wirtualnych kabli”, budując odpowiednie funkcjonalności. Biblioteka oprogramowania modułów zawiera generatory sygnałów i procesory dźwięku (np. oscylatory, iltry, opóźnienia itd.), opcje routingu sygnału, a nawet moduły do kompozycji algorytmicznej. Po zaprogramowaniu można odłączyć Patchblock i odsłuchać stworzone dźwięki!

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


OD WYDAWCY

Bezpieczeństwo systemów embedded

Prenumerata naprawdę warto

Bezpieczeństwo systemów embedded zaczyna odgrywać coraz większą rolę. Bynajmniej nie chodzi już li tylko o ochronę jakichś zasobów czy zabezpieczenie przed tworzeniem kopii urządzeń, ale również o nasze życie i zdrowie. Współcześnie wiele samochodów jest wyposażonych w  elektryczne wspomaganie układu kierowania. Teoretycznie, mechanizm napędzający koła skrętne powtarza ruch kierownicy dołączonej do potencjometru lub enkodera, ale w praktyce pomiędzy silnikiem skręcającym koła a kierownicą musi jeszcze był włączony rodzaj konwertera, albo komputer pokładowy samochodu. Daje to możliwość opcjonalnego automatycznego parkowania równoległego, ale również rodzi pytanie – kto tak naprawdę kieruje samochodem? No może troszkę przesadzam, ale co z samochodami, którymi parkując kieruje komputer pokładowy, albo wyposażonymi w aktywne systemy omijania przeszkód, przeciwdziałania stłuczkom lub potrąceniom pieszych? Właśnie za takie auta zabrali się hakerzy. Na 21 dorocznej konferencji hakerów Chralie Miller i Christopher Valasek, uznani eksperci od zabezpieczeń komputerów i oprogramowania, opowiedzieli, jak spędzili ostatnie 10 miesięcy „hakując” instalację samochodu i jego komputer pokładowy. Do eksperymentów wybrali dwa samochody, popularne w Stanach Zjednoczonych: była to Toyota Prius oraz Ford Escape (oba wyprodukowane w 2010 r. i wyposażone w opcję automatycznego parkowania równoległego). Pierwszy raz opowiedziano o podobnych czynnościach na konferencji Defcon w latach 2010 i 2011, ale tamte działania nie były dobrze udokumentowane. Tym razem zaprezentowano pełną dokumentację, a  więc każdy ma szansę zrobić coś podobnego. Zanim hakerzy wyjaśnili metody, którymi się posłużyli wyjaśnili, że żaden z nich nie jest elektronikiem, nie zna się na sprzęcie, a ich wiedza w tym zakresie to jedynie „jak połączyć ze sobą przewody”. Jedynym wymaganiem, aby powtórzyć ich eksperyment jest posiadanie laptopa, interfejsu diagnostycznego i dostęp do samochodu, który może prowadzić sam siebie, chociażby nawet tylko podczas parkowania. Od tego momentu robi się „wesoło”. Zamiast użyć instrukcji Toyoty Prius pokazującej jak usunąć pokrywę gniazda diagnostycznego użyli łomu. Następny, dostępny w sieci ilm pokazuje, jak siedzą wewnątrz samochodu prowadząc go nie za pomocą pedałów i kierownicy, ale –  jak w  grze –  kierując nim za pomocą laptopa (https://youtu.be/qX0rRRUdOKU)! Identycznemu „testowi” hakerzy poddali również Forda Escape i  Chryslera-Jeepa Cherokee (https://youtu.be/-FqsW5IodkM). Na  ilmie zademonstrowano, jak Miller i  Valasek wyłączają hamulce, zmuszają szarpią kierownicą (samochód przez cały czas jest w ruchu!), przyśpieszają, przejmują pełną kontrolę nad układem kierowniczym, gaszą silnik, zaświecają i  wyłączają oświetlenie wewnątrz i  na  zewnątrz pojazdu, trąbią klaksonem, symulują napełnienie pustego zbiornika paliwa itd. Nie chodzi o to, aby snuć jakieś teorie spiskowe, ale bardziej o wskazanie, jak istotne jest bezpieczeństwo systemów embedded i w jaki sposób może być użyta luka w zabezpieczeniach, której nawet się nie spodziewaliśmy. Zapewne znowuż niektórzy westchną do  starych, dobrych samochodów –  niestety, postępu nie da się zatrzymać i mimo westchnień więcej osób wybierze komfort, niż zdecyduje się na użytkowanie jakiegoś „starego, dobrego modelu”. Na  koniec wykładu hakerzy uzmysłowili mi jedną rzecz. Faktycznie, przecież taki samochód, który w jakimś zakresie potrai pokierować sam sobą to w istocie robot (doskonale mieści się w deinicji drona) na naszych usługach. Cóż więc dziwnego, że wykonuje zaprogramowane czynności bez względu na to, jakie oprogramowanie każe mu podejmować tę czy inną akcję? Kończąc polecam uwadze Czytelników artykuł oznaczony logo „Tematu numeru”. Można w  nim znaleźć garść wiedzy na  temat zagrożeń oraz jak się przed nimi zabezpieczyć. Dbajmy o bezpieczeństwo projektowanych przez nas urządzeń, a zwłaszcza tych, które mają związek z naszym życiem i zdrowiem.

Miesięcznik „Elektronika Praktyczna” (12 numerów w roku) jest wydawany przez AVT-Korporacja Sp. z o.o. we współpracy z wieloma redakcjami zagranicznymi.

wydawnictwo

Wydawca: AVT-Korporacja Sp. z o.o. 03-197 Warszawa, ul. Leszczynowa 11 tel.: 22 257 84 99, faks: 22 257 84 00

Adres redakcji: 03-197 Warszawa, ul. Leszczynowa 11 tel.: 22 257 84 49, 22 257 84 63 faks: 22 257 84 67 e-mail: redakcja@ep.com.pl www.ep.com.pl Redaktor Naczelny: Wiesław Marciniak Redaktor Programowy, Przewodniczący Rady Programowej: Piotr Zbysiński Zastępca Redaktora Naczelnego, Redaktor Prowadzący: Jacek Bogusz, tel. 22 257 84 49 Redaktor Działu Projektów: Damian Sosnowski, tel. 22 257 84 58 Szef Pracowni Konstrukcyjnej: Grzegorz Becker, tel. 22 257 84 58 Menadżer magazynu Andrzej Tumański , tel. 22 257 84 63 e-mail: andrzej.tumanski@ep.com.pl Marketing i Reklama: Katarzyna Gugała, tel. 22 257 84 64 Bożena Krzykawska, tel. 22 257 84 42 Katarzyna Wiśniewska, tel. 22 257 84 65 Grzegorz Krzykawski, tel. 22 257 84 60 Andrzej Tumański, tel. 22 257 84 63 Magdalena Korgul, tel. 22 257 84 69 Sekretarz Redakcji: Grzegorz Krzykawski, tel. 22 257 84 60 DTP i okładka: Dariusz Welik Redaktor strony internetowej www.ep.com.pl Mateusz Woźniak Stali Współpracownicy: Arkadiusz Antoniak, Rafał Baranowski, Lucjan Bryndza, Marcin Chruściel, Jarosław Doliński, Andrzej Gawryluk, Krzysztof Górski, Tomasz Gumny, Tomasz Jabłoński, Michał Kurzela, Szymon Panecki, Krzysztof Paprocki, Krzysztof Pławsiuk, Sławomir Skrzyński, Jerzy Szczesiul, Ryszard Szymaniak, Adam Tatuś, Marcin Wiązania, Tomasz Włostowski, Robert Wołgajew Uwaga! Kontakt z wymienionymi osobami jest możliwy via e-mail, według schematu: imię.nazwisko@ep.com.pl Prenumerata w Wydawnictwie AVT www.avt.pl/prenumerata lub tel: 22257 84 22 e-mail: prenumerata@avt.pl www.sklep.avt.pl, tel: (22) 257 84 66 Prenumerata w RUCH S.A. www.prenumerata.ruch.com.pl lub tel: 801 800 803, 22 717 59 59 e-mail: prenumerata@ruch.com.pl Wydawnictwo AVT-Korporacja Sp. z o.o. należy do Izby Wydawców Prasy

Copyright AVT-Korporacja Sp. z o.o. 03-197 Warszawa, ul. Leszczynowa 11 Projekty publikowane w „Elektronice Praktycznej” mogą być wykorzystywane wyłącznie do własnych potrzeb. Korzystanie z tych projektów do innych celów, zwłaszcza do działalności zarobkowej, wymaga zgody redakcji „Elektroniki Praktycznej”. Przedruk oraz umieszczanie na stronach internetowych całości lub fragmentów publikacji zamieszczanych w „Elektronice Praktycznej” jest dozwolone wyłącznie po uzyskaniu zgody redakcji. Redakcja nie odpowiada za treść reklam i ogłoszeń zamieszczanych w „Elektronice Praktycznej”.

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

3


Nr 9 (273) Wrzesień 2015

Skaner DMX Na łamach EP opisano już kilkanaście urządzeń DMX. Były to głównie odbiorniki i nadajniki. Przy uruchamianiu

Projekty FPV Headtracker inercyjny sterownik ruchu (2) ............................................................... 24

prototypów lub rozległych instalacji

Skaner DMX ........................................................................................................................ 29

przydatny będzie skaner DMX.

Zegar ustawiany za pomocą GPS ....................................................................................... 34

Moduły komunikacji szeregowej Xbee dla Raspberry PI i nie tylko Moduły stały się niekwestionowanym standardem dla komunikacji bezprzewodowej. Jak konwertery FTDI przeniosły komunikację szeregową z portów RS na USB, tak moduły Digi uwalniają komunikację od kabli i przenoszą ją na fale radiowe. Demonstrujemy, jak zastosować je w połączeniu z różnymi płytkami prototypowymi: Raspberry Pi, Launchpad (moduł PWR_Pack), AVTduino, STK_ Mega256A oraz komputerem PC.

Moduły do komunikacji szeregowej Xbee dla Raspberry Pi i nie tylko ............................ 41 VUSBtiny. Miniaturowy programator mikrokontrolerów AVR ......................................... 47

Miniprojekty Regulowany zasilacz napięcia symetrycznego................................................................... 54 Wtórnik do karty dźwiękowej............................................................................................. 55 Izolator magistrali SPI......................................................................................................... 57

Projekt czytelnika Lutownica z zasilaczem impulsowym ............................................................................... 50

Notatnik konstruktora TEMAT NUMERU Zabezpieczenia w systemie embdeded .............................................................................. 58

Końcowy etap testowania czujników inercyjnych przy użyciu platformy NI PXI ........... 67 Jednostka GPU oraz OpenCL – aplikacje ............................................................................ 80

Prezentacje Contrans TI – nowości w ofercie ........................................................................................ 85 Patchblocks – miniaturowy syntetyzator/procesor audio DSP .......................................... 86

VUSBtiny – miniaturowy programator mikrokontrolerów AVR W EP 12/2011 opisano tani programator

Wydarzenia NI Week 2015 ...................................................................................................................... 68

Podzespoły

mikrokontrolerów AVR – USBASP. Tym

Riverdi + Grinn = wyświetlacze z komputerami.............................................................. 72

razem miniaturowa i jeszcze tańsza

AD5593R – programowalne GPIO ...................................................................................... 74

wersja programatora – USBTINY. Urządzenie z pewnością przyda się do celów serwisowych.

Zegar ustawiany za pomocą GPS

Sprzęt PSoC5 – mikrokontroler PSoC z rdzeniem Cortex M3....................................................... 76 Tanie narzędzia startowe dla Cortex-M7 z oferty STMicroelectronics (STM32F7) .......... 78

Kursy Programowanie aplikacji mobilnych (6). Pozostałe funkcje telefonu ............................... 88

Nowoczesny zegar, który wykorzystuje

Wprowadzenie do LVDS (3). Linie transmisyjne na płytce drukowanej........................... 96

zdobycze współczesnej techniki

MPLAB Harmony – biblioteka graiczna ............................................................................ 99

ustawiając czas za pomocą GPS, dzięki

Bluetooth Relay z Androidem .......................................................................................... 105

czemu ma globalny zasięg i można rzec „kosmiczną” dokładność.

Headtracker – inercyjny sterownik ruchu Dokończenie opisu urządzenia sterującego kamerą przyczepioną do modelu zdalnie sterowanego. Niby nic wielkiego, gdyby nie to, że sterowanie odbywa się za pomocą

Automatyka i mechatronika Złącza i wiązki kablowe (1). Złącza oraz połączenia zaciskane i lutowane ................... 110

Od wydawcy.......................................................................................................................... 3 Nie przeocz. Podzespoły ....................................................................................................... 6 Nie przeocz. Koktajl niusów ............................................................................................... 11 Nie przeocz. Info ................................................................................................................. 20 Kramik i rynek .................................................................................................................. 114 Prenumerata ...................................................................................................................... 116 Zapowiedzi następnego numeru ...................................................................................... 117

ruchu głowy. Kamera podąża za głową i po zastosowaniu wyświetlacza w okularach będziemy mogli mieć wrażenie, że siedzimy w prawdziwym samolocie i rozglądamy się!

4 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Redakcyjny serwer FTP, a na nim materiały dodatkowe oraz poprzednie części do artykułów. Dane wymagane do logowania na serwerze FTP Elektroniki Praktycznej:

host: ftp://ep.com.pl użytkownik: 87550, hasło: rxoaagj8

Uwaga: na serwerze FTP są dostępne materiały począwszy od numeru 12/1998 do wydania bieżącego. Dostęp do poszczególnych materiałów dla Czytelników EP po podaniu unikatowego hasła opublikowanego w EP.


LSM6DS3

Podwójny sensor MEMS (6 DoF) iNEMO: żyroskop 3D + akcelerometr 3D Sensor LSM6DS3 z rodziny iNEMO integruje dwie funkcje 3D: żyroskopu i akcelerometru. Może pracować jako sensor-hub, obsługujący łącznie do 6 sensorów (w tym dwa wewnętrzne). Wyposażono go w bufor FIFO zapewniający płynny odczyt danych przez magistralę I2C/SPI.

Podstawowe cechy i parametry sensora LSM6DS3: • mały pobór prądu: 0,9 mA w trybie normal lub 1,25 mA w trybie high-performance • skalowane zakresy pomiarowe ±2/±4/±8/±16 g oraz ±125/±245/±500/±1000/±2000 dps • wbudowane FIFO o pojemności 8 kB • wbudowany czujnik temperatury • miniaturowa obudowa LGA o wymiarach 2,5×3×0,83 mm • wbudowane interfejsy SPI/I2C • zasilanie 1,71…3,6 V (IO od 1,62 V) • zgodny z Androidem KitKat i Lollipop

www.rutronik.com • rutronik_pl@rutronik.com • tel 032/ 461 2000 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

www.st.com/mems


NIE PRZEOCZ

nowe Z kilkuset nowości wybraliśmy te, których nie wolno przeoczyć. Bieżące nowości można śledzić na www.elektronikaB2B.pl wyjściowego 1,5%. Zawiera programowalny układ miękkiego startu oraz zabezpieczenia: nadnapięciowe, podnapięciowe, nadprądowe i termiczne. ISL8117 jest oferowany w  obudowach QFN (4  mm×4  mm) i  HTSSOP (6,4  mm×5  mm). W  ofercie firmy Intersil są  dwa zestawy ewaluacyjne umożliwiające zapoznanie się z  parametrami przetwornicy: ISL8117EVAL1Z o  średniej (VIN=4,5...60  V, VOUT=3,3  V/6  A) i  ISL8117EVAL2Z o  dużej (VIN=18…60  V, VOUT=12 V/20 A) obciążalności. http://goo.gl/XNmssE

Kontroler przetwornicy DC/DC Buck Układ scalony ISL8117 to łatwy w  aplikacji kontroler przetwornicy DC-DC Buck o  dopuszczalnym zakresie napięcia wejściowego od  4,5 do 60 V, mogący pracować z dużą dopuszczalną różnicą napięć między wejściem i wyjściem. Nie wymaga wprowadzania napięcia szyny pośredniej, co  eliminuje jeden ze  stopni układu zasilania często stosowany w aplikacjach przemysłowych. Dzięki możliwości ograniczenia minimalnego czasu włączenia klucza do  zaledwie 49  ns, przetwornica wykonana na  bazie ISL8117 może przeprowadzać bezpośrednią konwersję napięcia wejściowego 48  VDC do  napięcia rzędu 1  V, co  pozwala na zmniejszenie gabarytów zasilaczy stosowanych w aplikacjach przemysłowych, medycznych czy telekomunikacyjnych. Przy zastosowaniu zaledwie 10 komponentów (wliczając w  to  tranzystory MOSFET i  elementy pasywne) układ ISL8117 pozwala na  wykonanie kompletnego obwodu zasilania zapewniając przy tym sprawność sięgającą 98% i  dokładność stabilizacji napięcia REKLAMA

6 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Superheterodynowe odbiorniki OOK/ASK na pasmo 400…450 MHz Układy MICRF229 i  MICRF230 to  superheterodynowe odbiorniki OOK/ASK pracujące w  paśmie 400…450  MHz, zaprojektowane do  zastosowania w systemach zdalnej kontroli dostępu i automatyki domowej. Mają czułość na  poziomie -112  dBm przy szybkości transmisji 1 kbps. Pracują zasilane napięciem z zakresu od 3,5…5,5 V przy poborze prądu wynoszącym mniej niż 6 mA. Są układami o dużym stopniu integracji, wymagającymi dołączenia jedynie oscylatora, anteny i  kilku podzespołów pasywnych. Układ MICRF229 może pracować w  trybie auto-poll pozwalającym na  obniżenie poboru mocy do  mniej niż 0,5  mW. W  tym trybie układ jest przełączany okresowo między stanem uśpienia i  odpytywania. Dopiero po  wykryciu właściwego sygnału wejściowego generuje sygnał aktywujący mikrokontroler. Z kolei MICRF230 ma opcjonalną funkcję squelch powodującą zablokowanie wyjścia danych do  momentu wykrycia właściwej transmisji, dzięki czemu mikrokontroler może przebywać przez długi czas w stanie uśpienia, pobierając jedynie 0,5 mA prądu. Oba układy są przystosowane do pracy w rozszerzonym zakresie temperatury otoczenia, od  -40 do  +105°C. Są  oferowane w  16-wyprowadzeniowej obudowie QSOP o powierzchni 6,0 mm×4,9 mm. http://goo.gl/aCQlJX


Podzespoły nie wykryto odwrócenia polaryzacji prądu. Układ może pracować w szerokim zakresie temperatury otoczenia od -40 do +125°C. Jest wytwarzany w obudowie Thin QFN-12. http://goo.gl/PWm0iI

Tranzystory MOSFET o UDS=600 V i małej rezystancji RDS(ON)

Dwuwejściowy przełącznik zasilania o obciążalności 3 A Firma Micrel wprowadza do  oferty nowy typ przełącznika zasilania o  obciążalności 3 A  i  wymiarach 2 mm×2 mm. Układ MIC1344 został zaprojektowany do  zastosowania w  urządzeniach przenośnych. Ma możliwość przełączania dwóch źródeł zasilania o  napięciu z  zakresu 2,8…5,5  V. Zawiera wewnętrzne tranzystory MOSFET o  bardzo małej rezystancji RDS(on) wynoszącej typowo 70 mV, zapewniającej mniejsze napięcie przewodzenia i tym samym mniejsze straty mocy niż w przypadku diod OR stosowanych często w układach przełączania zasilania. Został zabezpieczony przed możliwością przepływu prądu od wyjścia do wejścia oraz pomiędzy wejściami. W każdym z kanałów znajduje się ogranicznik prądu programowany za pomocą zewnętrznego rezystora. Układ MIC1344 może pracować w trybie z automatycznym lub ręcznym wyborem źródła. W trybie automatycznym do wyjścia przełączane jest źródło o większym napięciu, natomiast w trybie ręcznym dowolne ze źródeł lub żadne (pozwala to na korzystanie z więcej niż dwóch źródeł wejściowych). Układ MIC1433 ma cztery cyfrowe wyjścia statusu. Dwa z nich służą do  sygnalizowania wyboru wejścia. Pozostałe dwa pozostają w stanie nieaktywnym, gdy napięcia wejściowe są dostatecznie duże, natężenie prądu przewodzenia znajduje się w  wyznaczonych granicach, temperatura układu nie jest zbyt wysoka oraz

Firma Inineon Technologies AG wprowadza do oferty nową rodzinę tranzystorów MOSFET CoolMOS C7 o  napięciu przebicia 600  V, zapewniających 50-procentową redukcję strat przy przełączaniu w  porównaniu z  tranzystorami z  wcześniejszej rodziny CoolMOS CP. Udało się w  nich zmniejszyć iloczyn RDS(ON)*A do zaledwie 1  V/mm2, co  pozwoliło na  uzyskanie najmniejszej rezystancji RDS(ON) dla obudowy danego typu i  zwiększenie gęstości mocy w  aplikacjach docelowych. Zakres aplikacji obejmuje głównie zasilacze impulsowe o  dużej mocy stosowane w  serwerach, systemach telekomunikacyjnych i  przemyśle, w  których jest ważne uzyskanie jak największej sprawności przy niskich kosztach materiałowych i serwisowych. Tranzystory CoolMOS C7 pozwalają na  poprawę sprawności energetyczną o  0,3…0,7% dla topologii PFC oraz o  0,1% dla topologii LLC. Posługując się konkretnym przykładem – w zasilaczu serwerowa o  mocy 2,5  kW, zastosowanie tranzystorów CoolMOS C7 może obniżyć koszt traconej w nim energii o około 10%. Ze  względu na  znacznie mniejszy wymagany ładunek bramki i mniejszą pojemność wyjściową niż w innych podobnych tranzystorach, CoolMOS C7 może pracować nawet z  dwukrotnie wyższą częstotliwością przełączania przy praktycznie niezmienionej sprawności, co  pozwala na  stosowanie mniejszych i  tańszych transformatorów i dławików. Jak podaje Inineon, zwiększenie częstotliwości taktowania z 65 do 130 kHz może obniżyć koszt zakupu podzespołów magnetycznych nawet o 30%. Tranzystory CoolMOS C7 są obecnie oferowane w 4-nóżkowych obudowach TO-220, TO-247 i TO-247, a w najbliższym czasie pojawią się też w  wariantach TO-220 FP, DPAK, D2PAK i  ThinPAK. Zależnie od typu, ich rezystancja RDS(ON) wynosi od 40 do 180 mV. http://goo.gl/bKYaRy

REKLAMA

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

7


NIE PRZEOCZ pasujących do zadanych gabarytów, zakresu parametrów znamionowych i parametrów obciążenia. http://goo.gl/QRTzF2

Miniaturowy, 4-kanałowy ochronnik ESD

Narzędzie online do szacowania czasu życia kondensatorów odsprzęgających zasilanie Pod adresem www.epcos.com/ilmcap irma TDK udostępnia nowe narzędzie online EPCOS FilmCap Service Life Calculation Tool ułatwiające szacowanie czasu życia kondensatorów odsprzęgających zasilanie. W  wewnętrznej bazie danych programu znajduje się w  sumie około 250 typów kondensatorów MKP z serii B3267x i B3277x. Po wyborze typu kondensatora i wprowadzeniu jego parametrów pracy (napięcie, temperatura, rezystancja termiczna, częstotliwość, natężenie prądu) FilmCap oblicza impedancję, ESR, tangens kąta stratności, Irms, Vrms i  przewidywany czas życia kondensatora. Dane te  mogą być drukowane i/lub wyświetlane w  postaci wykresów. Program udostępnia też funkcję „smart search” umożliwiającą wyszukiwanie typów kondensatorów REKLAMA

Układ SP1015 to nowy ochronnik ESD z oferty irmy Littelfuse zawierający zespół wewnętrznych transili realizujących dwukierunkową ochronę 4 linii sygnałowych przed wyładowaniami ESD i  impulsami przepięciowymi EFT. Umożliwia bezpieczne absorbowanie powtarzających się wyładowań ESD do 20 kV przenoszonych przez kontakt oraz do  30 kV przenoszonych przez powietrze. Te  parametry są  znacznie powyżej poziomów zdeiniowanych w normie IEC61000-4-2, a przy tym nie występuje degradacja parametrów. Małe wymiary obudowy (0,93 mm×0,53 mm) umożliwiają zastosowania układu w  urządzeniach o  największej gęstości upakowania podzespołów. Układ SP1015 może być zamontowany np. w  pobliżu gniazda karty micro-SIM lub kontrolera ekranu dotykowego. Pracuje w dopuszczalnym zakresie temperatury otoczenia od -40 do +125°C. Pozostałe parametry: • Prąd upływu: maks. 0,1 mA (przy napięciu wstecznym 5 V). • Pojemność wewnętrznych diod: 5 pF. • Ochrona ESD: IEC61000-4-2, ±20 kV (kontakt), ±30 kV (powietrze). • Ochrona EFT: IEC61000-4-4, 40A (5/50 ns). • Ochrona przed wyładowaniami IEC61000-4-5 (2,0 A, tp=8/20 ms). • Maksymalne napięcie linii: 12 V (IPP=2 A, tp=8/20 ms). • Napięcie znamionowe: 5 V. • Rezystancja dynamiczna: 0,65 V. http://goo.gl/EIP2E1

Impulsowy regulator napięcia z rodziny mModule o obciążalności 36 A Układ LTM4630-1 to kolejny regulator napięcia z rodziny µModule oferowanej przez irmę Linear Technology. Może dostarczyć do  obciążenia prąd o  natężeniu do  36  A. W  przypadku aplikacji

8 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


Podzespoły wymagającej większej mocy producent przewidział możliwość równoległego łączenia do 4 układów. Takie połączenie zapewnia sumaryczną wydajność do 144 A. LTM4630-1 jest przeznaczony do  zasilania układów FPGA, ASIC i mikroprocesorów produkowanych w procesie o długości kanału 28 nm i mniejszej, wymagających bardzo dokładnej stabilizacji napięcia zasilającego i szybkiej odpowiedzi na zmiany prądu obciążenia. Jego struktura wewnętrzna obejmuje kontroler oraz niezbędne cewki indukcyjne i  tranzystory w  obudowie BGA o  wymiarach 16  mm×16  mm×5  mm. Dopuszczalny zakres napięcia wejściowego wynosi 4,5…16 V. Napięcie wyjściowe może być regulowane w  zakresie 0,6…1,8  V za pomocą zewnętrznego rezystora. Ponadto jest możliwa praca w  trybie dwóch wyjść o  wydajności prądowej po  18  A  każde. Maksymalny błąd napięcia wyjściowego wynosi –  w  zależności od  wersji układu –  ±0,8% lub ±1,5% w  całym dopuszczalnym zakresie napięcia wejściowego, prądu obciążenia i  temperatury otoczenia. Użytkownik może optymalizować szybkość odpowiedzi impulsowej regulatora zmniejszając wartość pojemności w  obwodzie wyjściowym. Przy minimalnej dopuszczalnej pojemności (5 kondensatorów ceramicznych po  220  mF) maksymalny skok napięcia wyjściowego wynosi ±3% przy skokowej zmianie prądu obciążenia o 25%, napięciu wejściowym 12 V, napięciu wyjściowym 1,2  V i  prądzie obciążenia 36  A. Dla tych parametrów sprawność energetyczna LTM4630-1 wynosi 86%, co  odpowiada mocy strat równej 6,5  W. Układ jest w  stanie oddawać do  obciążenia prąd 36  A  w  zakresie temperatury otoczenia do  +60°C bez wymuszonego obiegu powietrza. Przy wyższej temperaturze dopuszczalny prąd obciążenia zmniejsza się o około 5 A co 10°C. http://goo.gl/zOZlOU

Mikrokontrolery Cortex-M0+ z kontrolerem panelu dotykowego Firma Atmel wprowadza do  oferty nową serię mikrokontrolerów z  rdzeniem Cortex-M0+, wyróżniających się dużą pojemnością

REKLAMA

Zapraszamy do zapoznania się z ofertą techniczno-handlową w czasie 28. Międzynarodowych Energetycznych Targów Bielskich

ENERGETAB 2015 Hala A, Stoisko 80

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


NIE PRZEOCZ wewnętrznej pamięci, możliwością zasilania napięciem 5 V oraz wbudowanym kontrolerem PTC (Peripheral Touch Controller) zapewniającym tolerancję na  wilgoć zalegającą na  powierzchni ekranu dotykowego. Są  to  mikrokontrolery taktowane zegarem 48  MHz i  osiągające moc obliczeniową 2,46  Coremark/MHz. Ich dodatkowymi atutami są  wbudowane zabezpieczenia przed zaburzeniami EMI i  wyładowaniami ESD oraz obszerny zestaw wewnętrznych obwodów analogowych. Mikrokontrolery SAM C wspierają standard IEC 60730 Class B Safety Library określający zasady zapewnienia bezpieczeństwa podczas sterowania pracą urządzeń przemysłowych i AGD. Są kompatybilne pod względem kodu i  rozmieszczenia wyprowadzeń z  wcześniejszymi seriami mikrokontrolerów SAM D i SAM L. Są oferowane w obudowach mających 32, 48 lub 64-wyprowadzenia. Wybrane parametry mikrokontrolerów serii SAM C: • Rdzeń ARM Cortex-M0+ ze sprzętowym akceleratorem mnożenia i dzielenia (DIVA). • Wbudowana pamięć o  dużej pojemności (do  32 kB SRAM, do 256 kB Flash). • Zakres napięcia zasilania: 2,7…5,5 V. • 256-kanałowy kontroler PTC (Peripheral Touch Controller). • 6- lub 12-kanałowy kontroler DMA. • 12-kanałowy, 12-bitowy przetwornik A/C. • Podwójny interfejs CAN (obsługa CAN 2.0A/B, CAN-FD 1.0). • Do  5 16-bitowych układów czasowo-licznikowych i  dodatkowy, pojedynczy timer 24-bitowy. • Do 4 interfejsów SERCOM z możliwością konigurowania do pracy jako USART, I2C, SPI, LIN. • 32-bitowy licznik RTC (Real Time Counter) z  funkcją zegara i kalendarza. REKLAMA

• 2 komparatory analogowe. • Do 52 programowalnych linii I/O. http://goo.gl/YmCzdJ

n-kanałowe MOSFETy 30 i 60 V w obudowach z obustronnym chłodzeniem Toshiba Electronics Europe rozszerza rodzinę n-kanałowych tranzystorów MOSFET –  realizowanych w  oparciu o  nowy proces technologiczny U-MOS IX-H Trench –  o  dwa nowe modele produkowane na napięcia znamionowe 30 V i 60 V. Oba są dostępne w  obudowach DSOP Advance (6  mm×5  mm) skutecznie rozpraszających ciepło dzięki dwustronnym powierzchniom chłodzącym. Charakteryzują się małymi stratami mocy dzięki niewielkiej rezystancji RDS(ON) i  małemu ładunkowi wyjściowemu QOSS. Przy napięciu sterującym VGS=10  V rezystancja RDS(ON) i  QOSS wynoszą, odpowiednio –  0,6  mV i  2160  pF dla tranzystora 30-woltowego i 1,3 mV/960 pF dla 60-woltowego. Dopuszczalna temperatura pracy złącza to +175°C. Ważniejsze parametry 30-woltowego tranzystora TPWR8503NL: • Ciągły prąd drenu ID: 150 A w temperaturze +25°C. • Impulsowy prąd drenu IDP: 500 A dla t=100 ms. • Rezystancja kanału RDS(ON): typowo 1,0 mV przy VGS=4,5 V. • Prąd upływu IDSS: maksymalnie 10 mA przy VDS=30 V. • Moc rozpraszana PD: 142 W w temperaturze +25°C. • Całkowity ładunek bramki (Qg): typ. 74 nC, • Czas regeneracji trr: typowo 58 ns. http://goo.gl/s5I2aF

Izolator sygnałów USB 2.0 z portem USB Host i dwoma portami USB device Firma Murata oferuje galwaniczny izolator sygnałów NMUSB202MC do  aplikacji przemysłowych i  aparatury medycznej, dostarczany w  postaci modułu do  montażu powierzchniowego. Zawiera pojedyncze gniazdo USB host współpracujące np. z komputerem i dwa gniazda USB device współpracujące z urządzeniami peryferyjnymi. Dodatkowo, NMUSB202MC ma wejście zasilania o wydajności prądowej po 500 mA dla obu portów USB device. Są one zabezpieczone przed przeciążeniem oraz odizolowane galwanicznie zarówno od  wejścia USB, jak i  wejścia zasilającego. NMUSB202MC obsługuje tryby pracy full speed (12  Mbps) i low speed (1,5 Mbps) – te tryby są przełączane automatycznie. Może pracować w  przemysłowym zakresie temperatury. Jest zabezpieczony przed wyładowaniami ESD do  2  kV. Wymiary modułu wynoszą 24 mm×23 mm×14 mm. http://goo.gl/4EIeqx

10 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


NIE PRZEOCZ

NIE PRZEOCZ

koktajl

NDN ma nową stronę NDN – warszawski dystrybutor aparatury pomiarowej, ma nową stronę internetową. Po  zmianie witryna zyskała sporo na  czytelności. Większość urządzeń z  oferty jest także dostępna poprzez sklep internetowy.

kompetencji dzięki realizacji ciekawych i wymagających projektów, wyposażaliśmy nasz park maszynowy w  nowoczesne i  zautomatyzowane urządzenia oraz podnosiliśmy jakość naszych usług. Cieszy mnie fakt, że  jesteśmy doceniani przez naszych klientów, którzy co kwartał oceniają współpracę z nami i wystawiają nam bardzo dobre oceny. Cenią naszą jakość, terminowość oraz doskonałą obsługę REKLAMA

Flextronics w Tczewie ma już 15 lat Flextronics International Poland, polski oddział amerykańskiej korporacji Flextronics, obchodzi piętnastą rocznicę działalności w Tczewie. Firma powstała w 2000 roku na terenie Pomorskiej Specjalnej Strefy Ekonomicznej przy ulicy Malinowskiej 28. Jako pierwszy został zbudowany budynek, w którym aktualnie powstają szafy bazowe dla telefonii komórkowej oraz produkowane są obudowy i elementy metalowe. W 2002 roku zakład powiększył się o drugą halę, w której teraz odbywa się montaż PCB, modułów oraz urządzeń elektronicznych. Aktualne zatrudnienie wynosi około 3500 osób, a zakład rozbudowuje się o kolejny budynek. Obecnie irma realizuje zlecenia dla światowych marek między innymi z branży telekomunikacyjnej, przemysłowej i samochodowej. „Jestem dumny z  faktu, że  przez 15 lat przedsiębiorstwo Flextronics tak dynamicznie się rozwinęło. W  trakcie tego okresu stale wdrażaliśmy zaawansowane technologie, zdobywaliśmy wiele ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

11


NIE PRZEOCZ

Kalendarium wydarzeń Wydarzenia krajowe 1-4.09 Kielce, MSPO – Międzynarodowy Salon Przemysłu Obronnego 15-17.09 Bielsko-Biała, Energetab – targi energetyki 22-25.09 Gdańsk, Trako 2015 – międzynarodowe targi kolejowe 22-24.09 Warszawa, Renexpo Poland – targi energii odnawialnej i efektywności energetycznej 6-7.10 Kraków, Maintenance 2015 – targi utrzymania ruchu, planowania i optymalizacji produkcji 13-15.10 Sosnowiec, Wirtotechnologia 2015 – międzynarodowe targi metod i narzędzi do wirtualizacji procesów 13-15.10 Kraków, Eurotool 2015 – targi obrabiarek, narzędzi i urządzeń do obróbki materiałów 22-23.10 Gdańsk, Technicon Innowacje 2015 – targi techniki przemysłowej, nauki i innowacji 4-6.11 Warszawa, Trans Poland 2015 – międzynarodowe targi transportu i logistyki 17-19.11 Lublin, Energetics – targi energetyczne 25-26.11 Wrocław, IT Future Expo – targi innowacyjnych technologii informatycznych 25-26.11 Kraków, EFE 2015 – targi efektywności energetycznej

Imprezy zagraniczne 4-9.09 Berlin, IFA – targi elektroniki konsumenckiej 8-10.09 Paryż (Francja), PEuMW – European Microwave Week – konferencja nt. mikrofal 8-11.09 Bukareszt (Rumunia), IEAS – wystawa automatyki 15-17.09 Tampere (Finlandia), Subcontracting – targi kooperacji w przemyśle 15-17.09 Hamburg (Niemcy), EU PVSEC – konferencja i wystawa technologii PV 22-24.09 Paryż (Francja), RF & Hyper Wireless – targi sprzętu komunikacji radiowej, mikrofalowej i światłowodowej, Elektronika – wystawa komponentów, sprzętu do produkcji i testowania elektroniki (w ramach eNOVA Paris) 22-24.09 Stuttgart (Niemcy), Hybrid Expo i Composites Europe – dwie wystawy poświęcone technologii, materiałów i komponentów 23-24.09 Pordenone (Włochy), Coiltech – wystawa technologii uzwajania i nawijania 28.09-3.10 Plovdiv (Bułgaria), Eltech – wystawa elektroniki i elektrotechniki 6-8.10 Helsinki (Finlandia), Elkom – targi elektroniki profesjonalnej 6-8.10 Drezno (Niemcy), Semicon Europa – konferencja na temat sprzętu i technologii półprzewodnikowych, materiałów, MEMS 12 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

6-9.10 Tajpei (Tajwan), Taitronics – targi elektroniki 7-8.10 Paryż (Francja) – wystawa SmartGrid+SmartCity 28-30.10 Szanghaj (Chiny), EMC China 2015 – wystawa i konferencja poświęcona kompatybilności elektromagnetycznej 10-13.11 Monachium (Niemcy), Productronica 2015 – targi poświęcone produkcji elektronicznej 13-16.10 Honkong (Chiny), Electronic Asia – targi komponentów, urządzeń i technologii wyświetlaczy oraz Hong Kong Electronics Fair – targi elektroniki 13-16.10 Trenczyn (Słowacja), EloSys – międzynarodowe targi energetyki, elektryki i elektroniki 14-17.10 Bukareszt (Rumunia), ExpoEnergiE (dawniej EEE) – targi energii odnawialnej i technologii konwencjonalnych 14-16.10 Tajpei (Tajwan) PV Taiwan – wystawa technologii fotowoltaicznych 24-26.11 Norymberga (Niemcy), SPS IPC Drives – targi komponentów automatyki

Warsztaty, szkolenia, seminaria 9-11.09 Białystok, XXIII Międzynarodowa Konferencja Kompatybilności Elektromagnetycznej, Politechnika Białostocka 9.09, Katowice, 10.09, Warszawa, Warsztaty dotyczące mikrokontrolerów STM32F0 + GSM, Masters 21-25.09 Włocławek, IPC-J-STD-001E CIS – Wymagania dla lutowanych zespołów elektrycznych i elektronicznych, Renex 7.10 Łódź i 8.10 Białystok, Warsztaty dotyczące mikrokontrolerów STM32F7 z rdzeniem Cortex-M7, Masters 8-9.10 Lądek Zdrój, Konferencja Jakości Energii Elektrycznej, Astat 13.10 Warszawa, NIDays 2015 – konferencja na temat systemów pomiarowo-kontrolnych, National Instruments 14.10, Poznań, Warsztaty STM32F4 + Butterly (JAVA), Masters 15-16.10 Łódź, Sympozjum Kompatybilność Elektromagnetyczna w Elektrotechnice i Elektronice 2015, Politechnika Łódzka 21.10 Katowice i 22.10 Warszawa, Warsztaty STM32 Cube + STM32 Studio, Masters 5.11 Katowice, Zaawansowane C na mikrokontrolerach STM, Masters 18.11 Katowice i 19.11 Warszawa, STM32F4 + TouchGFX, Masters


klienta” – powiedział Andrzej Połojko, dyrektor generalny oraz wiceprezes Flextronics International Poland.

Committed to excellence

Na zdjęciu od lewej do prawej zespół ds. obsługi Europy Wschodniej: Hermann Reiter (dyrektor), Ingrid Lauer, Arkadiusz Rataj, Ioana Harabagiu, Sylvia Worobiow, Krzysztof Wojtasik i Kristina Szabova.

Digi-Key umacnia się w Europie Digi-Key, globalny amerykański dystrybutor komponentów elektronicznych, otworzył w  Monachium nowe biuro, co  jest skutkiem rosnących obrotów irmy w  Europie, coraz liczniejszej załogi oraz dalszych planów rozwojowych. Powołano też wydzielony zespół pracowników do obsługi krajów z rejonu Europy Wschodniej posługujący się wieloma językami i mający duże doświadczenie w branży.

Masters zmienił biuro w Katowicach 1 lipca 2015 roku biuro handlowe Masters zmieniło swoją lokalizację. Nowa siedziba jest przy ulicy Uniwersyteckiej 13 w Katowicach w Budynku Altus obok Spodka. Zmiana biura wiąże się z rozszerzeniem powierzchni o salę konferencyjną, która pozwoli na zwiększenie liczby propozycji i  tematyki warsztatów dla klientów z  regionu południa Polski.

Combine Technologies

Realize EMBEDDED Designs

Masters współpracuje z Draupner Graphics

RUTRONIK EMBEDDED brings together entire solutions to build applications for:

REKLAMA

Firma Masters podpisała umowę o współpracy i  wsparciu technicznym na  rynek polski i  czeski z  irmą Draupner Graphics A/S. Draupner oferuje rozwiązanie o  nazwie TouchGFX, które jest pakietem programistycznym umożliwiającym tworzenie zaawansowanej i wysokiej jakości graiki na tanich mikrokontrolerach serii STM32 (Cortex M). TouchGFX w  połączeniu z  STM32F4 zapewniają wysokowydajną platformę GUI z  dużym zapasem mocy obliczeniowej do  działania aplikacji sterującej. Nie ma potrzeby stosowania skomplikowanych i drogich procesorów aplikacyjnych.

Digital Signage Medical Industrial Control Transportation

Learn more: www.rutronik.com/embedded Get in touch: embedded@rutronik.com or call +49 (0) 7231 801-1776

ELEKTRONIKA PRAKTYCZNA 9/2015

www.rutronik.com NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

13


NIE PRZEOCZ

Digi-Key rozszerza funkcjonalność działów tematycznych na swoim portalu internetowym

unijny program ramowy Unii Europejskiej, który ma wspierać „innowacyjność europejskiego przemysłu i europejskiej nauki”. Składają się na to trzy linie inwestycyjne. Około 20 mld euro ma traiać na projekty naukowe. Wspierany też ma być przemysł, także w kwocie ok. 20 mld euro. Trzecia linia programu Horyzont 2020 przeznaczona jest na realizację wielkich wyzwań społecznych, a więc takich obszarów jak energetyka, demograia, nowe środki transportu. Program ma różne formy wsparcia, ale dominują w  nim instrumenty zwrotne takie jak pożyczki.

Digi-Key Electronics wdrożył działy tematyczne TechZones z artykułami i informacjami stworzone z myślą o przekazaniu inżynierom materiałów technicznych, treści związanych z  konkretnym zastosowaniem oraz informacji o  nowych produktach. Tematyka obejmuje m.in. zagadnienia z  oświetleniem, zasilaniem, mikrokontrolerami i czujnikami oraz systemami komunikacji bezprzewodowej.

Relpol – pierwszy kwartał był udany W  I  kwartale tego roku forma Relpol –  krajowy producent przekaźników osiągnął 25,3 mln zł przychodów. Są to najwyższe kwartalne przychody od ponad dwóch lat i co więcej, zarząd irmy spodziewa się, że  drugi kwartał, powinien być lepszy od  pierwszego. Dobra sprzedaż to  efekt poprawy sytuacji rynkowej zarówno w  kraju, jak i w Europie, rozwój w ostatnich latach nowych kontaktów oraz wzrost kursu dolara w stosunku do złotówki.

Drukarki 3D stają się poważnym biznesem

W ramach Horyzont 2020 do przedsiębiorców i nauki może traić blisko 80 mld euro

Biall, dostawca sprzętu pomiarowego z Gdańska, rozszerza ofertę o  produkty związane z  systemami zasilania energią słoneczną jak systemy i lampy solarne, falowniki, złącza,

Unijny program inansowania badań naukowych i innowacji „Horyzont 2020” z  budżetem 80 mld euro to  największy REKLAMA

14 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Produkcja drukarek 3D staje się w Polsce poważnym biznesem. W światowym runku szacowanym na 1,6 mld dol. polscy producenci mają około 10% udziałów. Producenci tacy jak Zortax, ZMorph, 3Novatica, Monkeytfab, to w większości nowe przedsiębiorstwa, które szybko rosną i przyciągają uwagę poważnych inwestorów.

Biall inwestuje w fotowoltaikę 


Zostań Dyrygentem! PIC32 - szybsze projektowanie mniejszym wysiłkiem

Wymienność kodu

Szybsze wsparcie techniczne

Architektura modułowa pozwala na

Jedno miejsce kontaktowe dla wszystkich

korzystanie z driverów i bibliotek bez

pytań, także dla rozwiązań firm partnerskich

kłopotu Szybszy czas wejścia na rynek

Przyjazne oprogramowanie firm partnerskich

Jedna zintegrowania platforma zapewnia

Integracja rozwiązań innych producentów

krótki czas projektowania

w ramach jednej platformy

Poprawiona kompatybilność

Konfiguracja projektu poprzez GUI

Skalowalność wewnątrz rodziny układów

Szybkie tworzenie i konfiguracja

PIC32 Microchip ułatwia dopasowanie

projektu łącznie z rozwiązaniem od firm

projektów do nowych wymagań

partnerskich

www.microchip.com/get/euharmony Nazwa Microchip i logo, logo Microchip i MPLAB są zastrzeżonymi znakami towarowymi firmy Microchip Technolog Incorporated w USA i innych krajach. Wszystkie pozostałe wymienione znaki towarowe są własnością ich odpowiednich właścicieli. © 2015 Microchip Technology Inc. Wszystkie prawa zastrzeżone. DS40001796B. MEC2019Pol07/15 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


NIE PRZEOCZ kable, narzędzia oraz mierniki. Firma obiecuje, że stopniowo zakres sprzętu w sprzedaży będzie rozbudowywany zgodnie z oczekiwaniami naszych klientów.

Szkolenie na temat cyfrowych systemów łączności radiowej

Giętkie obwody drukowane w ofercie Elhurtu Elhurt dostawca podzespołów elektronicznych i  kompleksowych usług produkcji EMS z  Gdańska, poszerzył ofertę w  zakresie PCB o importowane obwody elastyczne. Płytki tego typu mogą mieć do 8 warstw i  grubość od  0,05 do  0,5 mm (liczona bez warstwy usztywnienia). Dostępna jest również wersja przezroczysta, a  maksymalny wymiar płytki może sięgnąć 22 cm×35 cm. REKLAMA

23 czerwca odbyło się w Warszawie, zorganizowane przez irmę Meratronik i Cobham AvComm (Aerolex) szkolenie pt. „Pomiary systemów TETRA, DMR i NXDN”. Obejmowało zagadnienia teoretyczne i praktyczne związane z pomiarami radiotelefonów i stacji bazowych systemów cyfrowych i analogowych. W szkoleniu wzięło udział ponad 70 osób związanych z  radiokomunikacją. Przedstawione zostały podstawy teoretyczne i  założenia systemów TETRA, P25, dPMR, DMR i NXDN. Omówiono także aktualną sytuację na rynku radiokomunikacyjnym w Polsce i na świecie. Na podstawie testów urządzeniem 8150 słuchacze mogli w praktyczny sposób sprawdzić działanie warstw sygnalizacyjnych systemu TETRA oraz nagrać niekodowane połączenia z pobliskiej stacji testowej. Prezentowane były także testery radiokomunikacyjne 3920B, 8800S i 3550R. Tematem przewodnim było jednak strojenie radiotelefonów cyfrowych przy użyciu metod znanych z  systemów analogowych AM/FM. Okazuje się, że  wiele testów prowadzonych przez dostawców sprzętu dowodzi, iż  taka metoda prowadzi do  nieoptymalnego wykorzystania możliwości systemów cyfrowych, a  co  za tym idzie rozczarowania użytkowników końcowych. Wnioskiem końcowym jest, wydawałoby się to oczywistością, wykorzystanie testerów dedykowanych do  danego systemu cyfrowego, które w sposób ręczny lub w pełni automatyczny, w oparciu o dane techniczne producenta, dokonują sprawdzenia i strojenia terminali i stacji bazowych.

Atmel potencjalnym celem przejęcia przez inną irmę Zarząd Atmela, dostawcy dobrze znanych także na polskim rynku mikrokontrolerów, przygotowuje strategiczne decyzje odnośnie dalszego losu spółki, rozważając m.in. możliwość jej sprzedaży, poinformowała agencja Reutera w  czerwcu br. Niedawno prezes Atmela Steven Laub (na zdjęciu) ogłosił swój zamiar przejścia z  końcem sierpnia na  emeryturę. Wywołało to  spekulacje, że  w  tej sytuacji irma może rozważać bardzo różne zmiany strategii działalności, ze sprzedażą włącznie. Reuter przywołał także inne nieoicjalne informacje, że jakoby Atmel zaangażował bank Quatalyst Partners do pomocy przy procesie sprzedaży irmy. Potencjalnymi kupującymi mogliby być Qualcomm, Avago, NXP, TI lub Microchip. Podczas swojego wystąpienia Laub stwierdził, że bez wątpienia obserwowana jest trwająca od paru lat konsolidacja branży i w tym roku można oczekiwać kontynuacji tego trendu. Zaznaczył jednak, że „nie ma to żadnego wpływu na  jego decyzję o  przejściu na  emeryturę”. W  opinii Lauba w obecnej sytuacji Atmel ma silną pozycję w dostawach półprzewodników na rynki uznawane za obszary szybkiego wzrostu: mikrokontrolery, rynki bezprzewodowe, interfejsy dotykowe oraz sektory zabezpieczeń i motoryzacyjny.

16 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


Atmel już wcześniej był celem przejęcia. W 2008 r. chciał go kupić rywal na rynku mikrokontrolerów, Microchip, oferując za Atmela 2,3 mld dol. Steve Sanghi, prezes Microchipa, tłumaczył wówczas, że nadarzyła się okazja do  transakcji kupna, ponieważ wartość giełdowa Atmela okresowo zmalała aż o 46%.

DOSTRZEC CAŁOŚĆ W NAJMNIEJSZYCH SZCZEGÓŁACH. Przyszłościowe perspektywy dla rozwoju i produkcji innowacyjnej elektroniki.

. Juz teraz kup bilet lub wygeneruj wejściówke˛! productronica.com/en/tickets

Kampus Nowych Technologii współtworzony przez Politechnikę Warszawską i Uniwersytet Cambridge Kreatywne Mazowsze, inicjatywa samorządu i  lokalnego biznesu, to  projekt stworzony dla pozyskania funduszy oraz rozwoju i  wsparcia innowacyjności. Jego inicjatorzy nawiązali współpracę z  Uniwersytetem Cambridge i  zapewnili projektowi dostęp do  programu „Cambridge Digital Innovation Ecosystem”. Jest to sprawdzony w krajach rozwiniętych mechanizm współpracy między uczelniami, biznesem i samorządem. W  początkowej fazie projektu Politechnika Warszawska wspólnie z innymi podmiotami buduje obiekt pod nazwą Kampus Nowych Technologii, który będzie odpowiadać na potrzeby biznesu. To pierwszy tego typu projekt nie tylko w skali regionu, ale także całego kraju. Przedsięwzięcie ma łączyć polską naukę i nowoczesne polskie irmy. Wartość projektu to  120 mln zł, inwestycja ma zostać zrealizowana do 2018 r.

Porównanie rentowności Avago z indeksami giełdowymi w okresie ostatnich 5 lat (wartość inwestycji liczona w dol., źródło: Avago Technologies)

W maju w USA rozpoczęto fuzje irm technologicznych o łącznej wartości 243 mld dol. To najwyższy wynik w historii i być może ostrzeżenie przed kolejnym załamaniem na rynku inansowym. Za 37 mld dol. Avago Technologies przejął irmę Broadcom, wytwórcę układów do  sieci szerokopasmowych i  bezprzewodowych, m.in. części do  iPhone’ów. Była to  największa fuzja spółek technologicznych od  kilkunastu lat. W  jej wyniku powstał potężny globalny producent półprzewodników - trzeci pod względem wielkości po  Intelu i  Qualcommie. Wcześniej Avago przejął m.in. LSI. Wielką fuzją na  rynku telekomunikacyjnym było natomiast połączenie

REKLAMA

Przejęcia Broadcoma przez Avago, Altery przez Intela i inne sygnałem kryzysu?

Światowe Wioda˛ce Targi Innowacyjnej Produkcji Elektronicznej. 40 lat innowacji. 10. – 13. listopada 2015 r. Messe München www.productronica.com

Kontakt: Biuro Targów Monachijskich w Polsce tel. +48 22 620 44 15 info@targiwmonachium.pl

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

17


operatorów telewizji kablowej i Internetu – Charter Communications za mniej więcej 90 mld dol. przejął spółkę Time Warner Cable i mniejszego operatora kablowego Bright House. Na początku czerwca z kolei Intel dokonał największego przejęcia w  swojej historii. Za 16,7  mld dol. irma kupiła Alterę –  dostawcę układów programowalnych. Transakcja ta  ma doprowadzić do  powstania nowej klasy produktów, o poprawionej wydajności, tańszych i bardziej wszechstronnych w wykorzystaniu. Analitycy łączą boom na  rynku fuzji z  najniższymi w  historii stopami procentowymi w USA (0-0,25%). To powoduje, że koncerny mogą sprzedawać obligacje na niski procent, a właśnie one są jednym z  najważniejszych źródeł inansowania przejęć oprócz akcji i  własnych rezerw inansowych. Średnia rentowność obligacji emitowanych przez amerykańskie korporacje wynosi teraz około 3% i jest o połowę niższa niż w 2007 r. Tymczasem amerykański bank centralny Fed za kilka miesięcy prawdopodobnie podniesie stopy procentowe, bo gospodarka jest rozkręcona. Wzrosną więc koszty obsługi długów korporacji, co może część z nich wpędzić w poważne tarapaty.

REKLAMA

Apple współpracuje z TSMC przy produkcji czujników biometrycznych

18 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Apple zlecił TSMC produkcję skanerów odcisków palców, jakie będą montowane w telefonie następnej generacji, poinformował serwis Digitimes. TSMC ma je wytwarzać w  technologii procesu 65  nm, w  fabrykach operujących na  płytkach 300-milimetrowych. W  obecnych smartfonach Apple’a  stosowane są  czujniki biometryczne wytwarzanie przez TSMC w technologii 0,18 mm, na płytkach o średnicy 200 mm. Dotykowy skaner odcisków palców Apple po raz pierwszy wbudował w  iPhone’a  serii pięć, a  wcześniej w  czujniki takie były montowane w laptopach innych dostawców, np. IBM i Toshiby. Sprzedaż iPhone’a  szóstej generacji pod koniec poprzedniego i w obecnym roku była i jest bardzo wysoka i z pewnością przyczyniła się do  tego nienaganna jakość obecnej w  urządzeniach technologii. Między innymi, dzięki podzespołom wytwarzanym dla Apple’a także TSMC zdołało poprawić sprzedaż w I kw. br., powiększając ją o 21,7% w skali roku.


Nowe podejście do automatyzacji testów wykorzystujace ˛ modułowy sprz˛et i otwarte oprogramowanie

Sposób, w jaki wykorzystujemy sprz˛et, ciagle ˛ si˛e zmienia. Cały świat coraz bardziej opiera si˛e na oprogramowaniu, a wraz z tym rosna˛ nasze możliwości. Zmiany te dotycza˛ też oprzyrzadowania ˛ testowego. W odróżnieniu od urzadzeń ˛ tradycyjnych, produkty tworzace ˛ platform˛e NI zapewniaja˛ dost˛ep do najnowszych zdobyczy technologii, jednocześnie optymalizujac ˛ zarówno koszt, jak i czas potrzebny do zaprojektowania oraz wdrożenia systemu.

>> Wiecej ˛ informacji ni.com/automated-test-platform Zapraszamy do rejestracji na BEZPŁATNE NIDays 2015: poland.ni.com/nidays

800 889 897 National Instruments Poland Sp. z o.o. ■ ul. Grójecka 5, 02-025 Warszawa ■ Tel: +48 22 328 90 10 • Fax: +48 22 331 96 40 ■ Strona internetowa: http://poland.ni.com Adres e-mail: ni.poland@ni.com ■ KRS 86646, Sad Rejonowy dla m. st. Warszawy, XIII Wydział Gospodarczy Krajowego Rejestru Sadowego Kapitał zakładowy: 100,000.00 PLN ■ NIP 527-22-69-641 © 2015 National Instruments Corporation. Wszystkie prawa zastrzezone. LabVIEW, National Instruments, NI, ni.com to zarejestrowane znaki handlowe National Instruments. Inne wymienione produkty i firmy to zarejestrowane znaki handlowe i nazwy firmowe odpowiednich firm. 22669 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Dzi˛eki intuicyjnemu, graficznemu podejściu do programowania, LabVIEW pozwalana na skrócenie czasu przygotowania testu. Przyst˛epna obsługa zadań sprz˛etowych dodatkowo ułatwia integracj˛e systemów.


NIE PRZEOCZ

RST-10000 – najmocniejszy zasilacz w ofercie Mean Well Firma Elmark wprowadziła do  oferty nową serię zasilaczy RST irmy Meanwell. Reprezentują ją dwa modele zasilane trój-fazowo RST-5000 i  RST10000 o mocy 5000W i 10000W. Dzięki możliwości pracy równoległej sumaryczną moc można zwiększyć aż  do  20000W. Zasilacze RST dedykowane są  do  stosowania w  telekomunikacji, automatyce, laserach tnących oraz wszędzie tam gdzie zapotrzebowanie na moc jest bardzo duże. Więcej informacji: http://goo.gl/QPSWUa

Konwertery Modbus z optoizolacją Firma Advantech rozszerzyła swoją ofertę bram modbusowych z  serii EKI-1200 o  kolejne modele przeznaczone do  pracy w  niskiej temperaturze. Tak jak w  poprzednich wersjach moduły mogą konwertować starsze jak i  nowsze rozwiązania Modbus RTU/TCP/ASCII zarówno w  trybie Slave jak i Master. Więcej informacji: http://goo.gl/MoFnzL

Firma Riverdi wykonała kolejne narzędzie deweloperskie – Ardurino Riverdi TFT shield

Conrad Business Supplies wprowadza do oferty produkty Phoenix Contact Znany dystrybutor katalogowy dodaje do  oferty nowe urządzenia zasilające i  sterujące dla sektora przemysłowego. Aktualnie oferta Conrada obejmuje ponad 17 tys. produktów Phoenix Contact. Więcej informacji: http://goo.gl/pozphE

20 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Ardurino Riverdi TFT shield to nakładka, która zwiększa możliwości Arduino. Nakładka ta  umożliwia wygodne podłączenie wyświetlaczy TFT Riverdi z  kontrolerami z  rodzin FT80x i  FT81x do Ardurino. Płytka zawiera: – złącze zewnętrznego głośnika, wyprowadzenie złącz wyświetlacza, slot na karty MicroSD, zworkę wyboru, napięcia podświetlenia, przycisk Reset. Riverdi shield ma także przejściówkę umożliwiającą przyłączenie FPC do listwy kołkowej o rastrze 2,54 mm. Więcej informacji: http://goo.gl/jfJKdF

LabView 2015 Firma National Instruments zapowiedziała premierę oprogramowania LabVIEW 2015. Jego najnowsza wersja została uzupełniona o poprawki zwiększające szybkość, skróty oraz narzędzia do debugowania


Info • Szybsze debugowanie kodu z użyciem automatycznie skalowalnego okna próbnika, umożliwiającego podgląd tablic i  ciągów znaków; łatwa dokumentacja kodu poprzez umieszczanie hiperłączy i hashtagów w komentarzach. • Szybsze osadzanie kodu poprzez przeniesienie kompilacji FPGA do  chmury LabVIEW FPGA Compile Cloud dostępnej w  ramach pakietu SSP (Standard Service Program). • Funkcjonalność LabVIEW 2015 jest rozszerzona o zawartość LabVIEW Tools Network. Więcej informacji: http://goo.gl/nGJYCK, http://goo.gl/Sgltxj

Pierwszy, przemysłowy monitor dotykowy irmy Riverdi

umożliwiające łatwiejszą interakcję z tworzonymi systemami. Dzięki uproszczeniu i standaryzacji procesów inżynierskich dla całej platformy oraz możliwościom ponownego użycia kodu, interakcja ze sprzętem jest w LabVIEW 2015 jeszcze prostsza niż dotychczas: • Do  8x szybsze otwieranie dużych bibliotek oraz możliwość wyłączenia komunikatów informujących o braku wymaganych podprogramów i innych modułów. • Oszczędność czasu przy wykonywaniu częstych czynności programistycznych dzięki siedmiu nowym wtyczkom dostępnym pod prawym przyciskiem myszy; możliwość tworzenia własnych dodatków w celu zwiększenia produktywności.

Firma DFI, producent różnorodnych produktów przeznaczonych do zastosowań przemysłowych, wprowadził do oferty swój pierwszy przemysłowy monitor dotykowy. ModelLM101 został wyposażony w  ekran LCD o  przekątnej 10,1” i  jasności 300 cd/ m2. Zastosowane interfejsy to  DVI i  VGA, a ponadto w urządzeniu wbudowano 1 port USB 2.0 i 1 gniazdo mini USB, jako 5-woltowe złącze zasilania. Cechą specjalną omawianego modelu jest 5 programowalnych przycisków funkcyjnych, umieszczonych na  panelu frontowym. Warto dodać, że  front monitora ma certyikat IP54, dzięki czemu jest dobrze chroniony przed kurzem i wodą. Więcej informacji: http://goo.gl/qQArfr

REKLAMA

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

21


NIE PRZEOCZ

Adam Grehl, wiceprezydent Wrocławia podczas uroczystego otwarcia

Otwarcie nowej siedziby Phoenix Contact we Wrocławiu

Goście podczas zwiedzania magazynu

Phoenix Contact otworzył swoją polską siedzibę we Wrocławiu, przy ul. Bierutowskiej na terenie Wrocławskiego Parku Biznesu 3. Spółka zrewitalizowała, odnowiła i  przystosowała do  własnych potrzeb stare zakłady Rheinmetall-Borsig, wybudowane w  czasie II Wojny Światowej. – „Nie ograniczamy się tylko do  oferty elektronicznych i  automatycznych produktów czy systemów. Klientom proponujemy także uczestnictwo w  szkoleniach, warsztatach i  seminariach organizowanych przez Phoenix Contact i  prowadzonych przez inżynierów z  wieloletnim doświadczeniem. W  naszej nowej wrocławskiej siedzibie przygotowaliśmy m.in. nowoczesne, multimedialne sale

szkoleniowe” – tłumaczy Dorota Czech –  Dyrektor ds. Współpracy z Klientami w Polsce. Do obsługi realizacji zamówień płynących z całej Polski, na potrzeby spółki został wybudowany we Wrocławiu również magazyn o powierzchni ponad 900 m2. W  uroczystym otwarciu nowej siedziby Phoenix Contact, brał m.in. udział Adam Grehl, wiceprezydent Wrocławia, dyrektor zarządzający Phoenix Contact Frank Stuhrenberg oraz szerokie grono klientów I partnerów biznesowych. Goście mieli okazję zapoznać się z wystawą przedstawiającą historię obiektu, zwiedzić nowoczesny magazyn a także część szkoleniową. Dużym zainteresowaniem cieszył się samochód elektryczny oraz stacja ładowania pojazdów usytuowana

REKLAMA

22 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


Info

Konferencja prasowa od lewej Dyrektor zarządzający Phoenix Contact Frank Stuhrenberg, Dyrektor Sprzedaży na Europę Andreas Rossa i Prezes Phoenix Contact sp. z o.o. Maciej Merek

Samochód elektryczny wraz ze stacją ładowania

bezpośrednio przed siedzibą. Przedstawiciele prasy mieli okazje zapoznać się z najnowszymi danymi spółki a także planami na przyszłość podczas zorganizowanej konferencji prasowej. Część wieczorna miała miejsce w pięknej scenerii zamku Topacz gdzie Grupa MoCarta przygotowała wspaniały koncert. Całą uroczystość zakończył pokaz fajerwerków – „We własnych fabrykach produkujemy śruby, części metalowe i z tworzyw sztucznych oraz, przy własnym montażu składamy moduły, które stanowią podstawę wysokiej jakości produktów. Daje to nam gospodarczą i technologiczną niezależność i przestrzeń, w której ramach możemy wdrażać nowoczesne rozwiązania” – opowiada prezes spółki Maciej Merek.

Phoenix Contact jest w Polsce największym producentem złączy do  szaf sterowniczych oraz kabli sygnałowych i  elektrycznych. Wytwarza łącznie ponad 20 tys. różnych artykułów. Phoenix Contact w  ramach projektu EduNet współpracuje z  wieloma uczelniami na całym świecie. W Polsce działają cztery labolatoria EduNet: na  Politechnice Wrocławskiej, AGH w  Krakowie, Politechnice Poznańskiej oraz na Wojskowej Akademii Technicznej w Warszawie. Ponadto, spółka organizuje konkurs New Xplore Award, dedykowany uczniom techników i studentom kierunków związanych z automatyką i  robotyką. Ideą konkursu jest bliższe zaznajomienie studentów z technologiami Phoenix Contact, umożliwienie im wykonania praktycznego projektu oraz pogłębienie wiedzy i rozwój umiejętności.

REKLAMA

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

23


PROJEKTY − −

− − −

− nstracja działania −

nstracja działania

Współpracuje z dowolną aparaturą do

Współpracuje z dowolną do zdalnego − aparaturą Wykorzystanie dwóchsterowania. kanałów do ste

Wykorzystanie dwóch− kanałów do sterowania ruchem dwóch ser

Postęp technologiczny sprawił, iż wynalazki, Postęp technologiczny sprawił, iż wynalazki, które kilkadziesiąt lat temu normalnym użytkowaniu Na przykład, w normalnym użytkowaniu Na przykład, w napięciu oglądało się f Prz Przykładem może być system lotnictwie wojskowym już w latach siedemd lotnictwie wojskowym już w latach siedemdziesiątych. Systemy HMD umożliwiają pilotowi podgląd informacji umożliwiają pilotowi podgląd informacji na ekranach wbudowanych też możliwość s też możliwość s do śmigłowca Apache za pomocą ruchów gło do śmigłowca Apache za pomocą ruchów głowy pilota, gdzie cel jest nam uwagi od pilotażu maszyny. Kolejnym etapem uwagi od pilotażu maszyny. Kolejnym etapem rozwoju tej technologii jest możemy obserwować poprzez specjalne możemy obserwować poprzez specjalne Użytkownicy tych urządzeń wiedzą, iż efekt Użytkownicy tych urządzeń wiedzą, iż efekt uzyskiwany dzięki wykor który mierzy kąty pochylenia w danej pozyc który mierzy kąty pochylenia w danej pozycji. Niewielu z nich jednak miniaturyzacji i stosunkowo niskiej cenie tech miniaturyzacji i stosunkowo niskiej cenie technologii MEMS możemy zb

FPV Headtracker inercyjny sterownik ruchu (2)

Rekomendacje: przyda ale się równie nie ty Rekomendacje: urządzenie przyda się nieurządzenie tylko do modelu,

Postęp technologiczny sprawił, iż wynalazki, które kilkadziesiąt lat Filtr Kalmana monitoring obiektu, robotyka, urządzenia dlai i Wyobraźmy sobie, że stoimy na ulicy i trzytemu budziły podziw i  zachwyt, dziś są  w  normalnym użytkowaniu. monitoring obiektu, robotyka, urządzenia dla osób niepełnosprawnych mamy w  ręku GPS. Mimo że  nasza pozycja Na  przykład, w  napięciu oglądało się ilmy, w  których pokazywane były zaawansowane „zachodnie technologie”. Przykładem może być jest niezmienna, to odczyty w każdej sekundzie są  różne, ale mieszczą się w  pewnym system Helmet-Mounted Display stosowany w  lotnictwie wojskowym obszarze (np. w  okręgu o  promieniu 5  mejuż w  latach siedemdziesiątych. Systemy HMDWyobraźmy szybko stały sięże stoimy Wyobraźmy że stoimy na GPS. ulicy Mimo i trzym sobie, na ulicy sobie, i trzymamy w odczyty ręku trów). Chcielibyśmy „uśrednić” standardem i  nadal umożliwiają pilotowi podglądanie informacji z GPS w taki sposób, aby uzyskać właściwą odczyty w każdej sekundziesięsąwróżne, ale ob m każdej są różne, ale mieszczą pewnym pozycję. Aby tego dokonać musimy na podna  ekranach wbudowanych w  hełm lotniczy, a odczyty oprócz w tego dająsekundzie wskazańChcielibyśmy z GPS przewidzieć faktyczne też możliwość sterowania wybranymi funkcjami metrów). maszyny.Chcielibyśmy Znamy stawie uśrednić odczyty z GPS uśrednić w taki sposób, aby z metrów). odczyty miejsce postoju. Dokładnie na  tym polega systemy sterowania karabinem podczepionym do  śmigłowca Apache dokonać musimy na podstawie wskazań z –  GPS przewidziećwskazań faktyczne mie dokonać musimy naestymowaniu podstawie z GPS iltrowanie Kalmana na  najza pomocą ruchów głowy pilota, gdzie cel jest namierzany bez bardziej prawdopodobnego (z  minimalną na estymowaniu najbardziej ( na prawdopodobnego estymowaniu najba konieczności odrywania uwagi od  pilotażu maszyny. Kolejnym wariancją) stanu układu (wyniku pomiaru). etapem rozwoju tej technologii jest świat „Artiicial Reality” (AR), Szukamy estymacji pozycji � k ji pozycji � � w chwili wc który możemy obserwować poprzez specjalne okulary, jak np. na podstawie pomiarów z GPS (Zk), poprzedKalmana �� �−1 oraz współczynnika niej estymacji � orazwspółczynnika współczynnika wzmoc � wzmocnienia estymacji Oculus Rift, lub na  ekranach telefonów komórkowych. Użytkownicy �−1 oraz wzmocnieniamodelu Kalmanamatematycznego Kk. tych urządzeń wiedzą, iż  efekt jest uzyskiwany dzięki wykorzystaniu Rozpoczynamy od zdefiniowania naszego ukła Rozpoczynamy zdefiniowania Rozpoczynamy od od zdei niowania mode-modelu mat pozycjonowania i  żyroskopu, który mierzy kąty pochylenia w  danej lu matematycznego naszego układu za popozycji. Niewielu z  nich jednak wie jak to  w  istocie działa. Dzięki mocą następujących równań: miniaturyzacji i  stosunkowo niskiej cenie technologii MEMS możemy �� = � ⋅ ��−1 + � ⋅ �� + ��−1 zbudować podobny system we własnym warsztacie. �� = � ⋅ �� + �� Rekomendacje: urządzenie przyda się nie tylko do  modelu, ale również do  innych zastosowań, takich jak: monitoring obiektu, �� ∼ �(0, �� ) robotyka, urządzenia dla osób niepełnosprawnych i  innych. �� ∼ �(0, �� )

Gdzie:

24 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

oznacza stan układu w chwili , kt


FPV Headtracker – inercyjny sterownik ruchu

Podstawowe informacje: � ⋅ ��−1 � ⋅ �� ��−1 gdzie:�� Macierz wyjścia H również przyjmuje • Demonstracja działania: � � ⋅ � � • xk oznacza stan wartość 1, ponieważ interpretacja pomiarów układu�w chwili � � k, który 1 http://goo.gl/Wqhefq (czasy kanału PPM) jest jednakowa w modejest zależny� od poprzednio zarejestrowa�� • Bazuje na  akcelerometrze LM9S oraz � ∼� lu matematycznym, jak i w obserwacjach. u oraz na  mikrokontrolerze 8-bitowym (ATme�� nego � ⋅stanu, ��−1�sygnału ⋅ �sterującego � ����−1 k � ∼�� ga8 lub ATmega168). szumu przetwarzania wk. − �� � � ⋅ �� �(systemu), • Współpracuje z  dowolną aparaturą � • A jest �macierzą przejść �� = − do  zdalnego sterowania. �� (wejścia). �� + � � ∼ � sterowania • B jest � macierzą • Wykorzystanie dwóch kanałów do  ste− −�równanie który jest zależny od zarejestrowanego stanu, sygnału ∼ �oznacza �� stan układu Drugie� przedstawia obserwo-w chwili rowania ruchem dwóch serwomecha�� �, = �� − � poprzednio � + �� (�� − � �) nizmów. w chwili wany , który jest�z�kzależny poprzednio zarejestrowanego stanu, sygnału ⋅ �od � ⋅ � � − pomiar jako� zależność pomiędzy fak�−1 � �−1 �� = (1 − �� )�� sterującego • Wariant podstawowy jest przeznaczony tycznym stanem systemu i wektorem �� xk � ⋅ �� �szu� do  modeli samolotów. mu pomiarowego vk. Teoretycznie, Pozostały nam tylko 2 zmienne skalarne faktyczny Pozostały nam tylko 2 zmienne skalarne pomocą możemy w ła � jest macierzą przejść (systemu), Dodatkowe materiały stanu, na  FTP: sygnału � ∼ � � − − oznacza stan układu w chwili , który jest zależny od poprzednio zarejestrowanego � � Q i  R, za których pomocą możemy w  łatwy stan systemu xk nie jest znany w  żadnym ftp://ep.com.pl, user: 87550, pass: rxoaagj8 (systemu), �jedynie �� parametrów nasz filtr będzie w mniej � ∼ � obserwować −Możemy jestgomacierzą sterowania (wejścia). sposób sterować „siłą” iltrowania. Poprzez momencie. sterującego • wzory płytek PCB odpowiednie dobranie parametrów nasz poprzez pomiary zk, które są niedokładne. Projekty pokrewne na  FTP: ania (wejścia). reagował na szumy Implementacja powyższego filtru zawiera się w ki jakopomiarowe. zależność pomiędzy faktycznym stanem systemu (wymienione artykuły są  w  całości dostępne na  FTP) jest macierzą przejść (systemu), iltr będzie w  mniejszym lub większym H− jest� macierzą wyjścia, wykorzystyAVT-5491 Czujnik inercyjny LSM9DS0 oraz jako pomiędzy faktycznym stanem systemu − zależność oznacza stan układu w chwili , który jest zależny od poprzednio zarejestrowanego stanu, sygnału stopniu reagował na  szumy pomiarowe. waną w  wypadku zamiany (mapowania) nie jest znany żadnym momencie jego w zastosowanie praktyczne − jest macierzą sterowania (wejścia). Implementacja powyższego iltru zawiera się wyliczanych wartości na  ich odpowiedni(EP 2/2015) nie jest znany w żadnym momencie sterującego AVT-1806 Detektor drgań (EP 7/2014) ożemy go jedynie obserwować pomiarkodu: , które są niedokładne. w kilku liniach ki w  układzie obserwowanym (realnym). poprzez jako zależność pomiędzy faktycznym systemusystem AVT-5393 ASOstanem –  Automatyczny double iltrKalmana(double zk, Przyjmuje się, że  szumy wk i  vk są  o  rozkłaać poprzez pomiar , które są niedokładne. ostrzegania (EP 4/2013) − � jest macierzą przejść (systemu), jest macierzą wyjścia, w double ypadku*Pk) zamiany (mapowania) wyliczanych wartości na ich nie jest znany w żadnym momencie AVT-5387 gLogger –  3-osiowy rejestrator double *xk, { dzie normalnym, o  kowariancjach Qwykorzystywaną i  Rk. k przyśpieszenia (EP 3/2013) orzystywanąZakładamy w ypadku zamiany (mapowania) wyliczanych wartości na ich //double xk_1 = *xk; także liniową zależność pojawia− w obserwować jest macierzą sterowania (wejścia). akcelerometr odpowiedniki układzie obserwowanym (realnym). Przyjmuje się, że szumyAVT-5223 są Kieszonkowy o rozkładzie normalnym ożemy go jedynie poprzez pomiar , które są niedokładne. //double Pk_1 = *Pk; jących się po sobie pomiarów. Algorytm ite(EP 2/2010) wowanym (realnym). Przyjmuje się, że szumy są o rozkładzie normalnym 132sobie Miernik przyśpieszenia zależność Projekt pomiędzy faktycznym stanem //Faza predykcji racyjnie wylicza estymatę stanuwykorzystywaną w chwilina . Zakładamy także zależność pojawiających się po pomiarów. jest macierzą wyjścia, w liniową ypadku zamianyjako (mapowania) wyliczanych wartości naAlgorytm ichsystemu (EP 8/2005) //*Xk pomiarów. = Xk_1; Algorytm w chwili k-1, co jest cha* Uwaga: damy takżepodstawie liniową wartości zależność pojawiających się po sobie nie jest znany w wersjach: żadnym momencie AVT mogą występować w  następujących iteracyjnie estymatę stanu w (realnym). chwili�na wartości w chwiliZestawy AVT xxxx UK o to  rozkładzie zaprogramowany układ. normalnym Tylko i  wyłącznie. Bez elementów odpowiedniki wwylicza układzie obserwowanym Przyjmuje się, że szumy są *Pk = *Pk podstawie + (double)Q; rakterystyczne dla modelu dyskretnego. dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie anu w chwili�na podstawie wartości w chwili wyraźnie zaznaczono), bez elementów dodatkowych. //Faza korekcji Filtrowanie Kalmana dwuetaożemy goprzebiega jedynie obserwować poprzez pomiar pojawiających , które są niedokładne. A+ płytka drukowana i  zaprogramowany układ (czyli połączenie . Zakładamy takżedouble liniową zależność się AVT poxxxxsobie pomiarów. Algorytm wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymienioKk = *Pk / (*Pk + powo. Pierwszym etapem jest faza predykcji ny w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw elementy wluto- na ich jestKalmana macierzą wyjścia, w wartości ypadku zamiany wyliczanychB, czyli wartości (double)R); (aktualizacji czasu): wane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono Filtrowanie przebiega iteracyjnie wylicza estymatę stanu wdwykorzystywaną chwili�na podstawie w chwili (mapowania) wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf *xk = *xk + Kk*(zk - *xk); xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link odpowiedniki (realnym). Przyjmuje się, żeAVTszumy są o rozkładzie normalnym �� − � �−1 +w�układzie ⋅ �� obserwowanym umieszczony w  opisie kitu) � =�⋅� *Pk = (1 - Kk)*(*Pk); Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl //Zwrot nowej estymaty ��− = � ⋅ ��−1 ⋅ �� + �� . Zakładamy także liniową zależność pojawiających się po sobie pomiarów. Algorytm return *xk; pierwszym równaniu �� � wartości w chwili wylicza estymatę stanu w chwili�na podstawie −Wpierwszym } równaniu Teoria Kalmana ma znacznie większe za�� W  � iteracyjnie ⋅ �� �−1 � ⋅przewidywana �� przewi � ata stanu � � �. W Sposób wykorzystania w  programie jest jest −estymata stanu � stosowania, począwszy od powyższych, poW  drugim jest dokładność jest macierzą estymacji kowariancji błędów . Możemy to także �kowariancja ⋅ ��−1 ⋅ � zmian � �� �estymaty P , następujący: przez systemy telemetryczne w  Nascar czy obliczana k jest macierzą estymacji kowariancji błędów to także estymata =. Możemy iltrKalmana(pomiar, Formule  1, po  systemy sterowania w  przeczyli rozumieć „dokładność” estymaty Qk jest macierzą wygląda następująco: �� � &xk, &Pk); strzeni kosmicznej. W  Internecie dostępestymacji kowariancji błędów Pk. Możemy wygląda następująco: � �� − ⋅� ���− ⋅�−1 � ⋅ �� �do przewiFunkcja zwraca nową estymatę stanu. nych jest wiele.publikacji to także rozumieć, zaufanie jest macierzą estymacji kowariancji błędów Możemyopisujących to także różne � jako�dokładność � �� −Kolejny etap ���korekcji − – faza W  parametrach przekazujemy aktualny pozastosowania iltru. Wśród nich jest także dzianej estymaty. � ⋅ � ⋅ � � � ⋅ � � ⋅ � � � � � ��−1 � rozumieć wyglądaktóre następująco: rozwiązanie, możemy wykorzystać – wygląda następująco: −miar, poprzednią estymatę xk i  kowariancję − − � � � � ⋅ � �� � �� − następujący: � �Pk. Jako że x i Pk biorą udział w następują� − � � � � � zamiast iltru komplementarnego. Opisane � k ��−⋅ � ��⋅ � ⋅ �− �� − zostało na stronach [1] oraz [2] w wymieniocych po sobie iteracjach, ich wartości muszą � � � �� =�� jest macierzą estymacji nych kowariancji błędów . Możemy to także �� ⋅ ��− ⋅ ��� + ��dokładność poniżej w  źródłach. Zaproponowane być zapamiętywane w  każdym wywołaniu astępnie na jego podstawie dokonuje się aktualizacji − − − z  powodzeniem zastosowałem stąd zwraca przekazanie przez wskaźnik. Funkcja nową estymatę stanu.algorytmy W parametrach przekazujemy aktualny pom �� � = �� rozumieć �� ⋅ (�� − �� �� � ) funkcji, wygląda następująco: � + astępnie na jego dokonuje się aktualizacji także w  projekcie headtrackera z  równie Liczby Q i  Rzostaną (kowariancje szumów) zosta− podstawie estymaty stanu i kowariancji predykcji, które uż �� = (1 − � ⋅ �� ) ⋅ ��− Jako że udział w następujących pow sobie dobrym rezultatem. Zawierają one sobie iteracja ły kowariancję zdeiniowano poza. ciałem funkcji. Tym biorą �� ⋅ ��� redykcji, które zostaną uż � wydaje się bardzo zawiła, jednakuk,staje � element sterowania układem W  tej fazieobliczane obliczane jest wzmocnienie sposobem za pomocą niewielkiego kodu i 2 którysię − � W tej fazie jest wzmocnienie astępnie na jego podstawie dokonuje się aktualizacji �� ⋅ �� ⋅ �� �� zapamiętywane w każdym wywołaniu funkcji, stąd przekazanie przezeliwskaźnik. Kalmana Kk. Następnie, na  jego zmiennych dostajemy dyspozycji podstawie bardzo zawiła, jednakdo  staje się jedno minując ruchy liniowe, wpływa na  lepszą − − ją w praktycznych − wydaje się zrozumiała, gdy wykorzystamy doświadczeniach. estymaty stanu i kowariancji predykcji, które zostaną uż − � � � � ⋅ � � � � � z  narzędzi zdefiniowan do  „wygładzania”poza stabilność Można sposobem to  porównać dokonuje się aktualizacji stanu � najlepszych � � � � �estymaty szumów) zostały ciałemheatrackera. funkcji. Tym y ją w praktycznych doświadczeniach. przebiegów linowych. Z  powoi  kowariancji predykcji, zostaną użyte − � ⋅jeśli � ⋅ ��−wszelkich �� które � chcemy ypadku, filtrować pojedynczą skalarną wartość pomiaru (np. czas kanału PPM) wydaje się bardzo zawiła,REKLAMA jednak staje się ych narzędzi do wygładza dzeniem możemy nim zastąpić powszechnie w kolejnej iteracji algorytmu. Rk jest to estyi chcemy filtrować pojedynczą skalarną wartość pomiaru (np. czas kanału PPM) astępnie na jego podstawie dokonuje się aktualizacji wzory ulegają znacznemu uproszczeniu. Macierz przejść staje się liczbą 1, pomijamy sterowanie układem, a używaną metodę uśredniania wyników. macja kowariancji szumów wzmocnienia zrozumiała, gdy wykorzystamy ją w praktycznych doświadczeniach. linowych. Z powodzeniem możemy nim zastąpić powszechnie używaną metodę uś Wracając do headtrackera – poprzez doK. Na  pierwszy rzut staje oka teoria wydaje1,się szczeniu. Macierz przejść się liczbą pomijamy sterowanie układem, a estymaty stanu i kowariancji predykcji, które zostaną uż wartość pomiaru (np. czas kanału PPM) . Faza predykcji przybiera postać: chcemy filtrować pojedynczą skalarną datkowe iltrowanie czasów kanałówpoprzez PPM, dodatkowe filtrowanie czasów kanałów PPM, bardzo zawiła, jednakypadku, staje sięjeśli zrozumiaWracając do headtrackera zybiera postać: − uzyskujemy efekt płynnych ruchów kamery, ła, gdy wykorzystamy ją w  praktycznych wydaje sięsterowanie bardzo zawiła, jednak się �� ulegają �� znacznemu wzory uproszczeniu. Macierz przejść staje liczbą pomijamy układem, a staje �−1 � co ma się wpływ na1,dłuższą żywotność serwomechanizmów oraz moż co  ma wpływ na  ery, dłuższą żywotność serwodoświadczeniach. − � ��−1 � gdy wykorzystamy ją w praktycznych doświadczeniach. zrozumiała, mechanizmów oraz może się także okazać W �najprostszym chcemy postać: . Faza wypadku, predykcjijeśli przybiera przykładową ę szybko przydatne przy1,ilmowaniu z  powietrza. iltrować pojedynczą skalarną wartość pomiaównież przyjmuje wartość ponieważ interpretacja pomiarów (czasy kanału PPM) jest PPM) ypadku, jeśli chcemy filtrować pojedynczą skalarną wartość pomiaru (np. czas kanału −Macierz wyjścia �ru � (np. ��kanału Na rysunku 14 pokazanoCzerwona przykładowąlinia serię to efekt działania filtru Ka wzory ulegają znacz�−1PPM)interpretacja � czas z (czasy akcelerometru. zyjmuje wartość 1, ponieważ pomiarów kanału PPM) jest − szybko zmieniających się pomiarów z akceuproszczeniu. Macierz przejść A  staje �nemu � � wzory ulegają znacznemu uproszczeniu. Macierz przejść staje się liczbą 1, pomijamy sterowanie układem, a �−1 � średniąCzerwona ruchomą rzędu 20.działania Jak widać czasy reakcji na zmiany pomiarów, a tak lerometru. linia to efekt się liczbą 1, pomijamy sterowanie układem, Macierz wyjścia ównież przyjmuje wartość 1, ponieważ pomiarów (czasy kanału PPM) jest . Faza predykcji postać: iltru Kalmana, natomiast interpretacja kolorem czarnym a zatem uk=0. Faza predykcji przybiera postać: przybiera pokazano średnią ruchomą rzędu 20. Jak wi�� − � �−1 � =� daćTeoria czasy reakcji na zmiany pomiarów, a tak- większe zastosowania, począwszy od powy Kalmana ma znacznie ��− = ��−1 + � że estymaty stanów zostały poprawione.

Macierz wyjścia H ównież przyjmuje wartość 1, ponieważ interpretacja pomiarów (czasy kanału PPM) jest ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

25


PROJEKTY

Rysunek 14. Filtrowanie odczytów z akcelerometru, Kalman vs Średnia do  przedstawionego wyżej iltrowania niskich prędkości obrotowych.

Generowanie ramki PPM Zgodnie z opisem ramki PPM przedstawionym na początku, zakodowane kanały posiadają określoną długość, która pośrednio reprezentuje kąt obrotu kamery w  samolocie. Pozostaje zamienić kąty gyroAngleX oraz gyroAngleZ na czasy wyrażone w ms: int calcLenPPM(double gyroAngle, double scale) { //Nowy czas kanału PPM int len = CH_LEN_ CNT + (gyroAngle*scale/ SERVO_MAX_ANLGE)*CH_LEN_CHG; //Sprawdzenie marginesów

if (len < CH_LEN_MIN) return CH_LEN_MIN; else if (len > CH_LEN_MAX) return CH_LEN_MAX; else return len; } gdzie: CH_LEN_CNT – czas kanału dla pozycji centralnej (1200µs), CH_LEN_CHG – maksymalny czas zmiany długości kanału (512µs), CH_LEN_MIN –  minimalny czas kanału (1200µs-512µs), CH_LEN_MAX – maksymalny czas kanału (1200µs+512µs), gyroAngle – kąt gyroAngleX i gyroAngleZ, SERVO_MAX_ANLGE – dopuszczalny kąt wychylenia serwomechanizmu w stopniach (90°),

Rysunek 15. Algorytm wyznaczania kątów obrotu i sygnału PPM

26 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

scale – współczynnik służący do  sterowania czułością headtrackera, im wyższy tym szybszy obrót headtrackera. Mamy już wszystkie informacje niezbędne do  wygenerowania ramki PPM, która zostanie wysłana do  nadajnika RC. Generowanie odbywa się w  przerwaniu 16-bitowego timera, dzięki czemu jest niezakłócona przebiegiem pętli głównej: ISR(TIMER1_COMPA_vect) { static uint16_t ch_len_isr[CH_ NUMBER]; //Czasy poszczególnych kanałów PPM w przerwaniu static uint8_t ch_num=0; // Numer aktualnie generowanego kanału w przerwaniu static uint8_t ch_dspl=0; //0 - generacja przerwy pomiędzy kanałami; 1 - generacja kanału


FPV Headtracker – inercyjny sterownik ruchu static uint16_t ch_ill=0; // Czas pozostały do wypełnienia PPM_LEN if (ch_dspl==0) { OCR1A = PPM_DELAY; if (ch_num==0) { ch_ill = 0; //Przepisanie nowych długości kanałów for (uint8_t i=0; i<CH_NUMBER; i++) ch_len_isr[i]=ch_len[i]; } ch_dspl = 1; TCCR1A |= (1<<COM1A0); // Następny stan wysoki ch_ill += PPM_DELAY; } else { if (ch_num==CH_NUMBER) { //Wypełnienie OCR1A = PPM_LEN-ch_ill; ch_num = 0; } else { //Jeden z kanałów OCR1A = ch_len_isr[ch_num++]; Wykaz elementów Wariant do montażu przewlekanego Rezystory: R1, R6: 240 V R2: 390 V R5: 10 kV Kondensatory: C1: 220 mF/16 V C2: 47 mF/16 V C3: 10 mF/16 V C4: 100 mF/16 V C5…C7: 100 nF C8: 22 mF/16 V Półprzewodniki: IC1: moduł z LSM9DS0 (SparkFun) IC2: LM317T lub odpowiednik IC3: LM7805TV lub odpowiednik IC4: ATmega8 LED: dioda LED 3 mm Inne: Podstawka 28pin Przycisk Odpowiednie listwy i gniazda goldpin Wariant do montażu SMD Rezystory: (SMD 0603) R1…R4: 4,7 kV R5: 10 kV R6: 470 V Kondensatory: (SMD 0603) C1, C2: 100 nF C3, C4: 22 pF Półprzewodniki: IC1: moduł z LSM9DS0 (SparkFun) IC2: ATmega168 TQFP LED: dioda LED SMD T_SDA, T_SCL: BSS138 Inne: 16MHz: rezonator kwarcowy 16 MHz Odpowiednie listwy i gniazda goldpin

ch_ill += ch_len_isr[ch_num]; } ch_dspl = 0; TCCR1A &= ~(1<<COM1A0); //Następny stan niski } } Sygnał PPM generowany jest Rysunek 16. Schemat montażowy HT w wersji na  pinie procesora OC1A (PB1), przewlekanej który zmienia stan na  przeciwny zaczyna przesyłać poprawne dane z  peww  każdym przerwaniu. W  kodzie przerwanym opóźnieniem. Z tego powodu reset ponia sterujemy rejestrem OCR1A, do którego łożenia centralnego wykonywany jest w pętli zapisujemy czas opóźnienia do  kolejnego przez określony czas regulowany za pomocą przerwania. Zmiana stanu odbywa się poprogramowego timera. przez sterowanie bitem COM1A0 rejestru if (BTN_PRESSED) TCCR1A, dzięki któremu możliwe jest genetimer1=RESET_TIME; rowanie ramki o  polaryzacji dodatniej lub (...) ujemnej (PPM Positive lub PPM Negative). if (timer1>0) { Za pomocą dodatkowej zmiennej rozpoznaaccXStart = accAngleX; jemy czy w  aktualnym przerwaniu będzie magZStart = magAngleZ; generowany kanał lub pauza. W  każdym gyroAngleX=gyroAngleZ = 0.0; przerwaniu zapamiętujemy czasy poszczenewLenX = newLenZ = CH_LEN_CNT; gólnych kanałów po  to, by w  ostatnim } przebiegu odpowiednio wysterować czas Po  naciśnięciu przycisku zerowanie jest wypełnienia ramki (sygnał synchronizawielokrotnie powtarzany przez czas 200 ms. cji). Natomiast czasy kanałów są ustawiane Okres ten jest wystarczająco długi, aby odw  kodzie w  ściśle określonym momencie, czytać i obliczyć kąty z IMU i jednocześnie dzięki czemu nie mogą ulec zmianie w trakwystarczająco krótki, aby nie wprowadzać cie generowania ramki PPM. Aby dodatkoopóźnień. Wielokrotne powtarzanie wstępwo upewnić się, że sygnał wysyłany do nanych obliczeń jest także istotne ze  względu dajnika jest spójny w  każdym momencie, na konieczność „wyżarzenia” iltru Kalmana, zmiany długości kanałów dokonujemy który w początkowych iteracjach zwraca warw bloku atomowym: tości o niskiej jakości. Należy zwrócić uwaATOMIC_BLOCK(ATOMIC_FORCEON) { gę, iż w procedurze resetującej nie następuje ch_len[CH_ROLL] = newLenX; zerowanie zmiennych iltru Kalmana, dzięki ch_len[CH_YAW] = newLenZ; czemu przejście od  położenia poprzedniego } do centralnego zostanie wykonane w sposób gdzie: płynny. Operacja sygnalizowana jest przez ch_len[] –  tabela zawierająca długości zapalenie diody. kanałów, CH_ROLL – numer kanału dla obrotu wokół osi X, Montaż CH_YAW – numer kanału dla obrotu woPrototyp wykonano w  wersji SMD i  z  przekół osi Z, znaczeniem dla mniej wprawnych osób newLen* – nowe czasy kanałów. do  montażu przewlekanego. Dodatkowo, Podsumowując, algorytm obliczania tę  druga płytkę można wykonać samodzieli  iltrowania kątów został przedstawiony nie, w  warunkach domowych, na  podstana rysunku 15. wie dokumentacji zawartej w  materiałach dodatkowych. Schemat ideowy wariantu THT opublikowano w  poprzednim odcinku Zerowanie położenia centralnego (rys. 4), natomiast na rysunku 16 pokazano Po  uruchomieniu headtrackera następuje jest schemat montażowy. Wśród użytych zapamiętanie aktualnych kątów kierunku elementów znajdują się stabilizatory 7805T i przechyłu IMU, względem których wykonyi 317T, kilka elementów iltrujących napięcie, wane są obroty kamery. Dzięki temu w sytuaprzycisk, dioda świecąca, podstawka CPU cji awaryjnej, na przykład po samoczynnym (28  pinów) i  gniazda goldpin. Zastosowano resecie procesora przez watchdog lub chwipodciągnięcie wyprowadzenia reset poprzez lowej utracie zasilania, kamera zawsze zostarezystor 10 kV zapobiegające przypadkowenie ustawiona w pozycji startowej (zostanie mu restartowaniu się urządzenia. Zarówno skierowana na dziób samolotu). Pozycja starwejścia, jak i  wyjścia układów scalonych towa zapisana w zmiennych programowych są iltrowane za pomocą par kondensatorów, może zostać w  każdej chwili skorygowana elektrolitycznego i  ceramicznego, co  chroni przez naciśnięcie przycisku. Okazuje się jedprzed skokami napięcia spowodowanymi nak, że  po  włączeniu zasilania, układ IMU ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

27


PROJEKTY

DRDYG

4 3 2 1 2 1 2 1 3 2 1 2 1

L_SCL L_SDA

pracą CPU, zapewnia Konwertery poziomów logicznych I2C linii SDA i SCL Złącze IMU LSM9DS0 stabilną pracę układu, 3,3V 5V 3,3V 5V 3,3V a także przyczynia się do  ograniczenia emisji ciepła przez stabilizatory. Przycisk jest wykoR4 R1 R3 R2 rzystywany na  dwa spo4,7k 4,7k 4,7k 4,7k soby. Poprzez krótkie naH_SDA H_SCL L_SDA L_SCL ciśnięcie jest zapamiętyBSS138 BSS138 wane aktualne położenie T_SDA T_SCL IMU jako pozycja „centralna”, względem której uC Atmega168 obliczane są  względne RESET ATMEGA168 kąty przechyłu i  kierunR5 29 23 ku. Dłuższe przytrzymaPC6(/RESET) PC0(ADC0) 24 10k DRDYG PC1(ADC1) nie przycisku uruchamia 25 21 PC2(ADC2) GND 26 20 PC3(ADC3) AREF procedurę kalibrowania 27 18 H_SDA PC4(ADC4/SDA) AVCC C4 28 żyroskopu. H_SCL PC5(ADC5/SCL) 22pF 19 ADC6 Headtracker może 22 7 ADC7 PB6(XTAL1/TOSC1) CLK być zasilany napięciem 16MHz 30 8 RX PD0(RXD) PB7(XTAL2/TOSC2) 31 z zakresu 7…25 V, a więc TX PD1(TXD) 5V C3 32 PD2(INT0) do  jego pracy wystarczy 22pF 1 3 BTN PD3(INT1) GND 2 5 bateria LiPo 2S lub 3S. PD4(XCK/T0) GND R6 9 4 PD5(T1) VCC 5V Na  rysunku  17 poka10 6 470 PD6(AIN0) VCC LED 11 Biały PD7(AIN1) zano schemat ideowy HT 12 w  wersji SMD, a  na  ryPB0(ICP) 13 PPM PB1(OC1A) sunku  18 jego schemat C1 C2 14 5V PB2(SS/OC1B) 15 MOSI PB3(MOSI/OC2) montażowy. Różnice 100nF 100nF 16 MISO PB4(MISO) 17 pomiędzy wersją THT SCK PB5(SCK) a SMD to między innymi zastosowanie Atmega168 w  obudowie TQFP, zewnętrznego rezonatora Złącze RX/TX Złącze BTN Złącze 5V, 3,3V Wyjście PPM 16  MHz oraz dwukrotne zmniejszenie wymiarów. 3,3V W  projekcie SMD zało6 5 RX 4 3 4 3 żeniem było rozdzielenie TX BTN 2 1 2 1 PPM funkcji zasilacza od  moJP2 JP1 dułu, stąd do  uruchomienia i poprawnej pracy 5V jest niezbędny zasilacz +5 V i +3,3 V. W tej wer- Rysunek 17. Schemat ideowy HT w wersji SMD z mikrokontrolerem ATmega168 sji konwerter poziomów logicznych umieszczono na  płytce. Zmianie algorytmem eliminującym drgania akceleuległ także przycisk – na płytce w wersji SMD rometru przy niskich prędkościach obrotoutworzono piny umożliwiające dołączenie wych żyroskopu uzyskujemy stabilny i  wyzewnętrznego przycisku, który może zostać godny w  użytkowaniu system. Pozostaje umieszczony na w innym dogodnym miejscu. zająć miejsce na  „fotelu pilota” i  podziwiać W  obu wersjach użyto tego samego widoki. układu IMU –  modułu z  LSM9DS0 irmy Arkadiusz Witczak SparkFun. Płytka zawiera także pady niearwi@go2.pl zbędne do  przyłączenia programatora ISP oraz kondensatory iltrujące zasilanie. Bibliograia: https://goo.gl/ChsnSG Rysunek 18. Schemat montażowy HT https://goo.gl/avDkl6 w wersji SMD z mikrokontrolerem ATmePodsumowanie http://goo.gl/tfvgqc ga168 Headtracker poprawnie działa już przy taktohttp://goo.gl/p6GwqA waniu zegarem 8 MHz. Wersja oparta na mikalibracji poprzez terminal PC, natomiast http://goo.gl/E3mbGO krokontrolerze Atmega8 jest w  pełni funktaktowanie 16 MHz sprawia, iż system dziahttp://goo.gl/sJXwCX cjonalna, jednak ze względu na ograniczoną ła z większą dokładnością. Płynność ruchów http://goo.gl/zBkmqU wielkość pamięć Flash trudno jest oprograkamery jest zapewniona dzięki wykorzystahttp://goo.gl/OHYNPm mować dodatkową funkcjonalność. To  ograniu lirtowania Kalmana. Naturalny dryf żyhttp://goo.gl/1ESj4T niczenie staje się nieaktualne przy zastosoroskopowy został zniwelowany prostym, ale http://goo.gl/GC2VdD waniu Atmega168 wykorzystanego w wersji bardzo skutecznym iltrowaniem komplehttp://goo.gl/NVX50M SMD. W tej wersji program może zostać rozmentarnym. W  połączeniu z  dodatkowym http://goo.gl/LYUDiO budowany o  możliwość półautomatycznej

28 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


PROJEKTY

Skaner DMX

Na łamach EP opublikowano opisy kilkunastu urządzeń z  interfejsem DMX. Były to  głównie odbiorniki i  nadajniki, a  także urządzenia umożliwiające rozbudowę sieci DMX. Przy uruchamianiu prototypów lub dużych instalacji na  pewno przyda się skaner DMX, który może oddać nieocenione usługi. Rekomendacje: skaner przyda się osobom zajmującym się urządzeniami technicznymi na  scenie, techniczną oprawą imprez itp. Skaner umożliwia obrazowanie ramek DMX bez ich rejestrowania lub ich zapamiętywanie dla potrzeb analizy tego, co  dzieje się w  sieci urządzeń. Obrazowane są  tryby on/ off-line sygnału DMX, a także on/off-line połączenia z USB, które jest wykrywane automatycznie. Skaner może być zasilany z sieci 230  V  AC lub portu USB. Zapewniona jest izolacja galwaniczna skanera od komputera.

Budowa Schemat ideowy skanera zamieszczono na rysunku 1. W jego budowie można wyróżnić kilka bloków: zasilacz, konwerter DMXUART, konwerter USB-UART, mikrokontroler sterujący oraz elementy opcjonalne, takie jak wyświetlacz graiczny i klawiatura. Obniżenie napięcia z  230  V  AC do  12  V  AC realizuje transformator TR1 (TZ4VA/2×12V) dostarczający dwóch napięć 12 V. Następnie to napięcie jest prostowane przez diody D1 i D2. Po stabilizacji za pomocą U1 (wraz z elementami towarzyszącymi) obwody skanera są zasilane napięciem +5 V. Skaner można również zasilić z  portu USB komputera-hosta. W  takiej sytuacji izolację galwaniczną zapewnia przetwornica DC/DC (układ U4). Jeśli izolacja nie jest

potrzebna, można w miejsce U4 wlutować zwory zwierające wyprowadzenia 1-3 i  2-4. Wtedy nie trzeba montować diody zabezpieczającej U1 przez prądem wstecznym, taka sytuacja raczej nie zdarzy się w trakcie normalnej eksploatacji. Złącze J8 jest przewidziane do  dalszej rozbudowy. Będzie tam przyłączany akumulator zasilający skaner w  trybie autonomicznym. Konwerter DMX-UART zrealizowano wykonano w  oparciu o  układ U3, kondensator C1 oraz rezystory R3, R4. Układ U3 to popularny konwerter poziomu TTL na transmisję różnicową RS485. Nie zaleca się stosowania w jego miejsce układu 75176, jednak można używać innych zamienników, np. AD485. Konwerter USB-UART to  typowa aplikacja FT232RL oraz izolacja galwaniczna za pomocą układów U6 i  U7. Ze  względu na  stosunkowo dużą prędkość transmisji (aktualnie 38400 w  nowszych wersjach oprogramowania 500 kb/s), nie wolno stosować typowych transoptorów, które są  zbyt wolne. Konieczne jest zastosowanie transoptorów telekomunikacyjnych z bramkami Schmitta. Złącze JP4 jest przeznaczone do  dołączenia klawiatury. Złącze J6 oraz rezystory

AVT 5512

W ofercie AVT* AVT-5512 A AVT-5512 UK Podstawowe informacje: • Wbudowany zasilacz – zasilanie 230 V AC. • Możliwość rezygnacji z  zasilacza i  zasilania z  USB. • Izolacja galwaniczna pomiędzy interfejsem DMX a  komputerem PC. • Rejestrowanie oraz obrazowanie ramek DMX. • Tryby on-line/off-line sygnału DMX. • Automatyczne wykrywanie i  obrazowanie połączeń z  USB. Dodatkowe materiały na  FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8 • wzory płytek PCB Projekty pokrewne na  FTP: (wymienione artykuły są  w  całości dostępne na  FTP)

AVT-5506 Lampa RGB z interfejsem DMX (EP 6/2015) AVT-5481 Merger DMX (EP 12/2014) AVT-5474 Demultiplexer DMX (EP 11/2014) AVT-5473 Multiplexer DMX (EP 11/2014) AVT-5462 DMX-owy sterownik serwomechanizmów (EP 8/2014) AVT-5456 Miniaturowa konsola z  interfejsem DMX (EP 7/2014) AVT-5435 Sterownik DMX-RGB (EP 2/2014) AVT-5429 Transmisja DMX512 przez sieć Ethernet (EP 1/2014) AVT-5400 DMX Dimmer & Relay (EP 6/2013) AVT-1632 Tester serwomechanizmów modelarskich (EP 8/2011) AVT-1605 Dwustanowy sterownik serwomechanizmu (EP 2/2011) AVT-5181 Sześciokanałowy dimmer z  DMX512 (EP 4/2009) AVT-5129 Cyfrowy sterownik DMX512 (EP 4/2008) AVT-930 Konwerter USB-DMX512 (EP 5-6/2006) --12-kanałowy regulator mocy sterowany sygnałem DMX512 (EP 4-5/2003)

* Uwaga: Zestawy AVT mogą występować w następujących wersjach: AVT xxxx UK to  zaprogramowany układ. Tylko i  wyłącznie. Bez elementów dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie wyraźnie zaznaczono), bez elementów dodatkowych. AVT xxxx A+ płytka drukowana i  zaprogramowany układ (czyli połączenie wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymieniony w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw B, czyli elementy wlutowane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf AVT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link umieszczony w  opisie kitu) Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

29


1 2 3

+5

D– D+

D– D+

1

2

1 2 3 4

+5

GNDu

+5

OUT–

3

4

8 7 6 5

GND

GND

Term

C11 100nF

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

26

28

27

19

17 16 15

+5

TEST

XTOUT

XTIN

RESET

GNDu

3v3out USBDM USBDP

CBUS0 CBUS1 CBUS2 CBUS3 CBUS4

1 5

GND

Vin

+12

23 22 13 14 12

3 11 2 9 10 6

+5

3

D7 Data

R11 470R

470R

R12

GND

R14 4k7

R15 10k

Vout

GND

C7 100nF

D5 SSA24

VCC

GND

TXD RXD RTS CTS DTR DSR DCD RI

1 C3 100nF

U5 FT232RL

GND

2 1

J8

C2 470uF/16V

1 /RXDdmx 2 3 4

GND

GNDu

GNDu

C13 100nF

VCC

RO RE DE DI

2 1

MAX485 J4

Vcc B A GND

U3

100nF

C1

D2 SM4007

C14 100nF

120R

R4

GND

GNDu

OUT+

NME0505S

IN–

IN+

U4

GNDu

R10 120R

C12 470uF/16V

DMXout

1 2 3

DMXin J7

J2

VCC

VCC

6

7

9

10

TR1 TZ4VA/2x12V

5

R3 120R

GND

160mA

F1

J3 USBB-BV

GNDu

C10 100nF

GNDu

XRL (1) XRL (2) XRL (3)

XRL (1) XRL (2) XRL (3)

In 230V

1 2 3

1

U1 7805 GND 2

J1

+12

AGND 25

5

+ 7..12V – 20 Vcc 4 VccIO 7 GND 18 GND 21 GND

ELEKTRONIKA PRAKTYCZNA 9/2015 +5

VCC

R7

LCD

1 3 5 7 9 11 13 15 17 19

J6

470R

+5 D8 USB

R8 1k

RW D0 D2 D4 D6 CS1 /RstLcd

GND

C4 100nF

GNDu

+5

+5

5

8 7 6

3

2

3

2

5

4

1 2

U8 23k256

GND

CS SO

3V3

D9

8 7 6 5

GND

/T XDusb

/RXDusb

Vcc HOLD SCK SI

470R

R9 1k

/Rst

470R

R18

470R

R17

470R

R16

C15 10uF

D6 DMX

D4 ST

16Mhz

Q1

/CS10 SCK11 MOSI12 MISO13 14 15 16 17

61 60 59 58 TCK57 TMS56 TDO55 TDI54

62

VCC

GND

+12

C9 22pF

23

24

/Rst20

25 26 /RXDu sb27 TXDu sb28 29 30 31 32

GND

10k

R5

R2 470R

VCC

C8 22pF

MOSI

SCK

VCC

GND

VCC

VCC

GND

R6 470R

VCC

GND

C6 100nF

2 4 6 8 10

GND

VCC

JTAG

1 3 5 7 9

J5

VCC

R13

TDI

TCK TDO TMS

GND

VCC

GND

VCC

GND

8 7 6

D3 Power R1 470R

VCC

GND

/CS MISO

6N137

U7

6N137

U6

GND

DI E D1 D3 D5 D7 CS2

VCC

C5 470uF/16V

2 4 6 8 10 12 14 16 18 20

VCC

64

/RXDusb K1 K3 K5

X2

X1

Panel

1 3 5 7 9 11 13

JP4

GND

2 4 6 8 10 12 14

/T XDusb K2 K4 K6

U2 AtMega128-16AU

ALE/PG2 PEN PG0/WR PG1/RD PG3/TOSC1 PG4/TOSC2

A8/PC0 A9/PC1 A10/PC2 A11/PC3 A12/PC4 A13/PC5 A14/PC6 A15/PC7

PD0/INT0/SCL PD1/INT0/SDA PD2/INT2/RXD1 PD3/INT3/RXD1 PD4/IC1 PD5/XCK1 PD6/T1 PD7/T2 RESET

AD0/PA0 AD1/PA1 AD2/PA2 AD3/PA3 AD4/PA4 AD5/PA5 AD6/PA6 AD7/PA7

PE0/PD1/RXD0 PE1/PD0/TXD0 PE2/AC+/XCK0 PE3/AC–/OC3A PE4/INT4/OC3B PE5/INT5/OC3C PE6/INT6/T3 PE7/INT7/IC3 PB0/SS PB1/SCK PB2/MOSI PB3/MISO PB4/OC0 PB5/OC1A PB6/OC1B PB7/OC2/OC1C

PF0/ADC0 PF1/ADC1 PF2/ADC2 PF3/ADC3 PF4/ADC4 PF5/ADC5 PF6/ADC6 PF7/ADC7

Aref

VCC

21 VCC 52 VCC AGND

Rysunek 1. Schemat ideowy skanera DMX 63

30 AVCC

D1 SM4007

/RstLcd CS2 CS1 E RW DI

35 36 37 38 39 40 41 42

VCC

GND

+12

D0 D1 D2 D3 D4 D5 D6 D7

51 50 49 48 47 46 45 44

43 1 33 34 19 18

K1 K2 K3 K4 K5 K6

/RXDdmx

2 3 4 5 6 7 8 9

PROJEKTY


Skaner DMX R15, R14 i kondensator C7 umożliwiają dołączenie wyświetlacza LCD. Kolejność wyprowadzeń jest zgodna z  wyświetlaczem typu EAP128-6N2LED wyposażonym w  sterownik KS108B.

Montaż i uruchomienie Schemat montażowy Skanera DMX pokazano na  rysunku 2. Montaż rozpoczynamy od  elementów biernych SMD, można też wlutować układ U5. W  kolejnym kroku

Rysunek 2. Schemat montażowy skanera DMX

montujemy elementy przewlekane bierne, zaczynając od najniższych. Później wlutowujemy układy U1 i U3 (pod U3 warto zastosować podstawkę precyzyjną).

Wykaz elementów Wariant do montażu przewlekanego Rezystory: (SMD 1206) R8, R9: 1 kV R14: 4,7 kV R5: 10 kV R3, R4, R10: 120 V R1, R2, R6, R7, R11…R13: 470 V R15: 10 kV (pot. montażowy) Kondensatory: (SMD 1206) C1, C3, C4, C6, C7, C10, C11, C13, C14: 100 nF C2, C5, C12: 470 mF/16 V (elektrolit.) C8, C9: 22 pF Półprzewodniki: U1: 7805 U2: ATmega128-16AU U3: MAX485 (zalecana podstawka precyzyjna) U4: NME0505S przetwornica DC/DC 5 V 100 mA U5: FT232RL U7, U8: 6N137 D1, D2: SM4007 D3, D8: dioda LED zielona, 5 mm D4: dioda LED czerwona, 5 mm D5: SSA24 D6, D7: dioda LED żółta, 5 mm Pozostałe: Q1: kwarc 16 MHz TR1: TZ4VA/2×12 V (transformator sieciowy 2×12 V/4 W) F1: bezpiecznik 160 mA 5×20 z gniazdem J1: TB-5.0-PP-2P, TB-5.0-PIN złącze TB z listwą kołkową J2: NS25-W3 (gniazdo NS25 3 pin), NS25-G3 (wtyk NS25 3 pin), NS25-T (3 szt. terminali do wtyku NS25), XLR-3G-C (gniazdo XRL-3 do obudowy) J3: USBB-BV (gniazdo USB kątowe) J4: NS25-W2K (gniazdo NS25 2 pin kątowe) JP4: ZL231-14PG (gniazdo IDC męskie, proste) J5: ZL231-10PG (gniazdo IDC męskie, proste) J6: ZL231-20PG (gniazdo IDC męskie, proste) J7: NS25-W3 (gniazdo NS25 3 pin), NS25-G3 (wtyk NS25 3 pin), NS25-T (3 szt. terminali do wtyku NS25), XLR-3W (wtyk XRL-3 do obudowy) J8: NS25-W2 (gniazdo NS25 2 pin) REKLAMA

Rysunek 3. Programowanie układu FTDI – ikona lupy

Rysunek 4. Programowanie układu FTDI – liczba układów do zaprogramowania ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

31


PROJEKTY Tabela 1. Funkcje sygnalizacyjne diod LED Nazwa/oznaczenie USB/D8

Stan Zgaszona Świeci Zgaszona Miga co 1 sekundę

DATA/D7 Miga szybko/świeci ST/D4

Zgaszona Świeci Zgaszona Miga

DMX/D6

Power/D3

Zgaszona Świeci

Opis Brak połączenia USB Skaner podłączony do USB Brak transmisji USB Nieuruchomiony program SkanerDMX na  komputerze lub brak transmisji DMX Uruchomiony program na  komputerze i  trwa transmisja DMX Wykryto transmisję DMX Brak transmisji DMX Brak transmisji DMX Wykryto transmisję DMX, dioda zmienia stan po  każdej odebranej ramce Brak zasilania skanera Zasilanie skanera włączone

Po zasilaniu urządzenia sprawdzamy pracę U1. Teraz można umieścić U3 w podstawce i  wlutować U2 i  U5. Jeśli przy zasilaniu z  USB nie jest potrzebna izolacja galwaniczna, można znacznie obniżyć koszty skanera (przetwornica jest stosunkowo droga). W takiej sytuacji nie wlutowujemy przetwornicy U4, a  jedynie zwieramy piny 1-3

Tabela 2. Polecenia realizowane przez skaner (Uwaga! Pominięto znaki CR-LF) Funkcja Zwraca nazwę urządzenia, przykład: :t – wysłanie pytania przez host (komputer) : SkanerDMX –  odpowiedź skanera Wersja urządzenia, przykład: :v –  wysłanie pytania przez host :1.0 –  odpowiedź skanera Zatrzymanie skanowania, przykład: :e –  wysłanie pytania przez host : OK –  odpowiedź skanera Start skanowania, przykład: :e –  wysłanie pytania przez host : OK –  odpowiedź skanera

Rozkaz t

v

e

s

Tabela 3. Komunikaty przesyłane przez skaner Komenda RST START STOP IDLE WAIT

ERR OK

Funkcja Nastąpił restart skanera Początek bufora danych DMX Koniec bufora DMX Brak komunikacji DMX, komenda wysyłana co 1 sekundę Skanowanie zatrzymane przez użytkownika komendą „e” (komenda wysyłana co  1 sekundę) Nierozpoznana komenda Potwierdzenie wykonania komendy

i 2-4. Podobnie, jeżeli niepotrzebne będzie zasilanie sieciowe, nie montuje się elementów zasilacza. Pozostało, na  kawałku przewodu, zamontować złącza XRL, z  drugiej strony obudowy NS25-03W. Układ U8 (RAM z  interfejsem SPI o  pojemności 32 kB) jest przeznaczony do  zapamiętywania danych w  trybie autonomicznym. Aktualnie oprogramowanie nie wykorzystuje jej i nie ma potrzeby, aby wlutowywać ją i elementy z nią współpracujące (R16…R18, C15, D9). Skaner przeznaczony jest do  umieszczenia w  obudowie KM-50, ale zanim to  zrobimy urządzenie należy uruchomić. Uruchomienie rozpoczynamy od  podłączenia skanera do portu USB. Następnie instalujemy wymagane sterowniki CDM v2.12.00 WHQL Certiied ze strony www.ftdichip.com. Po  poprawnym zainstalowaniu sterowników uruchamiamy program MProg 3.5, który także jest dostępny na serwerze irmy FTDI. Jeśli do komputera są dołączone inne urządzenia z układami FTDI, to je odłączamy. Klikamy na  ikonkę lupy (rysunek  3). W  oknie powinna wyświetlić się liczba układów do zaprogramowania (rysunek 4). Następnie wybieramy ikonkę otwarcia pliku, po czym wskazujemy plik Skaner_DMX. ept znajdujący się w podkatalogu Templates. Klikając ikonkę błyskawicy programujemy układ, co  trwa około 2  sekundy. Od  teraz dioda D8 świeci, gdy urządzenie komunikuje się z komputerem, natomiast D7 informuje o  transmisji danych. Funkcje sygnalizacyjne diod LED opisano w tabeli 1. Ze  skanerem komunikujemy się przez wirtualny COM lub sterowniki D2XX. Parametry transmisji: 38400, 8, n, 1. Ramka

Tabela 4. Budowa ramki DMX. Uwaga! W nawiasach kwadratowych podano dane hex. Len informuje o  długości pola danych, CRC to  „zwykłe” ADD obejmujące LenH, LenL i  pola danych Znacznik początku bufora DMX :START [CR] [LF]

32 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Długość danych DMX starszy bajt [LenH]

Długość Dane danych DMX DMX młodszy bajt [LenL] [dd]

ELEKTRONIKA PRAKTYCZNA 9/2015

Dane DMX

Dane DMX

[dd]

CRC danych DMX starszy bajt [CrcH]

CRC Znacznik danych końca DMX bufora młodszy DMX bajt [CrcL] :STOP [CR] [LF]

Rysunek 5. Przykładowy „dialog” ze skanerem

Rysunek 6. Okno programu DMX Skaner v1 danych składa się ze  znaku startu „:”, komendy i  znaku końca ramki CR-LF (0x0D, 0x0A) np. „:vCRLF”. Przykładowy „dialog” ze  skanerem pokazano na  rysunku  5. Polecenia realizowane przez skaner wymieniono w tabeli 2. Skaner przesyła za pomocą interfejsu USB krótkie komunikaty tekstowe,

Rysunek 7. Komunikat wyświetlany po wykryciu dołączonego Skanera DMX

Rysunek 8. Komunikat wyświetlany w wypadku braku dołączonego Skanera DMX

Rysunek 9. Zmiana statusu po odebraniu transmisji DMX

Rysunek 10. Okno zawartości bufora DMX

Rysunek 11. Wyświetlanie danych w formacie szesnastkowym


Skaner DMX

Rysunek 12. Dane przesyłane przez Mini Konsolę DMX które mogą być interpretowane przez oprogramowanie lub obsługę – wymieniono je w tabeli 3. W  tabeli  4 umieszczono opis ramki DMX, natomiast niżej przykładową ramkę odebraną za pomocą Mini Konsoli (AVT5456) i programu terminala: : S T A R T CR LF LEN SC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 3a 53 54 41 52 54 0d 0a 00 19 00 fe 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23 24 LF

CRC :

S

T

O

P

CR

00 00 01 17 3a 53 54 4f 50 0d 0a Obsługa skanera z poziomu terminala nie jest wygodna, dlatego powstał program DMX Skaner v1, którego okno pokazano na  rysunku  6. Program automatycznie wykrywa skaner dołączony do  komputera. Na  górnej belce znajduje się szereg informacji. Od  lewej: informacja o  statusie układu FTDI i  dwa przyciski, z  których lewy umożliwia „zamrożenie” ekranu, a prawy zmienia sposób wyświetlania informacji z  bufora. Nad przyciskami znajduje się informacja o stanie komunikacji DMX w  skanerze. Po  prawej stronie belki umieszczono informację o  autorach i dystrybutorze. Jeśli program wykryje skaner, zobaczymy komunikat jak na rysunku 7, natomiast w przeciwnym wypadku jak

na rysunku  8. Jeśli skaner jest połączony z  komputerem, ale nie ma transmisji DMX, w  statusie skanera ukazuje się napis IDLE (rys.  6). Gdy pojawi się transmisja DMX, status zmieni się na RUN (rysunek 9). Dane napływające z  DMX, są  wyświetlanie bez przerwy (tryb on-line). Naciśnięcie STOP zatrzyma proces wyświetlania, a  etykieta na  przycisku zmieni się na  START (tyb off-line). Naciśnięcie START spowoduje powrót do trybu on-line. Dane z bufora DMX są wyświetlane dziesiętnie, co  widać w  kolumnach 1, 2, 3 okna bufora pokazanego na rysunku  10. Po  naciśnięciu przycisku HEX, dane będą wyświetlane w formacie szesnastkowym, jak na rysunku 11, a etykieta przycisku zmieni się na DEC. Program skanera pokazuje ile danych ile zostało przesłanych, pozostałe pola są  puste. W  wypadku Mini  Konsoli DMX, będą to 24 bajty, co widać na rysunku 12.

Sławomir Skrzyński, EP Zygmunt Dziewoński

REKLAMA

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

33


PROJEKTY

AVT 5522

Zegar ustawiany za pomocą GPS Zwykle zadaniem zegara jest jak najdokładniejsze wskazywanie bieżącej godziny. Najlepiej, aby – używając terminu zegarmistrzowskiego –  chód zegara był jak najdokładniejszy, ponieważ to  zegar ma nam wskazywać godzinę, a  nie my jemu poprzez korygowanie wskazań. Ale nawet, jeśli zegar jest dokładny, to  i  tak wymaga korekty ze  względu na  czas letni, zimowy, a  gdy ma wbudowany kalendarz, to  należy uwzględnić lata przestępne. Popularną metodą synchronizacji czasu jest zastosowanie odbiornika DCF77. Jest to  system sprawdzony, ale podatny na  zakłócenia, a  ponadto widok odbiornika DCF z  dużą anteną ferrytową przywodzi na  myśl stary radioodbiornik i  współcześnie raczej zniechęca. Opisywany zegar bazuje na  rozwiązaniu dużo bardziej nowoczesnym, jako wzorzec czasu wykorzystując system GPS, dzięki czemu można powiedzieć, że  ma „kosmiczną dokładność”. Rekomendacje: doskonały zegar do  zainstalowania w  różnych miejscach publicznych: poczekalniach dworcowych, na  budynkach użyteczności publicznej, szkołach itp. Podstawowym założeniem dla tego projektu było wyeliminowanie potrzeby ingerencji użytkownika, dlatego współpracując z odbiornikiem GPS zegar automatycznie ustawia się. Większość takich odbiorników wysyła dane w formacie NMEA0183. Ten standard opisuje kilkadziesiąt ramek zawierających wiele parametrów. Oprogramowanie zegara wyszukuje ramkę w  formacie RMC (recommended minimum gps data) przesyłaną przez większość odbiorników. Przykładowe ramka ma postać: $GPRMC,220516,A,5133.82,N,00042.2 4,W,173.8,231.8,130694,004.2,W*70

34 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Opis jej parametrów składowych umieszczono w tabeli 1. Dla potrzeb zegara najistotniejszy jest aktualny czas UTC. Oznacza on  wzorcowy czas uniwersalny ustalany na podstawie TAI (International Atomic Time) uwzględniający nieregularność ruchu obrotowego Ziemi i  koordynowany względem czasu słonecznego. Należy jednak zwrócić uwagę, że  jest to czas właściwy dla południka zerowego, za który przyjęto południk przechodzący przez obserwatorium astronomiczne w miejscowości Greenwich, a więc jest czasem strefowym

W ofercie AVT* AVT-5522/1 A, B, C, UK AVT-5522/2 A, B, C, UK Podstawowe informacje: • Wyświetlanie czasu (godziny, minuty i sekundy) oraz daty. • Możliwość ustawiania czasu za pomocą odbiornika GPS. • Automatyczne zmiana na  czas letni i  zimowy. • Bateryjne podtrzymanie zasilania. • Wyświetlanie godzin i  minut za pomocą wyświetlacza LED 2 cm, sekund –  LED 1,4  cm. • Możliwość współpracy z  wyświetlaczem LED o  wysokości cyfr 5,6 cm. • Opcjonalne wyświetlanie temperatury. • Wymiary: sterownik 101  mm×67mm×25  mm; płytka wyświetlacza podstawowego 125  mm×36  mm×15  mm; płytka wyświetlacza „dużego” 306 mm×70 mm×20 mm. • Zasilanie: 12 V DC/0,2 A. Dodatkowe materiały na  FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8 • wzory płytek PCB Projekty pokrewne na  FTP: (wymienione artykuły są  w  całości dostępne na  FTP)

AVT-5377 Mega stoper – wielofunkcyjny licznik, nie tylko czasu (EP 12/2012) AVT-513 Zegar ze  stuletnim kalendarzem i  termometrem (EP 10-11/2011) AVT-5281 „Inteligentny” zegar z  wyświetlaczem LED (EP 3/2011) AVT-5273 Zegar cyfrowy z  analogowym sekundnikiem (EP 1/2011) AVT-2849 Tiny clock EdW 1/2008) AVT-2721 Mikroprocesorowy zegar (EdW 4/2004) AVT-2632 Gigantyczny zegar (EdW 5/2002) AVT-5022 Programowany zegar z  DCF77 (EP 6-7/2001) AVT-5002 Zegar cyfrowy z  wyświetlaczem analogowym (EP 3/2001) AVT-1832 Zegar z  budzikiem (---)

* Uwaga: Zestawy AVT mogą występować w następujących wersjach: AVT xxxx UK to  zaprogramowany układ. Tylko i  wyłącznie. Bez elementów dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie wyraźnie zaznaczono), bez elementów dodatkowych. AVT xxxx A+ płytka drukowana i  zaprogramowany układ (czyli połączenie wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymieniony w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw B, czyli elementy wlutowane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf AVT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link umieszczony w  opisie kitu) Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl


Zegar ustawiany za pomocą GPS

G GND

SIG

C15 100nF

R25 1R

R26 100R

SIG

S

V

G R8 3k R9 100R

VDD

100/25

ULN2803

SB SA SC SD SE SF 14 15 16 17 18 19

SH SG

SIG A1 SEC A2 A3 A4 A5 A6

TERM SW2 SW1 FOTO SDA SCL

R27 3k

VDD SD GND 2 VCC 4 MOSI 6 GND CON1 CON_ISP

7

8

10

GND

9

1

22 21 20

RST

VDD

B1 CR2032V

D2 1N5817

+

C3 22pF

SE SF RST

VCC

GND

1 MISO 3 SCK 5 RES

PB0(ICP) PB1(OC1A) PB2(SS/OC1B) PB3(MOSI/OC2) PB4(MISO) PB5(SCK)

PD0(RXD) PD1(TXD) PD2(INT0) PD3(INT1) PD4(XCK/T0) PD5(T1) PD6(AIN0) PD7(AIN1) PB7(XTAL2/TOSC2)

PB6(XTAL1/TOSC1)

AGND AREF AVCC

PC0(ADC0) PC1(ADC1) PC2(ADC2) PC3(ADC3) PC4(ADC4/SDA) PC5(ADC5/SCL)

IC1 MEGA8-P

GND C4 22pF

4

NC 3

PC6(/RESET)

5 SDA

6 SCL

7 MPF X2 2

1 X1 32768Hz

C1 100nF C2 100/25

+

X1

IC2 MCP7940

VCC

8

23 24 25 26 27 28

D1 1N5817

R1 3k

2 3 4 5 6 11 12 13

GND

SDA

SCL

SEC

R2 3k

R3 3k

VDD

VDD

GND

DISP

VA

18 17 16 15 14 13 12 11 10 O1 O2 O3 O4 O5 O6 O7 O8 CD+ 1 2 3 4 5 6 7 8 9 SA SB SC SD SE SF SG SH

VA

GND

I1 I2 I3 I4 I5 I6 I7 I8 GND

IC3

UDN2981A

O1 O2 O3 O4 O5 O6 O7 O8 GND I1 I2 I3 I4 I5 I6 I7 I8 VS

IC4

1 2 3 4 5 6 7 8 9

GND

VDD C10

100nF

100/25 GND

100nF

A6 A5 A4 A3 A2 A1

R10 3k

OA OB OC OD OE OF OG OH R17 R18 R19 R20 R21 R22 R23 R24 8 × 100R

100/25

100/25

18 17 16 15 14 13 12 11 10

GND

C8 + C9

6 × 1R

C12 +

R16 R15 R14 R13 R12 R11

100nF

C13 +

VA

C7

O6 O5 O4 O3 O2 O1

GND

IC5 7805 OUT IN

GND

C11

100nF

VA

FOTO SW1 SW2 GND GND GND O1 O2 O3 O4 O5 O6 OH OG OF OE OD OC OB OA

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

IC6 7809 OUT IN

+

VDD

TERM

R6 3k SW2

C14 100nF R7 1R

R5 3k SW1

SW

TERM

T

V

G

S2

S1

+

C5

100/25

D3

1N5817

C6

na letni, czyli o godzinę do przodu, odbywa się w  ostatnią niedzielę marca, natomiast zmiana na  czas zimowy, czyli o  godzinę do tylu, odbywa się w ostatnią niedzielę października. Nie są to stale daty, ponieważ każdego roku wypadają w inny dzień miesiąca. Informację o obowiązywaniu czasu letniego/ zimowego można uzyskać analizując datę,

Aby zegar wskazywał właściwy czas należy ustawić obwiązującą strefę czasową. Polska znajduje się w streie czasowej UTC+1, czyli czas jest przesunięty o godzinę do przodu względem czasu uniwersalnego i  takie jest domyślne ustawienie zegara. Czas uniwersalny nie uwzględnia zmian czasu na  zimowy i  letni. Zmiana czasu

POW

+

pierwszej strefy czasowej, od którego liczy się czas pozostałych stref. Czas właściwy dla danego obszaru zależy od  długości geograicznej, a dokładniej od państwa, na którego terenie się znajdujemy. Na  przykład, Hiszpania i  Francja znajdują się w  streie UTC+1, choć położone są  na  długości geograicznej odpowiadających streie UTC+0.

Rysunek 1. Schemat ideowy płytki głównej zegara ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

35


3 4

S2

FOTO

A B C D E F G

1 2

1 14 12 10 4 2 13 9

FOTO

A B C D E DP1 F G H

3 DP2 5 ( ) 11 ( ) 16

A B C D E F G

1 14 12 10 4 2 13 9

A B C D E DP1 F G H

A B C D E F G

3 DP2 5 ( ) 11 ( ) 16

1 14 12 10 4 2 13 9

A B C D E DP1 F G H

LED4

A B C D E F G

3 DP2 5 ( ) 11 ( ) 16

1 14 12 10 4 2 13 9

A B C D E DP1 F G H

3 DP2 5 ( ) 11 ( ) 16

FOTO S1 S2 GND GND GND A1 A2 A3 A4 A5 A6 H G F E D C B A

1 2

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

3 4

16 a LED5 DIG1 14 COM 15 b 3c 2d 1e 18 f 17 g DP 4 H

CON3

GND

A B C D E F G

A 11 a LED5 DIG2 13 COM B 10 b C 8c D 6d E 5e F 12 f G 7g DP 9 H

S2

S2

A5

A4

LED3

A6

S1

LED2

A3

LED1

A2

A1

PROJEKTY

Rysunek 2. Schemat ideowy wyświetlacza standardowego

Tabela 1. Parametry zawarte w ramce RMC

a informacja o aktualnej dacie jest dostępna w zdaniu RMC (parametr 11 w tab. 1). Do obliczeń nie wystarczy tylko informacja o dniu miesiąca, miesiącu i  roku, potrzebny jest jeszcze jeden parametr – dzień tygodnia. Jest on określany przez oprogramowanie, w którym zapisano, że  1-go stycznia 2000 roku była sobota, więc znając aktualną datę można obliczyć liczbę dni, które upłynęły od tej daty i  wyznaczyć aktualny dzień tygodnia. Dysponując tymi danymi można określić czy obowiązuje czas zimowy, czy letni. Dodawanie i  odejmowanie godzin względem czasu uniwersalnego, związane ze  strefami czasowymi i  zmianami czasu bardzo komplikuje utrzymanie integralności

Lp 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Parametr zdania RMC $ GPRMC 220516 A 5133.82 N 00042.24 W 173.8 231.8 130694 004.2 W *70

Znaczenie Znacznik początku Typ – RMC (recommended minimum gps data) Aktualny godzina –  HHMMSS UTC Aktualność danych: A  –  ok, V –  nieaktywny Szerokość geograiczna Szerokość geograiczna: N –  północna, S –  południowa Długość geograiczna Długość geograiczna: W  –  zachodnia, E –  wschodnia Prędkość obiektu wyrażona w  węzłach Kąt poruszania się obiektu wyrażony w  stopniach Aktualna data –  DDMMYY Odchylenie magnetyczne ziemi Odchylenie magnetyczne ziemi Suma kontrolna A1

220R R1 LED8

A B C D E F G

7 a LED2 1 COM 5 6b 4c 3d 2e 9f 10 g DP 8

H

A B C D E F G

7 a LED3 1 COM 5 6b 4c 3d 2e 9f 10 g DP 8

LED9

A4

A3

H

A B C D E F G

7 a LED4 1 COM 5 6b 4c 3d 2e 9f 10 g DP 8

220R R2

H

CON3

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

FOTO

Rysunek 3. Schemat ideowy wyświetlacza opcjonalnego (dużego) struktury clock, która zawiera informacje o dacie i godzinie podzielone na podstawowe elementy (rok, miesiąc, dzień, godzina, minuta, sekunda). Lepszą metodą okazał się zapis czasu w  postaci liczby sekund. Zmienna time.digital określa liczbę sekund, która upłynęła od 1 stycznia 2000 r. Wartość ta  będzie dalej nazywana czasem względnym. Zmienna ma rozmiar 32 bitów i  jej zakres w zupełności wystarczy do zliczenia sekund do roku 2100. Po tej dacie należałoby wprowadzić małą zmianę w  programie. Po  każdej sekundzie następuje zwiększenie czasu względnego o  jeden. Następnie czas względny zostanie zwiększony lub pomniejszony o  wartość wynikającą z  ustawionej strefy czasowej (od  -14 do  +14 godzin).

36 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Fotograia 4. Zegar w wersji podstawowej

LED10

A2

FOTO S1 S2 GND GND GND A1 A2 A3 A4 A5 A6 H G F E D C B A

A B C D E F G

7 a LED1 1 COM 5 6b 4c 3d 2e 9f 10 g DP 8

LED7

A1 A1

A5 A B C D E F G

FOTO

GND

7 a LED5 1 COM 5 6b 4c 3d 2e 9f 10 g DP 8

A6

H

A B C D E F G

7 a LED6 1 COM 5 6b 4c 3d 2e 9f 10 g DP 8

H


Zegar ustawiany za pomocą GPS

Fotograia 5. Zegar w wersji z dużym wyświetlaczem Na podstawie czasu względnego jest tworzona struktura clock oraz obliczany dzień tygodnia. W kolejnym etapie, program sprawdza czy obowiązuje czas letni i jeśli tak to do czasu względnego dodawane jest 3600 sekund (1 godzina) a wynik ponownie przekształcony zostaje na strukturę clock. Dopiero wtedy otrzymywany jest prawidłowy, aktualna godzina oraz data, zsynchronizowane z czasem UTC i  uwzględniające strefę czasową oraz zmiany czasu. Czas jest synchronizowany sygnałem GPS po włączeniu zasilania, a potem okresowo co 3 godziny. Urządzenie oczekuje wtedy na  właściwą ramkę RMC. Jeśli w  ciągu 30

sekund ramka nie zostanie odebrana, to jest to traktowane jako praca bez synchronizacji i  sygnalizowane krótkim miganiem dwukropka na wyświetlaczu (ok 1/3 s). Jeśli prawidłowa ramka zostanie odebrana, to  urządzenie zaktualizuje wskazanie czasu oraz czas zegara RTC i  zasygnalizuje to  długim miganiem dwukropka na  wyświetlaczu (ok 2/3 s).

Budowa Schemat ideowy zegara pokazano na rysunku 1, natomiast wyświetlaczy –  na  rysunkach 2 (mniejszy, podstawowy) i  5 (duży, opcjonalny). Pracą urządzenia steruje

Wykaz elementów Płytka główna

Rezystory: R1…R3, R5, R6, R8, R10, R27: 3 kV R9, R15…R24, R26: 100 V R7, R11…R14, R15*, R16*, R25: 1 V Kondensatory: C1, C7, C9…C11, C14, C15: 100 nF C2, C5, C6, C8, C12, C13: 100 mF/25 V C3, C4: 22 pF Półprzewodniki: D1…D3: 1N5817 IC1: ATmega8 (zaprogramowany) IC2: MCP7940 IC3: ULN2803 IC4: UDN2981 lub np. TD62783 IC5: 7805 IC6*: 7809 TERM: DS18B20 Inne: X1: kwarc zegarkowy 32768 Hz B1: bateria 3 V do druku, pionowa CON1: nie montować DISP: goldpin kątowy 1×20, gniazdo goldpin POW: ARK2/500 SW, TERM, SIG: ARK3/500 Wyświetlacz standardowy: R1: 1 kV S1, S2: przycisk FOTO: fotorezystor GL5616 (1M) LED1…LED4: wyświetlacz LED-AS8012 LED5, LED6: wyświetlacz LED-AD5624 LED6, LED7: dioda LED 3 mm DISP: goldpin kątowy 1×20 Wyświetlacz opcjonalny: R1, R2: 220 V FOTO: fotorezystor GL5616 (1M) LED1…LED6: wyświetlacz LED-AS23011 LED7…LED10: dioda LED 5 mm REKLAMA

Fotograia 6. Szczegóły montażu wersji z dużym wyświetlaczem ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

37


PROJEKTY mikrokontroler ATmega8. Pomiędzy punktami synchronizacji czasu urządzenie odmierza czas za pomocą wyspecjalizowanego układu zegara RTC typu MCP7940. Pracuje on w  takiej koniguracji, że  na  wyprowadzeniu MFP jest generowany przebieg prostokątny o  częstotliwości dokładnie 1  Hz.

Wyprowadzenie MFP jest połączone z wejściem INT0 procesora i każde zbocze opadające powoduje wygenerowanie przerwania. Sygnał 1 Hz z zegara RTC nie jest synchronizowany z  czasem UTC, więc wskazania zegara mogą być spóźnione o  maksymalnie 1 sekundę.

Rysunek 7. Schemat montażowy płytki głównej zegara

Rysunek 8. Schemat montażowy płytki wyświetlacza standardowego

Fotograia 9. Szczegóły montażu zegara w wersji standardowej

38 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Rysunek 10. Schemat montażowy płytki opcjonalnego, dużego wyświetlacza


Zegar ustawiany za pomocą GPS

Fotograia 11. Płytka główna zegara zamontowana za dużym wyświetlaczem

Fotograia 12. Odbiornik GPS MARS600 Zasilanie wyświetlaczy od strony katod realizuje ośmiokrotny driver ujemnej szyny zasilania ULN2803. Anody zasilane są  poprzez podobny driver, ale sterujący dodatnim biegunem zasilania UDN2981. Dwa stabilizatory dostarczają oddzielne napięcie zasilania +5  V dla mikrokontrolera i  jego peryferiów oraz oddzielne +9  V dla wyświetlaczy w  wersji podstawowej (fotograia  4). Zegar zbudowano w  sposób pozwalający na dołączenie dużo większych wyświetlaczy, niż te  zastosowane w  modelu (fotograia  5). Wymaga to  doprowadzenia wyższego napięcia zasilającego anody, więc stabilizator IC6 należy zastąpić zworą (połączyć skrajne wyprowadzenia) i  zasilić urządzenie odpowiednim napięciem (maksymalnie +24  V). Prąd pojedynczego segmentu wyświetlacza nie może przekraczać 100 mA. Sterowanie wyświetlaczy jest realizowanie dzięki multipleksowaniu. Po każdym cyklu zaświecenia się cyfry, następuje krótszy cykl pełnego wygaszenia wyświetlaczy. Zapobiega to  prześwitywaniu cyfr na  sąsiednie wyświetlacze spowodowane czasem propagacji driverów. Ponadto, poprzez zmianę stosunku czasu zaświecenia do  czasu wygaszenia jest regulowana intensywność świecenia wyświetlacza. Parametrem regulującym intensywność świecenia jest sygnał

z fotorezystora –  im oświetlenie otoczenia silniejsze, tym silniej świeci wyświetlacz.

Obsługa Do obsługi zegara służą dwa przyciski S1 i  S2. Krótkie naciśnięcie przycisku S1 powoduje wyświetlenie daty w  formacie DD:MM:RR –  po  ok. 5 sekundach zegar powróci do  wyświetlania czasu. Krótkie naciśnięcie przycisku S2 wyświetli temperaturę odczytaną z  dołączonego czujnika i  jak poprzednio po  chwili zegar powróci do  wyświetlania czasu. Dłuższe przytrzymanie (ok. 3 s) przycisku S1 uruchamia tryb ręcznego ustawiania czasu. W  pierwszym kroku zostanie wyświetlona data, będzie to  sygnalizowane świeceniem się kropek. Rok jest wyświetlany w  postaci dwóch ostatnich cyfr (2015 będzie pokazywany jako 15). Wartość dni będzie migała na przemian z  kursorem. Każde przyciśnięcie S2 spowoduje zwiększenie, a  przyciśnięcie S1 zmniejszenie wartości. Uwaga! W  czasie ustawiania daty program nie koryguje liczby dni dla danego miesiąca – w każdym miesiącu możemy ustawić 31. Po  ustawieniu dnia dłuższe przytrzymanie przycisku S1 lub S2 przesuwa kursor na  następną pozycję –  miesiąc, a  po  miesiącu na  rok. Kolejne dłuższe przyciśnięcie spowoduje wyświetlenie godziny –  wówczas kropki

zostaną wyłączone. Na początku będzie migała liczba godzin, analogicznie jak przy ustawiania daty. Po zakończeniu ustawiania zegar powróci do normalnej pracy. Dłuższe przytrzymanie S2 uruchomi synchronizację na żądanie – zegar będzie śledził sygnał z odbiornika GPS i zaktualizuje czas po odebraniu ramki RMC. Zegar wymaga ustawienia kilku parametrów. Włączenie zasilania układu, gdy jest wciśnięty S1 uruchamia procedurę ustawienia strefy czasowej. Pierwsze dwa pola wyświetlacza (pierwsze 4 cyfry) pokazują wartość przesunięcia zegara względem czasu uniwersalnego. Ustawanie przebiega REKLAMA

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

39


PROJEKTY

DS18B20

MARS600 12VDC

Rysunek 13. Sygnały na złączu zegara i dołączenie dodatkowych akcesoriów analogicznie, jak ustawianie daty i godziny. Zakres możliwych do  ustawienia wartości zawiera się w  przedziale od  -14 do  +14 ze  skokiem 1 godzinę (oprogramowanie nie uwzględnia stref czasowych, takich jak +3:30 czy +12:45). Domyślna wartość to  1:0,0 a  wiec dla Polski i  większości Europy nie trzeba nic zmieniać. Trzecie pole wyświetlacza (ostanie dwie cyfry) określa status automatycznej zmiany czasu. Wartość 0 oznacza, że funkcja jest wyłączona, wartość 1 oznacza, że  funkcja jest włączona i zmiany czasu na letni/zimowy będą wykonywane automatycznie. Domyślnie funkcja jest włączona. Włączenie zasilania układu, gdy jest wciśnięty S2 uruchamia dodatkowe ustawienia. Pierwsze pole wyświetlacza określa prędkość komunikacji z  odbiornikiem GPS (baudrate). Do  wyboru mamy 0 –  4800, 1 –  9600, 2 –  14400, 3 –  19200. Wartość domyślna to 1 (9600 b/s). Drugie pole wyświetlacza określa status funkcji automatycznego wyświetlania temperatury. Gdy funkcja jest włączona („1”) temperatura jest pokazywana co ok. 70 sekund. Gdy czujnik temperatury jest odłączony, to  temperatura nie będzie pokazywana pomimo aktywnej funkcji. Domyślnie funkcja jest aktywna.

Montaż i uruchomienie Montaż płytki głównej zegara wykonujemy zgodnie z  rysunkiem 7 i  z  zachowaniem ogólnych zasad. Płytkę zaprojektowano dla elementów przewlekanych, więc poradzą sobie nawet osoby z  mniejszym doświadczeniem. Złącze CON1 pozwala na  programowanie mikrokontrolera w  układzie, ale nie musi, jeśli mikrokontroler jest zaprogramowany. Przed montażem należy zdecydować, czy zegar

40 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

zostanie wyposażony w standardowy czy duży wyświetlacz. Schemat montażowy wyświetlacza standardowego pokazano na  rysunku  8. Montując go należy wlutować stabilizator IC6, a  rezystory R15 i  R16 powinny mieć rezystancję 100  V, dzięki czemu wyświetlacz sekund, który jest innego typu niż pozostałe, będzie świecił z  taką samą intensywnością. Na  koniec, zmontowane płytki sterownika i wyświetlacza, należy połączyć rzędem kątowych goldpinów lutując je bezpośrednio do płytek (fotograia 9). Dla wersji z  dużym wyświetlaczem (rysunek 10), stabilizator IC6 zastępujemy zworką, a rezystory R15 i R16 powinny mieć rezystancję 1 V. W miejscu złącza wyświetlacza DISP, po  stronie lutowania, należy zamontować gniazdo goldpin. Na płytce dużego wyświetlacza należy w pierwszej kolejności zamontować listwę szpilek goldpin, również po  stronie lutowania. Po  zmontowaniu obu płytek, można je łatwo połączyć. Wyświetlacze na  płytce dużego wyświetlacza warto zamontować kilka milimetrów ponad płytką, dzięki czemu będzie możliwe wsunięcie nakrętek za otwory montażowe i  solidne umocowanie płytek z  użyciem śrub i tulejek dystansowych (fotograia 11). Po  zmontowaniu z  użyciem zaprogramowanego mikrokontrolera zegar jest gotowy do pracy. W wersji standardowej można umieścić przyciski na płytce wyświetlacza. Jeśli zegar będzie umieszczony w  obudowie, to trzeba przygotować otwory na przyciski w ściance frontowej – to może być kłopotliwe i może zniszczyć estetykę obudowy. Wygodniejszym rozwiązaniem jest dołączenie przycisków przewodami do  złącza SW i  wyprowadzenie ich np. z  tyłu obudowy. Do  złącza TERM można dołączyć czujnik

temperatury typu DS18B20, dzięki czemu zegar zyska dodatkową funkcjonalność. Wyświetlacze warto okleić czerwoną samoprzylepną folią lub umieścić w obudowie z  czerwonym iltrem, co  znacząco poprawi kontrast wyświetlacza i odczyt będzie możliwy nawet z kilkunastu metrów. Odbiornik GPS należy dołączyć do złącza SIG. Odbiornik musi mieć interfejs UART o  poziomie napięcia 3,3  V lub 5  V i  parametrach transmisji: 8 bitów danych, parzystość –  żaden, pojedynczy bit stopu. Jak pamiętamy, dopuszczalne, obsługiwane przez program prędkości transmisji to: 4800, 9600, 14400 lub 19200 b/s. Dodatkowo, powinien działać przy zasilaniu +5 V, ponieważ takie jest wyprowadzone na złączu. Wszystkie te wymagania spełnia odbiornik GPS MARS600 zbudowany na  bazie modułu u-blox 6 (fotograia 12). Co ważne, ma on  zintegrowaną antenę, a  całość jest zamknięta w  małej, estetycznej obudowie z  magnesem do  montażu na  powierzchni metalowej. Moduł jest wyposażony w  2,5-metrowy przewód zakończony wtykiem PS2. Wtyk można uciąć lub dołączyć do gniazda PS2, a potem przewodami do zegara. Na rysunku 13 pokazano sygnały występujące na  złączu. Doprowadzenie GND łączymy z zaciskiem G złącza SIG, VCC5.0V z zaciskiem V, a TTL_TX z zaciskiem S. Sam odbiornik powinien być tak umieszczony, aby „widział” niebo. Oczywiście można zastosować dowolny inny odbiornik GPS, który spełnia opisane wymagania. Należy przy tym pamiętać, że  odbiornik GPS nie jest elementem niezbędnym do pracy zegara. Przy pracy bez odbiornika zegar wymaga ustawienia czasu po  pierwszym włączeniu i okresowej kontroli wskazań.

KS


PROJEKTY

Moduły do komunikacji szeregowej Xbee dla Raspberry Pi i nie tylko

1 2

V33

3

DIN

4 5 6

TL

7 8

FT230XS

TXD

CB3

!RTS

CB0

VCCIO

CB1 GND

RXD GND

VCC

!CTS

!RES

CB2

3V3O

UDP

UDM

16 15 14

C4

RL

C3

10uF

13

0.1uF

L1 1uH

12 11

USB

10

1

R2 27R

9

2 3 4

R1 27R

C2

C1

47pF

47pF

5

C5

VBUS D– D+ ID GND

0.1uF

LD1

LD2 R3

V33

470R

RX

R4

V33

RL

TX

TL

470R

RM 1 DOUT

2

DIN

3 4 5 6 7 8 9 10

VCC

XBEE

AD0/DIO0

DOUT

AD1/DIO1

DIN/nCFG

AD2/DIO2

DIO12

AD3/DIO3

nRES RSSI/PWMO PWM1

nRTS/AD6/DIO6 ASS/AD5/DIO5 VREF

NC

ON/nSLEEP

nDTR/SLPRQ/DI8

nCTS/DIO7

GND

AD4/DIO4

20 19 18 17 16 15 14 13 12 11

Rysunek 1. Schemat ideowy modułu Xbee_USB ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

*) AVT5513_USB / AVT5513_BT / AVT5513_RS232 / AVT5513_TTL / AVT5513_GPS / AVT5513_PC / AVT5513_MINI

U1 DOUT

SG

Oferta irmy Digi w zakresie modułów do komunikacji bezprzewodowej stale się rozszerza. Zastosowanie gotowego modułu uwalnia projektanta od  konieczności projektowania części radiowej i aplikacji wybranego protokołu komunikacyjnego, co  znacząco skraca czas opracowania urządzenia. Moduły Xbee, ZigBee oraz najnowszy Wi-Fi dają wybór sposobu realizacji transmisji bezprzewodowej. W zależności od wersji modułu, jest możliwa komunikacja na  odległość od  kilkudziesięciu metrów do  kilku kilometrów. Moduły Xbee i  Zigbee, oprócz realizacji łączności punkt-punkt, umożliwiają budowę złożonej, wielopunktowej sieci radiowej z całą infrastrukturą komunikacyjną, taką jak routery, koordynatory itd. Wszystkie moduły radiowe mają tak samo rozmieszczone wyprowadzenia, co  ułatwia rozbudowę lub zmianę standardu komunikacji bez konieczności wykonywania zmian na  płytce drukowanej. Wyprowadzenia i  konstrukcja mechaniczna stała się nieformalnym standardem – dostępne są także moduły innych producentów zgodne mechanicznie np. HC06 z  interfejsem Bluetooth oraz zamienniki

AVT 5513*

6

Opisana w numerze czerwcowym płytka rozszerzeń GPIO dla Raspberry Pi (AVT1854) ma zainstalowane gniazdo dla modułów komunikacji radiowej, zgodne pod względem rozmieszczenia wyprowadzeń z  modułami komunikacyjnymi Xbee oferowanymi przez irmę Digi. Moim zdaniem te  moduły stały się niekwestionowanym standardem dla komunikacji bezprzewodowej. Jak konwertery FTDI ułatwiają systemom embedded komunikację szeregową za pomocą USB, tak moduły Digi uwalniają komunikację od  kabli i  przenoszą ją na  fale radiowe. Rekomendacje: moduły przydadzą się w  aplikacjach, w  których Raspberry Pi lub inny system embedded komunikuje się z  otoczeniem za pomocą fal radiowych.

41


PROJEKTY

FR RN42

* Uwaga: Zestawy AVT mogą występować w następujących wersjach: AVT xxxx UK to  zaprogramowany układ. Tylko i  wyłącznie. Bez elementów dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie wyraźnie zaznaczono), bez elementów dodatkowych. AVT xxxx A+ płytka drukowana i  zaprogramowany układ (czyli połączenie wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymieniony w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw B, czyli elementy wlutowane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf AVT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link umieszczony w  opisie kitu) Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl

42 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

C3

10uF

0.1uF

GPIO2

SCLK PCLK

USBD–

PSYNC

USBD+

PIN

UCTS

POUT

URTS

VDD

UTXD URXD

GND

35

AOI1

C4

GPIO3

2

23 22 R1

21 20

AD

LD1 V33 STAT

470R

19

R2

18

470R

LD2 CN

17 16 15 14

DOUT

13

DIN

CFG AD

1

2

B9600

3

4

AMM

5

6

V33

1

V33

RM

DOUT

2

DIN

3

RES

5

4

6 7 8 9 10

VCC

XBEE

AD0/DIO0

DOUT

AD1/DIO1

DIN/nCFG

AD2/DIO2

DIO12

AD3/DIO3

nRES RSSI/PWMO PWM1

nRTS/AD6/DIO6 ASS/AD5/DIO5 VREF

NC

ON/nSLEEP

nDTR/SLPRQ/DI8

nCTS/DIO7

GND

Rysunek 3. Schemat ideowy modułu Xbee_BT

V33

24

AIO0

11 12

nRESET

GND

V33

GPIO5

1

30

9 10

GPIO7

GPI08

8

GPIO4

28

7

GPIO6

GPI09

5

SCSB

31

RES

SMOSI

GPI010

4

SMISO

32

3

B9600

6

(wymienione artykuły są w  całości dostępne na  FTP)

AVT-1854 RaspbPI_PLUS_GPIO. Moduł rozszerzeń GPIO Pi B + (EP 6/2015) AVT-1851 RaspbPI_DAC – przetwornik audio dla Raspberry Pi (EP 4/2015) AVT-1827 RaspbPI_NFC –  płytka czytnika RFID dla Raspberry Pi i  nie tylko (EP 9/2014) AVT-5459 RaspbPI_GSM Płytka z  modemem GSM dla Raspberry PI (EP 7/2014) AVT-5431,-32,-33 Moduły rozszerzeń dla Raspberry Pi (4) –  RaspbPI_LCD, RaspbPI_Relay, RaspbPI_LED8_PWM_ Expander (EP 1/2014) AVT-5412,-13,-14 Moduły rozszerzeń dla Raspberry Pi (3) –  RaspbPI_DIO16, RaspbPI_HUB, RaspbPI_DCM (EP 9/2013) AVT-5402_2 Moduły rozszerzeń dla Raspberry Pi (2) –  Płytka do  komunikacji szeregowej (EP 7/2013) AVT-5402 Moduły rozszerzeń dla Raspberry Pi (1) –  Płytka stykowa, moduł I/O, moduł wejść analogowych (EP 6/2013) AVT-5335 Przetwornik DAC TDA1543 (EP 3/2012)

AMM

FR

GND

GPI011

2

33

1

GND

W ofercie AVT* AVT-5513 A Dodatkowe materiały na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8 • wzory płytek PCB Projekty pokrewne na  FTP:

• Xbee_TTL konwerter poziomów umożliwiający bezpośrednie dołączenie do systemów 3,3  V np. Raspberry Pi z  systemami TTL np. AVTduino. Dodatkowo opracowanym modułem, który nie służy do  realizacji komunikacji szeregowej, jest Xbee_GPS z  odbiornikiem sygnału GPS Quectel L80. Moduł ma wbudowaną antenę oraz współpracuje z  anteną zewnętrzną. Wykorzystanie standardu Xbee umożliwia rozszerzenie funkcjonalności płytek zgodnych z Xbee o możliwość odbioru sygnałów GPS. Całość zamykają płytki umożliwiające współpracę z  komputerem PC oraz prototypowanie układów z  Xbee na  płytkach stykowych lub zastosowanie w systemach bez podstawki Xbee: • Xbee_PC umożliwia komunikację pomiędzy PC, a  dowolnym z  opisanych

M1

43

modułów Digi, uproszczone funkcjonalnie i nieco tańsze irmy Maxstream. W  zależności od  oczekiwanego zasięgu komunikacji w ofercie Digi dostępne są moduły z serii Pro o podwyższonej mocy nadajnika. Każdy z  modułów ma możliwość wyboru typu anteny, od wbudowanej (drutowej lub paskowej – bardzo wygodnej w zastosowaniach, ale o najmniejszym zasięgu i narzucającej pewne ograniczenia na  konstrukcję urządzenia), po  zewnętrzne, z  dostępnymi kilkoma rodzajami typowych złącz antenowych (UFl, RPSMA). Możliwy w zależności od warunków środowiskowych jest też dobór pasma radiowego: 868 MHz, 900 MHz, 2,4 GHz. Większość z modułów ma wbudowane i konigurowalne wejścia/wyjścia analogowe oraz cyfrowe umożliwiające budowanie sieci monitoringu bez konieczności użycia dodatkowego sprzętu. Korzystając ze  standardu wyprowadzeń Xbee opracowałem kilka dodatkowych modułów zgodnych mechanicznie,

29

Rysunek 2. Schemat montażowy modułu Xbee_USB

a umożliwiających transmisję pomiędzy Raspberry Pi, Launchpadem (moduł PWR_ Pack), AVTduino, STK_Mega256A, komputerem PC oraz wszystkimi płytkami zgodnymi z Xbee. Dodatkowe moduły pozwalają także na  zapanowanie nad nadmierną liczbą płytek z różnorodnymi konwerterami transmisji szeregowej, dostosowanych tylko do  jednego standardu płytki uruchomieniowej np. Arduino. W skład zestawu oprócz „fabrycznych” modułów Xbee wchodzą: • Xbee_USB umożliwiający realizację konwertera UART-USB. • Xbee_BT umożliwiający realizację komunikacji w standardzie Bluetooth, przy wykorzystaniu nowoczesnego modułu RN42 Microchip. • Xbee_RS232 umożliwiający realizację komunikacji w standardzie RS232.

AD4/DIO4

20 19 18 17 16 15 14 13 12 11


Moduły do komunikacji szeregowej Xbee dla Raspberry Pi i nie tylko

Rysunek 4. Schemat montażowy modułu Xbee_BT

Rysunek 6. Schemat montażowy modułu Xbee_RS232

modułów za pomocą konwertera USBCOM FT230XS, (moduł ma zasilacz 3,3 V). Jego podstawową funkcją jest umożliwienie koniguracji modułów oraz realizacja transmisji PC –  zestaw uruchomieniowy. Dwa takie moduły umożliwiają zestawienie linku radiowego (COM) pomiędzy komputerami PC. • Xbee_Mini umożliwia połączenie modułów poprzez port szeregowy (3,3  V) z  płytkami uruchomieniowymi bez gniazda Xbee np. STM32. Dodatkowo, moduł ułatwia wykorzystanie Xbee na  standardowych płytkach prototypowych. Na złącza w rastrze 2,54 mm wyprowadzone są wszystkie sygnały Xbee, co po odpowiedniej koniguracji pozwala na zapoznanie się z rozszerzonymi funkcjonalnościami modułów (np. zdalny monitoring w sieci). Schemat ideowy modułu Xbee_USB pokazano na  rysunku 1, natomiast montażowy na  rysunku 2. Jest to  podstawowy moduł, konwertera FT230XS USBUART (3.3V) umożliwiający dołączenie np. Raspberry Pi do  komputera PC (praca

z zdalna z  konsolą) lub realizację transmisji szeregowej poprzez USB dla płytek Launchpad przy użyciu kitu AVT5476. Schemat jest typowy, dla potrzeb kontroli transmisji zastosowano dwie diody LED świecące w tak sygnałów RXD i TXD. Drugim modułem jest Xbee_BT umożliwiający realizację transmisji w  standardzie Bluetooth z  zastosowaniem modułu RN42 irmy Microchip. Schemat ideowy modułu Xbee_BT pokazano na  rysunku 3, a  montażowy na  rysunku 4. Aplikacja jest typowa: diody świecące LD1 i  LD2 wskazują status pracy modułu, złącze CFG umożliwia konigurowanie modułu RN42, zwory AD/AMM umożliwiają wybór trybu automatycznej detekcji urządzenia BT, zwora B9600 ustawia prędkość komunikacji z  modułem na  9600 b/s, a  przycisk FR umożliwia powrót do  fabrycznej koniguracji modułu. Szczegółowy opis koniguracji i  funkcji RN42 zamieszczono w  dokumencie RN-BT-DATA-UG dostępnym na  irmy Microchip. Zapoznanie się z  nim jest konieczne do  poprawnego skonigurowania RN42 pod kątem własnych aplikacji.

C4

V33

0.1uF U1 C3

1

0.1uF

2 3

C2

4

0.1uF

5

C1

6

0.1uF

7 8

C1+ VS+

MAX3232

C5 VCC GND

C1–

T1OUT

C2+

R1IN

C2–

R1OUT

Vs–

T1IN

T2OUT

T2IN

R2IN

R2OUT

16

0.1uF

15

RS232

14

TXD 1

13

RXD 2

12

DOUT

11

DIN

GND 3

10

RS

9

TXD RXD GND

RM V33

1

DOUT 2 DIN

3 4 5 6 7 8 9 10

VCC

XBEE

AD0/DIO0

DOUT

AD1/DIO1

DIN/nCFG

AD2/DIO2

DIO12

AD3/DIO3

nRES RSSI/PWMO PWM1

nRTS/AD6/DIO6 ASS/AD5/DIO5 VREF

NC

ON/nSLEEP

nDTR/SLPRQ/DI8

nCTS/DIO7

GND

Rysunek 5. Schemat ideowy modułu Xbee_RS232

AD4/DIO4

20 19 18 17 16 15 14 13 12 11

Wykaz elementów Xbee_USB R1, R2: 27 V (SMD 0805) R3, R4: 470 V (SMD 0805) C1, C2: 47 pF (SMD 0805) C3, C5: 100 nF (SMD 0805) C4: 10 mF (SMD 0805) L1: 1 mH ((SMD 0805, 50 mA) LD1, LD2: dioda LED SMD 0805 U1: FT230XS (SSOP16) RM: złącze szpilkowe SIP10, R=2 mm, męskie USB: złącze Micro USB, SMD Xbee_BT R1, R2: 470 V (SMD 0805) C3: 100 nF (SMD 0805) C4: 10 mF (SMD 0805) LD1, LD2: dioda LED SMD 0805 M1: moduł BT42 CFG: złącze IDC6, R=2 mm + zworki 2 mm FR: przycisk 6×3 mm RM: złącze szpilkowe SIP10, 2 mm, męskie XBee_RS232 C1…C5: 100 nF (SMD 0805) U1: MAX3232 (SO16) RM: złącze szpilkowe SIP10, 2 mm, męskie RS: złącze SIP3 RS232: złącze MC1.5 (opcja) XBee_TTL R1, R2: 100 V (SMD 0805) C1: 100 nF (SMD 0805) U2: LVT125 (SO14) RM: złącze szpilkowe SIP10, 2 mm, męskie RS: złącze SIP3 Xbee_GPS R1: zwora R2: 10 kV (SMD 0805) C1: 100 nF (SMD 0805) C2: 10 mF (SMD 0805) C3, C4: 0,1 pF (nie montować!) D1: MCL103A M: moduł GPS L80 CE1: 0,1 F/5 V ANT: złącze SMA SMD GPS: złącze szpilkowe SIP10, 2 mm, męskie XBee_PC R1, R2: 27 V (SMD 0805) R3…R5: 470 V (SMD 0805) C1, C2: 47 pF (SMD 0805) C3, C5: 100 nF (SMD 0805) C4: 10 mF (SMD 0805) C7, C8: 1 mF (SMD 0805) L1: 1 mH (SMD 0805, 50 mA) LD1…LD3: dioda LED SMD 0805 U1: FT230XS (SSOP16) U2: LM1117-3.3 RES: przycisk 6×3 mm RM: złącze szpilkowe SIP10, 2 mm, żeńskie USB: złącze Micro USB, SMD Xbee_Mini R1, R2: 470 V (SMD 0805) C1: 100 nF (SMD 0805) CE1: 22 mF/6,3 V (SMD „B”) LD1, LD2: dioda LED SMD 0805 CF: złącze szpilkowe IDC4 + 2 zwory 2,54 mm J1, J2: złącze SIP10, męskie (opcja) RES: przycisk 6×3 mm RM: złącze szpilkowe SIP10, 2 mm, żeńskie RS: złącze kątowe EH4 ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

43


PROJEKTY V1 RM

RS

2

RXD

U2B LVT125

4

3

R1 100R

5

6

1

V33

1

DOUT

2

DIN

3 4

U2C LVT125 8

3

2

U2D LVT125 9

5 6 7

1

TXD

R2 100R

8

U2A LVT125

11

9

V33

12

C1 0.1uF

13

10

10

XBEE

VCC

AD0/DIO0

DOUT

AD1/DIO1

DIN/nCFG

AD2/DIO2

DIO12

AD3/DIO3 nRTS/AD6/DIO6

nRES

ASS/AD5/DIO5

RSSI/PWMO

VREF

PWM1 NC

ON/nSLEEP

nDTR/SLPRQ/DI8

nCTS/DIO7 AD4/DIO4

GND

20 19 18 17 16 15 14 13 12 11

Rysunek 7. Schemat ideowy modułu Xbee_TTL Czwartym konwerterem jest Xbee_TTL, umożliwiający dopasowanie układów CMOS 3,3 V i  TTL. Dwukierunkową konwersję zrealizowano na  układzie LVT125. Moduł umożliwia np. bezpośrednie przyłączenie portów szeregowych Arduino do  Raspberry Pi lub Launchpada. Schemat ideowy modułu zamieszczono na rysunku 7, a montażowy na rysunku 8. Ostatnim modułem zgodnym z podstawką Xbee jest moduł odbiornika GPS, dzięki któremu jest możliwe dodanie funkcjonalności GPS do  każdego systemu zgodnego z XBee. Schemat ideowy modułu Xbee_GPS przedstawiono na  rysunku  9, a  montażowy na  rysunku  10. Moduł jest oparty o  odbiornik GPS typu L80 irmy Quectel. Podstawową aplikację uzupełniają kondensator podtrzymujący CE1 (Super-CAP) z  obwodem ładowania złożonym z  diody D1 i  rezystora R2.

Rysunek 8. Schemat montażowy modułu Xbee_TTL Trzecim modułem jest Xbee_RS232, który umożliwia realizację transmisji szeregowej w tandardzie RS232. Schemat ideowy modułu Xbee_RS232 zamieszczono na  rysunku  5, a  montażowy na  rysunku  6. Układ zawiera konwerter poziomów MAX3232 z  3,3  V do  wymaganego przez RS232. W  zależności od preferencji, jest możliwy montaż dla sygnałów RS232 złącza szpilkowego SIP3, kątowego EH3 lub wygodnego złącza śrubowego – rozłączanego MC1.5 o rastrze 3,81 mm.

Rysunek 10. Schemat montażowy modułu Xbee_GPS Odbiornik GPS typu L80 ma wbudowaną antenę, która sprawdza się w zastosowaniach „terenowych”. Jeżeli układ będzie wykorzystany wewnątrz budynków lub poziom sygnału będzie nieodpowiedni do  synchronizacji, jest możliwe zastosowanie anteny zewnętrznej dołączonej do złącza SMA. Moduł automatycznie rozpoznaje przyłączenie anteny zewnętrznej sygnalizując to odpowiednim komunikatem statusu. Oprogramowanie modułu jest zgodne ze  standardem NMEA.

M RXD TXD

1 2 3

V33

4 C2 10uF

C1 0.1uF

5

D1 MCL103A

6 R2 10k

RXD1

L80

GND

TXD1

EXANT

GND

RESET NC

VCC VBKP

AADET

1PPS

TIMER

1

12 11 10 9

1

SMA-20 C3

C4

8 7

+ CE1 0.1F

TXD

2

RXD

3

RES

5

4

6 7 8 9 10

VCC

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

AD0/DIO0

DOUT

AD1/DIO1

DIN/nCFG

AD2/DIO2

DIO12

AD3/DIO3

nRES RSSI/PWMO PWM1

nRTS/AD6/DIO6 ASS/AD5/DIO5 VREF

NC

ON/nSLEEP

nDTR/SLPRQ/DI8

nCTS/DIO7

GND

Rysunek 9. Schemat ideowy modułu Xbee_GPS

44

XBEE

ELEKTRONIKA PRAKTYCZNA 9/2015

5

RES

RM V33

ANT

R1

AD4/DIO4

20 19 18 17 16 15 14 13 12 11

2 3 4


Moduły do komunikacji szeregowej Xbee dla Raspberry Pi i nie tylko U1 DIN

1 2

V33

3

DOUT

4 5 6

TL

7 8

TXD

FT230XS

16

CB3

!RTS

CB0

VCCIO

CB1

15 14

GND

RXD GND

VCC

!CTS

!RES

CB2

3V3O

UDP

UDM

C4

RL

C3

10uF

13

0.1uF

L1 1uH

12 11

USB

10

1

R2 27R

9

2 3 4

R1 27R

C2

C1

47pF

47pF

5

Rysunek 12. Schemat montażowy modułu Xbee_PC

VBUS D– D+ ID

6

SG

GND C5 0.1uF

RM VCC

1

DOUT 2 DIN RES

3 4

nRES

5 6 7

R5 470R

8 9

LD3 RSSI

10

AD1/DIO1

DIN/nCFG

AD2/DIO2

16 15

ASS/AD5/DIO5

RSSI/PWMO

14

VREF

PWM1 NC

ON/nSLEEP

nDTR/SLPRQ/DI8

nCTS/DIO7

13 12 11

AD4/DIO4

GND

VCC

RL

2 4

470R C7 R4

TX

17

nRTS/AD6/DIO6

nRES

LD2 V33

18

U2 R3

RX

19

AD3/DIO3

DIO12

LD1 V33

20

AD0/DIO0

DOUT

1uF

VO VO

LM1117-3.3

VI

3

VUSB

ADJ

2

VCC

1

1

XBEE

C8 1uF

TL

470R

Rysunek 11. Schemat ideowy modułu Xbee_PC

Szybkie sprawdzenie modułu jest możliwe we współpracy z komputerem PC za pomocą adaptera Xbee_PC. Dla dekodowania danych można użyć programu np. PolarView. Podobnie jak dla RN42, przed zastosowaniem we własnej aplikacji konieczne jest zapoznanie się z notą katalogową L80 ze strony Quectel. Ciekawym przykładowym zastosowaniem modułu może być synchronizacja czasu Raspberry Pi z dostępnym w systemie GPS. Dla ułatwienia eksperymentów z  modułami Digi i  GPS opracowane zostały dwa pomocnicze interfejsy sprzętowe Xbee_PC i  Xbee_Mini, których schematy ideowe i montażowe pokazano na rysunkach od 11 do 14. Zadaniem Xbee_PC jest umożliwienie bezpośredniej komunikację pomiędzy PC, a  dowolnym z  opisanych modułów za pomocą konwertera USB-COM typu FT230XS. Ułatwia to  konigurowanie modułów Xbee (oprogramowanie Digi –  XCTU), BT, GPS oraz realizację transmisji radiowej pomiędzy płytkami uruchomieniowymi, a PC podczas zdalnej akwizycji danych pomiarowych. Moduł ma wbudowany zasilacz 3,3  V dla modułu Xbee, sygnalizację transmisji za pomocą diod LED, poziomu sygnału RSSI (jeżeli moduł udostępnia) oraz przycisk zerowania. Dwa moduły umożliwiają wykonanie linku radiowego (COM) pomiędzy komputerami PC przy wykorzystaniu modułów

REKLAMA

SPIN ELEKTRONIK DYS TRYBUTOR ELEMENTÓW ELEK TRONICZNYCH

Bezpośredni dostawca części i podzespołów elektronicznych oraz automatyki oferuje: Elementy w wersjach komercyjnych, przemysłowych i militarnych Konkurencyjne ceny Elementy najwyższej jakości Podzespoły trudno dostępne SPIN Elektronik Sp. J. Kompletacje dostaw ul. Olsztyńska 56 Pełna oferta na naszej stronie

www.spin.wroc.pl

51-423 WROCŁAW tel./fax +4871 372 33 79 spin@spin.wroc.pl

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

45


PROJEKTY RM

J1 VCC

1

DO

2

DI

3 4

nRES

5

RSSI

6 7 8 9

GND

10

J2

XBEE

VCC

AD0/DIO0

DOUT

AD1/DIO1

DIN/nCFG

AD2/DIO2

DIO12

AD3/DIO3 nRTS/AD6/DIO6

nRES

ASS/AD5/DIO5

RSSI/PWMO

VREF

PWM1 NC

ON/nSLEEP

nDTR/SLPRQ/DI8

nCTS/DIO7 AD4/DIO4

GND

20 19 18 17 16

nRTS

15 14 13 12

Rysunek 14. Schemat montażowy modułu Xbee_Mini

nCTS

11

RS CF DO TXD

1

VCC 2

3

4

RXD C1 0.1uF

DI

+

VCC CE1 22uF/6V

TXD

SERIAL PORT

RXD

RSSI

VCC

1

nRES

R2 470R

R1 470R

LD2 RSSI

LD1 PWR

1

RES

Rysunek 13. Schemat ideowy modułu Xbee_Mini Xbee lub BT. Moduł Xbee_Mini umożliwia połączenie modułów Xbee poprzez port szeregowy (CMOS 3,3 V) z  płytkami uruchomieniowymi bez gniazda Xbee np. STM32. Sygnał portu szeregowego i  zasilania jest doprowadzony do  złącza RS, zwory CF umożliwiają przełączenie sygnałów RXD/ TXD, aby możliwe było zastosowanie typowego kabla SIP4 łączącego „na wprost”, 1:1. Układ uzupełniają diody sygnalizujące załączenie zasilania i poziom sygnału radiowego. Przycisk RES służy do  restartu modułu Xbee. Moduł ułatwia też zastosowanie Xbee na standardowych płytkach prototypowych. Dla ułatwienia aplikacji modułów na rysunku 15 pokazano zaczerpnięty z dokumentacji irmy Digi wykaz wyprowadzeń dla najpopularniejszych typów modułów. Wszystkie opisane moduły wykorzystują tylko wyprowadzenia DOUT/DIN, zasilanie VCC/GND oraz nRES, jeżeli konieczny

do poprawnej pracy. Pozostałe wyprowadzenie są niepodłączone. O  ile używanie modułów opracowanych na  potrzeby komunikacji szeregowej nie wymaga szerszego opisu, to moduły irmy Digi wymagają kilku uwag: • Wszystkie moduły wymagają zasilania 3,3 V. Pobór prądu jest zależny od typu modułu i  wynosi od  kilku do  kilkuset mA (moduły Pro o  zwiększonym zasięgu). • Sygnały I/O  zgodne są  ze  standardem CMOS 3,3 V. Przekroczenie dopuszczalnego napięcia spowoduje uszkodzenie GPIO. Sygnały analogowe I/O, jeżeli są  dostępne, wymagają poprawnego skoniguowania i  zachowania zakresu napięcia wejściowego. Domyślnie jest to 0…2 V. • Podczas zakupu modułów należy zwrócić uwagę, że  moduły Xbee dostępne

Rysunek 15. Rozmieszczenie wyprowadzeń popularnych modułów Xbee

46 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

są z  różnym oprogramowaniem: seria „1” umożliwia tylko i  wyłącznie zestawienie łącza punkt-punkt bez późniejszej możliwości zmiany na  wersję sieciową, seria „2” umożliwia realizację dowolnej topologii sieci. Niestety, nie jest możliwa współpraca modułów serii „1” i „2” nawet podczas realizacji transmisji punkt-punkt. Oczywiście, moduły z  serii „1” są  tańsze i  wystarczające w większości zastosowań. • Moduły Xbee są  domyślnie skonigurowane do transmisji szeregowej 9600, 8, n, 1. • Dwa moduły umożliwiają bezpośrednią transmisję radiową pomiędzy dwoma urządzeniami bez dodatkowej programowej ingerencji w  konigurację modułu. • Dla zmiany koniguracji modułu Xbee lub zmiany irmware z poziomu PC konieczne jest oprogramowanie XCTU dostępne na stronie internetowej Digi Inc. W  celu wykonania własnej aplikacji jest konieczna szczegółowa analiza dokumentacji modułu Xbee. Polecam też książkę „Building Wireless Sensor Networks” Roberta Faludi wyd. O’Reilly, w  której „łopatologicznie” opisano zastosowanie modułów Xbee we współpracy z  Arduino. Pozwala to  na  w  miarę bezbolesne zapoznanie się z ich możliwościami i sposobem zastosowania we własnych urządzeniach.

Podsumowanie Użytkowanie modułów jest łatwe. Należy tylko wybrać współpracujące platformy uruchomieniowe, zestawić moduły zapewniające wymagany standard komunikacji, a czasem zaglądnąć do  odpowiedniej dokumentacji.

Adam Tatuś, EP


PROJEKTY

VUSBtiny Miniaturowy programator mikrokontrolerów AVR W Elektronice Praktycznej nr 12/2011 opisano tani programator mikrokontrolerów AVR –  USB  ASP. W  tym numerze prezentujemy jeszcze mniejszy (wielkość porównywalna z  pendrive) i  jeszcze tańszy programatora, który ze  względu na  swoje wymiary i  niewielki koszt wykonania przyda się w  warsztacie niejednego elektronika lub do  celów serwisowych. Rekomendacje: programator polecamy każdemu, kto zajmuje się programowanie mikrokontrolerów AVR lub myśli o  pierwszych aplikacjach wykonanych z  ich użyciem. Schemat ideowy programatora pokazano na rysunku 1. Widać na nim niewiele komponentów –  mikrokontroler ATtiny45, dwie diody Zenera, kondensator i  kilka rezystorów. Oczywiście, są  jeszcze złącza –  wtyk USB oraz wtyk IDC-6. Rezystor R1 informuje host o obecności urządzenia USB transmitującego dane w trybie Slow. Rezystory R2 i R3 w  połączeniu z  D1 i  D2 zapewniają maksymalne napięcie na magistrali USB 3,6 V, a nie 5  V, ponieważ napięcie +5  V na  magistrali powoduje występowanie błędów SYNC. Rezystory R4…R6 zabezpieczają programowany układ przed uszkodzeniem w  wypadku, gdy jest on zasilany napięciem niższym niż 5 V. Zwora JP1 powinna być otwarta. Zakłada się ją tylko w  sytuacji, gdy chcemy zasilić uruchamiany układ z  USB. Trzeba oczywiście pamiętać o  ograniczeniach wynikających z maksymalnego dopuszczalnego prądu obciążenia oraz zakresu napięcia dostarczanego przez USB.

Montaż i uruchomienie Schemat montażowy programatora zamieszczono na  rysunku 2. Montaż jest typowy i  nie wymaga omawiania. Aby zmniejszyć Ustawienie koniguracyjnych mikrokontrolera: Low: 0xE1 High: 0x5D Ext: 0xFF

AVT 5511 wysokość programatora nie należy używać podstawki pod mikrokontroler. Ponadto, trzeba zastosować kątowe złącze SPI (J2) i zrezygnować z zworki JP2. Cały programator można umieścić w  koszulce termokurczliwej, ale przedtem należy zaprogramować mikrokontroler. Mikrokontrolery dostarczane w  zestawach AVT są  już zaprogramowane, jeśli jednak programator budujemy samodzielnie, trzeba to zrobić własnoręcznie. Mikrokontroler należy programować w  trybie wysokonapięciowym, ponieważ linia zerowania pracuje jak typowe I/O. Taką opcję mają programatory tzw. równoległe. Można jednak postąpić inaczej. Większość programów nie pozwala na wyłączenie linii RST w trybie SPI, ale np. AvrDude daje taką możliwość. Korzystając z  nakładki Burn-OMat można przełączyć linię RST w tryb I/O, tyle, że należy włączyć tryb Expert. W takiej sytuacji w trybie SPI należy zaprogramować pamięć Flash (plik: vusbtiny. hex dostępny w  materiałach dodatkowych), a następnie odpowiednio ustawić bity koniguracyjne. Oczywiście po tym stracimy możliwość programowania w  trybie SPI. Jeśli więc zostanie popełniony jakiś błąd, to trzeba użyć nowego mikrokontrolera lub użyć programatora w  trybie HVPROG. Dlatego zdecydowałem się na mikrokontroler w obudowie DIP, który można zamontować w podstawce, co ułatwia jego wymianę. Nawet, gdy zdecydujemy się na  wlutowanie mikrokontrolera, to  łatwo go wylutować ze  względu na użycie płytki jednowarstwowej. Przed przyłączeniem VUSBtiny do komputera należy pobrać sterowniki dostępne w  materiałach dodatkowych lub pod adresem https://goo.gl/cPUKLC. Po  dołączeniu programatora do  interfejsu USB komputera

pojawi się kreator. Instalacja nie przebiegnie automatycznie, należy wskazać sterowniki. Gdy instalacja sterowników przebiegła poprawnie, co można sprawdzić w Menadżerze Urządzeń, uruchamiamy avrdude z  konsoli. W  konsoli przechodzimy do  katalogu W ofercie AVT* AVT-5511 A AVT-5511 B AVT-5511 UK AVT-5511 C Podstawowe informacje: • Miniaturowe wymiary –  wielkość pendrive. • Bazuje na  mikrokontrolerze ATtiny45. • Obsługiwany prze popularne programy np. avrdude, Bascom AVR itp. • Obsługiwane mikrokontrolery: ATmega128, ATmega1280, ATmega1281, ATmega16, ATmega162, ATmega164, ATmega168, ATmega169, ATmega2560, ATmega2561, ATmega32, ATmega324, ATmega328, ATmega329, ATmega3290, ATmega48, ATmega64, ATmega640, ATmega644, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88, ATtiny12, ATtiny13, ATtiny15, ATtiny2313, ATtiny25, ATtiny26, ATtiny45, ATtiny85. • Na  podstawie programatora opisanego na  stronie http://www.simpleavr.com/avr/ vusbtiny. Dodatkowe materiały na  FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8 • wzory płytek PCB Projekty pokrewne na  FTP: (wymienione artykuły są  w  całości dostępne na  FTP)

AVT-5388 Programator AVR-ISP MKII (EP 3/2013) AVT-1683 Przystawka do programowania mikrokontrolerów AVR firmy Atmel (EP 7/2012 AVT-5325 UsbAsp –  Programator mikrokontrolerów AVR (EP 11/2011) AVT-5322 AVR JTAG-ICE –  interfejs debugera dla mikrokontrolerów AVR (EP 11/2011) * Uwaga: Zestawy AVT mogą występować w  następujących wersjach: AVT xxxx UK to  zaprogramowany układ. Tylko i  wyłącznie. Bez elementów dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie wyraźnie zaznaczono), bez elementów dodatkowych. AVT xxxx A+ płytka drukowana i  zaprogramowany układ (czyli połączenie wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymieniony w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw B, czyli elementy wlutowane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf AVT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link umieszczony w  opisie kitu) Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

47


PROJEKTY Wykaz elementów Rezystory: (SMD 1206) R1: 1,5 kV R4…R6: 470 V R2, R3: 68 V Kondensatory: C1: 100 nF (SMD 1206) Półprzewodniki: D1, D2: dioda Zenera SMD na 3,6 V U1: ATtiny45/85 (zaprogramowany) Inne: J1: USB-A (wtyk USB do druku) J2: IDC6MLP (gniazdo 6 pin) JP1: goldpin 1×2+zworka

Tabela 1. Obsługiwane mikrokontrolery i ich kody: Typ mikrokontrolera ATmega128 ATmega1280 ATmega1281 ATmega16 ATmega162 ATmega164 ATmega168 ATmega169 ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega328 ATmega329 ATmega3290 ATmega48 ATmega64 ATmega640 ATmega644 ATmega649 ATmega6490 ATmega8 ATmega8515 ATmega8535 ATmega88 ATtiny12 ATtiny13 ATtiny15 ATtiny2313 ATtiny25 ATtiny26 ATtiny45 ATtiny85

Kod w poleceniu m128 m1280 m1281 m16 m162 m164 m168 m169 m2560 m2561 m32 m324 m328 m329 m3290 m48 m64 m640 m644 m649 m6490 m8 m8515 m8535 m88 t12 t13 t15 t2313 t25 t26 t45 t85

z programem. Dla wygody program można zainstalować w  głównym katalogu jakiegoś dysku, załóżmy, że jest to d:\avrdude. W takiej sytuacji musimy wydać dwie komendy: d: cd\avrdude Wykonujemy test. Ważne, aby programator był połączony z programowanym mikrokontrolerem. Wydajemy komendę: avrdude -c usbtiny -p m8 Jeśli połączenia były poprawne zobaczymy: avrdude: AVR device initialized and ready to accept instructions

48 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

VCC

/RST

VCC

J1

R1 1k5

1

R4 470R U1 1 RST/PBS 2 PB3 3 PB4 4 GND

D–

2

D+

3

R2 68R

GND

4 5

R3 D2 68R 3V6

D1 3V6

USB-A

VCC

VCC PB2 PB1 PB0

VCC

GND MISO

C1 100nF

SCK VCC

6

/RST

5

MOSI

JP1 1

1

2

3

4

5

6

ISP Atmel

SCK MISO

ATtiny45/85

J2

GND

R5 470R

7

R6 470R

GND GND

8

2 MOSI

Vcc

GND

Rysunek 1. Schemat ideowy programatora VUSBtiny

Rysunek 2. Schemat montażowy programatora VUSBtiny Reading | ##################### ############################# | 100% 0.00s avrdude: Device signature = 0x1e910a avrdude: safemode: Fuses OK avrdude done. Thank you. Jeśli będą problemy z komunikacją, to zostanie wyświetlony następujący komunikat: avrdude: error: programm enable: target doesn’t answer. 1 avrdude: AVR device initialized and ready to accept instructions Reading | ##################### ############################# | 100% 0.02s avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. Za pomocą komendy avrduce –c usbtiny –p m8 odczytuje się sygnaturę układu, jej składnia to avrdude -c {programator} -p {typ procesora}. Nie ma pomyłki w rozkazie, jeśli chodzi o  typ programatora. Trzeba wybrać „usbtiny”, a nie „vusbtiny”. Vusbtiny zachowuje się jak usbtiny, a „V” to nowsza wersję procedur obsługi USB. Najważniejsza zmiana to możliwość wykorzystania wewnętrznego oscylatora RC. Co do typu procesora. Przy odczycie sygnatury nie ma to znaczenia, ale podczas programowaniu już tak. Jeśli chodzi o  typ procesora to, gdy jest to  na  przykład ATmega8, wpisujemy „m8”. Dla ATtiny2313 wpisujemy „t2313”. Pełna listę kodów umieszczono w tabeli 1. Jeśli nie było komunikatu o  błędzie możemy zapisać pamięć mikrokontrolera. W tym celu wydajemy komendę:

avrdude -c usbtiny -p m8 -U flash:w:program.hex Odczyt to komenda: avrdude -c usbtiny –pm8 -U flash:r:program.hex Ustawienie bitów koniguracyjnych: avrdude -c usbtiny -p m8 -U hfuse:w:0x{wartość}:m -U lfuse:w:0x{wartość}:m Zapis EEPROM: avrdude -c usbtiny -p m8 -U eeprom:w:program.hex Odczyt: avrdude -c usbtiny –pm8 -U eeprom:r:program.hex Obsługa programu z  linii komend jest kłopotliwa, dlatego powstały nakładki graiczne. Najlepszą wydaje mi się Burn-OMat’a. Można ją pobrać spod adresu http:// goo.gl/3OOmQt. Po zainstalowaniu i uruchomieniu program należy zainstalować. Ważne jest ustawienie ścieżki dostępu do  avrdude oraz jego pliku koniguracyjnego wywołanego z  menu Setings/AVRDUDE (rysunek 3). Teraz, po  zaakceptowaniu okna koniguracyjnego przyciskiem OK należy zamknąć, po  czym ponownie otworzyć program, aby mogły się wczytać ustawienia i typy programatorów z  pliku koniguracyjnego. W  kolejnym kroku, ponownie w  oknie Setings/ AVRDUDE, wybieramy rodzaj programatora (rysunek 4). Listy „port” nie należy zmieniać na „USB” – należy zostawić domyślne „/dev/ parport0”. Zmiany akceptujemy za pomocą OK. Od  teraz, po  wybraniu w  liście AVR type (jak na  rysunku 5) typu mikrokontrolera można zapisywać i  odczytywać zawartość pamięci Flash i EEPROM. Aby zmienić Więcej informacji jest dostępne w Elektronice Praktycznej nr 12/2011. Można tam znaleźć informacje (zrzuty ekranowe) na temat sposobu instalowania sterowników oraz konigurowania programatora do współpracy z AvrStudio i Bascom AVR.


Koniguracja AVR Studio do współpracy z USBtiny: • Z menu „Tools” wybieramy „Customize...”. • W nowo otwartym oknie „Command” wybieramy zakładkę „Tools”. • Wskazujemy ikonkę „New” lub wciskamy klawisz „Insert”. • Wpisujemy nazwę programatora, np. „USBtiny”. • W oknie „Command” wskazujemy ścieżkę do „avrdude” (np.: C:\WinAVR-20100110\bin\avrdude.exe). • W oknie „arguments” podajemy parametry: „-p m168 -c usbtinyp -P usb -U flash:w:”plik. hex”:a -U flash:v:”plik.hex”:a”, gdzie „m168” to typ procesora. • W „Initial directory” wpisujemy ścieżkę dostępu do pliku (trzeba pamiętać o końcowym znaku „\”) • Zmiany zatwierdzamy przyciskiem „Close”. W celu zaprogramowania mikrokontrolera wybieramy w menu „Tools” nazwę naszego programatora (w przykładzie jest to „USBtiny”. Koniguracja Bascom do współpracy z USBtiny: • Z menu wybieramy „Options/Programmer”. • Z listy rozwijanej wybieramy „External programmer”. • W zakładce „Other” (w dolnej części okna) podajemy ścieżkę do „avrdude”. • W oknie parametry wpisujemy „„avrdude” -p m168 -c usbtiny -U flash:w:”{FILE}”:a -U flash:v:”{FILE}”:a” oraz zaznaczamy opcje „Use HEX ile”, gdzie „m168” to typ procesora. Programowanie wywołujemy klawiszem F4 lub ikonką „Program chip”.

ustawienie bitów koniguracyjnych, należy nacisnąć przycisk Fuses umieszczony na prawo od listy AVR type. Zostanie wyświetlone okno, jak na  rysunku 6. Mamy możliwość odczytu bitów koniguracyjnych (read fuses), zapisu (write fuses) oraz weryikacji (verify fuses). Można też przywrócić ustawienia domyślne (reset to  default). Niższe zakładki umożliwiają różne sposoby ustawiania bitów. Liczba zakładek jest zależna od  typu mikrokontrolera i  ich szczegółowe omówienie zajęłoby połowę EP, więc zachęcam do własnych eksperymentów. Eksperymenty

Rysunek 3. Menu koniguracyjne avrdude

z bitami są  w  miarę bezpieczne, ponieważ nie można niektórych zmienić (tych zaznaczonych na czerwono). W normalnym trybie pracy nie da się wyłączyć programowania przez SPI, czy też przełączyć wyprowadzenia reset w tryb I/O, co uniemożliwiłoby programowanie mikrokontrolera w  trybie SPI. Wyłączona jest nawet możliwość przejścia w  tryb DebugWire, który obsługiwany jest przez nieliczne programatory (np. Dragona). Można oczywiście zmienić te  bity w  trybie Expert, co  opisano wcześniej w  artykule. Jakkolwiek Burn-O-Mat dba o  „bezpieczeństwo mikrokontrolera” to  trzeba być ostrożnym przy zmianach źródła sygnału zegarowego. Na ten temat pisano już w EP, a także jak „uratować” mikrokontroler, bez uciekania się do  użycia programatora w  trybie HVPROG, co jest kłopotliwe zwłaszcza, gdy jest on  wlutowany w  płytkę. Należy pamiętać, że  zaprogramowany bit to  wartości  0! Czyli zaznaczenie „ptaszkiem” bitu nadaje mu wartość 0, co jest opisane w nocie katalogowej mikrokontrolera. Tematu programu Burn-O-Mat z  pewnością nie wyczerpałem, ale sądzę, że przekazane informacje wystarczą do  używania programu. Sposób instalacji programatora pod Linux-em jest opisany pod adresem https://goo.gl/IEy0Js.

Sławomir Skrzyński, EP Bibliograia: http://goo.gl/fY4jyp https://goo.gl/qo59aj

REKLAMA

Rysunek 4. Wybór rodzaju programatora

Rysunek 5. Wybór typu mikrokontrolera

Rysunek 6. Konigurowanie bitów bezpieczników ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

49


PROJEKT CZYTELNIKA Dział „Projekty Czytelników” zawiera opisy projektów nadesłanych do redakcji EP przez Czytelników. Redakcja nie bierze odpowiedzialności za prawidłowe działanie opisywanych układów, gdyż nie testujemy ich laboratoryjnie, chociaż sprawdzamy poprawność konstrukcji. Prosimy o nadsyłanie własnych projektów z modelami (do zwrotu). Do artykułu należy dołączyć podpisane oświadczenie, że artykuł jest własnym opracowaniem autora i nie był dotychczas nigdzie publikowany. Honorarium za publikację w tym dziale wynosi 250,– zł (brutto) za 1 stronę w EP. Przysyłanych tekstów nie zwracamy. Redakcja zastrzega sobie prawo do dokonywania skrótów.

Projekt

225

Lutownica z zasilaczem impulsowym Na  ideę zbudowania tego urządzenia wpadłem. Pomyślałem, że  to  niezły pomysł zbudować lutownicę znacznie lżejszą od  konwencjonalnej lutownicy transformatorowej, a  równie wygodną w  użyciu. Moim zdaniem zaletą lutownicy transformatorowej jest możliwość przenoszenia kalafonii w  miejsce, które chcemy lutować, dlatego pomimo posiadania kilku lutownic grzałkowych nadal używam „transformatorówki”. Zwykła lutownica 100W waży z  przewodem 768  g, natomiast lutownica impulsowa niecałą połowę tego –  344g i  to  w  za dużej obudowie z  pleksi o  ściankach grubości 3  mm. Zmniejszając grubość ścianek można jeszcze zmniejszyć ciężar (około 250 g lub mniej) i uzyskać jeszcze większy komfort pracy. Lutownica ta  ma podobne właściwości użytkowe, jak lutownica konwencjonalna tzn. podobną moc, czas rozgrzewania oraz przerw w  lutowaniu, które można zmniejszyć dodając wentylator chłodzący transformator i miedziane doprowadzenia grota lutującego.

Zasada działania Zbudowana ją przy użyciu układu elektronicznego doprowadzającego przebieg prostokątny o częstotliwości około 16 kHz do pierwotnego uzwojenia transformatora z  rdzeniem ferrytowym E32 umieszczonego w  karkasie WE1802H. Schemat urządzenia pokazano na  rysunku 1. Częstotliwość oscylatora dobrano pod kątem redukcji wpływu pasożytniczych indukcyjności wyprowadzeń uzwojenia wtórnego –  przy wyższej częstotliwości nie udałoby się uzyskać przy użyciu tak małego transformatora i tranzystorów kluczujących odpowiedniego prądu rozgrzewającego grot. Prąd zasilania ładuje kondensator C2, a następnie poprzez rezystor R9 ograniczający prąd

50 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

diody Zenera D5 i diodę D6 zasila ładuje C3. Na  kondensatorze C3 napięcie wynosi około 32,4  V dopóki nie naciśniemy przycisku S1. Po jego naciśnięciu napięcie z kondensatora C3 zostaje podane na  stabilizator U2, który zasila wzmacniacz operacyjny U1A. Na jego wyjściu występuje poziom wysoki powodujący ładowanie kondensatora C1 poprzez potencjometr R8 oraz rezystor R7. Tranzystora T4 przewodzi, więc napięcie na jego kolektorze C jest bliskie masy, ponieważ prawie całe napięcie zasilające odkłada się na rezystorze R3. Tranzystor T3 nie przewodzi, natomiast przewodzi tranzystor T2, bo na jego bramce występuje napięcie zasilania, ponieważ nie przewodzi tranzystor T1 i nie ma spadku napięcia na rezystorze R5. Gdy kondensator C1 naładuje się do  napięcia przekraczającego wyznaczone przez dzielnik rezystorowy R6||R12/R13 (8,85 V) to  na  wyjściu U1A wystąpi potencjał bliski masy (około 1,4 V dla TL072), czego skutkiem będzie rozładowywanie się kondensatora C1 (w obwodzie R7, R8), przewodzenie tranzystora T1, zatkanie T4, co z kolei ze względu na spadek napięcia na R5 będzie przyczyną zatkania T2 oraz otwarcia T3. Poziom niski na wyjściu U1A będzie trwał do  momentu obniżenia się napięcia na nóżce 2 U1A do wartości mniejszej niż 2,23 V. Jak wynika powyższego opisu, układ ten wytwarza na  wyjściu U1A przemienny

przebieg prostokątny powodujący na zmianę przewodzenie tranzystorów T3 i  T2 z  dodaniem krótkiego odstępu między chwilami przewodzenia. Tranzystory T3 i  T2 załączają na zmianę do masy końcówki dwóch uzwojeń pierwotnych transformatora Tr1 połączonych szeregowo. Ich punkt połączenia (odczep) jest dołączony poprzez rezystor R16 do  plusa zasilania 325  V. Efektem tego jest wytwarzanie na wtórnych uzwojeniach transformatora przemiennego przebiegu prostokątnego. Napięcie z  uzwojenia pomocniczego poprzez diody D1…D4 jest podawane na  kondensator C3 i lutownicę w czasie normalnej pracy, bo prąd ograniczany przez rezystor R9 nie wystarczyłby do zasilenia U1 oraz tranzystorów T4 i T5, a nie chciałem zmniejszać wartości R9, aby nie tracić na  nim oraz diodzie Zenera zbyt dużej mocy (dla prądu o  natężeniu 150 mA byłoby to aż 46 W) zastosowałem kondensator C3 gromadzący ładunek na czas „startu” układu oraz dodatkowe uzwojenie pomocnicze i diody prostownicze D1…D4. Gdy puścimy przycisk zasilania, kondensator C4 rozładuje się w czasie kilkudziesięciu mikrosekund i  układ U1 przestanie być zasilany, a tranzystory T2 i T3 przestaną przewodzić. Kondensator C4 pełni funkcję przeciwzakłóceniową eliminując piki napięciowe o krótkim czasie trwania. Jak wspomniano, C3 gromadzi ładunek na czas startu układu zanim uzwojenie pomocnicze Tr1 zacznie dostarczać prąd do wejścia stabilizatora U2 oraz wygładza to  napięcie umożliwiając poprawną pracę U2. Kondensator C2 służy do zapewnienia napięcia (zgromadzenia ładunku) dla pracy transformatora Tr1 w czasie, gdy bezwzględna wartość chwilowa sinusoidy w sieci energetycznej jest niższa niż 300  V. Rezystory R4 oraz R2 ograniczają prąd przewodzony przez tranzystory T4 i  T1 w  czasie rozładowywania pojemności bramka


D2 1N4148

D4 1N4148 D3 1N4148

Rysunek 2. Widok płytki drukowanej od spodu

T4 BC547B

10k

4k7

R11

OUT

C4 100nF

R6 10k

R13 10k

V−

V+

C1 2n2

R7 4k7

R8

U1A TL072CP

R1

4k7

T1 BC557B

R10 1k8

R4

47R

T2 STF3NK80Z

R2

47R

R3 136R R5 136R 1k5

R12

Rysunek 4. Schemat montażowy lutownicy

D5 33V C2 100µF/350V F2 2A

1N4148 D2 D4

75k/2W

C3 470µF/350V

3 1 styk monostab D6 R9

D1 D3

J1

2

F1 2A

Br1 KBL10

R16

15R/10W

S1

U2

IN

GND 1

Rysunek 3. Widok płytki drukowanej od góry

R14 10k

D7 P6KE400CA

R15 10k

D6 P6KE 400CA

T3 STF3NK80Z

Tr1

Transformator sek prim

D1 1N4148

Lutownica z zasilaczem impulsowym

Rysunek 1. Schemat ideowy lutownicy impulsowej

– źródło tranzystorów T3 i  T2. Rezystory R14 i R15 zwierają bramki T3 i T2 do masy zapobiegając ich przewodzeniu, gdy puścimy przycisk S1. Rezystor R16 ogranicza prąd tranzystorów T3 i T2 w stanach nieustalonych, czyli w momencie naciskania i  puszczania przycisku S1. Rezystory R3 i  R5 służą do  zasilania bramek tranzystorów T3 i T2 (ładowania ich pojemności GS w  odpowiednio krótkim czasie). Diody dwukierunkowe D7 i D8 chronią tranzystory T3 i  T2 przed nadmiernymi przepięciami mogącymi wystąpić pomiędzy nóżkami D–S tranzystorów. Dioda D6 zabezpiecza diodę D5 w wypadku, gdyby napięcie na C3 przekroczyło 33 V. Obwód może pracować bez diody D6, jeżeli napięcie na  C3 w  czasie pracy układu nie będzie przekraczało 33 V. Potencjometr R8 i rezystor R7 służą do regulowania czasu ładowania i rozładowania kondensatora C1, a tym samym częstotliwości przebiegu prostokątnego wytwarzanego przez układ U1A. Rezystor R10 tworzy dzielnik napięcia z  R11 powodując obniżenie napięcia na bazie T4 w czasie trwania stanu niskiego na wyjściu U1A, gdy jest nim np. TL072, na którego wyjściu napięcie poziomu niskiego wynosi około 1,4 V. Układ scalony LM358P najprawdopodobniej nie będzie wymagał rezystora R10, bo jego napięcie wyjściowe wynosi około 0,6  V. Wzmacniacz operacyjny U1B zawarty w strukturze U1 jest nie używany.

Montaż i uruchomienie Główną trudnością w  budowie układu jest wykonanie transformatora. Należy rozpocząć od  nawinięcia uzwojeń pierwotnych – są to po cztery warstwy drutu DNE 0,3 mm, po  288 zwojów dla każdej z  warstw. Koniec drutu przed nawijaniem oczyszczamy z emalii nożem, następnie okręcamy na końcówce 2 karkasu. Następnie, po bardzo starannym nawinięciu czterech warstw zwój przy zwoju, robimy odczep (zdrapujemy emalię na  2 cm odcinku drutu i  okręcamy drut na  końcówkach 3 i  4.

Później nawijamy kolejne cztery warstwy w tym samym kierunku, zdrapujemy emalię na końcu i dołączamy koniec uzwojenia do końcówki 5. Oba uzwojenia powinny być zaimpregnowane kilkunastoma kroplami specjalnego lakieru elektroizolacyjnego naniesionego wacikiem lub pędzelkiem na  całej długości/szerokości obu uzwojeń. W  przypadku braku można nie impregnować, jednak trzeba się wtedy liczyć z  większym ryzykiem uszkodzenia uzwojenia. Teraz nawijamy pod uzwojenie pomocnicze jedną warstwę materiału izolacyjnego np. tereszpanu 0,15  mm lub pasek taśmy izolacyjnej o  szerokości 20 mm i  wykonujemy uzwojenie pomocnicze (22 zwoje tego samego drutu), które będzie połączone do  zacisków 10 i  11 przeciwległych zaciskom 2 i 3 uzwojenia pierwotnego. Następnie nawijamy jeden zwój paska tereszpanu grubości 0,25 mm i  szerokości 20 mm, aby końcówki materiału izolacji zachodziły na siebie (najlepiej w miejscu, w którym nie przechodzi obok rdzeń, czyli np. po stronie wyprowadzeń) w celu izolacji galwanicznej uzwojenia pierwotnego od  uzwojenia zasilającego grot lutowniczy. Uzwojeniem tym jest jeden zwój dwóch pasków blachy miedzianej grubości 0,5 mm i szerokości 19,5 mm, oddzielonych od siebie paskiem tereszpanu 0,15 mm lub innego materiału izolacyjnego odpornego na temperaturę co najmniej 130°C w celu zmniejszenia efektu naskórkowości. Po  wycięciu i  usunięciu nierówności powstałych po cięciu, umieszczamy paski na karkasie. Teraz należy je ścisnąć, aby po złożeniu rdzenia nie sprężynowały i  nie zaczepiały o  niego, ponieważ może pęknąć. Teraz trzeba przykręcić doprowadzenia grota. Ja zrobiłem je z dwóch kompletów składających się każdy z  sześciu pasków blachy miedzianej 0,5  mm o  wymiarach 50  mm×10 mm. Przykręcone są do pasków uzwojenia śrubami M3×10 mm z podkładkami po uprzednim wywierceniu otworów w blachach uzwojenia oraz miedzianych ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

51


PROJEKT CZYTELNIKA blaszkach doprowadzenia. Podczas wiercenia można blaszki ścisnąć w imadle. Blachy doprowadzenia i grota każdej końcówki są przeplatane na przemian tzn.: dwie blaszki doprowadzenia, blaszka uzwojenia, blaszka doprowadzenia, izolacja, blaszka doprowadzenia, blaszka uzwojenia, dwie blaszki doprowadzenia. Grot fabryczny lub drut o przekroju 2,5 mm2 może być przykręcony śrubami M4 z  podkładkami po wcześniejszym wywierceniu otworów wiertłem 3  mm, nagwintowaniu gwintownikiem M4 i  wygięciu zewnętrznych blaszek powyżej otworów w  obu doprowadzeniach w  celu wyproilowania rowków oraz łatwiejszego umieszczenia i  przykręcenia grota. W  gwintowaniu może pomóc wcześniejsze ściśnięcie końcówek i zlutowanie ich na końcu. W czasie Wykaz elementów Rezystory: R1, R7, R11: 4,7 kV R2, R4: 47 V R3, R5: 120…150 V R6, R13: 10 kV R8: 10 kV (pot. montażowy) R9: 75 kV/2 W R10: 1,8 kV R12: 1,5 kV R14, R15: 10 kV R16: 15 V/10 W Kondensatory: C1: 2,2 nF C2: 100 m/350 V C3: 470 m/35 V C4: 100 nF Półprzewodniki: D1…D4, D6: 1N4148 D5: dioda Zenera 33 V np. BZX55C33 D7, D8: diody dwukierunkowe 400 V min 600 W np. P6KE400 lub 1.5KE400CA-DIO Br1: mostek prostowniczy min 4 A np. KBL10 T1: BC557B T2, T3: STF3NK80Z lub STP5NK80ZFP T4: BC547B U1: TL072CP (lub LM358P, LM358AN) U2: 7810 Pozostałe: Podstawka pod układ scalony DIL 8 J1: DG300-5.0-2P12 F1, F2: bezpiecznik 2 A Gniazda bezpiecznikowe do druku: np. LITTELFUSE  64600001003, osłona gniazda bezpiecznikowego: np. LITTELFUSE 64800001009 Karkas Weisser WE-1802H, dwie połówki rdzenia E32 Drut nawojowy, emaliowany 0,3 mm Blacha miedziana grubości 0,5 mm Tereszpan o grubości 0,15 i 0,25mm

Fotograia 5. Widok płytki lutownicy od góry

Fotograia 6. Widok płytki lutownicy z boku

52 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

gwintowania też dobrze jest trzymać grot kombinerkami w okolicach otworów pod śruby. Jak ktoś chce, może przykręcać grot śrubami M3 lub M4 z nakrętkami. Jeżeli ktoś ma lutownicę o mocy minimum 100  W, to  blachy doprowadzeń grota można dodatkowo przylutować do  blach uzwojenia, aby zmniejszyć rezystancję połączenia między nimi, uważając podczas lutowania, aby nadmiernie nie nagrzewać uzwojenia i  nie stopić karkasu lub izolacji. Rdzeń po włożeniu w karkas trzeba ścisnąć i okleić kilkoma zwojami biurowej taśmy klejącej. Urządzenie można zmontować na  dwustronnej płytce drukowanej, której propozycję wykonania pokazano na  rysunkach 2 i  3. Płytkę można zrobić we własnym zakresie na  laminacie obustronnie pokrytym miedzią. Rozmieszczenie elementów pokazano na  rysunku 4. Montaż rozpoczynamy od  elementów najmniejszych (rezystorów) kończąc na  największych (kondensator elektrolityczny, transformator, gniazda bezpiecznikowe, rezystor R16). Rezystory R3 i  R5 są  złożone z  dwóch szeregowo połączonych rezystorów 68 V/0,25 W ze względu na straty mocy. Mając rezystor 0,5  W  można użyć w  miejsce dwóch jednego 120…150  V. Trzeba pamiętać, aby na  płytkach wykonanych bez przelotek końcówki elementów lutować obustronnie. Widok zmontowanych płytek lutownicy pokazano na fotograiach 5 i 6.

Uwaga! Należy zachować szczególną ostrożność podczas uruchamiania urządzenia włączonego do sieci 230 V AC. Najlepiej, aby wykonywała je osoba mająca odpowiednie uprawnienia oraz świadomość zagrożenia. Dołączanie oscyloskopu i  mierników powinno odbywać się tylko przy wyłączonym zasilaniu 230 V AC. Przycisk powinien być umieszczony na  odpowiednio długich przewodach wlutowanych w płytkę, a jego obudowa powinna być umieszczona w skurczonej rurce termokurczliwej, aby nie było możliwości dotknięcia jego doprowadzeń. Podczas prób całe urządzenie powinno być umieszczone stabilnie na  podłożu z materiału izolacyjnego np. kartonu lub nieprzewodzącego tworzywa sztucznego.

Podczas uruchamiania pomocna jak w większości takich przypadków będzie żarówka 60 W/230 V. Którą włączamy szeregowo w  obwód zasilania lutownicy. Następnie potencjometr ustawiamy w  prawym położeniu (na  najmniejszą wartość rezystancji). Po  włączeniu obwodu do sieci 230 V AC żarówka powinna błysnąć i zgasnąć. Po naciśnięciu przycisku żarówka powinna zacząć się lekko świecić, a  grot powinien rozgrzewać się. Jeżeli grot się rozgrzewa, możemy odłączyć szeregowo połączoną żarówkę, dołączyć zasilanie bezpośrednio do złącza i zacząć zmniejszać częstotliwość przebiegu, kręcąc potencjometrem w  lewo. Podczas ustawiania częstotliwości starajmy się tak ustawić częstotliwość, aby był słyszalny jednostajny cichy pisk podczas pracy układu, gdy grot jest zimny i  po  rozgrzaniu. Nie powinien być słyszalny z  układu dźwięk „pstrykania” i  inne podejrzane dźwięki. Zwykle świadczą one o zbyt niskiej częstotliwości pracy i ryzyku uszkodzenia tranzystorów. Gdy użyjemy grotu o mniejszym przekroju, będzie się on nagrzewał szybciej i cały transformator będzie się mniej grzał – takie rozwiązanie może się przydać przy lutowaniu np. elementów SMD. Przy częstotliwości 16 kHz i  grocie z drutu 2,5 mm2 rezultaty, które uzyskałem to: • czas pierwszego rozgrzewania do roztopienia cyny: 7 sekund, • czas drugiego rozgrzewania po  przerwie 5 sekund od  pierwszego rozgrzewania: 5 sekund. Później czasy rozgrzewania maleją, bo rozgrzewają się doprowadzenia grotu i nie odprowadzają tyle ciepła, więc po ich rozgrzaniu uzyskujemy czas rzędu 3 sekund. Na czas rozgrzewania ma też wpływ dokładność oczyszczenia miejsca styku grota z  jego doprowadzeniami, siła, z jaką jest przykręcony (jednak nie przykręcajmy zbyt mocno, aby nie zerwać gwintów), oraz siła, z jaką jest dokręcone uzwojenie wtórne do doprowadzeń grota i czy uzwojenie zasilające grot jest przylutowane do  doprowadzeń grota. Moc pobierana przez lutownicę wynosi ok. 82 W, z tego jakieś 60 W zasila grot. Tranzystory T3 i T2 pracują wtedy na granicy swoich możliwości przewodząc prąd o wartości wynoszącej chwilami około 2,2 A. Odważni mogą próbować jeszcze zmniejszać częstotliwość nawet do  10 kHz z tym, że uszkodzeniu mogą ulec tranzystory T3 i T2, a także pozostałe tranzystory i inne elementy. Starałem się wybierać tanie tranzystory T3 i T2, co za tym idzie nie mają one wygórowanych parametrów. Jeżeli ktoś potrzebuje większej mocy (krótszych czasów nagrzewania), może użyć tranzystorów o większej mocy. Po uruchomieniu urządzenie można w łatwo obudować przyciętymi na wymiar i sklejonymi klejem cyjanoakrylowym płytkami pleksi o grubości 2…3 mm lub umieścić w innej, gotowej obudowie.

inż. Łukasz Karłowicz k.karlowicz@interia.pl


ZAPRENUMERUJ – TERAZ O ⅓ TANIEJI! Na progu nowego roku szkolnego Młody Technik dostępny jest w prenumeracie ze zniżką

33%

Nie musisz płacić 118,80 zł za 12 kolejnych numerów w kiosku (9,90 zł x 12 = 118,80 zł). Jeśli zamówisz prenumeratę we wrześniu, zapłacisz tylko 79,60 zł! Jak zamówić: drogą mailową prenumerata@avt.pl

telefonicznie 22 257 84 22

na stronie www.avt.pl/prenumerata

albo po prostu wpłacając 79,60 zł na konto AVT-Korporacja sp. z o.o., 03-197 Warszawa, ul. Leszczynowa 11, BGŻ BNP Paribas 97 1600 1068 0003 0103 0305 5153 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


MINIPROJEKTY

Regulowany zasilacz napięcia symetrycznego

A15,2mm

A15,2mm 3

2

1

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

A O I

54

O

* Uwaga: Zestawy AVT mogą występować w następujących wersjach: AVT xxxx UK to  zaprogramowany układ. Tylko i  wyłącznie. Bez elementów dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie wyraźnie zaznaczono), bez elementów dodatkowych. AVT xxxx A+ płytka drukowana i  zaprogramowany układ (czyli połączenie wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymieniony w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw B, czyli elementy wlutowane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf AVT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link umieszczony w  opisie kitu) Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl

A I

AVT-1865 Dołączany do USB zasilacz napięcia symetrycznego z  układem ADP5071 (EP 8/2015) AVT-1857 Zasilacz modułowy (EP 7/2015) AVT-5415 Miernik panelowy do  zasilacza symetrycznego (EP 9/2013) AVT-1667 Stabilizator impulsowy 3 A  z  układem LM2576 (EP 3/2012) AVT-1731 Regulowany zasilacz uniwersalny 1,5... 32 V/3 A  (EP 8/2011) AVT-1572 Symetryczny zasilacz warsztatowy ±1,25 V...±25 V 1,5/5 A (EP 6/2010) AVT-1461 Uniwersalny zasilacz laboratoryjny 5 i  12 VDC/1 A  (EP 1/2008) AVT-727 Uniwersalny moduł zasilający (EdW 8/2004) AVT-1253 Zasilacz symetryczny (EP 11/1999) AVT-1066 Miniaturowy zasilacz uniwersalny (EP 8/1995)

zmontowano na dwustronnej płytce drukowanej o  wymiarach 33 mm× 62 mm. Jej montaż rozpoczyna się od wlutowania oporników, diod prostowniczych oraz innych elementów o niewielkich wymiarach, a kończy

3

(wymienione artykuły są w  całości dostępne na  FTP)

Schemat ideowy proponowanego rozwiązania pokazano na rysunku 1. Zasilacz to standardowa aplikacja układów LM317 (regulator napięcia dodatniego) oraz LM337 (regulator napięcia ujemnego), w których obudowie umieszczono wszystkie elementy wysokiej klasy regulatorów napięcia. Układy stabilizatorów do  prawidłowej pracy potrzebują zaledwie kilku elementów zewnętrznych, a  ich podstawowa aplikacja została rozszerzona o mostek prostowniczy i kondensatory iltrujące napięcie wejściowe. Układy LM317 i  LM337 mają zabezpieczenia, które zapobiegają je przed przegrzaniem lub uszkodzeniem spowodowanym zwarciem wyjścia. O  obecności napięcia na  wyjściu zasilacza informują diody LED1 i LED2. Napięcie wyjściowe ustala się za pomocą potencjometrów PR1 i PR2 w zakresie 1,2…24 V DC. Zalecane jest zastosowanie transformatora dostarczającego 2×17 V AC. Schemat montażowy zasilacza pokazano na  rysunku 2, a  sposób jego dołączenia do  transformatora na  rysunku  3. Całość

2

W ofercie AVT* AVT-1882 A AVT-1882 B AVT-1882 C Wykaz elementów: R1, R2: 120 V R3, R4: 2,2 kV PR1, PR2: 2 kV (pot. montażowy) C1…C4: 220 mF/35 V C9, C10: 10 mF/35 V C5…C8: 100 nF U1: LM317 U2: LM337 D1…D4: 1N4007 LED1: dioda LED 3 mm, czerwona LED2: dioda LED 3 mm, zielona B1: mostek prostowniczy Złącze ARK3/500 – 2 szt. Dodatkowe materiały na  FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8 • wzory płytek PCB Projekty pokrewne na  FTP:

AVT 1882

1

Zasilacz jest niezastąpiony podczas uruchamiania i testowania układów elektronicznych wymagających podwójnego, symetrycznego źródła napięcia zasilania. Można go też wbudować w  większe urządzenie. Umieszczony w  obudowie wraz z  transformatorem zasilającym może też posłużyć do  zbudowania nieskomplikowanego zasilacza o  wszechstronnym zastosowaniu, który przyda się do  zasilania wzmacniaczy operacyjnych, układów audio itp.

Rysunek 2. Schemat montażowy zasilacza symetrycznego

Rysunek 1. Schemat ideowy zasilacza symetrycznego


MINIPROJEKTY

Rysunek 3. Sposób dołączenia zasilacza do transformatora montując kondensatory elektrolityczne oraz złącza śrubowe. Zasilacz zmontowany ze  sprawnych elementów nie wymaga jakichkolwiek czynności uruchomieniowych

i po  dołączeniu napięcia wejściowego od razu jest gotowy do pracy. Układy U1 i U2 nie zostały wyposażone w  radiatory, dlatego moduł przewidziano

Wtórnik do karty dźwiękowej

Do wyjścia sygnału audio karty dźwiękowej komputera można dołączyć jednocześnie wiele urządzeń: wieżę, telewizor, zestaw głośnikowy itd. Każde z  tych urządzeń w  jakimś stopniu obciąża to  wyjście i  może się zdarzyć, że  stłumienie sygnału będzie zbyt silne. Ten układ został zaprojektowany po  to, aby zmniejszyć impedancję wyjściową karty dźwiękowej, jednocześnie nie wprowadzając słyszalnych zniekształceń. Jest przeznaczony do  współpracy z  systemami stereofonicznymi. Wtórnik można zasilać ze  złącza USB, których w  komputerze klasy PC jest na  ogół kilka. Ma cztery gniazda stereofoniczne typu jack 3,5 mm: jedno wejściowe, które służy do  wprowadzenia sygnału z  karty, oraz trzy wyjściowe, połączone ze  sobą równolegle. Płytkę zaprojektowano w  taki sposób, aby można ją było zatopić w  rurce termokurczliwej. Schemat wtórnika pokazano na  rysunku  1. Rolę wtórników napięciowych pełnią wzmacniacze operacyjne zawarte w układzie MCP602. Są  one zasilane niesymetrycznym napięciem 5 V i dlatego jest konieczne podniesienie potencjału na  wejściu nieodwracającym do  ok. 2,5  V. Napięcie to  wytwarza dzielnik złożony z  rezystorów R8 i  R9.

Kondensator C5, wraz z rezystancją wewnętrzną tego dzielnika, tworzy iltr, który blokuje zakłócenia, które mogłyby przedostawać się na wejścia. Wejścia nieodwracające polaryzowane są  poprzez rezystory R1 i  R2, które ustalają impedancję wejściową na  1  MV. Kondensatory C1 i  C2 odcinają składową stałą. Nie ma konieczności dodawania rezystorów kompensujących wpływ prądów wejściowych, ponieważ są one bardzo małe, rzędu pikoamperów. Sygnał wyjściowy pobierany jest za pośrednictwem kondensatorów C3 i  C4 o  stosunkowo dużej pojemności (22  mF), przez co  jest możliwe przenoszenie niskich tonów. Rezystory R4 i  R5 mają za zadanie

do pracy ze stosunkowo niewielkim prądem obciążenia –  rzędu 300 mA, mimo iż  maksymalna wydajność prądowa stabilizatorów jest znacznie większa. EB

AVT 1883

W ofercie AVT* AVT-1883 A Wykaz elementów: R1, R2: 1 MV (SMD 0805) R3: 0 V (SMD 1206) R4…R9: 100 kV (SMD 0805) C1, C2, C5, C6: 220 nF (SMD 0805) C3, C4, C7: 22 mF/16 V (SMD „B”) US1: MCP602 (SO8) L1: dławik 47 mH (SMD 1210) J1…J4: jack stereo do druku J5: USB A  męski, kątowy, THT Dodatkowe materiały na  FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8 • wzory płytek PCB Projekty pokrewne na  FTP: (wymienione artykuły są  w  całości dostępne na  FTP)

AVT-5492 HUB USB + USB Audio DAC (EP 2/2015) AVT-5449 USB Audio DAC – karta muzyczna z  interfejsem USB (EP 5/2014) AVT-5430 USB Audio –  karta muzyczna z  interfejsem USB (EP 1/2014) AVT-5299 Karta dźwiękowa z  przetwornikiem PCM2902 i  interfejsem USB (EP 7/2011) AVT-5188 Kompaktowy przetwornik C/A  dla Audiofilów (EP 6/2009) AVT-5146 4-portowy hub USB 2.0 (EP 9/2008) * Uwaga: Zestawy AVT mogą występować w  następujących wersjach: AVT xxxx UK to  zaprogramowany układ. Tylko i  wyłącznie. Bez elementów dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie wyraźnie zaznaczono), bez elementów dodatkowych. AVT xxxx A+ płytka drukowana i  zaprogramowany układ (czyli połączenie wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymieniony w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw B, czyli elementy wlutowane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf AVT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link umieszczony w  opisie kitu) Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

55


MINIPROJEKTY +5V

2

C1 220n

R3

1

R R L L

L

SW L

R

SW R

3 4

0 J1

GND

C3 22u/16V B

8

US1A MCP602

R4 100k

R1 1M

R6 100k

J2

jack stereo

SW GND

J3

SW

GND

US1B MCP602

C4 22u/16V B

8

R2 1M

jack stereo

+5V

5

L

SW L

R

SW R

7 jack stereo 4

6 C2 220n

R5 100k

GND

R7 100k L

SW L

R

SW R

J4

jack stereo J5 +5V

R8

+5V

100k C7 22u/16V B

C6 220n

C5 220n

R9 100k

L1 47u1210

1 2 3 4 5

+5V DATA– DATA+ GND COVER USB connector

+5V

Rysunek 1. Schemat ideowy wtórnika do karty muzycznej

Rysunek 2. Schemat montażowy wtórnika do karty muzycznej

zlinearyzować stopień wyjściowy wzmacniacza operacyjnego poprzez zapewnienie ciągłego wypływu prądu z wyjścia. Rezystory R6 i R7 utrzymują potencjał ujemnych okładek na  zerze oraz –  po  wyłączeniu układu – rozładowują kondensatory wyjściowe. Dławik L1 oraz kondensatory C6 i C7 iltrują napięcie zasilające układ. Jest to szczególnie konieczne przy zasilaniu układu z  komputera, w  którym układy cyfrowe generują zakłócenia na  liniach zasilających. Wartości elementów zostały tak dobrane, aby było przenoszone całe spektrum akustyczne (20 Hz…20 kHz). Ten wymóg będzie spełniony dla wypadkowej impedancji obciążenia większej od ok. 400 V. Układ zmontowano na jednostronnej płytce drukowanej o wymiarach 18 mm×70 mm, której schemat montażowy zamieszczono na  rysunku 2. Po  prawidłowym montażu

ze sprawdzonych elementów wtórnik nie wymaga jakichkolwiek czynności uruchomieniowych i  jest od  razu gotowy do  działania. Złącze USB służy jedynie do  zasilania układu, dlatego źródłem napięcia może być inne urządzenie, jak wzmacniacz czy oddzielny zasilacz. Podczas eksploatacji układu należy uważać, aby wartość peak-to-peak sygnału wejściowego nie przekraczała ok. 3,5  V, ponieważ grozi to  wystąpieniem efektu „zatrzaskiwania się” wzmacniaczy, co  skutkuje przykrymi zniekształceniami. Dla typowych kart dźwiękowych, zapewniających na  wyjściu amplitudę ok. 1,5  V (3  Vpp), efekt ten nie powinien mieć miejsca. Na płytce zamontowano trzy gniazda wyjściowe, połączone ze sobą równolegle. Jeżeli ich liczba okaże się zbyt mała, można zastosować dodatkowe rozgałęźniki sygnału.

Michał Kurzela, EP

REKLAMA

Fotograia Kurs dla Poczatkujacych to magazyn dla wszystkich fotografujących – bez względu na to jak zaawansowanym sprzętem dysponują. Adresowany jest do szerokiego grona entuzjastów fotografowania, którzy chcą lepiej panować nad swoim aparatem i w pełni wykorzystać jego możliwości – początkujących, którzy chcą po prostu robić lepsze zdjęcia. Na 200 bogato ilustrowanych stronach, nasi eksperci w bardzo przystępny sposób przybliżają najważniejsze zależności i prawa rządzące fotograią, podpowiadają jak lepiej komponować ujęcia, oraz jak radzić sobie w typowych sytuacjach by nasze rodzinne, podróżnicze czy portretowe fotograie były zawsze ostre oraz idealnie naświetlone. Do wydania papierowego dołączona jest płyta CD, na której dostępnych jest aż 10 praktycznych wideo-lekcji obsługi aparatu.

https://goo.gl/CNmlq9 56 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


MINIPROJEKTY

AVT 1884

Izolator magistrali SPI

Moduł umożliwia galwaniczną izolację magistrali SPI pracującej z maksymalną częstotliwością sygnału zegarowego 17  MHz. W  module zastosowano nowoczesny układ ADUM3151 z  rozbudowanej rodziny izolatorów oferowanych przez Analog Devices. na  rysunku 2. Montaż jest typowy i  nie wymaga opisu. Poprawnie zmontowany moduł nie wymaga uruchamiania i  jest gotowy do  pracy po  włączeniu zasilania. W  module można wykorzystać –  w  zależności od  potrzeb –  układy ADUM3152/3 o  odpowiadającej koniguracji kanałów pomocniczych (1×I/2×O lub 3×I).

Oprócz izolacji magistrali, możliwe jest także izolowanie trzech sygnałów sterujących o niższej częstotliwości (do  250 kb/s), co  znacząco uprasza aplikację przy adresowaniu sprzętowym SPI lub obsłudze przerwań. Moduł współpracuje z logiką 5 V i ma wbudowaną przetwornicę napięcia 5  V/5  V ułatwiającą zasilanie izolowanego układu. Schemat modułu pokazano na  rysunku  1. Moduł izolatora zmontowano jest na  dwustronnej płytce drukowanej, której schemat montażowy zamieszczono

Adam Tatuś, EP PW

1

CE1 10uF

+ IN

+ OUT

4

+

+ CE2 10uF 2

– IN

– OUT

3

AMS0505S C1 0.1uF

C2 0.1uF

U1

J1 1

VDD1

1 VDD1

2

GND1

2 GND1

J2 VDD2

20

VDD2

1

GND2

19

GND2

2 3

3

3 MCLK

SCLK

18

4

4 MO

SI

17

4

5

5 MI

SO

16

5

6

6 ! MSS

! SS

15

6

7

7 VIA

VOA

14

7

8

8 VIB

VOB

13

8

9 VOC

VIC

12

9

GND2

11

9

10 GND1

Rysunek 1. Schemat ideowy izolatora SPI

Rysunek 2. Schemat montażowy izolatora SPI W ofercie AVT* AVT-1884 A Wykaz elementów: C1, C2: 100 nF (SMD 0805) CE1, CE2: 10 mF (elektrolit. R=5 mm) PW: AMS0505S (przetwornica 5 V/5 V, 1 W) U1: ADUM3151BRSZ (SSOP20) J1, J2: złącze SIP9 Dodatkowe materiały na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8 • wzory płytek PCB Projekty pokrewne na  FTP: (wymienione artykuły są  w  całości dostępne na  FTP)

AVT-5476 Energia – Arduino dla Launchpada – zasilacz buforowy PWRPack (EP 11/2014) AVT-1795 AVTduino Battery Shield (EP 3/2014) * Uwaga: Zestawy AVT mogą występować w  następujących wersjach: AVT xxxx UK to  zaprogramowany układ. Tylko i  wyłącznie. Bez elementów dodatkowych. AVT xxxx A płytka drukowana PCB (lub płytki drukowane, jeśli w  opisie wyraźnie zaznaczono), bez elementów dodatkowych. AVT xxxx A+ płytka drukowana i  zaprogramowany układ (czyli połączenie wersji A  i  wersji UK) bez elementów dodatkowych. AVT xxxx B płytka drukowana (lub płytki) oraz komplet elementów wymieniony w  załączniku pdf AVT xxxx C to  nic innego jak zmontowany zestaw B, czyli elementy wlutowane w  PCB. Należy mieć na  uwadze, że  o  ile nie zaznaczono wyraźnie w  opisie, zestaw ten nie ma obudowy ani elementów dodatkowych, które nie zostały wymienione w  załączniku pdf AVT xxxx CD oprogramowanie (nieczęsto spotykana wersja, lecz jeśli występuje, to  niezbędne oprogramowanie można ściągnąć, klikając w  link umieszczony w  opisie kitu) Nie każdy zestaw AVT występuje we wszystkich wersjach! Każda wersja ma załączony ten sam plik pdf! Podczas składania zamówienia upewnij się, którą wersję zamawiasz! (UK, A, A+, B lub C). http://sklep.avt.pl

REKLAMA

ep.com.pl/KAP

http://

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

57


T E M AT N U M E R U EMBEDDED SECURITY

NOTATNIK KONSTRUKTORA

Zabezpieczenia w systemie embdeded Dziś nikogo już nie trzeba przekonywać, że  zabezpieczenie systemu embedded odgrywa ważną rolę, ponieważ rozmaite skomputeryzowane urządzenia towarzyszą nam w  różnych dziedzinach życia i  nierzadko „posiadają” zapisane w  pamięci wrażliwe dane, które niekoniecznie mamy ochotę ujawniać. Dodatkowe wyzwania przed konstruktorami i  programistami stawia technologia IoT. Wiele mówi się o  niej w  kontekście ochrony prywatności, ponieważ z  założenia ma nas opleść sieć czujników, które będą przesyłały pomiędzy sobą różne, dotyczące nas dane. Ważnym i  może bardziej dotyczących konstruktorów zagadnieniem jest ochrona urządzeń przed kopiowaniem –  wytwarzaniem tak zwanych podróbek. Jest to  proceder niebezpieczny, ponieważ oprócz strat inansowych, prawdziwy producent traci rynek, cierpi na  tym jego wizerunek. Traci też konsument, który czasami kupuje co  prawda tańsze urządzenie, ale nierzadko kiepsko wykonane, niespełniające norm bezpieczeństwa, bez wsparcia technicznego. Powodów, dla których zabezpieczamy urządzenia embedded może być wiele –  w  artykule zajmiemy się nie motywacją, ale omówimy potencjalne zagrożenia, metody stosowane przez „piratów produktowych” i  podamy wskazówki, ułatwiające wykonanie poprawnego zabezpieczenia. Co  prawda, nie opiszemy gotowych rozwiązań, ale wskażemy kierunki poszukiwań i  podamy ogólne zalecenia dotyczące ich opracowywania. Tak zwane piractwo produktowe dotyczy nie tylko urządzeń elektronicznych i  zajmuje się tworzeniem ich kopii lub „podróbek”. Współcześni „piraci” podrabiają również komponenty elektroniczne, kopiują oprogramowanie, ekstrahują unikatowe rozwiązania

58 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

techniczne, które następnie stosują we własnych urządzeniach. Oiarami piratów produktowych podają głównie przedsiębiorstwa, których produkty są kopiowane. Tracą w ten sposób pieniądze, rynek, cierpi wspierana przez nie marka oraz wizerunek producenta.

Współczesne urządzenia elektroniczne mogą być budowane w taki sposób, że płytka drukowana zawiera niewiele komponentów lub wręcz gotowe moduły, natomiast główną wartość stanowi oprogramowanie. Nierzadko do jego utworzenia niezbędna jest


Zabezpieczenia w systemie embdeded wiedza i  sporo czasu –  inwestycję liczy się w  latach spędzonych na  eksperymentowaniu, zdobywaniu niezbędnego doświadczenia, wykonaniu oprogramowania prototypu, a następnie testowaniu i wyszukiwaniu błędów. W takiej sytuacji nikogo raczej nie dziwi fakt, że  przedsiębiorstwo chce odzyskać zainwestowane pieniądze, zanim ktoś wpadnie na podobny pomysł, zduplikuje rozwiązanie lub po prostu je skopiuje. Nie ma zabezpieczeń doskonałych, nie do obejścia czy złamania. Przekonał się o tym znany producent komponentów elektronicznych, który wykonał (jego zdaniem) doskonale zabezpieczony mikrokontroler przeznaczony dla wojska. Pamięć programu i danych wykonano w  postaci statycznego RAMu zasilanego za pomocą baterii, a  każda próba otwarcia obudowy układu kończyła się odłączeniem zasilania i utratą całej zawartości. Ktoś wpadł na  pomysł, że  w  bardzo niskiej temperaturze nośniki ładunku nie są już tak ruchliwe, zamroził układ, otwarł obudowę i… odczytał jego zawartość. Podobno w  ten sam sposób można odczytać zawartość dynamicznej pamięci RAM –  w  niskiej temperaturze zachowa ona dane pomimo odłączenia zasilania. Zabezpieczenie może być jedynie na  tyle dobre, aby inwestycja czasu i  środków na  jego obejście po  prostu nie opłaciła się. Dostępne narzędzia służące do  zabezpieczenia produktów są tak różne, jak zabezpieczane produkty. Najbardziej oczywistym i  najtrudniejszym do  obejścia zabezpieczeniem są  posiadane przez przedsiębiorstwo wiedza i doświadczenie składające się na tak zwany „know how” związany z  produktem i jego aplikacjami. Ochrona wiedzy stanowi odrębne zagadnienie, które wykracza poza ramy artykułu, aczkolwiek zapewne jej część może być pozyskana dzięki analizie funkcjonalności wyrobu. Efektywne zabezpieczenie przed piractwem wymaga nie tylko ochrony wiedzy, ale również zabezpieczenia powstałego na  jej bazie systemu (urządzenia). Dlatego na każdym etapie projektowania urządzenia za podstawowy cel trzeba uznać nie tylko funkcjonalność, ale również ochronę własności intelektualnej. Należy przy tym brać pod uwagę powszechną już dziś dostępność nowoczesnych narzędzi umożliwiających kompleksową analizę systemu, możliwości tzw. inżynierii wstecznej oraz niepożądane manipulacje komponentami lub ingerencję w  oprogramowanie. Aby zaplanować skuteczną obronę, należy…

… Rozważyć scenariusz ataku Scenariusze ataku są zależne od rodzaju produktu i  mogą znacznie różnić się. Co  ważne, w  urządzeniach można wyróżnić komponenty bardziej lub mniej istotne, a  więc rozpatrując je w kategoriach bezpieczeństwa

– takie, na  których ochronie będzie nam szczególnie zależało lub nie będzie zależało w ogóle. Na przykład, głównym zagrożeniem dla producenta konsoli do  gier nie jest to, że ktoś wykona klon konsoli, ale to, że manipulowanie sprzętem lub oprogramowaniem umożliwi użytkownikom, również tym niemającym odpowiedniej wiedzy technicznej, korzystanie z  nielegalnego, tak zwanego pirackiego oprogramowania. To  samo dotyczy urządzeń służących do nawigacji satelitarnej –  producenci chcą sprzedawać najnowsze mapy do swoich urządzeń i dlatego są zainteresowani nie tylko zabezpieczeniem oprogramowania, ale również dystrybuowanych map przed kopiowaniem. Z  drugiej strony, czasami urządzenie do  nawigacji pochodzi od  innego producenta (może to  być np. smartfon lub tablet z  odbiornikiem GPS), więc nie są  aż  tak bardzo zainteresowani zabezpieczeniem przed wykonywaniem podróbek. Inną ciekawą grupę urządzeń stanowią czytniki kart płatniczych. Te  dla zapewnienia najwyższego poziomu bezpieczeństwa wymagają nie tylko zabezpieczenie sprzętu, ale również komunikacji wewnętrznej, zewnętrznych protokołów komunikacyjnych i oprogramowania. Trzeba też dać użytkownikowi minimalną możliwość kontroli czy wszystko odbywa się zgodnie z  zasadami. Znane są  jednak przypadki czytników, wewnątrz których zainstalowano dodatkowy hardware. Jego zadaniem było zarejestrowanie numeru PIN i numeru karty, a następnie przesłanie ich do  oszusta na  przykład –  za pomocą komunikatu SMS. W ten sposób, zanim posiadacz konta miał szansę rozpoznać zagrożenie, zostawał okradziony. W  takiej sytuacji bardzo trudno jest udowodnić bankowi, że to nie my jesteśmy winni. Istnieje znaczna różnica pomiędzy opisywaną metodą, w której rezultat osiągnięto za pomocą dodatkowego, zainstalowanego wewnątrz czytnika trojana sprzętowego, a  tak zwanym skimmingiem, w  którym instaluje się odpowiednie urządzenie na zewnątrz. Możliwość przeprowadzenia takiego ataku świadczy o kiepskim poziomie zabezpieczeń sprzętowych i  programowych oraz o  niskim poziomie dystrybucji oraz obsługi posprzedażnej. Mimo pozornego braku związku z  poziomem zabezpieczeń, właściwy serwis oraz sieć dystrybucji pomagają w unikaniu zagrożeń tego typu i umożliwiają szybką reakcję na zagrożenia. Istotnym czynnikiem, który powinien być brany pod uwagę przy rozważaniu niezbędnego poziomu zabezpieczeń jest czas życia produktu. Na  przykład smartfon „uzbrojony” w  przełomowe technologie traci atrakcyjność po  około od  2 do  4 lat, gdy zastosowana w  nim technologia staje się przestarzała lub na rynku pojawia się więcej podobnie wyposażonych smartfonów. Daje

to znacznie krótsze ramy czasowe dla osób chcących wyprodukować podróbkę – po prostu muszą one rozważyć czy opłaca się uruchomić produkcję. Z drugiej strony, na rynku jest szereg różnych urządzeń, których okres użytkowania jest znacznie dłuższy –  są  to  na  przykład kosztowne, częstokroć używane latami, urządzenia przemysłowe. Jest oczywiste, że  osoby chcące wykonać kopię urządzenia na  najwyższym poziomie posługują się ujęciem produktowym, a  na  najniższym rozpatrują komponenty lub wręcz –  naruszenie ich integralności. Na czym polegają oba podejścia? Na najwyższym poziomie „pirat produktowy” przygląda się np. obudowie, złączom, analizuje, które z zastosowanych produktów są standardowe i które będzie można nabyć w normalnej sieci dystrybucji. Jednocześnie rozpatruje czy do  uzyskania podobnego efektu będzie wymagana jakaś specjalistyczna wiedza i czy inwestycja związana z  jej zdobyciem opłaci się. Na  tym etapie może też zapaść decyzja czy będzie wykonana dokładna kopia, czy po prostu podobnie funkcjonujące, ale identycznie wyglądające (lub podobne) urządzenie. Od tej decyzji będą zależały dalsze kroki oraz to czy zostanie podjęta próba odczytania zawartości pamięci programu i innych, które są niezbędne do funkcjonowania urządzenia. Zależnie od  złożoności systemu mogą być zaplanowane specyiczne strategie związane z  zastosowanymi komponentami. Urządzenie można podzielić na poszczególne bloki, a następnie – używając odpowiednich przyrządów pomiarowych oraz dokonując analiz –  atakujący mogą zrozumieć sposób, w jaki działają nawet najbardziej złożone komponenty. Na tym etapie rozważa się też, które części można zastąpić standardowymi, a które będą wymagały dalszej, pogłębionej analizy. Innymi słowy, wysiłki mogą być skupione nie na całości urządzenia, ale na  najbardziej złożonej jego części i  –  jeśli to potrzebne – dla tych potrzeb można wynająć odpowiednich specjalistów. Takie zredukowane podejście pozwala piratom produktowym na działanie na kilka sposobów: Skupienie i  specjalizacja. Jedną z  opcji jest użycie specjalizowanych metod i narzędzi, które umożliwiają zastosowanie metod inżynierii wstecznej do  poszczególnych komponentów składowych. Dla przykładu, obudowa może być skopiowana za pomocą skanera 3D. Jednocześnie ten sam skaner może ją zwymiarować i utworzyć model cyfrowy niezbędny dla oprogramowania EDA do  zaprojektowania odpowiedniej płytki 1) Michael Stell „17 Mistakes Microsoft Made in Xbox Security System”, 22nd Chaos Communication Congress 2) Heise News „Visa: Regelmäßiges Wiegen der Kartenterminals schütz vor Manipulationen”, wiadomość umieszczona na  portalu dnia 09/07/2010 pod adresem http://heise.de/-1035169

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

59


T E M AT N U M E R U EMBEDDED SECURITY

NOTATNIK KONSTRUKTORA drukowanej. Na poziomie oprogramowania za przykład może posłużyć analiza kodu binarnego (wynikowego) umieszczonego w pamięci, która wymaga specjalistycznej wiedzy, oprogramowania i  sprzętu, zależnych od systemu mikroprocesorowego. Zastępowanie i modyikowanie. Jeśli jakieś komponenty okazują się odporne na metody stosowane przez inżynierię wsteczną, może być zastosowana alternatywna technologia lub typowy komponent o  zbliżonej funkcjonalności. W  rezultacie, sklonowany wyrób może być gorszy, ponieważ piraci produktowi zwykle zastępują nowoczesną technologię starszą, mającą mniejsze możliwości lub co  gorsze –  niemającą już wsparcia. Znamienne jest też to, że  spadek funkcjonalności produktu jest trudno dostrzec na pierwszy rzut oka, ponieważ sklonowany wyrób może podobnie wyglądać i mieć zbliżoną jakość wykonania, a różnice są jedynie funkcjonalne. Jeszcze inna sytuacja może wystąpić w wypadku naśladownictwa i próby wykonania kopii funkcjonalnej – tu może zdarzyć się pełne odstępstwo od  oryginału, które będzie wywierało wpływ nie tylko na  funkcjonalność, ale również na  bezpieczeństwo użytkowania. Jak łatwo domyślić się, wykonanie odpowiedniej kopii lub podróbki, pomimo najlepszych chęci i wiedzy projektanta, to czasami i przeważnie jedynie kwestia „czasu i pieniędzy”. Czy wobec tego warto chronić się przed podróbkami i w jaki sposób? Aby skutecznie chronić swoje produkty, trzeba po  pierwsze założyć jaki jest…

rozkładany na najmniejsze „cegiełki” i  jest przeprowadzana analiza zależności funkcjonalnych i  technologicznych. Jednocześnie określa się, które komponenty są  standardowe (dostępne w handlu), a które wykonywane na  zamówienie. Zmywanie oznaczeń układów scalonych może tu utrudnić pracę, ale jedynie amatorom, niedysponującym odpowiednią wiedzą i sprzętem. W  niektórych sytuacjach może pomóc samodzielne analizowanie produktu. Można wykonać te  same czynności, których spodziewamy się po „piratach”: rozłożyć produkt na  poszczególne komponenty, odrębnie poddać każdy z nich analizie określając ważność, stopień komplikacji i  wymagany poziom zabezpieczenia. Przy analizowaniu takiego urządzenia istotne będzie też to, w  jaki sposób komponenty są  połączone ze  sobą i  jak wymieniają dane –  czy protokół komunikacyjny jest jawny, czy szyfrowany, jak ważna jest komunikacja dla danego komponentu i czy mogą na tym skorzystać osoby próbują-

Znaczny wpływ na bezpieczeństwo produktu ma jego charakterystyka technologiczna. Co  należy rozumieć pod tym pojęciem? Po pierwsze, jakich technologii użyto do jego wyprodukowania. Tu, co  prawda, trudno zabezpieczyć się, ponieważ na  rynku jest dostępnych wiele irm oferujących zaawansowane usługi montażu lub obróbki mechanicznej, ale czasami można wpaść na  jakiś pomysł, który będzie trudny do  skopiowania przez innych. Po drugie, jakich technologii – w rozumieniu komponentów elektronicznych – użyto w celu osiągniecia danej funkcjonalności. Czy są to technologie ogólnie dostępne i  dobrze znane, czy nowoczesne, opracowane przez przedsiębiorstwo, będące dopiero w fazie upowszechniania? Jak łatwo domyślić się, starsze technologie zwykle są  dostępne w  handlu i  mogą być używane przez każdego. Dlatego często myślenie kategoriami redukcji kosztów (np. zastosujmy coś, co  jest tanie, dobrze znane i już od dawna dostępne w handlu) może być w dłuższej perspektywie

ce wykonać kopię lub dokonać włamania czy zmodyikować urządzenie. Warto w tym miejscu wspomnieć, że te działania może za nas wykonać wynajęta irma, specjalizująca się w ocenie ryzyka kopiowania urządzeń. Trzeba zwrócić uwagę na  fakt, że  takie ujęcie może doprowadzić do  myślenia kategoriami „zabezpieczenia modularnego”, co  może być niebezpieczne. Wydaje nam się wtedy, że  skoro poszczególne moduły urządzenia są  zabezpieczone, to  całość też musi być bezpieczna. Nic bardziej mylącego –  zabezpieczenia poszczególnych modułów, jedno po drugim, jest stosunkowo łatwo usunąć lub zastąpić moduł podobnym, mającym zbliżoną lub tę samą funkcjonalność. Dlatego dobrze zabezpieczone urządzenie powinno stanowić całość, rodzaj współpracujących i  współzależnych modułów, komunikujących się za pomocą bezpiecznego protokołu.

zgubne dla przedsiębiorstwa i produktu. Dla podkreślenia wagi użytych technologii oraz komponentów, posłużę się przykładem związanym z  analizowaniem kodu wynikowego w  pamięci programu. Jeśli już podejmującemu atak uda się odczytać tę pamięć, to zależnie od zastosowanego mikroprocesora będzie miał dostępnych wiele narzędzi softwareowych i  sprzętowych (w  tym dla niektórych rdzeni całkowicie za darmo) lub tylko kilka, dostępnych od  wybranych producentów i niekoniecznie za darmo, więc zastosowanie mniej popularnego mikrokontrolera w  naturalny sposób ogranicza możliwości hakera. Ważnym zagadnieniem jest również rozpoznanie czy trudno jest wyekstrahować

… Cel ochrony Co oczywiste, pierwszym i  zapewne podstawowym celem ochrony dla wielu przedsiębiorstw będzie zabezpieczenie dochodu związanego ze  sprzedażą urządzenia oraz swojego udziału w  rynku. Jednak –  bazując na wspomnianym wcześniej przykładzie terminala do obsługi płatności – celem ochrony może też być zabezpieczenie przed nieautoryzowanym dostępem do  różnych zasobów lub urządzeń. Celem może też być ochrona wizerunku producenta, który może stracić opinię solidnego, oferującego dobrze zabezpieczone i  zaawansowane technologicznie produkty. Co  paradoksalne, w  określeniu celu ochrony mogą pomóc sami piraci – cennych wskazówek dostarczy analiza podróbek dostępnych w handlu. Trzeba jednak w tym miejscu wspomnieć, że  zupełnie inny cel ochrony może być ustalony przez przedsiębiorstwo o  ugruntowanej pozycji na  rynku, a  zupełnie inny przez irmę, która dopiero debiutuje. Zwykle doświadczenie podpowiada też, co  może być głównym celem ataku i jak się przed nim zabezpieczyć. Najczęściej używaną metodą kopiowania produktu jest drobiazgowa analiza komponentów. W  takiej sytuacji wyrób jest

60 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

3) Andreas Henke, Mark Jansen „Vergleich Kathrein UFS 910 Original mit China Klone”, opracowanie dostępne w formacie PDF pod adresem http://goo.gl/IsptSp


Zabezpieczenia w systemie embdeded wiedzę z  produktu. To  znaczy, jak trudno jest pozyskać cały know how, który włożono w jego opracowanie, który może dotyczyć zarówno komponentów mechanicznych, jak i  elektronicznych, być też związany z  doświadczeniami irmy jako producenta i dystrybutora. Co  gorsze, wzajemne zależności pomiędzy poszczególnymi częściami składowymi, pomimo jakby zupełnie innych, niezwiązanych ze  sobą domen, mogą ujawniać szczegóły dotyczące funkcjonowania urządzenia lub jego oprogramowania. Dla zilustrowania omawianych zagadnień, posłużmy się przykładem…

… Klonowania odbiornika cyfrowego Kathrein UFS 910 Niemiecka irma Kathrein opublikowała ciekawy dokument opisujący klon odbiornika UFS 910 wykonany w 2008 r. W dokumencie opisano różnice pomiędzy kopią a oryginalnym odbiornikiem. Dokument jest świetną ilustracją sposobu, w jaki działają piraci produktowi. Większość z  konsumentów identyikuje produkt po  opakowaniu i  obudowie. Dlatego też imitatorzy poświęcili im szczególną uwagę, aby nie wzbudzać niepokoju klientów już przy pierwszym kontakcie ze  skopiowanym odbiornikiem. Obudowę kopii wykonano tak starannie, że  różnice można było zauważyć przez porównanie stojących obok siebie wyrobów: oryginalnego i  podróbki. Podobnie starannie wykonano opakowanie. Znamienne było to, że numer seryjny zamieszczony na tabliczce na  urządzeniu nie odpowiadał naklejce na  opakowaniu. Kopia była również nieco spóźniona, ponieważ urządzenie wyglądało tak, jak starsza wersja produktu. Inaczej (w porównaniu z oryginałem) rozmieszczono otwory wentylacyjne. Występowały również niewielkie różnice kolorów obudowy (oryginalna była mniej błyszcząca) i  elementów manipulacyjnych (kanty, niestaranne wykończenie), jednak nie dało się tego zauważyć nie mając obok oryginału. Zwykle – ze względu na kiepski proces technologiczny mający zastosowanie przy produkcji pierwszy kopii –  łatwo było wykryć podróbki poprzez uważne przyjrzenie się odbiornikowi, ale po pewnym czasie ich wygląd poprawił się na tyle, że na pierwszy rzut oka, nie dokonując dokładniejszej analizy, bardzo trudno było rozpoznać czy ma się do czynienia z oryginałem, czy z kopią. Podróbki korzystają dzięki dostępności narzędzi, takich jak kamery o  dużej rozdzielczości, skanery i  drukarki 3D oraz innym urządzeniom tego typu. Z  tego powodu producentom jest bardzo trudno zabezpieczyć zewnętrzny wygląd produktu. W  związku z  tym uciekają się do  metod znakowania obudów i ważniejszych komponentów za pomocą trudnych do podrobienia

hologramów, etykiet odczytywanych elektronicznie, atramentów wytwarzanych przy użyciu technologii chronionej tajemnicą, a ostatnio nawet do  znakowania za pomocą nanotechnologii (mikrocząstki, molekuły DNA, powierzchnie skanowane za pomocą lasera, znaki wodne możliwe do sprawdzenia jedynie za pomocą specjalnych czytników), znaczników RFID i  innych metod. Te  metody pozwalają co  prawda na  ustalenie czy mamy do  czynienia z  wyrobem oryginalnym, czy z  podróbką, ale w  żaden sposób nie zabezpieczają własności intelektualnej producenta. Wróćmy jednak do  odbiornika HDTV irmy Kathrein. Jeśli bliżej przyjrzymy się jego wnętrzu, można dostrzec pewną liczbę standardowych komponentów, którymi zastąpiono te używane w oryginalnym wyrobie. Są wśród nich złącza USB i CI (wyglądające identycznie, ale dostarczane przez inną irmę), złącze zasilania niezgodne z wymaganiami norm DIN-EN, inny moduł SCART, inny wyłącznik sieciowy. Oprócz nich zastosowano też inny wyświetlacz, od  innego producenta, mający znaki o  nieco innej wielkości. Można zauważyć również kilka zmian wynikających z  niewiedzy lub nieznajomości norm spełnianych przez oryginalny wyrób. Na  przykład, pomiędzy zasilaczem a  modułem RS232 w  oryginalnym produkcie zastosowano przekładkę izolacyjna po to, aby inalny wyrób był zgodny z normami bezpieczeństwa obowiązującymi w  Europie. Podobną przekładkę zastosowano też w  podróbce, jednak została ona niepoprawnie zamontowana. W  zasilaczu oryginalnego wyrobu zintegrowano obwód zapewniający minimalny pobór energii w  trybie czuwania (deep standby circuit). Tego obwodu nie ma podróbce (zasilacz w ogóle wygląda przez to inaczej), co może nie wpływa na jej funkcjonalność, ale obniża jakość gotowego wyrobu. Na fotograiach rzucają się też w  oczy kable połączeniowe –  te  oryginalne są  w  postaci taśm, te  podrabiane są  poprowadzone jako pojedyncze przewody. Co  ciekawe, w  niektórych napisach są  literówki. Na  przykład, oryginalne złącze interfejsu zewnętrznego jest „DATA I/O”, natomiast na podróbce widnieje napis „DITA I/O”. Inaczej wygląda też nadajnik zdalnego sterowania – oryginalny jest o kilka milimetrów krótszy, ma nieco inne napisy (na podróbce są  większe, mniej starannie nadrukowane czcionki), różni się też ozdobnymi detalami i nadrukami. Po otwarciu pokrywy baterii, w  podróbce zobaczymy kontakty w postaci sprężyn z drutu, natomiast w oryginale są  blaszki. To  są  jednak naprawdę drobne różnice i nie mając obok siebie oryginału i  podróbki, trudno jednoznacznie osądzić czy wyrób jest oryginalny, czy nie.

Ochrona systemu embedded Aby osiągnąć żądany poziom zabezpieczenia urządzenia embedded, powinno się odrębnie przeanalizować oprogramowanie i warstwę sprzętową. Z drugiej strony, obie te domeny muszą ze sobą współgrać, być skoordynowane, aby urządzenie mogło osiągnąć maksymalny poziom zabezpieczeń. Powody, które skłaniają do zajęcia się inżynierią wsteczną mogą być różne, od zwykłej ciekawości jak coś jest zrobione lub ile można zyskać wprowadzając na rynek dany produkt (można w  ten sposób oszacować koszt produkcji i odnieść go do ceny rynkowej), do  chęci kradzieży własności intelektualnej. Zdobyta w ten sposób wiedza może być wykorzystana w  procesie opracowywania własnych produktów i/lub porównania ich z konkurencją. Jeśli irma chce rozszerzyć ofertę swoich produktów inżyniera wsteczna w odniesieniu do  dostępnych na  rynku wyrobach konkurencyjnych jest częstokroć łatwiejsza i  tańszą metodą pozyskiwania wiedzy i  informacji, niż inwestowanie czasu i pieniędzy w  prace badawcze oraz opracowywanie nowych produktów i  technologii. Z  prawnego punktu widzenia, inżynieria wsteczne leży w  „szarej streie”, ponieważ z  jednej strony nikt nie zabrania zajrzenia do wnętrza właśnie nabytego przez nas urządzenia i  zapoznania się z tym, jak działa, ale z drugiej dobrze wiemy, że  jeśli chcielibyśmy wykorzystać zdobytą wiedzę w celach komercyjnych, to taka działalność jest niezgodna z prawem i może naruszać prawa patentowe. Niemniej jednak istnieją przedsiębiorstwa, takie jak Canadian Chipworks, które specjalizują się w  inżynierii wstecznej w  celu zapewnienia swoim usługobiorcom ochrony patentowej. W publikacji z 2009 r. irma wymieniła procedury, które są przez nią używane do analizowania układów scalonych: • Rozpoznanie produktu –  identyikacja układu scalonego, jego obudowy, płytek wewnętrznych i komponentów. • Poziom analizy systemowej –  analiza funkcjonalności, ścieżek sygnałowych i zależności czasowych. • Poziom analizy procesowej –  rozpoznanie zastosowanej technologii. • Ekstrakcja obwodów – rekonstrukcja obwodów układu scalonego. Takie same lub bardzo podobne czynności są  zapewne używane przez piratów produktowych i  dlatego warto się z  nimi zapoznać, aby zrozumieć jak działają piraci i opracować dzięki temu strategię zabezpieczenia własnych wyrobów. Rozpoznanie produktu. Rozpoznanie produktu lub inaczej –  identyikacja jego komponentów, jest na  szczycie procesu inżynierii wstecznej. Interesujące są wszystkie 4) http://goo.gl/SBkRNx

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

61


T E M AT N U M E R U EMBEDDED SECURITY

NOTATNIK KONSTRUKTORA elementy obwodu, ponieważ dzięki nim można nie tylko określić parametry techniczne, ale również oszacować koszt produkcji. Płytka urządzenia jest fotografowana, a komponenty są  identyikowane na  podstawie obudowy, umieszczonych na  niej napisów i sposobu połączenia (np. linii zasilających). Trudno zabezpieczyć urządzenie przed analizą na  tym poziomie. Można utrudnić zadanie atakującym np. zmieniając napisy na  obudowach komponentów, usunąć je (za pomocą lasera, rozpuszczalnika lub wręcz ścierając) lub zamawiając komponenty bez nadruku (fotograia  1). Strukturę lub obudowę układu scalonego można zalać żywicą epoksydową lub twardym tworzywem sztucznym. Dodajmy jednak (o czym już wspomniano), że taka metoda może utrudnić rozpoznanie urządzenia amatorowi, ale nie jest przeszkodą dla fachowca, który ma do dyspozycji odpowiedni sprzęt (aparat rentgenowski, mikroskop, sprzęt do precyzyjnego szlifowania). Obudowę układu scalonego można rozpuścić, a  na  jego strukturze jakże często producent umieszcza napisy i  symbole, które uławiają atakującemu rozpoznanie układu i  wybranie odpowiednich metod oraz narzędzi. Przykład –  fotograie struktur mikrokontrolerów –  pokazano na fotograii 2. Poziom analizy systemowej. Kolejnym krokiem jest analiza systemowa polegająca na  rozpoznaniu, w  jaki sposób komponent „współgra” z otoczeniem. Na przykład, większość procesorów komunikujących się za pomocą interfejsu asynchronicznego wymaga użycia rezonatora kwarcowego w  celu zapewnienia stałości częstotliwości taktowania interfejsów komunikacyjnych. Oczywiście jest to wskazówka, a nie reguła. A więc na początek „wyciąga się” wszystkie informacje, które mogą być zauważone lub zmierzone za pomocą przyrządów. W  tym celu używa się nie tylko sygnałów dostępnych w systemie, ale również dołącza sondy w pewne charakterystyczne punkty na płytce, wymusza sekwencje sygnałów (zarówno spodziewanych w  systemie, jak i  specjalnych, normalnie niewystępujących w trakcie eksploatacji) i testuje odpowiedzi za pomocą analizatora stanów logicznych, oscyloskopu i  innych przyrządów. Ta  część nazywa się analizą funkcjonalności. Jako kolejną przeprowadza się analizę systemu. Istnieje ogromna różnica pomiędzy analizą funkcjonalności, a  analizą systemu. Przystępując do  analizy systemu wykonuje się dokumentację fotograiczną urządzenia „przed” oraz opisuje rozpoznane komponenty i  ich połączenia. Następnie, płytka drukowana jest dosłownie rozrywana na pojedyncze warstwy, a  każda z  tych warstw jest skanowana, fotografowana i  przenoszona do  programu, który umożliwia utworzenie mapy połączeń na  płytce drukowanej i  w  konsekwencji –  narysowanie schematu

62 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Fotograia 1. Usunięcie napisów z obudowy układu scalonego może znacznie utrudnić jego identyikację urządzenia. Co oczywiste, im więcej warstw ma płytka drukowana, tym trudniejsza jest jej analiza. Analiza systemu może być użyta nie tylko do określenia funkcjonalności urządzenia lub układu scalonego, ale również funkcjonalności programu uruchomionego na  mikrokontrolerze lub układzie FPGA. Występuje przy tym podobna zależność, jak przy analizowaniu płytki drukowanej –  im bardziej złożony system, im więcej komponentów ma wewnątrz układ scalony i im bardziej złożone oprogramowanie, tym ta analiza jest trudniejsza. Ale… Będzie o tym mowa dalej. Słabym punktem większości systemów embedded są  pamięci. Przechowują one dane, oprogramowanie i konigurację FPGA. Konstruktor urządzenia i programista muszą tym układom poświęcić szczególną uwagę, a  zwłaszcza przechowywanym przez nie tzw. wrażliwym danym, np. kluczom szyfrowania. Układy pamięci mogą być czytane za pomocą wielu urządzeń –  programatorów, debugerów, interfejsu JTAG. Podobnie współpracujące z nimi procesory lub mikrokontrolery. Budując system embedded przechowujący wrażliwe dane nie wolno o  tym zapominać, że osoba atakująca może szukać jakiejś ścieżki obejścia, odczytać klucz szyfrowania za pomocą rejestru procesora lub w inny sposób. Stosowane powszechnie zabezpieczenia w postaci programowanych bitów bezpieczników są niewystarczające i podatne na  ataki: bity w  pamięci Flash można ustawić za pomocą lasera (fotograia  3), niektóre pamięci nie są odporne na szybkozmienne napięcie występujące na  liniach zasilania, natomiast przepalane ścieżki lub druty można odnaleźć za pomocą mikroskopu i  mostkować z  użyciem mikrosond (fotograia  4). Stosowane są  też inne metody, na przykład, w razie potrzeby za pomocą wiązki jonów można w  strukturze układu scalonego wykonać dodatkowe tranzystory, które pozwolą na  ominięcie zabezpieczeń.

Owszem, wymaga to odpowiedniego oprzyrządowania i  wiedzy, ale aparaturę można po prostu wynająć, a fachowców – zatrudnić lub zlecić im odpowiednie prace. Producenci układów scalonych przeznaczonych do  zastosowań specjalnych zabezpieczają strukturę przed tego rodzaju atakami umieszczając wokoło niej siatkę z  drutu i/lub membranę, które są  elektrycznie połączone ze  strukturą układu. Przy próbie otwarcia obudowy następuje uszkodzenie siatki lub membrany, co skutkuje zniszczeniem całej funkcjonalności układu i  elementów jego struktury. Ze  względu na  rosnącą liczbę zastosowań układów FPGA, również ich producenci muszą nierzadko mierzyć się problemem zabezpieczenia przez kopiowaniem. Współcześnie są używane głównie dwa typy układów FPGA: przechowujące konigurację w pamięci SRAM najczęściej ładowanej z zewnętrznej pamięci nieulotnej po  załączeniu zasilania (chociaż są  też już dostępne układy z  wbudowaną nieulotną pamięcią koniguracji), oraz FPGA, które mają konigurację zapisaną na  stałe w  procesie produkcji. Jak zapewne czujemy intuicyjnie, jeśli jest stosowana zewnętrzna pamięć przechowująca konigurację, to  „rozmowa” pomiędzy nią a  FPGA może być łatwo zarejestrowana i poddana analizie. Wytwórcy FPGA polegają na  zabezpieczeniu w  postaci ciągu bitowego, charakterystycznego dla danego układu, który co prawda zabezpiecza transmisję, ale nie układ FPGA przed sklonowaniem, ponieważ do interfejsu, za pomocą którego jest odczytywana koniguracja można dołączyć równolegle taki sam układ i wczytać konigurację również do niego. Z tego powodu często klucz szyfrowania jest dzielony na dwie części, z których jedna jest przechowywana przez pamięć, a druga jest zapisana w FPGA. Do poprawnej transmisji FPGA musi „znać” obie części klucza. Pomimo stosowanych zabezpieczeń, przechowywanie klucza w  sposób


Zabezpieczenia w systemie embdeded a)

b)

Fotograia 2. Zdjęcie struktur mikrokontrolerów z widocznym logo producenta i oznaczeniem rodziny: a) AVR (ATtiny13), b) STM32F103VGT6 uniemożliwiający jego odtworzenie przez atakującego nie jest zadaniem łatwym. Istnieją metody, które pozwalają na obliczenie klucza na podstawie zjawisk izycznych (np. skoków poboru prądu, interwałów czasowych pomiędzy realizacją poszczególnych poleceń i inne) występujących w czasie obliczania klucza. Układ „niezabezpieczony

kryptograicznie” może wymagać mniej lub więcej czasu na odszyfrowanie wiadomości zależnie od – na przykład – jej długości i używanego klucza szyfrowania. Wynika to z prostego faktu mniejszej lub większej złożoności obliczeniowej (mniejsza lub większa liczba dostępu do  pamięci, częściej lub rzadziej wywoływane instrukcje itd.). Jeśli

wiadomość, na przykład – zaszyfrowana zawartość pamięci koniguracyjnej FPGA, jest znana, to  klucz szyfrowania może być rozpoznany za pomocą obliczeń statystycznych. W ten sam sposób, klucz może być obliczony z użyciem wahań poboru mocy zasilania lub zmian promieniowania elektromagnetycznego układu. ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

63


T E M AT N U M E R U EMBEDDED SECURITY

NOTATNIK KONSTRUKTORA Większość współczesnych układów scalonych jest wykonywanych w technologii CMOS. Jak wiadomo, tranzystor w  takim układzie pobiera energię jedynie w  czasie zmiany stanu. Aby zdekodować sygnał, pewna liczba tranzystorów musi zmienić stan. Przełączenia (różnice poboru mocy lub promieniowania elektromagnetycznego) mogą być odczytane i użyte do rozpoznania klucza. Oprócz tego układ kryptograiczny może być „zmuszany” (za pomocą promieniowania podczerwonego, nagłych zmian napięcia zasilającego lub częstotliwości zegarowej i w inny sposób) do popełniania błędów. Następnie klucz jest wyznaczany dzięki porównaniu poprawnych i błędnych danych wyjściowych. Producenci jednostek kryptograicznych w  układach scalonych bronią dane utrudniając zadanie hakerom poprzez losowe wywoływanie funkcji niemających wpływu na przetwarzane dane, maskowanie danych, instalowanie dodatkowego układu kryptograicznego, który wykonuje te  same operacje, ale jakby „w  przeciwnej fazie”, dzięki czemu nie ma skoków poboru mocy lub wbudowując źródła sygnału zakłócającego. Mimo stosowanych zabezpieczeń, ocena ryzyka jest bardzo trudna, ponieważ współczesne urządzenia elektroniczne są  wręcz wypełnione standardowymi układami, z którymi dzięki temu można eksperymentować do  woli, odkryć słabe punkty i  sprawić, by przemówiły ujawniając przechowywane tajemnice. Poziom analizy procesowej. Na tym poziomie są pozyskiwane informacje na temat procesu produkcji, zastosowanego materiału i struktury układu scalonego. Narzędzia niezbędne do  tej analizy są  niemal powszechnie dostępne, ponieważ są  stosowane przez producentów układów półprzewodnikowych do kontroli poprawności procesu produkcyjnego oraz analizy błędów. Pierwszym krokiem jest usunięcie obudowy układu za pomocą oparów kwasu lub –  w  wypadku obudowy ceramicznej – poprzez szlifowanie. Po  odsłonięciu struktury układu scalonego analizuje się ją za pomocą różnych mikroskopów oraz odczynników chemicznych (zmiany materiału, domieszki, wielkość struktury, liczba warstw, domieszki itp.). Ekstrakcja obwodów. Niegdyś słyszałem od  przedstawiciela pewnej znanej irmy, nieistniejącego już pod dawną marką producenta półprzewodników, że  użytkują swego rodzaju relikt „zimnej wojny” –  precyzyjną szliierkę (chociaż przy grubości zbieranej warstwy raczej należałoby tę  maszynę nazwać polerką), która jest w  stanie z wielka precyzją szlifować strukturę układu scalonego. Po  zdjęciu ultracienkiej warstwy wykonuje się zdjęcie –  wiele tych fotograii wykonywanych warstwa po  warstwie służy do  stworzenia trójwymiarowego obrazu

64 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Fotograia 3. Próba manipulowania zawartością pamięci Flash za pomocą lasera (źródło: materiały irmy Fraunhofer) struktury układu scalonego, który to jest analizowany. To  było ponad 20 lat temu, a współcześnie? Okazuje się, że  tę  samą metodę stosuje się i  dziś. Po  zeszlifowaniu warstwy fotografuje się i  identyikuje elementy obwodu: cewki, rezystory, tranzystory, diody, przelotki, połączenia lub ich ewentualny brak itd. Następnie szlifuje się kolejną warstwę i  powtarza cały proces aż  do  samego podłoża układu scalonego. Ten przedstawiciel wspominał również o tym, że używa się kilku struktur badanego układu, które są  szlifowane w  taki sposób, aby zapewnić różne przekroje, które są  następnie ze  sobą porównywane – zapewne tak też postępuje się współcześnie. Analiza połączeń w  obrębie struktury współczesnego układu scalonego, zwłaszcza wielkiej skali integracji, musi być bardzo trudna. Myślę też, że  próbując rozpoznać poszczególne miniaturowe komponenty oraz ich połączenia popełnia się sporo błędów, więc analiza bardziej będzie ograniczała się do  bloków funkcjonalnych, niż do  tworzących je tranzystorów i  innych elementów. Jest to pewnie tym łatwiejsze, że na przykład raz zaprojektowany i sprawdzony blok interfejsów jest przez producenta układu scalonego stosowany w różnych wyrobach.

Rozpoznawanie funkcjonalności oprogramowania Dostępność zawartości pamięci programu lub zawartości pamięci koniguracji układu FPGA w dużej mierze ułatwia atakującemu pozyskanie wiedzy niezbędnej do  wykonania kopii urządzenia. Współczesne oprogramowanie disasemblujące zawartość pamięci (nierzadko dostępne za darmo) jest na  tyle doskonałe, że  poradzi sobie z  większością sztuczek stosowanych przez programistów. Ponadto, często kompilatory języków wysokiego poziomu odciskają w  kodzie swój ślad, co dodatkowo ułatwia osobie atakującej

rozpoznawanie pewnych standardowo stosowanych bloków asemblera, będących w istocie odzwierciedleniem funkcji wysokiego poziomu. Języki programowania mają też pewne charakterystyczne mechanizmy służące do przekazywania argumentów i pobierania rezultatów przetwarzania przez funkcje, którymi też może posłużyć się atakujący w celu odtworzenia programu źródłowego. Pamiętajmy jednak, że  to  nie są  jedyne cele hakerów. Czasami odtworzenie programu źródłowego jest zupełnie niepotrzebne. Wystarczy –  jak w  terminalu płatniczym –  znaleźć „dziurę”, która umożliwi przechwycenie komunikacji, odczytanie istotnych parametrów lub manipulowanie przesyłaną informacją. Dostęp do zawartości pamięci umożliwia jej replikowanie w  identycznym układzie, nawet bez konieczności rozpoznawania, jak działa program. Zabezpieczeniem przed

Transformacja obfuskcyjna (obfuscation)

Zaciemnianie kodu to technika przekształcania programów, która zachowuje ich semantykę, ale znacząco utrudnia zrozumienie. Istnieją narzędzia modyikujące kod źródłowy, pośredni bądź binarny w  celu utrudnienia inżynierii wstecznej programu. Wyróżniamy 3 typy transformacji obfuskacyjnych: • Transformacja wyglądu (Layout Transformation) –  zmiany nazw identyikatorów, zmiana formatowania, usuwanie komentarzy. • Transformacja danych (Data Transformation) –  rozdzielenie zmiennych, konwersja statycznych danych do  procedury, zmiana kodowania, zmiana długości życia zmiennej, łączenie zmiennych skalarnych, zmiana relacji dziedziczenia, rozłam/łączenie tablic, zmiana porządku instancji zmiennych/metod/ tablic. • Transformacja kontroli (Control Transformation) –  zmiana przebiegu, rozszerzenie warunków pętli, zmiana kolejności komend/ pętli/wyrażeń, metody inline, ogólnikowe wyrażenia, klonowanie metod.


takim przenoszeniem oprogramowania jest sprawdzanie numeru seryjnego lub innego „znaku wodnego” systemu czy układu, na którym jest uruchomiony program, ale jest to raczej uciążliwe, trudne do implementacji i raczej rzadko stosowane. Wydaje się, że  nie ma dobrej metody zabezpieczenia oprogramowania przed atakiem. Dobre zabezpieczenie przed „szpiegowaniem” i  inżynierią wsteczną wymaga współpracy wsparcia programu przez hardware. Jeśli jest dostępna kompletna zawartość pamięci, to każdy aspekt zabezpieczenia softwareowego może być przeanalizowany i usunięty. W takiej sytuacji nic nie da zaangażowanie sprzętowego modułu kryptograicznego, ponieważ klucz szyfrowania jest zapamiętany w programie i może być łatwo podejrzany i/lub usunięty. Oprogramowanie będące nota bene integralnym składnikiem systemu jest podatne na  modyikowanie, może być emulowane i  monitorowane również w  kontrolowanych warunkach. Można je dla przykładu uruchomić na symulatorze (maszynie wirtualnej) bez rzeczywistego otoczenia sprzętowego. Aby właściwie zabezpieczyć program i zapewnić szyfrowane połączenia w obrębie systemu, jednostka kryptograiczna nie może mieć klucza dostarczanego przez oprogramowanie, ale musi on być zapisany na stałe np. w pamięci układu kryptograicznego. Dzięki temu klucz nie da się odczytać z kodu binarnego programu ani poprzez analizę sposobu jego działania, ani metodami statystycznymi czy za pomocą emulowania pracy systemu w  maszynie wirtualnej. W  takiej sytuacji sprzęt i  oprogramowanie tworzą jednostkę funkcjonalną i  nie jest możliwe analizowanie zaszyfrowanych komponentów programu w  jakikolwiek sposób bez właściwego otoczenia sprzętowego. Trzeba przy tym zauważyć, że zabezpieczenie sprzętowe nie jest skutecznie ot tak, samo z siebie. Za przykład może nam posłużyć klucz sprzętowy dołączany do  gniazda urządzenia, na  przykład do  interfejsu USB komputera PC. Oprogramowanie sprawdza czy klucz jest dołączony i  jeśli tak, to  pozwala na  dostęp i  użytkowanie. Jeśli oprogramowanie kontrolne jest źle napisane i  można w  nim łatwo zlokalizować blok odpowiedzialny za sprawdzenie zabezpieczenia oraz odnaleźć występujący na końcu testu rozkaz asemblerowy „skocz, jeśli zero”, to prosta zmiana tego polecenia na „skocz, jeśli różne od zera” spowoduje, że urządzenie w  ogóle nie będzie kontrolowało obecności klucza sprzętowego i przyzna każdemu prawo dostępu. Co prawda, współczesne zabezpieczenia są  dostarczane z  odpowiednimi bibliotekami programowymi, które niełatwo oszukać, ale gdybyśmy coś „kombinowali” na  własną rękę, to  może zdarzyć się taka sytuacja.

Fotograia 4. Mikrosondy dołączone do struktury układu scalonego Łatwo zauważyć, że stosując klucz sprzętowy trzeba zabezpieczyć program przed możliwością manipulacji, aby jego użycie miało sens. Jest to trudne do wykonania np. pod kontrolą systemu operacyjnego komputera PC ze  względu na  dostępność różnych narzędzi oraz bardzo dobrze udokumentowane środowisko pracy i  nieco łatwiejsze w systemie embedded, zwłaszcza, jeśli komponenty pochodzą od  jednego producenta, z którym można ustalić pewne cechy ważne z  punktu widzenia funkcjonowania zabezpieczeń. Mogą to być na przykład specjalne kody zapisane na stałe w pamięci w procesie wytwarzania układu oferowanego tylko i wyłącznie nam. Kompilatory tworzące kod dla debugera bardzo często umieszczają w  pamięci procesora kompletną tablicę symboli, jeśli podczas kompilowania nie wyłączyło się opcji „debug”. Autorowi artykułu z autopsji znana jest sytuacja, w  której osoba atakująca usunęła zabezpieczenie przed odczytem pamięci i uzyskała dostęp do pamięci programu zapisane właśnie takim kodem. Mówiąc krótko –  atakującemu podano na  tacy dostęp do  wszystkich zmiennych i  symboli stosowanych w  programie. W  takiej sytuacji zrozumienie działania programu było tylko formalnością… Oprogramowanie również podlega ochronie prawnej i  jest własnością intelektualną twórcy lub podmiotu, dla którego zostało wykonane. Nierzadko oprogramowanie stanowi główną wartość urządzenia, a  na  jego wykonanie jest wymagane sporo czasu, wiedza i  pieniądze, i  z  tego punktu widzenia jest ono warte ochrony. Głównym celem ochrony oprogramowania powinno być uniemożliwienie atakującemu zapoznania się z  przeznaczeniem i  funkcjonalnością poszczególnych komponentów programowych i  funkcji. W  tym celu stosuje się

technikę „zaciemniania kodu” (obfuscation – patrz wyjaśnienie w ramce). Technika obfuskacji jest stosowana przede wszystkim przy programowaniu w  językach wysokiego poziomu, takich jak Java czy C, które nie tyle tworzą natywny kod binarny, ile mapują kod źródłowy na pewnym kodzie pośrednim pełniącym rolę pomostu pomiędzy asemblerem, a tekstem programu. Jak już wspomniano, funkcje języka są reprezentowane przez pewne stałe bloki i  łatwo rozpoznać czy mamy do  czynienia z  operacjami matematycznymi, pętlami, czy z innymi operacjami. W czasach, gdy pisałem dużo programów dla mikrokontrolerów z użyciem jednego kompilatora, potraiłem bez trudu rozpoznać gdzie w  wygenerowanym kodzie źródłowym są  pętle, gdzie są  wywoływane funkcji itd. Myślę, że  i  atakującym nie sprawia to  specjalnej różnicy, stąd pomysł na „zaciemnianie” kodu. Niestety, transformacja obfuskacyjna może powodować powstawanie nowych błędów, które mogą przemknąć niezauważone aż  do  konsumenta powodując dodatkowe koszty związane z usunięciem usterki oraz poważny uszczerbek na  wizerunku. Może ona też powodować wzrost wymagań odnośnie do  pamięci, szybkości procesora oraz utrudnić aktualizację oprogramowania i usuwanie błędów. Do  zabezpieczania oprogramowania jest również stosowana również kompresja i  szyfrowanie danych zawartych w  pamięci (niektóre z  metod szyfrowania/kompresji są  unikatowe i  stosowane wyłącznie przez konkretnego producenta). Aczkolwiek w  świetle omówionych metod poziom zabezpieczenia oprogramowania może być bardzo wysoki, to w konsekwencji użyte metody mogą spowodować spadek ogólnej wydajności urządzenia, wzrost wymagań sprzętowych oraz dodatkowego know ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

65


T E M AT N U M E R U EMBEDDED SECURITY

NOTATNIK KONSTRUKTORA how związanego z implementowaniem zabezpieczeń (zarządzanie kluczami szyfrowania, wybór optymalnej metody, aspekty implementacji zabezpieczeń w zmiennym środowisku sprzętowym, zabezpieczenie przed atakiem metodą pośrednią). Osobie niemającej doświadczenia trudno jest nawet ocenić, ile dodatkowego wysiłku będzie wymagała odpowiednia implementacja zabezpieczeń.

Łączenie zabezpieczenia sprzętowego i programowego Przykładem zabezpieczenia sprzętowo-programowego chroniącego oprogramowanie przez nielegalnym kopiowaniem lub identyikującym uprawnienia użytkownika w  systemie jest klucz sprzętowy, tzw. dongle. Te  klucze są  sprzedawane z  odpowiednimi bibliotekami programowymi, które można zintegrować z  utworzonym przez siebie oprogramowaniem. Klucze szyfrowania zapisane w pamięci klucza sprzętowego są chronione zarówno przed odczytem z zewnątrz, próbami „podsłuchu”, jak i atakiem za pomocą oprogramowania. Nowoczesny klucz sprzętowy ma wielkość pendrive, jest dołączany do USB i ma wbudowaną pamięć zawierającą odpowiednie drivery oraz pozwalającą na zintegrowanie oprogramowania kryptograicznego bezpośrednio w  kluczu. Znacznie utrudnia to  atakującemu zlokalizowanie odpowiednich funkcji obsługi oraz przesyłanie kwerend do klucza. Do testowania obecności klucza sprzętowego może być używany specjalny mechanizm uwierzytelniający – przykładowy, zaczerpnięty z materiałów irmy Fraunhofer, pokazano na rysunku  5. Oprócz tego, mechanizmy kryptograiczne zawarte w kluczu mogą być używane do  kontroli integralności oprogramowania i zabezpieczenia go w ten sposób przed manipulacją. Współczesne, nowoczesne klucze sprzętowe są  trudne do  oszukania i  oferują dobry poziom zabezpieczenia. Szyfrowanie zabezpiecza też oprogramowanie przed możliwością podglądu kodu, więc atakujący zanim będzie miał możliwość zajrzenia do kodu programu, musi je odszyfrować. Klucze sprzętowe dobrze nadają się do  zabezpieczenia komputerów PC, ale w  związku z  miniaturyzacją sprzętu coraz więcej z popularnych pecetów ma wymiary pudełka papierosów lub mniejsze i  dlatego

Rysunek 5. Sposób działania specjalnego mechanizmu uwierzytelniającego (źródło: materiały irmy Fraunhofer) te klucze mogą być używane również w systemach embedded. Pewne układy elektroniczne mają funkcję secure memory device. W dużym uproszczeniu taka pamięć działa podobnie jak dongle, ale zamiast dołączenia jej do  zewnętrznego interfejsu, można ją zintegrować jako moduł na  etapie projektowania urządzenia. Wspólnie z  pamięcią wewnętrzną, która może przechowywać indywidualne parametry lub mieć unikalny identyikator, te  moduły mają użyteczne, podstawowe funkcje kryptograiczne, które mogą znaleźć zastosowanie do ochrony systemu – zarówno sprzętu, jak i oprogramowania. Głowni producenci programowanych układów logicznych, takich jak FPGA, oferują mechanizm ochrony dla poszczególnych serii produktów (design security). Niektóre z  tych mechanizmów używają dodatkowej pamięci secure memory, a pewna liczba tych układów jest wyposażana w jednostki kryptograiczne zintegrowane wewnątrz ich struktury. Metodą zabezpieczenia własności intelektualnej stosowaną przez największych producentów sprzętu jest zastosowanie specjalizowanych układów ASIC. Z  drugiej strony, taki układ również jest podatny na  opisane wcześniej metody, może być otwarty, przeanalizowany i  zastąpiony odpowiednikiem funkcjonalnym albo blokiem realizującym jego funkcje. Mało tego, w pewnych okolicznościach ASIC może być łatwiejszy do  przeanalizowania niż zwykły układ FPGA, który przechowuje konigurację

w pamięci zewnętrznej i jest dzięki temu odporny na  obserwacje i  analizowanie za pomocą mikroskopu. Nie ma też znaczenia czy koniguracja jest załadowana, czy też nie, ponieważ układ i tak będzie wyglądał tak samo. Dodatkowo do opisanych wcześniej modułów bezpiecznych pamięci, wytwarzane są również mikrokontrolery, które mogą być używane jako moduły do implementowania zabezpieczeń. Stosując jednak zabezpieczenia tego typu trzeba dobrze rozważyć, kiedy są  one po  prostu sztuką dla sztuki i  czy urządzenie – pomimo zastosowania zaawansowanej kryptograii – nie jest podatne na jakiś drobiazg wynikający chociażby z  błędu użytkownika.

Na koniec Wyścig pomiędzy piratami produktowymi a producentami nadal trwa. Nie ma zabezpieczenia idealnego, którego nie da się zastąpić lub podrobić żadną z metod. Z drugiej strony, producent nie może też przesadzić, aby nie utrudnić sonie życie uniemożliwiając serwis i  aktualizowanie oprogramowania w  jakiś normalny sposób. Konstruując zabezpieczenie za każdym razem trzeba wziąć pod rozwagę takie czynniki, jak na przykład czas funkcjonowania produktu. Warto też pomyśleć, co tak naprawdę chcemy zabezpieczyć. Może na  przykład nie będzie nam przeszkadzało to, że ktoś wykona klon naszej przemysłowej drukarki atramentowej, jeśli to  właśnie my będziemy dostarczali do niej atrament?

Jacek Bogusz, EP

http://sklep.avt.pl 66 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


NOTATNIK KONSTRUKTORA

Końcowy etap testowania czujników inercyjnych przy użyciu platformy NI PXI Jedną z podstawowych zalet platformy NI PXI jest możliwość uzyskania większej prędkości pomiaru bez obniżania jego dokładności, głównie poprzez zaangażowanie układu FPGA w  proces przetwarzania sygnałów, jak i  dzięki szybszym jednostkom NI SMU. W  omawianej aplikacji, to  dzięki PXI udało się zredukować rozmiar stanowiska testowego, całkowity koszt oraz czas potrzebny na  testowanie mikroelektromechanicznych czujników inercyjnych (MEMS), przy jednoczesnym zachowaniu jakości dokonywanych pomiarów. Pożądany efekt uzyskano dzięki wykorzystaniu platformy NI PXI do stworzenia systemu, który jest w stanie przeprowadzać testy równoległe dla maksymalnie czterech sensorów, wspiera pomiary czujników inercyjnych IMU w zakresie 1D-6D oraz redukuje czas potrzebny na test płytki krzemowej z 3400 czujnikami do poniżej trzech godzin.

zarówno proces projektowania, produkcji, jak i pakowania ww. urządzeń. Technologie oraz stworzone w  oparciu o  nie komponenty znajdują zastosowanie m.in. w  przemyśle samochodowym, elektronice użytkowej, systemach komunikacji, urządzeniach medycznych.

Historia irmy Fraunhofer ISIT

Techniczny oraz ekonomiczny charakter problemu

Instytut Technologii Krzemowych Fraunhofer (Fraunhofer ISIT) jest jedną z wiodących europejskich instytucji zajmujących się badaniami i  rozwojem w  zakresie mikroelektroniki oraz mikrosystemów. Placówka ma możliwości pozwalające nie tylko na  prowadzenie badań, ale również na  produkcję przemysłową. Z  Fraunhofer ISIT współpracują irmy wytwarzające energoelektronikę oraz mikrosystemy wykorzystywane m.in. w  czujnikach ciśnienia czy przemieszczenia, a  także w  zaworach, skanerach i  tablicach luster. Obszar tej współpracy obejmuje

Końcowy etap testowania płytki krzemowej z mikroelektromechanicznymi czujnikami inercyjnymi, takimi jak żyroskopy i  akcelerometry, wymaga zbadania różnych parametrów. Są  to  między innymi pomiary pasożytniczego prądu upływu i określenie charakterystyk mechanicznych, takich jak częstotliwości rezonansowe, ciśnienie środowiskowe oraz poprawność połączeń mechanicznych. Ze  względu na  masowy charakter produkcji urządzeń zawierających układy MEMS, kluczowe jest zachowanie niskiego kosztu procesu testowania.

Tabela 1. Czasy testów żyroskopu 1D na płytce krzemowej zawierającej 3400 takich jednostek Nazwa testu Prober Movement Resonance Frequency Q-Bias (Mode Coupling) Q (Internal Pressure) Leakage RAZEM

Czas pomiaru dla 1 elementu [s] 1,2 2 0,7 1,5 3,5 8,9

Czas pomiaru dla całej płytki [s] 4080 6800 2380 5100 11900 30260

Rysunek 1. Żyroskop mikroelektromechaniczny oraz jego struktury comb-drive

Dodatkowe informacje: National Instruments Poland Sp. z o.o. ul. Grójecka 5, 02-025 Warszawa tel.: 22 328 90 10, faks: 22 331 96 40 e-mail: ni.poland@ni.com Infolinia: 800 889 897, http://poland.ni.com Wsparcie techniczne: techsupport@ni.com

Rozwiązanie oparte o NI PXI Do  zebrania wszystkich mechanicznych charakterystyk wykorzystano wielofunkcyjną kartę NI PXI7854R z  układem FPGA. Przeprowadzono pomiary częstotliwości rezonansowych, ciśnienia środowiskowego i sprzężenia mechanicznego w oparciu o następującą konigurację: • pary analogowych wejść i wyjść (2×2) dla każdej osi (fale sinusoidalne oraz prostokątne), • programowalna macierz bramek logicznych (FPGA) z  dwoma synchronicznymi demodulatorami na każdą oś, • wykrywanie wartości szczytowych, analiza AC/ DC oraz inne algorytmy cyfrowego przetwarzania sygnałów, zaimplementowane za pomocą modułu LabVIEW FPGA i osadzone na układzie Xilinx Virtex-5 FPGA LX110 (realizacja przetwarzania sprzętowego znacząco zredukowała czas testów). Pomiary parametrów zostały przeprowadzone przy wykorzystaniu czterokanałowego źródła mierzącego NI PXIe-4141. Każdy moduł mierzy prąd upływu pomiędzy złączami sygnałowymi, doprowadzonymi do  urządzenia przez macierz przełączników. Każda jednostka NI PXIe-4141 może obsłużyć do  czterech żyroskopów 1D (po jednym na kanał).

Zalety rozwiązania stworzonego na platformie NI PXI Główną zaletą oparcia produktu na  platformie NI PXI jest zdolność osiągnięcia większej prędkości pomiaru bez obniżania jego dokładności, głównie poprzez zaangażowanie układu FPGA w proces przetwarzania sygnału, jak i dzięki lepszym parametrom jednostek NI SMU (czyli źródeł mierzących). Poza powyższym, udało się też znacząco obniżyć koszt budowy systemu, a zajmowana przez niego przestrzeń to zaledwie ułamek miejsca wykorzystywanego przez sprzęt testowy poprzedniej generacji, oparty na wielu osobnych przyrządach. Całkowity czas testowania urządzeń na pojedynczej płytce krzemowej wyniósł 30260 sekund (około 8 godzin 25 minut), więc biorąc pod uwagę możliwość równoległego testowania czterech jednostek ostatecznie czas spada znacznie poniżej poziomu 3 godzin. Jest to wynik niemal 6 razy lepszy niż ten osiągany przez systemy testowe poprzedniej generacji. Ponadto, system można rozbudować o kolejne cztery kanały, zwiększając tym samym możliwości testów równoległych. Dr. Oliver Schwarzelbach Instytut Technologii Krzemowych Fraunhofer oliver.schwarzelbach@isit.fraunhofer.de ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

67


WYDARZENIA

Fotograia 1 Eric Starkloff, zastępca dyrektora ds. sprzedaży i marketingu, otwiera główną część NI Week 2015

NI Week 2015 Jak co roku, także i  tym razem, irma National Instruments zorganizowała tygodniową konferencję poświęconą graicznemu projektowaniu systemów. Impreza zgromadziła kilka tysięcy gości z  całego świata oraz pozwoliła zapoznać się z  najnowszymi trendami w  systemach pomiarowych, automatyzacji przemysłu, a  także w  projektowaniu urządzeń elektronicznych. Redakcja Elektroniki Praktycznej miała okazję uczestniczyć w  tym wydarzeniu. NI Week to  cykliczna konferencja dla inżynierów, prowadzona przez National Instruments w  Austin w  Teksasie, gdzie właśnie mieści się siedziba organizatora. Od  wielu lat odbywa się w  ogromnym centrum konferencyjnym, które jest w  stanie pomieścić wiele tysięcy gości, zorganizować liczne, równolegle prowadzone seminaria oraz wydzielić miejsce na strefę wystawienniczą, w  której irmy współpracujące z  NI mogą pokazywać swoje osiągnięcia. Choć z  oicjalnego, jednozdaniowego opisu NI Week wynika, że  jest on  poświęcony graicznemu projektowaniu systemów, w  praktyce tematyka prelekcji i  warsztatów jest bardzo różnorodna, a całość spinana jest ze sobą przez LabVIEW, które jako graiczny język programowania, umożliwia tworzenie

68 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

i pisanie programów, realizujących pokazywane aplikacje. Ze  względu na  fakt, że  uczestnicy NI Week wywodzą się z  różnorodnych branży przemysłu lub z  uczelni o  różnych proilach, konferencję podzielono na wiele części i potoków równolegle prowadzonych wykładów. Wspólne dla wszystkich były poranne prelekcje, prowadzone przez szefostwo NI, w  ramach których pokazano nowe produkty, przedstawiono najciekawsze osiągnięcia oraz snuto wizje bliższej i  dalszej przyszłości. Wśród prelegentów byli także przedstawiciele wielu dużych irm z  branży elektroniki, automatyki i  oprogramowania oraz wykładowcy z uniwersytetów, a także dziennikarze i autorzy książek poświęconych rozwojowi technologii. Na  scenie pojawili się

m.in. pracownicy Intela, Samsunga, Texas Instruments, Nokii, Autodesku, Hyundaia, Cisco, IBMa i wielu innych korporacji. Po  głównych seminariach, odbywały się liczne szkolenia i  prelekcje w  ramach wielu równolegle prowadzonych potoków. Dostępne były różnorodne warsztaty, a  nawet zorganizowano egzaminy pozwalające uzyskać certyikaty z LabVIEW. Na uczestników wieczorami czekały dodatkowe atrakcje, a dla dziennikarzy zorganizowano oddzielne spotkania, panele dyskusyjne oraz możliwości bezpośredniego zapoznania się z opiniami pracowników NI wysokiego szczebla. Warto dodać, że  pierwszy dzień (poniedziałek) różnił się nieco od  pozostałych, gdyż poświęcony był współpracy National Instruments z  uczelniami. Reszta konferencji odbyła się we wtorek, środę i  czwartek, a  wśród gości znaleźć można było też przedstawicieli polskich partnerów National Instruments.

Trendy Tegorocznym tematem przewodnim NI Week niewątpliwie był Internet Przedmiotów (IoT – Internet of Things). Organizatorzy nie tylko przygotowali materiały promocyjne tak,


by przy każdej możliwej okazji nawiązywały do łączności pomiędzy wieloma różnymi urządzeniami, ale i  samo określenie IoT pojawiało się wielokrotnie w  trakcie seminariów. Jednakże z faktu, że duża część klientów National Instruments wywodzi się z  przemysłu, bardzo często mówiono o  Przemysłowym Internecie Przedmiotów (Industrial IoT), który obejmuje nieco inne zastosowania i  cechuje się trochę innymi priorytetami, niż konsumenckie IoT. Tak silne oparcie całej konferencji o  Internet Przedmiotów, który w  praktyce stanowi pojęcie dość mgliste, wymagało sprecyzowania, co  w  istocie mają na  myśli prelegenci. Wątpliwości wśród słuchaczy mogły narastać szczególnie wtedy, gdy wspominano jeszcze o  Przemyśle 4.0 (Industry 4.0), który także jest pewnego rodzaju koncepcją technologiczną, bardzo przypominającą w  swoich założeniach Przemysłowe IoT. I  faktycznie –  organizatorzy wielokrotnie wyjaśniali, że  w  praktyce Przemysł 4.0 to  wywodząca się z  Niemiec nazwa, która w  praktyce opisuje praktycznie takie samo podejście do  organizacji systemów w  zakładach przemysłowych, jakie wynika z  Przemysłowego IoT. Co  więcej, wygłoszono opinie, że  cała koncepcja IoT wcale nie musi być precyzyjna, a  mimo to  jest jednocześnie samospełniającą się przepowiednią. Dzięki postępowi technologicznemu, przede wszystkim w  dziedzinach komunikacji bezprzewodowej, przetwarzania danych i  miniaturyzacji, nowopowstające systemy elektroniczne będą korzystały z tych nowych możliwości i będą wymieniały między sobą przetworzone już informacje, tworząc rozległe, autonomiczne sieci, złożone z  względnie inteligentnych węzłów. Można je będzie określać mianem systemów systemów. Tak samo w  przemyśle, gdzie doprowadzi to  do  dalszego usprawnienia produkcji, jak i  w  elektronice konsumenckiej. Z  jednej strony, irmy produkujące urządzenia elektroniczne będą starały się wpisać w  trend tworzenia IoT, by w  oparciu o  nośne hasło zyskać nowych klientów. Z  drugiej strony, naturalny rozwój technologii będzie sprawiał, że tego typu rozwiązania będą w końcu faktycznie możliwe do realizacji. I nie ważne, jakie dokładnie produkty będą realizacją koncepcji Internetu Przedmiotów, bo  niezależnie od  tego, jakie będą ich praktyczne funkcje, konieczne będą narzędzia do  opracowywania i testowania oraz wdrażania nowych urządzeń, a  National Instruments ma w swojej ofercie kompletną platformę sprzętowo-programową, która to umożliwia. Narzędzia NI, ze  względu na  dużą wydajność obliczeniową, łatwość programowania i  tworzenia zaawansowanych technologicznie aplikacji w  oparciu o  graiczny język programowania o  wysokim stopniu abstrakcji oraz z  uwagi na  dużą liczbę irm

Fotograia 2. Przedstawiciele Firm Cisco, Nokia, Hyundai i IBM w trakcie panelu dyskusyjnego na temat Internetu Przedmiotów zaangażowanych w  rozwijanie platform powiązanych z  LabVIEW, mają być –  wg. organizatorów konferencji –  idealnymi do  prac nad czymkolwiek, co ma coś wspólnego z IoT. W  trakcie konferencji zaprezentowano wiele przykładów, począwszy od  aplikacji akademickich, opracowywanych przez niewielkie zespoły studentów, poprzez ogromne projekty akademickie, wykorzystujące setki kanałów danych próbkowanych z  ogromnymi szybkościami, a  kończąc na  komercyjnych, inalizowanych już projektach, które dowodziły użyteczności narzędzi NI w realnych pracach. Prelegenci National Instruments wyraźnie starali się pokazać, jak łatwo i szybko można realizować zaawansowane i imponujące aplikacje.

Nowe produkty Naturalnie, aby tworzone projekty robiły duże wrażenie, konieczne jest podążanie za postępem technologicznym i zwiększanie możliwości istniejącej platformy sprzętowo-programowej. Dlatego też, jak co  roku, NI zaprezentowało nowo opracowane moduły i  urządzenia, które mają umożliwić realizację tych celów.

Ogłoszono wprowadzenie do oferty m.in. nowych kontrolerów CompactDAQ z czterordzeniowym procesorem Intel Atom i  interfejsem USB 3.0 oraz nowe oprogramowanie DIAdem 2015 i DataFinder Server Edition 2015. Nowe kontrolery występują w wersjach 4-, 8- i 14-zatokowych. Pojawiły się też nowe kontrolery CompactRIO z czterordzeniowym procesorem Intel Atom i układem FPGA Kintex-7, nowe FlexRIO z  tym samym FPGA i dwurdzeniowym procesorem ARM oraz różne Single-Board RIO z układem Zynq SoC. Wprowadzono też zupełnie nowe urządzenie, stanowiące zintegrowany w jednej obudowie zestaw, idealnie spełniający potrzeby irm testujących przedmioty komunikujące się bezprzewodowo. Nazwa nowego sprzętu to  Wireless Test System i  opiera się on o wydajną platformę PXI (fotograia 4).

Nowe oprogramowanie Oczywiście przygotowano też nową wersję LabVIEW, w której skupiono się na  przyspieszeniu tworzenia programów i  samego ich działania. LabVIEW 2015 obejmuje szereg ułatwień, które w  wielu przypadkach Fotograia 3. Bob Kroslowitz, dyrektor irmy Berlin Heart, prezentuje system sztucznego, zewnętrznego serca, opracowany z użyciem sprzętu NI

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

69


WYDARZENIA zostały zainspirowane przez inżynierów zgłaszających swoje pomysły przez Internet do National Instruments. Rozbudowano m.in. menu kontekstowe o drobne, przydatne funkcje oraz wprowadzono inteligentną funkcję reorganizacji graicznego widoku programu, tak by był on bardziej przejrzysty. Do  menu kontekstowego, uruchamianego prawym przyciskiem myszy, dodano możliwość dołączania własnych pluginów. Co  więcej, w  szybkim tempie rozwija się zasób dodatkowych pakietów programowych, które tworzą irmy trzecie, a które to  programy mogą być przydatne w  wielu typowych zastosowaniach –  czy to  w  aplikacjach przemysłowych, czy w  pomiarach na  potrzeby komunikacji radiowej, czy też w systemach wizyjnych. Przedstawiciele NI twierdzili wręcz, że  obecnie na  oferowaną przez nich platformę składają się nie tylko sprzęt i oprogramowanie, czyli LabVIEW, ale też te  wszystkie dodatkowe aplikacje, które można uruchomić przy użyciu LabVIEW. Oznacza to, że LabVIEW zaczyna pełnić rolę systemu operacyjnego, pod który powstają narzędzia przydatne inżynierom.

Nagrodzeni W trakcie NI Week wręczono tez różne nagrody za projekty wykonane z użyciem platformy irmy National Instruments (Engineering Impact Awards) oraz dla partnerów współpracujących z  organizatorem. Jako aplikację roku (fotograia  5) wybrano urządzenie ARTSENS, które pozwala na łatwe i szybkie badanie stanu arterii poprzez ocenę sztywności naczyń krwionośnych w  szyi za pomocą ultrasonografu. Stworzone narzędzie korzysta z  platformy Single Board RIO, jest przenośne i  nie wymaga dużej wiedzy, by móc z  niego korzystać. Ma pozwolić na  redukcję zgonów spowodowanych niewykrytymi chorobami układu krwionośnego w krajach trzeciego świata, takich jak np. Indie. Urządzenie ARTSENS zwyciężyło też w  kategorii zaawansowanych badań. Natomiast w  kategorii aplikacji związanych z  zaawansowaną produkcją i  sterowaniem, wygrał system szybkiej (1200 elementów na  minutę), bardzo precyzyjnej (z  dokładnością do 12 mikrometrów) inspekcji z użyciem systemu wizyjnego. W  kategorii aplikacji obronnych i  kosmicznych zwyciężył projekt strumieniowania do  Internetu obrazu ziemi w  jakości HD z  satelity krążącego po orbicie naszej planety. W kategorii testów urządzeń konsumenckich wygrała aplikacja szybkiego testowania funkcjonalnego, połączonego z badaniem parametrów nadajnika i odbiornika radiowego w modułach eCall. W dziedzinie energii, uznanie jury zdobyła aplikacja sterowania pompami akumulatorów cynkowych, używanych w połączeniu z odnawialnymi źródłami energii.

70 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Fotograia 4. Nowe urządzenie – Wireless Test System

Bardzo ciekawy projekt zwyciężył w kategorii komunikacji i fal radiowych. Nagrodę zdobyli twórcy systemu, umożliwiającego wykrywanie obecności ludzi i  obiektów na podstawie propagacji fal radiowych emitowanych przez sieci Wi-Fi. Ten pasywny radar może znaleźć zastosowanie np. w policji, do lokalizowania ludzi poprzez ściany. W  kategorii „Transport” wygrał pomysł brytyjskiej irmy, która zajęła się wymianą silników diesla w  londyńskich, piętrowych autobusach. Stare jednostki napędowe są  zastępowane hybrydowymi, co  nie tylko pozwala na  zmniejszenie zużycia paliwa, ale też umożliwia na  niedrogie dostosowanie pojazdów do  planowanych do  wprowadzenia norm emisji zanieczyszczeń w  tym mieście. Ciekawym projektem studenckim, który zyskał uznanie sędziów jest wózek inwalidzki, umożliwiający wspinanie się po  schodach i  zjeżdżanie z  nich, bez pomocy osób trzecich.

Najciekawsze irmy Przez większość czasu trwania konferencji, na terenie wystawienniczym (fotograia  7),

swoje rozwiązania prezentowały irmy korzystające ze sprzętu NI lub współpracujące z  organizatorem konferencji. Wśród nich znaleźć było kilka bardzo ciekawych przedsiębiorstw, które mogłyby zainteresować polskich inżynierów. Szczególnie interesujące były irmy, których oferta obejmowała nietypowe oprogramowanie lub usługi. Dobrym przykładem była irma GDCA, która specjalizuje się w  świadczeniu pomocy technicznej i  w  wykonywaniu napraw profesjonalnego sprzętu elektronicznego. Jej klientami są  zarówno producenci, jak i użytkownicy sprzętu. Firma z jednej strony, nawiązuje współpracę z  takimi korporacjami, jak National Instruments, by realizować wsparcie dla wycofanych już ze  sprzedaży produktów, a  tym samym odciążyć pracowników NI. Z  drugiej, jest wybierana przez niektóre zakłady przemysłowe, które szukają kogoś, kto zajmie się ich przestarzałym sprzętem, który pomimo upływu lat, wciąż jeszcze jako-tako działa i  nie został wymieniony na nowy. Kolejnym ciekawym wystawcą była irma Artisan Technology Group, która skupuje używany sprzęt i  testuje go, po  czym

Fotograia 5. Dr James Truchard, współzałożyciel NI oraz Dave Wilson, dyrektor marketingu akademickiego NI, wręczają nagrodę dr Josephowi Jayarajowi, za najlepszą aplikację konsumencką roku


NI WEEK 2015 projekty wczytywane są przez kompilator i  zamieniane na  plik binarny, gotowy do  wgrania do  Arduino. Podobny kompilator powstaje na  potrzeby uruchamiania aplikacji z LabVIEW na Raspberry PI. Dzięki optymalizacji, pozwala to  na  programowanie w  LabVIEW i  uruchamianie gotowych projektów na  platformie kosztującej ułamek tego, co  dowolny inny sprzęt z  systemem Windows. Naturalnie wydajność Arduino, czy Raspberry PI jest bardzo ograniczona, ale dla prostszych aplikacji będzie zupełnie wystarczająca. Sam koszt kompilatora też nie jest bardzo wielki, a dostępność niedrogiej licencji niekomercyjnej (99  dolarów) oraz wprowadzenie do sprzedaży wcześniej w tym roku LabVIEW w wersji Home Bundle sprawiają, że graiczne projektowanie i wdrażanie gotowych rozwiązań stało się łatwo dostępne dla hobbystów.

NI Days 2015

Fotograia 6. Egzoszkielet opracowany przez irmę Hyundai w akcji

naprawia, jeśli zachodzi taka potrzeba i ponownie wystawia na  sprzedaż. Artisan Technology Group współpracuje m.in. z National Instruments, co akurat jest bardzo korzystne ze względu na modularność systemów NI oraz na  fakt, że  sprzęt Nationala nie jest ograniczony poprzez przestarzałe interfejsy użytkownika. O  ile tylko dawniej produkowane moduły są  jeszcze wspierane przez najnowsze wersje LabVIEW, z punktu widzenia użytkownika, korzystanie z  używanych kart PXI lub bloków CompactRIO jest tak samo wygodne i  daje takie same możliwości, jak przy użyciu nowych elementów. Różnica leży jedynie w  parametrach starego sprzętu, który nie jest tak szybki i  dokładny jak nowsze modele, ale w  wielu przypadkach nie ma to  większego znaczenia. Co więcej, nawet jeśli nowe wersje LabVIEW nie wspierają starego sprzętu, nic nie stoi na  przeszkodzie by skorzystać z  nieco starszego oprogramowania, które w  wielu przypadkach pozwoli uzyskać tak samo dobre efekty, jak LabVIEW 2015. Koszt używanych urządzeń jest znacznie niższy niż nowych modułów, ale zależny od  dostępności i  popularności danego sprzętu. Niemniej jest to bardzo ciekawa alternatywa

dla wszystkich osób, które chciałyby skorzystać z wygody projektowania w  LabVIEW, a  nie dysponują budżetem pozwalającym na zakup nowych urządzeń. Trzecią irmą wartą wyróżnienia, szczególnie ze  względu na  czytelników Elektroniki Praktycznej jest TSXperts, która opracowała kompilator projektów LabVIEW, a  więc plików .VI na… Arduino! Gotowe

NI Week to wydarzenie zdecydowanie interesujące dla osób zajmujących się elektroniką, automatyką i nowoczesnymi technologiami. Niestety, dla polskich inżynierów jest trudnodostępne ze względu na odległość i koszty. Jednakże z  aktualnymi trendami, choć w znacznie mniejszej skali, można zapoznać się na  konferencji NI Days, która co  roku odbywa się w Warszawie, a w której uczestnictwo jest bezpłatne. W  tym roku polskie NI Days są  organizowane w  hotelu Mariott w  Warszawie, 13 października i  potrwają od godziny 9 rano do 18. Aby wziąć udział, konieczna jest wcześniejsza rejestracja pod adresem http://goo.gl/c2I5fL. Osoby zainteresowane dalszymi szczegółami na  temat tegorocznego NI Week, odsyłamy na  stronę internetową http://goo.gl/ ihDjyq, gdzie można znaleźć wiele opisów prezentowanych projektów. Można też zobaczyć nagrania wystąpień z  porannych seminariów, które dostępne są  pod adresem: http://goo.gl/qUDIjp.

Marcin Karbowniczek, EP

Fotograia 7. Sala z wystawą rozwiązań opartych o platformę sprzętowo-programową NI

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

71


PODZESPOŁY

Riverdi + Grinn = wyświetlacze z komputerami Firma Riverdi, producent wyświetlaczy ciekłokrystalicznych o  wysokiej jakości, a  także jej polski dystrybutor, Unisystem, nawiązały współpracę z  wrocławskim biurem projektowym Grinn. W  efekcie wspólnych działań, powstały już pierwsze moduły, łączące wyświetlacze Riverdi z  komputerami jednopłytkowymi i  modułami SOM irmy Grinn. One, jak i  samodzielne moduły opracowane przez Grinn, będą konsekwentnie dodawane do  oferty Unisystemu, powiększając i  tak bogate portfolio produktów o  nowe, ciekawe rozwiązania. Podstawowym celem współpracy Riverdi i Grinn jest opracowanie nowych, gotowych rozwiązań, które ułatwiłyby pracę twórców aplikacji z  użyciem wyświetlaczy elektronicznych. Prace opierają się o zastosowanie dotychczas przygotowanych przez Grinn komputerów modułowych, które zostały już sprawdzone w  przemyśle. Plan zakłada wprowadzenie do sprzedaży modułów z wyświetlaczami o przekątnych od 3,5” do 10,1”, z których każdy byłby dostępny w wersjach z  ekranem dotykowym rezystancyjnym lub pojemnościowym oraz z  uszami montażowymi. Do  każdego z  wyświetlaczy zostanie przygotowana koniguracja programowo-sprzętowa, tak by użytkownik mógł skupić się od razu na pisaniu aplikacji. Inżynierowie z Grinn i Riverdi zadbali o stabilne i pewne działanie wyświetlacza oraz panelu dotykowego z wybranymi systemami operacyjnymi na modułach ChiliSOM.

Biuro projektowe Grinn Kluczowe dla powodzenia współpracy jest doświadczenie inżynierów pracujących w irmie Grinn. To  wrocławskie biuro projektowe elektroniki działa od  2008 roku i  zajmuje się projektowaniem oraz produkcją urządzeń elektronicznych dla różnych gałęzi biznesu. Zespół Grinn składa się

Fotograia 1. Moduł ChiliSOM

72 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

z wyspecjalizowanych inżynierów i  jest gotowy wspierać projekty na  każdym ich etapie, począwszy od pomysłu, a kończąc na gotowym produkcie. Wśród głównych klientów Grinn są  irmy z  branży automatyki przemysłowej, zakłady produkcyjne, irmy wytwarzające urządzenia medyczne, budujące systemy automatyki budynkowej oraz zakłady dostarczające urządzenia na  potrzeby motoryzacji. Są to głównie przedsiębiorstwa z Polski, Holandii i  Belgii. Grinn specjalizuje się w systemach wbudowanych, projektowaniu nowoczesnych płyt PCB, elektronice analogowej i systemach bezprzewodowych. W  ramach dotychczasowych prac, inżynierowie Grinn opracowali m.in. moduł procesorowy ChiliSOM dla komputera oraz współpracujący z  nim, jednopłytkowy komputer przemysłowy GISBC, a  także panel HMI z modułem ChiliSOM. Wszystkie te produkty traiły do  oferty Unisystemu, a  ponadto moduł SOM będzie wykorzystywany w połączeniu z wyświetlaczami Riverdi.

Czym jest ChiliSOM? Sam ChiliSOM to innowacyjny, miniaturowy moduł komputerowy, bazujący na  procesorze irmy Texas Instruments z rdzeniem ARM Cortex-A8. Konstrukcja modułu umożliwia

Dodatkowe informacje: UNISYSTEM Sp. z o.o. ul. Nowy Świat 36, 80-299 Gdańsk tel.: +48 58 761 54 20, biuro@unisystem.pl www.unisystem.pl

Rysunek 2. Schemat blokowy modułu ChiliSOM łatwe wbudowanie do projektowanego urządzenia, bez stosowania jakiegokolwiek złącza. Dzięki umieszczeniu najważniejszych sygnałów na module, nawet do bardzo skomplikowanych peryferiów wystarczy użycie dwuwarstwowej płyty bazowej, co  pozwala na  znaczne obniżenie kosztów produkcji komputerów przemysłowych. Moduł ChiliSOM idealnie nadaje się do aplikacji wymagających wysokiego stopnia upakowania oraz dużej mocy obliczeniowej, przy zachowaniu niewielkiego poboru mocy. Zawiera wszystko, co jest niezbędne do zainstalowania systemu operacyjnego, takiego jak Linux i  Android. Dzięki obsłudze wielu interfejsów, pozwala na  podłączenie różnorodnych peryferiów, a  więc stanowi znakomitą bazę projektową do wielu zastosowań. Moduł ChiliSOM ma wymiary 40  mm×40  mm i  grubość 3  mm. Wbudowany procesor to  AM335X irmy Texas Instruments, który może być taktowany zegarem do 1 GHz. Na module znaleźć się może do  512  MB pamięci DDR2 lub DDR3 SDRAM oraz do  256  MB pamięci NAND Flash. Moduł wymaga do zasilania pojedynczego napięcia 5 V. Wśród wyprowadzonych na krawędzie modułu interfejsów (184 pady) znajdują się: 2×Ethernet 10/100/1000  Mb/s, 2×USB 2.0 pracujący w  trybie OTG, 2×CAN, 6×UART, 2×McASP, 2×SPI, 3×I2C, 3 zaawansowane generatory PWM o  dużej


Riverdi + Grinn = wyświetlacze z komputerami rozdzielczości (ehRPWM), 12-bitowy przetwornik analogowo-cyfrowy. Moduł sprzętowo wspiera szyfrowanie z  użyciem algorytmów AES, SHA, PKA i RNG. Sprzęt może pracować w temperaturze od 0 do 70°C lub od –40 do +85°C, w zależności od  wersji. Przykładowe zastosowania modułu mogą obejmować automatykę budynkową, przemysłową, systemy telemetryczne i  urządzenia wpisujące się w  nurt Internetu Przedmiotów (IoT).

Tabela 1. Standardowe wersje modułów ChiliSOM Model

CPU

GPU Pamięć RAM NAND Flash

Temperatura pracy

GCS22.2.060.1.2 C

AM3352 (600 MHz)

Nie

128 MB

256 MB

0…70°C

GCS22.2.060.1.2 I

AM3352 (600 MHz)

Nie

128 MB

256 MB

-20…+85°C

GCS22.2.080.1.2 C

AM3352 (800 MHz)

Nie

128 MB

256 MB

0…70°C

GCS22.2.080.1.2 I

AM3352 (800 MHz)

Nie

128 MB

256 MB

-20…+85°C

GCS22.2.080.2.2 C

AM3352 (800 MHz)

Nie

256 MB

256 MB

0…70°C

GCS22.2.080.2.2 I

AM3352 (800 MHz)

Nie

256 MB

256 MB

-20…+85°C

GCS22.4.100.4.2 C

AM3354 (1 GHz)

Tak

512 MB

256 MB

0…70°C

Komputer GISBC Producent przygotował też przykładową płytę bazową, do której pasuje moduł ChiliSOM, a  która spełnia wymagania stawiane komputerom przemysłowym. Jest to  GISBC, czyli Grinn Industrial Single Board Computer. Charakteryzuje się bardzo małym poborem mocy i  jest przystosowany do pracy w szerokim zakresie temperatury oraz w ekstremalnych warunkach. Może działać pod kontrolą systemów operacyjnych Linux i  Android, a  liczne biblioteki programowe, dostarczane przez producenta oraz bogaty zestaw układów peryferyjnych sprawiają, że  z  użyciem GISBC nawet bardzo zaawansowane aplikacje można zrealizować niewielkim nakładem pracy.

Fotograia 3. Komputer GISBC z wlutowanym modułem ChiliSOM

Dostępne wersje Moduł ChiliSOM jest aktualnie dostępny w wielu wersjach, z  których standardowe zostały zebrane w tabeli 1. W wypadku zamówień specjalnych, producent może przygotować wersje z procesorami taktowanymi zegarem 300 MHz, 600  MHz, 800  MHz lub 1  GHz, wyposażone, w  128  MB, 256  MB lub 512 MB pamięci RAM oraz w  256  MB pamięci NAND Flash, lub jej pozbawione. Standardowo instalowany procesor to  AM3352, ale możliwe jest też użycie procesorów AM3354, AM3356, AM3357, AM3358 lub AM3359.

Marcin Karbowniczek, EP

Fotograia 4. Pierwszy opracowany moduł z 5-calowym wyświetlaczem Riverdi o rozdzielczości 800×480 pikseli ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

73


PODZESPOŁY

AD5593R – programowalne GPIO Niedawno do oferty Analog Devices dołączył układ programowalnego GPIO AD5592R/AD5593R mający oprócz funkcji cyfrowych również analogowe, ponieważ ma wbudowane przetworniki A/C i  C/A. Elastyczne możliwości koniguracyjne pozwalają na  nieco odmienne podejście do  projektowania interfejsu wejść/wyjść.

Nowy układ interfejsowy AD5593 przyda się szczególnie w razie konieczności zapewnienia uniwersalności, na  przykład w  modułach interfejsowych sterowników przemysłowych, budynkowych, w  których elastyczność znacząco ułatwia projektowanie oraz minimalizuje koszty aplikacji. Jest to istotne w sytuacjach, w których potrzebne są mieszane funkcje wejść/ wyjść sterownika PLC zmuszające do użycia kilku typów modułów I/O i pozostawienie niepodłączonych, „zapłaconych”, a jednak niewykorzystanych wejść/wyjść. Schemat blokowy AD5593 pokazano na rysunku 1. Jest on odpowiednikiem funkcjonalnym ze zmienionym interfejsem szeregowym – zamiast I2C ma interfejs SPI.

Rysunek 1. Schemat blokowy układów z rodziny AD5593 Układ AD5593R ma 8 wyprowadzeń GPIO (kanałów). Każde z  nich może być skonigurowane programowo jako wejście/ wyjście cyfrowe (z możliwą topologią trójstanową, przeciwsobną lub z otwartym drenem; możliwe jest również dołączenia każdego z  wyprowadzeń do  masy poprzez programowo załączany rezystor 85  kV) lub może pełnić funkcję wejścia/wyjścia analogowego o rozdzielczości 12-bitowej. Wbudowany przetwornik C/A  jest podwójnie buforowany. Każdy kanał ma

Fotograia 2. Zestaw uruchomieniowy dla AD5593R

74 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

odrębny rejestr danych i rejestr przetwornika. W zależności od potrzeb jest możliwy zapis bezpośredni, czyli napięcie w danym kanale zostanie zmienione bezzwłocznie po zapisie rejestru danych, co jest przydatne przy niezależnej pracy kanałów C/A. Możliwy jest też synchroniczny zapis wszystkich kanałów – po zapisaniu rejestrów danych i jednoczesnym przepisaniu ich zawartości do rejestrów przetwornika. Przetwornik A/C współpracuje z 8-kanałowym multiplekserem ze  wspomaganiem

Fotograia 3. Platforma uruchomieniowa SDP-CB1Z


AD5593R – programowalne GPIO

Rysunek 4. Zainicjowany moduł SDP

Rysunek 6. Zakładka przetwornika C/A

Rysunek 5. Konigurowanie AD5593R odczytu sekwencyjnego. Oba przetworniki mają możliwość współpracy z wbudowanym źródłem napięcia odniesienia Vref=2,5  V i  możliwość ustawienia programowego zakresu napięć wejścia/wyjścia na 0…Vref/0… 2×Vref. Dodatkowo, AD5593 ma wbudowany czujnik temperatury oraz może pracować z  zewnętrznym źródłem napięcia odniesienia, a rejestry GPIO mają możliwość odczytu wstecznego bez ingerowania w  zawartość. Układ jest dostępny w obudowach TSSOP16 i WLCSP16. Ocenę przydatności układu oraz jego zastosowanie prototypach ułatwia zaprezentowany na  fotograii  2 zestaw startowy umożliwiający (dostępny jest także zestaw z bliźniaczym AD5592). Szybkie uruchomienie jest możliwe za pomocą oprogramowania AD5593R Evaluation Software. Jako interfejs USB służy pokazana na  fotograii  3 płytka SDP-CB1Z. Jest to  wprowadzona przez Analog Devices platforma uruchomieniowa (uniwersalny programator) oparta o  procesor Blackin ADSP-BF527. Moduł dysponuje interfejsami SPI, SPORT, TWI, I2C, PPI oraz równoległym, zapewniającym spore możliwości łączeniowe i  obsługę większości nowych zestawów uruchomieniowych Analoga. Po  połączeniu płytek EVAL i  SDP, zasilania i  instalacji oprogramowania (dołączonych na  CD do  zestawu AD5593R),

Rysunek 7. Zakładka przetwornika C/A

Rysunek 8. Zakładka GPIO SDP zgłasza się w Menedżerze Urządzeń jako Analog Devices System Demonstration Platform SDP-8 (rysunek  4). Po  uruchomieniuoprogramowania jest możliwa koniguracja funkcji każdego z  wyprowadzeń (rysunek  5). Dostęp do  poszczególnych bloków, zapis, odczyt i  rejestracja danych możliwa jest poprzez zakładki DAC/ADC/

GPIO – pokazano je na  rysunkach  6…8. Dzięki dobremu wsparciu sprzętowemu jak i  programowemu, można zapoznać się z  możliwościami układów AD5593 i  szybko przejść do tworzenia własnych aplikacji. Przykładowe aplikacje AD5593R zostaną przedstawione w kolejnych artykułach.

Adam Tatuś, EP ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

75


SPRZĘT

PSoC5 – mikrokontroler PSoC z rdzeniem Cortex M3 Nieco ponad rok temu Cypress wprowadził do  oferty zestawy CY8CKIT-049, zawierające oparte o  rdzeń Cortex M0 układy PSoC4. Dzięki niskiej cenie, bogatym możliwościom koniguracyjnym i  wbudowanemu programatorowi stanowiły one ciekawą alternatywę dla wielu popularnych zestawów różnych producentów. Możliwość oddzielenia programatora KitProg od  części uruchomieniowej umożliwiała zastosowanie części z  mikrokontrolerem w  jakiejś własnej aplikacji. Pod koniec drugiego kwartału bieżącego roku, do  bogatej oferty zestawów Cypressa dołączył CY8CKIT-059 oparty o  SoC z  rdzeniem Cortex-M3 – CY8C5888LTI z rodziny PSoC5LP. Rodzina PSoC5LP jest aktualnie najlepiej wyposażoną grupą układów Cypressa. Oprócz rdzenia Cortex M3 pracującego z zegarem 8 MHz, wspieranego wielokanałowym DMA, kontrolerem przerwań, wbudowaną pamięcią EEPROM, bogatym wyborem interfejsów szeregowych (UART, CAN, I2S, USB), interfejsami GPIO z możliwością obsługi klawiatur dotykowych, wyświetlaczy LCD oraz – co oczywiste – charakterystyczną dla PSoC

matrycę konigurowalnych bloków cyfrowych UDB (24) i konigurowalny podsystem analogowy. Tak bogate wyposażenie oraz możliwość programowej koniguracji peryferiów sprzętowych dla konkretnej aplikacji znacząco upraszczają budowę nawet złożonych urządzeń z zakresu sterowania, pomiarów itp. Jest to  tym łatwiejsze, że  LP5888 ma przetwornik A/C typu sigma-delta o rozdzielczości aż  20 bitów oraz blok iltra cyfrowego. Porównanie układów z  rodziny PSOC5 zamieszczono na rysunku 1. W porównaniu do zestawu referencyjnego CY8CKIT-050 wycenionego na  99$, jest

Rysunek 1. Porównanie układów z rodziny PSoC5

76 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

widoczne mocne okrojenie współpracujących peryferiów. Zestaw CY8CKIT-059 jest wyposażony w trzy diody LED oraz jeden przycisk. Dodatkowo jest dostępne gniazdo micro USB ułatwiające wykorzystanie interfejsu PSOC5LP w aplikacjach HID i innych. Płytka po  wlutowaniu złącza IDC10 (raster 1,27 mm) umożliwia zaprogramowanie układu także poprzez programator MiniProg3. Budowę mechaniczną oparto o  sprawdzone rozwiązanie kitów rodziny CY8CKIT-049. Pierwszą cechą rzucającą się w oczy jest „budżetowe” opakowanie, będące jednocześnie skróconą instrukcją obsługi. Płytka jest dostarczana w kartonowej kopercie, w  związku z  czym nie są  do  niej dołączone żadne akcesoria (kabel USB, zworki, złącza). Korzystając ze  sprawdzonej koncepcji, zestaw wykonano na  dzielonej płytce drukowanej. Cześć z  programatorem ma wtyk USB wykonany w formie złącza krawędziowego. Wydaje się, że część programatora mogłaby być o  te  kilka milimetrów węższa pozostawiając miejsce dla typowego wtyku w przypadku „ciasno” rozmieszczonych portów USB. Wszystkie wyprowadzenia GPIO PSoC5 dostępne są w dwóch rzędach o rozstawie zgodnym z uniwersalną płytką drukowaną lub stykową, co  ułatwia samodzielną egzystencję drugiej części zestawu w docelowym układzie prototypowym. Takie dosyć radykalne uproszczenie budowy umożliwiło zaoferowanie zestawu w  cenie 10$, czyli prawie za połowę ceny 8-bitowego Arduino! Jest to  chyba jeden z  tańszych zestawów uruchomieniowych


PSoC5 – mikrokontroler PSoC z rdzeniem Cortex M3

Rysunek 3. Aktualizowanie komponentów bibliotecznych

Rysunek 4. Aktualizowanie irmware programatora

Rysunek 2. Prawidłowo zainicjowany KitProg Cortex M3. Takie podejście producenta zapewne zaskarbi przychylność wielu użytkowników. Jako środowisko programistycznie wykorzystywany jest PSoC Creator. Podobnie jak dla pozostałych rodzin, umożliwia on konigurowanie, programowanie i  debugowanie. Jest to  pełna funkcjonalna wersja oprogramowania bez żadnych ograniczeń na  wielkość kodu wynikowego, zawartość bibliotek itp. Dodatkowo, dla zestawu przygotowano przykładowe aplikacje do pobrania ze strony producenta. Aby rozpocząć pracę z  zestawem należy pobrać, zainstalować i  zarejestrować oprogramowanie PSoC Creator. Po  przyłączeniu płytki i  zainstalowaniu driverów USB, jest możliwe sprawdzenie zestawu za pomocą aplikacji testowych z  pakietu CY8CKIT059SetupOnlyPackage_RevSA.exe. Oprócz mikrokontrolerowego „Hello World” – migającej diody LED, jest dostępna aplikacja obsługi przetwornika A/C z  wysyłaniem danych przez USB (emulacja UART) oraz symulator myszy (HID) kreślący kursorem kwadrat na ekranie komputera PC. Po  prawidłowej detekcji, zestaw powinien być widoczny w Menedżerze Urządzeń, jak pokazano na rysunku 2. Po uruchomieniu środowiska i  wczytaniu aplikacji CE55277 (ADC UART) warto sprawdzić czy mamy aktualne bloki biblioteczne wybierając z menu Project\Update Components (Project), jak pokazano na  rysunku  3. Po  skompilowaniu projektu (Shift+F6) wgrywamy aplikację do  procesora (Ctrl+F5). Przy pierwszym uruchomieniu zestawu jest konieczna aktualizacja irmware programatora (rysunek  4) za pomocą aplikacji PSoC Programmer (rysunek 5). W  związku z  wysyłaniem danych poprzez port USB procesora PSOC5LP bez użycia mostu USB/UART programatora, jest konieczne dołączenie zestawu (poprzez micro USB) do  kolejnego wolnego portu USB komputera. Jeżeli wszystko przebiegło

Rysunek 5. Okno programu PSoc Programmer

Rysunek 6. Wyniki działania przykładowej aplikacji obsługi przetwornika A/C pomyślnie, można sprawdzić działanie aplikacji uruchamiając terminal (parametry transmisji: 115200, 8, n, 1). Rezultat jej pracy pokazano na rysunku 6. Po ponownej detekcji zestawu przez kontroler USB, sterowanie pracą aplikacji odbywa się z  terminala: za pomocą „c „ wybieramy pojedynczy odczyt A/C (P0.0), „s” – odczyt ciągły, „x” – zatrzymuje odczyt ciągły, „e” –  zwraca zliczoną liczbę naciśnięć klawisza. Po  sprawdzeniu aplikacji testowej nie pozostaje nic innego jak sprawdzenie możliwości PSOC5LP we własnych aplikacjach.

Podsumowując, zestaw jest ciekawą propozycją dla osób chcących się zapoznać z nieco odmiennym podejściem do implementacji rdzenia ARM. Zestaw CY8CKIT-059 dzięki niewygórowanej cenie, dostępnym przykładom i darmowemu środowisku PSoC Creator ułatwia zapoznanie się z możliwościami najlepiej wyposażonego przedstawiciela rodziny PSoC5. Ciekawe czy podobnie jak w wypadku wprowadzenia zestawów PSoC4, element14 ogłosi inicjatywę „100 projektów w 100 dni”? Będziemy trzymali rękę na pulsie.

Adam Tatuś, EP ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

77


SPRZĘT

Tanie narzędzia startowe dla Cortex-M7 z oferty STMicroelectronics (STM32F7) Mikrokontrolery STM32F7 dzięki budowie i  możliwościom zastosowanego w  nich rdzenia Cortex-M7 stanowią swoisty wydajnościowy pomost pomiędzy mikrokontrolerami i  mikroprocesorami. Rdzeń może być taktowany z  częstotliwością do  216 MHz, co  przy średniej wydajności 2,14 DMIPS/MHz daje wynik 462 DMIPS, w  przypadku zoptymalizowanych programów nawet 3,23 DMIPS/MHz (5 CoreMark/MHz). Od  strony technicznej Cortex-M7 to  rozbudowana wersja rdzenia Cortex-M4, przystosowana do  współpracy zszybką pamięcią SRAM TCM (dla danych i  instrukcji programu), wyposażoną w  pamięci cache dla danych i  instrukcji (rysunek  1), a  także zaawansowany 6-poziomowy mechanizm przetwarzania potokowego z  predykcją oraz sprzętowym wsparciem superskalarnego wykonywania programu. Architektura rdzenia Cortex-M7 jest taka sama jak w  przypadku rdzeni Cortex-M3 i  Cortex-M4 (zgodnie z  nomenklaturą irmy ARM nosi ona oznaczenie ARMv7E-M), a jego działanie jest zgodne z deinicją architektury Harvard: magistrale zapewniające komunikację z  pamięcią danych i  poleceń są  rozdzielone. Firma ARM w  opisie konstrukcyjnym rdzenia użyła nowych mechanizmów obniżających pobór mocy, które są dostępne opcjonalne podczas implementacji rdzenia w nowoczesnych technologiach półprzewodnikowych, charakteryzujących się niewielkim wymiarem charakterystycznym. Ważnym udoskonaleniem wprowadzonym w  rdzeniu Cortex-M7 jest nowa magistrala komunikacyjna, która ma wpływ na  wypadkową prędkość pracy mikrokontrolera: Master AXI (AXIM). Zapewnia ona „splatanie” kilku kanałów magistrali AHB w  jeden, bardzo szybki kanał dwukierunkowej komunikacji rdzenia z  otoczeniem (w  rdzeniach Cortex-M4 rdzeń komunikuje się z  otoczeniem za pomocą „standardowych” interfejsów-magistral AHB). Rozwiązania zastosowane przez irmę ARM w rdzeniu Cortex-M7 pozwalają na szybszy niż w  przypadku poprzedników dostęp rdzenia do zawartości pamięci SRAM i Flash, oczywiście przy założeniu, że  konstrukcja pamięci umożliwia bezpośredni odczyt danych z  relatywnie wysoką częstotliwością

78 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

(dla typowych pamięci nieulotnych za taką uchodzi próg 70…90 MHz). Żeby uniknąć efektu „wąskiego gardła” w  dostępie do  zawartości pamięci Flash, producenci stosują różne rozwiązania, na przykład w mikrokontrolerach STM32 pobieranie danych z pamięci Flash jest buforowane za pomocą sprzętowego akceleratora ART (Adaptive Real-Time). Jego działanie polega m.in. na dekompozycji 128-bitowych słów przechowywanych w pamięci Flash na słowa 16- lub 32-bitowe, które są  kolejkowane w  lokalnej (wbudowanej w  ART) pamięci cache. Według informacji publikowanych przez producenta, mechanizmy usprawniające dostęp do  zawartości Flash spowodowały, że  nie ma konieczności używania podczas odczytu wait-state’ów dotychczas istotnie zmniejszających realną prędkość transferu danych.

Efekty zabiegów konstruktorów mikrokontrolerów STM32F7 widać w ich wydajności: przy maksymalnej dopuszczalnej częstotliwości taktowania CPU, wynoszącej obecnie 216  MHz, uzyskiwana jest wartość CoreMark na poziomie bliskim wartości 1100 (vs 608 w przypadku STM32F4 @180 MHz), a  zgodnie z  wybiegającymi w  niezbyt odległą przyszłość zapowiedziami producenta, planowane jest osiągnięcie wyniku testu CoreMark o wartości 2000. Producent opracowując mikrokontrolery STM32F7 zadbał o  wyposażenie ich w  bogaty zestaw elementów peryferyjnych (schemat blokowy pokazano na rysunku 2), w  skład którego wchodzą wszystkie interfejsy znane z poprzednich generacji mikrokontrolerów oraz kilka nowych rozwiązań, w tym m.in.: • zmodyikowany podsystem generacji sygnałów zegarowych, pozwalający na  modyikację częstotliwości taktowania bloków peryferyjnych bez konieczności zmiany ustawień taktowania CPU, • dwukanałowy transceiver I2S z  obsługą SPDIF oraz 3 półdupleksowe kanały wejściowe SPDIF, interfejsy USB-OTG z  wydzielonym zasilaniem, co  pozwala

Rysunek 1. Schemat blokowy rdzenia Cortex-M7


Tanie narzędzia startowe dla Cortex-M7 z oferty STMicroelectronics (STM32F7) korzystać z tego interfejsu także przy zasilaniu mikrokontrolera napięciem 1,8 V, • dwa interfejsy QSPI, które sprzętowo realizują transmisję danych z  pamięciami wyposażonymi w 1-, 4- lub 8-bitowe interfejsy komunikacyjne. Mogłoby się wydawać, że  bogate wyposażenie wewnętrzne i  duże możliwości obliczeniowe muszą spowodować wzrost mocy pobieranej podczas pracy, ale według zapewnień producenta cechy te  nie

wpłynęły na pogorszenie ich parametrów „oszczędnościowych” w porównaniu z układami STM32F4, co pozwoliło uzyskać wynik 7 CoreMark/mW w trybie Run, statyczny pobór 120 mA w trybie STOP z podtrzymaniem zawartości pamięci SRAM, 1,7  mA w  trybie STANDBY oraz 0,1 mA w trybie VBAT. Producent przygotował tani zestaw startowy dla mikrokontrolerów STM32F7 –  STM32F746G-DISCOVERY (fotograia  3) – który umożliwia wygodne zweryikowanie

Rysunek 2. Schemat blokowy mikrokontrolerów STM32F75x

działania mikrokontrolera STM32F746NGH6 (1 MB Flash, 320 kB SRAM, 216 MHz) w wymagającym otoczeniu: z  zewnętrzną pamięcią SDRAM, wyświetlaczem graicznym LCD-TFT WQVGA, interfejsem Ethernet i kodekiem audio. Fizyczne wymiary prezentowanego zestawu są większe niż dotychczasowych DISCOVERY z  mikrokontrolerami STM32, co wynika przede wszystkim z użytego w  nim dużego wyświetlacza LCD-TFT, który stanowi integralną część zestawu. Przekątna wyświetlacza wynosi 4,3  cala, wymiary matrycy 480×272 punktów, moduł wyświetlacza został wyposażony w zintegrowany, pojemnościowy touch-panel z kontrolerem na I2C. Wyposażenie prezentowanego zestawu należy do ponadstandardowych jak na tanie rozwiązanie mikrokontrolerowe, bowiem STM32F746G-DISCOVERY jest kompletnym komputerem sieciowym! W skład wyposażenia zestawu wchodzą: • pamięci NOR Flash z  interfejsem QSPI (128 Mb), • pamięć SDRAM o  pojemności 128  Mb (z  czego mikrokontroler obsługuje 64 Mb), • kodek audio WM8994 ze stereofonicznymi: wyjściem słuchawkowym, wyjściami głośnikowymi i wejściem liniowym, • wejście cyfrowego audio SPDIF, • interfejs Ethernet 10/100 bazujący na zewnętrznym MAC, komunikującym się z  mikrokontrolerem poprzez interfejs RMII, • złącza: kart MicroSD i  kamery CCD (dołączony interfejs DCMI) oraz złącza Arduino Rev.3 (jak w zestawach STM32 NUCLEO), które umożliwiają montaż shieldów przystosowanych do  zasilania napięciem 3,3 V, • interfejsy USB OTG w wersjach: FS (PHY wbudowany w  mikrokontroler) oraz HS (z  zewnętrznym PHY USB3320C, który komunikuje się z  mikrokontrolerem za pomocą interfejsu ULPI. Atutem prezentowanego zestawu są złącza zgodne z  Arduino Rev.  3, w  których można instalować shieldy przystosowane do zasilania napięciem I/O o wartości 3,3 V. producent zachował dużą zgodność wyprowadzeń ze specyikacją Arduino, bowiem zestaw można zasilać – jako jednego ze źródeł – także z napięcia zewnętrznego Vin. Prezentowany w  artykule zestaw STM32F746G-DISCOVERY wyposażono – podobnie do starszych modeli DISCOVERY – w dwa mikroswitche (w tym tylko jeden dla użytkownika), złącze dla ekspandera z  pamięciami EEPROM NFC (M24SR/M24LR) oraz programator-debugger ST-Link/V2-1. Programator jest przystosowany do  współpracy ze środowiskiem mbed.org.

Andrzej Gawryluk Fotograia 3. Wygląd zestawu STM32F746G-DISCOVERY ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

79


NOTATNIK KONSTRUKTORA

Jednostka GPU oraz OpenCL – aplikacje W  artykule zaprezentowano przykładową aplikacją –  symulowanie sił oddziaływujących na  cząsteczki oraz animowanie ich ruchu na  ekranie zestawu ewaluacyjnego i.MX6 Sabre. Omówiono również ramy aplikacji OpenCL, typy zmiennych mające zastosowanie, sposób funkcjonowania aplikacji (podział na  Hosta i  Kernel), który jest nieco odmienny od  typowego oraz pokazano listingi z  zaznaczeniem i  omówieniem ważniejszych części kodu źródłowego.

Jak wspomniano w pierwszej części artykułu (EP 6/2015), aplikacja OpenCL składa się z  dwóch komponentów: jeden jest uruchamiany na  Hoście (służy on  do  zarządzania systemem i zawiera kod kontrolujący wykonywanie aplikacji), natomiast drugi jest uruchamiany na  Urządzeniu Przetwarzającym, zwykle wykonującym najcięższą pracę przy przetwarzaniu danych. W  niektórych urządzeniach (na  przykład –  w  typowym komputerze PC wyposażonym w kartę graiczną) są to odseparowane urządzenia, ale nie w systemach embedded, ponieważ większość nowoczesnych procesorów aplikacyjnych zawiera zintegrowaną jednostkę GPU, które może wykonywać aplikacje OpenCL. Dla potrzeb aplikacji demonstracyjnej wykorzystaliśmy ten sam 4-rdzeniowy procesor i.MX6, który opisywaliśmy w  pierwszej części artykułu. Tam posłużyliśmy się nim dla celu zaprezentowania struktury nowoczesnego GPU widzianego z  perspektywy OpenCL. Host jest reprezentowany przez klaster 4 rdzeni ARM A9, natomiast Urządzenie Przetwarzające przez procesor graiczny GC2000. Jako system do  uruchomienia naszej aplikacji wybraliśmy płytkę demonstracyjną i.MX6 Sabre, jedną z  platform referencyjnych dla tego układu SoC (pokazano ją na fotograii 1). Tworząc może nieco mało ambitną aplikację OpenCL typu „Hello World” na  ekranie platformy Sabre wyświetlimy symulację

80 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Fotograia 1. Platforma Sabre wyposażona w procesor i.MX 6 przemieszczania się cząstek poddanych (w  systemie zamkniętym) oddziaływaniu predeiniowanych sił. Początkowy zestaw cząstek będzie określony za pomocą bitmapy. Na rysunku 2 pokazano wygląd ekranu w różnych stanach pracy aplikacji (lub czasu życia systemu cząstek). Mamy nadzieję, że ta przykładowa aplikacji zachęci czytelnika do  jej powielenia, samodzielnego eksperymentowania, a  także przeanalizowania znaczenia i sposobu działania poszczególnych funkcji. Dla ułatwienia samodzielnej pracy, omówimy niezbędne nastawy systemu, rolę Hosta oraz Urządzenia Przetwarzającego.

Nastawy sytemu Jako środowiska projektowego dla Hosta użyjemy kompilatora języka C pracującego pod kontrolą Linuksa. Dla naszej przykładowej platformy Sablre użyjemy najnowszej wersji Linuksa BSP, dostępnego do pobrania na stronie http://www.freescale.com w menu Software and Tools/Software development tools dla procesora i.MX6. W czasie pisania artykułu najnowsza wersja Linuksa BSP nosi oznaczenie L3_10_53_1.1.0. Sposób wykonania obrazu systemu –  oczywiście po  pobraniu Linuksa BSPA – jest opisany w Freescale Yocto Project User’s Guide. Dla potrzeb aplikacji demonstracyjnej OpenCL będziemy używali bufora ramek obrazu, więc najlepiej posłużyć się obrazem o nazwie fsl-image-gui, ponieważ zawiera on  wszystkie potrzebne biblioteki wymagane przez naszą aplikację. Jeśli program demonstracyjny będzie uruchamiany na  innej platformie z  i.MX6, to  należy włączyć wsparcie dla obsługi

bufora ramek oraz mieć zainstalowany pakiet gpu-viv-bin-mx6q. Kompletny kod źródłowy opisywanej aplikacji oraz instrukcja jej skompilowania i uruchomienia/wgrania na  platformie docelowej są  opublikowane pod adresem internetowym społeczności Freescale https:// community.freescale.com/docs/DOC-103684.

Opis aplikacji dla Hosta Zanim zaprezentujemy szczegóły dotyczące wykonania aplikacji dla Hosta, pokrótce omówimy funkcje pełnione przez poszczególne komponenty systemu OpenCL: • Interfejs użytkownika. • Koniguracja systemu, wliczając w to rozpoznanie i  konigurowanie Urządzenia Przetwarzającego. • Utworzenie kanałów komunikacyjnych służących do wymiany danych i komend z Urządzeniem Przetwarzającym. • Transmisja danych, przetwarzanie, gromadzenie i  prezentowanie rezultatów przetwarzania wykonywanego przez Urządzenie Przetwarzające. Zanim zidentyikujemy i wyjaśnimy sposób, w jaki są te zadania realizowane, pokrótce zaprezentujemy minimalny zestaw struktur danych OpenCL, dzięki którym jest możliwe wykonanie wszystkich wymienionych zadań: • Kontekst (cl_context): – Program obsługi zapewniany przez framework OpenCL na  żądanie dostępu przez Hosta do  Urządzenia Przetwarzającego. – Pozwala frameworkowi OpenC, a w naszym wypadku – sterownikowi


Jednostka GPU oraz OpenCL – aplikacje

Rysunek 2. Obraz wyświetlany przez aplikację demonstracyjną na ekranie LCD W pierwszym kroku identyfikujemy Urządzenie Przetwarzające, pobieramy kontekst i inne związane z nim dane, które będą wykorzystane przez aplikację definiującą clctxt.

Przydzielamy pamięć wymaganą do przechowywania danych wejściowych (współrzędne cząstek w vars) i informacji wyjściowej z Urządzenia Przetwarzającego po przetworzeniu danych (zostanie zapamiętana w off). Pamięć będzie przydzielana przez OpenCL na podstawie wielkości danych wejściowych (nbelem), a Host pobierze potrzebne wskaźniki do danych. Siły, które będą oddziaływały na cząstki są rozmieszczone statycznie, zainicjowane przez Hosta i przekazane do Urządzenia Przetwarzającego w forces.

Czytamy graficzny plik wejściowy. Współrzędne cząstek, które będą transformowane przez Urządzenie Przetwarzające są odczytywane bezpośrednio z vars. Obiekty w pamięci są alokowane przez OpenCL i służą do inicjowania Kernela GPU. Kolor będzie zapamiętany w fixis.

Funkcja kompiluje zbiór źródłowy implementujący Kernel uruchamiany w GPU i ładuje Kernel do GPU w celu uruchomienia.

Uruchomienie Kernela. Gdy funkcja zostanie zakończona, w zmiennej off zostaną zwrócone efekty wykonanego przez nią przetwarzania.

Funkcja wyświetla rezultat na ekranie dostępnym poprzez mapowany w pamięci bufor ramki wskazywany przez ppfb. Zmienna off przechowuje nowe koordynaty cząstki (po przetworzeniu przez Kernel uruchomiony na GPU), a fixis przechowuje informację o kolorze.

Rysunek 3. Szczegóły implementacji main() ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

81


NOTATNIK KONSTRUKTORA GPU, na zarządzenie odpowiednimi obiektami (pamięć, komendy, kernel, synchronizacja) odnoszącymi się do  interakcji pomiędzy Hostem a Urządzeniem Przetwarzającym. • Kolejka komend (cl_command_queue): – Kanał komunikacyjny pomiędzy Hostem i  kontekstem skojarzonym z  danym Urządzeniem

Przetwarzającym. Pozwala on Hostowi na żądanie wykonywania zadań związanych z  obiektami skojarzonymi z kontekstem. – Użycie kolejki pozwala na  łatwe synchronizowanie żądanych operacji –  najwygodniejsze jest żądanie wykonania zadań w  ramach frameworku Open CL/Urządzenia

Przetwarzającego, co może mieć wpływ na wydajność. – Dozwolone jest powiązanie wielu kolejek z tym samym kontekstem, ale w takim wypadku synchronizacja musi być zapewniana przez Hosta. Ta  technika jest używana w celu zapewnienia optymalnej wydajności zwłaszcza wtedy, gdy jest wiele Urządzeń Przetwarzających.

Pobranie identyfikatora GPU, które będzie używane. W związku z tym, że w naszym układzie SoC mamy tylko jedno GPU, łatwo jest „dostać się” do niego. Jeśli byłoby obecne więcej GPU, wymagane byłoby ich parsowanie i selekcja z listy zwróconej przez funkcję.

Tworzenie kolejki komend, które będą używane. Tworzymy ją w kolejności wykonywania – trzeci parametr wywołania funkcji pozwala na żądanie wykonania komendy poza kolejką, jeśli to konieczne.

Rysunek 4. Szczegóły funkcji cl_create() Żądanie utworzenia przez OpenCL obiektu w pamięci (GPUvars) zapamiętanego w kontekście lokalnym, odpowiednim dla Urządzenia Przetwarzającego, dostępnym dla Hosta jako vars (patrz niżej). Za pomocą drugiego parametru określamy typ dostępu (CL_MEM_READ_WRITE) z punktu widzenia Urządzenia Przetwarzającego do przydzielonego obszaru pamięci (MEM_ALLLOC_HOST_PTR).

Tworzenie obiektu w pamięci – tym razem do skopiowania danych alokowanych przez Hosta dla Urządzenia Przetwarzającego. Następnie podajemy CL_MEM_READ_ONLY i CL_MEM_ COPY_HOST_PTR. Mapowanie utworzonego wcześniej w pamięci obiektu (GPUvars) w przestrzeni adresowej Hosta (vars). Dla uproszczenia, wywołanie jest synchroniczne (CL_TRUE) – Host zapisze w pamięci obiekt (CL_MAP_WRITE).

Rysunek 5. Szczegóły implementacji funkcji cl_alloc()

Funkcja Kernela, która będzie wykonywana przez GPU, jest zapamiętana w zbiorze physiscs.cl. Musimy odczytać go z aplikacji Hosta. Zbiór jest spodziewany i powinien być zapisany w tym samym katalogu, z którego uruchomiono wykonywanie aplikacji Hosta.

Ładuje kod źródłowy dla Kernela do obiektu cl_program – reprezentacji Kernela utworzonej przez framework OpenCL służącej do kompilowania i linkowania Kernela.

Synchronicznie kompiluje i tworzy Kernel. Powstałe błędy są natychmiast odczytywane i wyświetlane w kolejnej sekcji.

Ostatni krok w procesie przygotowywania Kernela OpenCL do uruchomienia – linkowanie obiektów z pamięci, które są połączone z aplikacją Hosta. Te obiekty będą dostępne dla Kernela jako numerowane parametry w buforze w pamięci – specyfikację struktury danych podano odrębnie.

Rysunek 6. Szczegóły implementacji funkcji cl_init()

82 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


Jednostka GPU oraz OpenCL – aplikacje • Kernel (cl_kernel): – Funkcja przeznaczona do  uruchomienia na  Urządzeniu Przetwarzającym. – Jest kompilowana (w  trybie off line lub podczas pracy) i  ładowana do  urządzenia przetwarzającego przez Hosta. • Obiekty w pamięci (cl_mem): – Mogą służyć do  jednokierunkowej lub dwukierunkowej transmisji danych pomiędzy Hostem i Urządzeniem Przetwarzającym. – Najprostszą postacią jest tablica niezwymiarowana, ale używane mogą być również tablice wielowymiarowe (do 3 wymiarów). – W  aktualnej implementacji wymiany danych są  dwie najważniejsze metody realizacji tego zadania: * Mapowanie fizycznie dzielonych obszarów pamięci w obu kontekstach wykonywania zadań (Host i Urządzenie Przetwarzające). * Poleganie na  kopiach danych wykonywanych w  razie potrzeby przez framework OpenCL. – Wybór metody transmisji/wymiany danych ma znaczny wpływ na  wydajność i  jest silnie związany z  systemem, pod którego kontrolą jest uruchamiana aplikacja.

W naszym przykładzie oprogramowanie Hosta jest implementowane w  dwóch zbiorach źródłowych w języku C: • main.c: – Inicjalizuje ekran i  struktury danych reprezentujące siły występujące w systemie. – Czyta bitmapy wejściowe, oddziela fragmenty, które będą przetwarzane. – Używa funkcji zaimplementowanych w  cl_implem.c do  utworzenia, inicjalizacji i  zarządzania przetwarzaniem przez GPU. • cl_implem.c: – Zawiera funkcje potrzebne do  wsparcia interakcji pomiędzy Hostem i  Urządzeniem Przetwarzającym, utworzone „w  oderwaniu” frameworka OpenCL. Implementację funkcji main() w  pliku main.c pokazano na  rysunku 3 z  dodatkowymi uwagami odnośnie do  kolejności wykonywania. Byłoby idealnie, gdyby czytelnik równolegle zapoznał się z opisem w artykule oraz wyjaśnieniami w ramkach na rys. 3, odnosząc to do kodu źródłowego. Należy zauważyć, że  wersja OpenCL wspierana przez procesor aplikacyjny i.MX 6 GPU to  OpenCL 1.1 proil embedded. Znajduje to  odzwierciedlenie w  API frameworka OpenCL wykorzystanym w  przykładowym programie –  niektóre jego elementy

zmieniły się po przeniesieniu do  OpenCL 2.0. Funkcje pomocnicze obecne w OpenCL, które są  wywoływane przez funkcję main() są  zaprezentowane na  rysunkach 4…8. Nie będziemy komentowali wywołania każdej z  funkcji OpenCL, ale opatrzymy uwagami tylko te, które pomogą czytelnikowi w  łatwiejszym zrozumieniu aspektów aplikacji utworzonej za pomocą OpenCL.

Opis aplikacji dla Urządzenia Przetwarzającego Urządzenie Przetwarzające uruchamia „kernele”, które typowo są budowane (kompilowane) przez Hosta (może to  być również zrobione off line) i ładowane podczas pracy systemu. Kod źródłowy Kernela jest tworzony w  języku bardzo zbliżonym do  ANSI C. Rzućmy okiem na minimalny zestaw zagadnień, które musi znać czytelnik przed przystąpieniem do  analizowania kodu Kernela. Te zagadnienia są związane z: podziałem obszaru pamięci aplikacji, typami danych, prototypem Kernela oraz restrykcjami OpenCL w ANSI C. W pierwszej części artykułu wprowadziliśmy pojęcie przestrzeni adresowych deiniowanych przez OpenCL. Gdy przekazywaliśmy dane pomiędzy Hostem i Urządzeniem Przetwarzającym (jak dla przykładu deinicje argumentów Kernela) lub gdy Gdy GPU korzysta z bufora, Host nie może go modyfikować. Ten mechanizm musi być zapewniany przez aplikację (tu za pomocą usunięcia mapowania). Zaplanowanie uruchomienia Kernela. Przekazujemy informację związaną z wymiarami (2D) pozycji wejściowych do przetworzenia, jak również wielkość matrycy, którą będzie przetwarzał Kernel (clctx->WorkSize). Uruchomienie Kernela odbędzie się natychmiast. Punktem synchronizacji jest następne wywołanie blokowe w celu kolejkowania operacji, które nie zakończy się zanim Kernel nie zakończy pracy. Alternatywnie, do synchronizacji można użyć zdarzeń oraz clWaitForEvent().

Rysunek 7. Szczegóły funkcji cl_run() Deklarujemy struktury określające organizację w pamięci obiektów przesyłanych przez Hosta. Należy zauważyć, że używamy tu 2 elementów wektorowych, natomiast dla Hosta użyliśmy wielu elementów skalarnych zapisanych w tej samej strukturze: pozycja, prędkość itp. Kernel nie zwraca wartości – ta funkcjonalność nie jest wspierana przez OpenCL. Dane są transmitowane pomiędzy Hostem a Urządzeniem Przetwarzającym za pomocą obiektów w pamięci. Należy zwrócić uwagę na kwalifikatory.

Pobieramy indeks pozycji instancji żądanego procesu z pamięci globalnej.

Przykład inicjalizacji wektora – na podstawie tablicy.

Rysunek 8. Struktury, kernel i deklarowanie zmienny prywatnych ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

83


NOTATNIK KONSTRUKTORA

Aktualizujemy prędkość i przyśpieszenie cząstki przemieszczającej się pod wpływem sił zadeklarowanych w systemie. Należy zauważyć, że spośród obiektów vars przekazanych przez Hosta za pomocą indeksu i reprezentującego pozycję, którą musi przetworzyć Kernel z przestrzeni indeksów globalnych, jest wybrana tylko jedna cząstka.

Przykład operacji wektorowej. Odejmujemy dwa elementy, każdy złożony z wektora o wielkości 2. Nasze GPU może jednocześnie przetwarzać 4 elementy, więc idealny rozmiar wektora to 4, ale wymagałoby to znacznych zmian w programie i dodatkowej optymalizacji Kernela.

Aktualizacja pozycji cząstki w wyjściowym obiekcie off umieszczonym w pamięci. Ponownie, operacja wykonywana na danych typu wektorowego o rozmiarze 2, konwertowanych z float na int w sposób typowy dla ANSI C.

Rysunek 9. Przetwarzanie Kernela i zwracanie zmiennej result.s deklarowaliśmy zmienne w Kernelu, musieliśmy podać kwaliikator określający, gdzie będą przechowywane argumenty. Wśród dostępnych kwaliikatorów przestrzeni pamięci dostępne są: • Global Memory (pamięć globalna): dostępna w  systemie dla Hosta i  Urządzenia Przetwarzającego. Kwaliikator nosi nazwę __global. • Constant Memory (pamięć stałych): ma takie same cechy jak pamięć globalna, ale jest przeznaczona tylko do  odczytu. Przed użyciem należy zainicjować wszystkie dane umieszczone w pamięci stałej. Kwaliikator: __constant. • Local Memory (pamięć lokalna): pamięć, która jest przydzielana dla przetwarzanych elementów. Jest ona specyikowana dla grupy roboczej i dostępna tylko dla komponentów należących do  danej grupy. Nie może być używana do  przekazywania parametrów do Kernela. Kwaliikator: __local. • Private Memory (pamięć prywatna): dostępna dla pojedynczej instancji Kernela/elementu przetwarzanego, niewidoczna dla innych elementów roboczych. Pamięć domyślnie przeznaczona dla argumentów Kernela oraz zmiennych, jeśli nie zdecydowano inaczej. Kwaliikator: __private.

84 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Ważna cechą OpenCL jest wsparcie dla standardowych typów zmiennych numerycznych oraz niestandardowych, wektorowych, charakterystycznych dla operacji graicznych. Niektóre z typów zmiennych opisano niżej: • Skalarne typy danych –  typowe: bool, char, int i inne, znane z ANSI C. Warto zauważyć, że dostępny jest również typ half dla 16-bitowych liczb zmiennoprzecinkowych i float dla liczb 32-bitowych. Wsparcie dla 64-bitowych liczb zmiennoprzecinkowych double jest opcjonalne i deiniowane za pomocą typu cl_khr_fp64. • Wektorowe typy danych: – Bezpośrednio związane z  tablicami ANSI C. Nie wolno ani deklarować wektorów o dowolnych długościach, ani o zmiennej długości. – Wspierane długości wektorów to: 2, 3, 4, 18 oraz 16. Dodatkowo trzeba uważać na  ograniczenia sprzętowe związane z  typem jednostki cieniującej, ponieważ ma to  duży wpływ na wydajność. – Wektory są  deklarowane za pomocą typów zmiennych skalarnych, po których bezpośrednio jest podawana długość wektora: int3, int16, float4, double16.

– Dostęp do elementów wektora może być realizowany na  kilka sposobów, ale najczęściej używa się numeru pozycji wektora poprzedzanej przez token s. Na przykład, siódmy element w zmiennej float16 my_vector to my_ vector.s7. Każdy z  wymienionych typów danych, skalarny lub wektorowy, może być używany jako element tablicy. Uzbrojeni w nową wiedzę, przyjrzyjmy się implementacji Kernela i  omówmy najważniejsze aspekty jego kodu źródłowego. Omówiono je w  ramkach na  rysunkach  8 i 9.

Podsumowanie Mamy nadzieję, że artykuły będą pomocne w  wykonaniu pierwszych kroków z  OpenCL. Na  pewno zaledwie pokazaliśmy wierzchołek góry lodowej rosnących wyzwań, poczynając od  opracowania założeń aplikacji i  kroków przetwarzania, jej implementacji oraz przede wszystkim –  optymalizacji wydajności dla specyicznego Urządzenia Przetwarzającego. Jeśli zdecydujesz się Czytelniku zgłębiać tę  domenę wiedzy, życzę Ci udanej, pouczającej podróży.

Penisoara Nicusor Freescale Semiconductor


PREZENTACJE – ENERGETAB 2015 Zapraszamy getab er na targi En

Nowości w ofercie

ła Bielsko -Bia nia 2015 eś rz w 7 -1 15 ala A stoisko 80 h

Contrans TI zaprasza do odwiedzenia swojego stoiska nr 80 w  hali A, gdzie można zobaczyć PowerCube –  inne wcielenie listwy zasilającej i  maszyny do  nawijania transformatorów O doprowadzeniu zasilania inaczej Plątanina kabli pod biurkiem to  codzienna rzeczywistość. Ustawicznie przyrasta a  listwa zasilająca nie jest piękna i nie przystaje do czasów, w których estetyka idzie w zawody z funkcjonalnością. Zauważyli to projektanci holenderskiej irmy Allocacoc bv. i postawili sobie zadanie wymyślenia na  nowo listwy zasilającej. Kiedy już to zrobili, zajęli się dodawaniem nowych funkcji. Podstawowy produkt irmy Allocacoc z serii Power Cube nazywa się Power Cube Standard i  jest swego rodzaju rozgałęźnikiem o  nietypowym, sześciennym kształcie. Pięć ścianek kostki zajmują gniazda, na szóstej ściance znajduje się wtyczka. Model Power Cube Extended, w  którym wtyczkę zastępuje stały przewód, to funkcjonalny odpowiednik listwy zasilającej. Wyposażony jest w uchwyt dokujący, mocowany przy pomocy wkrętów lub samoprzylepnie. Z kolei modele Power Cube ReWirable można dowolnie konigurować. Wtyczkę zastępuje tu standardowe (takie, jak w komputerach PC)

gniazdo z bezpiecznikiem. Można do  niego podłączyć przewód lub jeden z kilku adapterów do różnych standardów gniazd elektrycznych, co czyni z Power Cube ReWirable uniwersalny adapter podróżny. Wszystkie podstawowe modele PowerCube dostępne są w wersji z wbudowaną 2-wyjściową ładowarką USB o  wydajności 2A. PowerCube Remote to  model wyposażony we włącznik ze  zdalnym sterowaniem o  obciążalności 16  A. Bezprzewodowy sterownik PowerRemote korzysta z  energii kinetycznej i  nie potrzebuje baterii. Może sterować wieloma kostkami PowerCube jednocześnie. I  odwrotnie – wiele sterowników PowerRemote może być przypisane do jednego włącznika. Firma pracuje nad kolejnymi innowacjami. W przygotowaniu jest głośnik z interfejsem Bluetooth i monitor zużycia energii.

Maszyny do nawijania i prasy Zapraszamy do zapoznania się z maszynami ukraińskiej irmy Eltech. Firma TzDV Eltech zajmuje się produkcją automatycznych maszyn do  nawijania uzwojeń oraz pras elektrycznych. Programowalna nawijarka liniowa SUN1.8M służy do nawijania otwartych uzwojeń cewek i  transformatorów. Wyposażona jest w hamulec elektromagnetyczny i niezależny napęd mechanizmu prowadnika. Może być sterowana ręcznie lub jednym z 999 zapisanych w  pamięci programów. Pracę ułatwia interfejs użytkownika z  klawiaturą i  wyświetlaczem oraz port RS-232 a  dołączone oprogramowanie PC wspomaga projektowanie programów i diagnostykę urządzenia. Prasa elektryczna PK-1.8M to  kompaktowa stołowa prasa służąca do  zaciskania złącz, nitowania oraz gięcia i tłoczenia detali z  taśmy. Maszyna zasilana jest wyłącznie elektrycznie, prądem jednofazowym, i  dysponuje naciskiem 15 (30) kN. Skok roboczy wynosi 30mm, a wydajność do 12 tys. operacji na godzinę. Konstrukcja umożliwia szybką wymianę tłoczników. Więcej informacji o  maszynach z  oferty Eltech znajdą Państwo w  serwisie www.eltech.com.ua.

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

85


DL A PR AKTYK A

PREZENTACJE

Patchblocks – miniaturowy syntetyzator/ procesor audio DSP Moduły Patchblocks wykorzystują najnowsze zdobycze techniki, aby tworzyć niepowtarzalny dźwięk. To jeden z  projektów, który udało się sinansować dzięki społeczności Kickstarter. Twórca modułów mówił, że  chciał zbudować urządzenie do  tworzenia i  obróbki dźwięku będące połączeniem programowania algorytmicznego, Arduino, Moog i  klocków Lego. Każdy moduł Patchblocks ma wbudowane zaledwie 4 elementy manipulacyjne: 2 potencjometry i  2 przyciski. Za ich pomocą

można manipulować wejściowym sygnałem audio lub tworzyć (w znaczeniu –  generować) własne, bardzo urozmaicone dźwięki.

Fotografia 1. Moduły są oferowane w czterech kolorach (białym, różowym, czarnym i żółtym)

86 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Dodatkowe informacje: Moduły Patchblocks (numer produktu 1318449) są dostępne w sklepie internetowym irmy Conrad pod adresem http://www.conrad.pl/.

To najmniejszy syntetyzator dla muzyków o tak bogatych możliwościach, który zdarzyło mi się oglądać. Moduł ma wejście i  wyjście analogowego sygnału stereofonicznego, 2-kanałowe wejście i  wyjście cyfrowe, interfejs USB, za pomocą którego można nie


Rysunek 2. Oprogramowanie jest tworzone w postaci diagramów jeśli uzyskaliśmy zadawalający efekt, wystarczy moduł Patchblocks dołączyć do komputera PC za pomocą kabla USB, zaprogramować i  użytkować niezależnie od  komputera. Dzięki wbudowanemu akumulatorowi moduł można po prostu wrzucić do kieszeni i zabrać ze sobą na imprezę, koncert lub próbę zespołu muzycznego. Jak wspomniano, moduły można ze sobą łączyć za pomocą wejść/wyjść cyfrowych. Bok modułu z  wejściem pasuje do  boku modułu z  wyjściem, a  kształt kafelka puzzle ułatwia rozpoznanie, co  z  czym można połączyć. Poszczególne moduły mogą mieć zaprogramowane różne efekty, które po połączeniu będą brzmiały razem.

Jacek Bogusz, EP Podstawowe parametry: • Wejście audio, analogowe – mini Jack. • Wyjście audio, analogowe – mini Jack. • Próbkowanie sygnału analogowego: 20 kHz/10 bit. • 2×2-kanałowe wejście/wyjście cyfrowe. • Możliwość łączenia modułów ze sobą w celu zwielokrotnienia efektu/ funkcjonalności. • Napięcie wejściowe (wejście ładowania): +5 V, gniazdo micro USB. • Zasilanie za pomocą akumulatora litowego. • Manipulatory: 2 potencjometry, 2 przyciski. • Programowanie za pomocą środowiska Patchblock. • Dostępne w kolorach: różowym, żółtym, czarnym i białym.

REKLAMA

tylko zaprogramować moduł, ale również naładować wbudowany akumulator litowy. Częstotliwość próbowania sygnału audio wynosi 20 kHz przy rozdzielczości 10-bitowej. Nie są to  być może oszałamiające parametry, ale wystarczą do  większości popularnych zastosowań lub po prostu do dobrej zabawy. Moduły można łączyć ze sobą zwielokrotniając ich możliwości przetwarzania oraz liczbę wejść-wyjść sygnału audio. Aby było ciekawej, moduły są oferowane w czterech kolorach (białym, różowym, czarnym i żółtym – fotograia 1). Dzięki temu, składając „rozbudowany syntetyzator” możemy za pomocą kolorów rozróżniać funkcje/efekty tworzone przez poszczególne moduły. Wszystko, czego potrzebujemy, aby móc wykorzystać moduły Patchblocks, to  komputer pracujący pod kontrolą Mac OS lub Windows, wyposażony w  interfejs USB. Po  zainstalowaniu oprogramowania Patchblock otwiera się przed nami morze możliwości –  wymagane funkcje syntetyzatora można zaprogramować samodzielnie korzystając z  predeiniowanych bloków lub skorzystać z  tworzonych przez społeczność Patchblocks. Oprogramowanie jest tworzone w postaci diagramów – nie trzeba znać żadnego języka programowanie. Gotowe bloki funkcyjne łączy się ze sobą za pomocą linii, wgrywa program do pamięci modułu i można cieszyć się dźwiękiem (rysunek 2). Obrazkowa biblioteka funkcji zawiera generatory sygnałów, sekwensery, procesory dźwięku (np. oscylatory, iltry, linie opóźniające i  inne), opcje umożliwiające zróżnicowane doprowadzanie sygnałów a  nawet moduły służące do  tworzenia kompozycji algorytmicznych. Edytor ma wbudowany symulator, który pozwala na emulowanie przebiegu  ścieżki sygnału. Po  przetestowaniu,

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

87


Pozostałe funkcje telefonu W dotychczasowych częściach kursu programowania aplikacji mobilnych pokazaliśmy już większość przydatnych, podstawowych funkcji telefonu, które można wykorzystać w  programach tworzonych przez elektroników. Niemniej zostało jeszcze trochę wtyczek do  Cordovy, które mogą okazać się użyteczne, a  które trudno było podczepić pod opisywane dotąd grupy funkcji. W  tej części kursu omawiamy pozostałe, ciekawe pluginy Cordovy i  związane z  nimi funkcje. Tym razem rozpoczniemy programowanie od  stworzenia zupełnie nowego projektu. Załóżmy, że  budujemy urządzenie elektroniczne, które do  swojej pracy wymaga smartfonu, służącego m.in. za interfejs użytkownika. Pomijamy wszystkie kwestie związane z  połączeniem urządzenia z telefonem i to, co dane urządzenie w praktyce miałoby robić, a  zajmiemy się diagnostyką smartfonu i  sygnalizowaniem problemów. Sprawimy więc, że smartfon będzie monitorował stan naładowania swojej baterii i w razie jego obniżenia, informował o tym użytkownika. Co więcej, będzie go informować nie tyle stosownym komunikatem, wyświetlanym na ekranie, ale za pomocą wiadomości SMS, wysyłanej pod numer telefonu z książki adresowej systemu operacyjnego. Będzie też mógł odczytywać wiadomości SMS i przyjmować w ten sposób polecenia, a w razie potrzeby, będzie przesyłał informacje o aktualnym stanie dostępu do sieci. Wszystkie

informacje będzie podawał z dbałością o  zapewnienie odpowiedniego formatu informacji, jaki obowiązuje w  danym regionie. W  tym celu zostanie wykorzystany odpowiedni plugin, który to ułatwia. Pokażemy też, jak lepiej zapanować nad interfejsem użytkownika, tj. wpłynąć na to, czy wyświetlany ma być pasek stanu i czy pokazywana ma być klawiatura ekranowa, co może mieć znaczenie przy mniejszych ekranach i w tych aplikacjach, gdzie jest ona momentami celowo niepotrzebna.

Pluginy Aby zaimplementować podane powyżej funkcje skorzystamy z szeregu wtyczek, których lista znajduje się w  tabeli  1. Możemy je wszystkie doinstalować od  razu po stworzeniu nowego projektu (dla przypomnienia, polecenie: crodova create), korzystając z komendy cordova

Battery Contacts Globalization Network Information SoftKeyboard StatusBar Keyboard SMS

88 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Stara nazwa org.apache.cordova. device-orientation org.apache.cordova. battery-status org.apache.cordova. contacts org.apache.cordova. globalization org.apache.cordova. network-information org.apache.cordova. plugin.softkeyboard org.apache.cordova. statusbar com.ionic.keyboard com.rjfun.cordova.sms

Wersja ze starego adresu 0.3.11 0.2.12 0.2.16 0.3.4 0.2.15 1.0.3 0.1.10 1.0.4 1.0.3

sms

com.jsmobile.plugins.sms

0.0.1

Cordova SMS Plugin

com.cordova.plugins.sms

0.1.2

ELEKTRONIKA PRAKTYCZNA 9/2015

Nowa nazwa cordova-plugin-device-orientation cordova-plugin-battery-status cordova-plugin-contacts cordova-plugin-globalization cordova-plugin-network-information brak - trzeba użyć starego adresu cordova-plugin-statusbar ionic-plugin-keyboard brak - trzeba użyć starego adresu brak - trzeba użyć starego adresu cordova-plugin-sms

Wersja z nowego adresu 1.0.1 1.1.0 1.1.0 1.0.1 1.0.1 n.d. 1.0.1 1.0.5 n.d. n.d. 1.0.4

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Tabela 1. Lista pluginów, przydatnych w realizacji zadań z  tej części kursu. W  tabeli podano stare i  nowe nazwy pluginów. Warto zwrócić uwagę, że  pod nowym adresem niektóre wtyczki są  już dostępne w  nowszych wersjach (przy czym numeracja wersji dla pluginów przeniesionych do  nowego repozytorium została w  większości przypadków zresetowana). W  trakcie pisania kursu korzystano z  wersji ze  starego repozytorium, w  którym znajdowało się 1076 pluginów, podczas gdy w  nowym było ich jak dotąd tylko 393. Nowe repozytorium znajduje się pod adresem: http://plugins.cordova.io/npm/index.html Nazwa skrócona pluginu Device Orientation

Krok po kroku Kursy EP

Programowanie aplikacji mobilnych (6)


Krok po kroku Kursy EP

plugin add. W tabeli podano wersje pluginów pobrane w trakcie tworzenia tego kursu, przy czym cały czas kurs prowadzony jest w  oparciu o  Cordovę w  wersji 4.1.2, czyli korzystającą ze starej nomenklatury wtyczek (patrz. poprzednia część kursu). Dla osób, które chcą już korzystać z  nowej wersji Cordovy, podajemy adresy nowych wtyczek. Warto zauważyć, że niektóre z nich są dostępne pod nowymi adresami w uaktualnionych wersjach, choć widać, że  Cordova sama zmieniła nie tylko adresy ale i numerację wersji wielu swoich pluginów. Zainstalowane pluginy wykorzystamy w następujący sposób –  korzystając z  wtyczki „Battery” będziemy monitorowali stan akumulatora. Jeśli spadnie on  poniżej 20%, pobierzemy informację o  orientacji przestrzennej urządzenia, korzystając z  wtyczki „Device Orientation”, a  następnie sprawdzimy czy mamy dostęp do  sieci (wtyczka „Network Information”). Jeśli tak, to zgromadzone informacje przetworzymy zgodnie z  zasadami obowiązującymi w  kraju posiadacza telefonu (wtyczka „Globalization”), wczytamy odpowiedni kontakt z  książki adresowej (wtyczka „Contacts”) i  wyślemy wiadomość tekstową –  z  użyciem pluginu „Cordova SMS plugin”. Uwaga: instalacja jednocześnie wtyczki com.jsmobile.plugins.sms i  com.cordova.plugins.sms i  ew. com.rjfun.cordova.sms uniemożliwia poprawne ich użycie, co  wynika z  wielokrotnej deklaracji tego samego obiektu. Niezależnie zarejestrujemy reakcję na  inne zdarzenie – na otrzymanie wiadomości tekstowej z poleceniem. W tym celu użyjemy najbardziej zaawansowanej z wtyczek do  obsługi SMSów –  „SMS” (com.rjfun.cordova. sms). Po otrzymaniu polecenia, dla celów demonstracyjnych, zareagujemy zmieniając widok klawiatury ekranowej (wtyczki „Keyboard” i  „SoftKeyboard”) oraz paska statusu („StatusBar”). Do dzieła.

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Obsługa stanu baterii

Dodanie pluginów „Battery” sprawiło, że w systemie zostały zdeiniowane trzy nowe zdarzenia: • batterystatus, • batterycritical, • batterylow. Są  one wyzwalane w  momencie, gdy nastąpi zmiana stanu baterii, przy czym w przypadku zdarzenia batterystatus, wystarczy zmiana o  1% w  dowolną stronę, podczas gdy w  przypadku pozostałych zdarzeń, progi których przekroczenie powoduje wystąpienie zdarzenia są z góry ustalone przez system operacyjny. Aby obsłużyć nowe zdarzenia, trzeba przypisać do nich akcję, korzystając z funkcji window.addEventListener(). Dla każdego z wymienionych zdarzeń, do funkcji je obsługującej przekazywany jest jeden obiekt z dwoma atrybutami: • level –  liczba z  zakresu od  0 do  100, reprezentująca procentową wartość naładowania akumulatora (w  przypadku niektórych systemów operacyjnych ta wartość może być niedostępna), • isPlugged – wartość true lub false, informująca o tym czy urządzenie jest podłączone do zasilania. Ponieważ w  naszym przypadku chcemy wykrywać stan, w  którym stopień naładowania akumulatora spadł poniżej 20%, skorzystamy z  obsługi zdarzenia batterystatus i  w  tym celu tworzymy funkcję app. onBatteryStatus().

Kompas W poprzednich częściach kursu pokazaliśmy, jak korzystać ze  wskazań akcelerometru i  odbiornika GPS. Jednakże w  niektórych urządzeniach mobilnych dostępny jest także kompas –  niezależny, bazujący na  polu magnetycznym Ziemi, sensor określający ustawienie telefonu w przestrzeni. O ile zgrubne obliczenie orientacji telefonu w  przestrzeni jest możliwe, gdy urządzenie się porusza oraz dostępne są  wskazania akcelerometru i  odbiornika nawigacji satelitarnej, to w praktyce wygodniej jest skorzystać z wbudowanego kompasu. Plugin org.apache.cordova.device-orientation wprowadza do systemu trzy nowe metody: • navigator.compass.getCurrentHeading() –  pozwala na pobranie aktualnego wskazania kompasu; • navigator.compass.watchHeading() –  pozwala na  cykliczne pobieranie wskazań kompasu lub monitorowanie wskazania w  celu wywołania wybranej funkcji o  ile zmieni się ono wystarczająco znacząco; • navigator.compass.clearWatch() –  wstrzymuje cykliczne pobieranie lub monitorowanie wskazań kompasu. W  przypadku funkcji navigator.compass.watchHeading() twórcy zastosowali jedno mylące oznaczenie. Parametry tej funkcji są następujące: • compassSuccess –  nazwa funkcji wywoływanej w  przypadku pomyślnego odczytania wskazań kompasu; • compassError – nazwa funkcji wywoływanej w przypadku błędu podczas odczytu wskazań kompasu; • compassOptions –  opcjonalne parametry na  które składa się obiekt o  dwóch dopuszczalnych atrybutach: – frequency – podana w milisekundach wartość czasu (a  nie częstotliwość) pomiędzy kolejnymi próbami odczytu wskazań kompasu; – ilter –  wartość minimalnej zmiany wskazania kompasu, która miałaby wywołać wywołanie funkcji compassSuccess. Domyślna wartość parametru compassOptions zawiera atrybut frequency równy 100, a  w  przypadku podania wartości atrybutu ilter, atrybut frequency jest zupełnie ignorowany. Do  funkcji wywoływanej po  pomyślnym odczycie wskazań kompasu przekazywany jest obiekt CompassHeading, zawierający cztery atrybuty: • magneticHeading –  wartość odczytana bezpośrednio z  kompasu, zawierająca się w  zakresie od  0 do 359,99, przy czym 0 wskazuje północ; • trueHeading – wartość odczytana z kompasu, skorygowana względem geograicznego położenia Bieguna Północnego. Również jest liczbą z  zakresu od  0 do 359,99, ale może też przyjąć wartość ujemną, gdy ustalenie tego atrybutu nie jest możliwe; • headingAccuracy –  różnica pomiędzy wskazaniami magneticHeading i trueHeading; • timestamp –  wyrażony w  milisekundach znacznik czasu, informujący o  chwili pobrania danych z kompasu. Będziemy korzystali z  funkcji navigator.compass. getCurrentHeading(), wywoływanej wraz ze  spadkiem poziomu baterii do ustalonej wartości.

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

89


Gdy już pobierzemy informacje o orientacji urządzenia w  przestrzeni, sprawdzimy czy możemy ją przesłać, a  dokładniej, czy mamy połączenie z  siecią. Zainstalowany plugin org.apache.cordova.network-information udostępnia jeden nowy obiekt oraz dwa zdarzenia. Obiekt navigator.connection zawiera atrybut type, który przyjmuje jedną z następujących wartości: • Connection.UNKNOWN, • Connection.ETHERNET, • Connection.WIFI, • Connection.CELL_2G, • Connection.CELL_3G, • Connection.CELL_4G, • Connection.CELL, • Connection.NONE. Sprawdzenie aktualnego stanu sieci wymaga jedynie odczytu wartości atrybutu navigator.connection.type. Wartość Connection.UNKNOWN pojawia się, gdy stan sieci jest nieznany, a  Connection.CELL, gdy wiadomo że  urządzenie jest podłączone do  sieci, ale nie wiadomo w jaki sposób. Przykładowo, wartość Connection.CELL jest zwracana np. w systemach operacyjnych takich jak iOS, które nie dostarczają szczegółowych informacji o sieci. Dwa nowe zdarzenia, deiniowane przez plugin org.apache.cordova.network-information to: • ofline, • online. Są one wywoływane, gdy urządzenie straci lub uzyska dostęp do  sieci, czyli gdy wartość navigator.connection.type przyjmie wartość Connection.NONE lub gdy zmieni wartość z Connection.NONE na inną. Trzeba przy tym zaznaczyć, że plugin ten koncentruje się na  obsłudze sieci internetowej, a  nie podłączeniu do sieci komórkowej, co oznacza, że jeśli urządzenie ma dostęp do Wi-Fi, a nie ma do sieci operatora, atrybut navigator.connection.type przyjmie wartość Connection.WIFI.

Adekwatny format danych

90 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Obsługa książki adresowej

Bardzo przydatną wtyczką jest org.apache.cordova. contacts, która pozwala na zapisywanie i wczytywanie kontaktów w książce adresowej urządzenia. Trzeba jednak zwrócić uwagę na fakt, że tworząc aplikację korzystającą z tego pluginów, wymagamy od użytkownika by zgodził się na udostępnienie nam informacji o wszystkich swoich kontaktach. Sposób wykorzystania tych

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Być może część czytelników zastanawiała się kiedyś, dlaczego czasem w różnych publikacjach i  urządzeniach, liczby podawane są z częściami dziesiętnymi oddzielonymi przecinkami, a  czasem kropkami. Wynika to z różnych standardów przyjętych w poszczególnych krajach. O ile w Polsce do oddzielania części dziesiętnych liczb używamy przecinka, to  w  USA –  kropki. To  niejedyna różnica, pomiędzy zwyczajami zależnymi od  regionu. Aby móc w  łatwy sposób dostosować się do  przyzwyczajeń użytkownika, obowiązujących w  danym kraju, warto użyć wtyczki Globalization. Wprowadza ona szereg metod: • navigator.globalization.getPreferredLanguage() –  pobiera ustawienia języka, wprowadzone przez użytkownika urządzenia (np. en-US); • navigator.globalization.getLocaleName() –  pobiera ustawienia sposobu formatowania danych, tj. wskazanie kraju i  języka, zgodnie z  którego zasadami podawane będą liczby, daty, czas itp. Wartość ta  może być inna niż uzyskana z  metody getPreferredLanguage(), gdyż użytkownik może korzystać z telefonu np. w języku angielskim, a stosować

polskie standardy, choć nie każde urządzenie na to pozwala; • navigator.globalization.dateToString() –  formatuje datę (podaną w postaci obiektu Date) do standardu zgodnego z ustawieniami; • navigator.globalization.stringToDate() –  tworzy obiekt typu Date, w  oparciu o  ciąg znaków, przy założeniu, że  ciąg ten jest podany zgodnie z  ustawieniami obowiązującymi w danym kraju; • navigator.globalization.getDatePattern() –  zwraca informacje o  obowiązującym formacie daty, streie czasowej, różnicy względem czasu Greenwich i  o  ewentualnym czasie letnim; Możliwe jest podanie rodzaju formatu czasu (krótki, długi, z  datą itd.); • navigator.globalization.getDateNames() –  zwraca listę nazw dni tygodnia lub miesięcy, jakie stosowane są w danym kraju. Możliwe jest zażądanie nazw krótkich lub długich; • navigator.globalization.isDayLightSavingsTime() –  pozwala dowiedzieć się, czy wedle ustawień w  danym urządzeniu, obowiązuje aktualnie czas letni; • navigator.globalization.getFirstDayOfWeek() –  informuje, który dzień tygodnia jest uważany w  danym kraju za pierwszy, podając jego numer, przy czym jeśli zwrócona zostanie wartość 1, to  jest to niedziela, a jeśli 2, to jest to poniedziałek itd.; • navigator.globalization.numberToString() –  tworzy ciąg znaków na podstawie liczby, zgodny z obowiązującym w danym kraju formatem; • navigator.globalization.stringToNumber() –  próbuje stworzyć liczbę, w  oparciu o  ciąg znaków, podany zgodnie z  obowiązującym w  danym kraju formatem; • navigator.globalization.getNumberPattern() –  pozwala pobrać obiekt z  szeregiem atrybutów informujących o  sposobie prezentowania liczb w  danym kraju. Podawany jest nie tylko format zgodny ze  standardem Unicode, ale też znak używany do formatowania ciągów znaków, liczba cyfr po przecinku, używana podczas wyświetlania liczb, sposób zaokrąglania, symbole stosowane do  wskazywania liczb dodatnich, ujemnych, oddzielania części dziesiętnych oraz grupowania cyfr; • navigator.globalization.getCurrencyPattern() –  ostatnia z  funkcji pozwala zdobyć informacje o  walucie obowiązującej wedle ustawień danego urządzenia. Podawany jest nie tylko format prezentacji waluty, zgodnie ze  standardem Unicode, ale też kod ISO4217 waluty, sposób zaokrąglania, grupowania cyfr itd. W  naszym przypadku użyjemy tylko funkcji dateToString() i  numberToString(), by przygotować odpowiednią treść wiadomości do wysłania użytkownikowi.

Krok po kroku Kursy EP

Monitorowanie stanu sieci


Krok po kroku Kursy EP Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Fotograia 1. Zrzut ekranu umożliwiającego wybór kontaktu z użyciem funkcji navigator.contacts. pickContact() danych zależy już od działania samej aplikacji, ale należy wziąć pod uwagę fakt, że  w  aplikacja mająca dostęp do tych cennych danych może być obiektem ataku osób, które chcą uzyskać informacje o  kontaktach danego użytkownika. Wtyczka pozwala na  korzystanie z  trzech nowych funkcji: • navigator.contacts.create() –  służy do  tworzenia nowych kontaktów (które następnie można zapisać w książce adresowej); • navigator.contacts.ind() – pozwala pobierać informacje o kontaktach z książki adresowej, w oparciu o szereg iltrów; • navigator.contacts.pickContact() – funkcja uruchamiająca systemowy ekran wyboru kontaktu z  listy (fotograia 1), który następnie zostanie przekazany do aplikacji. Do obsługi powyższych funkcji przygotowano szereg obiektów: • Contact –  podstawowy obiekt kontaktu, tworzony z  użyciem funkcji navigator.contacts.create(), lub pobierany z książki adresowej. Zawiera liczne atrybuty, w tym będące obiektami poniższych typów; • ContactName –  obiekt zawierający informacje o imionach i tytułach kontaktu; • ContactField –  uniwersalne pole danych na  temat kontaktu, w  którym przechowywane mogą być takie informacje jak numer telefonu czy np. adres

email. Atrybut pref tego obiektu pozwala sprawdzić, czy dany numer/adres jest domyślny (wartość pref wynosi wtedy true). • ContactAddress – obiekt pozwalający na  przechowywanie izycznego adresu kontaktu; obejmuje atrybuty związane z  typem adresu, nazwą ulicy, kodem pocztowym, państwem itp.; • ContactOrganization – obiekt przechowujący informacje o organizacji, do której przynależy kontakt; • ContactFindOptions – obiekt pomocniczy, podawany jako parametr funkcji navigator.contacts.ind() i umożliwiający wyszukiwanie kontaktów w książce adresowej z użyciem iltra. • ContactError –  obiekt pomocniczy, zwracany w  przypadku wystąpienia błędu związanego z  obsługą książki adresowej. Zawiera tylko jeden atrybut: code, który może przyjąć którąś ze  zdeiniowanych stałych. Pozwala rozpoznać rodzaj błędu, który wystąpił; Warto jeszcze szczegółowo opisać obiekt Contact, który zawiera nie tylko atrybuty, ale i metody. Atrybuty obiektu Contact to: • id –  ciąg znaków, będący unikalnym identyikatorem kontaktu, • displayName –  ciąg znaków, będący wyświetlaną użytkownikowi nazwą kontaktu, • name – obiekt typu ContactName, • nickname –  ciąg znaków, zawierający pseudonim kontaktu, • phoneNumbers –  tablica obiektów typu ContactField, zawierająca numery telefonów kontaktu, • emails –  tablica obiektów typu ContactField, zawierająca adresy e-mail kontaktu, • addresses – tablica obiektów typu ContactAddress, zawierająca adresy izyczne kontaktu, • ims – tablica obiektów typu ContactField, zawierająca numery komunikatorów internetowych, przypisanych do kontaktu, • organizations –  tablica obiektów typu ContactOrganization, zawierająca informacje o organizacjach, do których przynależy kontakt, • birthday – obiekt typu Date, zawierający informacje o dacie urodzenia kontaktu, • note –  ciąg znaków, zawierających dodatkowe notatki na temat kontaktu, • photos –  tablica obiektów typu ContactField, zawierająca fotograie kontaktu, • categories –  tablica obiektów typu ContactField, zawierająca zdeiniowane przez użytkownika kategorie, do których przypisany jest dany kontakt, • urls –  tablica obiektów typu ContactField, zawierająca adresy stron internetowych, powiązanych z kontaktem. Istnieją trzy metody obiektu Contact: • clone – funkcja zwraca nowy obiekt typu Contact, zawierający pełną kopię obiektu typu Contact, podanego jako parametr, za wyjątkiem atrybutu id, który otrzymuje wartość null; • remove –  funkcja do  usuwania kontaktu z  książki adresowej; • save –  funkcja do  dodawania nowego kontaktu do książki adresowej lub zapisywania zmian w dotychczas istniejącym kontakcie.

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

91


Wysyłanie wiadomości tekstowych

Gotowy kod

Na listingu 1 zaprezentowano kompletny kod JavaScript, realizujący opisany wcześniej algorytm. Treści kodu HTML nie trzeba zmieniać, gdyż cała aplikacja działa w praktyce bez jakiegokolwiek interfejsu użytkownika.

92 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Do wysyłania wiadomości SMS można użyć kilku różnych pluginów, które cieszą się podobną popularnością. My skorzystamy z  domyślnego z  nich, czyli com. cordova.plugins.sms. Wysłanie wiadomości tekstowej wymaga użycia funkcji sms.send(), która przyjmuje kolejno następujące pięć parametrów: • number – numer telefonu, pod który ma być wysłana wiadomość, • message – treść wiadomości do wysłania, • options – obiekt zawierający opcje koniguracyjne, • success – nazwa funkcji wywoływanej w przypadku pomyślnego wysłania wiadomości, • error –  nazwa funkcji wywoływanej w  przypadku wystąpienia błędu podczas wysyłania wiadomości. Spośród powyższych dodatkowego wyjaśnienia wymaga parametr options. Ustawienie atrybutu options.replaceLineBreaks na  true spowoduje zamianę znaków „\n” nowymi liniami w wysyłanej wiadomości. Ustawienie atrybutu options.android.intent na wartość „INTENT” spowoduje, że w przypadku Androida, wiadomość zostanie wysłana z użyciem domyślnej aplikacji systemowej do przesyłania wiadomości. Ustawienie pustego ciągu znaków jako wartości atrybutu options. android.intent spowoduje, że wiadomość zostanie wysłana bez otwierania żadnej dodatkowej aplikacji. Tak właśnie zrobimy w naszym przypadku. Korzystając z  wtyczki com.cordova.plugins.sms na  Androidzie, należy się upewnić, że  docelowa wersja API androidowego, wykorzystywanego w projekcie jest nie mniejsza niż 19. Parametr ten można ustawić w  pliku project.properties w  podkatalogu platforms/ android/ katalogu głównego projektu aplikacji. Alternatywą do  pluginów com.cordova.plugins. sms jest com.jsmobile.plugins.sms, w  którym wysyłanie wiadomości odbywa się z  użyciem funkcji sms. sendMessage(), która jako pierwszy parametr przyjmuje obiekt zawierający dwa atrybuty (phoneNumber z  numerem telefonu adresata i  textMessage z  treścią wiadomości), a  dwoma kolejnymi parametrami są funkcje wywoływane w przypadku pomyślnego wysłania wiadomości lub w przypadku wystąpienia błędu (odpowiednio). Niezależnie od  zastosowania jednej czy drugiej wtyczki, nie ma obecnie możliwości, by wiadomość w systemie iOS wysłać bez włączania domyślnej systemowej aplikacji do  przesyłania SMSów. W  przypadku Androida, SMS da się wysłać „w tle”, przy czym w każdym przypadku będą one zapisane na liście wysłanych wiadomości, w  domyślnym programie systemowym do obsługi SMSów.

Jedynie dla potwierdzenia wyświetlenia wiadomości, wyświetlane jest stosowne okno dialogowe. Do obiektu app dodano pięć zmiennych, w których zapisywane są  informacje o  urządzeniu, w  momencie ich pobierania. Szósta zmienna: dataToSend to obiekt zawierający informacje przetworzone do formatu, gotowego do wysyłki SMSem. Obsługa zdarzenia związanego ze zmianą stanu baterii została dodana w  funkcji app.onDeviceReady(), gdyż dopiero wtedy zdarzenie to  jest rozpoznawane. Dodanie obsługi zdarzenia wcześniej spowodowałoby, że nie będzie ono wyzwalane. Funkcja app.onBatteryStatus() pobiera informacje o aktualnym stanie baterii i sprawdza, czy poziom naładowania jest niższy niż 20%. Jeśli tak, to sprawdza, czy poziom ten już wcześniej został przekroczony, aby nie generować dodatkowych wiadomości wraz z  każdym kolejnym spadkiem naładowania akumulatora o  1%. Jeśli poziom naładowania jest większy lub równy 20%, program zeruje zmienną informującą o uprzednim przekroczeniu stanu baterii. Aktualny stan jest zapisywany. Następnie program stara się pobrać informacje z  kompasu. Trzeba mieć jednak na  uwadze, że  wiele urządzeń nie ma wbudowanego takiego podzespołu –  w  naszym przypadku próba odczytu orientacji w  przestrzeni kończyła się niepowodzeniem. Dlatego dla celów demonstracyjnych, wywołujemy polecenie navigator.compass.getCurrentHeading() z  funkcją sukcesu bez dodatkowych parametrów oraz z  funkcją niepowodzenia, która jest identyczna z funkcją sukcesu, tyle że  z  parametrami symulującymi dane pobrane z  kompasu, wpisanymi na  sztywno. Odpowiada za to linijka: navigator.compass.getCurrentHeading(app. getHeading,function(){app.getHeadi ng({magneticHeading:310.15,timesta mp:1437042176000});}); Funkcja app.getHeading() pobiera przekazane informacje o  orientacji w  przestrzeni i  zapisuje je we wcześniej wspomnianych, dodatkowych zmiennych obiektu app. Następnie sprawdza stan sieci i jeśli urządzenie nie jest zupełnie odcięte od  sieci komórkowej i  Wi-Fi lub Ethernetu przewodowego, wywołuje polecenie app.localize(), którego celem jest przygotowanie danych do wysyłki. W  funkcji app.localize() użyto poleceń navigator. globalization.numberToString() i  navigator.globalization.dateToString(), które są  poleceniami asynchronicznymi, a więc nie zwracają przetworzonych wartości bezpośrednio, tylko poprzez wywołania kolejnych funkcji. W  naszym przypadku oba polecenia wywołujemy z  domyślnymi opcjami, a  w  funkcji sukcesu przypisujemy zmiennej app.dataToSend odpowiednie wartości atrybutów. Aktualną datę pobieramy ze znacznika czasu (milisekundowego), odczytanego w  trakcie pobierania informacji z kompasu. Następnie wywołujemy funkcję app.sendToContact(), która automatycznie wybiera z  książki adresowej kontakt o  nazwie wyświetlanej „administrator”. Zaznaczamy przy tym, że  interesuje nas tylko pierwszy kontakt z  listy oraz przede wszystkim jego numer telefonu. Do  danych uzyskanego kontaktu odwołujemy się w  funkcji app.sendMessage(), która pobiera stosowny

Krok po kroku Kursy EP

W naszym przypadku będziemy korzystać z  funkcji navigator.contacts.ind(), w  celu pobrania danych kontaktu z książki adresowej, oraz z atrybutu Contact. phoneNumbers, by „zdobyć” numer kontaktu, do  którego będziemy wysyłali wiadomość SMS.


Krok po kroku Kursy EP Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Listing 1. Kod Javascript, wysyłający komunikat SMSowy w momencie, gdy poziom zasilania spadnie poniżej 20% var app = { battery:null, isPlugged:null, heading:null, headingDate:null, network:null, dataToSend:{battery:null, isPlugged:null, heading:null, network:null, date:null}, initialize: function() { this.bindEvents(); }, bindEvents: function() { document.addEventListener(‚deviceready’, this.onDeviceReady, false); }, onBatteryStatus: function(info) { console.log(„Poziom: „ + info.level + „ Zasilanie: „ + info.isPlugged); if (info.level<20){ if (app.battery==null) { console.log(„pobieram dane baterii”); app.battery=info.level; app.isPlugged=info.isPlugged; navigator.compass.getCurrentHeading(app.getHeading,function(){ app.getHeading({magneticHeading:310.15,timestamp:1437042176000}); }); } }else app.battery=null; }, getHeading: function(heading){ app.heading=heading.magneticHeading; app.headingDate=heading.timestamp; app.network=navigator.connection.type; console.log(app.headingDate); console.log(app.network); if (navigator.connection.type!=Connection.NONE) app.localize(); }, localize: function(){ navigator.globalization.numberToString(app.battery,function(number){ app.dataToSend.battery=number.value; }); app.dataToSend.isPlugged = (app.isPlugged) ? „podłączone” : „niepodłączone”; navigator.globalization.numberToString(app.heading,function(number){ app.dataToSend.heading=number.value; }); console.log(app.headingDate); var fulldate = new Date(app.headingDate); navigator.globalization.dateToString(fulldate,function(date){ app.dataToSend.date=date.value; }); app.sendToContact(); }, sendToContact: function(){ var ields=[navigator.contacts.ieldType.displayName]; var options= new ContactFindOptions(); options.ilter=”administrator”; options.multiple=false; options.desiredFields=[navigator.contacts.ieldType.phoneNumbers]; navigator.contacts.ind(ields,this.sendMessage,this.onError,options); }, sendMessage: function(contact){ var number=contact[0].phoneNumbers[0].value; console.log(number); var message=”Bateria poniżej 20%. Zasilanie „+ app.dataToSend.isPlugged + „. Kierunek: „ + app.dataToSend.heading + „. Odczyt z „ + app.dataToSend.date; console.log(message); var options={android:{intent:””}}; sms.send(number,message,options,function(){ alert(„wysłano wiadomość”) },function(){ alert(„błąd wysyłania wiadomości”) }); }, onError: function(e){ console.log(JSON.stringify(e)); }, onDeviceReady: function() { app.receivedEvent(‚deviceready’); window.addEventListener(‚batterystatus’, app.onBatteryStatus, false); }, receivedEvent: function(id) { var parentElement = document.getElementById(id); var listeningElement = parentElement.querySelector(‚.listening’); var receivedElement = parentElement.querySelector(‚.received’); listeningElement.setAttribute(‚style’, ‚display:none;’); receivedElement.setAttribute(‚style’, ‚display:block;’); console.log(‚Received Event: ‚ + id); } }; app.initialize();

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

93


Odbieranie wiadomości tekstowych

• •

Pasek stanu urządzenia

Zaskakująco rozbudowany okazuje się być plugin umożliwiający zmienianie stanu paska systemowego w urządzeniach mobilnych. Udostępnia on  programiście aż  dziewięć metod i  jeden atrybut. Ponadto można go dodatkowo skonigurować w  ustawieniach projektu, co pozwala sterować wyglądem paska na etapie uruchamiania aplikacji. My jednak skoncentrujemy się na  kontroli paska dopiero w  trakcie pracy programu. Dostępne są następujące funkcje: • overlaysWebView() –  metoda ta  pozwala w  systemie iOS (i  tylko tam) zdecydować, czy pasek ma być widoczny czy nie w trybie WebView; • styleDefault(), styleLightContent(), styleBlackTranslucent(), styleBlackOpaque(), backgroundColorByName(), backgroundColorByHexString() –  metody dla systemów iOS i  Windows Phone, pozwalające na  ustawienie domyślnego, jasnego, ciemnego-półprzeźroczystego, ciemnego-nieprzeźroczystego lub konkretnego koloru i stylu paska. • hide() – funkcja ukrywająca pasek; • show() – funkcja pokazująca pasek. Atrybut StatusBar.isVisible pozwala sprawdzić, czy pasek jest aktualnie widoczny.

Kontrola klawiatury ekranowej

Czasem zachodzi sytuacja, gdy chcemy samodzielnie ukryć lub wyświetlić klawiaturę ekranową urządzenia mobilnego. Wtedy przydatna będzie jedna z wtyczek pozwalających na  kontrolę prezentacji klawiatury. Podstawowy plugin to  org.apache.cordova.plugin. softkeyboard, który zawiera tylko jedną funkcję cordova.plugins.SoftKeyboard.show() i  która działa jedynie w  systemie Android. Dlatego znacznie większą popularnością cieszy się wtyczka zespołu Ionic: com. ionic.keyboard, która zawiera cztery metody i  działa w  systemach Android, iOS i  BlackBerry  10. Dostępne metody to:

Listing 2. Fragment kodu programu do przechwytywania nadchodzących wiadomości tekstowych waitForMessage:function(){ if (SMS) SMS.startWatch(function(){ window.addEventListener(‚onSMSArrive’,app.readMessage); },null); }, readMessage: function(e){ var message = e.data; var info=”Otrzymano wiadomość z adresu „ + message.address + „. Jej treść to: „ + message.body; StatusBar.hide(); cordova.plugins.Keyboard.show(); }

94 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Korzystając z innego, bardziej zaawansowanego pluginu do  obsługi wiadomości SMS, można nie tylko wysyłać własne komunikaty, ale też odbierać je i przetwarzać listę wiadomości w  telefonie. W  tym celu wtyczka ta  dostarcza osiem metod i  deiniuje jedno nowe zdarzenie: • sendSMS() – funkcja umożliwiająca wysyłanie wiadomości pod jeden lub kilka numerów na raz. • listSMS() –  funkcja umożliwiająca przeglądanie listy wiadomości w oparciu o szereg filtrów. Filtr może obejmować rodzaj skrzynki pocztowej (odbiorcza, nadawcza, szkice, wszystkie itp.), może wskazywać tylko na wiadomości przeczytane lub nieprzeczytane, pochodzące z konkretnego numeru, o  konkretnej treści lub o  wybranym identyfikatorze; może też posłużyć do  ładowania wiadomości stronami, poprzez podanie pozycji, od której mają być wyszukiwane i  liczby wiadomości na stronę; • deleteSMS() –  funkcja pozwala na  usuwanie wiadomości ze  skrzynki, również z  użyciem iltra. Dostępne opcje iltrowania są  identyczne, jak w przypadku funkcji listSMS(), za wyjątkiem możliwości podziału na strony; • startWatch() –  funkcja rozpoczynająca monitorowanie skrzynki z  wiadomościami (oraz przy okazji status połączenia Bluetooth). Jeśli zostanie

uruchomiona, w razie nadejścia nowej wiadomości zostanie wywołane zdarzenie onSMSArrive; stopWatch() –  funkcja wstrzymująca monitorowanie skrzynki z wiadomościami (a także status połączenia Bluetooth); enableIntercept() –  funkcja ta  pozwala uniemożliwić innym aplikacjom otrzymywanie nadchodzących wiadomości SMS; restoreSMS() –  funkcja pozwala na  przekazanie przechwyconej (po  włączeniu enableIntercept()) wiadomości do systemowej skrzynki pocztowej; setOptions() – polecenie umożliwiające ustawienie dodatkowych opcji działania pluginu; onSMSArrive – zdarzenie wyzwalane w momencie nadejścia wiadomości, o ile wcześniej uruchomiono polecenie startWatch();

Krok po kroku Kursy EP

numer telefonu i tworzy treść komunikatu, korzystając z przetworzonych wcześniej danych. Dodatkowo wskazujemy, że  chcemy wysłać wiadomość w  tle, po  czym wyzwalamy polecenie wysłania SMSa. W opisanym kodzie zastosowano kilka uproszczeń, których nie należy stosować w kodzie inalnym projektów na urządzenia mobilne. Po pierwsze nie wszędzie zadeklarowane funkcje wyzwalane w przypadku niepowodzenia działania poleceń. Po drugie, asynchroniczne polecenia przetwarzania liczb i  dat tak, by były zgodne z  lokalnymi ustawieniami, mogą się nie wykonać, zanim dojdzie do  momentu wysyłania wiadomości. Polecenia te  powinny znajdować się (zagnieżdżone) wewnątrz funkcji sukcesu kolejnych z nich, a komenda app.sendToContact() powinna być uruchamiana dopiero, gdy zakończone zostanie przetwarzanie ostatniej z danych. Mimo zastosowanego uproszczenia, program działa poprawnie, gdyż trochę czasu potrzebne jest na wczytanie kontaktu z książki adresowej, co sprawia że zanim dojdzie do formułowania treści komunikatu, potrzebne dane są już przygotowane. W  treści programu dodano też w  kilku miejscach komendy logowania (polecenia console.log()) przebiegu działania aplikacji w  konsoli systemowej JavaScriptu, co ułatwia debugowanie.


Krok po kroku Kursy EP

MARKING system

• hideKeyboardAccesoryBar() – metoda ta  działa tylko w  systemie iOS i  pozwala ukryć pasek klawiatury z  przyciskami „następny” „poprzedni” i „ok”; • close() – metoda ukrywająca klawiaturę w każdym z obsługiwanych systemów operacyjnych; • disableScroll() –  metoda tylko dla systemu iOS, wyłączająca automatyczne przewijanie ekranu, w trakcie uzupełniania pól tekstowych; • show() –  metoda dla systemów Android i  BlackBerry  10, umożliwiająca pokazanie klawiatury. Powyższe polecenia wywołuje się stosując długi przedrostek, np. następująco: cordova.plugins.Keyboard. hideKeyboardAccessoryBar(true); Wtyczka udostępnia też atrybut cordova.plugins.Keyboard.isVisible, informujący o  tym, czy klawiatura jest aktualnie widoczna oraz deiniuje dwa zdarzenia: • native.keyboardshow –  zdarzenie wyzwalane w momencie pokazania klawiatury, wraz z którym przekazywana jest informacja o podanej w pikselach wysokości klawiatury; • native.keyboardhide –  zdarzenie wyzwalane w momencie ukrycia klawiatury.

kompleksowe oznaczanie dedykowane dla producentów elektroniki

Na listingu 2 umieszczono fragment kodu programu, który pozwala na odbieranie wiadomości tekstowych oraz na  kontrolę wyświetlania klawiatury ekranowej i  paska systemowego. W  domyślnym projekcie Cordovy wystarczy dodać linijkę: app.waitForMessage(); wewnątrz funkcji app.onDeviceReady(). W  przypadku dodania tego kodu do  kodu z  listingu 1 trzeba pamiętać, że  wtyczki com.rjfun.cordova.sms, com. jsmobile.plugin.sms i  com.cordova.plugins.sms nie są  ze  sobą kompatybilne i  w  związku z  tym należy najpierw odinstalować pozostałe, by użyć wtyczki com.rjfun.cordova.sms, wykorzystanej w przykładzie z listingu 2. Uwaga –  na  niektórych urządzeniach mobilnych funkcja przechwytywania SMSów może działać wadliwie i powodować zawieszanie aplikacji.

PHOENIX CONTACT oferuję szeroką gamę materiałów oznaczeniowych przeznaczonych do elektroniki, począwszy od oznaczaników komponentów na płytkach PCB, poprzez oznaczniki na złącza wielopinowe aż do tabliczek znamionowych montowanych na obudowach. W zależności od aplikacji dostarczamy materiały, odporne na wysokie temperatury do pieców lutowniczych, ESD oraz o zwiększonej przyczepności.

Podsumowanie

Pokazaliśmy, jak korzystać z niektórych dodatkowych funkcji sprzętowych urządzeń mobilnych oraz jak stosować komunikację SMSową. Szczególnie interesująca wydaje się ta ostatnia funkcja, gdyż w połączeniu z wcześniej zdobytą już wiedzą, umożliwia tworzenie np. bluetoothowych bramek SMSowych, czy zdalne sterowanie urządzeniami sieciowymi z użyciem wiadomości tekstowych. O ile na danym telefonie wtyczka com.rjfun.cordova.sms działa poprawnie, można w niedrogi sposób zrealizować system telemetryczny do nadzoru odległych instalacji. W  kolejnej części kursu skoncentrujemy się na  funkcjach związanych z  multimediami, obsługą kamery, kodów graicznych, syntezą mowy i przesyłaniem plików, a jeśli wystarczy miejsca, rozpoczniemy temat debugowania aplikacji mobilnych.

Po dodatkowe informację zadzwoń pod numer 071/39 80 410 lub odwiedź phoenixcontact.pl

REKLAMA

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Przykładowy kod

Marcin Karbowniczek, EP

© PHOENIX CONTACT 2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

95


Linie transmisyjne na płytce drukowanej Każda ze  struktur tworzących linie transmisyjne na  płytce drukowanej powinna składać się z  linii sygnałowej i  ścieżki powrotnej o  stałym przekroju na  całej długości. Mikropasek to  struktura, na  której górze lub dole znajduje się ścieżka sygnału, a  warstwa dielektryka izoluje ją od  ścieżki prądu powrotnego na  płaszczyźnie zasilania lub masy. Linia paskowa to  ścieżka sygnału biegnąca w  wewnętrznej warstwie z  warstwą dielektryka oddzielającą płaszczyznę masy nad i  pod ścieżką sygnałową. Wymiary struktur oraz właściwości dielektryka decydują o  charakterystycznej impedancji linii transmisyjnej (zwanej linią transmisyjną z  kontrolowaną impedancją).

Jeśli dwie linie sygnałowe są umieszczone blisko siebie, tworzą parę linii sprzężonych. Przy pobudzeniu sygnałem różnicowym linia sprzężona jest określana jako „para różnicowa”. Impedancja charakterystyczna linii nosi nazwę impedancji modu nieparzystego. Suma impedancji modu nieparzystego każdej linii to  impedancja różnicowa pary różnicowej. Poza wymiarami ścieżki i właściwościami materiału dielektryka, istotna jest też odległość między dwiema ścieżkami, która wpływa na  siłę sprzężenia i  impedancję różnicową. Gdy linie znajdują się w  bezpośredniej bliskości (S<2W) są określane jako „silnie sprzężona para różnicowa”. Aby zachować stałą impedancję różnicową na całej długości, ważne jest utrzymanie stałej szerokości linii i odległości między ścieżkami na całej długości, jak również zachowanie odpowiedniej symetrii pomiędzy dwiema liniami.

Krok po kroku Kursy EP

Wprowadzenie do LVDS (3)

Rysunek 1. Charakterystyki 10-calowych mikropasków wykonanych na płytkach z różnych materiałów

Straty transmisji

Rysunek 2. Straty 10-calowych sprzężonych mikropasków i linii paskowych wykonanych w materiale Nelco4000-6

Przelotki PCB

Przelotka to popularny termin używany na określenie otworu w  warstwie płytki, który łączy

96 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Rysunek 3. Trójwymiarowy schemat przelotki różnicowej

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Przy sygnale o częstotliwości poniżej 1 GHz straty transmisji wynikają głównie z efektu naskórkowego i  są  proporcjonalne do  pierwiastka z  częstotliwości. Przy wyższej częstotliwości zaczynają dominować straty dielektryka, które są  wprost proporcjonalne do  częstotliwości. Właściwości materiału, z  którego jest wykonana płytka silnie wpływają na  straty transmisji w  ścieżkach tej płytki. Wykres na  rysunku  1 przedstawia straty 10-calowego odcinka sprzężonych miropasków wykonanych z  materiałów Nelco4000-6, Getek i Roger. Wykres na  rysunku  2 przedstawia straty sprzężonych pasków i  linii paskowych tej samej szerokości wykonanych w materiale Nelco4000-6. Linie paskowe mieszczą się w wewnętrznej warstwie, otoczone dielektrykiem o większym współczynniku strat dielektrycznych od  powietrza. Linie paskowe cechują się wyższymi stratami dielektryka, niż mikropaski.


Krok po kroku Kursy EP Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

dwie linie sygnałowe umieszczone na różnych warstwach płytki drukowanej. Struktura przelotki składa się z  pól w  kształcie pierścieni, metalizowanego cylindra tworzącego przelotkę i  usuniętych obszarów materiału (padów) na  każdej warstwie zasilania lub masy. Na  rysunku  3 pokazano 3-wymiarowy schemat przelotki. Rysunek 4. Uproszczony schemat podsystemu płyty tylnej Zachowanie przelotki jako elementu elektrycznego zależy od  jej wymiarów, warstw płytki, jak i  właściwości materiału, z  którego jest wykonana płytka. Cylindry zachowują się jak cewki, natomiast pady działają jak kondensatory. Przy przelotkach o  małej średnicy przekroju cała struktura działa jak cewka. Przelotki o  większej średnicy i  wielu warstwach zasilania lub masy zachowują się raczej jak kondensatory. Z  pomocą symulatorów pola elektromagnetycznego 3D możliwe jest zaprojektowanie struktury przelotki o  kontrolowanej impedancji. Rysunek  3 przedstawia strukturę Rysunek 5. Charakterystyka transmisji 20-calowej płyty tylnej dwóch wzajemnie sprzężonych przelotek o impedancji równoległej równiej 100 V. Na wzajemne W podsystemie płyty tylnej karty są połączone przez sprzężenie i impedancję różnicową mają wpływ nie tylpłytę za pośrednictwem złącz. Na  rysunku  4 pokazano ko wymiary samej przelotki, ale również odległość mięuproszczony schemat typowego podsystemu płyty tylnej. dzy dwiema przelotkami. Aby zapewnić odpowiednia wytrzymałość mechaniczDla sygnału, który płynie z  górnej warstwy do  warną, większość złącz na płytach tylnych jest wciśnięta w dłustwy wewnętrznej, pozostał część przelotki od warstwy gie otwory w grubej płycie. Typowa płyta może mieć grubość wewnętrznej do  warstwy dolnej stanowi rozgałęzienie. od 40 do 50 mm i zawierać od 10 do 20 warstw sygnałowych, Rozgałęzienie przelotki dla ścieżki sygnału jest pojemzasilania i masy. Długie przelotki w względnie dużym przenością pasożytniczą, która zawęża pasmo. W przypadku kroju (około 26 mils) mają wysoka pojemność i bardzo często systemów o  bardzo wysokiej szybkości konieczne jest powodują zawężenie pasma oraz przesłuchy. stosowanie zaawansowanego procesu produkcji, który Wykres z rysunku 5 pokazuje straty transmisji i przeniweluje wpływ nieużywanej części przelotki lub całkosłuchy na  20-calowej płycie tylnej. Poza stratami diewicie usuwa rozgałęzienie z przelotki. lektryka na  ścieżkach płyty występują też straty wywoZagrzebana przelotka to taka, która łączy dwie warływane przez pasożytnicze pojemności złącz, przelotek, stwy wewnętrzne. Przelotka przechodzi jedynie przez rozgałęzień przelotek i kontaktów elementów. Przesłuchy dielektryk, który rozdziela dwie warstwy, co  pozwala między sąsiednimi kanałami mają negatywny wpływ uniknąć powstania rozgałęzienia. na  stosunek sygnału do  szumu linii. Przesłuch jest zazwyczaj decydującym czynnikiem, który ogranicza maksymalną przepustowość podsystemu płyty głównej. Podsystem płyty bazowej W  typowej płytce sygnały płyną przez połączenia złożone ze  ścieżek płyty, kontaktów, przelotek i  podzespołów. Odsprzęganie Pojemność pasożytnicza kontaktów i  przelotek powoduje Każda płaszczyzna masy lub zasilania urządzenia wysoniedopasowanie impedancji do  impedancji charakterykiej częstotliwości powinna być połączona z PCB ścieżką stycznej ścieżki na  płycie. Zmiana szerokości ścieżki lub odległości między liniami różnicowymi również wywołuje niedopasowanie impedancji. Nadmiar pojemności pasożytniczych prowadzi do  strat mocy, które zmieniają się z  częstotliwością, pogarszając integralność sygnału podczas transmisji z dużą szybkością. Rysunek 6. Podłączenie zasilania o małej indukcyjności i dużej pojemności

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

97


98 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Andrzej Gawryluk, EP

Krok po kroku Kursy EP

o małej indukcyjności. Najlepsze rezultaty daje użycie jednej lub wielu przelotek do łączenia źródła zasilania lub masy z najbliższą warstwą. W  idealnym przypadku przelotka jest bezpośrednio przyległa do  źródła odniesienia, aby uniknąć indukcyjności wprowadzanej przez ścieżkę. Rysunek 7. Typowy sposób umieszczenia kondensatora odsprzęgającego Umieszczenie warstwy zasilania bliżej wierzchu płyty skraca efektywną długość przelotki jest połączony z  warstwą masy i  zasilania przez przei związaną z nią indukcyjność (rysunek 6). lotki prostopadłe do  okładek kondensatora, co  widać Kondensatory odsprzęgające powinny być umieszna rysunku 7a. czone blisko pinów zasilania (Vdd). Można je wygodnie Kondensator X7R montowany powierzchniowo o rozumieścić w pobliżu rogów lub pod obudową, aby zminimiarze 0402 ma własną indukcyjność około 0,5  nH. Dla malizować powierzchnię pętli. Ten zabieg zwiększa użyczęstotliwości powyżej około 30 MHz kondensatory X7R teczny zakres częstotliwości dodanej pojemności. Należy zachowują się jak cewki o  małej impedancji. Aby rozwykorzystać o  małych wymiarach, jak 0402 lub nawet szerzyć zakres pracy do kilkuset MHz, jest potrzebny ze0201, lub też kondensatory montowane powierzchniowo staw różnych kondensatorów o  pojemności na  przykład w rodzaju X7R. W ten sposób ich indukcyjność pozostaje 100 pF, 1 nF, 0,03 mF oraz 0,1 mF połączonych równolegle. możliwie mała. Każdy z kondensatorów odsprzęgających Najbardziej efektywne kondensatory odsprzęgające można zbudować, przekładając warstwy zasilania i masy oddalone o 2-3 milsy. W przypadku 2-milsowego dielektryka FR4 daje to około 80 pF na każdy centymetr kwadratowy PCB. Wiele urządzeń wysokich szybkości ma dodatkowe złącze masy o  małej indukcyjności z  tyłu obudowy. Ten element musi być połączony z  warstwą masy za pomocą wielu przelotek. Duża liczba przelotek zmniejsza efektywną indukcyjność między masą i  poprawia odprowadzanie ciepła w  przypadku układów montowanych powierzchniowo. Umieszczenie przelotek na krawędzi podłączenia masy zapewnia poprawne rozpraszanie ciepła i najniższą możliwą temperaturę układu. Umieszczenie urządzeń dużej mocy po  przeciwnej stronie PCB za pomocą dwóch płaszczyzn masy tworzy wiele dróg przepływu ciepła. Często problemy z przegrzewaniem PCB są wynikiem wielu układów dodających swoje ciepło, co prowadzi do powstania bardzo wysokiej temperatury w  jednym miejscu. Istnienie wielu dróg przewodzenia ciepła zmniejsza prawdopodobieństwo takiego zdarzenia. W  wielu wypadkach źródło masy jest tak ważne dla odprowadzania ciepła, że  optymalna realizacja odsprzęgania jest niemożliwa do  uzyskania ze  względu na  brak miejsca między źródłem masy a  kontaktem, co  widać na  rysunku  7b. W  takim przypadku ważne jest, aby umieścić przelotkę do  zasilania tak blisko wyprowadzenia, jak to  możliwe, jednocześnie zapewniając odpowiednio dużo miejsca dla lutu. Jeśli przelotka zostanie otwarta, lut może spłynąć z  kontaktu do jej wnętrza, co prowadzi do powstania lutu o słabej jakości.


Krok po kroku Kursy EP Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

MPLAB Harmony – biblioteka graficzna W pierwszej części artykułu opisującego zestaw bibliotek MPLAB Harmony pokazałem przykład z  migającą diodą LED uruchomiony na  module ewaluacyjnym PIC32 USB Starter Kit II. Wykonywanie na  zaawansowanym 32  bitowym mikrokontrolerze tylko tak nieskomplikowanego działania w  praktyce nie ma zastosowania. Zestaw narzędzi w  postaci środowiska MPLABX IDE, kompilatora MPLAC XC32 i  bibliotek MPLAB Harmony jest przeznaczony do  tworzenia o  wiele bardziej zaawansowanych aplikacji. Jednym z  bardziej wymagających pod względem programowym i  niezbędnych zasobów w  jest implementacja interfejsu dotykowego z  graficznym, kolorowym wyświetlaczem LCD. Firma Microchip dostarcza bezpłatną bibliotekę graiczną przeznaczoną dla mikrokontrolerów z  rodzin PIC32 i  PIC24. Aby ułatwić projektowanie ekranów interfejsu, do  pakietu MPLAB X IDE dostarczono wtyczkę Graphic Display Designer X (GDDX), która umożliwia umieszczanie na projektowanych ekranach graicznych obiektów (widżetów), deiniowanie interakcji pomiędzy tymi elementami i generowanie kodu wynikowego dla tworzonego projektu. Biblioteka i wtyczka GDDX są przez Microchipa stale rozwijane. Początkowo – do wersji 2.0 GDDX – nie było możliwości integracji z  pakietem Harmony. Wraz z  pojawieniem się Harmony powstała nowa wersja GDDX 2.0 i  kolejne. Niestety, wszystkie projekty tworzone we wcześniejszych wersjach nie były kompatybilne z  projektami przeznaczonymi do uruchamiania z wykorzystaniem MPALB Harmony. Tak było do momentu wprowadzenia najnowszej wersji pakietu IDE –  MPALB X IDE 3.0. Zupełnie zrezygnowano w  niej z  wtyczki GDDX, a  funkcję środowiska projektowego przeznaczonego do projektowania ekranów graicznych przejęło MPLAB Harmony Conigurator (MHC). Podobnie jak w poprzednio, projekty tworzone za pomocą GDDX 2.xx nie mogą być otwierane przez MHC. To oczywiście frustrująca sytuacja dla wszystkich tych, którzy projektują interfejsy graiczne i chcieliby korzystać z kolejnych wersji biblioteki. Takie są  konsekwencje korzystania z  bezpłatnych narzędzi. Z  drugiej strony jednak to  dobra wiadomość, bo irma nadal rozwija biblioteki i pewnie w jakimś momencie tez zawirowania się skończą, a  przecież stale są dostępne starsze wersje z MPALB X 2.35 i GDDX 2.xx. W  momencie pisania tego artykułu możliwości biblioteki konigurowanej prze MHC były nieco okrojone w  porównaniu do  ostatniej wersji GDDX, ale według zapewnień producenta ma się to  zmienić w  nowszych wersjach IDE. Oprogramowanie dla mikrokontrolerów PIC32MX i PIC32MX tworzone z wykorzystaniem MPLAB Harmony raczej jest rozbudowane i skomplikowane. Użycie biblioteki graicznej na  pewno nie upraszcza sprawy. Z  tego powodu, przy pierwszym kontakcie z  nowymi rozwiązaniami najlepiej jest użyć sprawdzonych i działających przykładów. Do najnowszego MPLAB Harmony jest dołączonych wiele przykładów, w tym przykłady wykorzystania biblioteki graicznej.

Oprócz rozwiązań programowych będzie nam potrzeby też sprzęt do testowania. Dzięki polskiemu biuru irmy Microchip miałem możliwość użycia zestawu PIC32 Multimedia Expansion Board (MEB) II i  współpracującego z nim modułu PIC32MZ Starter Kit (fotograia 1). Zestaw MEBII jest bogato wyposażony w  układy peryferyjne, między innymi w: kamerę VGA, 24-bitowy kodek audio, moduły Wi-Fi i  Bluetooth, akcelerometr, czujnik temperatury i  inne. Dla potrzeb tego przykładu przyda się kolorowy wyświetlacz LCD o  przekątnej 4,3 cala, rozdzielczości WQVGA, z pojemnościowym panelem dotykowym. Wyświetlacz nie ma wbudowanego sterownika. Przy okazji opisywania biblioteki graicznej Microchip wspomniałem, że  wspiera ona obsługę kilku popularnych sterowników paneli LCD, ale też oferuje ma funkcjonalność sterownika LCD realizowanego przez mikrokontroler. To ostatnie rozwiązanie ma szereg zalet. Po pierwsze, nie musimy szukać wyświetlacza ze wspieranym sterownikiem lub samodzielnie tworzyć procedur obsługi. Po drugie, panele bez sterownika są tańsze. Jednak nie ma róży bez kolców – implementacja sterownika zajmuje zasoby. Pojemnościowy panel dotykowy jest obsługiwany przez sterownik MTCH6301. Komunikacja z  mikrokontrolerem odbywa się za pomocą interfejsu I2C.

Fotograia 1. PIC32 Multimedia Expansion Board (MEB) II i moduł PIC32MZ Starter Kit

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

99


Krok po kroku Kursy EP

Testowanie zestawu

100 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Rysunek 5. Okno edycji ekranów Graphic Composer Screen wyboru szeregi opcji (rysunek 4). Nas najbardziej będzie interesowała opcja Use MPLAB Harmony Graphics Composer Design. Po jej zaznaczeniu będziemy mogli projektować ekrany interfejsu graicznego w taki sam sposób, jak to się robi za pomocą wtyczki GDDX. Aplikacja Graphics Composer Design jest uruchamiana po kliknięciu na przycisk Execute. Okno tej aplikacji można podzielić na kilka obszarów: – Graphics Composer Screen –  są  w  nim wyświetlane projektowane ekrany z  umieszczanymi na  nich widżetami i  tzw. primitives –  podstawowymi komponentami graicznymi, takimi jak linie, okręgi itp. Nawigowanie pomiędzy oknami odbywa się poprzez klikanie na zakładki z nazwami ekranów (rysunek 5). – Graphics Composer Tool Box z widżetami i primitives (rysunek 6). W aktualnej wersji Composera lista elementów jest uboższa w porównaniu z ostatnią wersją GDDX, ale ma to się zmienić. Elementy z tego okna są wybierane i umieszczane na projektowanych ekranach. – Graphics Composer Properties jest przeznaczone do  zarządzania właściwościami wybranego elementu projektu: ekranu, widżetu itp. (rysunek 7). Można tu  ustawić na  przykład tekst wyświetlany na przycisku, wybrać predeiniowany sposób rysowania przycisku itp. – Graphics Composer Management przeznaczone do  zarządzania komponentami projektu: obiektami, ekranami, schematami i  zasobami. Wszystkie te  komponenty można wybierać klikając na  zakładki w  dolnej części okna.

Aplikacja przykładowa

Działanie aplikacji wykorzystującej bibliotekę graiczną pokażę na przykładzie. Najpierw zostaną zdeiniowane i  nazwane dwa ekrany: MainScreen i  SecScreen. Pierwszy będzie wyświetlany po włączeniu zasilania lub restarcie mikrokontrolera. Umieściłem na  nim obiekt Button (przycisk) z  etykietą Next Screen i  tekst „TESTY MPAB HARMONY”.

Rysunek 6. Okno Graphics Composer Tool Box

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Testowanie zastawu rozpoczynamy od otworzenia przykładu o  nazwie composer umieszczonego w  katalogu harmony/V1_04_02/ apps/gfx/composer. Projekt jest przeznaczony dla mikrokontroRysunek 2. Koniguracja lera typu PIC32MZ2048ECL144. sterownika LCC W  testowanym module zastosowano PIC32MZ2048ECH144, więc w pierwszym kroku należy zmienić typ mikrokontrolera. Aby poprawnie skompilować pliki źródłowe, trzeba użyć kompilatora MPLAB XC32 w wersji v1.34 lub nowszej. Przykładowy projekt Composer w  wersji dostarczonej z  MPLAB Harmony pozornie nie działa Rysunek 3. Koniguracja –  po  skompilowaniu i  wgraniu drivera interfejsu I2C do pamięci mikrokontrolera modułu PIC32MZ Starter Kit na ekranie wyświetlacza nic nie jest wyświetlane. Trzeba otworzyć wtyczkę MPLAB Harmony Conigurator (MHC) i  wczytać konigurację zapisaną w projekcie z ustawieniami początkowymi: • Drivers  Graphics Controllers  LCC. Opcja LCC oznacza sterownik wyświetlacza LCD zaimplementowany w  mikrokontrolerze. Po  wybraniu LCC możemy ustawić pamięć obrazu zaimplementowaną w  mikrokontrolerze (Internal Memory) lub w  układzie zewnętrznym (External Memory), kanał DMA do  zapisywania tej pamięci oraz ustalić priorytet przerwań. Konigurację sterownika graiki pokazano na rysunku 2. • Drivers  I2C. Interfejs I2C jest używany do komunikacji ze sterownikiem panelu dotykowego. Konigurację I2C pokazano na  rysunku 3. Warto zwrócić uwagę na  to, że  zaimplementowano driver dynamiczny i do obsługi magistrali wykorzystuje on przerwania. • BSP Coniguration. Jeśli w  projekcie wybierzemy mikrokontroler z  rodziny PIC32MZ, w  zakładce BSP Coniguration zostaną pokazane wszystkie moduły ewaluacyjne zbudowane w oparciu o wybrany mikrokontroler. Ja użyłem PIC32MZ EC Starter Kit i  Mutlimedia Expansion Board (MEB) II. Po zaznaczeniu tej opcji konigurator MHC wygeneruje plik bsp_sys_init.c zawierający procedury sterowania diodami LED, odczytywania stanu przycisków itd. • Taktowanie rdzenia mikrokontrolera przebiegiem o  częstotliwości 200  MHz, a  układów peryferyjnych – 100 MHz. Taktowanie wybiera się w  oknie Clock Diagram koniguratora MHC • Koniguracja biblioteki graicznej – przy niej zatrzymamy się na  dłużej. Koniguracja biblioteki graicznej jest elementem Harmony Framework. Po  zaznaczeniu Use Graphics Rysunek 4. Menu koniguracji Library otrzymujemy możliwość biblioteki graicznej


Krok po kroku Kursy EP Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Na drugim ekranie umieściłem przycisk Return i  obiekty Slider i Digital Meter. Po naciśnięciu przycisku Next Screen aplikacja wyświetla ekran SecScreen. Powrót do  ekranu głównego następuje po naciśnięciu przycisku Return. Aplikację możemy wygenerować automatycznie z  poziomu MPLAB Harmony Graphic Composer. Na  ekranie MainScreen klikamy na przycisk Next Screen, a w oknie Properties zaznaczamy jedną z akcji: • GFX_GOL_BUTTON_ ACTION _PRESSED –  przy- Rysunek 7. Okno cisk naciśnięty. właściwości obiek• G F X _ G O L _ B U T T O N _ tu Button ACTION _STILPRESSED –  przycisk naciśnięty i przytrzymany. • GFX_GOL_BUTTON_ ACTION _RELEASED – przycisk zwolniony. • GFX_GOL_BUTTON_ ACTION _CANCELPRESS – przyciśnięcie anulowane. Zaznaczyłem akcję GFX_ Rysunek 8. Okno GOL_BUTTON_ACTION _ Graphics CompoRELEASED wykonywaną po  wy- nent Management kryciu zwolnienia przycisku. Po kliknięciu na ikonie z prawej strony zaznaczonej akcji otwiera się okno Button1 GFX_GOL_BUTTON_ACTION_ RELEASED event code generation (rysunek 9). W tym oknie ustawiamy: • Screen tj. ekran, na  którym jest umieszczony obiekt (przycisk). • Target tj. miejsce, w którym ma być wykonana akcja. Zakładamy, że po naciśnięciu i zwolnieniu przycisku Button1 aplikacja przejdzie do ekranu SecScreen. Dlatego wybieramy akcję Go To Screen. Po kliknięciu na przycisk Generate Event Code zostanie wygenerowany kod GFX_ HGC_ChangeScreen(SecScreen) i  automatycznie umieszczony w kodzie aplikacji w takim miejscu, aby po naciśnięciu i  zwolnieniu przycisku nastąpiła zmiana ekranu. W tym momencie nie musimy nawet wiedzieć, gdzie ten kod zostanie umieszczony. W  bardzo podobny sposób generujemy kod powrotu z  ekranu SecScreen do  ekrany głównego po  naciśnięciu przycisku Button2. Na  ekranie SecScreen umieściłem dwa dodatkowe elementy: suwak Slider do  zadawania wartości i  okno do  wyświetlania wartości cyfrowych Digital Meter. Nasza aplikacja ma teraz za zadanie zmieniać wartość wyświetlaną przez Digital Meter w czasie przesuwania suwaku Rysunek 9. Okno Event Code Slider. W  tym celu Generation

klikamy na obiekt Slider i w oknie Properties wybieramy Events  GFX_GOL_SCROLLBAR_ ACTION_INC. Otwieramy okno Event Code Generation. W oknie Screen wybieramy SecScreen, a w oknie Target – Digital Meter1. Przesuwanie suwaka w  prawo lub do góry będzie wywoływało akcję w obiekcie Digital Meter1. W  oknie Actions można Rysunek 10. Deiniowanie akcji wybrać jedną z  akcji: Set Value, zwiększania wartości Increment Value, Decrement Value, Show Digital Meter i Hide Digital Meter. Wybieramy Increment Value, a  w  oknie Select Value wpisujemy 1 (krok). Po kliknięciu na przycisk Generate Event Code zostanie wygenerowany i  umieszczony kod akcji (rysunek 10). Identycznie postępujemy dla Events  GFX_GOL_ SCROLLBAR_ACTION_DEC z tym, że w oknie Action wybieramy Decrement Value. Moduły MPLAB Harmony (drivery urządzeń, usługi systemowe oraz middleware) są implementowane jako maszyna stanu. Użytkownik deiniuje zestaw dopuszczalnych stanów i  wykonuje inicjalizację maszyny stanów. Każdy z modułów ma swoją funkcję inicjalizacji i jedną z lub więcej funkcji wykonujących zadania (task functions). Po zainicjowaniu systemu moduły mogą być wywoływane w pętli nieskończonej poprzez odpytywanie (polling), wywoływane w obsłudze przerwania lub pod kontrola systemu RTOS. Metoda pollingu jest najłatwiejsza w  implementacji, ale może powodować długi czas odpowiedzi na żądanie wykonania zadania. Dużo bardziej wydajna czasowo jest metoda wywoływania krytycznych sekwencji z  wykorzystaniem mechanizmu przerwań, a dodatkowo można ją łączyć z metodą pollingu. W  opisywanym przykładzie wykorzystano przerwania do  wykrywania działania panelu dotykowego i odświeżania zwartości ekranu. Na  listingu 1 pokazano funkcje obsługi przerwań używanych do  obsługi wyświetlacza. Funkcja DRV_ TOUCH_MTCH6301_ReadRequest(); jest przeznaczona do wysyłania zapytania do podprogramu obsługi I2C, odbierania od niego danych odczytywanych za pomocą I2C ze  sterownika MCTH6301 i  umieszczania tych danych

Fotograia 11. Ekran MainScreen

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

101


void __ISR(_I2C1_MASTER_VECTOR, ipl1AUTO) _IntHandlerDrvI2CMasterInstance0(void) { DRV_I2C_Tasks(sysObj.drvI2C0); //obsługa transmisji I2C } void __ISR(_I2C1_BUS_VECTOR, ipl1AUTO) _IntHandlerDrvI2CErrorInstance0(void) { SYS_ASSERT(false, „I2C Driver Instance 0 Error”); } void __ISR(_DMA0_VECTOR + DMA_CHANNEL_1, ipl1AUTO) _IntHandlerLCCRefresh(void) { SYS_INT_SourceStatusClear(INT_SOURCE_DMA_0 + DMA_CHANNEL_1); DRV_GFX_LCC_DisplayRefresh(); //odświeżanie ekranu wyświetlacza } Listing 2. Funkcja SYS_Tasks(); void SYS_Tasks ( void ) { /* Maintain system services */ SYS_DEVCON_Tasks(sysObj.sysDevcon); /* Maintain the DMA system state machine. */ SYS_DMA_Tasks(sysObj.sysDma); SYS_MSG_Tasks( (SYS_OBJ_HANDLE) sysObj.sysMsg0 ); SYS_TOUCH_Tasks(sysObj.sysTouchObject0); /* Maintain Device Drivers */ DRV_TOUCH_MTCH6301_Tasks(sysObj.drvMtch6301); /* Maintain Middleware & Other Libraries */ /* Maintain the gfx state machine. */ GFX_Tasks(sysObj.gfxObject0); /* Maintain HGC generated graphics state machine. */ GFX_HGC_Tasks(sysObj.gfxObject0); /* Maintain the application’s state machine. */ APP_Tasks(); }

w kolejce. Potem tymi danymi –  umieszczonymi w  buforze drvI2CReadFrameData –  „zajmuje się” procedura DRV_TOUCH_MTCH_Tasks. W  każdej aplikacji MPLAB Harmony funkcja main zawiera pętlę nieskończoną wywołującą cyklicznie funkcję SYS_Tasks();, jak pokazano na listingu 2. Do  obsługi ekranu dotykowego jest przeznaczona zamieszczona na  listingu 3 funkcja DRV_TOUCH_ MTCH6301_Tasks ();. Przy konigurowaniu akcji w  Graphics Composer przypisaliśmy na  przykład przyciskowi Button1 funkcjonalność zmiany ekranu z MainScreen na SecScreen. Composer wygenerował kod i umieścił go w programie, więc rzeczywiście naciśnięcie

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Listing 3. Obsługa ekranu dotykowego void DRV_TOUCH_MTCH6301_Tasks ( SYS_MODULE_OBJ object ) { static int32_t taskIndex = 0; uint8_t touchpoint = 0; int16_t lastX; int16_t lastY; DRV_TOUCH_MTCH6301_OBJECT * pDrvObject = (DRV_TOUCH_MTCH6301_OBJECT *)object; if ( object == SYS_MODULE_OBJ_INVALID ) { return; } if( pDrvObject->readRequest == 0) { return; } while(taskIndex < pDrvObject->readRequest) { if( pDrvObject->taskQueue[taskIndex].inUse == false ) { return; } if( pDrvObject->taskQueue[taskIndex].taskState == DRV_TOUCH_MTCH6301_TASK_STATE_INIT || pDrvObject->taskQueue[taskIndex].taskState == DRV_TOUCH_MTCH6301_TASK_STATE_DONE ) { return; } if( pDrvObject->taskQueue[taskIndex].taskState == DRV_TOUCH_MTCH6301_TASK_STATE_DECODE_INPUT ) { if( !(DRV_I2C_BUFFER_EVENT_COMPLETE & DRV_I2C_BuferStatus(pDrvObject->taskQueue[taskIndex].drvI2CReadBuferHandle))) { return; } if( (pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[2] & 0x01)&& !(pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[2] & 0x40) ) { touchpoint = (pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[2] & 0x78)>>3; lastX = pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[3]&0x7F; lastX |= (uint16_t)(( pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[4]&0x1F )<<7); lastY = pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[5]&0x7F; lastY |= (uint16_t)(( pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[6]&0x1F )<<7); if ( pDrvObject->orientation == 180 ) { PCapX[touchpoint] = pDrvObject->horizontalResolution\\ - (( lastX * pDrvObject->horizontalResolution ) >> 10); PCapY[touchpoint] = pDrvObject->verticalResolution\\ - (( lastY * pDrvObject->verticalResolution ) >> 10); } else if ( pDrvObject->orientation == 90 ) { PCapX[touchpoint] = pDrvObject->verticalResolution\\

102

Krok po kroku Kursy EP

Listing 1. Procedury obsługi przerwań void __ISR(_EXTERNAL_1_VECTOR, IPL5AUTO) _IntHandlerExternalInterruptInstance0(void) { PLIB_INT_SourceFlagClear(INT_ID_0, INT_SOURCE_EXTERNAL_1); DRV_TOUCH_MTCH6301_ReadRequest(sysObj.drvMtch6301); //obsługa panelu dotykowego }


Krok po kroku Kursy EP

Listing 3. c.d. - (( lastY * pDrvObject->verticalResolution ) >> 10); PCapY[touchpoint] = (( lastX * pDrvObject->horizontalResolution ) >> 10); } else if ( pDrvObject->orientation == 270 ) { PCapX[touchpoint] = (( lastY * pDrvObject->verticalResolution ) >> 10); PCapY[touchpoint] = pDrvObject->horizontalResolution\\ - (( lastX * pDrvObject->horizontalResolution ) >> 10); } else { PCapX[touchpoint] = ( lastX * pDrvObject->horizontalResolution ) >> 10; PCapY[touchpoint] = ( lastY * pDrvObject->verticalResolution ) >> 10; }

} if(!(pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[2] & 0x01) && !(pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[2] & 0x40) ) { touchpoint = (pDrvObject->taskQueue[taskIndex].drvI2CReadFrameData[2] & 0x78)>>3; PCapX[touchpoint] = -1; PCapY[touchpoint] = -1; } pDrvObject->taskQueue[taskIndex].taskState = DRV_TOUCH_MTCH6301_TASK_STATE_DONE; pDrvObject->taskQueue[taskIndex].inUse = false; taskIndex++;

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

}

} } pDrvObject->readRequest = 0; taskIndex = 0; return;

Listing 4. Funkcja GFX_HGC_MagButtons bool GFX_HGC_MsgButtons(uint16_t objMsg, GFX_GOL_OBJ_HEADER *pObj) { switch (GFX_GOL_ObjectIDGet(pObj)) { case Button1: if (objMsg == GFX_GOL_BUTTON_ACTION_PRESSED) { // Button Pressed Event Code //No events deined from HGC } if (objMsg == GFX_GOL_BUTTON_ACTION_STILLPRESSED) { // Button Still Pressed Event Code //No events deined from HGC } if (objMsg == GFX_GOL_BUTTON_ACTION_CANCELPRESS) { // Button Cancel Pressed Event Code //No events deined from HGC } if (objMsg == GFX_GOL_BUTTON_ACTION_RELEASED) { // Button Release Event Code GFX_HGC_ChangeScreen(SecScreen); } return true; case Button2: if (objMsg == GFX_GOL_BUTTON_ACTION_PRESSED) { // Button Pressed Event Code //No events deined from HGC } if (objMsg == GFX_GOL_BUTTON_ACTION_STILLPRESSED) { // Button Still Pressed Event Code //No events deined from HGC } if (objMsg == GFX_GOL_BUTTON_ACTION_CANCELPRESS) { // Button Cancel Pressed Event Code //No events deined from HGC } if (objMsg == GFX_GOL_BUTTON_ACTION_RELEASED) { // Button Release Event Code GFX_HGC_ChangeScreen(MainScreen); } return true; default: return false; // process by default } return true; } Listing 5. Funkcja GFX_HGC_MsgDigitalMeters bool GFX_HGC_MsgDigitalMeters(uint16_t objMsg, GFX_GOL_OBJ_HEADER *pObj) {

switch (GFX_GOL_ObjectIDGet(pObj)) { case DigitalMeter1: if (objMsg == GFX_GOL_DIGITALMETER_ACTION_SELECTED) { // Digital Meter select Event Code //No events deined from HGC } return true; default: return false; // default false as it is not processed }

}

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

103


Krok po kroku Kursy EP

Listing 6 Funkcja GFX_HGC_MsgScrollBars bool GFX_HGC_MsgScrollBars(uint16_t objMsg, GFX_GOL_OBJ_HEADER *pObj) { switch (GFX_GOL_ObjectIDGet(pObj)) { case Slider1: if (objMsg == GFX_GOL_SCROLLBAR_ACTION_INC) { // scrollbar increment Event Code GFX_GOL_DigitalMeterIncrement(((GFX_GOL_DIGITALMETER*)\\ (GFX_GOL_ObjectFind(GFX_INDEX_0, DigitalMeter1))), (SHORT)1); GFX_GOL_ObjectStateSet(((GFX_GOL_DIGITALMETER*)\\ (GFX_GOL_ObjectFind(GFX_INDEX_0, DigitalMeter1))), GFX_GOL_DIGITALMETER_UPDATE_ STATE); } if (objMsg == GFX_GOL_SCROLLBAR_ACTION_DEC) { // Scrollbar decrement Event Code GFX_GOL_DigitalMeterDecrement(((GFX_GOL_DIGITALMETER*)\\ (GFX_GOL_ObjectFind(GFX_INDEX_0, DigitalMeter1))), (SHORT)1); GFX_GOL_ObjectStateSet(((GFX_GOL_DIGITALMETER*)\\ (GFX_GOL_ObjectFind(GFX_INDEX_0, DigitalMeter1))), GFX_GOL_DIGITALMETER_UPDATE_ STATE); } return true; default: return false; // default false as it is not processed } }

przycisku powoduje zmianę ekranu. Obsługa zdarzenia od akcji przypisanej do przycisku jest wykonywana przez pokazaną na listingu 4 funkcję GFX_HGC_MagButtons(). Ta  funkcja poprzez szereg innych funkcji jest również wywoływana z  SYS_Tasks(). Dla każdej z  akcji użytkownik może dopisać swój własny kod. Composer umieścił tu  automatycznie wywołania GFX_HGC_ ChangeScreen(SecScreen); dla akcji zwolnienia przycisku Button1 oraz GFX_HGC_ChangeScreen(MainScreen) dla akcji zwolnienia przycisku Button2. Aktywne akcje są ustawiane przez driver obsługi panelu dotykowego. Dla obiektów Digital Meter i Scroll Bars oprogramowanie Graphics Composer wygenerowało odpowiednie funkcje: GFX_HGC_MsgDigitalMeters (listing 5) oraz GFX_HGC_MsgScrollBars (listing 6). W  funkcji GFX_ HGC_MsgScrollBars kreator umieścił wywołania funkcji odpowiedzianych za zmianę wyświetlanej wartości w obiekcie Digital Meter. Ekrany wyświetlane po skompilowaniu programu wygenerowanego przez MHC zostały pokazane na fotograiach 11 i 12. Fotograia 12. Ekran SecScreen

Tomasz Jabłoński, EP

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

104 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015


Krok po kroku Kursy EP Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Bluetooth Relay z Androidem AVT-5295 to  zestaw przygotowany przez Piotra Rosenbauma i  opisany w  numerze Elektroniki Praktycznej 06/2011. Choć zestaw nie jest najnowszy, cieszy się niemałym powodzeniem, szczególnie w  dobie rosnącej popularności komunikacji bezprzewodowej. Pozwala w  niedrogi sposób zrealizować zdalne sterowanie sześciu niezależnie włączanymi urządzeniami, a  dodatkowo umożliwia monitorowanie temperatury. Niestety, od  czasu powstania tego projektu, sytuacja w  świecie elektroniki zmieniła się na  tyle, że  kontrola takiego urządzenia z  komputera PC wydaje się mało atrakcyjnym rozwiązaniem. W  dobie urządzeń mobilnych, sterowanie przekaźnikami przez Bluetooth z  telefonu byłoby znacznie bardziej użyteczne. Dlatego prezentujemy nowe oprogramowanie do  zestawu AVT-5295, przygotowane pod system Android. Oryginalny projekt Piotra Rosenbauma zawierał skompilowane oprogramowanie pod system MS Windows. Opis dostarczony przez autora koncentrował się na części sprzętowej, a szczegóły dotyczące sposobu wymiany danych poprzez interfejs Bluetooth były niekompletne. Jednakże zastosowanie oprogramowanie do  monitorowania komunikacji przez interfejs szeregowy umożliwiło pełny reverse-engineering zastosowanego, prostego protokołu komunikacyjnego i odtworzenie przesyłanych komunikatów w nowym programie. Aplikacja pod system Android nie została jedna stworzona w  Javie, czyli w  natywnym języku, z  którego korzysta system operacyjny, ale z użyciem platformy Apache Cordova. Platforma ta  stanowi bezpłatny zbiór bibliotek, tłumaczących polecenia javascriptowe na  polecenia języków stosowanych natywnie w mobilnych systemach operacyjnych – w naszym przypadku – w Javy. Cała platforma Cordova obejmuje też kompilatory i szereg pluginów. Korzystania z Cordovy można nauczyć się dzięki publikowanemu w Elektronice Praktycznej od lutego 2015 roku kursowi programowania aplikacji mobilnych. Niemal cała wiedza potrzebna do realizacji niniejszej aplikacji zawarta jest w pierwszych pięciu częściach kursu, przy czym w opisywanym programie, na potrzeby uzyskania odpowiedniego wyglądu aplikacji, skorzystano z  języków HTML i  CSS w  stopniu wykraczającym poza zakres informacji ze wspomnianych części kursu. Warto dodać, że  udostępniamy czytelnikom nie tylko gotową, skompilowaną aplikację androidową, ale też jej pełny kod źródłowy, dzięki czemu każdy będzie mógł samodzielnie zmodyikować wygląd i  funkcje aplikacji, skompilować ją, a być może nawet przenieść na inny system operacyjny.

Opis protokołu

Protokół komunikacyjny, zastosowany w zestawie AVT5295 jest bardzo prosty i  polega na  przesyłaniu pojedynczych znaków lub ciągów znaków przez interfejs Bluetooth. Na  początek urządzenie mobilne powinno samo nawiązać połączenie z  wykrytym urządzeniem Bluetooth o  nazwie „Bluetooth Adaptor”. Następnie zestaw z  przekaźnikami zaczyna cyklicznie, co  1 sekundę, przesyłać ciąg znaków, zawierający aktualną temperaturę, odczytywaną z  wbudowanego sensora. Każdy taki komunikat zakończony jest znakiem końca linii,

Tabela 1. Zestaw komend (znaków) przesyłanych przez aplikację do modułu z  przekaźnikami Znak a b c d e f g h i j k l y z

Przekaźnik 1 2 3 4 5 6 1-6

Operacja włącz wyłącz włącz wyłącz włącz wyłącz włącz wyłącz włącz wyłącz włącz wyłącz włącz wyłącz

takim jaki stosuje się w systemie Windows, czyli bajtami 0x0D i 0x0A, określanymi też mianem znaków CR i LF. W systemie Windows te dwa następujące po sobie bajty są traktowane jako jeden znak końca linii, choć w praktyce są  to  następujące po  sobie znaki „\r” i  „\n”. Gdyby chcieć przenosić aplikację na inny system, należy wziąć pod uwagę fakt, że  w  Linuksie jako znak końca linii używany jest tylko 0x0A, a w systemach MacOS – tylko 0x0D. Ale mniejsza z tym. W naszym przypadku informacja o temperaturze zajmuje najczęściej 6 bajtów, na które składają się następujące znaki: dwie cyfry przed przecinkiem, znak przecinka (autor użył w tym celu kropki), jedna cyfra po przecinku i wspomniane dwa znaki końca linii (CR i LF). To jedyne dane, jakie moduł Bluetooth Relay przesyła do aplikacji. Aplikacja natomiast steruje pracą modułu poprzez wysyłanie pojedynczych liter alfabetu. Moduł obsługuje 14 różnych poleceń, z  których każde reprezentowane jest przez inny znak. Małe litery od  „a” do  „l” służą do  włączania i  wyłączania kolejnych przekaźników, a  znaki „y” i  „z” do  włączania i  wyłączania (odpowiednio) wszystkich przekaźników na raz. Pełna lista komend przesyłanych do  modułu została zawarta w  tabeli  1. Wszystkie operacje związane z opóźnionym włączaniem lub wyłączaniem przekaźników oraz z kontrolą ich stanu są wykonywane w aplikacji. Aplikacja nie ma podglądu na  rzeczywisty stan przekaźników ani nie może wysłać

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

105


Krok po kroku Kursy EP

Rysunek 1. Główne okno aplikacji przed dokonaniem połączenia z modułem z przekaźnikami polecenia zmiany stanu przekaźnika za jakiś czas, np. po  jej wyłączeniu. Prezentowany w  aplikacji stan przekaźników jest kalkulowany w oparciu o polecenia wydawane przez użytkownika.

Konstrukcja aplikacji

106 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

z przekaźnikami lub wyświetla okno dialogowe z prośbą o  wskazanie opóźnienia, z  jakim ma być wysłana dana komenda. Ponieważ logika programu jest napisana z użyciem języka Javascript, bardzo łatwo było zrealizować asynchroniczną pracę aplikacji. W  efekcie, nic nie stoi na  przeszkodzie, by zażądać wykonania kilku opóźnionych operacji dla tego samego przekaźnika, wywoływanych w  dowolnym czasie. Każda kolejna zlecona, opóźniona operacja nie wstrzymuje wykonywania poprzedniej, choć wyświetlany timer prezentuje odliczanie w dosyć specyiczny sposób: z upływem każdej jednostki czasu (godziny, minuty, sekundy), w jakiej podane było opóźnienie wykonania danej komendy, zmieniane jest wskazanie timera dla danego przekaźnika. Jeśli przykładowo, dla przekaźnika pierwszego, prowadzone są  jednocześnie trzy odliczania, liczby prezentujące pozostały czas dla poszczególnych timerów będą prezentowane naprzemiennie. Oprócz tej różnicy z harmonogramowaniem opóźnionych komend dla przekaźników, działanie aplikacji mobilnej jest identyczne z działaniem oryginalnego programu dla systemu operacyjnego MS Windows. Naturalnie istotnie różny jest graiczny interfejs użytkownika.

Szczegóły implementacji HTML

Na samym początku sekcji BODY znajduje się warstwa „connection”, która informuje o  aktualnym stanie połączenia Bluetooth. Poniżej znalazło się pole w które wpisywana jest wartość temperatury podana przez moduł z  przekaźnikami (pole „temp”). Następnie umieszczono

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Przygotowana aplikacja wykorzystuje oprogramowanie Apache Cordova i zawartą w niej platformę androidową. Ponadto użyto dwóch pluginów: • com.megster.cordova.bluetoothserial, potrzebnego do realizacji komunikacji przez interfejs Bluetooth, • org.apache.cordova.dialogs, ułatwiającego prezentowanie okien dialogowych. Program opiera się o  standardową, czystą aplikację Cordovy, w której zmieniono jedynie treść plików index. js, index.html i index.css. Ponadto skorzystano z biblioteki jQuery, którą dodano do zasobów w katalogu z plikami Javascripta oraz wprowadzono ikonkę, by zastąpić domyślną ikonę aplikacji Cordovy. Działanie aplikacji rozpoczyna się od  przypisania poleceń do  wszystkich przycisków oraz inicjalizacji interfejsu Bluetooth. Po  nawiązaniu połączenia z  modułem z  przekaźnikami, uruchamiane jest nasłuchiwanie na  ciągi znaków, przesyłane interfejsem Bluetooth i  zakończone znakami końca linii (CR i LF). Pozyskiwane ciągi znaków są prezentowane jako wskazanie temperatury, w górnej części aplikacji. W  przypadku naciśnięcia któregokolwiek z  przycisków, aplikacja wysyła adekwatną komendę do  modułu

Rysunek 2. Okno dialogowe z pytaniem o czas zwłoki


Krok po kroku Kursy EP

Listing 1. Fragmenty kodu HTML aplikacji <!-- Fragment nagłówka --> <DIV id=”connection”>ROZŁĄCZONO</DIV> <DIV> <H1>Temperatura</H1> <DIV id=”temp-wrapper”> <SPAN id=”temp”>----</SPAN> °C</DIV> <H1>Wszystkie</H1> <TABLE><TR> <TD><BUTTON id=”all-on”>WŁĄCZ</BUTTON></TD> <TD><BUTTON id=”all-of”>WYŁĄCZ</BUTTON></TD> </TR></TABLE> </DIV> <!-- Fragment powtarzający się dla kolejnych przekaźników --> <H1>Przekaźnik 1</H1> <TABLE class=”relay”> <TR><TH>TERAZ</TH><TH>PÓŹNIEJ</TH><TH>STAN</TH></TR> <TR> <TD><BUTTON id=”now-on-1”>ON</BUTTON></TD> <TD><BUTTON id=”later-on-1” class=”later on”>ON</BUTTON></TD> <TD><SPAN id=”state-1” class=”state”>OFF</SPAN></TD> </TR> <TR> <TD><BUTTON id=”now-of-1”>OFF</BUTTON></TD> <TD><BUTTON id=”later-of-1” class=”later of”>OFF</BUTTON></TD> <TD><SPAN id=”time-1”>-</SPAN></TD> </TR> </TABLE>

dwa duże przyciski „Włącz” i „Wyłącz”, które sterują wszystkimi przekaźnikami jednocześnie. W  dalszej części umieszczono powtarzające się tabele klasy „relay” – po jednej dla każdego przekaźnika. Ich pola (przyciski i  spany) różnią się tylko ostatnią cyfrą, która pozwala rozpoznać, którego przekaźnika dotyczą. Każdy z przekaźników obsługiwany jest przez cztery przyciski: dwa do  natychmiastowego włączenia i wyłączenia („now-on-X” i „now-off-X”, gdzie X to numer przekaźnika) oraz dwa do  opóźnionego włączenia i  wyłączenia („later-on-X” i  „later-off-X”). Pole „state-X” informuje o  aktualnym stanie danego przekaźnika, a  pole „time-X” wskazuje czas pozostały w  timerach powiązanych z  danym przekaźnikiem. Dzięki zastosowaniu wtyczki org.apache.cordova.dialogs, nie było konieczne samodzielne tworzenie okien dialogowych, potrzebnych do wpisywania czasu opóźnienia wysłania komend. Fragment pliku index.html został pokazany na listingu 1.

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Szczegóły implementacji CSS

Plik CSS bazuje na standardowym pliku stylu do świeżej aplikacji Cordovy, pozbawionym kilku niepotrzebnych elementów. Zmieniono m.in. parametry nagłówka H1 oraz wykorzystano klasę .blink wraz ze  zmodyikowanymi parametrami aplikacji, by sygnalizować że  trwa nawiązywanie połączenia Bluetooth. Elementom tabeli i przyciskom (TABLE, TD, BUTTON) przypisano odpowiednie rozmiary i wielkości czcionek, tak by nie pozostawiały pustego miejsca na ekranie. Dodano też klasy: • .relay-on  –  by kolorem oznaczyć przekaźniki włączone, • .timed-on – by kolorem zielonym oznaczać odliczanie timera powodującego włączenie przekaźnika, • .timed-on – by kolorem czerwonym oznaczać odliczanie timera powodującego wyłączenie przekaźnika. Fragment pliku index.css znalazł się na listingu 2. Szczegóły implementacji Javascript Naturalnie najbardziej złożony jest kod Javascriptu. W  funkcji app.onDeviceReady() umieszczono wywołania dwóch funkcji: • app.bt1(), która inicjalizuje połączenie Bluetooth z modułem z przekaźnikami oraz prowadzi nasłuch danych dotyczących temperatury,

• app.assign_buttons(), która powoduje przypisanie akcji do poszczególnych przycisków. Oprócz tego stworzono funkcję app.countdown(), która służy do  prezentacji czasu pozostałego do  zakończenia odliczania czasu timerami. Funkcja app.bt1() została pokazana na  listingu  3. Rozpoczyna się od  zmiany wyglądu paska informującego o  stanie interfejsu Bluetooth. Następnie aplikacja Listing 2. Fragment kodu CSS aplikacji h1 { font-size:24px; font-weight:normal; margin: 20px 0 5px; overlow:visible; padding:0px; text-align:center; } @keyframes fade { from { opacity: 1.0; } 50% { opacity: 0.4; color:#FFF; } to { opacity: 1.0; } } @-webkit-keyframes fade { from { opacity: 1.0; } 50% { opacity: 0.4; color:#FFF; } to { opacity: 1.0; } } .blink { animation:fade 3000ms ininite; -webkit-animation:fade 3000ms ininite; } TABLE{ } BUTTON{ } TD{

width:100%; width:100%; font-size:20px;

text-align:center; } #temp-wrapper{ text-align: center; font-size: 35px; font-weight: bold; } #connection{ text-align:center; background-color:red; } .relay-on{ background-color:lightgreen; } .timed-on{ color:green; } .timed-of{ color:red; }

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

107


//próba znalezienia urządzenia Bluetooth bluetoothSerial.discoverUnpaired(function(devices) { $(„#connection”).html(„TRWA ŁĄCZENIE”).css(„background-color”,”blue”); devices.forEach(function(device) { if (device.name == „Serial Adaptor”) { app.btaddr = device.address; //próba połączenia się z urządzeniem BT o pożądanej nazwie bluetoothSerial.connect(app.btaddr, function() { $(„#connection”).html(„POŁĄCZONO”).css(„backgroundcolor”,”green”).removeClass(‚blink’); //funkcja nasłuchująca danych o temperaturze subscribe(‚\n’,function(data){

bluetoothSerial.

Krok po kroku Kursy EP

Listing 3. Funkcja app.bt1() bt1: function() { $(„#connection”).html(„WYKRYWAM URZĄDZENIA BLUETOOTH”).css(„background-color”,”blue”). addClass(‚blink’);

$(„#temp”).html(data); }, function(){alert(„niepowodzenie subskrypcji”);}); }, function() { alert(„zakończono połączenie”); });

} }) }, function() { $(„#connection”).html(„POŁĄCZENIE NIEUDANE”).css(„background-color”,”red”). removeClass(‚blink’); }); }, Listing 4. Fragment funkcji app.assign_buttons() obejmujący przypisanie akcji do przycisków natychmiastowo wywołujących komendy //fragment niepowtarzający się $(„#all-on”).click(function() { bluetoothSerial.write(‚y’); $(„.state”).html(„ON”).addClass(‚relay-on’); }); $(„#all-of”).click(function() { bluetoothSerial.write(‚z’); $(„.state”).html(„OFF”).removeClass(‚relay-on’); }); //fragment powtarzający się dla każdego z przekaźników $(„#now-on-1”).click(function() { bluetoothSerial.write(‚a’); $(„#state-1”).html(„ON”).addClass(‚relay-on’); }); $(„#now-of-1”).click(function() { bluetoothSerial.write(‚b’); $(„#state-1”).html(„OFF”).removeClass(‚relay-on’); });

wykrywa urządzenia Bluetooth w otoczeniu i gdy skończy, zmienia pasek informujący o stanie interfejsu oraz zaczyna, dla każdego ze znalezionych urządzeń, sprawdzać czy nazwa urządzenia to „Serial Adaptor”. Jeśli tak się stanie, aplikacja nawiązuje z danym urządzeniem połączenie, zmienia stan pasku informującego o  interfejsie BT i  zaczyna nasłuchiwać, korzystając z  polecenia bluetoothSerial.subscribe() na  ciągi znaków zakończone znakiem końca linii. Po każdym odebranym pakiecie takich danych, treść pola „temp” w aplikacji podmieniana jest na nowe wskazanie temperatury.

108 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Listing 5. Fragment kodu funkcji app.assign_buttons() obejmujący przypisanie akcji do przycisków wywołujących komendy ze zwłoką $(„.later”).click(function() { //pobranie identyikatora var identyikator=$(this).attr(„id”); //wywołanie okna dialogowego navigator.notiication.prompt( „Wybierz czas”, function(result){ if (result.buttonIndex) { var time=parseInt(result.input1); if (time){ var multi=0; var jednostka=””; switch (result.buttonIndex) { case 1: multi=60*60; jednostka=’h’; break; case 2: multi=60; jednostka=’m’; break; case 3: multi=1; jednostka=’s’; break; } var seconds=time*multi; //wywołanie funkcji z opóźnieniem setTimeout(function(){ $(„#now”+identyikator.slice(5)).trigger(‚click’); },seconds*1000); app.countdown(identyikator.slice(-1),(identyikator.slice(6,-2) == „on” ? 1 : 0),jednostka,time); } } }, (identyikator.slice(6,-2) == „on” ? „Włącz” : „Wyłącz”) + „ przekaźnik „+identyikator. slice(-1), [„godziny”, „minuty”, „sekundy”]); });


Krok po kroku Kursy EP Poprzednie części kursu i dodatkowe materiały dostępne są na FTP: ftp://ep.com.pl, user: 87550, pass: rxoaagj8

Listing 6. Funkcja app.countdown() countdown:function(przekaznik,stan,jednostka,czas){ if (czas!=0){ var nczas=czas-1; if (stan==”1”) $(„#time-”+przekaznik).html(czas + „ „ +jednostka).addClass(„timed-on”). removeClass(„timed-of”); else if (stan==”0”) $(„#time-”+przekaznik).html(czas + „ „ +jednostka).addClass(„timed-of”). removeClass(„timed-on”); var multi=0; switch (jednostka) { case ‚h’: multi=60*60; break; case ‚m’: multi=60; break; case ‚s’: multi=1; break; } //wywołanie samej siebie z opóźnieniem setTimeout(function(){ app.countdown(przekaznik,stan,jednostka,nczas); },multi*1000); }else $(„#time-”+przekaznik).html(„-”).removeClass(„timed-on”).removeClass(„timed-of”); },

Funkcja app.assign_buttons() składa się w większości z  powtarzających się elementów. Dla każdego z przycisków deiniowane jest odpowiednie przypisanie akcji następującej po jego naciśnięciu. Jest to przesłanie odpowiedniej komendy przez interfejs Bluetooth oraz zmiana etykietki ze stanem adekwatnych przekaźników. Fragment tego kodu przedstawiono na listingu 4. Warto zwrócić uwagę na  to, że  w  przypadku przycisków włączających i  wyłączających wszystkie przekaźniki jednocześnie, zmiana sygnalizacji stanu przekaźników jest realizowana w  oparciu o  klasę .state, a  nie o  unikalne identyikatory. Znacznie ciekawszy jest kod służący do  przypisania akcji przyciskom zwłocznym (listing  5). Został on  tak zoptymalizowany, by zajął jak najmniej miejsca – wszystkim tym przyciskom (klasy .later) przypisywana jest jedna i ta sama funkcja. Wstępnie jednak pobierany jest identyikator danego przycisku, dla którego funkcja została wywołana. Identyikator ten pozwala później rozpoznać, którego przekaźnika dotyczy dana operacja. Dla ułatwienia, wykorzystano polecenie navigator. notiication.prompt(), które wywołuje okno do  wprowadzania czasu opóźnienia wysłania komendy. Na dole okna umieszczono trzy przyciski, odpowiadające trzem jednostkom podawanej wartości opóźnienia: godzinom, minutom i  sekundom. Naciśnięcie jednego z  tych przycisków powoduje wywołanie kolejnej funkcji, w  której obliczany jest odpowiedni mnożnik czasu dla wybranej jednostki: 3600, 60 lub 1. W przypadku gdy użytkownik nie naciśnie żadnego z  tych przycisków, tylko zamknie okienko dialogowe, korzystając z  systemowego przycisku „cofnij”, timer nie zostanie ustawiony. Timer nie zostanie też ustawiony, jeśli wartość wpisana w  oknie dialogowym nie jest liczbą całkowitą. Obliczona liczba sekund (a  następnie milisekund), jaka musi upłynąć przed wysłaniem komendy jest podawana w funkcji setTimeout(). Aby skrócić ilość kodu potrzebnego do obsługi przycisków zwłocznych, z  zapamiętanego wcześniej identyikatora wycinane są fragmenty określające numer przekaźnika, którego dotyczy przycisk oraz rodzaj wywoływanej operacji (włączenie lub wyłączenie). By uniknąć problemu ponownego deiniowania komend Bluetooth, odpowiadających poszczególnym operacjom, w  funkcji uruchamianej po  żądanym czasie zwłoki wyzwalane

Rysunek 3. Okno aplikacji w trakcie jej pracy w orientacji poziomej jest kliknięcie w przycisk odpowiadający danej operacji i  danemu przekaźnikowi; przyciskom tym przypisano bowiem już odpowiednie komendy we wcześniejszym fragmencie kodu funkcji app.assign_buttons(). Na koniec, już poza funkcją setTimeout() wywoływana jest funkcja app.countdown() z parametrami określającymi numer przekaźnika, rodzaj operacji oraz wybrane jednostkę czasu i czas zwłoki. Funkcja app.countdown() jest praktycznie niezależna i służy tylko temu, by w odpowiednich miejscach interfejsu prezentować odliczanie czasu timerów. Funkcja ta  została zaprezentowana na listingu 6. Działanie funkcji app.countdown() polega na sprawdzaniu, czy pozostały czas nie osiągnął zera i  w  razie potrzeby na  zmniejszeniu licznika czasu o  1, wpisaniu nowej wartości w odpowiednim polu interfejsu użytkownika oraz na ponownym zaplanowaniu wywołania siebie samej, z  wykorzystaniem funkcji setTimeout(), z  opóźnieniem odpowiadającym jednej jednostce czasu, jaką użytkownik wybrał dla danego timera.

Podsumowanie

Gotowa aplikacja zajmuje niecałe 2 MB i uruchamia się praktycznie błyskawicznie. Pozwala zastąpić program w wersji na Windows. Dodatkowo, przenośny kod sprawia, że bardzo łatwo dokonać kompilacji kodu dla innych systemów operacyjnych, takich jak Windows Phone 8 i iOS, z tym że trzeba mieć na uwadze, że niektóre urządzenia mogą mieć problemy z  komunikacją z  użyciem interfejsu Bluetooth.

Marcin Karbowniczek, EP

ELEKTRONIKA PRAKTYCZNA 9/2015 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

109


AUTOMATYKA I MECHATRONIKA

Złącza i wiązki kablowe (1) Złącza oraz połączenia zaciskane i lutowane Złącza i  wiązki kablowe są  często niedocenianym elementem urządzeń elektronicznych. Źle wykonane złącze może zepsuć działanie całego, czasami bardzo skomplikowanego urządzenia. Cóż z  tego, że  procesor ma ogromną moc obliczeniową, piękny kolorowy wyświetlacz, skoro urządzenie nie działa, bo  złącze nie kontaktuje, czy też przewód się urwał? Wielcy producenci elektroniki dostrzegli już dawno ten problem i  w  wyniku ich starań powstała norma IPC/WHMA-A-620B, określająca zasady montażu, instalacji oraz zabezpieczania wiązek kablowych. Każda z  irm produkujących złącza przedstawia również swoje zalecenia dotyczące montażu ich wyrobów. Artykuł przybliża problemy, które pojawiają się przy projektowaniu, montażu i użytkowaniu typowych wiązek kablowych.

Rysunek 2. Przykłady końcówek tulejkowych i igiełkowych

Rodzaje połączeń rozłączalnych Podstawowe rodzaje rozłączalnych połączeń elektrycznych: • połączenia śrubowe i zaciskowe, • połączenia wtykowe. Połączenia śrubowe Przykłady zacisków śrubowych do montażu w PCB pokazano na rysunku  1. Najpopularniejszym złączem śrubowym jest kostka zaciskowa. Przykład takiej kostki pokazano na  rysunku  1a. W  kostkach tego typu można mocować zarówno przewody jednożyłowe, jak i wielożyłowe. W przypadku montażu przewodów wielożyłowych należy zwracać uwagę, aby wszystkie żyły zostały obsadzone w  otworze kostki. Zdarza się często, że  jeden cieniutki przewodzik w  czasie montażu odegnie się i  dotykając sąsiedniej kostki powoduje zwarcia. Niektórzy chcąc uniknąć takiej sytuacji cynują przewód wielożyłowy przed montażem. Takie działanie jest niedopuszczalne! Przewody wielożyłowe montowane zaciskowo nie mogą być wcześniej bielone. Wynika to  z  faktu, że  cyna jest metalem bardzo miękkim, o  niskiej temperaturze topnienia i w trakcie eksploatacji takiego połączenia znacznie pogarsza się docisk śruby, na skutek powolnego „wypływania” cyny ze  złącza. Oczywiście dopuszczalne jest zastosowanie przewodów, których żyłki są cynowane elektrochemicznie. Wtedy warstwa cyny jest bardzo

Rysunek 1. Przykłady zacisków śrubowych

110 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Rysunek 3. Zaciski sprężynowe cienka i nie przeszkadza w  normalnym funkcjonowaniu złącza. Lepszym rozwiązaniem jest założenie na  kabel końcówki igiełkowej lub tulejkowej. Końcówka igiełkowa powoduje, że  do  kostki wkręcamy pręt z  litego metalu, zamiast linki z  przewodów. Końcówka tulejkowa likwiduje efekt „miotły” na  odizolowanym przewodzie oraz poprawia równomierność rozłożenia sił dociskających dla wszystkich żył przewodu. Inny rodzaj złącza śrubowego pokazano na  rysunku  1b. Złącze to  jest przeznaczone do  podłączenia końcówki kablowej oczkowej, widełkowej, ewentualnie przewodu jednożyłowego ukształtowanego w oczko. Podłączanie przewodów linkowych jest w  zasadzie niemożliwe.

Rysunek 4. Końcówka kablowa zaciskana

Złącze z rysunku  1c umożliwia montaż zarówno przewodów jednożyłowych, wielożyłowych jak i  końcówek widełkowych. Pewną odmianą złącz śrubowych są złącza zaciskowe. Najczęściej są to zaciski sprężynowe. Powodem ich powstania jest oczywiście oszczędność czasu podczas montażu. Zaletą jest ich większa odporność na drgania i wibracje. Śruba zawsze może się odkręcić, zaś sprężyna będzie dociskać przewód niezależnie od  warunków zewnętrznych. Zasada działania jak i  przykłady pokazane są na rysunku 3. Przewody które można montować w  zaciskach sprężynowych, to  przewody jednożyłowe. Przewody wielożyłowe(linki) powinny być zabezpieczone za pomocą końcówki tulejkowej. Takie wymaganie spowodowane jest możliwością przecinania pojedynczych cienkich żyłek przez sprężynę i  z  czasem ucięcia całego przewodu. Połączenia wtykowe Połączenia wtykowe są  najczęściej spotykanymi w  urządzeniach elektronicznych. Służą zarówno do  połączeń pomiędzy różnymi urządzeniami jak i do łączenia modułów wewnątrz urządzenia. Połączenia wtykowe mogą być zarówno pojedyncze jak i  wielopinowe. Pojedyncze to  np. kabeloczko, zaś wielokrotne to  najczęściej terminale metalowe obsadzone w  plastykowej obudowie. Końcówki kablowe złącz mogą być lutowane do przewodów lub zaciskane. Połączenie lutowane jest połączeniem generalnie pewniejszym, ale nie da się zautomatyzować jego montażu. Stąd w  celu obniżenia kosztów produkcji oraz zwiększenia wydajności wymyślono połączenia zaciskane. Nie bez znaczenia jest tu fakt, że jakość połączenia lutowanego zależy prawie całkowicie od  człowieka, a jak wiadomo człowiek jest najbardziej zawodnym „elementem” procesu produkcyjnego, zaś połączenia zaciskane można stosunkowo łatwo


Złącza oraz połączenia zaciskane i lutowane

Rysunek 5. Przekroje miejsca zacisku izolacji

Rysunek 6. Zacisk żyły zautomatyzować. Stąd obecnie znacząca większość połączeń w wiązkach kablowych to połączenia zaciskane. Połączenia zaciskane Połączenie zaciskane jest nierozłączalnym, elektrycznym połączeniem między jedną lub wieloma żyłami i kontaktem w dowolnej formie za pomocą techniki zaciskania. Zaletami są: • pewne i trwałe połączenie, • powtarzalność połączeń przy produkcji maszynowej, • stałe wartości elektryczne i mechaniczne, • duża wydajność produkcji, • łatwa kontrola jakości poprzez pomiar wysokości, • obniżone koszty produkcji w  porównaniu z innymi metodami połączeń, • brak oparów lutowania, • brak „zimnych lutów”, • uniknięcie wypalenia lub wykruszenia izolacji. Widok typowej końcówki kablowej zaciśniętej na przewodzie pokazano na rysunku 4. Należy tu wyróżnić kilka elementów: Zacisk izolacji – służy temu, aby izolacja nie odsuwała się od zaciśniętej końcówki kablowej. Zacisk żyły –  najistotniejsza część połączenia, gdzie następuje połączenie przewodu i końcówki kablowej. Obszar roboczy styku – nie może być w żaden sposób zdeformowany, uszkodzony ani też nie może się tam znajdować żyła przewodu.

Obszar zacisku izolacji Służy on temu aby izolacja nie cofała się na  przewodzie co  mogłoby doprowadzić do  powstania zwarć, szczególnie w  przypadku złącza wielopinowego, gdzie poszczególne przewody zamocowane są blisko siebie. Aby izolacja była dobrze trzymana przez końcówkę kablową konieczne jest, aby

Rysunek 7. Przekroje miejsca zacisku żyły

metalowe skrzydełka obejmowały ją na obwodzie co  najmniej 3/4 okręgu. Istotnym elementem jest to, aby izolacja była przytrzymana przez metalowe uchwyty końcówki kablowej, ale aby one jej nie przebiły. Na rysunku 5 pokazano przekroje miejsca zacisku izolacji. Błędy, które mogą powstać przy zaciskaniu to: Rysunek 5a i 5c – niewłaściwie ustawione narzędzie zaciskające, skutkiem czego metalowe łapki przebijają izolację i znacznie osłabiają przewód. Dodatkowo, przewód wydaje się być zbyt cienki do  zastosowanej końcówki kablowej i należałoby sprawdzić, czy końcówka została właściwie dobrana. Rysunek  5b pokazuje sytuację odwrotną. Przewód jest za gruby do końcówki kablowej, skutkiem czego izolacja wypływa z uchwytu. Rysunek 5D pokazuje sytuację, gdy cienki przewód nie jest obejmowany przez metalowe uchwyty na  skutek zbyt słabego dociśnięcia uchwytów izolacji.

Obszar zacisku żyły.

jego dolnej powierzchni. Żyły przewodnika powinny być wyraźnie odkształcone tworząc obraz plastra miodu bez żadnych wolnych przestrzeni. Oczywiście bardzo ważnym jest, aby wszystkie żyły przewodnika zostały zaciśnięte. Na rysunku  7a źle dobrano przewód, który ma za duży przekrój w stosunku do końcówki kablowej i dlatego uchwyt nie zamyka się na przewodniku. Rysunek 7b przedstawia sytuację odwrotną, czyli przewodnik jest za cienki dla tej końcówki kablowej. Aby jednak wykonać to  połączenie dociśnięto mocno końcówkę kablową, więc osłabiono przewodnik oraz końcówkę, gdyż w  rogach mogą powstawać pęknięcia. Dodatkowym problemem są wypływy materiału końcówki kablowej powstające po bokach(„wąsy”). Ich powstanie spowodowane jest zbyt silnym dociśnięciem prasy lub zużytym narzędziem do zaciskania. Takie „wąsy” wyraźnie osłabiają materiał konektora doprowadzając do pęknięć. Na rysunku 7c pokazano pęknięcie końcówki kablowej w  prawym dolnym rogu na  skutek niesymetrycznego zacisku. Powodem takiej sytuacji może być zużyte lub źle niesymetrycznie ustawione narzędzie do zaciskania. Na rysunkach 7d i 7e w miejscu zacisku są puste przestrzenie na skutek źle dobranego przewodu (7d za mały przekrój do tej końcówki kablowej) lub niesymetrycznego umieszczenia przewodnika w  końcówce kablowej. Istnienie wolnych przestrzeni w  miejscu zacisku żyły prowadzi do  utleniania się powierzchni współpracujących elementów, to zaś powoduje zwiększenie rezystancji styku. W  wyniku przepływu prądu temperatura złącza się podnosi, co  powoduje jeszcze szybsze utlenianie się, dalsze zwiększenie rezystancji i w końcu lawinowo doprowadza do wypalenia styku. Rysunek  7f przedstawia całkowicie niesymetryczny zacisk, który powstaje najczęściej przy zaciskaniu kleszczami ręcznymi niskiej jakości. W prostych narzędziach ręcznych górna i dolna część praski poruszają się nierównolegle, lecz nożycowo doprowadzając do niesymetrycznych zacisków. Po  zaciśnięciu końcówka kablowa nie może być odgięta w żadną stronę, ani też skręcona. Dopuszczalne odchylenie wynosi 5°.

Jest to najważniejsza część końcówki kablowej. Miejsce zacisku powinno być symetryczne, najczęściej na  kształt „bałwanka”(zacisk typu F) i powinno mieć jednakową wysokość na całej długości zacisku. Wszelkie pęknięcia i  uszkodzenia materiału złącza dyskwaliikują złącze. Zaciskany przewód musi całkowicie wypełniać obszar zacisku (nie może być za krótki), ale też nie może wchodzić w obszar roboczy styku (nie może być za długi). Izolacja w  najmniejszym nawet stopniu nie może wchodzić w  obszar zacisku żyły przewodnika. Aby można było skontrolować poprawność wykonania połączenia stworzono dwa „okna kontroli” pokazane na rysunku 6: Wejściowe, w którym powinno być widać zarówno izolację jak i żyłę przewodnika. Wyjściowe, w  którym widać żyłę przewodnika. Dzięki istnieniu tych elementów kontroli możemy zweryikować, czy izolacja nie wchodzi w  obszar zacisku żyły oraz czy żyła przewodnika nie jest za krótka. Kolejnym ważnym elementem są  lejki –  wejściowy i  wyjściowy. Ich istnienie gwarantuje płynne przejście żyłek przewodnika Metody weryikacji połączenia do miejsca zgniotu, inaczej mówiąc w miejscu zaciskanego tym zaciskająca się końcówka nie utnie żył miePołączenie zaciskane weryikuje się poprzez: dzi. Lejek wejściowy musi być zachowany, zaś • kontrolę wizualną, warunkowo można dopuścić brak wyjściowego. • pomiar wysokości zacisku, Rysunek  7 przedstawia przekroje miejsca zacisku żyły przewodnika –  pierwsze cztery rysunki przedstawiają poprawnie zaciśnięty konektor. Miejsce zaciśnięcia powinno być symetryczne, obydwie łapki obchwytu powinny być zamknięte, lecz nie powinny dotykać Rysunek 8. Geometria połączenia zaciskanego ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

111


AUTOMATYKA I MECHATRONIKA

Rysunek 9. Pomiar wysokości zacisku • badanie siły zrywania końcówki z przewodu, • wykonanie przekrojów miejsc krytycznych, najczęściej zacisku żyły i  zacisku izolacji. Kontrola wizualna powinna obejmować sprawdzenie: • ogólnej symetrii wykonanego połączenia, • w  oknie inspekcyjnym wejściowym widoczności zarówno izolacji jak i przewodnika, • w  oknie inspekcyjnym wyjściowym widoczności przewodnika, • obecności lejków wejściowego i wyjściowego, • czy wszystkie żyły przewodnika zostały objęte zaciskiem, • czy żyły przewodnika nie wchodzą w obszar roboczy styku, • czy w miejscach zacisku nie ma pęknięć, • czy obszar roboczy styku nie jest w jakikolwiek sposób zdeformowany, • poprawności wykonania zacisku żyły i izolacji, • czy powierzchnie żyły jak i  styku nie są mocno utlenione czy też zaśniedziałe. Pomiar wysokości zacisku wykonuje się podczas uruchamiania produkcji wiązek kablowych. Użytkownik(odbiorca) może sprawdzić powtarzalność wysokości zacisku. Różnice w obrębie jednej partii produkcyjnej mogą świadczyć o  niestabilności procesu produkcyjnego. Zasadę pomiaru wysokości zacisku pokazano na rysunku 9.

Badanie siły zrywania końcówki z przewodu Badanie to  jest badaniem niszczącym, przeprowadzanym z reguły u producenta wiązek podczas uruchamiania produkcji. Wartość siły zrywania określają normy, np. DIN EN 60352-2. Dla przykładu siła zrywania końcówki kablowej z  przewodu 0,22 mm2 wynosi 28  N, zaś dla przewodu 2,5  mm2 wynosi 230  N. Klient może wykonywać takie badanie w  szczególnych przypadkach np. bardzo dużych wymagań jakościowych, czy też wątpliwości odnośnie do  jakości partii. Badanie przeprowadza się za pomocą specjalnych przyrządów. Widok przyrządu pokazano na rysunku 10. Miernik tego typu ma napęd ręczny. Błąd powodowany nierównomiernością ciągnięcia przewodu przez pracownika w  praktyce sięga kilku, nawet kilkunastu procent. Lepsze

112 NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

ELEKTRONIKA PRAKTYCZNA 9/2015

Rysunek 10. Miernik siły zrywania końcówki kablowej przyrządy mają napęd elektryczny, który znacząco zwiększa dokładność pomiaru.

Przekroje miejsc krytycznych Jest to również metoda niszcząca, najbardziej skomplikowana i pracochłonna. Zaletą jest to, że otrzymujemy najwięcej informacji o wykonanym połączeniu. Metoda ta wymaga specjalistycznego sprzętu i w związku z tym wykonywana jest jedynie u dużych producentów. Na rysunku 11 pokazano rzeczywiste zdjęcia przekrojów zacisku żyły. Rząd górny pokazuje przekroje poprawne. Ciekawostką jest ostatnie zdjęcie, na  którym w  jednym złączu zaciśnięto przewód wielożyłowy i jednożyłowy, widoczny po lewej stronie u dołu. W zasadzie złącza zaciskane służą zaciskaniu przewodów wielożyłowych (linek), zaś tutaj złączono przewód wielożyłowy z  nóżką rezystora. Mimo to widać, że wszystkie przewodniki są odkształcone, również nóżka rezystora, wobec czego takie połączenie można uznać za poprawne. Rysunek  11a pokazuje skrajne niedopasowanie końcówki kablowej do żyły. Żyła ma za mały przekrój i tego złącza nie da się zacisnąć poprawnie. Na rysunku 11b pin nie jest wystarczająco dociśnięty. Szczególnie w  lewym górnym rogu żyły nie są odkształcone i pomiędzy nimi pojawiają się wolne przestrzenie. Kolejny przykład z rysunku 11c to pin zaciskany kleszczami ręcznymi. Zacisk jest wyjątkowo niesymetryczny, lewa strona niedociśnięta, zaś prawa jest znacznie większa. Na rysunku 11d pokazano pęknięcie materiału końcówki kablowej (oznaczone czerwonym okręgiem). Dodatkowo pin jest trochę niesymetryczny i na pewno nie jest dociśnięty należycie.

Złącza IDC Powodem opracowania złącz IDC była oczywiście chęć wprowadzenia oszczędności. Pierwsze prace nad tego typu złączami prowadzone były przez irmy Western Electric

Rysunek 11. Zdjęcia przekrojów miejsca zacisku żyły (dzięki uprzejmości SIGMA-ELEKTRO)

Rysunek 12. Złącze telekomunikacyjne typu RJ i Bell Telephone Labs. W ich wyniku powstały używane do dzisiaj złącza typu RJ. Pierwotna idea złącz IDC polega na wbijaniu blaszki stykowej w  nieodizolowany przewód. Blaszka stykowa ułożona jest równolegle do  osi przewodu. Tak są  skonstruowane złącza telekomunikacyjne typu RJ (rysunek  12). Dalszym rozwinięciem tej koncepcji było poprzeczne ustawienie blaszki stykowej względem przewodu. Przewód wbijany jest w wąską szczelinę w blaszce. Izolacja żyły, która ściśle obejmuje połączenie, stanowi zabezpieczenie przed wpływem czynników środowiskowych. Kable takie znane od lat 70-tych, stały się powszechne w elektronice, a ich zaletą jest niska cena, łatwość montażu oraz obecnie powszechna dostępność. Maksymalna obciążalność prądowa tego typu złącz wynosi 1A dla markowych producentów i przewodów taśmowych 26AWG. Producenci dalekowschodni, o  ile w  ogóle podają obciążalność prądową, to wynosi ona z reguły 0,5 A. Taśmy do  tego typu wiązek mają żyły o  przekroju 0,14  mm2 (AWG26), 0,08  mm2 (AWG28) oraz czasami 0,05  mm2 (AWG30). Tych ostatnich raczej nie polecam ze względu na  małą odporność mechaniczną przewodu – łatwo jest doprowadzić do zerwania żyłki miedzi przy wyginaniu taśmy oraz fakt, że  większość złącz przeznaczona jest do taśm AWG26-28. Uwaga! Często popełnianym błędem jest z  jednej strony zaciskanie złącza IDC, a  z  drugiej lutowanie przewodu. Przewody wstążkowe mają maksymalną temperaturę pracy 105°C i  bardzo miękką izolację, aby piny złącza mogły łatwo ją przebić i w związku z tym nie są przeznaczone do lutowania. Lutowanie tego typu kabli powoduje bardzo szybkie topienie się izolacji, jej cofanie się oraz zwęglanie. Ponieważ taśmy IDC odniosły ogromny sukces rynkowy, producenci prowadzili prace nad poprawieniem ich parametrów, głównie maksymalnego prądu i  rezystancji przejścia. Rozwiązaniem było zastosowanie podwójnego styku, czyli przewód 2 razy przechodzi przez blaszkę stykową. Budowę takiego złącza pokazano na  rysunku  14. Po  wprowadzonych zmianach osiągnięto obciążalność prądową styku 6 A. Złącza IDC


Złącza oraz połączenia zaciskane i lutowane

Rysunek 13. Złącze IDC taśmowe

Rysunek 14. Budowa złącza IDC znalazły zastosowanie głównie w sprzęcie AGD.

Metody weryikacji połączeń IDC Połączenie IDC weryikuje się poprzez: • kontrolę wizualną, • pomiar głębokości zacisku, • badanie siły zrywania przewodu w osiach równoległej i  prostopadłej do osi złącza, • wykonanie przekroju miejsca zacisku.

Połączenia lutowane Lutowanie terminali i przewodów to  temat na  osobny artykuł. Jest to  proces zależny od  umiejętności człowieka i  bardzo trudny do  automatyzacji. W  niniejszym artykule ograniczymy się do  podania metod i  kryteriów weryikacji poprawności wykonanego połączenia. Połączenie lutowane weryikuje się głównie poprzez kontrolę wizualną, która obejmuje: • sprawdzenie stopnia zwilżenia cyną lutowanych powierzchni (rysunek 15), • zarys żył przewodu powinien być widoczny, • brak jakichkolwiek nadpaleń, zwęgleń izolacji, • wszystkie żyły przewodnika są zalutowane, • cyna ani żadna z  żył przewodnika nie wystaje poza obrys końcówki kablowej, • odstęp izolacji od końcówki kablowej nie przekracza 1…1,5 grubości przewodnika, • brak śladów topnika, • brak śladów korozji,

Rysunek 16. Kleszcze ręczne do zaciskania końcówek kablowych

Rysunek 17. Kleszcze ręczne do zaciskania złącz IDC • brak uszkodzeń, nadtopień obudowy złącza, • obszar roboczy styku nie zanieczyszczony cyną ani też topnikiem.

Narzędzia Najprostszym narzędziem do montażu wiązki kablowej są kleszcze ręczne do zaciskania końcówek kablowych lub złącz IDC. Jedyną ich zaletą jest niska cena zakupu, poza tym w  zasadzie mają same wady. Przykłady kleszczy ręcznych pokazano na rysunku 16. Kleszcze oznaczone literami „a” i  „b” to  typowe, najtańsze narzędzia chińskie. Działają one na zasadzie zacisku nożycowego, co zawsze prowadzi do niesymetrycznego zacisku (jak pokazano na rysunku 11c). Drugim problemem jest dokładność oraz żywotność, która szczególnie w  przypadku narzędzi tzw. „no-name” pozostawia wiele do  życzenia. Wadą tych kleszczy jest brak ogranicznika zacisku, co prowadzi do różnej wysokości crimpu. Znacznie lepsze kleszcze pokazano na  rysunku 16C. Kleszcze te  są  znacznie masywniejsze, o  większej sztywności oraz mają blokadę, która zapewnia powtarzalność wysokości zacisku. Na  rysunku  16d pokazano specjalistyczne kleszcze do zaciskania tulejek kablowych. Na  rysunek  16e przedstawiono kleszcze o  specjalnej budowie, gdzie oba elementy zaciskające poruszają się równolegle, co daje znacznie lepsze efekty. Na  rysunkach  17a i  17b pokazano narzędzia do  zaciskania tasiemek IDC, na rysunkach 17c i 17d kleszcze do  zaciskania złącz typu RJ, zaś na  rysunkach 17e i 17f narzędzia ręczne do wciskowego mocowania przewodów w złączach IDC.

Rysunek 18. Aplikator do zaciskania końcówek kablowych kablowej. Do  każdej końcówki kablowej przeznaczony jest tylko jeden dedykowany aplikator. Ma niezależną regulację wysokości zacisku żyły i izolacji (podwójne pokrętło u góry). Aplikator jest urządzeniem o wysokiej precyzji, gdyż od jego działania zależy jakość zacisku. Końcówki kablowe można zaciskać w prasach z podawaniem ręcznym przewodu (rysunek 19) lub w pełni automatycznych urządzeniach (rysunek 20). Często urządzenia wyższej klasy mają układ monitorowania siły zaciskania końcówki. Podczas uruchamiania produkcji z  pierwszych sztuk tworzony jest wzór siły zaciskania. W trakcie produkcji siła zaciskania kolejnej końcówki porównywana jest z wzorem. W przypadku odstępstw większych niż zadane, końcówka jest ucinana, aby nie można było jej użyć. W  ten sposób mamy pewność, że  jeżeli maszyna została zaprogramowana prawidłowo to końcówka zaciśnięta jest poprawnie. Podsumowując: można powiedzieć, że narzędzia ręczne mogą służyć do  wykonywania prototypów lub okazjonalnych napraw. Żywotność najtańszych narzędzi to  kilkaset zaciśniętych złącz. Trochę lepiej wygląda sytuacja dla narzędzi irmowych, kosztujących powyżej 1,2 tys. złotych, czasami nawet 5 tys. złotych. Jakość i  żywotność tych narzędzi jest znacznie lepsza. Produkcja wiązek kablowych powinna się odbywać przy użyciu narzędziach profesjonalnych.

Krzysztof Bednarek kbednarek168@gmail.com

Rysunek 19. Automat do produkcji wiązek kablowych

Narzędzia automatyczne

Rysunek 15: Lutowanie – kryterium zwilżenia cyną

Podstawowym elementem każdego narzędzia automatycznego do zaciskania końcówek kablowych jest aplikator (rysunek 18). Jest on urządzeniem specjalistycznym, montowanym zarówno w prasach, jak i w pełni automatycznych urządzeniach. Służy do  zaciskania końcówki

Rysunek 20. Prasa do zaciskania końcówek ELEKTRONIKA PRAKTYCZNA 9/2015

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

113


Ogłoszenia i reklamy hurtowni, sklepów, importerów, producentów, dealerów, itp. są płatne. Cena podstawowego modułu (35 x 20 mm) wynosi 66 zł + VAT. Koszt minimalnej ramki dla ogłoszeń o  wielkości 3 modułów wynosi 198 zł + VAT. Moduły można łączyć zarówno w pionie jak i w poziomie. Maksymalna szerokość ogłoszenia to 5 modułów, wysokość 12 modułów. Rabaty stosujemy wyłącznie dla reklam powyżej 8 modułów: 4-6 emisji 10%, 7-11 emisji 15% i od 12 emisji 25%. Oferta specjalna: • publikacja fragmentów cennika w ramce o wielkości: 8 modułów w pionie cena 264 zł + VAT, 9 modułów w poziomie 305 zł + VAT • rabat specjalny dla irm poszukujących pracowników wynosi 25% (wyłącznie dla dużych reklam). Wszelkich informacji udziela Grzegorz Krzykawski, tel. 22 257 84 60, e-mail: grzegorz.krzykawski@ep.com.pl. Reklamy do tej rubryki mogą być przygotowane przez Zamawiającego w postaci wydruku z drukarki laserowej lub pliku w formacie CDR, AI, EPS (tekst zmieniony na krzywe), PSD, PDF z próbnym wydrukiem albo pliku w dowolnym edytorze tekstu (także z wydrukiem), jeśli krój czcionek nie jest rzeczą dużej wagi. Małe reklamy mogą być przygotowane w redakcji (gratis) na podstawie odręcznego szkicu lub maszynopisu. Opracowania te nie będą jednak wówczas uzgadniane z Zamawiającym przed oddaniem do druku. Redakcja nie odpowiada za treść reklam i  ogłoszeń zamieszczonych w  Elektronice Praktycznej

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Niniejsze ogłoszenia są informacją handlową i nie stanowią oferty w myśl art. 66, § 1 Kodeksu Cywilnego. Ceny mogą ulec zmianie.


Nie przegap!

interesujących materiałów w siostrzanym czasopiśmie We wrześniowym wydaniu

Szkoła Konstruktorów – Realizacja płyty czołowej

Elektroniki dla Wszystkich

między innymi:

Tester akumulatorów i ogniw z ładowarką Mikroprocesorowy tester pozwoli ocenić jakość nowych oraz stopień zużycia eksploatowanych już akumulatorów, a także wybrać z rynku jednorazowe ogniwa o najatrakcyjniejszych parametrach. Termometr numitronowy Czy wiesz, co to są wyświetlacze numitronowe? W kolejnym projekcie z wyświetlaczami retro możesz wykorzystać te zaskakująco proste, wciąż łatwo dostępne, elementy. Mikrofony pojemnościowe i „elektrety” Nie tylko początkujący napotykają trudności, gdy do miksera lub przedwzmacniacza chcą podłączyć mikrofon pojemnościowy albo elektretowy. Dwuczęściowy artykuł zawiera wiele praktycznych wskazówek. Programowanie PLC Artykuł zawierający wiele istotnych informacji o sterownikach PLC, wykorzystywanych językach programowania, ich zaletach i wadach, a także zwracający uwagę na bardzo ważne aspekty pracy dobrego twórcy automatycznych systemów sterowania, A może masz pomysł na ciekawy artykuł lub projekt? wykorzystującego PLC. Skonstruowałeś urządzenie, Kurs C które jest godne zaprezentowania szerszej publiczności? Zapowiadany od dawna obszerny kurs C Możesz napisać artykuł edukacyjny? rozpoczynamy od informacji podstawowych. Nie będzie to jednak czysta teoria, a to dzięki Chcesz podzielić się doświadczeniem? wykorzystaniu pakietu Visual Studio. W takim razie zapraszamy do współpracy na łamach Ponadto w numerze Elektroniki dla Wszystkich. Kontakt: edw@elportal.pl n Dlaczego powracamy do elektroniki analogowej? n Modułowy zasilacz symetryczny EdW możesz zamówić n Wzmacniacz akustyczny z układem LM386 na stronie Ulubionego Kiosku: www.ulubionykiosk.pl n Pół elementu, czyli... fotocela telefonicznie 22 257 84 50, fax: 22 257 84 55, n Warsztatowe patenty. Warsztacik w pokoju listownie lub za pomocą e-maila: handlowy@avt.pl. n Szkoła Konstruktorów – Sposób realizacji Do kupienia także w Empikach płyty czołowej i wszystkich większych kioskach z prasą. n Szkoła Konstruktorów – Wykorzystanie Na wszelkie pytania czeka także Dział Prenumeraty dowolnego czujnika/sensora tel. 22 257 84 22, prenumerata@avt.pl n MEU – RRAM i memrystory, część 2 (w tym 5% VAT)

• NAKŁAD: 14 990 egz.

www.elportal.pl

09 1 3 4 5 6 7 8

CENA 12zł

9 771425 16915 43 6

INDEKS 333 62X

ISSN 1425-1698

9 /2015 WRZESIEŃ •

www.elportal.pl

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Niniejsze ogłoszenia są informacją handlową i nie stanowią oferty w myśl art. 66, § 1 Kodeksu Cywilnego. Ceny mogą ulec zmianie.


Najpopularniejsze Kity AVT

Pełna oferta oraz prezentacje techniczne kitów i modułów są dostępne na stronie: sklep.avt.pl 116

ELEKTRONIKA PRAKTYCZNA 9/2015 Niniejsze ogłoszenie jest informacją handlową i nie stanowi oferty w myśl art. 66, § 1 Kodeksu Cywilnego. Ceny mogą ulec zmianie.

NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


Prenumerata

za darmo lub półdarmo

Jeśli jeszcze nie prenumerujesz Elektroniki Praktycznej, to spróbuj za darmo! Warunkiem otrzymania 3-miesięcznej bezpłatnej prenumeraty próbnej od października jest wniesienie, jako swego rodzaju „kaucji”, opłaty za następne 9 miesięcy (144,00 zł). Jeśli nie uda się nam przekonać Cię do prenumeraty i zrezygnujesz z niej przed 16 grudnia 2015 – otrzymasz zwrot całej swojej wpłaty. Nie musisz próbować, bo jesteś zdecydowany na prenumeratę? Wybierz relatywnie najtańszą opcję startową, czyli prenumeratę 2-letnią, której cenę obniżyliśmy o wartość aż 8 numerów! Jeśli już prenumerujesz EP, pamiętaj o przedłużeniu prenumeraty. W ten sposb uzyskasz prawo do jeszcze atrakcyjniejszych zniżek – nawet do 50% ceny czasopisma! Szczegóły na www.ep.com.pl/oferta-prenumeraty. Prenumerata Elektroniki Praktycznej to również: • 80% zniżki na równoległą prenumeratę e-wydań (co oznacza dostęp do najnowszych wydań jeszcze przed ukazaniem się pisma w kiosku!) • co miesiąc DVD „Niezbędnik Elektronika”, a na nim m.in. narzędzia programowe, karty katalogowe i noty aplikacyjne (tylko dla Prenumeratorów) • co miesiąc możliwość zamówienia archiwaliów gratis lub za symboliczną złotówkę • do 30% zniżki w sklepie www.sklep.avt.pl • Zniżki na www.UlubionyKiosk.pl od 30% do 50%

Elektronika. Jesteś w tym dobry? Z Elektroniką Praktyczną bedziesz mistrzem! Zaprenumeruj EP we wrześniu a jako prezent będziesz mógł wybrać koszulkę z logo EP lub DVD z koncertem Queenów, a na nim „We Are The Champions”! Informację, jaki prezent wybierasz, wpisz jako uwagę przy składaniu zamówienia lub przekaż nam przed końcem sierpnia mailem (prenumerata@avt.pl), telefonicznie (22 257 84 22) lub listownie (Wydawnictwo AVT, Dział Prenumeraty, ul. Leszczynowa 11, 03-197 Warszawa)

A więc – zamów prenumeratę!

Możesz to zrobić na kilka sposobów: • dokonując wpłaty na nasze konto: AVT-Korporacja sp. z o.o., ul. Leszczynowa 11, 03-197 Warszawa, BGŻ BNP Paribas S.A., 97 1600 1068 0003 0103 0305 5153 • zamawiając za pomocą telefonu, e-maila, faksu lub listu.

• wypełniając formularz w Internecie (na stronie www.avt.pl) – tu można zapłacić kartą lub dokonać szybkiego przelewu • wysyłając na numer 663 889 884 sms o treści PREN – oddzwonimy i przyjmiemy zamówienie (koszt sms wg Twojej taryfy)

NIEZBĘDNIK ELEKTRONIKA

to płyta DVD, którą co miesiąc dostają TYLKO PRENUMERATORZY EP. Niezbędnik elektronika to narzędzia programowe, karty katalogowe, noty aplikacyjne... Niezbędnik elektronika to krążek, który trzeba mieć. Nie pozwól, by taki rarytas przechodził Ci koło nosa: zaprenumeruj Elektronikę Praktyczną!

Wolisz rozłożyć płatność na raty? Zgłoś stałe zlecenie bankowe na www.avt.pl/szb lub załóż „teczkę” na www.ulubionykiosk.pl/teczka

Dział Prenumeraty Wydawnictwa AVT, ul. Leszczynowa 11, 03-197 Warszawa, tel.: 22 257 84 22, faks: 22 257 84 00, e-mail: prenumerata@avt.pl NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


WYKAZ FIRM OGŁASZAJĄCYCH SIĘ W TYM NUMERZE ELEKTRONIKI PRAKTYCZNEJ

AKSOTRONIK ..........................115 ARMEL ....................................114

Elektronika Praktyczna 10/2015 Kolejne gigabajty narzędzi niezbędnych do pracy konstruktora, czyli NIEZBĘDNIK ELEKTRONIKA na DVD. Tylko dla prenumeratorów EP.

ASTAT .......................................23 BORNICO ....................................6 COMPUTER CONTROLS..............22 CONRAD ELECTRONIC .................2 CONTRANS TI ..............................9 DELTA ....................................114 ELMARK AUTOMATYKA ............10 ELMAX....................................115 ELPIN ......................................114 FARNELL ELEMENT14 .............120 FERYSTER ..................................11 FIRMA PIEKARZ .................11, 114 GAMMA ...................................11

Płytka „automatyki domowej” dla Raspberry Pi

NDN .......................................119

Komputerek Raspberry Pi, pomimo sporych możliwości, nie może sterować praktycznie żadnymi domowymi odbiornikami energii elektrycznej bez dodatkowych układów wykonawczych. Za miesiąc projekt płytki drukowanej wyposażonej w przekaźniki, interfejs szeregowy, RTC i zasila, która ułatwi użycie „Maliny” w układach automatyki domowej i nie tylko.

NETRONIX.................................11

Filtr cyfrowy do subwoofera aktywnego

KRADEX ..................................114 LC ELEKTRONIK .........................16 MICROCHIP/NAPIER ...................15 NATIONAL INSTRUMENTS .........19

PHOENIX CONTACT ...................95 PYFFEL ....................................114 QWERTY .....................................8 RENEX ......................................11 RK-SYSTEM ...............................14 RUTRONIK .................................13 SPIN ELEKTRONIK ......................45 ST MICROELECTRONICS ................. ...........................5, 25, 31, 37, 39 TARGI W MONACHIUM.............17 TELMATIK ...............................115 TESPOL .....................................21 UNISYSTEM.................................7 ReklamyELEKTRONIKA stron internetowych na str. 11 9/2015 118 PRAKTYCZNA NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Za miesiąc projekt iltru do subwoofera o możliwości niemal dowolnego kształtowania charakterystyki częstotliwościowej, jak przystało na nowoczesne DSP.

Mikser DMX

W kolejnej EP opublikujemy projekt miksera DMX, który umożliwi dołączenie konsoli zapasowej lub zapewni równoległą obsługę urządzeń za pomocą dwóch konsoli.


NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com


NEXTO : OrderID: 2108923 : Aleksander Jonderko : olek0012@gmail.com

Elektronika praktyczna 09 2015  
Elektronika praktyczna 09 2015  
Advertisement