Spisu treści:

Android G1 Serial do Arduino Robot: 8 kroków
Android G1 Serial do Arduino Robot: 8 kroków

Wideo: Android G1 Serial do Arduino Robot: 8 kroków

Wideo: Android G1 Serial do Arduino Robot: 8 kroków
Wideo: Open Source Robotic Tractor - ROSAgriculture + OSE 2024, Listopad
Anonim
Android G1 Serial do Arduino Robot
Android G1 Serial do Arduino Robot
Android G1 Serial do Arduino Robot
Android G1 Serial do Arduino Robot
Android G1 Serial do Arduino Robot
Android G1 Serial do Arduino Robot

Dowiedz się, jak Twój telefon komórkowy z Androidem może sterować robotem za pomocą płytki Arduino. Telefon odbiera polecenia przez telnet z innego telefonu lub komputera, dzięki czemu możesz zdalnie sterować robotem. Ten projekt w żaden inny sposób nie zmodyfikuje G1, więc możesz nadal używać go jako normalnego telefonu po oddokowaniu. Dlaczego? Korzystając z tanich komponentów elektronicznych, takich jak płytki Arduino, możesz sparować je z telefonem za 400 USD, aby stworzyć niesamowitego robota. Dodanie GPS, LCD, czujników ruchu, Wi-Fi, połączeń komórkowych, głośników i innych elementów kosztowałoby setki dolarów, ale Twój telefon już je ma! Razem płyta Android G1 i Arduino pozwalają na użycie niedrogiej elektroniki, takiej jak proste serwomechanizmy i czujniki, do budowy potężnych urządzeń, takich jak roboty, zdalna teleobecność lub zabawne zabawki dla dzieci. Więcej informacji na Cellbots.com. Notice: Ten projekt wymaga obecnie Androida G1 z dostępem do roota, aby używać wyjścia szeregowego z telefonu do robota Arduino. Możesz dodać moduł BlueTooth o wartości 20 USD do płyty Arduino, aby telefon rozmawiał z nim przez szeregowy BlueTooth, jeśli chcesz korzystać z komercyjnego oprogramowania Android. Specjalne podziękowania: Chcielibyśmy podziękować Hacker Dojo w Mountain View w Kalifornii za skontaktowanie się z nami, pomoc w niektórych trudnych sprawach za pośrednictwem ich listy mailingowej wspaniałych członków oraz za posiadanie w magazynie żetonów 74LS04. Większość montażu została wykonana w Tech Shop w Menlo Park.

Krok 1: Potrzebne przedmioty

Potrzebne przedmioty
Potrzebne przedmioty
Potrzebne przedmioty
Potrzebne przedmioty
Potrzebne przedmioty
Potrzebne przedmioty

Aby ukończyć ten samouczek, potrzebujesz następujących elementów:Sprzęt: - Android G1 Dev Phone (lub inne urządzenie z systemem Android z dostępem do roota i wyjściem szeregowym) - Arduino (używam Freeduino SB, ale każdy powinien to zrobić) - 3,3 V do 5 V konwerter, jeśli nie używasz Arduino 3.3v (używam układu 74LS04 za mniej niż 1 USD, ale dostępne są inne opcje) - Płytka stykowa HTC USB dla G1 - Sprzęt do lutowania dla dwóch szybkich połączeń - Korpus robota z mikro serwa (karton, akryl, bieżniki, koła, cokolwiek zrobi) Oprogramowanie: - Android Scripting Environment (ASE) - Klient Telnet dla twojego komputera (używam PuTTY w systemie Windows) - Środowisko programistyczne Arduino - (opcjonalnie) Klient szeregowy dla Twój komputer (w tym celu używam również PuTTY w systemie Windows) - (opcjonalnie) Android SDK Jeśli potrafisz postępować zgodnie z instrukcjami, możesz ukończyć ten samouczek z niewielką znajomością Pythona, Arduino, Androida lub elektroniki. Będziesz chciał wiedzieć te rzeczy, jeśli chcesz wyjść poza migającą diodę LED, ale to pozwoli ci zacząć.

Krok 2: Android G1 z włączonym wyjściem szeregowym

Android G1 z włączonym wyjściem szeregowym
Android G1 z włączonym wyjściem szeregowym
Android G1 z włączonym wyjściem szeregowym
Android G1 z włączonym wyjściem szeregowym
Android G1 z włączonym wyjściem szeregowym
Android G1 z włączonym wyjściem szeregowym

G1 nie są dostarczane z możliwością wysyłania poleceń szeregowych z portu USB i nie ma natywnej opcji, aby to włączyć. Jeśli jesteś zaawansowanym użytkownikiem Android SDK, możesz stworzyć własną wersję, ale ja wybrałem Cyanogenmod 4.2.13. Jeśli znasz inne urządzenia z Androidem działające z wyjściem szeregowym, dodaj je do komentarzy.

