Softwareserial Library i Arduino

Softwareserial Library i Arduino

Arduino -plattformen gjør det mulig for folk å lage forskjellige prosjekter. Arduino er en brukervennlig plattform med støtte for et bredt spekter av biblioteker, inkludert Softwareserial Library. De Softwareserial Library lar deg opprette en seriell port på noen av de digitale pinnene på Arduino -brettet ditt.

I denne artikkelen vil vi dykke dypere inn i softwareserial -biblioteket og utforske hvordan det fungerer.

Introduksjon til softwareserial -bibliotek

De Softwareserial Library er et standard Arduino -bibliotek som tillater seriell kommunikasjon på andre digitale pinner enn TX og RX. Biblioteket muliggjør oppretting av en serieport av programvare, som kan brukes til å kommunisere med andre enheter, for eksempel andre mikrokontrollere, datamaskiner eller til og med Bluetooth -moduler. Softwareserial -biblioteket er inkludert i Arduino IDE og kan brukes sammen med et hvilket som helst Arduino -styre.

Merk: Som regel, Tx og Rx Pins brukes til seriell kommunikasjon, men ved å bruke dette biblioteket kan vi gjøre det mulig.

Forstå programmer for programvarebibliotek

De Softwareserial Library har flere funksjoner som gjør at du kan sette opp og kontrollere programvaren seriell port. Her er noen av hovedfunksjonene du bør vite:

Programvare ()

Denne funksjonen skaper en ny forekomst av Programvare klasse. Denne funksjonen har to argumenter, RX -pinnen og TX -pinnen. Hvis du for eksempel vil opprette en serieport av programvare på pinnene 2 og 3, vil du bruke følgende kode:

Programvare Myserial (2, 3); // RX, TX

De Programvare () metoden brukes til å lage en ny forekomst av en Programvare gjenstand. Det gir mulighet for å opprette flere forekomster, men om gangen er det bare en som kan være aktiv.

Syntaks

Syntaks for Programvare () Metoden er som følger:

Programvare (rxpin, txpin, inverse_logic)

Parametere

Parametrene for Programvare () er

rxpin: Denne parameteren spesifiserer pinnen som vil bli brukt til å motta seriedata.

txpin: Denne parameteren spesifiserer pinnen som skal brukes til å overføre seriedata.

inverse_logic: Denne parameteren er valgfri, og den inverterer innkommende bits -fornuft. Standardverdien er falsk, noe som betyr at en lav på RX-pinnen tolkes som en 0-bit og en høy som en 1-bit. Hvis det er satt til True, vil det lave på RX-pinnen nå ta som 1-biters og høy som 0-bit.

Komme tilbake

De Programvare () returnerer ikke noe.

Arduino softwareserial () bibliotekfunksjoner

Arduino Programvare () har en liste over funksjoner for seriell kommunikasjon mellom enheter. Noen av hovedfunksjonene er diskutert her:

  • begynne()
  • tilgjengelig()
  • lese()
  • skrive()

begynne()

De begynne() Funksjon initialiserer programvaren seriell port med en baudfrekvens. Baudfrekvensen er dataoverføringshastigheten over serieporten. For å angi 9600 som baudfrekvens for seriell kommunikasjon, vil du for eksempel bruke følgende kode:

myserial.Begynn (9600);

tilgjengelig()

De Tilgjengelig () fUNSTION returnerer byte tilgjengelig for lesing i Software Serial Port. For å sjekke om det er tilgjengelige data som skal leses, vil du for eksempel bruke følgende kode:

hvis (myserial.tilgjengelig ()> 0)
// Les inndata
char innkommendebyte = myserial.lese();

lese()

De lese() Funksjonen leser neste byte med data fra programvaren seriell port. For å lese en byte med data og skrive den ut til seriemonitoren, vil du for eksempel bruke følgende kode:

char innkommendebyte = myserial.lese();
Serie.Println (IncomingByte);

skrive()

De skrive() Funksjon skriver en byte med data til programvaren seriell port. For eksempel å sende brevet "EN" Over programvaren seriell port, vil du bruke følgende kode:

myserial.Skriv en');

Arduino softwareserial () bibliotekeksempelkode

Nå vil vi kommunisere mellom to Arduino -tavler over seriell kommunikasjon ved hjelp av dette biblioteket. Ta to Arduino -brett og koble dem som vist på bildet nedenfor.

Koble D2 av mesteren Arduino -styret med D3 av slave Arduino -styret, på samme måte koble til D3 av mester Arduino med D2 av slaven Arduino.

Merk: For seriell kommunikasjon, Tx PIN er alltid koblet til Rx Pin av motsatt Arduino og Rx Pin av mesteren er alltid koblet til Tx Pin av den andre Arduino.

Følgende er maskinvaren til begge Arduino -tavlene.

Her er et eksempel Arduino -kode som viser hvordan du bruker Softwareserial Library For å etablere kommunikasjon mellom to Arduino -tavler:

Avsendertavlekode

Nedenfor koden er for avsenderen Arduino som vil skrive en streng til mottakeren Arduino Board.

#inkludere
// Sett opp Software Serial Object
Programvare Myserial (2, 3);
void setup ()
// Start seriell kommunikasjon
Serie.Begynn (9600);
samtidig som (!Seriell)
; // Vent til seriell port skal koble til

// Start programvaren seriell kommunikasjon
myserial.Begynn (9600);

void loop ()
// Send en melding over programvaren seriell tilkobling
myserial.Println ("Hei, mottakerstyret!");
forsinkelse (1000);

Mottakerstyrekode

Nedenfor koden er for mottakerstyret. Ved å bruke denne koden vil Arduino motta strengen fra et annet brett over seriell kommunikasjon etablert mellom to Arduino -tavler.

#inkludere
// Sett opp Software Serial Object
Programvare Myserial (2, 3);
void setup ()
// Start seriell kommunikasjon
Serie.Begynn (9600);
samtidig som (!Seriell)
; // Vent til seriell port skal koble til

// Start programvaren seriell kommunikasjon
myserial.Begynn (9600);

void loop ()
// sjekk om data er tilgjengelig på programvaren seriell tilkobling
hvis (myserial.tilgjengelig())
// Les dataene og skriv dem ut til seriemonitoren
Serie.Println (MySerial.readString ());

I dette eksemplet inkluderer vi først Softwareserial Library I begynnelsen av koden. Deretter lager vi en Programvare objekt kalt “myserial”Med henholdsvis pinner 2 og 3 spesifisert som RX- og TX -pinnene.

I oppsett () Funksjon, vi starter både maskinvareserien og programvaren seriell kommunikasjon med en baud rate på 9600. I Løkke() Funksjonen til avsendertavlen, vi sender en melding over programvaren seriell tilkobling ved hjelp av myserial.println () -metode, og vent et sekund før du sender neste melding.

I Loop () -funksjonen til mottakerkortet vil koden se etter seriell tilgjengelighet på programvaren seriell tilkobling ved hjelp av Serial Connection myserial.tilgjengelig() metode. Hvis det er tilgjengelig data, leser vi dataene ved hjelp av MySerial.ReadString () -metoden og skriv den ut til seriemonitoren ved hjelp av serien.println () metode.

Begrensninger av programvare () bibliotek ()

De Softwareserial Library har flere forskjellige fordeler, men har også noen begrensninger som brukerne bør være klar over. Disse begrensningene inkluderer

  • Manglende evne til å overføre og motta data samtidig.
  • Når du bruker flere programvare -serielle porter, kan bare en port motta data på en gang.
  • De programvarebaserte serielle portene som er opprettet ved hjelp av dette biblioteket, opererer med lavere baudpriser og er ikke så pålitelige som maskinvarebaserte serielle porter.
  • Noen pinner på mega- og mega 2560 brett støtter ikke endringsavbrudd for RX, og begrenser hvilke pinner som kan brukes.
  • Tilsvarende på Leonardo- og mikrotavlene er det bare visse pinner som kan brukes til RX på grunn av mangel på endringsavbrudd.
  • Maksimal RX -hastighet på Arduino eller Genuino 101 brett er 57600 bps.
  • RX fungerer ikke på digital pin 13 av Arduino eller Genuino 101 -brett.
Borde RX -pinner
Mega & Mega 2560 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
Leonardo & Micro 8, 9, 10, 11, 14 (miso), 15 (SCK), 16 (MOSI).

Konklusjon

De Softwareserial Library I Arduino er et nyttig verktøy for å kommunisere med enheter ved bruk av serielle kommunikasjonsprotokoller. Det lar utviklere lage programvarebaserte serielle porter som kan brukes i forbindelse med maskinvarebaserte serielle porter. Dette biblioteket har noen begrensninger, da det ikke tillater samtidig dataoverføring. For mer informasjon, les artikkelen ovenfor.