Serwisy partnerskie:
Close icon
Serwisy partnerskie

Budowa układu do transmisji danych za pomocą barwy światła

Pomysł transmisji danych światłem nie jest ani nowy, ani rzadki. Na co dzień przecież wykorzystujemy światłowody. Aby nie szukać daleko, piloty IR do telewizora też przecież wykorzystują światło „prawie” widzialne. Ja zdecydowałem się na rozwiązanie wykorzystujące zwykłe oświetlenie, którego i tak używamy w pomieszczeniach zamkniętych.
Article Image

Aby nie opierać się tylko na modulacji natężenia i wprowadzić większą niezawodność transmisji, nawet przy towarzyszącym innym oświetleniu, zdecydowałem się przesyłać dane... modulując barwę światła. Odbywa się to w ciągu milisekund, czyli człowiek nie jest w stanie gołym okiem zobaczyć takiej transmisji oraz w żaden sposób ona nie przeszkadza. Przyjąłem założenie, że światło czerwone będzie oznaczało jedynkę, a niebieskie zero.

Do układu wykorzystałem listwę RGB złożoną z diod LED z osobnym sterowaniem każdym kolorem. Listwę taką złożyłem z taśmy z diodami, którą można kupić „na metry” za niewielkie pieniądze na popularnym portalu aukcyjnym. Taśmę nakleiłem na profil aluminiowy z marketu budowlanego i tak złożoną listwę przykręciłem do półki nad biurkiem – patrz fotografia tytułowa. Co prawda jakość światła uzyskiwanego z diod RGB (CRI) jest mała, ale to układ eksperymentalny.

Celem projektu nie było zrealizowanie układu w pełni praktycznego. Chciałem to potraktować jako pewien proof of concept, z którego być może wykiełkuje coś bardziej użytecznego.

Rys.1 Nadajnik do transmisji danych za pomocą barwy światła

Opis układu do transmisji danych za pomocą barwy światła

System składa się z nadajnika i odbiornika, zawierających minikomputerki Arduino Pro Micro z obwodami towarzyszącymi.

Nadajnik do transmisji danych za pomocą barwy światła

Nadajnik jest zbudowany z minikomputerka i 3 tranzystorów MOSFET IRF520N – rysunek 1 i fotografia 2. Do nadajnika podłączona jest listwa z diodami RGB. Nadajnik odbiera dane z portu szeregowego i zgodnie z nimi moduluje oświetlenie, włączając lub wyłączając poszczególne kolory listwy RGB w czasie milisekund.

Fot.2 Nadajnik do transmisji danych za pomocą barwy światła

Odbiornik do transmisji danych za pomocą barwy światła

Odbiornik zawiera minikomputerek, wyświetlacz pożyczony z płytki testowej AVT-3500 oraz dwa fotorezystory, umieszczone w plastikowych tubach po mazakach, zamkniętych kawałkiem kolorowej folii z okładki zeszytu. Folia ta pełni funkcję filtru. Jeden fotorezystor – nazywajmy go tu detektorem – jest przykryty folią czerwoną, a drugi folią niebieską. Detektory są podłączone do przetworników ADC mikrokontrolera. W zależności od dominującej w otoczeniu barwy odczyty z detektorów są różne. Dane odebrane (znaki ASCII) są przedstawiane na wyświetlaczu.

Na schemacie odbiornika (rysunek 3) nie uwzględniłem wyświetlacza zgodnego z HD44780, którego podłączenie jest typowe. Fotografia 4 pokazuje model.

Rys.3 Schemat odbiornika do transmisji danych za pomocą barwy światła

Sposób transmisji danych za pomocą koloru światła

Zmiana koloru oświetlenia jest interpretowana jako różnica pomiędzy składową koloru czerwonego i niebieskiego: diff = natężenie światła czerwonego – natężenie światła niebieskiego.

Dla dominującego koloru czerwonego wartość „diff” jest dodatnia. Dla dominującego koloru niebieskiego – ujemna. Ponieważ warunki w otoczeniu mogą się zmieniać w czasie, a nie chcemy, aby losowe „fluktuacje” dawały fałszywe dane, zaimplementowałem prosty mechanizm adaptacji.

Po zakończeniu każdej transmisji uruchamiany jest tryb uczenia, który przez 50 milisekund sprawdza parametry natężenia kolorów i po wykonanych pomiarach określamy granice „warunków normalnych” otoczenia. Późniejsza zmiana natężenia kolorów poza te granice jest interpretowana jako logiczna jedynka lub logiczne zero. Tryb uczenia jest także uruchamiany po 10 sekundach bezczynności wg timera, aby na bieżąco znać warunki otoczenia.

Oczywiście istnieje prawdopodobieństwo, że timer uruchomi tryb uczenia na milisekundy przed rozpoczęciem transmisji i taka transmisja nie zostanie odebrana, jednak wg obliczeń prawdopodobieństwo takiego zdarzenia jest niewielkie i wynosi ok. 0,5%.

Fot.4 Model odbiornika do transmisji danych za pomocą barwy światła

Format ramki transmisyjnej

Ramka transmisyjna składa się z kilkunastu bitów, które umożliwiają przesłanie faktycznego „ładunku” jednego bajta danych. Jak pokazuje rysunek 5, pierwsze cztery bity to sekwencja inicjująca, składająca się z logicznych jedynek, czyli koloru czerwonego. Musi być ona wystarczająco długa, aby odbiornik potraktował to jako potencjalną transmisję danych. Kolejnym jest jeden bit startu, który zawsze jest zerem. Następne 8 bitów to już prawdziwe dane. Zastanawiałem się też nad umieszczeniem na końcu dodatkowych informacji, np. kontroli parzystości, ale w obecnej fazie projektu uznałem to za zbędne.

