Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bluetooth Car - zdalnie sterowany samochód.

gh00st 22 Gru 2013 19:58 23091 24
  • Bluetooth Car - zdalnie sterowany samochód.

    Witam.

    Jestem studentem Politechniki Gdańskiej. W tym semestrze jako projekt wykonywany w ramach zajęć wymyśliliśmy sobie zdalnie sterowany samochód za pomocą smartfona. Projekt wykonuję razem z kolegą, a ponieważ jest on już praktycznie ukończony, czas na prezentację :)

    Główne założenia projektu:
    - Sterowanie za pomocą Bluetooth,
    - Sterownik steruje dwoma serwomechanizmami (przyspieszenie, skręt).
    - W pełni konfigurowalny sterownik: trymery, ustawienie punktu 0, ustawienie położeń awaryjnych.
    - Sterownik posiada zabezpieczenia przed utratą łączności i zawieszeniem się procesora(watchdog).
    - Wykorzystanie czujników telefonu do sterowania.

    W ramach projektu powstały:
    - Elektronika sterownika: układ oparty o mikrokontroler Atmega8 oraz moduł bluetooth z USART(profil SPP),
    - Oprogramowanie sterownika.
    - Aplikacja na system Android sterująca sterownikiem.


    Przebieg prac:

    1. Poszukiwania.

    Żeby było czym sterować zaczęliśmy od znalezienia podwozia. Jako że ciężko później było by się podzielić stwierdziliśmy, że zakupimy 2 oddzielne (każdy swoje).
    Po poszukiwaniach na znanej platformie handlowej kolega zakupił samochód elektryczny, a ja spalinowy.

    W trakcie, gdy szły do nas podwozia, poszukaliśmy jeszcze modułów bluetooth.
    Ja zakupiłem BTM-222, natomiast kolega HC-06.

    2. Elektronika:

    Podczas oczekiwania na części zabraliśmy się za projektowanie elektroniki.
    Założenia były takie: dwa wyjścia PWM(do serwomechanizmów), podłączenie modułu bluetooth(USART), zasilanie ze stablilzatora LDO (5V), pomiar napięcia baterii(ADC) - pobór z dzielnika napięcia.
    Dodatkowo wyprowadzenie I2C(do podłączenia akcelerometru - opcjonalnie), wyprowadzenie na golpiny wolnych pinów procesora(np. do sterowania światłami :) ).
    Zaprojektowane zostały płytki pod oba moduły.

    3. Wsad mikrokontrolera:

    Po złożeniu prototypowego układu nadzszedł czas na oprogramowanie go.
    Obsługa wszystkich elementów odbywa się w przerwaniach.
    Sterowanie odbywa się za pomocą pakietów danych z sumą kontrolną CRC(z tąd pewność, że przekłamane pakiety nie będą wpływać na sterowanie).
    Odbiór pakietu realizuje przerwanie odbioru danych USART. W tym przerwaniu także przepisujemy dane sterowania do odpowiednich rejestrów.
    Nad ciągłością transmisji czuwa timer, który ustawia tryb awaryjny. Każdy odebrany poprawny pakiet sterowania resetuje timer.




    Ustawienia trymerów, punktu zerowego i awaryjnego przechowuje pamięć EEPROM.

    4. Aplikacja mobilna:

    Aplikacja mobilna zawiera takie elementy jak wyszukiwanie urządzeń, łączenie/rozłączanie, sterowanie oraz ustawienia.
    Sterowanie samochodzikiem odbywa się przy wykorzystaniu akcelerometru w telefonie(wykrywanie orientacji urządzenia).
    Skrętem sterujemy przechylając urządzenie jak kierownicą. Przyspieszeniem steruje się suwakiem na ekranie urządzenia, który po puszczeniu powraca do punktu zerowego (z początku chcieliśmy wykorzystać przechylenie urządzenia przód tył, lecz nie jest to zbyt wygodna metoda sterowania).
    W ustawieniach z początku odczytujemy z urządzenia parametry, które możemy zmieniać suwakami. Na koniec mamy guzik zapisz, który zapisuje ustawienia w pamięci EEPROM. W przypadku nie zapisania nowe ustawienia będą działać do resetu sterownika.

    Kosztów samochodu nie będę przytaczał, bo to rzecz indywidualna.

    Koszty sterownika:
    Moduł bluetooth(wersje na płytce z pinami, stabilizatorem i konwerterem napięć):
    - BTM-222 - 70 zł
    - HC-06 - 50 zł
    Laminat, kilka zł zależnie od dostępnego formatu.
    Drobnica, mikrokontroler i złącza mieszczą się w granicach 15zł.

    Wiele godzin spędzonych przy komputerze (pisanie firmware'u i aplikacji na telefon)

    To taki po krótce opis.
    Czas na zdjęcia :)

    Bluetooth Car - zdalnie sterowany samochód.
    Moduł bluetooth BTM-222 i sterownik

    Bluetooth Car - zdalnie sterowany samochód.
    Cały sterownik z zamontowanym modułem.

    Bluetooth Car - zdalnie sterowany samochód.
    Cały samochodzik

    Bluetooth Car - zdalnie sterowany samochód.

    Kilka zdjęć aplikacji.
    Bluetooth Car - zdalnie sterowany samochód. Bluetooth Car - zdalnie sterowany samochód. Bluetooth Car - zdalnie sterowany samochód. Bluetooth Car - zdalnie sterowany samochód. Bluetooth Car - zdalnie sterowany samochód. Bluetooth Car - zdalnie sterowany samochód. Bluetooth Car - zdalnie sterowany samochód.


    //EDIT
    Nowe filmiki, nieco lepszej jakości.


    Link



    Link



    Link



    //EDIT

    Udostępniam schemat sterownika.
    Bluetooth Car - zdalnie sterowany samochód.

    Kilka uwag: Rezystory R1 i R2 tworzą dzielnik napięcia do pomiaru napięcia baterii. Dobrze jest tam wsadzić rezystory o dobrej tolerancji. Ich wartość należy dobrać do napięcia zasilania, tak aby na pinie procesora nie było napięcia większego niż 5V. Współczynnik podziału napięcia, póki co jest na sztywno zaszyty w aplikacji i wynosi 2(wartość z ADC mnożymy razy 2). Wartość rezystorów nie jest bardzo "sztywna" - ważne aby nie płynął przez nie zbyt duży prąd. (Przy baterii 6V i 20komach płynie prąd około 0,3mA(wiadomo, będzie trochę większy, bo napięcie jest wyższe od znamionowego)).

    Będzie też płytka.
    Póki co w schemacie jest mała skucha.
    Zasilanie serw powinno być z oddzielnego stabilizatora(jeśli chcemy zasilać baterią o napięciu większym niż 6V) lub prosto z baterii(gdy bateria ma do 6V).
    W przeciwnym przypadku będzie nam się zawieszał moduł bluetooth lub procek przez zakłócenia w zasilaniu. Płytkę udostępnię po poprawkach.


    Źródeł w dalszym ciągu nie udostępniam.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 22 Gru 2013 20:33
    TomekxD
    Poziom 29  

    Zrobiles moze jakies zabezpieczenie przed uszkodzeniem gdyby stracil zasieg?

  • #3 22 Gru 2013 20:48
    hubertfab
    Poziom 21  

    TomekxD napisał:
    Zrobiles moze jakies zabezpieczenie przed uszkodzeniem gdyby stracil zasieg?


    Dokładnie o tym samym pomyślałem.

    Moim zdaniem wykorzystanie Bluetooth do tego celu to nie dobry pomysł. Sterowanie zabawką, która porusza się po pokoju- w porządku, ale model w terenie? Połączenie Bluetooth co prawda jest odporne na zakłócenia, jednak poważną wadą jest zasięg, którego bezpieczna strefa za bardzo ogranicza możliwości modelu spalinowego.

  • #4 22 Gru 2013 21:25
    gh00st
    Poziom 13  

    Cytat:
    - Sterownik posiada zabezpieczenia przed utratą łączności i zawieszeniem się procesora(watchdog).


    i

    Cytat:
    Nad ciągłością transmisji czuwa timer, który ustawia tryb awaryjny. Każdy odebrany poprawny pakiet sterowania resetuje timer.


    Czytajcie najpierw dokładnie a potem pytajcie.

    Zabezpieczenie polega na tym, że jeżeli nie przyjdzie w ciągu 200ms poprawny pakiet, to sterownik ustawia serwomechanizmy w pozycjach awaryjnych(ustawienia te możemy zmienić).

    Ponowne uruchomienie sterowania możliwe jest dopiero po wysłaniu pakietu inicjalizującego sterowanie.

    Co do zasięgu.
    BTM-222 jest modułem bluetooth klasy 1, o zasięgu 100m i zwiększonej czułości odbiornika(w porównaniu do klasy 2).
    Testowałem też HC-06(klasa 2 - 10m) i na otwartej przestrzeni odjechałem na odległość około 50m i z powodzeniem wróciłem bez zerwania łączności.

    Odjechanie takim modelem na odległość ponad 100m już jest całkiem dobrym osiągiem i raczej więcej nie potrzeba gdyż i tak prawie go nie widać :)

  • #5 22 Gru 2013 22:34
    gh00st
    Poziom 13  

    hubertfab napisał:
    A może nawet wymiana anteny na inną poprawiła by jeszcze bardziej osiągi. Sporo też zależy od modułu Bluetooth, który został zainstalowany w smartfonie.


    Zgadzam się, w Nexusie 4(bo tym telefonem jeżdżę :) ) siedzi Bluetooth 4.0 i w porównaniu do HTC Wildfire S (mój stary telefon) ma dużo lepsze osiągi. Choć i na HTC 50m z HC-06 jest osiągalne(testowane na elektryku na korytarzu uczelni).

    hubertfab napisał:
    PS: Autor nie udostępnia aplikacji. Jeśli ktoś potrzebuje czegoś podobnego na Androida, mogę napisać.


    Aplikacja jest ściśle związana z API(tak to nazwę :) ) sterownika (pakiety zawierają polecenia i parametry). Dlatego też bez wsadu do procka i elektroniki apka jest bezużyteczna. Można by jedynie sobie podejrzeć co jest wysyłane przez terminal :)
    A kodów źródłowych nie udostępniam, ponieważ spędziliśmy razem z kolegą wiele godzin nad tym projektem i rozdawanie naszej pracy za darmo nie jest w mojej opinii najlepszą rzeczą jaką mógłbym uczynić :)
    Natomiast gdyby kogoś zainspirował nasz projekt i chciałby budować coś podobnego, to służę poradą :)

  • #6 22 Gru 2013 22:40
    rafcio1300
    Poziom 11  

    hubertfab napisał:
    PS: Autor nie udostępnia aplikacji. Jeśli ktoś potrzebuje czegoś podobnego na Androida, mogę napisać.


    W sieci istnieje już kilka gotowców- do pobrania z google play, sam korzystam z "Arduino Bluetooth joystick" co prawda darmowa wersja nie posiada funkcji sterowania akcelerometrem ale też daje rade. Bluetooth Car - zdalnie sterowany samochód.

  • #7 22 Gru 2013 23:06
    pbuhne
    Poziom 14  

    Mógłbyś napisać więcej na temat tworzenia aplikacji na androida? Jaki język, środowisko itp?

  • #8 22 Gru 2013 23:10
    TomekxD
    Poziom 29  

    Skoro aplikacja na Androida, to łatwo znaleźć to, w jakim jezyku to jest zrobione.

  • #9 22 Gru 2013 23:16
    gh00st
    Poziom 13  

    Ogólnie apka pisana w Javie przy użyciu środowiska IntelliJ IDEA.
    (ogólnie standardowe SDK androidowe)
    Na bazie tego środowiska google stworzył nowe Android Studio, lecz ja wolę oryginalną wersję.

    Oczywiście Eclipse też by się nadało, jak większość środowisk pod androida.

  • #10 22 Gru 2013 23:29
    pbuhne
    Poziom 14  

    TomekxD napisał:
    Skoro appsa na Androida to latwo znalesc to, w jakim jezyku to jest zrobione.


    A skoro aplikacje są również pisane na Windowsa, to też łatwo _znaleźć_ w jakim języku są napisane...?

  • #11 22 Gru 2013 23:48
    gh00st
    Poziom 13  

    W sumie to z Androidem nie jest już tak oczywiste. Są już środowiska gdzie możemy pisać w C# lub VB pod androida. Widziałem gdzieś w sieci takie cuda :)

  • #12 23 Gru 2013 00:43
    starepc.pl
    Poziom 24  

    @gh00st, jest jeszcze Delphi - natywnie, a to co mówisz to projekty Xamarin'a. z Delphiego jeszcze pod iOSa napiszesz :P

  • #13 27 Gru 2013 17:57
    pol102
    VIP Zasłużony dla elektroda

    Gdyby przepisać aplikację sterującą do Delphi, to otrzymalibyśmy możliwość korzystania z niej na platformie iOS oraz Android. RAD Studio już wspiera, a za chwilę powinien być pełen support w Qt.

  • #14 07 Sty 2014 15:30
    gh00st
    Poziom 13  

    Szczerze to produkty Apple'a mnie mało interesują, dlatego wersji pod iOS nie przewiduję. :)
    Język Delphi również nie należy do moich ulubionych.

    Natomiast po testach wyszła ciekawa przypadłość.
    Sterowanie akcelerometrem sprawia, że przy dużym przyspieszeniu i szybkiej jeździe ciężko jest utrzymać samochód w jeździe na wprost(lekki przechył i samochód staje bokiem).
    Trzeba osłabić czułość sterowania w punkcie zbliżonym do środka, aby małe różnice nie wpływały na położenie kół.

  • #15 10 Sty 2014 20:56
    AvrArm
    Poziom 15  

    Mam pytanie do autora, jakiego rodzaju antenę zastosowałeś do mod, bluetooth ?

  • #16 15 Sty 2014 19:45
    gh00st
    Poziom 13  

    Antena to zwykły drucik o odpowiedniej długości dla 2,4GHz(około 3cm) (1/4 dł fali?)
    W sumie to planuję ją podmienić na antenę z odbiornika RC na 2,4GHz aby wystawić ją na wierzch samochodu na pałąku.

  • #17 08 Sie 2014 19:21
    Atreyu Makiavel
    Poziom 34  

    Twoją aplikację można użyć ażeby sterować grami w komputerze? Przy pomocy akcelerometru jakby się miało kierownicę na biurku?

  • #18 13 Sie 2014 17:50
    gh00st
    Poziom 13  

    Pewnie jakieś elementy tej aplikacji dało by się wykorzystać, ale aplikacja nie jest do tego przeznaczona i takiej funkcjonalności nie posiada w tej chwili.

  • #19 14 Sie 2014 12:46
    TomekxD
    Poziom 29  

    W sieci mozna znalesc apki do tego, poszukaj a znajdziesz.

  • #20 14 Sie 2014 13:02
    Atreyu Makiavel
    Poziom 34  

    Do niczego one. Albo nie chcą się połączyć z serwerem albo sterują na zasadzie że nie działa jako oś która może mieć mnóstwo wartości dodatnich i ujemnych w zależności od pozycji tylko albo wychył max albo wcale.

  • #21 14 Sie 2014 13:05
    TomekxD
    Poziom 29  

    Byla jakas dedykowana do gry LFS, ona mi dziala bezproblemowo.

  • #23 14 Sie 2014 13:10
    TomekxD
    Poziom 29  

    To jest dashboard a nie kontroler.

  • #24 14 Sie 2014 13:16
    Atreyu Makiavel
    Poziom 34  

    Niczego więcej nie znajduje.

  • #25 14 Sie 2014 13:50
    TomekxD
    Poziom 29  

    Nebudroid. 30s googlowania i mam ;)