Opcjonalnie możesz skorzystać z linków do tej instrukcji, aby rozmawiać z G1 przez USB z komputera. To połączenie szeregowe z USB nie jest wymagane w tym samouczku, ale użyłem go jako miłego sprawdzenia zdrowia psychicznego, aby sprawdzić, czy telefon wysyłał serial. Jeśli nie korzystasz z innego niemożliwego do sprawdzenia, czy wyjście szeregowe działa, możesz spróbować tego prostego sprawdzenia: 1. Otwórz aplikację Terminal na G1 (dostarczany z Cyanogen, ale pobierz ją z Marketu, jeśli masz inny obraz) 2 Przejdź do katalogu /dev/ wpisując cd /dev/ 3. Wpisz ls (to jest L) i poszukaj ttyMSM2 na zwróconej liście Skrypt Pythona, którego użyjemy później, wysyła polecenia do '/dev/ttyMSM2' w aby wyszły z połączenia szeregowego. Ponieważ wymaga to uprawnień administratora, musisz zmienić uprawnienia przy każdym ponownym uruchomieniu telefonu. Aby to zrobić: 1. Otwórz aplikację terminala w telefonie 2. Wpisz 'chmod 777 /dev/ttyMSM2' Następnie możesz uruchomić skrypt Pythona z edycji Android Scripting w następnym kroku i będzie on miał dostęp do wysyłania wyjścia szeregowego.

Krok 3: Zainstaluj Android Scripting Environment (ASE) za pomocą Pythona

Zainstaluj środowisko skryptów Androida (ASE) za pomocą Pythona
Zainstaluj środowisko skryptów Androida (ASE) za pomocą Pythona
Zainstaluj środowisko skryptów Androida (ASE) za pomocą Pythona
Zainstaluj środowisko skryptów Androida (ASE) za pomocą Pythona

Skrypty, których będziemy używać do tworzenia połączenia z otwartym gniazdem w telefonie i wysyłania poleceń, są napisane w Pythonie. Aby uruchomić to na G1 potrzebujemy Android Scripting Environment. Jeśli nie widzisz go na Rynku, możesz go pobrać, skanując kod kreskowy na tej stronie, który prowadzi do pliku APK na tej stronie.

Po zainstalowaniu i uruchomieniu ASE będziesz chciał dodać moduł Python z menu: 1. Otwórz ASE i upewnij się, że masz działające połączenie internetowe (wi-fi lub 3G) 2. Naciśnij przycisk menu na telefonie i wybierz Interpretery 3. Naciśnij ponownie menu i wybierz Dodaj 4. Wybierz Python (obecnie wersja 2.6.2 w momencie pisania tego) i pobierze on niektóre pliki zip Możesz chcieć zbadać tworzenie, otwieranie, edycję i uruchamianie skryptów, aby zapoznać się z Pythonem poprzez ASE, ale nie jest to wymagane.

Krok 4: Skopiuj i uruchom skrypt Cellbot.py, aby uruchomić program w języku Python

Skopiuj i uruchom skrypt Cellbot.py, aby uruchomić program w języku Python
Skopiuj i uruchom skrypt Cellbot.py, aby uruchomić program w języku Python

Ten samouczek używa skryptu Pythona jako „mózgu” robota. Pobierz najnowszy kod z naszego otwartego projektu Google Code. Potrzebujesz tylko pliku cellbot.py, ale inne mogą pomóc w różnych rzeczach, które chcesz zbadać. Po prostu podłączyłem telefon do złącza USB komputera i zamontowałem dysk przed skopiowaniem pliku do /sdcard/ase/scripts.

Program tworzy połączenie z otwartym gniazdem, aby zaakceptować przychodzącą sesję telnet. Drukuje również odebrane polecenia na ekranie podczas wysyłania ich przez port szeregowy. Umieść ten plik na karcie SD telefonu w katalogu /ase/scripts/. Szczegółowe kroki w celu załadowania i uruchomienia skryptów: 1. Skopiuj skrypt cellbot.py do katalogu /ase/scripts/ karty SD 2. Pamiętaj, aby odmontować kartę SD z komputera, jeśli skopiowałeś je w ten sposób, ponieważ telefon nie może uzyskać dostępu do plików w tym samym czasie, co komputer. 3. Otwórz aplikację Android Scripting Environment 4. Kliknij cellbot.py, aby ją uruchomić. Powinieneś zobaczyć potwierdzenie, że urządzenie jest w tym momencie gotowe do akceptowania przychodzących sesji telnet na porcie 9002. Wskazówka: Pamiętaj, aby uruchomić chmod 777 /dev/ttyMSM2” najpierw z kroku #3. Zobacz krok 5, aby znaleźć adres IP telefonu.