Rys.5 Ramka transmisyjna - transmisja danych za pomocą barwy światła

Ograniczenia w transmisji danycg za pomocą barwy światła

Obecnie prędkość transmisji danych jest bardzo niska, głównie ze względu na testowy charakter projektu i konieczność przeglądania danych na niezbyt szybkim oscyloskopie. Przy tak niskich prędkościach transmisji jest widoczne migotanie światła. Budowa ramki transmisyjnej umożliwia przesłanie tylko jednego bajta danych. Przesyłanie większej ilości danych będzie dość długie, bo każdy bajt musi być przesyłany osobno.

W przyszłych wersjach można zmodyfikować budowę ramki, aby przesyłać jednorazowo więcej bajtów. Transmisja w barwie światła widzialnego często będzie odbywała się w otoczeniu także innych źródeł światła, dlatego wymaga odpowiedniej weryfikacji i interpretacji w wyższych warstwach protokołów sieciowych oraz dobrania mechanizmów weryfikacji np. CRC.

W przypadku systemów oświetlenia, zwłaszcza domowego, podstawowym problemem jest to, że diody RGB praktycznie nie są tam stosowane. Do oświetlenia mieszkań wykorzystuje się białe diody LED (budowane na bazie niebieskich + luminofor), bo tylko tak można tanio uzyskać wysoki współczynnik oddawania barw (CRI, Ra).

Zalety w porównaniu do transmisji radiowej Silna kierunkowość. Układ nadawczy może emitować promieniowanie jedną diodą, a układ odbiorczy z układem optycznym mógłby być skierowany precyzyjnie na punkt konkretnego nadajnika. W takiej konfiguracji możliwe byłoby wiele różnych transmisji, nawet w jednym pomieszczeniu. Oczywiście w tym wypadku transmisja z ruchomymi obiektami będzie bardzo trudna, ale wspierając się np. transmisją radiową, można zrealizować pozycjonowanie.

Medium transmisyjne, czyli światło, jest obecnie używane w każdym pomieszczeniu, więc dodanie do tego informacji nie spowoduje zużycia energii na „nośnik”. Światło widzialne nie jest szkodliwe dla ludzi i zwierząt, przynajmniej ja nie natrafiłem na przekonujące informacje na ten temat (pomijając rozważania o ewentualnej szkodliwości światła niebieskiego ze struktur świecących na biało diod LED).

Natomiast dla bardziej tajemniczych fal radiowych, np. Wi-Fi, przedstawiono wiele teorii na temat ich szkodliwości, nawet jeśli nie są poparte jakimikolwiek argumentami naukowymi. W teorii przepustowość może być znacznie większa niż Wi-Fi, bo częstotliwości są wyższe (setki teraherców). Warto zaznaczyć, że światło widzialne to najwyższe częstotliwością, nieszkodliwe dla organizmów żywych, promieniowanie.

Transmisja danych za pomocą barwy światła - zastosowania

Komunikacja samochodów na jezdni: pojazd jadący z naprzeciwka może przesłać światłami komunikat o zagrożeniu, jak utrata przyczepności. Światła uliczne mogą przesyłać informacje samochodom np. o czasie pozostałym do włączenia się światła zielonego. Dzięki temu komputer sterujący silnikiem mógłby uruchomić silnik zatrzymany w trybie start & stop na sekundy przed zmianą świateł. W halach magazynowych można by przesyłać informacje rozgłoszeniowe, czyli np. do wszystkich wózków widłowych. Przesyłanie danych pomiędzy budynkami, zastępujące tzw. przewieszki, które nie zapewniają izolacji galwanicznej.

Podsumowanie i plany rozwoju projektu

Projekt w obecnej wersji ma znaczenie czysto edukacyjne. Wszystkie testy prowadziłem, przesyłając dane z nadajnika podłączonego do komputera, na którym wpisywałem tekst (przykład na fotografii 4). Nadajnik modulował światło listwy nad biurkiem, a odbiornik leżący na biurku odbierał przesyłane znaki i prezentował na wyświetlaczu. Podczas realizacji największym problemem okazało się takie opracowanie algorytmu w oprogramowaniu, które będzie skutecznie odróżniało celową transmisję danych od „szumu świetlnego” w otoczeniu.

Niewątpliwie można tu jeszcze wiele sprawdzić i udoskonalić, rozważam zbudowanie kolejnych wersji urządzeń, które mogą znaleźć już bardziej praktyczne znaczenie. Aby znacznie zwiększyć transmisję, można użyć mocniejszych komputerków, np. opartych na STM32 (też zgodne z Arduino), które można kupić bardzo tanio. Zbocza sygnału odbieranego przez detektory są wystarczająco strome i jest tutaj możliwość podkręcenia transmisji, o ile prędkość próbkowania ADC będzie wystarczająca. Pomiar różnić natężenia światła może być bardziej precyzyjny.

Dla potrzeb innego projektu, który chcę zrealizować, planuję użyć światła do precyzyjnego pozycjonowania. Poważnie rozważam transmisję danych do pomieszczenia gospodarczego oddalonego od domu o kilka metrów. Będą to głównie dane pomiarowe, ale planuję zaimplementować szyfrowanie typu VPN / SSL.

Czytelników zainteresowanych tematem proszę o kontakt, chętnie przedstawię w EdW ulepszoną, rozbudowaną wersję układu.

Tematyka materiału: Arduino Pro Micro
AUTOR
Źródło
Elektronika dla Wszystkich kwiecień 2019
Udostępnij
UK Logo