Skocz do zawartości

Shield WiFi do Arduino


Behlur_Olderys

Rekomendowane odpowiedzi

Cześć,

Staram się ostatnio zrobić taki minimalistyczny shield do Arduino, który pozwala podłączyć do niego m.in. układ ESP8266 (moduł WiFi).

Oprócz tego jest miejsce na wtyczkę do sterownika silnika krokowego (A4988) i do enkodera z drukarki + zasilanie 3v3.

 

Niestety, pomimo podążania za kilkoma ciekawymi tutorialami:

https://www.deviceplus.com/how-tos/arduino-guide/esp8266-setup-tutorial-using-arduino/

http://cordobo.com/2300-flash-esp8266-01-with-arduino-uno/

 

 

nie potrafię dojść do momentu, żebym mógł wysłać najzwyczajniej jakąś komendę do tego ustrojstwa (mówię o ESP) i otrzymać sensowną odpowiedź.

Najdalej doszedłem do miejsca, gdzie na komendę "AT+CWLAP" dostałem odpowiedź ERROR, po czym niebieska dioda zaczęła się cały czas palić, i teraz w ogóle nie gaśnie.

 

Korzystam z kodu z pierwszego linka:

 

#include <SoftwareSerial.h>
 
const byte rxPin = 2; // Wire this to Tx Pin of ESP8266
const byte txPin = 3; // Wire this to Rx Pin of ESP8266
 
// We'll use a software serial interface to connect to ESP8266
SoftwareSerial ESP8266 (rxPin, txPin);
 
void setup() {
  Serial.begin(9600);
 
// You may need to uncomment this block for the first run:
//  ESP8266.begin(115200); // Change this to the factory baudrate used by ESP8266
//  delay(1000);
//
//  Serial.println("Setting BAUDRATE to 9600");
//  ESP8266.println("AT+IPR=9600");
//
  ESP8266.begin(9600); 
  
}
bool okReceived = false;
 
void loop() {
 
  if (Serial.available() > 0)
  {
    String command = Serial.readStringUntil('\n');
    Serial.println("Command Sent: " + command);
    Serial.println();
    ESP8266.println(command);
  }
 
  int responseCounter = 0;
  if (ESP8266.available() > 0)
  {
    while (ESP8266.available() > 0)
    {
      if (responseCounter == 0)
      {
        Serial.println("Response Received:");
      }
      
      String response = ESP8266.readStringUntil('\n');
      Serial.println(response);
      responseCounter++;
    }
    Serial.println();
    Serial.println("============");
    Serial.println();
  }
 
  
}

 

Może ktoś coś pomoże w ekspertyzie? Ja wracam do lutowania tymczasem,  podłączę wszystkie wyprowadzenia z ESP na jakieś zworki i pozwieram do VCC (3v3, arduino jest na 5v) albo do GND, w końcu może coś się uda :)

 

Oto zdjęcia mojego prototypu + Arduino dla przypomnienia. (wyprowadzenia na wtyczki nie grają specjalnej roli w tej komedii):

1.thumb.jpg.ca82920a91dda0389002379a2481fcc3.jpg

 

2.thumb.jpg.12af13220c64ca40729d0aef15e3a185.jpg

3.thumb.jpg.e6ff6cba14cb052bc91337730613362a.jpg

 

4.thumb.jpg.165224ae365501f427190406f1a6c857.jpg

Edytowane przez Behlur_Olderys
Odnośnik do komentarza
Udostępnij na innych stronach

Nie ma spięcia chyba żadnego.

Po podpięciu "na czysty schemat" Arduino i szukaniu dobrego baudrate'a okazało się, że system 'nadaje' na 74880 baud rate, bardzo dziwne.

Po resecie widzę na serialu takie coś:

ets Jan  8 2013,rst cause:1, boot mode:(3,6)

load 0x40100000, len 1856, room 16 
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8 
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8 
tail 0
chksum 0x79
csum 0x79

2nd boot version : 1.5
  SPI Speed      : 40MHz
  SPI Mode       : DIO
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

rf cal sector: 249
rf[112] : 00
rf[113] : 00
rf[114] : 01

SDK ver: 1.5.4.1(39cb9a32) compiled @ Jul  1 2016 20:04:35
phy ver: 972, pp ver: 10.1

 

I nic więcej się nie dzieje. Niebieska dioda dalej świeci non-stop. Ktoś, coś? :)

Odnośnik do komentarza
Udostępnij na innych stronach

1) A nie myślałeś, żeby sflashować ESP żeby chodził jako arduino? Gdzieś widziałem taki patent. 

2) Spróbuj pogadać z ESP przez zwykły terminal w kompie przy pomocy przejściówki usb-uart - ja tak zawsze uruchamiam moduły radiowe. Jak już wiem jakie komendy działają, to wbijam to na mikrokontroler :)

  • Lubię 2
Odnośnik do komentarza
Udostępnij na innych stronach

A masz coś dobrego (konwerter) do polecenia? Z uwzględnieniem faktu, że ESP działa na 3v3 (nie wiem, czy w tych konwerterach jest to brane pod uwagę, czy raczej muszę zostać przy dzielniku napięcia?)

Edytowane przez Behlur_Olderys
Odnośnik do komentarza
Udostępnij na innych stronach

OK coś zadziałało - flash za pomocą micropython, ale nie odtworzę teraz kroków na 100% :)

 

Zasadniczo jestem połączony przez "czyste" arduino:

RX od esp idzie przez dzielnik do TX arduino (wtf?)

TX od esp idzie do RX arduino bez niczego

VCC, GND - wiadomo, GND i 3v3 (mam AMS1117 żeby było więcej prądu)

CH_PD - przez 1k rezystor do 3v3

i teraz zabawna część:

Żeby sflashować micropy musiałem podpiąć GPIO 0 do GND (chyba).

Wtedy zadziałały komendy (windows->cmd)

[ wcześniej zainstalowałem esptool wg tego linka:]

http://cordobo.com/2300-flash-esp8266-01-with-arduino-uno/

 esptool.py --port COM3 erase_flash

esptool.py --port=/dev/tty.wchusbserial1410 --baud 115200 --no-stub write_flash --flash_size=1MB 0 Downloads/esp8266-20171101-v1.9.3.bin

(dziękuję ludziom stąd: https://github.com/espressif/esptool/issues/249)

 

Plus kilka manualnych resetów i...

 

MicroPython v1.9.4-8-ga9a3caad0 on 2018-05-11; ESP module with ESP8266
Type "help()" for more information.
>>> help()
Welcome to MicroPython!

pokazuje się na SerialMonitor, a wśród WiFi mam dostępną sieć MicroPython :)

 

Teraz: jak wysłać coś z Arduino do tego ustrojstwa, żeby szło przez sieć - będę badał, ale już jest najgorsze za mną :)

Pozdrawiam!

Odnośnik do komentarza
Udostępnij na innych stronach

Jak zadziałało to dobrze :-)

Nie znam się na tym ale kupiłem taki komplet ESP 8266 kiedyś, z adapterem. O tym adapterze takie coś piszą:

Using an ESP8266 with a traditional Arduino requires logic level translation of the UART signal. That is what this adaptor provides. It also provides a dedicated 5V -> 3.3V voltage regulator so you don't stress the Arduino's rather underpowered 3.3V regulator.

Ale spróbowałem RPi zanim zacząłem się z tym bawić :-)

 

ESP 8266  ESP-01S.JPG

Odnośnik do komentarza
Udostępnij na innych stronach

Arduino spok

11 godzin temu, Behlur_Olderys napisał:

A masz coś dobrego (konwerter) do polecenia? Z uwzględnieniem faktu, że ESP działa na 3v3 (nie wiem, czy w tych konwerterach jest to brane pod uwagę, czy raczej muszę zostać przy dzielniku napięcia?)

Najlepsze są na układach FTDI (ft232 na przykład), ale na zajęciach ze studentami używam z powodzeniem dużo tańsze konwertery na układzie Ch340g i sprawują się bardzo dobrze :)

Ja ogólnie nie bawiłbym się w translacje poziomów logicznych, jakieś dzielnik itp i zasiliłbym arduino i esp z jednego stabilizatora 3V3 lub jakiejś przetwornicy. Wtedy masz pewność, że wszystkie poziomy będziesz miał zgodne i mniej kombinacji będzie :)

Odnośnik do komentarza
Udostępnij na innych stronach

19 minut temu, sidiouss napisał:

Arduino spok

