Arduino Rx/Tx komunikácia
Arduino Rx/Tx komunikácia
Dobrý deň, som začiatočník mám Arduino Wemos D1 a chcel vy som prepojiť cez port Rx/Tx s touto doskou
https://www.aliexpress.com/item/3282658 ... 4c4d4OMkLu
aby som vedel sledovať stav batérie z fotovoltaiky alebo zapínať externe zariadenia cez Wifi. Ale neviem presne ako funguje komunikácia. Za odpoveď Vám ďakujem, Norbert.
https://www.aliexpress.com/item/3282658 ... 4c4d4OMkLu
aby som vedel sledovať stav batérie z fotovoltaiky alebo zapínať externe zariadenia cez Wifi. Ale neviem presne ako funguje komunikácia. Za odpoveď Vám ďakujem, Norbert.
Re: Arduino Rx/Tx komunikácia
Skúšal som aj to čo som našiel na stránke Arduino
https://www.arduino.cc/en/tutorial/Soft ... ialExample
prepýsal som aj SoftwareSerial mySerial(2, 3); na SoftwareSerial mySerial(D0, D1);
a mySerial.begin(38400); na mySerial.begin(115200);
Ale žiadna odozva,aby som sa mohol od niečoho odraziť.
https://www.arduino.cc/en/tutorial/Soft ... ialExample
prepýsal som aj SoftwareSerial mySerial(2, 3); na SoftwareSerial mySerial(D0, D1);
a mySerial.begin(38400); na mySerial.begin(115200);
Ale žiadna odozva,aby som sa mohol od niečoho odraziť.
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Arduino Rx/Tx komunikácia
Predpokladám, že to kombinované Arduino má pinout ako štandardné ESP8266 dosky typu Wemos D1 Mini / NodeMCU.
D0 (GPIO 16) môže byť použitý iba ako TX ak ho emuluješ na UART a ty ho používaš ako RX.
Za predpokladu, že máš všetko správne zapojené, správne baud/s rýchlosti a zmeníš tento pin tak ti to bude fungovať podľa
https://www.arduino.cc/en/tutorial/Soft ... ialExample
Nahraj, otvor si UART monitor a napíš tam Get. Mal by si vidieť výstup.
D0 (GPIO 16) sa používa skôr na wake signál pre reset ESP, ak používaš sleep, alebo na ovládanie LED-ky, výstupu.
Nefunguje na ňom ani OneWire zbernica. Do budúcna sa tomuto pinu radšej vyhni
D0 (GPIO 16) môže byť použitý iba ako TX ak ho emuluješ na UART a ty ho používaš ako RX.
Za predpokladu, že máš všetko správne zapojené, správne baud/s rýchlosti a zmeníš tento pin tak ti to bude fungovať podľa
https://www.arduino.cc/en/tutorial/Soft ... ialExample
Nahraj, otvor si UART monitor a napíš tam Get. Mal by si vidieť výstup.
D0 (GPIO 16) sa používa skôr na wake signál pre reset ESP, ak používaš sleep, alebo na ovládanie LED-ky, výstupu.
Nefunguje na ňom ani OneWire zbernica. Do budúcna sa tomuto pinu radšej vyhni
Re: Arduino Rx/Tx komunikácia
pin 16 to nemá
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Arduino Rx/Tx komunikácia
D0 je označenie na PCB (label). GPIO 16 je označenie pinu.
Je to ten istý pin. Do programu zapisuješ piny buď cez D alebo bez. Teda D0 zapíšeš v programe pre Arduino Ako D0 alebo 16. Je to to isté.
Tu sa zdá, že je na ten pin priamo vyvedený hardvérový RX...
Avšak... neviem prečo si si definoval cez software serial piny na hardvérovej sériovej (UART) zbernici (keďže tam sú hardvérovo)...
Ak by si používal iba Serial print, Serial read a pod, tam obsluhuješ priamo RX TX piny, ktoré sú tam hardvérovo, teda v tomto prípade D0 a D1.
Software Serial používaš vtedy, ak si chceš tú zbernicu na ľubovoľných pinoch definovať sám. Ak si tú dosku, ktorú tam chceš využiť napojíš priamo na RX TX tak nebudeš schopný nahrať do toho ESP-čka program. Budeš musieť odpojiť to zariadenie z tejto zbernice, lebo bude tým zariadením "blokovaná". Teda software serial využiješ, ak si budeš chcieť RX a TX emulovať napríklad na pinoch D3 (GPIO 0) a D4 (GPIO 2). Aby si nemusel furt odpájať to zariadenie, keď budeš chcieť do ESP nahrať nový program. Takže ak chceš využiť hardvérovú UART zbernicu, použi: https://www.arduino.cc/reference/en/lan ... rial/read/
Ak si ju chceš emulovať na iných pinoch, použi: https://www.arduino.cc/en/tutorial/Soft ... ialExample
Je to ten istý pin. Do programu zapisuješ piny buď cez D alebo bez. Teda D0 zapíšeš v programe pre Arduino Ako D0 alebo 16. Je to to isté.
Tu sa zdá, že je na ten pin priamo vyvedený hardvérový RX...
Avšak... neviem prečo si si definoval cez software serial piny na hardvérovej sériovej (UART) zbernici (keďže tam sú hardvérovo)...
Ak by si používal iba Serial print, Serial read a pod, tam obsluhuješ priamo RX TX piny, ktoré sú tam hardvérovo, teda v tomto prípade D0 a D1.
Software Serial používaš vtedy, ak si chceš tú zbernicu na ľubovoľných pinoch definovať sám. Ak si tú dosku, ktorú tam chceš využiť napojíš priamo na RX TX tak nebudeš schopný nahrať do toho ESP-čka program. Budeš musieť odpojiť to zariadenie z tejto zbernice, lebo bude tým zariadením "blokovaná". Teda software serial využiješ, ak si budeš chcieť RX a TX emulovať napríklad na pinoch D3 (GPIO 0) a D4 (GPIO 2). Aby si nemusel furt odpájať to zariadenie, keď budeš chcieť do ESP nahrať nový program. Takže ak chceš využiť hardvérovú UART zbernicu, použi: https://www.arduino.cc/reference/en/lan ... rial/read/
Ak si ju chceš emulovať na iných pinoch, použi: https://www.arduino.cc/en/tutorial/Soft ... ialExample
Re: Arduino Rx/Tx komunikácia
#include <SoftwareSerial.h>
SoftwareSerial mySerial(D2, D3); // RX, TX
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(115200); // opens serial port, sets data rate to 9600 bps
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(115200);
mySerial.println("Get");
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Keď som to spustil nič nevypísalo. a po reštartnutý mi vypísalo reťazec znakou a na konci "Goodnight moon!".
SoftwareSerial mySerial(D2, D3); // RX, TX
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(115200); // opens serial port, sets data rate to 9600 bps
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(115200);
mySerial.println("Get");
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Keď som to spustil nič nevypísalo. a po reštartnutý mi vypísalo reťazec znakou a na konci "Goodnight moon!".
Re: Arduino Rx/Tx komunikácia
Keď som ich skombinoval tak som dostal výsledok:
I received: 101
I received: 10
vyzerá to tak že mySerial nekomunikuje.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(D0, D1); // RX, TX
int incomingByte = 0;
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 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());
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
I received: 101
I received: 10
I received: 101
I received: 10
vyzerá to tak že mySerial nekomunikuje.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(D0, D1); // RX, TX
int incomingByte = 0;
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 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());
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
I received: 101
I received: 10
Re: Arduino Rx/Tx komunikácia
Nezlob se, ale prostě nedokážu pochopit, když je tam kvalitní HW sériový port, proč se snažíš používat ten software serial
Re: Arduino Rx/Tx komunikácia
Skúšal som to aj bez toho. Výsledok bolo toto
I received: 71
I received: 101
I received: 116
I received: 10
a keď som tam nenapísal nič tak:
I received: 10
a keď som odpojil drôty od D0 a D1 a napísal som tam Get dostal so výsledok ako keď boli zapojené
takto
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(115200); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
I received: 71
I received: 101
I received: 116
I received: 10
a keď som tam nenapísal nič tak:
I received: 10
a keď som odpojil drôty od D0 a D1 a napísal som tam Get dostal so výsledok ako keď boli zapojené
takto
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(115200); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
Re: Arduino Rx/Tx komunikácia
Ten HW port je pro komunikaci přes převodník, jedině, že by ten převodník nepoužil. Ale on ho používá pro komunikaci s PC. Pak je potřeba SW komunikace. K logice, je možné, že modul využívá 5V logiku, není to tam napsané. Ale ESP8266 má max. 3.6V.
Je taky možný, že Arduino Ide nepodporuje možnost příkazy přes konzoly.
Je taky možný, že Arduino Ide nepodporuje možnost příkazy přes konzoly.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 37 hostů