Spørsmål:
EPS8266 ESP-01: LED-manipulasjon ser ut til å forstyrre seriell kommunikasjon
user2224350
2017-08-15 04:11:41 UTC
view on stackexchange narkive permalink

Jeg leker med dette udp-eksemplet. Både dette og blinkeksemplet fungerer perfekt. Nå vil jeg bruke LED-en til å indikere hva ESP gjør for øyeblikket, samt å lese noen data over Serial. Koden min ser slik ut:

  ugyldig oppsett () {Serial.begin (115200); Serial.setTimeout (500); while (Serial.available () == 0) {} String password = Serial.readStringUntil ('.'); Serial.println (passord); WiFi.begin (ssid.c_str (), password.c_str ()); // pinMode (LED_BUILTIN, OUTPUT); mens (WiFi.status ()! = WL_CONNECTED) {// digitalWrite (LED_BUILTIN, LOW); forsinkelse (250); // digitalWrite (LED_BUILTIN, HIGH); forsinkelse (250); } Serial.println ("tilkoblet"); Udp.begin (localUdpPort);}  

Det fungerer bra, men hvis jeg ikke kommenterer ledelinjene, ser det ikke ut til at seriekommunikasjonen fungerer lenger. Alle tingene som er skrevet ut på Serial Monitor er nå rotet opp (manglende tegn, ...). Er det et problem med koden min, eller hva annet kan være mulig å gå galt her?

EDIT: Jeg prøvde nylig den samme koden igjen, men brukte en ekstra strømforsyning (3,3V, 500mA) til brikken. Dette løste imidlertid ikke problemet.

Vri baudrate ned til 9600 og se om det hjelper. Er heller ikke sikker på "setTimeout" -anropet.
Å sette overføringshastigheten til 9600 har ingen effekt når ledede ting kommenteres, men hvis det ikke er kommentert, kan jeg ikke se noe på SerialMonitor i det hele tatt (setTimeout er også kommentert)
Har du drivere til LED-lampene, eller er de koblet direkte til ESP-01? Og har du en ekstra kondensator som effektstabilisator over Vcc og GND?
Det er den innebygde ledningen på esp jeg bruker. Jeg koblet nettopp VCC til VCC på USB / ftdi-brikken min (som er koblet til på den bærbare datamaskinen min).
Jeg bruker denne brikken fra AzDelivery FTDI Adapter FT232RL
Jeg vil foreslå at du legger til noe i kroppen av den mens loop, bare for å la bakgrunnsaktivitetene fortsette, selv om det bare er en kort "forsinkelse" eller en "avkastning"
Mener du den første? Hvorfor skulle dette endre noe?
Får du de samme resultatene med en annen modul? Har du skrevet inn noe gjennom den serielle skjermen? Kan du plassere en `while (1);` etter `Serial.println (passord)` for å se om det i det minste er skrevet ut? Kanskje også plassere en `yield ()` i `while (Serial.available () == 0) {}` -sløyfen.
En svar:
Mazaryk
2017-09-05 07:06:15 UTC
view on stackexchange narkive permalink

Jeg vil satse på at den innebygde LED-pinnen også er TX-pinnen for det serielle grensesnittet.

Sjekk her, LED Pin -delen: http://www.esp8266.com/wiki/doku.php?id=esp8266_gpio_pin_allocations

LED Pin

GPIO1, som også er TX, er koblet til den blå LED-en på mange enheter. Merk at LED-lampen er aktiv lav (koblet til Vcc og synker gjennom brikken til bakken), slik at innstilling av en logisk verdi på 0 vil lyse opp. Siden GPIO1 også er TX-pinnen, vil du ikke kunne blinke LED-lampen og utføre seriekommunikasjon samtidig, med mindre du bytter TX / RX-pinner.

Dette vil bli bekreftet hvis LED-lampen blinker når seriekommunikasjon er aktiv.

Hvis dette er tilfellet, må du legge til din egen LED på en annen pin, eller bytte RX / TX-pins.

Jeg er enig, ref. https://github.com/esp8266/Arduino/issues/3165


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...