Skocz do zawartości

Sinozębny szuka pilota i kluczy


Pomocna odpowiedź

Do oglądania "telewizji" używam Xiaomi Mi Box S, który nie ma przycisków. Więc jak zaginie pilot, nie ma szansy na oglądanie. Pilot może zaginąć przez przypadek, ale może też zostać schowany przez kogoś (trójka dzieci ma różne pomysły), bo wiadomo, kto ma pilota ten ma władzę. 

W ten sposób narodził się pomysł na jakieś urządzenie do szukania pilota i/lub innych rzeczy np: kluczy. Założenia są dość proste, urządzenie powinno być:

  • w stanie wydawać w miarę głośny dźwięk
  • najmniejsze jak się da
  • zasilane bateryjnie
  • uruchamiane z telefonu (bo ten znajduje opaską, którą mam zawsze na ręku)

Przy tych założeniach stwierdziłem, że najlepiej sprawdzi się jakiś moduł Bluetooth Low Energy zasilany przez pastylkę CR2032. Do realizacji wybrałem układ nRF52840:

nRF52840.thumb.png.3ce6f924cc93050dd2a2331605ef2f5f.png

Oczywiście nie chcę lutować BGA i bawić się antenami więc planuje zastosować moduł E73-2G4M08S1C:

E73-2G4M08S1C.pdf

image.thumb.png.3da8e2c2307a544e509d4edd516c8357.png

image.thumb.png.7f74e45e0faa410eff3eae85a5aeadab.png

image.thumb.png.0029687f03d1162869ce4b092529d533.png

W module zintegrowane są już cewki potrzebne do poprawnej pracy anteny i umożliwiające działanie układu nRF52840 w trybie low voltage DC/DC.

Od strony software'owej mogłem wykorzystać klasyczny nRF SDK5 lub nowy nRF Connect SDK. Zdecydowałem się na drugą opcję, bo chcę bliżej poznać Zephyr RTOS. Uruchomiłem kilka przykładów i miałem już umiem obsłużyć "advertising" BLE, nawiązanie połączenia i uruchomienie PWMa z komórki na nRF52840 Dongle. Stwierdziłem jednak, że chciałbym dodać jeszcze obsługę przycinków i ledów, dodać pomiar napięcia baterii oraz koniecznie zoptymalizować to pod kątem zużycia prądu. I wtedy jak zagłębiłem się w SDK znalazłem: Common Application Framework. Chyba na tym będę upierał swoje rozwiązanie. Muszę znów się douczyć. Pracy sporo, ale rozwiązanie wydaje się najlepsze z punktu widzenia edukacyjnego i "maintenance".

Tematy, które zostawiam na później. Update firmware'u po Bluetooth i uwierzytelnianie. Sam CAF obsługuje szyfrowanie (BLE security level 2).

Jeśli chodzi o dźwięk, to wstępne eksperymenty skłaniają mnie raczej do brzęczyka piezo w układzie rezonansowym z cewką: 

 

Link do komentarza
Share on other sites

14 godzin temu, pmochocki napisał:

najmniejsze jak się da

To pewnie to będzie mniejsze i szkoda 52840 to takich prostych zadań. Tylko on nie ma oscylatora 32k, tam coś trzeba zmienić w programie, żeby to ogarnął. Zawsze jest jeszcze AoA i AoD, ale to nie żaden z tych układów.

Edytowano przez matsobdev
Link do komentarza
Share on other sites

(edytowany)
8 godzin temu, matsobdev napisał:

To pewnie to będzie mniejsze

Bardzo fajny pomysł. 

To typowy moduł UART-BLE. W sumie to najchętniej wgrabym inny firmware i używał nRF52805 bezpośrednio. Niestety tym razem Ebyte nie dołączył schamtu a to utrudnia wybór trybu zasinia. Ale muszę jeszcze przestudiować dokumentację tego chipa. 

8 godzin temu, matsobdev napisał:

Tylko on nie ma oscylatora 32k

W tym module co ja proponowałem też nie ma, ale tan dało się umieścić na PCB, wyprowadzenia były fajnie umieszczone. 

8 godzin temu, matsobdev napisał:

Zawsze jest jeszcze AoA i AoD, ale to nie żaden z tych układów.

Przepraszam nie rozumiem. Możesz rozwinąć? 

Edytowano przez pmochocki
Link do komentarza
Share on other sites

1 godzinę temu, pmochocki napisał:

utrudnia wybór trybu zasinia