Krok 5: Telnet do G1 i przetestuj wysyłanie poleceń

Nawiąż połączenie Telnet z G1 i przetestuj wysyłanie poleceń
Nawiąż połączenie Telnet z G1 i przetestuj wysyłanie poleceń
Nawiąż połączenie Telnet z G1 i przetestuj wysyłanie poleceń
Nawiąż połączenie Telnet z G1 i przetestuj wysyłanie poleceń
Nawiąż połączenie Telnet z G1 i przetestuj wysyłanie poleceń
Nawiąż połączenie Telnet z G1 i przetestuj wysyłanie poleceń

Telefon powinien być gotowy do połączenia się z nim przez telnet i wysyłania poleceń z komputera. Wydrukuje je na ekranie telefonu, aby potwierdzić, co otrzymuje. Użyłem PuTTY w systemie Windows, ale potwierdziliśmy, że minicom działa świetnie na komputerach Mac, jak opisano w tej instrukcji.

Najpierw musisz znaleźć adres IP swojego telefonu. Jest to dostępne, przechodząc do Menu > Ustawienia > Sterowanie bezprzewodowe > Ustawienia Wi-Fi, a następnie naciskając aktualnie aktywne połączenie. Pojawi się wyskakująca wiadomość z aktualnym adresem IP w sieci lokalnej. Zapisz to, ponieważ będziesz używać tego za każdym razem, gdy chcesz otworzyć sesję telnet z komputera. Przypisania adresów IP zwykle wygasają po określonej liczbie dni, więc może być konieczne ponowne sprawdzenie. Uwaga: w tym samouczku założono, że komputer i telefon znajdują się w tej samej sieci lokalnej. Przekierowanie do telefonu spoza sieci lokalnej powinno być możliwe, ale nie jest tutaj omówione. Otwórz wybranego klienta telnet i połącz się z adresem IP telefonu na porcie 9002. Z wiersza poleceń możesz to zrobić jako „telnet 192.168.1.1 9002”, używając rzeczywistego adresu IP telefonu. Wpisz kilka znaków i naciśnij Enter, aby zobaczyć je na ekranie telefonu. Możesz wpisać q, aby spowodować zamknięcie skryptu Pythona, co powinno zamknąć sesję terminala. Jeśli z jakiegoś powodu nie możesz połączyć się przez telnet i musisz zabić program, prosty restart telefonu powinien załatwić sprawę. Zaawansowani użytkownicy mogą chcieć znaleźć identyfikator procesu przez ps, a następnie użyć kill, aby go zatrzymać. Zaawansowane: Przyszła wersja tego może uruchamiać lokalny serwer WWW z telefonu, zamiast akceptować polecenia przez telnet. Badamy również XMPP, aby rozmawiać z twoim robotem.

Krok 6: Podłącz przełącznik poziomu 3,3 V do 5 V do Arduino

Podłącz przełącznik poziomu 3.3v do 5v do Arduino
Podłącz przełącznik poziomu 3.3v do 5v do Arduino
Podłącz przełącznik poziomu 3.3v do 5v do Arduino
Podłącz przełącznik poziomu 3.3v do 5v do Arduino
Podłącz przełącznik poziomu 3.3v do 5v do Arduino
Podłącz przełącznik poziomu 3.3v do 5v do Arduino

Arduino użyte w tym samouczku to model 5 V, więc musimy przekonwertować sygnał 3,3 V wychodzący z G1 za pomocą przesuwnika poziomu. Powinno być możliwe bezpośrednie połączenie z Arduino 3,3 V, ale nie było to coś, co testowałem.

