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!
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: [email protected] 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: [email protected] 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ę[email protected] Prenumerata w Wydawnictwie AVT www.avt.pl/prenumerata lub tel: 22257 84 22 e-mail: [email protected] 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: [email protected] 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”.
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
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
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ę!
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:
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
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
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
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
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
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
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 : [email protected]
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 : [email protected]
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: [email protected] or call +49 (0) 7231 801-1776
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
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.
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.
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ŁOS´C´ W NAJMNIEJSZYCH SZCZEGÓŁACH. Przyszłos´ciowe perspektywy dla rozwoju i produkcji innowacyjnej elektroniki.
. Juz teraz kup bilet lub wygeneruj wejs´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?
S´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 [email protected]
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
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´scie 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 s´ wiat coraz bardziej opiera si˛e na oprogramowaniu, a wraz z tym rosna˛ nasze mo˙zliwo´sci. Zmiany te dotycza˛ te˙z oprzyrzadowania ˛ testowego. W odró˙znieniu od urzadze´ ˛ n tradycyjnych, produkty tworzace ˛ platform˛e NI zapewniaja˛ dost˛ep do najnowszych zdobyczy technologii, jednocze´snie optymalizujac ˛ zarówno koszt, jak i czas potrzebny do zaprojektowania oraz wdro˙zenia systemu.
>> Wiecej ˛ informacji ni.com/automated-test-platform Zapraszamy do rejestracji na BEZPŁATNE NIDays 2015: poland.ni.com/nidays
Dzi˛eki intuicyjnemu, graficznemu podej´sciu do programowania, LabVIEW pozwalana na skrócenie czasu przygotowania testu. Przyst˛epna obsługa zada´n 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
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
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
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
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.
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, �� )
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
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
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_ill += ch_len_isr[ch_num]; } ch_dspl = 0; TCCR1A &= ~(1<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
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 [email protected] 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
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)
* 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
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
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
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]
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.
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
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
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 : [email protected]
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
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
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).
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 : [email protected]
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
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
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
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
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
(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.
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.
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
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
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
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
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
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
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
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
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.
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ą [email protected]
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 : [email protected]
* 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 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
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.
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
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
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
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
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
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
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
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
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
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?
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: [email protected] Infolinia: 800 889 897, http://poland.ni.com Wsparcie techniczne: [email protected]
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 [email protected] ELEKTRONIKA PRAKTYCZNA 9/2015
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
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
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.
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
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ę
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, [email protected] 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
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
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.
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
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
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.
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ą
(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
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 : [email protected]
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ę
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.
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()
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.
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.
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.
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)
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,
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
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.
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.
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.
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.
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();
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(); }
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
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
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
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
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
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
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 }
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
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
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ć
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.
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
ROZŁĄCZONO
Temperatura
---- °C
Wszystkie
Przekaźnik 1
TERAZ
PÓŹNIEJ
STAN
OFF
-
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{
//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){
} }) }, 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.
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.
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 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
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
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.
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
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: [email protected]. 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
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: [email protected] 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: [email protected]. 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, [email protected] n MEU – RRAM i memrystory, część 2 (w tym 5% VAT)
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.
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 ([email protected]), 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: [email protected] NEXTO : OrderID: 2108923 : Aleksander Jonderko : [email protected]
WYKAZ FIRM OGŁASZAJĄCYCH SIĘ W TYM NUMERZE ELEKTRONIKI PRAKTYCZNEJ
Elektronika Praktyczna 10/2015 Kolejne gigabajty narzędzi niezbędnych do pracy konstruktora, czyli NIEZBĘDNIK ELEKTRONIKA na DVD. Tylko dla prenumeratorów EP.
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 : [email protected]
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.