Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zdalny pomiar natężenia światła dla Raspberry Pi z Bluetooth 4.0 i BleMagic

mario_ka 12 Maj 2017 11:02 4329 24
  • Zdalny pomiar natężenia światła dla Raspberry Pi z Bluetooth 4.0 i BleMagic Standard Bluetooth jest bardzo powszechny w świecie elektroniki. Jednak od wersji 4.0 (Bluetooth Low Energy / Bluetooth Smart) dokonał się fantastyczny przełom, który otwiera zupełnie nowe możliwości. Wiecie co mam na myśli - układy zgodne z Bluetooth Low Energy (BLE) potrzebują do pracy znikome ilości energii dzięki czemu możliwe jest ich wykorzystanie w niemal wiecznych aplikacjach bateryjnych.
    Przedstawiam zatem sposób na bezprzewodowy pomiar natężenia światła z wykorzystaniem standardu BLE. Dane odbierane będą przez mikrokomputer Raspberry Pi3.
    Jak?
    1. Pomiar wykonywać będzie moduł BleMagic.
    2. Zasilany jest z baterii pastylkowej CR2032.
    3. Jako detektor natężenia światła przylutowany został fotorezystor 5-10k GL5616.

    Zdalny pomiar natężenia światła dla Raspberry Pi z Bluetooth 4.0 i BleMagic

    3. Konfiguracja Raspberry Pi3.
    Dopiero wersja 3 komputerka posiada wbudowany moduł Bluetooth 4.0. Aby możliwe było odbieranie danych z urządzeń Bluetooth Low Energy za pomocą wcześniejszych wersji Raspberry konieczne jest wyposażenie ich w Dongla USB obsługującego BLE.
    Na początek zainstalujemy potrzebne pakiety do obsługi BLE.
    Code:
    sudo apt-get update
    
    sudo apt-get install pi-bluetooth
    sudo apt-get install bluetooth bluez bluez-hcidump blueman
    4. Skrypt odbierający dane
    W ostatnim kroku piszemy krótki skrypt korzystający z zainstalowanych pakietów, który odbierze dane z będących w zasięgu modułów BleMagic - skompresowany plik BleMagicScan.sh jest w załączniku.
    5. Gotowe.
    Moduł BleMagic wysyła informację o natężeniu światła jako wartość z przedziału od 0-255. Pomiar wykonywany jest co 10 sekund.
    Pozostało przejść do katalogu w którym znajduje się napisany skrypt i wywołać go poleceniem:
    Code:
    ./BleMagicScan.sh
    Jeśli w zasięgu Raspberry Pi znajduje się jakiś moduł BleMagic to w oknie ujrzymy:
    Zdalny pomiar natężenia światła dla Raspberry Pi z Bluetooth 4.0 i BleMagic

    Kolejno wyświetlane są:
    - w nawiasach kwadratowych: adres modułu BleMagic i numer trybu pracy,
    - pwr to napięcie zasilania modułu, które obliczamy: 211:71=2,97V,
    - light to poziom natężenia światła,
    - work_time to czas pracy modułu od włączenia zasilania w sekundach.
    - RSSI to moc sygnału odbieranego z modułu BleMagic - reprezentacja dziesiętna liczby U2.
    Średni pobierany przez moduł prąd wynosi 2 uA przy napięciu 3V. Podczas pomiaru i transmisji danych moduł pobiera średnio 4,5 mA przez 0,03 sekundy. Dla baterii litowej CR2032 o pojemności 210mAh daje to przybliżony czas pracy wynoszący 565 dni. Gdyby dla kogoś było to niewystarczające to po zastosowaniu pakietu baterii 2xAA o pojemności 2000mAh teoretyczny czas pracy wzrasta aż do 5376 dni.
    W przypadku włączenia sygnalizacji pomiaru błyskiem diody LED teoretyczne czasy pracy skracają się odpowiednio do: 291 i 2777 dni.
    Poniżej przedstawiony jest odczyt z dwóch będących w zasięgu Raspberry Pi modułów BleMagic.
    Zdalny pomiar natężenia światła dla Raspberry Pi z Bluetooth 4.0 i BleMagic

    Jak widać w zasięgu znalazł się nowy moduł o adresie 0x02, który:
    - wysyła dane co jedną sekundę,
    - znajduje się w miejscu bardziej zacienionym niż moduł o adresie 0x0B,
    - zasilany jest napięciem: 165 : 71 = 2,32V,
    - pracuje dopiero pół minuty.
    Mam nadzieję, że w miarę zrozumiale przedstawiłem tą ideę.
    Projekt jest w wersji rozwojowej, Aby wykorzystać potencjał trzeba wyposażyć go w większą liczbę czujników i rozszerzyć możliwości komunikacji ze światem zewnętrznym.
    Jeśli ktoś chciałby pomóc przy pracy nad projektem (programowanie Arduino, Raspberry Pi lub Androida) - śmiało - zapraszam do kontaktu. Na pewno powstanie coś ciekawego !!

    Więcej informacji o Raspberry Pi: raspberrypi.org
    Popularny Adapter USB z Bluetooth 4.0 to np. Bluetooth USB CSR4.0.
    Strona modułu BleMagic: BleMagic.com
    A dla wzrokowców dodatkowo kilka klatek

    Pozdrawiam
    mario

    PS. Załącznik gdzieś wyleciał - już dodane.

    Fajne!
  • #2 12 Maj 2017 16:55
    k9mil
    Poziom 9  

    Jak wygląda programowanie tego nRF?
    Tzn. jaka platforma, czym wgrywamy soft.

  • #3 12 Maj 2017 17:52
    mario_ka
    Poziom 10  

    Witaj k9mil

    Tam siedzi ARM cortex-m0 więc czym kto woli...Ja wybrałem arm-gcc, stlinka i openocd.
    ...a Ty co byś wybrał?

    Pozdrawiam.

  • #4 12 Maj 2017 18:43
    TvWidget
    Poziom 29  

    mario_ka napisał:
    Moduł BleMagic wysyła informację o natężeniu światła jako wartość z przedziału od 0-255.

    Czy zdajesz sobie sprawę, ze natężenie oświetlenia może się zmieniać w bardzo szerokim zakresie. W wielu przypadkach nawet 23-bitowa dynamika przetwornika nie jest wystarczająca.

  • #5 12 Maj 2017 19:25
    mario_ka
    Poziom 10  

    Witaj TvWidget

    Cieszę się, że zwróciłeś na to uwagę bo nie o luxomierz tu chodzi - duże piwo dla Ciebie... bezalkoholowe ;-).
    W tej aplikacji pomiar natężenia światła robiony jest po to aby np.:
    - odróżnić dzień od nocy,
    - stwierdzić czy świeci słońce czy jest pochmurno,
    - zrobić detekcję oświetlenia w pomieszczeniu - włączone/wyłączone,
    - zapamiętać konkretny moment "szarówki" podczas zapadania zmierzchu... itp.

    Sądzisz, że do tego typu zadań wystarczy rozdzielczość 8 bitów?

    Pozdrawiam

  • #6 12 Maj 2017 19:38
    TvWidget
    Poziom 29  

    mario_ka napisał:
    Sądzisz, że do tego typu zadań wystarczy rozdzielczość 8 bitów?

    Poużywaj to się przekonasz.
    Jeśli zakres pomiarowy pozwoli rozróżnić dzień słoneczny od pochmurnego to może być problem z wykryciem czy w pomieszczeniu jest włączone oświetlenie.
    Jednym rozwiązań tego problemu jest wprowadzenie nieliniowej (logarytmicznej) charakterystyki.
    Chyba masz źle oszacowany średni pobór prądu. Napisałeś, że układ w czasie nadawania pobiera 4500uA. Trwa to 0.03 sek. i jest powtarzane co 10 sek. Tak więc średni prąd raczej nie będzie mniejszy niż 4500uA*(0.03/10)=13.5uA
    Czy ten fotorezystor zasilasz ze stabilizowanego napięcia ? W czasie pracy napięcie baterii będzie sukcesywnie malało od 3V do 2V.

  • #7 12 Maj 2017 20:52
    mario_ka
    Poziom 10  

    TvWidget napisał:

    Jeśli zakres pomiarowy pozwoli rozróżnić dzień słoneczny od pochmurnego to może być problem z wykryciem czy w pomieszczeniu jest włączone oświetlenie.
    Jednym rozwiązań tego problemu jest wprowadzenie nieliniowej (logarytmicznej) charakterystyki.

    To wydaje się być dobrym sposobem w drugim rzucie.
    Przy detekcji stanu oświetlenia wewnątrz pomieszczenia (włączone/wyłączone) najpierw należy zadbać o odpowiednie ustawienie detektora względem źródła i to daje zadziwiająco dobry efekt niemal zerowym kosztem.

    TvWidget napisał:

    Chyba masz źle oszacowany średni pobór prądu. Napisałeś, że układ w czasie nadawania pobiera 4500uA. Trwa to 0.03 sek. i jest powtarzane co 10 sek. Tak więc średni prąd raczej nie będzie mniejszy niż 4500uA*(0.03/10)=13.5uA
    Czy ten fotorezystor zasilasz ze stabilizowanego napięcia ? W czasie pracy napięcie baterii będzie sukcesywnie malało od 3V do 2V.

    Rozumiem Twoje wątpliwości. Rozwieję je w punktach:
    1. Aby zminimalizować pobór energii fotorezystor jest zasilany tylko w chwili pomiaru.
    2. Ten zmierzony pobór prądu to całkowity prąd pobierany przez moduł wraz z zasilaniem fotorezystora.
    3. Napięcie baterii spada, ale zasila ono fotorezystor jak również jest napięciem odniesienia ADC - pomiar zatem cały czas jest wiarygodny niezależnie od użytego źródła energii.

  • #9 13 Maj 2017 09:02
    mario_ka
    Poziom 10  

    Witaj piotrva,

    piotrva napisał:
    Witaj,
    Kody programów polecam trzymać na repozytorium ;)

    Dzięki za propozycję. Jak tylko znajdę czas to "obczaję" tę sprawę :-)

    piotrva napisał:
    Jak rozumiem moduł BLEMagic to Twoje dzieło?

    Tak. Obecnie wersja zalążkowa :-)

    piotrva napisał:
    Dodam, że najnowsze R-Pi Zero W ma tez BLE4.0 ;)

    Dzięki.
    Wiem o tym i mam nadzieję, że wkrótce wystąpi w roli głównej z modułami BleMagic :-).

    Pozdrawiam

  • #11 14 Maj 2017 10:34
    TvWidget
    Poziom 29  

    Z tymi 2uA autor trochę przesadził (zapewne nie miał urządzeń pozwalających to prawidłowo zmierzyć). Jednak średni prąd na poziomie kilkunastu uA jest jak najbardziej realny.
    Zasięg tego typu urządzeń zależy od
    - mocy nadajnika (większa moc to oczywiście większy pobór prądu)
    - czułości odbiornika
    - precyzyjnego ustawienia częstotliwości nośnej
    - temperatury otoczenia (mniejsza temperatura to zwykle większy zasięg)
    - poziomu zakłóceń w paśmie 2.4GHz
    - wysokości umieszczenia anten
    - przeszkód jakie znajdują się pomiędzy antenami
    W przypadku pomieszczeń to może być jeden pokój lub jedno piętro.
    Tzw. widzialność optyczna anten, maksymalna dopuszczalna prawem moc nadajnika i odbiornik o dużej czułości pozwalają osiągnąć nawet 200m. Zwykle jednak zasięg określa się na max. 50m.

  • #13 14 Maj 2017 15:41
    maliniak80
    Poziom 16  

    Jak wyglada dogadanie sie z samym modulem nrf51, jest tam cortex-m0 ale czesc jego zasobow jest przeznaczonych na obsluge radia, przykladowo piszac jakis swoj wsad musisz dogadac sie z czescia soft device czy obsluge samego radia tez sam robiles? Jesli to nie tajemnica to moglbys troche opisac jak to wyglada :D Jak dla mnie wykorzystanie tego nrf to bombowa sprawa tym bardziej ze mozna go miec za pare $

  • #14 14 Maj 2017 19:00
    mario_ka
    Poziom 10  

    Wow Panowie myślałem, że opalacie się przy tak pięknej pogodzie...a tu merytoryczna dyskusja trwa...

    leonow32 napisał:
    Nikła prądożerność tego układu robi wrażenie, ale jaki to ma zasięg?
    Witaj leonow32,
    Trudno jest jednoznacznie odpowiedzieć na tak postawione pytanie ponieważ zasięg zależy od wielu czynników m.in. tych o których wspomniał TvWidget.
    Konkretem jest to, że przy tak małej antenie (jak w prototypie na zdjęciach) można za pomocą RPi 3 odbierać użyteczne informacje z odległości 25m gdy urządzenia "się widzą". Większa odległość nie była na razie testowana....
    TvWidget napisał:
    Z tymi 2uA autor trochę przesadził (zapewne nie miał urządzeń pozwalających to prawidłowo zmierzyć). Jednak średni prąd na poziomie kilkunastu uA jest jak najbardziej realny.

    Nie ma tu przesady.:
    1. Autor miał urządzenia pozwalające z zadowalającą precyzją dokonać pomiaru - oscyloskop, miernik uniwersalny średniej klasy, zasilacz regulowany i kilka rezystorów - to wszystko co było potrzebne.
    2. Zmierzone parametry pokrywają się z deklarowanymi przez producenta nRFa.
    3. Średni prąd na poziomie kilkunastu uA zabiłby raczej ideę.
    4. TvWidget zapewne ma szklana kulę w której widzi "jakich urządzeń zapewne nie miał" autor. :-)

    TvWidget napisał:
    Tzw. widzialność optyczna anten, maksymalna dopuszczalna prawem moc nadajnika i odbiornik o dużej czułości pozwalają osiągnąć nawet 200m. Zwykle jednak zasięg określa się na max. 50m.
    W tym temacie jesteśmy już nieco dalej:

    Link


    TvWidget napisał:
    Natomiast przy rozsądnym poborze prądu i w realnych warunkach to około +-10 metrów

    Udaje się więcej... :-)

    Pozdrawiam Panowie.

    Dodano po 7 [minuty]:

    maliniak80 napisał:
    Jak wyglada dogadanie sie z samym modulem nrf51, jest tam cortex-m0 ale czesc jego zasobow jest przeznaczonych na obsluge radia, przykladowo piszac jakis swoj wsad musisz dogadac sie z czescia soft device czy obsluge samego radia tez sam robiles? Jesli to nie tajemnica to moglbys troche opisac jak to wyglada :D Jak dla mnie wykorzystanie tego nrf to bombowa sprawa tym bardziej ze mozna go miec za pare $

    Witaj maliniak80,
    Nie ma tu żadnych tajemnic. Obsługę radia możesz pisać samodzielnie, ale możesz skorzystać z gotowych funkcjonalności napisanych przez producenta - ja tak zrobiłem.
    Temat jest dość obszerny dlatego zachęcam do przeglądnięcia strony producenta: Nordic Semi - jest tam wszystko co niezbędne do zabawy z układami nRF.

    Pozdrawiam

  • #15 14 Maj 2017 19:06
    TvWidget
    Poziom 29  

    mario_ka napisał:
    Średni prąd na poziomie kilkunastu uA zabiłby raczej ideę.
    4. TvWidget zapewne ma szklana kulę w której widzi "jakich urządzeń zapewne nie miał" autor. :-)

    Opierałem się jedynie na informacjach jakie podałeś. Określiłeś jaki prąd pobiera układ w czasie nadawania, ile trwa ta operacja i jak często jest wywoływana. Proste obliczenie wskazuje, że układ średnio pobiera nie mniej niż kilkanaście uA.
    Oczywiście mogłem się pomylić w rachunkach.
    W praktyce pomiar średniego prądu kiedy jego dynamika sięga tysięcy razy nie jest prostą sprawą.

    W filmie reklamującym zasięg to stworzono idealne warunki. Czyli
    - odludna okolica (brak zakłóceń)
    - niską temperatura (małe szumy odbiornika, suche powietrze)
    - anteny wysoko umieszczone
    - brak przeszkód pomiędzy antenami
    W praktycznych zastosowaniach takie warunki nie występują. Zwykle jedną ze stron komunikujących się ze sobą jest smartfon/tablet/PC. One niestety mają odbiorniki o mniejszej czułości niż ten nRF. Anteny w nich też nie są też idealnie umieszczone. Zasięgi będą więc zdecydowanie mniejsze.

  • #16 15 Maj 2017 09:59
    mario_ka
    Poziom 10  

    TvWidget napisał:
    mario_ka napisał:
    Średni prąd na poziomie kilkunastu uA zabiłby raczej ideę.
    4. TvWidget zapewne ma szklana kulę w której widzi "jakich urządzeń zapewne nie miał" autor. :-)

    Opierałem się jedynie na informacjach jakie podałeś. Określiłeś jaki prąd pobiera układ w czasie nadawania, ile trwa ta operacja i jak często jest wywoływana. Proste obliczenie wskazuje, że układ średnio pobiera nie mniej niż kilkanaście uA.
    Oczywiście mogłem się pomylić w rachunkach.
    W praktyce pomiar średniego prądu kiedy jego dynamika sięga tysięcy razy nie jest prostą sprawą.

    Aaa... teraz zauważyłem, że mój opis można dwuznacznie interpretować.
    Skonkretyzuję zatem:
    1. Układ w trybie uśpienia pobiera 2uA.
    2. W trybie nadawania co 10 sekund pobiera 4,5mA przez 0,03s co dodaje się do średniego prądu: 4500uAx0,03s/10s = 13,5uA - na okrągło.
    3. Całkowity średni prąd to zatem: 2uA + 13,5uA = 15,5uA.
    4. Dla baterii litowej 210mAh daje to teoretyczny czas: 210000uAh/15,5uA = 13548h => 565 dni.
    5. Analogicznie dla 2000mAh

    Przepraszam wszystkich za niejednoznaczność textu.
    Pozdrawiam

    Dodano po 14 [godziny] 22 [minuty]:

    TvWidget napisał:
    W filmie reklamującym zasięg to stworzono idealne warunki. Czyli
    - odludna okolica (brak zakłóceń)
    - niską temperatura (małe szumy odbiornika, suche powietrze)
    - anteny wysoko umieszczone
    - brak przeszkód pomiędzy antenami
    W praktycznych zastosowaniach takie warunki nie występują. Zwykle jedną ze stron komunikujących się ze sobą jest smartfon/tablet/PC. One niestety mają odbiorniki o mniejszej czułości niż ten nRF. Anteny w nich też nie są też idealnie umieszczone. Zasięgi będą więc zdecydowanie mniejsze.

    Oczywiście masz bardzo dużo racji.
    Ja jestem niezmiernie ciekaw ile z tych deklarowanych 600-700 metrów można by uzyskać w warunkach operacyjnych....

    Pozdrawiam

  • #17 15 Maj 2017 11:42
    TvWidget
    Poziom 29  

    Film dotyczy nRF52840. To jest zupełnie inny układ niż ten jaki zastosowałeś.

  • #18 15 Maj 2017 12:52
    Freddy
    Poziom 43  

    mario_ka napisał:
    Jako detektor natężenia światła przylutowany został fotorezystor 5-10k GL5616
    Dlaczego nie zastosowałeś innego czujnika oświetlenia, np. któregoś z TSL, albo ISL?

  • #19 15 Maj 2017 19:29
    mario_ka
    Poziom 10  

    TvWidget napisał:
    Film dotyczy nRF52840. To jest zupełnie inny układ niż ten jaki zastosowałeś.

    Tak to prawda. Raczej nigdzie nie pisałem, że zastosowałem 840...

    Dodano po 1 [minuty]:

    Freddy napisał:
    mario_ka napisał:
    Jako detektor natężenia światła przylutowany został fotorezystor 5-10k GL5616
    Dlaczego nie zastosowałeś innego czujnika oświetlenia, np. któregoś z TSL, albo ISL?

    Witaj Freddy,
    Z kilku powodów:
    - niekompatybilne napięcia zasilania,
    - zbyt kosztowane,
    - niekonieczne w tej aplikacji.

    Pozdrawiam

  • #20 15 Maj 2017 19:34
    Freddy
    Poziom 43  

    No tego nie rozumiem - przykładowo
    ISL29006:
    0.5 lux to 10,000 lux range
    1.8V to 3.6V supply range, cena <$1 :)

  • #21 16 Maj 2017 09:11
    mario_ka
    Poziom 10  

    Freddy napisał:
    No tego nie rozumiem - przykładowo
    ISL29006:
    0.5 lux to 10,000 lux range
    1.8V to 3.6V supply range, cena <$1 :)

    Dzięki za wskazówkę.
    To może być super alternatywa gdy jest potrzeba pomiaru w pełnej dynamice.
    Póki co <$0,5 z vatem w detalu. :-)

    Pozdrawiam

  • #22 16 Maj 2017 09:40
    TvWidget
    Poziom 29  

    W podobnym komercyjnym czujniku użyty został OPT3002
    Bez dodatkowego filtru tłumiącego w jego dynamika (23-bit) jest zbyt mała do pracy w słoneczny dzień.
    Zdalny pomiar natężenia światła dla Raspberry Pi z Bluetooth 4.0 i BleMagic
    Przy wyborze sensora zwróć uwagę, że w zależności od zastosowania pomiar oświetlenia jest realizowany w różnych jednostkach (W/m² lub Lux).

  • #23 16 Maj 2017 21:42
    mario_ka
    Poziom 10  

    TvWidget napisał:
    W podobnym komercyjnym czujniku użyty został OPT3002
    Bez dodatkowego filtru tłumiącego w jego dynamika (23-bit) jest zbyt mała do pracy w słoneczny dzień.
    Zdalny pomiar natężenia światła dla Raspberry Pi z Bluetooth 4.0 i BleMagic
    Przy wyborze sensora zwróć uwagę, że w zależności od zastosowania pomiar oświetlenia jest realizowany w różnych jednostkach (W/m² lub Lux).

    Dzięki. Ten OPT3002 to już złożona maszyneria. Duże możliwości.

    Wiecie może gdzie PL można sensownie nabyć produkty Texasa?

    Pozdrawiam.

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Wyszukaj w ofercie 200 tys. produktów TME