Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'zephyr'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 1 wynik

  1. Mam ponad dziesięcioletni, chiński skuterek. Z racji wieku, oraz pochodzenia, niektóre rzeczy nie działają w nim idealnie - jedną z nich jest stacyjka. Od jakiegoś czasu problem z nią polega na tym, że przekręcenie kluczyka nie zawsze włącza zasilanie, a jak już zadziała, to delikatne ruszenie go powoduje zgaszenie silnika. Wyraźnie jakiś problem ze stykami. Za pierwszym razem rozebrałem całą stacyjkę i przeczyściłem styki, ale jest to dość skomplikowany proces, którego nieumiejętne przeprowadzenie skutkuje wyskoczeniem sprężyny i koniecznością zbierania części z całej podłogi. Potrzebne było jakieś inne rozwiązanie. Nie, nie mówię o wymianie na nową. Rozdział 2: Pomysł Mam telefon z Androidem. Mam dużo Raspberry Pi, w każdym smaku. PiPico ma Bluetootha. Mój telefon też. Kiedyś pisałem programy na Badę, programowanie "niskopoziomowe" nie jest mi też straszne. Może by tak podpiąć jakąś malinę do skutera i odpalać go zdalnie? Nie może to być zbyt trudne ( ͡° ͜ʖ ͡°) W razie czego, mam kogo prosić o pomoc. Rozdział 3: Założenia Po pierwsze, chcę, żeby skuter dało się też odpalać i gasić tak, jak zwykle - z kluczyka. Telefon prędzej ulegnie awarii niż kawałek naciętego metalu, więc tak będzie bezpieczniej. Po drugie, sterowanie ma iść przez Bluetootha i ma być możliwe tylko po wcześniejszym sparowaniu się urządzeń. Musi być też jakieś ograniczenie kto może sparować się z kontrolerem, żeby nie dało się porwać skutera. Po trzecie, kontroler ma czuwać na własnym zasilaniu, żeby nie rozładował akumulatora w skuterze. Po włączeniu zasilania lub odpaleniu może z niego korzystać żeby się podładować. Rozdział 4: Jak odpalić skuter? Podczas normalnego używania, skuter odpala się następująco: Wsadź kluczyk w stacyjkę i go przekręć Wciśnij hamulec Wciśnij i przytrzymaj przycisk rozrusznika Gdy silnik pracuje, puść przycisk rozrusznika Na schemacie widać, że rozrusznik kontrolowany jest przez przekaźnik, który podłączony jest szeregowo przez czujnik hamulca i przycisk rozrusznika. Wychodzi więc na to, że aby odpalić skuter potrzebne są 3 przekaźniki: Załączający zasilanie - symulowane przekręcenie kluczyka w stacyjce, Zwierający przewód na poziomie czujnika hamulca - symulowane wciśnięcie hamulca, Zwierający przewód na poziomie przycisku rozrusznika - symulowane wciśnięcie go. No dobra, ale jak zgasić skuter? No więc okazało się, że nie wystarczy wyłączyć zasilania. Ze stacyjki wychodzi przewód, na którym podczas pracy silnika jest napięcie ~60V. Przekręcenie kluczyka na zero powoduje jego zwarcie do masy. Wygląda więc na to, że zgaszenie silnika wymaga czwartego przekaźnika, który będzie rozwierał tę linię na czas pracy silnika. Musiałem przemyśleć jak go podpiąć, aby dalej możliwe było odpalenie i zgaszenie silnika używając tylko klucza. Rozdział 5: Lista zakupowa Od swojego mentora embeddowego usłyszałem, że jest taki fajny, miniaturowy kontroler, który ma bluetootha oraz można do niego łatwo podłączyć akumulatorek Li-Ion - Xiao BLE . Podobno PiPico nie jest zbyt energooszczędne, mózgiem projektu został więc Xiao. Skuter ma zasilanie 12V, kontrolery przeważnie działają na 5V/3.3V. Aby móc sterować skuterem potrzebna będzie mi garść przekaźników. Okazało się jednak, że przekaźniki mają wiele parametrów, takich jak napięcie sterowania, napięcie cewki... Znalezienie odpowiednich zajęło mi trochę czasu. Idealny przekaźnik może być sterowany napięciem 3.3V i ma cewkę na 3.3V lub 5V. Początkowo, gdy zaczynałem pracę nad projektem, myślałem, że wystarczą mi tylko dwa przekaźniki, ale na Botlandzie nie było dostępnych odpowiednich, stanęło więc na module z cewką 12V i logiką 5V. Do tego potrzebny był mi też konwerter poziomów logicznych oraz przetwornica step-up z 3.3V do 12V - na zasilaniu z akumulatorka tylko takie napięcie jest dostępne. Wymagania i możliwości prądowe przekaźnika i przetwornicy się pokrywały, więc nie przewidywałem problemów. W trakcie prac, oraz po podźganiu skutera miernikiem w różnych miejscach, okazało się jednak, że będę potrzebował więcej niż 2 przekaźniki, wróciłem więc do sklepu i zobaczyłem, że asortyment jest teraz większy. Zgarnąłem więc moduł 4 przekaźników (cewka 5V, logika 3.3-5V) które będą kontrolowały odpalanie i gaszenie silnika, oraz jeden pojedynczy (cewka 5V, logika 3.3V+), który będzie włączał zasilanie skutera i zasilany będzie z przetwornicy step-up z 3.3V do 5V. Z pozostałych rzeczy, zgarnąłem sobie garść przełączników (do debugowego wyłączania przekaźników - podpięte szeregowo za przełącznikami), kilka różnokolorowych kontrolek (bo blinkenlightsy są fajne), wyświetlacz OLED (początkowo do zabawy, później do wyświetlenia kodu parowania Bluetooth) oraz buzzerek, żeby słyszeć, że moduł działa. Rozdział 6: Oprogramowanie kontrolera Na początku prac myślałem o napisaniu programu w Pythonie, bo go dość dobrze znam, ale miałem problem z wydajnością rysowania na ekranie. Arduino IDE okazało się niewiele lepsze - ekran wyciągał chyba jedną klatkę na sekundę. Mentor Embeddowy doradził mi zabawę Zephyrem, więc poszedłem w tę stronę. Okazało się, że o ile początkowe skonfigurowanie wszystkiego było odrobinę skomplikowane, to późniejsze pisanie na Zephyrze jest dość proste i przyjemne. Dokumentacja jest ok, udostępniają też wiele przykładów jak używać każdego komponentu systemu-- ale jak to "nie ma sterownika do twojego ekranu"? Skoro nie ma sterownika, trzeba go napisać samemu! Podglądając jak napisany jest sterownik do podobnego wyświetlacza, oraz z dokumentacją mojego pod ręką, udało mi się uruchomić wyświetlacz. Można było przejść do prac nad główną częścią programu. Oprogramowanie kontrolera składa się z kilku modułów: QMBStarter - główna logika odpalania i gaszenia silnika, Sensors - odczyt wskazań z czujników (włączone zasilanie, czy silnik pracuje), Bluetooth - zarządzanie połączeniami Bluetooth i komunikacja z aplikacją, Notifications - obsługa ekranu, buzzera i LEDów na kontrolerze. Moduł QMBStarter (nazwa pochodzi od modelu silnika: QMB139) jest automatem skończonym/maszyną stanów. Żądanie z aplikacji powoduje poruszanie się pomiędzy stanami, zgodnie z określonymi regułami. Przykładowo, jeśli zasilanie jest wyłączone ( => jesteśmy w stanie POWERED_OFF ) i z aplikacji przyjdzie żądanie odpalenia silnika ( => przejście do stanu RUNNING ), ścieżka przez którą trzeba przejść jest jednoznacznie określona. Wracając do tematu parowania urządzeń Bluetooth. Pudełko z całym sprzętem planowałem ukryć gdzieś pod owiewkami skutera, dzięki czemu ekran nie byłby dostępny dla osób postronnych. Zawartość ekranu przez to mogła być uznawana za "tajną", stanęło więc na strategii parowania polegającej na przepisaniu kodu z wyświetlacza na telefon. Nikt niepowołany nie będzie w stanie wysyłać żądań do kontrolera, bo nie będzie sparowany, a nie będzie mógł się sparować, bo nie ma dostępu do ekranu. Ładnie i bezpiecznie. Pozostała więc... Rozdział 7: Obudowa Obudowa powstała na miniaturowej drukarce 3D Easythreed Nano - tania, ale jakość wydruku i obszar roboczy pozostawiają wiele do życzenia. Do zaprojektowania użyłem Autodesk Fusion, a slicingiem zajęła się CURA. Upchanie wszystkiego wymagało trochę kombinowania, ale udało się zmieścić. ...a potem okazało się, że lepiej będzie dać kable z tyłu i ekran z przodu... ...i w ten sposób wszystko zostało pięknie zapakowane (przy okazji: wydruk jednego pudełka w całości trwał jakieś 20 godzin ಠ_ಠ ) Rozdział 8: Android "Napiszę apkę na Androida!" - pomyślałem - "To nie może być przecież trudne!". No więc okazało się, że jednak jest. Nie dość, że wersji Androida jest milion, to jeszcze w międzyczasie zmienili język programowania jakim powinno się posługiwać, ciężko więc było początkującemu znaleźć dobre tutoriale. Z braku lepszych pomysłów, zagadałem do Internetowej Wyroczni (AKA ChatGPT): Hej, jak zrobić aplikację na Androida, która łączy się z urządzeniem Bluetooth, używając Kotlina? Hej, musisz zrobić tak i tak. Chcesz cały projekt? Tak, poproszę. Bla, bla bla bla... Chcesz wariant BLE? Tak, poproszę. Dzięki! Hej, a jak mogę zdefiniować filtry urządzeń Bluetooth? O w taki sposób. Dzięki. Jak zrobić, że po kliknięciu urządzenia włącza mi inne Activity? Bla bla bla... Jak patrzeć czy zmieniły się wartości charakterystyk GATT? Bla bla bla... Jak wysłać nową wartość do charakterystyki? Bla bla bla... Jak wyliczyć odległość od urządzenia Bluetooth? Bla bla bla... ...i tak dalej. ChatGPT okazał się świetnym narzędziem do nauki - był jak generator dokładnie takiego tutoriala, jakiego potrzebujesz. Odrobinę wiedziałem o tym jak działa Android, kojarzyłem też niektóre koncepty z programowania na smartfony, szybko więc "kliknęło" i byłem w stanie sam rozbudować aplikację i dodać do niej wszystko, czego potrzebowałem. Jedyny minus to strata honoru przez zastosowanie vibecodingu. Rozdział 9: Montaż i jazdaaaaaaa Pudełko planowałem wsadzić do skuterowego schowka pod kierownicą. Początkowo myślałem, że konieczne będzie wycięcie całego plastiku z tyłu, okazało się jednak, że wszystko idealnie mieści się bez tego. Jedyne co musiałem zrobić, to nawiercić kilka otworów na kable: Po podłączeniu wszystkiego, sprawdzeniu czy działa, oraz złożeniu skutera do kupy, można było zrobić jazdę testową: https://www.youtube.com/watch?v=KYT4AcXjoSQ Rozdział 10: Podsumowanie Zaczynając od dużej ilości lutowania, przechodząc przez naukę Zephyra, programowania mikrokontrolerów i Androida, kończąc na druku 3D i łączeniu kabelków, ten projekt zahaczył o wiele dziedzin. Wszystko po to, żebym mógł wyjść z samym telefonem do skutera i na nim pojechać, a potem po prostu odejść wierząc, że sam zgaśnie. Jest kilka rzeczy które można poprawić, takie jak jakość kodu (kontrolera i apki) czy bezpieczniejsze umiejscowienie pudełka (gąbki dookoła, żeby wibracje go nie zabiły). Największym problemem jest brak skutecznego wykrywania czy silnik pracuje (miałem z tym drobne problemy), ale generalnie jest to sukces i projekt uznaję za udany. Dokładniejszy opis wszystkich etapów prac, z zachowaniem lepszej chronologii, znajduje się na mojej stronie. W chwili pisania nie ma jeszcze ostatniej części, opisującej jak wyglądało finalne składanie wszystkiego, ale powinna się niedługo pojawić.
×
×
  • Utwórz nowe...