Spisu treści:

MicroPython IoT Rover oparty na WEMOS D1 (ESP-8266EX): 7 kroków (ze zdjęciami)
MicroPython IoT Rover oparty na WEMOS D1 (ESP-8266EX): 7 kroków (ze zdjęciami)

Wideo: MicroPython IoT Rover oparty na WEMOS D1 (ESP-8266EX): 7 kroków (ze zdjęciami)

Wideo: MicroPython IoT Rover oparty na WEMOS D1 (ESP-8266EX): 7 kroków (ze zdjęciami)
Wideo: micropython firebeetle esp32 rover robot 2024, Listopad
Anonim
Image
Image
MicroPython IoT Rover oparty na WEMOS D1 (ESP-8266EX)
MicroPython IoT Rover oparty na WEMOS D1 (ESP-8266EX)

** Aktualizacja: zamieściłem nowy filmik na v2 z lancą **

Prowadzę warsztaty z robotyki dla małych dzieci i zawsze szukam ekonomicznych platform do budowania intrygujących projektów. Chociaż klony Arduino są tanie, używają języka C / C ++, którego dzieci nie znają. Ponadto nie ma wbudowanego Wi-Fi, co jest koniecznością w projektach IoT. Z drugiej strony, chociaż Raspberry Pi ma WIFI, a dzieci mogą go programować za pomocą Pythona, nadal jest to droga platforma do sterowania kilkoma portami GPIO w celu włączania i wyłączania urządzeń. Potrzebuję czegoś pomiędzy, które ma zarówno możliwości WIFI, jak i Pythona. Wygląda na to, że znalazłem swoją odpowiedź w MicroPythonie, która błysnęła na taniej płytce opartej na ESP8266.

Co to jest Micropython?

Według jego strony internetowej MicroPython to oszczędna i wydajna implementacja języków programowania Python 3, która zawiera mały podzbiór standardowej biblioteki Python i jest zoptymalizowana do działania na mikrokontrolerach i w ograniczonym środowisku (takim jak ESP8266). Jest to zasadniczo IDE Pythona na chipie. Jedną z głównych korzyści jest to, że możesz tworzyć kod i zmieniać go w locie za pomocą klienta przeglądarki internetowej o nazwie Webrepl. (Spróbuj to zrobić w Arduino.) Możesz również zobaczyć dane z czujników w czasie rzeczywistym na Webrepl, zamiast polegać na logowaniu danych lub ekranie LED w Arduino.

Co to jest ESP8266?

Krótko mówiąc, pomyśl o tym jako o Arduino z wbudowaną obsługą sieci. Możesz użyć Arduino IDE do zaprogramowania płyt ESP8266 w C/C++ lub możesz je sflashować za pomocą NodeMCU lub MicroPython. W tym projekcie będę flashować MicroPython na płycie ESP8266.

Zdecydowałem się na WEMOS D1, który jest oparty na ESP8266-12EX do tego prostego projektu, w którym będę nawigować samochodem 2WD za pomocą przeglądarki internetowej. Istnieją inne płyty przeznaczone dla MicroPythona, ale chciałem coś taniego, co mógłbym wyrzucić, gdyby nie spełniało moich kryteriów. Zgodnie z oczekiwaniami spełnił wszystkie moje wymagania i najprawdopodobniej będę włączał WeMos i Micropython do przyszłych projektów.

Krok 1: Części

Części
Części
Części
Części
Części
Części
Części
Części
  • Wemos D1 lub dowolne płyty oparte na ESP8266
  • Osłona silnika (używam taniego L293D z AliExpress)
  • Uchwyty na baterie 4 x AA i 9 V (4 x AA do silników i 9 V do płyty Wemos)
  • Podwozie samochodu 2WD
  • Kable dupontowe

Może potrzebować lutownicy, śrubokręta i pistoletu do klejenia, aby wszystko złożyć.

Krok 2: Montaż sprzętu

Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu
Montaż sprzętu

Najpierw zmontuj podwozie zgodnie z instrukcją.

Następnie przyklej na gorąco pozostałe elementy, jak pokazano.

Przewody silnika należy przylutować do zacisków silnika i użyć gorącego kleju do wzmocnienia połączeń zacisków.

Przymocowano mały przełącznik do uchwytu baterii 4AA. Spowoduje to włączenie/wyłączenie zasilania osłony silnika.

Krok 3: Okablowanie

Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie

Postępuj zgodnie z moim schematem połączeń, jak pokazano.

Wemos do osłony silnika:

D1 IN2

D2 IN1 D3 IN4 **pomiń D4 D5 IN3 GND -> GND

Osłona silnika do silnika/mocy:

Zacisk -> Lewy silnik

Zacisk B -> Prawy silnik VCC -> Akumulator (+) GND -> Akumulator (-)

Krok 4: Instalacja MicroPythona

Po pierwsze, Wemos ma układ szeregowy/USB oparty na CH304G. Jest to ten sam układ, który można znaleźć w tanich klonach Arduino i musisz zainstalować odpowiedni sterownik dla komputerów Mac lub PC. Postępuj zgodnie z instrukcjami w tej witrynie, aby zainstalować sterownik.

Podłącz Wemos do komputera i potwierdź, że Twój komputer może wykryć Wemos. Na Macu uruchom następujące polecenie, a zobaczysz urządzenie o nazwie /dev/tty.wchusbserial640.

$ ls -lt /dev/tty* | głowa

crw-rw-rw- 1 root wheel 17, 4 marca 2 23:31 /dev/tty.wchusbserial640

Jeśli korzystasz z komputera, możesz użyć tej instrukcji jako odniesienia.

Następnie musisz skonfigurować Python 2 lub 3 na swoim komputerze, ponieważ narzędzie flash, esptool.py, jest oparte na Pythonie. Chociaż przewodnik MicroPython może stwierdzać, że narzędzie działa tylko z Pythonem 2.7, udało mi się uruchomić go w Pythonie 3 bez żadnych problemów. Pobierz najnowszą wersję Pythona z https://www.python.org i postępuj zgodnie z instrukcjami instalacji na komputerze PC lub Mac.

Na koniec musisz zainstalować MicroPython na Wemos. Witryna MicroPython zawiera doskonały samouczek dotyczący konfiguracji MicroPythona na ESP8266. Wystarczy postępować zgodnie z instrukcjami instalacji w Rozpoczęcie pracy z MicroPythonem na ESP8266.

Poniżej znajdują się polecenia, których użyłem:

$ esptool.py --port /dev/tty.wchusbserial640 erase_flash

esptool.py v1.3 Łączenie…. Uruchamiam fragment flashera Cesanta… Kasowanie flasha (może to chwilę potrwać)… Wymazywanie trwało 10,5 sekundy

$ esptool.py --port /dev/tty.wchusbserial640 write_flash -fm dio -fs 32m -ff 40m 0x00000 esp8266-20170108-v1.8.7.bin

esptool.py v1.3 Łączenie…. Uruchamianie odgałęzienia flashera Cesanta… Parametry Flash ustawione na 0x0240 Zapisano 589824 bajty przy 0x0 w ciągu 50,8 sekundy (92,8 kbit/s)… Wychodzę…

MicroPython jest teraz zainstalowany na twojej płycie!

Krok 5: Konfiguracja sieci

Konfiguracja sieci
Konfiguracja sieci

Chociaż MicroPython jest teraz zainstalowany na twoim Wemos, nie jest jeszcze podłączony do twojej sieci. Musisz najpierw włączyć sieć. Na komputerze Mac wykonaj polecenie SCREEN, aby rozpocząć sesję terminala szeregowego z Wemos.

$ ekran /dev/tty.wchusbserial640 115200

Gdy zobaczysz pusty ekran, naciśnij RETURN, aby zobaczyć monit:

>>

(Uwaga: aby wyjść, wpisz CTRL-A CTRL-)

Teraz włączmy dostęp klienta internetowego. Wpisz „import webrepl_setup”, aby uruchomić program instalacyjny. Wpisz E, aby włączyć WebREPL, a następnie ustaw hasło. Uruchom ponownie, aby aktywować zmiany.

>>importuj webrepl_setup

Status automatycznego uruchamiania demona WebREPL: wyłączony Czy chcesz (E)włączyć czy (D)wyłączyć go podczas uruchamiania? (Pusty wiersz, aby zakończyć) > E Aby włączyć WebREPL, musisz ustawić dla niego hasło Nowe hasło: xxxxx Potwierdź hasło: xxxxx Zmiany zostaną aktywowane po ponownym uruchomieniu Czy chcesz teraz ponownie uruchomić? (t/n) tak

Na koniec pobierz klienta Webrepl na swój komputer. Jest to opcjonalne, ale klient zawiera inne przydatne narzędzia, z których możesz chcieć skorzystać później. Na przykład webrepl_cli.py to polecenie do kopiowania plików do Wemos w składni podobnej do scp. Użyj git, aby pobrać klienta. (Zainstaluj narzędzie git, jeśli jeszcze go nie masz).

klon git

Otwórz przeglądarkę internetową i w polu adresu URL wprowadź lokalizację pobranego pliku klienta webrepl, na przykład:

file:///Users/xxxxx/wemos/webrepl/webrepl.html

Powinno to wyświetlić klienta webrepl w Twojej przeglądarce. Zanim będziesz mógł się z nim połączyć, musisz najpierw połączyć się z jego punktem dostępu WiFi. Jeśli spojrzysz na dostępną sieć WIFI dla swojego komputera, zobaczysz, że sieć zaczyna się od MicroPython-xxxx. Połącz się z tą siecią. (Ostrzeżenie: po połączeniu się z tą siecią utracisz dostęp do Internetu).

Wróć do swojego klienta webrepl i kliknij Połącz. Powinien poprosić o hasło. Wprowadź swoje hasło Wemos i powinieneś się połączyć.

Witamy w MicroPythonie!

Hasło: WebREPL podłączony >>>

Twój Wemos nadal działa w trybie AccessPoint. Chociaż jest to w porządku, wolę, aby działał w trybie stacji, w którym łączy się z domową siecią WIFI, aby mój komputer mógł uzyskać do niej dostęp przez domową sieć WIFI i nadal mieć dostęp do Internetu. Aby to zrobić, musisz utworzyć plik o nazwie boot.py z konfiguracją sieci i przesłać go do Wemos.

Oto przykładowy plik boot.py. Zmień SSID i hasło do domowej sieci WIFI. Chcę też nadać mu statyczny adres IP 192.168.0.32. Zmień go na dostępny adres IP domowej sieci WIFI.

boot.py (możesz go pobrać od dołu)

importuj gc

import webrepl def do_connect(): import network sta_if = network. WLAN(network. STA_IF) if nie sta_if.isconnected(): print('łączenie z siecią…') sta_if.active(True) sta_if.ifconfig(('192.168. 0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1')) sta_if.connect('', '') a nie sta_if.isconnected(): pass print('konfiguracja sieci:', sta_if.ifconfig()) do_connect() webrepl.start() gc.collect()

Użyj formularza "Wyślij plik" klienta Webrepl, aby wysłać plik boot.py do Wemos. Naciśnij przycisk resetowania, aby ponownie uruchomić. Jeśli nadal masz połączenie przez USB za pomocą polecenia EKRAN, zobaczysz:

łączenie z siecią… konfiguracja sieci: ('192.168.0.32', '255.255.255.0', '192.168.0.1', '192.168.0.1') Demon WebREPL uruchomiony na ws://192.168.4.1:8266 Demon WebREPL uruchomiony na ws://192.168.0.32:8266 Uruchomiony webrepl w trybie normalnym nie mógł otworzyć pliku 'main.py' do odczytu MicroPython v1.8.7-7-gb5a1a20a3 dnia 2017-01-09; Moduł ESP z ESP8266 Wpisz "help()", aby uzyskać więcej informacji. >>>

To potwierdza, że Twój Wemos jest podłączony do domowej sieci WIFI za pomocą adresu IP 192.168.0.32.

Możesz pingować ten adres IP, aby potwierdzić.

$ ping 192.168.0.32

PING 192.168.0.32 (192.168.0.32): 56 bajtów danych

64 bajty od 192.168.0.32: icmp_seq=0 ttl=255 time=9.334 ms 64 bajty od 192.168.0.32: icmp_seq=1 ttl=255 time=11.071 ms..

Krok 6: Zainstaluj główny program

Zainstaluj główny program
Zainstaluj główny program
Zainstaluj główny program
Zainstaluj główny program

Na koniec musisz zainstalować główny program, który będzie nadal działał na twoim Wemos.

Wróć do przeglądarki internetowej i uruchom program klienta webrepl. Zmień adres IP na adres IP swojego Wemos. W moim przypadku jest to teraz 192.168.0.32. Wprowadź swoje hasło Wemos i powinieneś być teraz połączony z Wemos.

Prześlijmy załączony program main.py. Pobierz załączony plik na swój komputer. Kliknij Wybierz plik, aby wybrać pobrany plik main.py, a następnie kliknij Wysłano na urządzenie.

Będziesz musiał nacisnąć przycisk Rest, aby załadować program main.py. Po naciśnięciu przycisku Resetuj zobaczysz:

łączenie z siecią…

konfiguracja sieci: („192.168.0.32”, „255.255.255.0”, „192.168.0.1”, „192.168.0.1”)

Demon WebREPL uruchomiony na ws://192.168.4.1:8266 Demon WebREPL uruchomiony na ws://192.168.0.32:8266 Uruchomiony webrepl w trybie normalnym Słucham, podłącz przeglądarkę do …

Oznacza to, że twój program main.py jest aktywowany i wyświetla się na porcie 80.

Aby przetestować, otwórz przeglądarkę internetową i wpisz

Powinno to wyświetlić ekran sterowania samochodem, jak pokazano na filmie. Jeśli przewody są prawidłowo podłączone, przyciski sterujące wyślą odpowiednie sygnały do portów GPIO, aby ruszyć samochodem.

Krok 7: Przyszłe ulepszenia

Na mojej liście v2 znajdują się następujące rzeczy do zrobienia:

  • Użyj PWM do sterowania prędkością silnika
  • Popraw interfejs sieciowy. Być może użyj frameworka aREST. Nie wierzę, że biblioteka aREST lib jest w tej chwili dostępna na MicroPythonie, więc być może będę musiał ją zhakować.

Dziękuję za przeczytanie tej instrukcji. Śledź mnie na Facebooku, Youtube i Instructables, aby uzyskać więcej projektów w przyszłości.

Zalecana: