Arduino – Conexiune software serial

Autor: Viorel -01/06/2010-



Platforma Arduino are disponibili 2 pini pentru comunicare in mod serial (pinul 0 si 1 din zona pinilor digitali – RX si TX). Acesti pini sunt cuplati la un dispozitiv hardware care se ocupa de partea de comunicare seriala.

In cadrul acestui proiect voi prezenta o modalitate de a replica functionalitatea de comunicare seriala utilizand oricare alti doi pini digitali ai platformei Arduino. Acest lucru poate fi util atunci cand interfata seriala este ocupata cu un alt dispozitiv (de exemplu am nevoie sa ma conectez la Internet prin GPRS utilizand un modul GMS / GPRS dar in acelasi timp vreau sa utilizez un ecran LCD cu conectare seriala).



Articole precedente


- Componente : Arduino

- Componente : Ecran LCD alfanumeric cu conectare seriala

- Tutorial : Arduino – primul pas



Lista de piese

  • o platforma Arduino

disponibila la RoboFun.ro

  • un cablu USB (pentru imprimanta)

disponibil la orice magazin de IT – gen Diverta, Depozitul de Calculatoare, etc -


  • fire de cupru

eu folosesc fire de cupru scoase dintr-un cablu UTP, disponibile la orice magazin de retelistica










  • un ecran LCD alfanumeric cu conectare seriala

disponibil la RoboFun.ro




  • conecteaza ecranul LCD la platforma Arduino prin 4 fire, la pinii 0 si 1 (RX si TX)

Acest pas este util ca test, ca sa fim siguri ca pinii sunt conectati corect. Astfel, la pasul urmator vom muta doar cele doua fire din RX si TX la doi pini digitali.

Pentru simplitate, eu voi utiliza si un cablu pentru conectare seriala cu 4 fire (pentru a conecta cele 4 fire mai simplu).

Conexiunile descrise mai jos sunt valabile cu conditia ca sa conectam cablul cu 4 fire la ecranul LCD ca in poza de mai jos (cu partea pe care se vad pinii metalici in jos).



Conecteaza apoi pinii cablului prin fire de cupru la platforma Arduino, astfel :

firul verde la GND

firul galben la 5 V

firul negru la TX

firul rosu la RX






(daca ai nevoie sa-ti aduci aminte despre incarcarea unui program pe Arduino, poti vedea aici).

void setup() {
  Serial.begin(9600);
}

void loop(){
   Serial.print("$CLEAR\n\r");
    Serial.print("$GO 1 1\n\r");
    Serial.print("$PRINT tehnorama.ro\n\r");
    delay(10000);
}

Vei vedea pe ecranul LCD textul “tehnorama.ro”. Daca nu se intampla asa, cel mai probabil pinii nu sunt conectati corect.



  • cupleaza firul din TX la pinul digital 9 si firul din RX la pinul digital 8

Acum ca totul este in regula si avem o confirmare a faptului ca ecranul LCD functioneaza atunci cand il conectam la pinii serial hardware, punem trece la partea de comunicare seriala software.



  • incarca pe Arduino programul de mai jos, care implementeaza partea de comunicare seriala



#include "SoftwareSerial.h"

#define rxPin 8
#define txPin 9

SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup() {
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  mySerial.begin(9600);
}

void loop(){
    mySerial.print("$CLEAR\n\r");
    mySerial.print("$GO 1 1\n\r");
    mySerial.print("$PRINT tehnorama.ro\n\r");
    delay(1000);
}




In rezumat


Ai nevoie de :

* o platforma Arduino (disponibila la robofun.ro)

* un cablu cu 4 fire pentru conectare seriala (disponibil la robofun.ro) (optional)

* un ecran LCD alfanumeric cu conectare seriala (disponibila la robofun.ro)

Prin acest proiect am demonstrat o modalitate de comunicare seriala care nu utilizeaza pinii TX si RX pentru comunicare seriala hardware, ci oricare alti doi pini digitali ai Arduino. In acest mod pot avea la dispozitie mult mai multe porturi pentru comunicare seriala, utile in cazul in care am deja ocupat portul hardware.




Despre... Viorel

Acest autor a publicat 137 articole.

Share

FacebookTwitterEmailWindows LiveTechnoratiDeliciousDiggStumbleponMyspaceLikedin

Comentarii

[...] citita de pe site-ul web voi utiliza un ecran LCD cu conectare seriala pe care il voi conecta pe o conexiune seriala de tip software (dat fiind ca deja conexiunea hardware este ocupata de modulul [...]


cristiionut
June 9th, 2010

Asa se inmultesc pinii Tx si Rx? sau daca sunt definiti pe alti pini, cei de baza se anuleaza?


Viorel
June 10th, 2010

Exact, in felul asta poti avea oricat de multi pini RX si TX doresti. Cei de baza raman functionali, ii poti folosi in acelasi timp. Spre exemplu, pentru proiectul cu LCD si GPRS ( http://www.tehnorama.ro/arduino-conectare-la-internet-prin-gprs ) eu am avut nevoie de pinii de baza RX si TX (cei hardware ) pentru comunicarea cu dispozitivul GSM, si atunci am definit pini software RX si TX pentru ecranul LCD. Atat cei software cat si cei hardware au functionat in acelasi timp.

[...] acest exemplu am folosit o conexiune de tip  SoftwareSerial , conectata pe pinul digital 7. Alternativ, as fi putut ca pur si simplu sa conectez firul de [...]

Trimite un comentariu