AT komutu seri monitörde yanıt vermiyor

AT komutlarını ESP8266 'ya göndermeye çalışıyorum. Yeniden kodladım ESP8266 http://imgur.com/a/J8Ueh Bu öğreticiyi takip ettim http://remotexy.com/tr/help/esp8266- firmware-Güncelleştirme/ ve umarım hiçbir hata olmadığından başarılı bir şekilde tekrar yanıp söner.

Bu programı yüklediğimde http://www.pastebin.com/frhZY7tD AT’i çalıştırmaya çalışıyorum seri monitörde 9600 baud hızında komut ve sonra cevap yok.

Aşağıda devrem nasıl görünüyor

enter image description here

#include "SoftwareSerial.h"

SoftwareSerial esp8266(2, 3);//RX, TX

void setup()
{
  Serial.begin(9600);//serial port used for debugging
  esp8266.begin(9600); //your ESP's baud rate might be different
}

void loop()
{
  if(esp8266.available()) //check if the ESP is sending a message
  {
    while(esp8266.available())
    {
      char c = esp8266.read(); //read the next character.

      Serial.write(c); //writes data to the serial monitor
    }
  }

  if(Serial.available())
  {
    delay(10); //wait to let all the input command in the serial buffer
   //read the input command in a string
    String cmd = "";
    while(Serial.available())
    {
      cmd += (char)Serial.read();
    }
   //send to the esp8266
    esp8266.println(cmd); 
  }
}

AT komutunu çalıştırmayı denemek -

enter image description here

Gönder butonuna tıkladıktan sonra aşağıdaki gibi boş bir cevap gösterir -

enter image description here

Güç kablosunu çıkardığımda ve tekrar taktığımda, seri monitörde bozuk bir mesaj yazdırıyor. RX üzerindeki gerilimi de kontrol ettim, 3.5V civarındaydı, aynı zamanda da Tamam gibi görünüyordu.

enter image description here

WiFi firmware'ini ESP8266 'a kopyaladıktan sonra AT firmware’ine geri gönderdikten sonra bu sorunla karşılaşıyorum. Görünüşe göre AT ürün yazılımı başarıyla yanıp sönmedi, bu yüzden aşağıdaki komutu kullanarak her şeyi silmeye çalıştım.

esptool.py --port/dev/ttyUSB0 erase_flash

C:\Users\williams>esptool.py --port COM4 -b 9600 erase_flash
esptool.py v1.3
Connecting...................

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for pack
et header

Yukarıdaki komutu çalıştırmadan önce devremde aşağıdaki gibi değişiklikler yaptım: -

enter image description here

Güncelleştirme

115200 baud hızında ESP8266'yı yeniden başlattım ve boş bir program yükledikten sonra AT komutlarına yanıt vermeye başladım. Yukarıda olduğu gibi bağladım, sadece değişiklik TX - TX ve RX - RX. Peki!

AT


OK
AT


OK
AT+GMR

AT version:0.50.0.0(Sep 18 2015 20:55:38)
SDK version:1.4.0
compile time:Sep 18 2015 21:46:52
OK

Eh, Arduino seri monitör penceresinden AT komutlarını ESP8266 'a göndermek ve komuta ESP8266 cevabını yazdırmak istiyorum. Yukarıdaki programı yüklediğimde yanıt vermiyor, boş ekran gibi aynı sonuç bu çok garip. Değil mi?

5
@Nick Neden birisi referansımı başka bir gönderiye sohbete taşıdı? Orada bir anlamı yok, ya bir "cevap" değil. Ayrıca, eğer bana hitap ediyorsanız, bir bildirim almadım, ancak yine de gösterimde kullanmadınız.
katma yazar WestDiscGolf, kaynak
Soruyla ilgili yorumlar soruyu açıklığa kavuşturmak içindir - cevap vermemek. Bir cevabınız varsa lütfen gönderin.
katma yazar Nick Gammon, kaynak
Yorumlar uzun tartışmalar için değildir; bu ileti dizisi oldu sohbete taşındı .
katma yazar Nick Gammon, kaynak
Sadece bazı yorumları sohbete taşımak özellikle kolay değil. İsterseniz bu özel yorumu tekrarlayabilirsiniz. Dediğim gibi, sorular altındaki yorumlar veya uzun bir soru/cevap oturumu olması amaçlanmadı
katma yazar Nick Gammon, kaynak
Diğerlerinin söylediği. Bu çıktıya bakarken düşündüğüm ilk şey "yanlış baud hızı" idi.
katma yazar gaurwraith, kaynak

5 cevap

ESP'nin AT ürün yazılımı muhtemelen daha yüksek bir baud hızı için yapılandırılmış, 115200 tipik. SoftwareSerial yalnızca 9600 baud'a kadar güvenilir bir şekilde çalışır. ESP'nin cevabı muhtemelen karışmış olacak olsa da, 115200'de “baud komutlarını” kör bir şekilde göndermeniz için "yeterince güvenilir" bir şekilde iletebilir. Yani şunlardan birini yapmanız gerekir: ESP'nin baud hızını azaltın veya Uno'nun ESP için seri bağlantı portunu kullanın; bu, Uno'nun terminal çıkışından vazgeçmek ve Uno kodunu her güncellemeniz gerektiğinde PC'nizi yeniden bağlamanızın acı verici olmasını sağlar. ESP’nin baud oranını değiştirme sürecini daha ayrıntılı olarak açıkladım. bu yanıtı .

Güncelleme: Çeşitli AT komut yorumlayıcı devirlerine aşina değilim; ESP'lerimin tümü, üzerlerinde bulunan firmware rev'i ile çalışıyor; "AT + GMR" (sürüm bilgisini göster) yanıtlar:

AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04


There is no AT+CIOBAUD command listed in my ESP8266 AT Instruction Set document rev 1.5.3). The only one listed that affects baud rate - and the one I use - is:

AT+UART_DEF=,,,,

veya:

AT+UART_DEF=9600,8,1,0,0

9600 baud için, 8 bit, 1 stop-bit, parite yok, akış kontrolü yok. Muhtemelen biliyorsunuzdur, ancak tam olarak, ESP’nin baud hızını değiştirdikten hemen sonra iletişimi kaybedeceğinizi, ardından yerel baud hızını eşleşecek şekilde değiştireceğinizi unutmayın.

Update2:

Bu program pastebin.com/dquCNYJj Ne yanlış olduğumdan emin değilim   yapıyor

Bu kod SoftwareSerial’ı 115200 baud’a ayarlar; bu hızda veri alacak kadar hızlı çalışamaz.

Güncelleme 3:

ESP'nin donanım yazılımını başarısız bir şekilde güncellediğinizden beri, neler olduğunu bilmek zor veya imkansızdır. Ekran görüntüsünüzdeki çıktı, ESP ile terminaliniz arasındaki baud uyumsuzluğunun sonucuna benziyor. Doğru yanıt vermesini beklemeden ve diğer sorunları teşhis etmek için çıktısına güvenmeden önce ESP'ye temiz bir üretici yazılımı güncellemesi yapmanız gerekir.

Güncelleme 4:

Aynı şeyden bahsettiğimizden emin değilim, bu yüzden eğer bunu zaten biliyorsan, lütfen beni affet; en az üç farklı baud hızı hakkında konuşuyoruz:

  1. ESP'ye yeni üretici yazılımı yanıp sönerken kullanılan oran;
  2. Her önyüklendiğinde yeni bellenimin dinlemeye başlayacağı varsayılan oran;
  3. ESP ile yeni ürün yazılımı ve Arduino veya ESP dışındaki bir başka cihaz arasında herhangi bir zamanda kullanılan gerçek oran.

Benim kendi tecrübem fabrikada kurulmuş AT Tercüman ürün bilgisini kullanmaktır. Bunu hiçbir zaman güncellemeye ihtiyacım olmadığından kişisel deneyimim yok (1).

(2) ve (3) Arduino tarafından programlanabilir. İlk önce yeni bir ESP kullandığımda (veya AT Tercümanını yeni başlattıktan sonra) fabrika varsayılan baud hızında dinleyecektir (benimkiler varsayılan olarak 115200 olarak ayarlanmıştır). Geçerli hızı (yeniden başlatma sırasında kaydedilmemiş) ve/veya varsayılan baud'u (gelecekteki tüm oturumlar için kaydedilmiş) değiştirme komutları vardır.

Bir Arduino yazılımı seri portuyla kullanmak için hemen hemen her zaman varsayılan oranını 9600 olarak değiştiririm. Bu, ESP ile konuşmak için bir Arduino kullanarak, yeni bir cihaz için başlattığım şey. ('# ...' yorumlarımı iletme):

# Start talking at the ESP's default rate (115200 on my factory-fresh ones).
AT+RST                         # Reset
AT+UART_DEF=9600,8,1,0,0       # Default baud to 9600,N,8,1,no flow ctl
# Here, change the Arduino's port to match: 9600 in this case.
AT+CWMODE=1                    # Station mode (client)
ATE0                           # Command echo off

Şu andan itibaren, ESP 9600 baud'da, İstemci olarak İstasyon Modunda, hiçbir komut eko olmadan dinleyerek uyanacak.

1
katma
Evet, bu kod, 2 ve 3 numaralı pinlerdeki bir ESP için bir "terminal programı" dır. Lütfen sorunuzu şu bilgilerle güncelleyin: Ne çalışmaya başladı? İşe yaramayan, yani ne yaptın; ne olacağını umdun; bunun yerine ne oldu?
katma yazar caryden, kaynak
Yanıp sönme sırasındaki oran burada önemli değil - Arduino ve ESP'nin iletişim sırasında kullandığı oranlar. Firmware'i çalıştırdığınızda (zaten yapmazlarsa) eşleşmesi gerekir, Arduino ile bir iletişim oturumu başlatır.
katma yazar caryden, kaynak
Sorumu güncelledim. Görür müsün lütfen
katma yazar ajoos, kaynak
9600 baud hızında çalışan ESP8266 için AT yazılımını kararlı olarak önerebilir misiniz? AT firmware ile ilgili bir sorun olduğunu düşünüyorum, C: \ Users \ williams> esptool.py - port COM5 - baud 57600 write_flash 0 ai-thinker- 0.9.5.2.bin gibi yüklendi
katma yazar ajoos, kaynak
Teşekkürler JRobert. @Rulul Rastogi'nin önerdiği gibi çalıştı. 115200 baud hızı üzerinde çalışıyor, ben sadece boş program yükledim. Söz konusu olan programımı çalıştırdığımda, AT komutlarına yanıt vermediğinden çalışmıyor. Devremi sorudaki gibi bağladım. Neden böyle olduğu hakkında bir fikrin var mı? Bu program ESP8266'ya komut göndermek ve ESP8266'nın yanıtını okumak ve Seri Monito'ya yazdırmak değildir.
katma yazar ajoos, kaynak
Evet aynı. Bazılarım kodumda esp8266.begin (9600); ;
katma yazar ajoos, kaynak
Baud oranını değiştirmeye çalıştım, önce programımda sonra oluşturup ardından seri monitörde aynı baud hızını yükledim. Örneğin, esp8266.begin (115200); daha sonra derleyin, ardından seri monitöre 115200 yükleyin, sonra AT + CIOBAUD = 9600 komut satırını yürütünüz, ancak her seferinde boş cevap yoktur. 9600, 38400, 57600, 74880, 115200 ile aynı işlemi tekrarladım ve seri monitöre herhangi bir komut gönderdiğimde, her seferinde sadece boş cevap vermez.
katma yazar ajoos, kaynak
Bunu görseniz bile, imgur.com/a/J8Ueh ESP’yi 9600 baud hızında yeniden açtım
katma yazar ajoos, kaynak
ESP'de ve terminalde aynı baud oranını koruyarak birden fazla kez denedim ve farklı baud hızını denedim, ancak şimdi hiç şans yok Bu komutu kullanarak ESP8266 donanım yazılımını silmeye çalışıyorum esptool.py --port COM4 -b 9600 erase_flash ancak bir hata alınıyor esptool.py v1.3 Bağlanıyor ................... Önemli bir hata oluştu: ESP8266'ya bağlanılamadı: Beklemede zaman aşımına uğradı pack et başlığı
katma yazar ajoos, kaynak
Sorumu güncelledim ve daha fazla ayrıntı ekledim. Bakınız
katma yazar ajoos, kaynak
Bu program pastebin.com/dquCNYJj 'dir Ne yaptığımdan emin değilim
katma yazar ajoos, kaynak
Önerilen komutu yürüttüm ancak cevap yok, boş cevap :( Bu benim ESP8266 flaş ayarlarım imgur.com/a/scfty
katma yazar ajoos, kaynak

Son fotoğrafınızda, Arduino'nuzun Rx'ini ESP8266'nızın Tx'ine bağlamanız gerekir.

Bunu yaptıysanız ve işe yaramazsa, kodun veya sorunlu bağlantıların olup olmadığını belirlemek için bir örnek çizim yüklemeyi deneyin. Bu WiFi kodunu değiştirmenizi veya ESP8266Community'dekilerden başka kitaplıklar eklemeyi gerektirmediğinden, WiFiScan örneğini kullanmanızı öneririm .

1
katma
SoftwareSerial esp8266 (2, 3);//RX, TX - Bu satır kendi yönetimini yapmıyor mu? veya Arduino’nun RX/TX’ini mi kullanmam gerekiyor?
katma yazar ajoos, kaynak

Öncelikle ESP8266'ya uygun voltaj ve akım verip vermediğinizi kontrol ediniz. Doğru voltaj ve akım alamazsa, çalışmadığını gördüm.

İkincisi, ESP8266'nın Rx, Tx'ini Arduino'nun Rx, Tx'ine bağlayın. Ardından, bir şey yapmayı deneyin, yalnızca boş setup() ve loop() işlevine sahip boş taslak yükleyin.

Ardından seri monitörü açın baud hızınızı seçin (çoğunlukla 9600 veya 115200) ve siz de bitirdiniz! Seri monitör giriş alanı üzerinden "AT" gönderilmesi, seri monitör yanıt penceresinde "TAMAM" gösterecektir.

0
katma
Tamam .. anlatayım! Dedin ki, önerdiğin gibi işe yaradı. Yani, 9600 baud hızında çalıştı ama 115200 baud hızında değil mi?
katma yazar Brendan Foote, kaynak
Boş bir program çalıştırdığımda 115200 baud hızında çalıştı. Benim sorum olan ve aynı baud hızında olan adımları takip ettiğimde işe yaramaz
katma yazar ajoos, kaynak
Sorumu güncelledim, lütfen kontrol et
katma yazar ajoos, kaynak
İstediğin gibi çalıştı. 115200 baud hızı üzerinde çalışıyor. Söz konusu olan programımı çalıştırdığımda çalışmıyor. Devremi sorudaki gibi bağladım. Neden böyle olduğu hakkında bir fikrin var mı? Bu program ESP8266'ya komut göndermek ve ESP8266'nın yanıtını okumak ve Seri Monitöre yazdırmak değildir.
katma yazar ajoos, kaynak

Bunun bir donanım bağlantısı sorunu olması mümkün mü? ESP8266'nın veri sayfasına göre, maksimum voltaj girişinin 3.6V olduğunu, ancak doğrudan Arduino'ya bağlanarak, Arduino'nun sinyal çıkışı 3.6V'den fazla olacağını belirtir. (Yaklaşık 5V çıkış)

Table

Doğrudan bağlanmak yerine, önce Seviye kaydırmayı gerçekleştirmek isteyebilirsiniz? (5V ila 3.3V, tersi)

(İşte ESP8266 veri sayfasına bağlantı: https://nurdspace.nl/images/e /e0/ESP8266_Specifications_English.pdf )

0
katma
Macun + USB-UART kullanarak bağlanmaya çalıştım, işe yaramadı
katma yazar ajoos, kaynak
ESP8266 RX’inde 3.6V var, multimetre ile kontrol ettim. Ben de bazı dirençler kullanarak yaptım, aynı zamanda 2xAA pil kullanmaya çalıştım, fakat aynı türde bir sorunla karşılaştım ve yaklaşık 3,6 V - ESP8266 'a sağladım ama şansım olmadı.
katma yazar ajoos, kaynak
AT Komutlarını bunun yerine bir USB-UART adaptörüyle göndermeyi denediniz mi?
katma yazar T. Edison, kaynak

Bunu dene:

/*
  Software serial multple serial test

 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.

 The circuit:
 * RX is digital pin 2 (connect to TX of other device)
 * TX is digital pin 3 (connect to RX of other device)

 Note:
 Not all pins on the Mega and Mega 2560 support change interrupts,
 so only the following can be used for RX:
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

 Not all pins on the Leonardo and Micro support change interrupts,
 so only the following can be used for RX:
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example

 This example code is in the public domain.

 */
#include 

SoftwareSerial mySerial(2, 3);//RX, TX

void setup() {
 //Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ;//wait for serial port to connect. Needed for native USB port only
  }


 //Serial.println("Goodnight moon!");

 //set the data rate for the SoftwareSerial port
  mySerial.begin(115200);
 //mySerial.println("Hello, world?");
}

void loop() {//run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}
0
katma
Bu kodun neden sorunu çözdüğünü açıklayın.
katma yazar Hugo, kaynak