Najlepsze są na układach FTDI (ft232 na przykład), ale na zajęciach ze studentami używam z powodzeniem dużo tańsze konwertery na układzie Ch340g i sprawują się bardzo dobrze :)

Ja ogólnie nie bawiłbym się w translacje poziomów logicznych, jakieś dzielnik itp i zasiliłbym arduino i esp z jednego stabilizatora 3V3 lub jakiejś przetwornicy. Wtedy masz pewność, że wszystkie poziomy będziesz miał zgodne i mniej kombinacji będzie :)

Arduino z 3v3 ma chyba 8MHz, a 5v - już 16MHz, dla mnie to duża różnica bo walczę o każdą mikrosekundę :) oczywiście myślałem też i o tym. Być może, po ogarnięciu elektroniki i softu jako tako, w ogóle całą płytkę razem z uP zaprojektuję sam, żeby koszty reprodukcji były minimalne ;)

 

Odnośnik do komentarza
Udostępnij na innych stronach

1 godzinę temu, Behlur_Olderys napisał:

Arduino z 3v3 ma chyba 8MHz, a 5v - już 16MHz, dla mnie to duża różnica bo walczę o każdą mikrosekundę

 

max częstotliwość pracy zależy do tego jaki konkretnie procesor tam siedzi. 10MHz każdy pociągnie przy 3,3V, a może się udać więcej np. 12MHz lub nawet 16MHz

poza tym jeśli zależy ci na mocy obliczeniowej to dlaczego nie 20MHz? Przy napięciu 5V większość procesorów Atmela może z taką częstotliwością pracować, a udaje się podkręcić do 24MHz

 

konwersję napięć lepiej zrobić na tranzystorze bo lepiej pracują niż dzielniki rezystorowe. Jeśli nie chcesz ich robić sam to można kupić gotowe. Pracują bez najmniejszych problemów i w dodatku w obie strony ... sprawdziłem

 

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

1 godzinę temu, ZbyT napisał:

max częstotliwość pracy zależy do tego jaki konkretnie procesor tam siedzi. 10MHz każdy pociągnie przy 3,3V, a może się udać więcej np. 12MHz lub nawet 16MHz

poza tym jeśli zależy ci na mocy obliczeniowej to dlaczego nie 20MHz? Przy napięciu 5V większość procesorów Atmela może z taką częstotliwością pracować, a udaje się podkręcić do 24MHz

 

konwersję napięć lepiej zrobić na tranzystorze bo lepiej pracują niż dzielniki rezystorowe. Jeśli nie chcesz ich robić sam to można kupić gotowe. Pracują bez najmniejszych problemów i w dodatku w obie strony ... sprawdziłem

 

pozdrawiam

Dzięki za dobre rady. Oczywiście w docelowym rozwiązaniu (którym zajmę się po ukończeniu testów działającego prototypu, czyli pewnie za parę lat przy moim wolnym czasie) będę rozważał różne opcje procesorów itp. żeby wszystko było jak najbardziej elegancko, a teraz robię tak, żeby działało :)

Odnośnik do komentarza
Udostępnij na innych stronach

Is ESP8266 I/O really 5V tolerant?

Dla sygnalow cyfrowych mozna wstawic szeregowo rezystor kilku kΩ pomiedzy ESP a Arduino 5V.

 

Bardzo polecam jednak programowac samo ESP w Arduino i wykorzystac je w roli mikrokontrolera.

https://sourceforge.net/projects/arduino-dslr-remote-controller/

Odnośnik do komentarza
Udostępnij na innych stronach

12 godzin temu, r.ziomber napisał:

Is ESP8266 I/O really 5V tolerant?

Dla sygnalow cyfrowych mozna wstawic szeregowo rezystor kilku kΩ pomiedzy ESP a Arduino 5V.

 

Bardzo polecam jednak programowac samo ESP w Arduino i wykorzystac je w roli mikrokontrolera.

https://sourceforge.net/projects/arduino-dslr-remote-controller/

Coraz bardziej przekonuję się do tego pomysłu (porządnie opakowane ESP8266 programowalne przez zwykłe USB a nie zabawy z rezystorami i Arduinami plus jakiś fajny ADC w stylu MCP3208) , ale że na razie mam dość zakupów do mojego projektu, to po prostu będę musiał na jakiś czas darować sobie WiFi na rzecz bardziej przyziemnych interfejsów :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.