Skuterowy starter, część 1

Co zrobić, jak styki w stacyjce skutera zaśniedziały, a ty masz mikrokontroler z bluetoothem?

Odpowiedź: Zrobić urządzenie, które pozwoli ci uruchomić silnik używając telefonu.

Kontekst

Mam chiński skuterek, w którego stacyjce styki czasem nie stykają. Jestem fanatykiem Raspberry Pi, mam też kilka Raspberry Pi Pico. Stwierdziłem - czemu by nie pobawić się w zrobienie układu, który będzie potrafił po pierwsze włączyć zasilanie (równoważne przekręceniu kluczyka w stacyjce), a następnie zakręcić rozrusznikiem?

Lista zakupowa

  • Seeed XIAO BLE nRF52840 Sense - mikrokontroler z bluetoothem
  • Ekran OLED - do wyświetlania stanu, głównie debugowo
  • Bzyczek - do robienia hałasu, głównie debugowo
  • Dwa przekaźniki - sterowane napięciem 3.3V
  • Przetwornica step-up do 5V - do zasilenia przekaźników mając tylko dostęp do 3.3V
  • Czujnik natężenia prądu - do wykrycia czy silnik się odpalił
  • Płytki stykowe, przewody, przewody, przewody...
  • Dodatkowo: Seeeduino Xiao Expansion Board - dla łatwiejszego resetowania kontrolera i ewentualnego debugowania
  • Dodatkowo: Raspberry Pi Pico - jako programator

Założenia

Początkowo planowałem napisać program w Pythonie, ale był problem z dostępnością sterowników do wszystkiego. Potem testowałem Arduino IDE, ale wyświetlacz wyciągał jedną klatkę na sekundę. Finalnie stanęło na pójściu na całość i ogarnięciu Zephyra - na szczęście miałem kogo prosić o pomoc.

Stan prac

qmbstarter_whole_1.jpg

Aktualnie mam piękną pajęczynę na płytce stykowej. Miałem problem z wyświetlaczem, bo:

  1. Zephyr nie ma sterownika do ekranu SSD1331
  2. Dokumentacja ekranu nie jest zbyt oczywista i trochę zajęło mi ogarnięcie w jakim formacie wysyłać piksele

Żeby móc osiągnąć to: qmbstarter_display_1.jpg

Musiałem przejść przez:

qmbstarter_display_2.jpg qmbstarter_display_3.jpg qmbstarter_display_4.jpg qmbstarter_display_5.jpg ^ Czcionka wyrenderowana do bitmapy i przerobiona na zwykłą tablicę bajtów, bo zwykły font TTFowy zajmuje więcej, niż mam dostępnej pamięci na kontrolerze.

Pisanie w C po latach używania C++ jest ciekawym przeżyciem i pozwala docenić wszystkie bajery tam dostępne (jak chociażby std::vector=D )

Komentarze