Spisu treści:

Flash ESP-01 (ESP8266) Bez adaptera USB-szeregowego Korzystanie z Raspberry Pi: 3 kroki
Flash ESP-01 (ESP8266) Bez adaptera USB-szeregowego Korzystanie z Raspberry Pi: 3 kroki

Wideo: Flash ESP-01 (ESP8266) Bez adaptera USB-szeregowego Korzystanie z Raspberry Pi: 3 kroki

Wideo: Flash ESP-01 (ESP8266) Bez adaptera USB-szeregowego Korzystanie z Raspberry Pi: 3 kroki
Wideo: ESP8266 ESP01 WIFI-UART | Programowanie LDmicro-Roboremo 2024, Listopad
Anonim
Flash ESP-01 (ESP8266) Bez adaptera USB-szeregowego przy użyciu Raspberry Pi
Flash ESP-01 (ESP8266) Bez adaptera USB-szeregowego przy użyciu Raspberry Pi

Ta instrukcja zawiera wskazówki, jak rozpocząć programowanie mikrokontrolera ESP8266 na module WIFI ESP-01. Wszystko, czego potrzebujesz, aby zacząć (oczywiście poza modułem ESP-01) to

  • Malina Pi
  • Przewody połączeniowe
  • Rezystor 10K

Chciałem przerobić starą lampkę nocną na nowoczesną lampkę nocną LED sterowaną przez Alexa. Nic nadzwyczajnego, tylko włączanie/wyłączanie za pomocą polecenia głosowego. Zamówiłem przez Internet najprostszy moduł WIFI ESP-01, przekaźnik i przewód z diodami LED, a zupełnie zapomniałem zamówić przejściówkę USB-szeregową do programowania mikrokontrolera ESP8266. Ale ponieważ miałem Raspberry Pi i zarówno Raspberry Pi, jak i płytka ESP-01 miały piny UART, pomyślałem, że mogę użyć mojego RPi do zaprogramowania ESP8266 bez adaptera.

Krok 1: Skonfiguruj Rapberry Pi

Skonfiguruj Rapberry Pi
Skonfiguruj Rapberry Pi

Użyłem Raspberry Pi 3 Model B+, jednak instrukcje powinny działać na innych wersjach, szczególnie na modelu B.

Więc po pierwsze - musimy włączyć UART na Pi.

Przejdź do ustawień konfiguracji RPi. Uruchom w oknie terminala

$ sudo raspi-config

Przejdź do 5 opcji interfejsu, a następnie wybierz P6 Serial. Następnie zapytano Czy chcesz, aby powłoka logowania była dostępna przez port szeregowy? wybierz, ponieważ nie chcemy używać UART do uruchamiania bezgłowego Pi, ale do komunikacji z innymi urządzeniami, stąd na następnym ekranie, gdy zostaniesz zapytany Czy chcesz, aby sprzęt portu szeregowego był włączony? Wybierz. Uruchom ponownie Pi zgodnie z monitem. UART powinien być teraz włączony dla komunikacji szeregowej na pinie RX i TX Raspberry Pi 3. Uwaga: po tym powinien pojawić się nowy wpis enable_uart=1 na końcu /boot/config.txt.

Krok 2: Podłącz ESP-01 do Raspberry Pi

Podłącz ESP-01 do Raspberry Pi
Podłącz ESP-01 do Raspberry Pi

Teraz zabieramy się do łączenia wszystkiego w całość.

Po pierwsze, zidentyfikuj piny zasilania RPi 3.3V i GND (masa) do zasilania mikrokontrolera ESP8266, piny TXD (nadawanie) i RXD (odbieranie) do komunikacji oraz dwa piny ogólnego przeznaczenia do obsługi ESP8266 (piny, które można ustawić jako wysokie lub Niska). Sprawdź układ pinów na pinout.xyz lub wpisz w terminalu:

$ pinout

Po drugie, zidentyfikuj niezbędne piny na ESP-01. Ale na początku musimy mieć zrozumienie pinów ESP-01. Znalazłem wiele pomocnych zasobów dostępnych w Internecie, które mogą Ci w tym pomóc. Ten jest najkrótszy, a ten daje o wiele lepsze wyjaśnienie. W skrócie: jest 8 pinów, będziemy potrzebować 7 z nich, a mianowicie piny zasilania VCC i GND (masa) do zasilania, piny TXD i RXD do komunikacji oraz RST (reset), CH_PD (Chip Power Down, czasami oznaczone CH_EN lub chip enable) i GPIO0 do obsługi modułu. Zwykle ESP8266 działa w trybie zwykłym, ale przy wgrywaniu kodu do ESP8266 zwraca uwagę, aby był w trybie flash. Do normalnego lub normalnego trybu pracy moduł musi być podłączony do zasilania (oczywiście), ale także pin CH_PD musi być podłączony do VCC przez 10K (ta wartość zmienia się w różnych regresach, znalazłem wartości do 3K) pull-up rezystor przy rozruchu. z drugiej strony, aby wejść w tryb flashowania lub programowania, należy uziemić pin GPIO0 podczas rozruchu. Aby zapobiec nieograniczonemu przepływowi prądu przez GPIO0, gdy jest uziemiony, zaleca się podłączenie GPIO0 do uziemienia za pomocą rezystora o niskiej rezystancji 300Ω - 470Ω (więcej na ten temat tutaj). Pin RST, jak sugeruje nazwa, resetuje (lub ponownie uruchamia) MCU. Podczas normalnej pracy może być podłączony do VCC przez rezystor podciągający 10K, ale powinien być uziemiony, aby zresetować mikrokontroler. Chociaż zawsze można użyć fizycznych przycisków do uziemienia pinów RST i GPIO0 (lub nawet ręcznie połączyć przewody w celu symulacji przycisku), o wiele przyjemniejszym doświadczeniem jest użycie pinów Raspberry Pi do ustawienia wysokiego i niskiego napięcia na modułach RST i GPIO0 szpilki. Nie ma wtedy też potrzeby stosowania rezystorów 10K i 470Ω.

Teraz mając świadomość specyfiki pinów ESP-01, możemy zacząć łączyć wszystko razem. Możesz użyć poniższej tabeli jako odniesienia wraz z powyższym rysunkiem:

ESP-01 Raspberry Pi

  • VCC (3,3 V) pin #1 (3,3 V)
  • GND pin #6 (GND)
  • TXD pin #10 (RXD / BCM 15)
  • Pin RXD #8 (TXD / BCM 14)
  • CH_PD pin #1 (3.3V)
  • Styk nr 3 RST (BCM 2)
  • GPIO 0 pin #5 (BMC 5)

Podłącz VCC pin ostatni. Instancja, do której podłączono pin VCC, włączy się moduł Wi-Fi. Użyj ekranu lub minicoma, aby sprawdzić, czy RPi i ESP8266 mogą komunikować się za pomocą UART (uwaga: może być konieczne uprzednie zainstalowanie screena lub minicoma, ponieważ nie są one domyślnie zainstalowane na Raspbianie).

Korzystanie z uruchamiania ekranu:

$ ekran sudo /dev/serial0 115200

Korzystanie z minicomu:

$ sudo minicom -b 115200 -o -D /dev/serial0

Uwaga: wiele zasobów online sugeruje połączenie z ESP8266 na /dev/ttyAMA0, ale to nie działa w RPi 3 lub nowszym (w tym zero W) zgodnie z dokumentacją RPi. Połącz się przez /dev/serial0 lub /dev/ttyS0.

Po wejściu do ekranu lub minicomu użyj komend AT do komunikacji z ESP8266. Wpisz AT, a następnie naciśnij Enter, a następnie naciśnij Ctrl + J, aby wysłać polecenie. Powinieneś uzyskać odpowiedź w porządku. Listę dostępnych komend AT można znaleźć na espressiff.com lub po prostu tutaj.

Gdy urządzenia są fizycznie połączone i komunikują się ze sobą, możemy zabrać się do programowania pinów RPi GPIO i wreszcie samego ESP8266.

Krok 3: Konfiguracja oprogramowania (Python do obsługi i Arduino IDE do programowania)

CZĘŚĆ 1. Używanie Pythona do przełączania trybów ESP8266

Jak wspomniano powyżej, wygodnie jest używać pinów GPIO RPI do przełączania trybów pracy ESP8266. Napisałem dwa podstawowe kody Pythona, które przestawiają ESP8266 w tryb zwykły lub programistyczny.

Tryb zwykły: Aby przełączyć mikrokontroler w normalny tryb pracy, wystarczy go zasilić i podłączyć CH_PD przez rezystor podciągający do VCC, ale aby przełączyć MCU z trybu programowania do trybu normalnego, musimy go zresetować (pomyśl o ponownym uruchomieniu). Aby to zrobić na RPi, zamierzamy krótko ściągnąć GPIO RPi podłączone do pinu RST na ESP-01 (domyślnie pin RPi, którego użyłem do resetowania, jest ustawiony na WYSOKI). Jak krótko? Dla mnie to pytanie spekulacyjne. Możesz wypróbować różne interwały czasowe, ale okazało się, że 200 - 500 ms działa dobrze. Napisz w komentarzach, jeśli masz lepszy pomysł. Zapisz swój kod jako reset.py

#!/usr/bin/python

import RPi. GPIO jako czas importu GPIO GPIO.setmode(GPIO. BOARD) # ustawia identyfikację GPIO za pomocą fizycznych numerów pinów resetPin = 3 # identyfikuje fizyczny pin RPi podłączony do pinu ESP8266 RST GPIO.setup(resetPin, GPIO. OUT) # set reset pin jako wyjście GPIO.output(resetPin, GPIO. LOW) # spadek napięcia na pinie RST time.sleep(.2) # czekanie na 0,2 s GPIO.output(resetPin, GPIO. HIGH) # przywrócenie napięcia na pinie RST GPIO. cleanup() # zresetuj piny w RPI, aby zapobiec przyszłym ostrzeżeniom podczas uruchamiania

  • Tryb programowania: Aby przełączyć MCU w tryb programowania, musimy zasilić ESP8266 z uziemionym GPIO0 lub alternatywnie zresetować go i uziemić GPIO0 podczas rozruchu (ponownie dokładny czas trwania spadków napięcia nie jest mi do końca znany, więc nie bądź ściśle kierując się zastosowanymi wartościami). Zapisz kod jako flash.py lub pobierz poniżej. Kolejność czynności jest następująca:

    • pociągnij w dół kołek RST
    • pociągnij pin GPIO0
    • podciągnij pin RST
    • podciągnij pin GPIO0

#!/usr/bin/python

import RPi. GPIO jako czas importu GPIO GPIO.setmode(GPIO. BOARD) # ustawia identyfikację GPIO według numerów fizycznych pinów resetPin = 3 # identyfikuje fizyczny pin RPi podłączony do pinu ESP8266 RST flashPin = 5 # identyfikuje fizyczny pin RPi podłączony do pinu ESP8266 GPIO0 GPIO.setup(resetPin, GPIO. OUT) # ustaw pin resetowania jako wyjście GPIO.setup(flashPin, GPIO. OUT) # ustaw pin lampy błyskowej jako wyjście GPIO.output(resetPin, GPIO. LOW) # spadek napięcia w czasie pinu RST. sleep(.2) # potrzeba tego oczekiwania jest spekulacyjna GPIO.output(flashPin, GPIO. LOW) # spadek napięcia na GPIO0 time.sleep(.2) # potrzeba tego oczekiwania jest spekulacyjna GPIO.output(resetPin, GPIO. HIGH) # start booting ESP8266 time.sleep(.5) # czekaj aż ESP8266 wystartuje GPIO.ouput(flashPin. GPIO. HIGH) # przywróć napięcie na GPIO pinGPIO.cleanup() # zresetuj piny na RPI aby zapobiec przyszłym ostrzeżeniom runtime

W terminalu zmień uprawnienia:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Od teraz za każdym razem, gdy chcesz wejść w tryb programowania, uruchamiaj w terminalu:

$ Python /flash.py

po wgraniu kodu, aby wejść w normalny tryb pracy uruchom:

$ Python /reset.py

W tym momencie możesz również zaktualizować oprogramowanie układowe ESP8266. Istnieje wiele samouczków online, jak to zrobić, więc nie będę się zagłębiał w szczegóły, jak to zrobić.

CZĘŚĆ 2. Konfiguracja Arduino IDE

jeśli masz już zainstalowane Arduino IDE, nadal możesz chcieć przejrzeć tę sekcję, upewniając się, że Twoje IDE jest gotowe na ESP8266.

Na Rapberry Pi możesz użyć Arduino IDE do zaprogramowania swojego ESP8266. Istnieją dwa sposoby instalacji IDE na RPi:

  • za pomocą wiersza poleceń z repozytoriów za pomocą apt-get install
  • pobierz i zainstaluj ręcznie z arduino.cc.

Zdecydowanie sugeruję podążanie tą drugą ścieżką. Wersja IDE z repozytoriów wydaje się być przestarzała i na pewno będziesz musiał zrobić więcej, zanim będziesz gotowy do rozpoczęcia programowania ESP8266. Aby uniknąć kłopotów, przejdź do strony pobierania Arduino.cc i pobierz wersję Linux ARM. Następnie rozpakuj i zainstaluj: Jeśli nazwa pobranego pliku wygląda mniej więcej tak arduino-X. Y. Z-linuxarm.tar.xz, w folderze pobierania uruchom:

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

Powinno to zdekompresować plik do folderu arduino-X. Y. Z. Biegać:

$ sudo./arduino-X. Y. Z/install.sh

To powinno zainstalować IDE. Po zakończeniu instalacji uruchom IDE.

  • Z Arduino IDE przejdź do Plik > Preferencje. Poszukaj „ Dodatkowe adresy URL menedżera tablicy” u dołu okna preferencji. Wpisz https://arduino.esp8266.com/stable/package_esp8266com_index.json w polu „Additional Board Manager URLs”, kliknij przycisk „OK”.
  • Wybierz Narzędzia > Tablica: XXX > Menedżer tablic. W oknie użyj wyszukiwania lub przewiń w dół, wybierz menu płytki ESP8266 i kliknij zainstaluj. Poczekaj na zakończenie instalacji i zamknij okno.
  • Ponownie przejdź do Narzędzia > Tablica: XXX i poszukaj płyt ESP8266. Wybierz ogólny moduł ESP8266.

Teraz IDE jest gotowe do zaprogramowania ESP8266. Wpisz lub wklej żądany kod do okna IDE i zapisz go. Kliknij Prześlij. Z terminala uruchom flash.py, powinno to wprowadzić twoją tablicę w tryb programowania. Poczekaj kilka minut, aż IDE zakończy kompilację i przesyłanie (uwaga: ESP-01 zwykle ma 2 diody LED, niebieska dioda LED będzie migać podczas przesyłania kodu) i uruchom reset.py. Teraz Twoja płyta ESP-01 jest gotowa do wykonywania obowiązków.

Zalecana: