Go Down

Topic: [opgelost] ESP8266 communicatie issue (Read 5614 times) previous topic - next topic

notedop

Ben vandaag weer zo een beetje de hele dag bezig geweest... De delays werkte om de 'rare' output weg te krijgen, echter de serial buffer liep over waardoor niet de gehele data werd gelezen. Dit merkte ik bijvoorbeeld bij CWLAP command (list all access points).

Dit kwam mede doordat ik op Serial (ESP) een baudrate van 115200 gebruikte. Ik was met de ESP Mod aan het spelen die ik nog niet heb geflashed (moe'k miniscule pin solderen om te kunenn flashen enzo...).

Uiteindelijk de ESP-01 aangesloten en baudrate naar 9600 gezet.
Daarnaast heb ik met wat zoekwerk een ander stuk code gevonden wat tot nu toe perfect lijkt te werken. Die leest byte voor byte en schrijft deze weg.

Code: [Select]


#include <SoftwareSerial.h>

SoftwareSerial USBdebug(8, 9); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
// This means that you need to connect the TX line from the esp to the Arduino's pin 2
// and the RX line from the esp to the Arduino's pin 3

const unsigned int MAX_INPUT = 128;

void setup()
{
  USBdebug.begin(9600);
  Serial.begin(9600); // your esp's baud rate might be different
  initializeESP();
}

void loop()
{
  ReceiveCommands();
}

void serialEvent() {

  if (Serial.available()) // check if the esp is sending a message
  {
    //delay(1);
    while (Serial.available())
    {
      processIncomingByte(Serial.read());
    }
  }
}

void initializeESP() {
  USBdebug.println("DEBUG TEST");
  Serial.println("AT+RST");
  delay(1000);
  Serial.println("AT+CWMODE=3"); // SET UP AS ACCESPOINT AND STANDARD
  Serial.println("AT+CWSAP=\"raoul\",\"none\",11,0");
}

void ReceiveCommands() {

  if (USBdebug.available())
  {
    // the following delay is required because otherwise the arduino will read the first letter of the command but not the rest
    // In other words without the delay if you use AT+RST, for example, the Arduino will read the letter A send it, then read the rest and send it
    // but we want to send everything at the same time.

    delay(3);
    String command = "";
    while (USBdebug.available()) // read the command character by character
    {
      // read one character
      command += (char)USBdebug.read();
    }

    Serial.println(command); // send the read character to the Serial
  }
}


// here to process incoming serial data after a terminator received
void process_data (const char * data)
{
  // for now just display it
  // (but you could compare it to some value, convert to an integer, etc.)
  USBdebug.println (data);
}  // end of process_data

void processIncomingByte (const byte inByte)
{
  static char input_line [MAX_INPUT];
  static unsigned int input_pos = 0;

  switch (inByte)
  {
    case '\n':   // end of text
      input_line [input_pos] = 0;  // terminating null byte

      // terminator reached! process input_line here ...
      process_data (input_line);

      // reset buffer for next time
      input_pos = 0;
      break;

    case '\r':   // discard carriage return
      break;

    default:
      // keep adding if not full ... allow for terminating null byte
      if (input_pos < (MAX_INPUT - 1))
        input_line [input_pos++] = inByte;
      break;

  }  // end of switch

} // end of processIncomingByte


cartoonist

Thanks voor deze tips, ik zal dalijk een aantal aanpassingen maken en testen of dit mijn probleem oplost.
Ik heb namelijk nog steeds het probleem dat na een tijdje de output op usbdebug steeds 'vager' wordt. Uit frustratie heb ik het een aantal dagen laten liggen maar ik wil het hoe dan ook oplossen :-D.
Kan mogelijk veroorzaakt worden door de 3.3V-5V converter. Heb zelf wel wat onverklaarbare problemen met die level-converters meegemaakt. Daarom sluit ik de ESP8266 nu aan met een weerstandnetwerk 2k2 vanaf TX-UNO naar RX-ESP met 4k7 parrallel naar massa. om de 5Vtt data naar ca. 3.3V aan te passen. De TX-ESP sluit ik direct aan op de RX-UNO. Voor mij werkt dat goed maar oppassen dat je de draden niet per ongeluk verwisselt, dat zou de ESP dan mogelijk kunnen beschadigen. ???? wie weet .........

De ESP8266 Specifications schrijft hierover:

Quote
All digital IO pins are protected from over-voltage with a snap-back circuit connected between
the pad and ground. The snap back voltage is typically about 6V, and the holding voltage is 5.8V.
This provides protection from over-voltages and ESD. The output devices are also protected
from reversed voltages with diodes.
Volgens de een zal de ESP beschadigen bij een spanning > 3.6V op een I/O pin en volgens de ander (datasheet)niet.
In ieder geval zal de ESP wel beschadigd raken als de voedingsspanning boven de 3.6V komt, dat is zeker.
You do not need a new P.C., you need a new O.S.  Linux is free, safe, easy, fast and reliable.

nicoverduin

Ik heb toen ik de ESP8266 nog aan de Arduino hing, nooit enige level conversie of wat dan ook gebruikt. Werkte prima. Alleen de voeding op 3.3V gezet met een DC-DC convertertje
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

notedop

Kan mogelijk veroorzaakt worden door de 3.3V-5V converter. Heb zelf wel wat onverklaarbare problemen met die level-converters meegemaakt.
Ik had dat vermoeden in eerste instantie ook. Ik had een stuk of 5 level converters gekocht omdat ik nog een batch ESP's vanuit china verwacht. Komt helaas met de boot dus duurt nog wel even. Enfin, de level converters moest ik zelf de pins op solderen. Nou heb ik vroeger in de brugklas ooit weleens een gesoldeerd maar nooit met elektronica. De converter was dan ook mijn eerste try wat de kans natuurlijk groter maakte dat hier iets fout is/was gegaan. Zodoende heb ik een 2de converter gesoldeerd maar ik had toch dezelfde resultaten, wazige data.

Vooralsnog lijkt het omlaag zetten van de baudrate en direct wegschrijven van de gelezen bytes de beste oplossing.

Ik heb trouwens wel gisteren gemerkt dat ik iets aan mijn bekabeling moet doen. Heb geen male/female kabeltjes enkel male/male en female/female. Dit zorgt ook ook af en toe voor wat storingen.

Hebben jullie nog tips wat betreft electronica webwinkels?

notedop

Pff volgens mij is me ESP-01 zojuist gebricked.... werd opeens rete warm en geeft totaal geeft response meer. Zelfs via direct USB verbinding... RIP

nicoverduin

Wat werd er heet? De chip of die led er net naast.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

cartoonist

Pff volgens mij is me ESP-01 zojuist gebricked.... werd opeens rete warm en geeft totaal geeft response meer. Zelfs via direct USB verbinding... RIP
Dat klinkt niet goed, als een component erg heet (of veel heter dan normaal) wordt duidt dat op te veel stroom en daar kunnen ze i.h.a. slecht tegen, dan smelt vaak een of meerdere van  de interne verbindingsdraadjes tussen de aansluitpinnen en de chip zelf.

Ik had zelf ook een paar keer het idee dat in een ESP gebricked had, dat gebeurde steeds nadat ik het software commando AT+CIUPDATE had gegeven. Het kostte me wat problemen maar ik kon ze uiteindelijk opnieuw flashen. De meeste problemen had ik doordat er voor linux en win-xp geen goede flashprogramma's bestaan. Uiteindelijk via m'n laptop en Win7 ze opnieuw geflashed en ze werken prima.

Wat betreft elektronica webwinkels, nee ik heb geen voorkeur of tips. Koop zelf zowel via Ebay, Banggood als Aliexpress. Gelukkig heb ik nog een goed gevulde voorraad van de meest gebruikelijke componenten uit de tijd dat ik nog professioneel met elektronica bezig was. Ik zou ook niet weten hoe ik me moest redden als ik voor ieder condensatortje of transistortje een weborder moest plaatsen of naar een lokale leverancier moest zoeken.
You do not need a new P.C., you need a new O.S.  Linux is free, safe, easy, fast and reliable.

notedop

Eigenlijk werd het hele board heet.
Ik had gelezen dat de led ook nog weleens wil doorbranden maar dat is nog niet gebeurd.

Ik heb inmiddels mijn andere ESP-MOD weten te flashen met heel wat gekloot en gerommel met de soldeer jumper(tje)....

cartoonist

Ik heb toen ik de ESP8266 nog aan de Arduino hing, nooit enige level conversie of wat dan ook gebruikt. Werkte prima. Alleen de voeding op 3.3V gezet met een DC-DC convertertje
Op manier heb ik wel een stel NRF24L01 module's gebricked. Daarvan werd door sommigen ook beweerd dat de I/O pinnen 5V compatible waren. Dat waren ze ook, maar niet voor lang.
You do not need a new P.C., you need a new O.S.  Linux is free, safe, easy, fast and reliable.

Go Up