reklama
reklama
reklama
reklama
reklama
reklama
© Merlin, illustration purposes only
Komponenty |

Bezprzewodowa sieć do synchronizacji lamp ulicznych oparta na ZigBee

Urbaniści i inżynierowie budownictwa, w trakcie planowania budowy nowej ulicy, zastanawiają się jaki system jej oświetlenia zastosować w nocy. Z reguły lampy zasilane są z sieci, trzeba więc kopać rowy wzdłuż drogi, kłaść kable i montować urządzenia. Jednym z najnowszych rozwiązań, szczególnie na nowo powstających osiedlach, jest stosowanie lamp solarnych.

Urbaniści i inżynierowie budownictwa, w trakcie planowania budowy nowej ulicy, zastanawiają się jaki system jej oświetlenia zastosować w nocy. Z reguły lampy zasilane są z sieci, trzeba więc kopać rowy wzdłuż drogi, kłaść kable i montować urządzenia. Jednym z najnowszych rozwiązań, szczególnie na nowo powstających osiedlach, jest stosowanie lamp solarnych. Obecnie są one droższe od tradycyjnych, lecz na skutek rosnących w dużym tempie cen energii, amortyzują się bardzo szybko. Dodatkową oszczędność stanowi brak konieczności stosowania miedzianych kabli oraz wykonywania robót budowlanych. Wyobraźmy sobie drogę oświetloną lampami solarnymi. Każda z nich posiada czujnik światła, który zapala ją w nocy. Tolerancje czujników i urządzeń elektronicznych umożliwią zapalanie się lamp w rożnych momentach, bez synchronizacji. Jednak takiego rozwiązania nie zatwierdzi żaden prezydent miasta! Aby wszystkie lampy na ulicy zapalały się jednocześnie, muszą być zsynchronizowane - najlepiej bezprzewodowo. ZigBee to standardowy protokół wykorzystywany w przypadku automatyki domowej, inteligentnej energii oraz w innych zastosowaniach. Posiada pewne przydatne cechy, które można wykorzystać do synchronizacji działania lamp. Po pierwsze, pracuje w wolnym od licencji paśmie 2,4GHz ISM. Technologia ta bez kłopotu osiąga transmisję na typowe odległości montażu lamp - 40 – 60 metrów. Najważniejszą cechą ZigBee jest to, że sprawdza się w sieci kratowej. W takiej sieci informacje z węzła źródłowego do docelowego przekazywane są przez routery. W przypadku oświetlenia ulicznego jako routery można skonfigurować lampy. Rysunek 1: Zwiększenie zasięgu przez sieć kratową © Texas Instruments [Opis rysunku:] Node = węzeł Light = lampa Sensor & light = czujnik i lampa Router = router Coordinator = koordynator Stosując ZigBee Stack firmy Texas Instruments można stworzyć aplikację z jednym tylko czujnikiem zastosowanym w jednej z lamp i pozostałymi lampami odbierającymi jego sygnał. W niniejszym artykule omawiamy i objaśniamy takie zastosowanie. Jak przedstawiono na rysunku 1, system składa się z dwóch głównych części: 1. Koordynatora spełniającego następujące funkcje: • Wykrywanie natężenia światła przez czujnik rezystorowy • Wysyłanie sygnału PWM proporcjonalnego do ciemności w celu sterowania własnej lampy • Wysyłanie tego sygnału PWM do innych lamp. 2. Routera spełniającego następujące funkcje: • Odbiór sygnału PWM • Wysłanie odebranego sygnału w celu sterowania jasnością lampy • Taki sam router SW można zaprogramować w każdej lampie (węźle), nie będzie więc problemu z adresowaniem, gdyż wykona to ZigBee Stack. Rysunek 2: Płytka ewaluacyjna SmartRF05 z CC2530EM © Texas Instruments Urządzenia Texas Instruments niezbędne do zbudowania takiej sieci to: - Płytka ewaluacyjna SmartRF05EB - CC2530DB Daughter Board (patrz rysunek 2) Płytki można programować przez kabel USB, nie ma konieczności stosowania żadnego dodatkowego debuggera HW. ZigBee Stack dla wersji CC2530 2.4.0-1.4.0 można bezpłatnie pobrać ze strony internetowej Texas Instruments. Całość opracowano za pomocą środowiska IAR Embedded Workbench dla 8051, wersja 7.60.1. W celu stworzenia własnego środowiska zalecane jest zapoznanie się i stosowanie instrukcji podanych w dokumencie „Tworzenie nowych aplikacji dla SmartRF05 CC2530”, Numer dokumentu TI: SWRA231. W aplikacji „GenericApp”, które właściwie wysyła co 5 sekund sygnał „Hello World”, bez żadnego znaczenia merytorycznego, został zmodyfikowany w sposób opisany poniżej. Należy wspomnieć, że GenericApp umożliwia transmisję w obu kierunkach, tzn. możliwe jest wysłanie wiadomości „Hello World” z koordynatora do routera i urządzenie końcowego i vice versa. Aplikacja „Street Light” wysyła informacje tylko w jednym kierunku – od koordynatora do routerów i urządzeń końcowych. Krok 1: Czujnik światła W tym przypadku siłę światła symuluje się potencjometrem na płytce ewaluacyjnej SmartRF05. Zintegrowany przetwornik analogowo-cyfrowy na CC2530 przetwarza analogowe sygnały napięcia z potencjometru na sygnały cyfrowe. Analizując schemat płytki ewaluacyjnej można zauważyć, że suwak potencjometru podłączony jest do wtyku 12, co odpowiada portowi 0, wtykowi 7 lub P0.7. Wtyk ten, tak jak wszystkie wtyki We/Wy, ustawiony jest domyślnie jako wejście. Przed konfigurowaniem ADC oraz timera (w aplikacji będzie użyty timer 1, lecz można użyć innego dowolnego timera, za wyjątkiem timera 2, który wykorzystywany jest przez ZigBee Stack jako timer OSAL) należy poprawnie ustawić wtyk wyjściowy dla PWM. Wtyk 11 (Port 1, Bit 0: P1.0) podłączony jest do diody LED na SmartRF05 EVB. Ma to na celu wysłanie sygnału, więc P1DIR należy ustawić na 0x01. Projekty ZigBee stosują taką samą nomenklaturę, jaka używana jest w Podręczniku użytkownika CC2530 (SWRU191B), w którym opisano wszystkie rejestry CC2530. Według dokumentacji „HAL Driver API”, w celu odczytania przetwornika analogowo-cyfrowego wymagane są dwa wywołania funkcji: 1. HalAdcSetReference (HAL_ADC_REF_AVDD) Ustawianie napięcia odniesienia przetwornika analogowo-cyfrowego, tzn. stosowanie AVDD jako wartości odniesienia oznacza, że przetwornik analogowo-cyfrowy przetwarza 0V na zero, a maksymalne napięcie wyjściowe wynoszące 3V na 255 w przypadku rozdzielczości 8 bit i wyjścia binarnego. 2. HalAdcRead (HAL_ADC_CHN_AIN7, HAL_ADC_RESOLUTION_12) Odczyt kanału 7, który połączony jest z suwakiem potencjometru i ustawia rozdzielczość na 12 bit. Należy uważać, ponieważ CC2530 ADC wysyła wszystkie dane w formacie uzupełnień do 2, więc ostateczne dane wzrosną z 0 do 2047. Do obydwu funkcji należy dołączyć plik „hal_adc.h”. Aktualne wersja dokumentacji „HAL Driver API” nadal podaje kilka usług timera, które nie są już ważne i nie są obsługiwane przez Z-Stack. Ponieważ timer 2 zarezerwowany jest przez OSAL (warstwa abstrakcji systemu operacyjnego), w aplikacji można wykorzystać timer 1 (16 bitowy) oraz timery 3 i 4 (8 bitowe). Opis konfiguracji timera 1: - P1.0 należy nastawić na funkcję peryferyjną (wyjście timera 1 połączone z wtykiem 12, PERCFG |= 0x40;) - Rejestr kontrolny peryferyjny należy nastawić na: „Alternatywna lokalizacja 2” (P1SEL |= 0x01;) - Rejestr kontrolny timera 1 nastawić na dzielenie zegara systemu 32MHz przez 8, co daje tykania 1/4MHz, i ustawić timer w trybie Modulo, aby liczył od 0 do wartości okresu ustawianej poniżej (T1CTL = 0x06;) - Okres timera 1 nastawić na 2048 (T1CC0H = 0x08; T1CC0L = 0x00;) co odpowiada T = 2048 • 1/4MHz = 512µs (patrz rysunek poniżej) Rysunek 3: Wyjście PWM przy cyklu pracy 50% (funkcja ZOOM) - Tryb wychwyć/porównaj timera 1/rejestru kontrolnego nastawić na: „Ustaw, kiedy równy T1CC0 i wyczyść, kiedy równy T1CC2” (T1CCTL2 = 0x34;) Po wykonaniu tych czynności, wyjście PWM znajduje się na wtyku 12. Cyklem pracy można sterować ustawiając rejestr wychwyć/porównaj T1CC2H i T1CC2L timera 1, kanał 2. Wykonanie pozostałych czynności nie powinno być skomplikowane. Po odczytaniu wartości analogowej za pomocą HalAdcRead należy odpowiednio ustawić rejestry wychwyć/porównaj. Wartość 12-bitową można przypisać stosując wcześniej zdefiniowane makra HI_UINT8 - LO_UINT8 (T1CC2H = HI_UINT8 - wartość odczytana oraz T1CC2L = LO_UINT8 - wartość odczytana). Należy także podkreślić, że przekazywana wartość musi być typu znakowego. Dlatego wartość odczytaną należy zmienić z liczby całkowitej na znak przy pomocy funkcji _itoa (odczytaj wartość z przetwornika analogowo-cyfrowego, ciąg znaków, radix). Z-Stack – oprócz wielu innych funkcji – posiada również tę przydatną cechę. W IAR IDE, koordynator musi być skompilowany i połączony jako ZigBee PRO Coordinator. Krok 2: Router Router nie wymaga stosowania przetwornika analogowo-cyfrowego, ponieważ będzie odbierał rzeczywiste wartości cyklu pracy PWM bezpośrednio z koordynatora. Należy zastosować tylko takie same ustawienia timera, jak w koordynatorze. Po otrzymaniu wartości cyklu pracy należy odpowiednio ustawić rejestry wychwyć/porównaj T1CC2H i T1CC2L. Router musi być skompilowany i połączony jako ZigBee PRO Router. Podsumowanie: W tym przykładzie zaprezentowaliśmy, jak proste jest przystosowanie Z-Stack SW produkowanego przez Texas Instruments do potrzeb aplikacji klienta. Po opisaniu sposobu używania przetwornika analogowo-cyfrowego i tworzenia sygnału PWM, adresować można większość aplikacji. O autorze Hans-Günter Kremser pracuje obecnie jako Starszy inżynier ds. aplikacji analogowych w Texas Instruments w Monachium. Po ukończeniu studiów w Kolonii na kierunku telekomunikacja pracował w EADS w Ulm jako inżynier ds. rozwoju, a następnie w innych firmach produkujących półprzewodniki. W TI pracuje od czerwca 2006 r. Wszystkie użyte znaki towarowe i zastrzeżone znaki towarowe należą do ich prawowitych właścicieli.

reklama
reklama
Załaduj więcej newsów
March 28 2024 10:16 V22.4.20-2
reklama
reklama