Istnieje kilka sposobów podejścia do tego, ale w tym przykładzie użyjemy układu 74LS04. Możesz go wyszukać tutaj i prawdopodobnie są one poniżej 1 USD. Tim i ja odebraliśmy nasze z Hacker Dojo w Mountain View w Kalifornii, ale są one BARDZO powszechne i powinny być obfite wszędzie tam, gdzie sprzedaje się lub przekazuje żetony. Na wysokim poziomie po prostu wyślemy sygnał TX z płytki HTS USB breakout do pinu 1 układu 74LS04. Aby to zadziałało, dwukrotnie przechodzimy przez układ i wychodzimy pin 4 do pinu RX na Freeduino SB (twój pin szeregowy może być inny, jeśli masz inną płytę Arduino, ale wszystkie powinny to obsługiwać). Wykonaj poniższe czynności, aby podłączyć przełącznik poziomu i podłączyć płytkę HTC USB (nie podłączaj jej jeszcze do telefonu i odłącz zasilanie od Arduino): 1. Włóż układ 74LS04 do płytki stykowej. Upewnij się, że układ przeszkadza w środkowym złamaniu, aby styki nie były zwarte (głupi ruch, który wykonałem na początku) 2. Podłącz dwa przewody do płyty USB HTC, jak opisano w tej instrukcji, ale będziemy używać tylko styków 7 (Ground) i 8 (TX0), ponieważ w tym samouczku wykonujemy tylko transmisję w jedną stronę. 3. Podłącz drugi koniec przewodu uziemiającego (pin 7) do uziemienia na płytce prototypowej (która powinna być podłączona do uziemienia na Arduino) 4. Podłącz drugi koniec przewodu TX0 (pin 8) do płytki stykowej, gdzie wpada na pin 1 układu 74LS04. (wykonaj wyszukiwanie obrazu w celu uzyskania pełnego schematu układu) 5. Za pomocą przewodu podłącz piny 2 i 3 układu 6. Podłącz pin 4 układu do punktu Arduino RX (pin 0 w Freeduino SB i Arduino Duemilanove) 7. Podłącz pin 7 (GND) na chipie do masy płytki stykowej (która również łączy się z masą Arduino) 8. Podłącz pin 14 (VCC) do zasilania 5 V na płytce prototypowej (które pobiera zasilanie z Arduino Wyjście 5V) Powinieneś być teraz gotowy do podłączenia płytki USB HTC do spodu telefonu i włączenia Arduino. Sprawdź, czy nie ma iskier i zapachów oraz dotykaj rzeczy, aby upewnić się, że są chłodne. Uwaga: Aktualny kod robota komórkowego włącza diodę LED #13, gdy serwosilniki robota powinny działać. Jeśli nie masz jeszcze robota, możesz sprawdzić, czy dioda LED włącza się i wyłącza, aby potwierdzić, że działa.

Krok 7: Załaduj program Cellbots na Arduino

Załaduj program Cellbots na Arduino
Załaduj program Cellbots na Arduino
Załaduj program Cellbots na Arduino
Załaduj program Cellbots na Arduino

Pobierz kod źródłowy Arduino z naszej strony projektu Google Code. Otwórz program Cellbots.pde Arduino w edytorze Arduino. Następnie wepchnij go do płytki Arduino.

Możesz przetestować rozmowę z kodem Arduino otwierając monitor szeregowy w edytorze Arduino. To świetny sposób na przetestowanie robota lub urządzenia, rozmawiając bezpośrednio z Arduino przed podłączeniem wszystkiego do telefonu. Kod wysyła polecenia szeregowe z powrotem do monitora szeregowego, aby potwierdzić, co robi, nawet jeśli nie masz jeszcze wbudowanego robota. Uwaga: Nie możesz ładować programów do Arduino, gdy przewód jest podłączony do złącza szeregowego RX. Więc możesz chcieć umieścić ten przełącznik, ale po prostu odłączyłem go, gdy musiałem załadować nowy program.

Krok 8: Uruchom cały proces

Uruchom cały proces
Uruchom cały proces
Uruchom cały proces
Uruchom cały proces
Uruchom cały proces
Uruchom cały proces

Powinieneś być w stanie podłączyć kartę HTC USB do telefonu, uruchomić plik cellbot.py w ASE i otworzyć sesje terminala w telefonie. Wpisz „H”, aby telefon przywitał się lub inne polecenia z pliku README.txt.

"q" spowoduje zamknięcie skryptu Pythona w telefonie i zamknięcie gniazda terminala. Oto podsumowanie tego, jak to wszystko działa: 1. Skrypt Pythona otwiera gniazdo, aby akceptować przychodzące połączenia telnet i powtarzać polecenia na porcie szeregowym 2 Łączymy się z naszego komputera PC z telefonem przez telnet na porcie 9002 i wysyłamy mu polecenia, które widzimy na ekranie 3. Płyta USB HTS łączy się z portem USB G1 i wysyła sygnał 3.3V do pinu 1 74LS04. sygnał wychodzi z układu na pinie 2, wraca na pinie 3 i wychodzi ponownie na pinie 4 na 5v 5. Nasze Arduino akceptuje sygnał szeregowy na pinie 0 RX i przetwarza go za pomocą programu Cellbot.pde 6. można wpisać 'q', aby zabić skrypt Pythona i zamknąć połączenie telnet Teraz, gdy zakończyłeś ten bardzo skomplikowany proces wysyłania podstawowych poleceń do robota Arduino, nadszedł czas, abyś go zhakował, aby był bardziej niesamowity! Nie mamy jeszcze dwukierunkowego połączenia szeregowego, więc Arduino nie może wysyłać poleceń z powrotem do telefonu, ale pracujemy nad tym. Bądź na bieżąco, subskrybując nasz blog na Cellbots.com. O autorach: Tim Heath Główny badacz, który jako pierwszy opracował ten proces w Tech Shop w Menlo Park, którego jest członkiem. Ryan Hickman Programista, który pracował nad kodem Python i Arduino i jest autorem tego Instructable.

Zalecana: