Spisu treści:

LED POVstick z Bluetooth Low Energy: 10 kroków (ze zdjęciami)
LED POVstick z Bluetooth Low Energy: 10 kroków (ze zdjęciami)

Wideo: LED POVstick z Bluetooth Low Energy: 10 kroków (ze zdjęciami)

Wideo: LED POVstick z Bluetooth Low Energy: 10 kroków (ze zdjęciami)
Wideo: The Blues Brothers (1980) - Everybody Needs Somebody to Love Scene (6/9) | Movieclips 2024, Listopad
Anonim
LED POVstick z Bluetooth Low Energy
LED POVstick z Bluetooth Low Energy

Ta instrukcja pokazuje, jak zbudować lightwriter stick z diodami LED RGB, którym można sterować za pomocą BLE z telefonu!

Teraz, gdy zaczyna się ciemna pora roku i musisz robić zdjęcia z długimi ekspozycjami: za pomocą tego kija możesz wpisać swój podpis na zdjęciu, cytat motywacyjny, deklarację miłości, kod QR, adres internetowy lub wiele innych inne rzeczy…

Obejmuje kilka tematów rozwoju:

  • budowanie sprzętu
  • programowanie chipsetu Cypress BLE za pomocą C
  • stwórz własną aplikację, aby nią sterować.

Krok 1: Sprzęt do BLE-LED-Stick

Sprzęt do BLE-LED-Stick
Sprzęt do BLE-LED-Stick
Sprzęt do BLE-LED-Stick
Sprzęt do BLE-LED-Stick
Sprzęt do BLE-LED-Stick
Sprzęt do BLE-LED-Stick
Sprzęt do BLE-LED-Stick
Sprzęt do BLE-LED-Stick

Do kija potrzebujesz:

  • Moduł cyprysowy BLE (CY8C4247LQI-BL583)
  • WS2812b RGB-LED-Strip (64 diody z 144 diod LED na metr)
  • akumulator Li-Ion z odpowiednim uchwytem (18650)
  • przycisk
  • kawałek deski do krojenia chleba

Osprzęt samego kija jest dość prosty.

Moduł Cypress BLE jest zamontowany na kawałku płytki stykowej, a diody LED, przycisk i zasilacz są po prostu podłączone do tej płytki stykowej.

Całość jest montowana, sklejana lub przykręcana do małego kawałka drewnianej listwy, który sam jest częściowo włożony w przezroczystą tubę z poliakrylu. Ale to nie jest konieczne. Chciałem zamontować wszystko wewnątrz tuby, ale nie znalazłem odpowiedniego dla modułu BLE i baterii, które są dość duże w porównaniu do diod LED. Do pierwszego strzału nie potrzebujesz akrylowej tuby.

Krok 2: Montaż elektroniki

Montaż elektroniki
Montaż elektroniki
Montaż elektroniki
Montaż elektroniki

Ten krok pokazuje, jak montowany jest moduł BLE i które piny są używane do jakich celów.

Podobnie jak w kilku moich Instructables, użyłem zestawu rozwojowego Cypress BLE. Skrócona instrukcja obsługi CY8CKIT-042-BLE

Aby moduł działał samodzielnie, wystarczy podłączyć źródła zasilania i wykorzystane piny.

W naszym projekcie używamy tylko pinu 3.5 do napędzania taśmy LED. Ale oczywiście możesz to zmienić dzięki PSoC Creator.

Jak widać na zdjęciu PCB, dodałem główki szpilek we wszystkich rogach chipa, ale pominąłem pin VREF.

Dzięki temu moduł jest prawidłowo zamontowany i nie da się pomylić modułu.

Krok 3: Jak wygenerować czcionki?

Jak wygenerować czcionki?
Jak wygenerować czcionki?

Cóż, myślę, że to był jeden z najciekawszych problemów, jakie rozwiązałem podczas tego projektu.

Oczywiście można po prostu zaprojektować nową czcionkę i zapisać ją w tablicy, ale to naprawdę dużo pracy!

