SoftwareSerial Library sa Arduino

Softwareserial Library Sa Arduino



Ang Arduino platform ay nagbibigay-daan sa mga tao na lumikha ng iba't ibang mga proyekto. Ang Arduino ay isang user-friendly na platform na may suporta para sa malawak na hanay ng mga aklatan, kabilang ang SoftwareSerial library . Ang SoftwareSerial library nagbibigay-daan sa iyo na lumikha ng isang serial port sa alinman sa mga digital na pin sa iyong Arduino board.

Sa artikulong ito, sumisid kami nang mas malalim sa SoftwareSerial library at tuklasin kung paano ito gumagana.







Panimula sa SoftwareSerial Library

Ang SoftwareSerial library ay isang karaniwang library ng Arduino na nagbibigay-daan sa serial communication sa mga digital pin maliban sa TX at RX. Ang library ay nagbibigay-daan sa paglikha ng isang software serial port, na maaaring magamit upang makipag-usap sa iba pang mga device, tulad ng iba pang microcontroller, computer, o kahit na Bluetooth modules. Ang SoftwareSerial library ay kasama sa Arduino IDE at maaaring gamitin sa anumang Arduino board.



Tandaan: Sa pangkalahatan, TX at RX Ang mga pin ay ginagamit para sa serial communication ngunit gamit ang library na ito maaari nating paganahin ang Arduino board na gamitin ang alinman sa mga digital na pin upang palitan ang mga TX at RX pin.



Pag-unawa sa SoftwareSerial Library Functions

Ang SoftwareSerial library ay may ilang mga function na nagbibigay-daan sa iyong i-set up at kontrolin ang serial port ng software. Narito ang ilan sa mga pangunahing pag-andar na dapat mong malaman:





SoftwareSerial()

Ang function na ito ay lumilikha ng isang bagong instance ng SoftwareSerial klase. Ang function na ito ay may dalawang argumento, ang RX pin at ang TX pin. Halimbawa, kung gusto mong lumikha ng serial port ng software sa mga pin 2 at 3, gagamitin mo ang sumusunod na code:

SoftwareSerial mySerial ( 2 , 3 ) ; // RX, TX



Ang SoftwareSerial() paraan ay ginagamit upang lumikha ng isang bagong halimbawa ng a SoftwareSerial bagay. Nagbibigay-daan ito para sa paglikha ng maraming mga pagkakataon ngunit sa isang pagkakataon isa lamang ang maaaring maging aktibo.

Syntax

Ang syntax para sa SoftwareSerial() ang pamamaraan ay ang mga sumusunod:

SoftwareSerial ( rxPin, txPin, inverse_logic )

Mga Parameter

Ang mga parameter para sa SoftwareSerial() ay

rxPin: Tinutukoy ng parameter na ito ang pin na gagamitin para makatanggap ng serial data.

txPin: Tinutukoy ng parameter na ito ang pin na gagamitin upang magpadala ng serial data.

inverse_logic: Opsyonal ang parameter na ito, at binabaligtad nito ang mga papasok na bits sense. Mali ang default na value, ibig sabihin, ang LOW sa RX pin ay binibigyang kahulugan bilang 0-bit at HIGH bilang 1-bit. Kung nakatakda sa true, ang LOW sa RX pin ay tatagal na ngayon bilang 1-bit at HIGH bilang 0-bit.

Bumalik

Ang SoftwareSerial() walang ibinabalik.

Arduino SoftwareSerial() Library Functions

Arduino SoftwareSerial() ay may listahan ng mga function para sa serial communication sa pagitan ng mga device. Ang ilan sa mga pangunahing pag-andar ay tinalakay dito:

simulan()

Ang simulan() pinasimulan ng function ang serial port ng software na may baud rate. Ang baud rate ay ang bilis ng paghahatid ng data sa serial port. Halimbawa, para itakda ang 9600 bilang baud rate para sa serial communication, gagamitin mo ang sumusunod na code:

mySerial.magsimula ( 9600 ) ;

magagamit()

Ang magagamit() f Ang unction ay nagbabalik ng mga byte na magagamit para sa pagbabasa sa serial port ng software. Halimbawa, upang suriin kung mayroong anumang data na magagamit upang basahin, gagamitin mo ang sumusunod na code:

kung ( mySerial.available ( ) > 0 ) {
// basahin input ng data
char incomingByte = mySerial.read ( ) ;
}

basahin()

Ang basahin() Binabasa ng function ang susunod na byte ng data mula sa serial port ng software. Halimbawa, upang basahin ang isang byte ng data at i-print ito sa serial monitor, gagamitin mo ang sumusunod na code:

char incomingByte = mySerial.read ( ) ;
Serial.println ( incomingByte ) ;

sumulat()

Ang sumulat() Ang function ay nagsusulat ng isang byte ng data sa serial port ng software. Halimbawa, upang ipadala ang liham 'A' sa software serial port, gagamitin mo ang sumusunod na code:

mySerial.magsulat ( 'A' ) ;

Arduino SoftwareSerial() Library Halimbawang Code

Ngayon ay makikipag-usap kami sa pagitan ng dalawang Arduino board sa serial communication gamit ang library na ito. Kumuha ng dalawang Arduino board at ikonekta ang mga ito tulad ng ipinapakita sa larawan sa ibaba.

Kumonekta D2 ng Master Arduino board na may D3 ng Slave Arduino board, katulad na kumonekta D3 ng Master Arduino na may D2 ng Alipin Arduino.

Tandaan: Para sa serial communication, ang TX laging konektado ang pin sa RX pin ng kabaligtaran ng Arduino at ang RX Ang pin ng Master ay palaging konektado sa TX pin ng iba pang Arduino.

Ang sumusunod ay ang hardware ng parehong Arduino boards.

Narito ang isang halimbawa ng Arduino code na nagpapakita kung paano gamitin ang SoftwareSerial library upang magtatag ng komunikasyon sa pagitan ng dalawang Arduino board:

Kodigo ng Lupon ng Nagpadala

Ang code sa ibaba ay para sa nagpadala ng Arduino na magsusulat ng isang string sa receiver Arduino board.

#include

// I-set up ang software serial object
SoftwareSerial mySerial ( 2 , 3 ) ;

walang bisang setup ( ) {
// Simulan ang serial communication
Serial.magsimula ( 9600 ) ;
habang ( ! Serial ) {
; // maghintay para sa serial port para kumonekta
}

// Simulan ang serial communication ng software
mySerial.magsimula ( 9600 ) ;
}

walang laman na loop ( ) {
// Magpadala ng mensahe sa serial connection ng software
mySerial.println ( 'Hello, receiver board!' ) ;
pagkaantala ( 1000 ) ;
}

Code ng Receiver Board

Ang code sa ibaba ay para sa Receiver board. Gamit ang code na ito, matatanggap ng Arduino ang string mula sa isa pang board sa serial communication na itinatag sa pagitan ng dalawang Arduino boards.

#include

// I-set up ang software serial object
SoftwareSerial mySerial ( 2 , 3 ) ;

walang bisang setup ( ) {
// Simulan ang serial communication
Serial.magsimula ( 9600 ) ;
habang ( ! Serial ) {
; // maghintay para sa serial port para kumonekta
}

// Simulan ang serial communication ng software
mySerial.magsimula ( 9600 ) ;
}

walang laman na loop ( ) {
// Suriin kung available ang data sa serial connection ng software
kung ( mySerial.available ( ) ) {
// Basahin ang data at i-print ito sa serial monitor
Serial.println ( mySerial.readString ( ) ) ;
}
}

Sa halimbawang ito, isinama muna natin ang SoftwareSerial library sa simula ng code. Pagkatapos, lumikha kami ng isang SoftwareSerial bagay na tinatawag na ' mySerial ” na may mga pin 2 at 3 na tinukoy bilang mga RX at TX pin, ayon sa pagkakabanggit.

Nasa setup() function, sinisimulan namin ang parehong hardware serial at ang software serial communication na may baud rate na 9600. Sa loop() function ng sender board, nagpapadala kami ng mensahe sa serial connection ng software gamit ang mySerial.println() method, at maghintay ng isang segundo bago ipadala ang susunod na mensahe.

Sa loop() function ng receiver board, susuriin ng code ang pagkakaroon ng serial data sa serial connection ng software na ginagamit mySerial.available() paraan. Kung mayroong available na data, binabasa namin ang data gamit ang mySerial.readString() method at i-print ito sa serial monitor gamit ang Serial.println() method.

Mga Limitasyon ng SoftwareSerial() Library

Ang SoftwareSerial library ay may ilang iba't ibang mga pakinabang ngunit mayroon ding ilang mga limitasyon na dapat malaman ng mga user. Kasama sa mga limitasyong ito

  • Kawalan ng kakayahang magpadala at tumanggap ng data nang sabay-sabay.
  • Kapag gumagamit ng maraming software serial port, isang port lang ang makakatanggap ng data nang sabay-sabay.
  • Ang mga serial port na nakabatay sa software na ginawa gamit ang library na ito ay gumagana sa mas mababang baud rate at hindi kasing maaasahan ng mga serial port na nakabatay sa hardware.
  • Ang ilang mga pin sa Mega at Mega 2560 board ay hindi sumusuporta sa pagbabago ng mga interrupt para sa RX, na nililimitahan kung aling mga pin ang maaaring gamitin.
  • Katulad nito, sa Leonardo at Micro boards, ilang partikular na pin lang ang maaaring gamitin para sa RX dahil sa kakulangan ng pagbabago sa mga interrupts.
  • Ang maximum na bilis ng RX sa Arduino o Genuino 101 boards ay 57600 bps.
  • Hindi gumagana ang RX sa digital pin 13 ng Arduino o Genuino 101 boards.
Lupon Mga RX Pin
Mega at 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 at Mic 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Konklusyon

Ang SoftwareSerial library sa Arduino ay isang kapaki-pakinabang na tool para sa pakikipag-usap sa mga device gamit ang mga serial communication protocol. Pinapayagan nito ang mga developer na lumikha ng mga serial port na nakabatay sa software na maaaring magamit kasama ng mga serial port na nakabatay sa hardware. May ilang limitasyon ang library na ito dahil hindi nito pinapayagan ang sabay-sabay na paglilipat ng data. Para sa karagdagang detalye basahin ang artikulo sa itaas.