Perpustakaan Siri Perisian dalam Arduino

Perpustakaan Siri Perisian Dalam Arduino



Platform Arduino membolehkan orang ramai mencipta projek yang berbeza. Arduino ialah platform mesra pengguna dengan sokongan untuk pelbagai perpustakaan, termasuk Pustaka SoftwareSerial . The Pustaka SoftwareSerial membolehkan anda membuat port bersiri pada mana-mana pin digital pada papan Arduino anda.

Dalam artikel ini, kami akan menyelam lebih dalam ke dalam perpustakaan SoftwareSerial dan meneroka cara ia berfungsi.







Pengenalan kepada SoftwareSerial Library

The Pustaka SoftwareSerial ialah perpustakaan Arduino standard yang membenarkan komunikasi bersiri pada pin digital selain daripada TX dan RX. Perpustakaan membolehkan penciptaan port bersiri perisian, yang boleh digunakan untuk berkomunikasi dengan peranti lain, seperti mikropengawal lain, komputer, atau modul Bluetooth lain. Pustaka SoftwareSerial disertakan dengan Arduino IDE dan boleh digunakan dengan mana-mana papan Arduino.



Catatan: secara amnya, TX dan RX pin digunakan untuk komunikasi bersiri tetapi menggunakan perpustakaan ini kita boleh membolehkan papan Arduino menggunakan mana-mana pin digital untuk menggantikan pin TX dan RX.



Memahami Fungsi Perpustakaan SoftwareSerial

The Pustaka SoftwareSerial mempunyai beberapa fungsi yang membolehkan anda menyediakan dan mengawal port bersiri perisian. Berikut adalah beberapa fungsi utama yang perlu anda ketahui:





SoftwareSerial()

Fungsi ini mencipta contoh baharu bagi SoftwareSerial kelas. Fungsi ini mempunyai dua argumen, pin RX dan pin TX. Contohnya, jika anda ingin mencipta port bersiri perisian pada pin 2 dan 3, anda akan menggunakan kod berikut:

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



The SoftwareSerial() kaedah digunakan untuk mencipta contoh baharu a SoftwareSerial objek. Ia membenarkan penciptaan berbilang kejadian namun pada satu masa hanya satu yang boleh aktif.

Sintaks

Sintaks untuk SoftwareSerial() kaedah adalah seperti berikut:

SoftwareSerial ( rxPin, txPin, inverse_logic )

Parameter

Parameter untuk SoftwareSerial() adalah

rxPin: Parameter ini menentukan pin yang akan digunakan untuk menerima data bersiri.

txPin: Parameter ini menentukan pin yang akan digunakan untuk menghantar data bersiri.

inverse_logic: Parameter ini adalah pilihan, dan ia menyongsangkan deria bit masuk. Nilai lalai adalah palsu, bermakna LOW pada pin RX ditafsirkan sebagai 0-bit dan HIGH sebagai 1-bit. Jika ditetapkan kepada benar, LOW pada pin RX kini akan mengambil sebagai 1-bit dan TINGGI sebagai 0-bit.

Kembali

The SoftwareSerial() tidak mengembalikan apa-apa.

Fungsi Perpustakaan Arduino SoftwareSerial().

Arduino SoftwareSerial() mempunyai senarai fungsi untuk komunikasi bersiri antara peranti. Beberapa fungsi utama dibincangkan di sini:

mula ()

The mula () fungsi memulakan port bersiri perisian dengan kadar baud. Kadar baud ialah kelajuan penghantaran data ke atas port bersiri. Sebagai contoh, untuk menetapkan 9600 sebagai kadar baud untuk komunikasi bersiri, anda akan menggunakan kod berikut:

mySerial.begin ( 9600 ) ;

tersedia()

The tersedia() f unction mengembalikan bait yang tersedia untuk dibaca pada port bersiri perisian. Sebagai contoh, untuk menyemak sama ada terdapat sebarang data yang tersedia untuk dibaca, anda akan menggunakan kod berikut:

jika ( mySerial.tersedia ( ) > 0 ) {
// membaca data input
char incomingByte = mySerial.read ( ) ;
}

baca()

The baca() fungsi membaca bait data seterusnya daripada port bersiri perisian. Sebagai contoh, untuk membaca satu bait data dan mencetaknya ke monitor bersiri, anda akan menggunakan kod berikut:

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

tulis()

The tulis() fungsi menulis bait data ke port bersiri perisian. Sebagai contoh, untuk menghantar surat “A” melalui port bersiri perisian, anda akan menggunakan kod berikut:

mySerial.write ( 'A' ) ;

Kod Contoh Perpustakaan Arduino SoftwareSerial().

Sekarang kita akan berkomunikasi antara dua papan Arduino melalui komunikasi bersiri menggunakan perpustakaan ini. Ambil dua papan Arduino dan sambungkannya seperti yang ditunjukkan dalam imej di bawah.

Sambung D2 daripada papan Master Arduino dengan D3 daripada papan Arduino Hamba, sama-sama menyambung D3 daripada Master Arduino dengan D2 daripada Slave Arduino.

Catatan: Untuk komunikasi bersiri, TX pin sentiasa disambungkan ke RX pin Arduino yang bertentangan dan RX pin Master sentiasa disambungkan ke TX pin Arduino yang lain.

Berikut ialah perkakasan kedua-dua papan Arduino.

Berikut ialah contoh kod Arduino yang menunjukkan cara menggunakan Pustaka SoftwareSerial untuk mewujudkan komunikasi antara dua papan Arduino:

Kod Lembaga Pengirim

Kod di bawah adalah untuk Arduino penghantar yang akan menulis rentetan pada papan Arduino penerima.

#include

// Sediakan objek bersiri perisian
SoftwareSerial mySerial ( 2 , 3 ) ;

persediaan kosong ( ) {
// Mulakan komunikasi bersiri
Bersiri.mulakan ( 9600 ) ;
sementara ( ! bersiri ) {
; // tunggu untuk port bersiri untuk disambungkan
}

// Mulakan komunikasi bersiri perisian
mySerial.begin ( 9600 ) ;
}

gelung kosong ( ) {
// Hantar mesej melalui sambungan bersiri perisian
mySerial.println ( 'Helo, papan penerima!' ) ;
kelewatan ( 1000 ) ;
}

Kod Papan Penerima

Kod di bawah adalah untuk papan Penerima. Menggunakan kod ini Arduino akan menerima rentetan daripada papan lain melalui komunikasi bersiri yang ditubuhkan antara dua papan Arduino.

#include

// Sediakan objek bersiri perisian
SoftwareSerial mySerial ( 2 , 3 ) ;

persediaan kosong ( ) {
// Mulakan komunikasi bersiri
Bersiri.mulakan ( 9600 ) ;
sementara ( ! bersiri ) {
; // tunggu untuk port bersiri untuk disambungkan
}

// Mulakan komunikasi bersiri perisian
mySerial.begin ( 9600 ) ;
}

gelung kosong ( ) {
// Semak jika data tersedia pada sambungan bersiri perisian
jika ( mySerial.tersedia ( ) ) {
// Baca data dan cetak ke monitor bersiri
Serial.println ( mySerial.readString ( ) ) ;
}
}

Dalam contoh ini, kami mula-mula memasukkan Pustaka SoftwareSerial pada permulaan kod. Kemudian, kita buat a SoftwareSerial objek yang dipanggil ' mySerial ” dengan pin 2 dan 3 ditetapkan sebagai pin RX dan TX, masing-masing.

Di dalam persediaan() fungsi, kita memulakan kedua-dua siri perkakasan dan komunikasi siri perisian dengan kadar baud 9600. Dalam gelung() fungsi papan penghantar, kami menghantar mesej melalui sambungan bersiri perisian menggunakan kaedah mySerial.println(), dan tunggu sebentar sebelum menghantar mesej seterusnya.

Dalam fungsi gelung() papan penerima, kod akan menyemak ketersediaan data bersiri pada sambungan bersiri perisian yang digunakan mySerial.available() kaedah. Jika terdapat data yang tersedia, kami membaca data menggunakan kaedah mySerial.readString() dan mencetaknya ke monitor bersiri menggunakan kaedah Serial.println().

Had Perpustakaan SoftwareSerial().

The Pustaka SoftwareSerial mempunyai beberapa kelebihan berbeza tetapi juga mempunyai beberapa batasan yang perlu diketahui oleh pengguna. Batasan ini termasuk

  • Ketidakupayaan untuk menghantar dan menerima data secara serentak.
  • Apabila menggunakan berbilang port bersiri perisian, hanya satu port boleh menerima data sekaligus.
  • Port bersiri berasaskan perisian yang dibuat menggunakan perpustakaan ini beroperasi pada kadar baud yang lebih rendah dan tidak boleh dipercayai seperti port bersiri berasaskan perkakasan.
  • Sesetengah pin pada papan Mega dan Mega 2560 tidak menyokong gangguan perubahan untuk RX, mengehadkan pin yang boleh digunakan.
  • Begitu juga, pada papan Leonardo dan Micro, hanya pin tertentu boleh digunakan untuk RX kerana kekurangan gangguan perubahan.
  • Kelajuan RX maksimum pada papan Arduino atau Genuino 101 ialah 57600 bps.
  • RX tidak berfungsi pada pin digital 13 papan Arduino atau Genuino 101.
Papan Pin RX
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 & Mic 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Kesimpulan

The Pustaka SoftwareSerial dalam Arduino ialah alat yang berguna untuk berkomunikasi dengan peranti menggunakan protokol komunikasi bersiri. Ia membolehkan pembangun mencipta port bersiri berasaskan perisian yang boleh digunakan bersama dengan port bersiri berasaskan perkakasan. Pustaka ini mempunyai beberapa had kerana ia tidak membenarkan pemindahan data serentak. Untuk butiran lanjut baca artikel di atas.