Można porównać z innymi modułami z tym układem - pobór prądu, czy to jest tylko LDO, czy DC/DC. Na zdjęciu na stronie producenta, pod czapką w prawym dolnym rogu, strzelam, że to cewka. Tylko układy bez USB maksymalne napięcie 3,6 V.

 

1 godzinę temu, pmochocki napisał:

To typowy moduł UART-BLE.

Zawsze na starcie coś już działa 😄

1 godzinę temu, pmochocki napisał:

Możesz rozwinąć?

Całe te 5.1(?) - Direction Finding. Google pewnie więcej wie ode mnie, ale ogólnie lokalizacja nie tylko mocą odbioru, czy tam zmierzonej w odległości 1 m wartością, ale już pełną gębą albo jedną anteną, albo macierzą anten sprzętowe przez BT ustalanie kierunku skąd przychodzi sygnał. O coś takiego jeszcze.

Edytowano przez matsobdev
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Zgodnie z zaleceniem @matsobdev zamówiłem inne moduły, tym razem oparte na nRF52805:  holyiot-21031 

image.thumb.png.2743743d03a63b956c1219943bb1a4c0.png image.thumb.png.306dd30a98f9bb47336ccca220560ac3.png

Wielkość 7mm/9mm/2.2mm. Możliwość podłączenia kwarcu zegarkowego. Podejrzewam, że nie ma podłączonego indukcyjności, aby działać w trybie DC/DC, ale jakoś to przeżyje.

Rozpoczynam projekt płytki PCB, aby podłączyć nogi i kontynuować eksperymenty na płytce stykowej.

Potem następujące zagadnienia będę po kolei rozmieniał:

  1. Zasilanie
  2. Buzzer
    • SW PWM
    • HW z indukcyjnością 
  3. ADC dla monitorowania stanu baterii
  4. Oprogramowanie BLE
  5. Złożenie prototypu
  6. BLE Security 
  7. Update over AIR

 

 

 

Link do komentarza
Share on other sites

Ebyte ma DC/DC, ten pewnie też, na zdjęciach prawy dolny róg, coś dużego jest. No i jeszcze mniejszy, kurczę, ale coś za coś. Ebyte ma 70 m zasięgu w danych katalogowych, ten już tylko 30, co nie znaczy, że źle, a idealnie bez przeszkód, to ze 200 by każdy wyciągnął przy dwóch takich samych modułach.

  • Lubię! 1
Link do komentarza
Share on other sites

7 minut temu, matsobdev napisał:

Ebyte ma DC/DC, ten pewnie też, na zdjęciach prawy dolny róg, coś dużego jest.

Obawiam się, że to duży kondensator, ale właśnie czytam jak to SW sprawdzić, więc się okaże. 

8 minut temu, matsobdev napisał:

Ebyte ma 70 m zasięgu w danych katalogowych, ten już tylko 30, co nie znaczy, że źle, a idealnie bez przeszkód, to ze 200 by każdy wyciągnął przy dwóch takich samych modułach.

Zobaczymy - jak będą problemy będę kombinował. Zmiana modułu i przeprojektowanie PCB to nie brzmi jak jakiś problem. Może zamówię sobie Ebyte do porównania, ale na razie jest się czym bawić.

 

Link do komentarza
Share on other sites

Zmieniłem trochę routing:

image.thumb.png.d7648ffafa160140c88eb00975c1706c.png image.thumb.png.2b494f3a29e18486ffe493b47289cefa.png

Piny 17,18,19,20 podłączone do masy mają teraz taki charakterystyczny grzebień. Chodziło o to, aby podczas lutowania moduł sam "wskakiwał" na miejsce. Ścieżka pinu 5 jest węższa i specjalnie routowana. Tak samo z uwagą trzeba routować ścieżkę pinu 6 (VDD). Dlatego dodałem tam żółty kwadracik aby o tym nie zapomnieć. Czemu takie zamieszanie:

image.thumb.png.3cfda40800db4e4366b549e6a75d9935.png

Dopiero po zakupieniu modułów skapnąłem się, że producent nie ma zaleconego footprintu, czy nawet udokumentowanej wielkości padów. A to, że metalowa obudowa przebiega 0.1mm od pada to był totalny szok.

Udało się przylutować:

426450124_WhatsAppImage2023-01-30at09_49_06.thumb.jpg.94030859d80b595d45b5ce3be8b794e4.jpg

Muszę trochę poprawić ustawienia drukarki i sposób trawienia...

 

 

 

  • Lubię! 1
Link do komentarza
Share on other sites

Może mały update z mojej strony. Gdy bawiłem się nRF52840 wszystko wydawało się proste, bo też użyłem potężnego układu do banalnie prostej rzeczy. Ale jak sugerował @matsobdev 

Dnia 10.01.2023 o 12:48, matsobdev napisał:

szkoda 52840 to takich prostych zadań

Wybrałem dużo mniejszy układ nRF52805, który ma 5x mniej pamięci flash i 10x mniej ramu. 

image.thumb.png.0ce34d4fd05a5b3402e795a3a3ffe547.png

Przy próbie skompilowania przykładu BLE peripherial na nowym na nowym nRF Connect SDK z Zephyr OS mam region `RAM' overflowed by 2320 bytes:

image.thumb.png.368d912fb6f2c42340198c2787c9a1fb.png

Wziąłem więc zainstalowałem NFR5 SDK i użyłem środowiska Segger do kompilacji analogiczneczo przykładu. Ta sama funkcjonalność, ale zaimplementowana w innym SDK bez Zephyr OS - tylko 54% zużycia RAMu:

image.thumb.png.3b5831b816a2650795987118f1d49cbe.png

Dla formalności dodam, że oba przykłady są kompilowane dla nRF52810, dlatego że w zarówno w starym jak i nowym SDK najnowszy układ low cost nRF52805 jest traktowany po macoszemu.

Bardzo możliwe, że można w nowym nRF Connect SDK jakoś zoptymalizować całość, ale na razie projekt trochę utknął więc przerzucam się na stare NRF5 SDK i postaram się ożywić mój moduł.

 

 

  • Lubię! 1
Link do komentarza
Share on other sites

Dnia 13.02.2023 o 23:12, pmochocki napisał:

więc przerzucam się na stare NRF5 SDK i postaram się ożywić mój moduł.

No i znów zaczynają się schody - jeśli chodzi o PWM, to:

image.thumb.png.f805b74f5a0c1e7365bf6bf416024d21.png

W NRF Connect SDK jest SW PWM w którym bez problemu wyciągałem 4 kHz:

image.thumb.png.f2b4f84de1658bbdfe9ade751a893718.png

W starym NRF5 SDK w low power PWM jestem w stanie wyciągnąć maksymalnie 1.6 kHz:

image.thumb.png.1272906bbc95c6cc4bfff8a63e1dc68b.png

Co ogólnie jest oczekiwane i wynika z różnic implementacyjnych i potwierdzone jest w postach na NRF DevZone:

image.thumb.png.22ddf2d1833af5d6a3c4ddeaa5bd5cb5.png

Należy nadmienić, że nRF52805, który chcę użyć jest tak low cost, że nie ma HW PWMa 🙂 . Wygląda więc na to, że jak chcę oprogramować ten moduł w starym NRF5 SDK muszę sam napisać jakieś rozwiązanie. 

  • Lubię! 2
Link do komentarza
Share on other sites

W temacie nRF to jestem jak dotąd "teoretykiem" - zaciekawiony coś tam przeczytałem 😄 Pytanie do praktyka. Dobrze myślę, że SoftDevice to po prostu stos Bluetooth by Nordic? Czy tam nie tylko BT, to tam mają więcej rzeczy na pokładzie scalaka.

Edytowano przez matsobdev
Link do komentarza
Share on other sites

10 godzin temu, matsobdev napisał:

Dobrze myślę, że SoftDevice to po prostu stos Bluetooth by Nordic? Czy tam nie tylko BT, to tam mają więcej rzeczy na pokładzie scalaka.

SoftDevice to tylko lub aż stos Bluetooth by Nordic dla ich scalaków. Dodatkowe elementy to niezbędne API dla użytkownika i biblioteka do sterowania scalakiem:

image.thumb.png.8636fc8dfa47be70f372ed6a1fb021b5.png

W zależności od potrzebnej roli i scalaka wybiera się wersję SoftDevice:

image.thumb.png.d9b0a52e09b2ecaed20fedce79a18a40.png

Ja używam S112. Trzeba jednak pamiętać, że włączenie SoftDevice powoduje znaczne ograniczenia jeśli chodzi o dostępne peryferia. Dla S112 mamy:

image.thumb.png.81491c0814b7c79a13220d33604580e8.png

Zmienia się mapping pamięci zarówno Flesh i RAM:

image.thumb.png.1e3d4c4a58435e8de08c5a925f61dc05.png

Część priorytetów przerwań jest zajętych i szczególnie trzeba uważać co przydziela się do priorytetów 2 i 3:

image.thumb.png.f5865a2c0fe61ccc447c11243aa25d1d.png

Są jeszcze inne ograniczenia, które dopiero poznaje. Takie jak używane przez SoftDevice kanały "Programmable peripheral interconnect"

 

 

 

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.