Więc co zrobiłem?

Wiedziałem, że potrzebuję konwersji ASCII na bitmapę szesnastkową. I miałem szczęście, bo nie byłem pierwszy z tym problemem!:-)

Oprogramowanie „GLCD Font Generator” zrobiło właściwą rzecz:

Ponieważ chciałem jak najlepiej wykorzystać diodę LED, zaimportowałem czcionkę w dość dużym rozmiarze (~32 piksele). Jeśli używasz tylko wielkich liter, nie musisz przejmować się wzniesieniami, które zwiększą widoczny rozmiar czcionki o kolejne kilka pikseli. Ale zdecydowałem się użyć zarówno wielkich, jak i maleńkich liter. (https://en.wikipedia.org/wiki/Ascender_%28typografia%29)

Po zaimportowaniu czcionki do generatora czcionek GLCD możesz wyeksportować ją w różnych formatach.

Próbowałem wyeksportować go bezpośrednio do nagłówków, co było dobre, ale nie idealne. Wynikowy eksport to tablica krótkich znaków (16-bitowych) z wartościami bajt-szesnastkę dla kolumn dla każdego znaku pierwszego znaku 128-ascii. Nie do końca to, czego chciałem lub potrzebowałem…

Zaimportowałem więc tablicę do arkusza kalkulacyjnego w otwartym biurze. Następnie usunąłem "0x" na trzech z czterech wartości i połączyłem je w jedną 32-bitową wartość. Naprawiłem również nieprawidłową endiacyjność poszczególnych bajtów.

Wynikowa tablica jest tablicą N*M z 32-bitowymi wartościami. M to odpowiedni znak, a N to kolumny, które składają się na wyświetlanie tej litery. W tym pierwszym szkicu wszystkie znaki mają tę samą liczbę kolumn, co oznacza, że wszystkie litery są tak samo szerokie, jak w dobrze znanej czcionce Courier. Małe znaki, takie jak „i” lub „t”, wyglądają, jakby zagubiły się w przestrzeni.

Dlatego dodałem nowy parametr na początku każdego znaku, aby powiedzieć, ile kolumn ma ten znak lub jak szeroki jest ten znak. Oszczędza to pamięć i poprawia wygląd tekstu!

Krok 4: Oprogramowanie sterujące BLE

Oprogramowanie sterujące BLE
Oprogramowanie sterujące BLE

Zasada działania oprogramowania BLE jest bardzo prosta:

  • Na początku po prostu nic nie robi.
  • Za pomocą BLE możesz ustawić różne animacje lub teksty, które mają być wyświetlane.
  • Po naciśnięciu przycisku wyświetlane są poszczególne kolumny animacji lub tekstu.
  • Po wyświetleniu tekstu kontynuuje oczekiwanie.

Po prostu zaimportuj projekt cyprysowy do swojego PSoC-Creator i zmodyfikuj go, jeśli chcesz.

PSoC-4 ma niewiele pamięci RAM i pamięci flash, aby móc przechowywać pełne obrazy RGB czcionek. Dlatego potrzebowałem sposobu na dynamiczne generowanie treści LED z tekstu. To całkiem proste, jak dotąd nic specjalnego. Z tekstu zawierającego wiele liter algorytm pobiera jedną literę i konwertuje ją na tablicę bitmapową czarno-białą. Następnie pobiera każdą kolumnę tej jednoliterowej mapy bitowej i zamiast białego zapisuje bieżący kolor RGB na tablicy LED. W ten sposób można generować teksty jednokolorowe lub za pomocą dodatkowej funkcji zmieniać kolor po każdej kolumnie, po każdej literze, a nawet po każdym pikselu.

„Litera” może być przechowywana w zmiennej jednobajtowej, podczas gdy czarno-biała bitmapa musi być przechowywana w jakiejś tablicy.

Struktura danych jest następująca:

Ciąg: nowy tekst = "Witaj";

Czcionka: uint32 znaków = { FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn, … SecondCharacter_ColumnCount, SecondCharacter_FirstColumn, … … LastCharacter_ColumnCount, … LastCharacter_LastColumn }; Kolor: uint32 rgbcolor = 0xHHBBGGRR; // Jasność, niebieski, zielony, czerwony każdy jako wartość 8-bitowa

Aby przekonwertować ciąg do wyświetlania, wykonujemy następujące czynności:

pobierzCharacter(): H (8bit)

getColumn(int i): column (32bit) (i zaczyna się od pierwszej kolumny, biegnie do ostatniej.) if(bit w kolumnie to 1) LED w Strip jest ustawiony na kolor. LED-Strip Array to 64 diody LED z 32-bitowymi kolorami każda!

A jeśli ta kolumna jest wyświetlana, przechodzimy do następnej.

To takie proste.

Krok 5: Pierwszy test

Pierwszy test
Pierwszy test
Pierwszy test
Pierwszy test
Pierwszy test
Pierwszy test

Teraz, gdy oprogramowanie działa, jesteśmy gotowi do pierwszych testów.

Najłatwiejszym sposobem przetestowania wbudowanej funkcji jest użycie aplikacji testowej Bluetooth. Podobnie jak aplikacje Nordic lub Cyprys.

Skandynawia: nRF Connect dla urządzeń mobilnych

Cyprys: CySmart

Uruchom Pov-Stick i obserwuj, jak będzie wyświetlany ciąg demonstracyjny. Po zakończeniu nadszedł czas, aby uruchomić aplikację. Wyszukaj urządzenie Povstick i kliknij Połącz.

Po nawiązaniu połączenia aplikacja automatycznie wykrywa wszystkie zdefiniowane usługi i cechy.

Poszukaj pierwszej usługi (powinna zaczynać się od 0000ccce…). Kliknij go, aby go otworzyć i wyświetlić pierwszą charakterystykę (zaczyna się od 0000ccc1). Następnie naciśnij przycisk zapisu (lub prześlij) i wpisz 01 do tej cechy.

Po naciśnięciu wyślij POVstick uruchomi animację Color-Knight-rider, czyli skaner Larsona, ze zmieniającymi się kolorami.

Gratulacje, że przesłałeś swoją pierwszą wartość przez BLE!

Krok 6: Wybierz animacje

Wybierz animacje
Wybierz animacje
Wybierz animacje
Wybierz animacje
Wybierz animacje
Wybierz animacje
Wybierz animacje
Wybierz animacje

W programie zdefiniowaliśmy enum „e_Animation” o następujących wartościach:

typedef enum { Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation, Animation_Max } e_Animation;

Są to wartości, które obowiązują dla charakterystyki ccc1. Jeśli chcesz zobaczyć animację CandyCane, musisz napisać 4, 5 lub 6 do tej cechy. Różnią się kolorami.

Dwie specjalne animacje to RGB_Control i TextAnimation. Jeśli zdecydujesz się je aktywować, kij oczywiście na początku nic nie pokaże. Ale oferuje dodatkowe opcje sterowania drążkiem z innymi usługami.

Krok 7: Sterowanie RGB

Sterowanie RGB
Sterowanie RGB
Sterowanie RGB
Sterowanie RGB
Sterowanie RGB
Sterowanie RGB
Sterowanie RGB
Sterowanie RGB

RGB-Control można bardzo łatwo przetestować za pomocą aplikacji CySmart, ponieważ użyłem tego samego UUID dla tej cechy, co w Cypress Demo.

Uruchom aplikację CySmart i połącz się z Povstick. Najpierw musisz wpisać "0x0A" do charakterystyki ccc1.

0x0A to wartość szesnastkowa dla 10, która jest animacją RGB-Control w wyliczeniu.

Następnie możesz przełączyć się na panel sterowania RGB-LED w aplikacji CySmart. Być może musisz ponownie uruchomić aplikację, aby dostać się do tego ekranu. Następnie możesz kontrolować kolor wszystkich diod LED za pomocą tego schematu RGB.

Oczywiście możesz również wpisać wartości bezpośrednio do charakterystyki.

Krok 8: Usługa Text_Animation i usługa trwałego przechowywania

Usługa Text_Animation i usługa trwałego przechowywania
Usługa Text_Animation i usługa trwałego przechowywania

Te usługi nie są tak łatwe do przetestowania.

Z technicznego punktu widzenia możesz również użyć do tego aplikacji nordic, ale musisz wiedzieć, jakie wartości wpisać do której cechy.

Jeśli więc chcesz je przetestować, powinieneś rzucić okiem na projekt PSoC, którego charakterystyka ma dany UUID.

Ważnym elementem jest charakterystyka „Set-Speed”. Dzięki tej charakterystyce możesz kontrolować szybkość animacji.

Dzięki charakterystyce „Set_Animation” usługi PersistentStorageService można kontrolować czcionki i kolory ciągu tekstowego. Prawidłowe wartości są zdefiniowane w "povanimation.h", dwie czcionki "mono" i "serif" oraz jednokolorowe i tęczowe. Wartości 0 i 1 wyświetlają tekst w stałym kolorze, kontrolowanym za pomocą charakterystyki RGB_Control. Wartości 2 i 3 zmieniają kolor każdej kolumny i nadają ciągowi ładną tęczę.

Usługa "Write_Text_Service" jest trochę inna. Możesz zapisać nowy ciąg do urządzenia, wpisując poszczególne znaki do charakterystyki „Set_Character”. Przy każdym zapisie otrzymasz powiadomienie o aktualnej długości ciągu.

Aby rozpocząć nowy ciąg, napisz „true” do „Clear_String”.

Nie jest to najlepsza implementacja, ale działa dla dowolnego ciągu do 250 znaków bez zmiany rozmiaru MTU.

Wyświetlenie nowej struny ze startem po naciśnięciu przycisku na Povsticku.

Krok 9: Uruchom aplikację na Androida

Jest to ważny krok, ale wykracza poza zakres tej instrukcji. Przepraszam za to!

Może mogę przesłać moją testową aplikację do sklepu z zabawkami, ale nie jest jeszcze gotowa ani nie można jej wydać.

Krok 10: Napisz wiadomości na zdjęciach

Napisz wiadomości na obrazkach
Napisz wiadomości na obrazkach
Napisz wiadomości na obrazkach
Napisz wiadomości na obrazkach
Napisz wiadomości na obrazkach
Napisz wiadomości na obrazkach

Cóż, właśnie dlatego buduję ten povstick w pierwszej kolejności: do pisania wiadomości na obrazkach.

Potrzebujesz statywu, aparatu z funkcją długiego naświetlania i dobrej lokalizacji.

Ustaw kamerę i dostosuj czas ekspozycji do 10 s dla pierwszego testu.

Zwolnij przycisk i zacznij przechodzić przez obraz, uruchamiając wyświetlanie tekstu na drążku.

Et Voila, tam jesteśmy!

Dzięki odpowiedniej kombinacji jasności LED, przysłony i czasu naświetlania możliwe jest nawet robienie zdjęć o świcie.

Trzy zdjęcia w tym kroku pokazują pełne spektrum możliwości.

W pierwszym diody LED są prześwietlone i tworzą magiczną poświatę. Ale właśnie dlatego odbicia na ziemi są widoczne, a tło jest raczej dobre.

Drugi obraz jest naświetlony dla diod LED, ale to pozostawia całkowicie czarne tło.

A trzeci pokazuje dość słabe diody tuż po zachodzie słońca. Diody są tak samo jasne jak na innych zdjęciach, ale otoczenie było tak jasne, że musiałem użyć niskiej przysłony i niskiego ISO, aby diody wydawały się raczej ciemne.

Konkurs Make It Glow 2018
Konkurs Make It Glow 2018
Konkurs Make It Glow 2018
Konkurs Make It Glow 2018

II nagroda w konkursie Make it Glow 2018

Zalecana: