Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Zainspirowany kursem budowy robotów FORBOT jak i ElektroPrzewodnikiem postanowiłem skonstruować prostego i taniego dwukołowca, którego można sterować smartfonem przez WiFi. Opiszę tutaj proces budowy tego pojazdu w wersji sterowanej z wykorzystaniem aplikacji Blynk oraz przy założeniu, że pojazd znajduje się w zasięgu sieci WiFi (np. domowej). Założenie to upraszcza proces sterowania robotem, gdyż nie wymaga logowania się do AP (Access Point) tworzonego przez ESP8266 i sprawia że kod programu jest prosty. Wadą tego rozwiązania jest to, że nie można z robotem wyjść w teren.

Spis części

Do zbudowania prostego pojazdu potrzeba:

Całość powinna nas wynieść ok. 110 zł (bez baterii lub akumulatorków)

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

Przygotowanie

Do zaprogramowani dwukołowca będziemy potrzebowali środowiska Arduino IDE (najnowsza wersja do ściągnięcia na stronie: https://www.arduino.cc/en/Main/Software).

Aby móc w tym środowisku używać ESP8266 należy doinstalować odpowiednią bibliotekę. W tym celu należy w menu programu Arduino IDE wybrać File–>Preferences i w okienku ‚Additional Boards Manager URLs‚ wpisać: http://arduino.esp8266.com/stable/package_esp8266com_index.json.(patrz rys. 1)

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Rys. 1 Okno Preferences w Arduino IDE

Następnie wybieramy w menu Tools–>Board–>Boards Manager, wpisujemy w okno wyszukiwania ‚ESP8266’  i instalujemy bibliotekę esp8266 (patrz rys. 2).

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Rys. 2 Okno Boards Manager w Arduino IDE

Aby móc obsługiwać robota przy użyciu aplikacji Blynk należy zainstalować do środowiska Arduino IDE bibliotekę dla tego programu zgodnie z instrukcją ze strony producenta: http://www.blynk.cc/getting-started/. W skrócie: należy ściągnąć ZIPA z bibliotekami i zawartość skopiować do katalogu gdzie zainstalowane jest Arduino IDE.

Programowanie ESP8266

W celu wgrania programu (o którym w dalszej części opisu) do ESP8266 należy podłączyć je przez USB-UART do komputera według schematu przedstawionego na rys. 3.

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Rys. 3 Schemat podłączenia ESP-12E (ESP8266) w celu wgrania programu

Czyli:

  • UART VCC — ESP VCC
  • UART GND — ESP GND
  • UART TXD — ESP RXD
  • UART RXD — ESP TXD
  • ESP GPIO0 — GND (tylko do programowania)

Należy mieć na uwadze to, że zasilanie jedynie przez USB-UART może nie wystarczyć dlatego dobrze jest dołączyć dodatkowe zasilanie. Ja zrobiłem to używając dodatkowego modułu zasilającego do płytki stykowej. Trzeba pamiętać, że ESP zasilać należy napięciem ok. 3.3 V (przy większych napięciach może ulec uszkodzeniu).

Po poprawnym podłączeniu ESP włączamy zasilanie (niebieska dioda w ESP powinna raz mignąć) i podłączamy USB-UART do portu USB w komputerze. W programie Arduino IDE wybieramy w menu Tools–>Board–>Generic ESP8266 Module oraz w menu Tools–>Port wybieramy odpowiedni port (COM’XX‚), do którego podłączony jest nasz programator USB-UART. Dodatkowo w menu Tools ustawiamy Flash size: „4M (1M SPIFFS)” lub Flash size: „4M (3M SPIFFS)”. Resztę ustawień możemy pozostawić bez zmian (u mnie: Flash mode: „DIO”, Flash Frequency: „40MHz”, CPU Frequency: „80MHz”, Debug port: „Disable”, Debug Level: „None”, Reset Method: „ck”, Upload Speed: „115200”).

Podłączenie ESP do mostka H

Po wgraniu programu (o którym w dalszej części opisu) do ESP8266 należy połączyć je ze sterownikiem silników według schematu przedstawionego na rys. 4.

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Rys. 4 Schemat podłączenia ESP do sterownika silników

Czyli GPIO2 i GPIO4 będą sterować kanałem B, natomiast GPIO13 i GPIO14 będą sterować kanałem A. Podanie stanu wysokiego na wejście MODE sterownika powoduje że będzie on działał w trybie PHASE/ENABLE.

I tyle. U mnie połączenie wygląda jak na rys. 5.

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Rys. 5 Połączenie ESP do sterownika silników

Aplikacja Blynk

Po zainstalowaniu aplikacji należy stworzyć nowy projekt pod nazwą np. ‚samochod’ i wstawić z bocznego menu jeden przycisk, jeden suwak pionowy i jeden suwak poziomy jak pokazano na rys. 6.

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Rys. 6 Aplikacja Blynk – projekt

Następnie wprowadzamy ustawienia dodanych elementów. Przycisk powinien zwracać wartość 1 lub 0 na wirtulanym pinie V0. Suwak pionowy będzie zwracać  wartości z zakresu (-100,100) na wirtualnym pinie V1 a suwak poziomy wartości (-50,50) na wirtulanym pinie V2 (patrz rys. 7).

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Rys. 7 Aplikacja Blynk – ustawienia

Program

Kod programu z komentarzami znajduje się poniżej. W programie założono że sterowanie odbywać się będzie z aplikacji Blynk.

Pojazd w akcji

Złożony i zaprogramowany pojazd w akcji można zobaczyć na filmie:

Ocena: 4.73/5 (głosów: 11)
Nettigo - patron działu Elektronika

Podobne posty

Regulator PID na arduino.

Regulator PID na arduino.

Witam wszystkich majsterkowiczów! Chciałbym przedstawić wam moje nagranie dotyczące realizacji regulatora PID przy użyciu arduino.Regulatory…

12 komentarzy do “Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

  • Trochę namieszałeś przy podłączaniu ESP.
    Zastosowany przez Ciebie adapter ma już dwa rezystory, łączące GPIO15 do masy oraz CH_PD do Vcc (trzeci rezystor to po prostu zwora 0Ω na zasilaniu) – czyli oba piny należy zostawić niepodłączone. Do prawidłowego działania należy podłączyć GPIO0 do VCC poprzez rezystor (np. 10k), a tylko na czas programowania zwierać go do masy. RST jeśli go nie używamy można podłączyć do CH_PD, lub również przez rezystor do Vcc.
    Co do ustawień Arduino: chyba też o czymś zapomniałeś. Oprócz portu należy ustawić ilość pamięci Flash. W przypadku ESP-12E możesz użyć 4M/3M lub 4M/1M – przy domyślnych ustawieniach (512k) są niewielkie szanse na działanie. Reszta ustawień może być domyślna.
    Popraw artykuł, to wtedy ocenię.

    Odpowiedz
        • Czyli jak zmieniłeś rozmiar flasha (i tylko to), zadziałało?
          Czy używałeś jakiegoś bardzo dużego programu (wiele bibliotek)?
          Bardzo dziwne, jak napisałem nigdy nie miałem problemu z ustawieniem rozmiaru flash i sami developerzy Arduino dla ESP8266 twierdzą, że będzie działać.

          Odpowiedz
          • Dokładnie, tylko to.
            Tak jak pisałem – omyłkowo zostawiłem ze dwa czy trzy razy 512k (często zmieniam ustawienia między ESP8266 a UNO/Pro, a Arduino IDE nie zawsze pamięta poprzednie ustawienia po ponownej zmianie). Efekt – upload poszedł normalnie, natomiast po uruchomieniu mogłem podziwiać efekty działania watchdoga.
            Od tej pory po prostu zwracam uwagę na ustawienia po przełączeniu.
            Nie wnikałem w szczegóły, ale może jest jakaś znacząca różnica między 4M a 1M/512k. Zresztą developerzy o ile zauważyłem twierdzili że będzie działać na 1M a nie pisali nic o 4M, poza tym twierdzili dwa lata temu – a w światku ESP8266 Arduino czas płynie bardzo szybko :)
            Co do wielkości – nic poważnego, szkic po skompilowaniu miał jakiś 230 k, czyli bez problemu powinien się zmieścić.

            Odpowiedz
    • Sprawdziłem i wprowadziłem poprawki: dodałem opis ustawień Arduino, usunąłem zbędne połączenia do GPIO15 i CH_PD oraz dodałem połączenie GPIO0 do VCC przez rezystor. Oprócz opisu zaktualizowałem rys. 3, 4 i 5. Zmieniłem również sposób zasilania sterownika silników. Teraz zasilam go bezpośrednio z 6V (można do 2V do 7V). Dla lepszej stabilności dodałem również kondensator 100nF przed podłączeniem do ESP zgodnie z sugestią na stronie: https://github.com/esp8266/Arduino/blob/master/doc/boards.md
      Mam nadzieje, że teraz wygląda lepiej. Jeszcze raz dziękuję za uwagi.

      Odpowiedz
  • A takie pytanie. Czy nie warto pokombinować i spróbować ustawić ESP jako AP i się z nim łączyć przez telefon i wtedy zadziała to w terenie?

    Odpowiedz
    • Oczywiście można tak zrobić. Tylko kod programu się trochę skomplikuje i aby sterować pojazdem trzeba się będzie logować do sieci utworzonej przez ESP. Ale, tak jak piszesz, zaletą będzie możliwość wyjścia w teren. Właśnie, w ramach zabawy, obudowuje silniki i sterownik klockami Lego, oraz używam Wemosa (który własnie dotarł z Chin) aby ograniczyć ilość okablowania i mam zamiar wrzucić niedługo opis wersji pojazdu, który będzie mógł działać w terenie.

      Odpowiedz

Odpowiedz

anuluj

Pojazd dwukołowy sterowany ze smartfona przez WiFi (ESP8266)

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?