www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Arduino komunikacija preko porta RS232?

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
borzon
Član
Član



Pridružen-a: Čet 17 Sep 2015 23:14
Prispevkov: 150
Aktiv.: 1.44
Kraj: Postojna

PrispevekObjavljeno: Tor Sep 29, 2020 9:08 pm    Naslov sporočila:  Arduino komunikacija preko porta RS232? Odgovori s citatom

Pozdravljeni,

Ker se s tem neuspešno zafrkavam že skoraj cel dan se na vas znova obračam po pomoč.
Želim posliljati podtatke o temperaturi iz senzorjev, ki so priključeni na arduino Mega 2560 preko povezave RS232 na PC. Na PCju imam nameščen program Termite 3.4 s katerim pregledujem prejete podatke. Med arduinom in PCjem je nameščen modul "RS232 to TTL". Podatki na PCju se izpisujejo enaki kot na Serial oknu v Arduinu.

Zanima me kako kaj spišem "void" kodo, ki bo preko RS232 pošiljaja podatke na PC in istočasno prejemala ukaze iz PC-ja okna. Da bi lahko npr med prejemanjem podatkov o temperaturi istočasno npr. izklopil npr. črpalko ali kaj podabnega.
Imam 3 spremenljivke tipa fload.

float temperatura_Zgoraj;
float temperatura_Spodaj;
float temperatura_Zunaj;


hvala za pomoč
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Sre Sep 30, 2020 2:36 pm    Naslov sporočila:   Odgovori s citatom

Pri katerem delu imas tezave?
za referenco glej primer TUKAJ

Koda:
Serial.println(temperatura_Zgoraj, 2); //Izpise v obliki X.XX
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
borzon
Član
Član



Pridružen-a: Čet 17 Sep 2015 23:14
Prispevkov: 150
Aktiv.: 1.44
Kraj: Postojna

PrispevekObjavljeno: Sre Sep 30, 2020 4:35 pm    Naslov sporočila:   Odgovori s citatom

Pozdravljen mato1111,

Kot sem opazil imam težavo v tem, da ko iz PCja preko COM1 (RS232) porta hočem poslati nek zapis npr. ON ali OFF mi ga arduino ne sprejme. Na PCju uporabljam program Termite za nadzor in pošiljanje podatkov preko RS232 porta. COM1 je dejansko fizični in ne preko USB izhoda.
Ko pošiljam ukaz ali tekst preko Serial porta v Arduino IDE pa ga sprejme. V obratni smeri, torej iz Arduina v PC pa program Termite normalno bere.

V času od prejšnje objave sem poizkušal iz PCja poslati nek tekst v arduino, ki bi se potem prikazal na LCD zaslonu. Kot ze rečeno preko Serial porta v Arduinu IDe gre preo RS232 pa ne gre.
Na PCju v programu Termite 3.4 ko poskušam vklopit Opcijo "Forward" na isti RS232 kot je sprejemanje mi javi "Forwarding port may not be the same as the primary port".

Mogoče kdo pozna se kak drugi Free program, ki omogoča prejemanje in pošiljanje preko COM izhodov.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Sre Sep 30, 2020 5:53 pm    Naslov sporočila:   Odgovori s citatom

Jaz za testiranje uporabljam Simpleterm. Poskusi z tem.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rplink3r
Član
Član



Pridružen-a: Tor 06 Feb 2007 20:02
Prispevkov: 480
Aktiv.: 2.30
Kraj: Levec

PrispevekObjavljeno: Sre Sep 30, 2020 8:19 pm    Naslov sporočila:   Odgovori s citatom

Kar se Arduino tiče, prvo poskusi z primerom

Examples->Communication->ReadASCIIstring,

če ti to dela, ti bo tri vpisane crke vrnil nazaj in nastavil tri pwm vrednosti na določene pine.

Če ti bo uspel sprejem in pošiljenje lahko poskusiš z sledečim:


Koda:

const byte numChars = 32;
char receivedChars[numChars]; // an array to store the received data

boolean newData = false;

void setup() {
 Serial.begin(9600);
 Serial.println("<Arduino is ready>");
}

void loop() {
 recvWithEndMarker();
 showNewData();
}

void recvWithEndMarker() {
 static byte ndx = 0;
 char endMarker = 0x0D;
 char rc;
 
 // if (Serial.available() > 0) {
 while (Serial.available() > 0 && newData == false) {
 rc = Serial.read();

 if (rc != endMarker) {
 receivedChars[ndx] = rc;
 ndx++;
 if (ndx >= numChars) {
 ndx = numChars - 1;
 }
 }
 else {
 receivedChars[ndx] = '\0'; // terminate the string
 ndx = 0;
 newData = true;
 }
 }
}

void showNewData() {
 if (newData == true) {
 Serial.print("This just in ... ");
 Serial.println(receivedChars);
 newData = false;
 }
}



Tole je recimo primer na sprejemni strani Arduino, zaključi sprejem stringa, ko mu pošlješ "endMarker = 0x0D" Carriage return, oziroma enter. Nato ti ga izpiše, nastavljen je na max 32 znakov.

Ta primer pri " while (Serial.available() > 0 && newData == false) {" čaka na tvoje podatke, da se ti bo program izvajal brez čakanja uporabi vrstico

"// if (Serial.available() > 0) {"

Ko ti dela sprejem, lahko nadaljuješ z več spremenljivkam in pretvorbo le teh. Lahko imaš za različne spremenljivke različne end markerje, jih sortiraš po dolžini ali pa še na kakšen drugačen način Smile .

_________________
"The statement below is false."
"The statement above is true."
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
borzon
Član
Član



Pridružen-a: Čet 17 Sep 2015 23:14
Prispevkov: 150
Aktiv.: 1.44
Kraj: Postojna

PrispevekObjavljeno: Sre Sep 30, 2020 9:50 pm    Naslov sporočila:   Odgovori s citatom

Pozdravljeni in hvala vsem za nasvete.
Stvar še vedno ne deluje in najverjetene je vzrok v RS232 kablu.

Zato vas sprašujem naslednje. Obstaja več različnih tipov vezav RS232 kablov.
- Zanima me kateri tip kabla potrebujem.
Tukaj imam klasični podaljšek "Podaljšek za star tip miške" in mi dela samo sprejem oddajanje ne.
- Poizkusil sem tudi z "Serial Null RS232 kabel" pa svtar sploh ne dela tudi sprejem ne prav tako ne dela pošiljanje...

Kaki tip kablov moram torej uporabit?

hvala in l.p
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 706
Aktiv.: 3.18
Kraj: Severna primorska

PrispevekObjavljeno: Čet Okt 01, 2020 8:52 am    Naslov sporočila:   Odgovori s citatom

Za test kabla na strani kjer normalno priklopiš arduino s koščkom žice spoji pina 2 in 3 na kablu. To sta oddajni in sprejemni pin.

Če je kabel uredu bi moral vse kar pošiljaš iz tvojega programa na PCju sprejeti tudi nazaj.

Za uspešno komunikacijo so uporabljeni samo pini 2, 3 in 5
Slik na internetu kolikor hočeš:
Google

Če na koncu kabla to ne deluje lahko isto poizkusiš direktno na DB9 konektorju PC-ja.
Po tem bi ti moralo že biti bolj jasno kje je težava.

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rplink3r
Član
Član



Pridružen-a: Tor 06 Feb 2007 20:02
Prispevkov: 480
Aktiv.: 2.30
Kraj: Levec

PrispevekObjavljeno: Čet Okt 01, 2020 2:30 pm    Naslov sporočila:   Odgovori s citatom

Tako kot ti je napisal eddie,

Nato še preveriš ta tvoj RS232 to TTL vmesnik, na njem spojiš TX in RX skupaj in moraš vse dobiti nazaj na PC terminal.

_________________
"The statement below is false."
"The statement above is true."
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
borzon
Član
Član



Pridružen-a: Čet 17 Sep 2015 23:14
Prispevkov: 150
Aktiv.: 1.44
Kraj: Postojna

PrispevekObjavljeno: Čet Okt 01, 2020 7:37 pm    Naslov sporočila:   Odgovori s citatom

Vsem se iskreno zahvaljujem za vašo pomoč in nasvete.
Ugotovil sem, da je napaka najverejetneje na poškodovanem izhodu RDX (0) na Arduino Mega 2560.
Ko sem poizkusil z drugim arduinom je vse začelo "čudežno" delati in sprejemati signal preko RS232 porta. To mojo tezo je še potrdilo dejstvo, da ko sem izhoda TXD in RXD na izhodu iz modula (RS232 to TTL) spojih sem prejemal nazaj v terminalsko okno prej poslana sporočila.

Hvala za pomoč
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group