Isi kandungan:
- Bekalan
- Langkah 1: Sambungan Fizikal
- Langkah 2: Cara Menggunakan Perpustakaan
- Langkah 3: Hantar Data Asas
- Langkah 4: Terima Data Asas
- Langkah 5: Menguji
Video: Komunikasi Bersiri Arduino: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Banyak projek Arduino bergantung pada penghantaran data antara beberapa Arduino.
Sama ada anda peminat yang membina kereta RC, kapal terbang RC, atau merancang stesen cuaca dengan paparan jauh, anda perlu mengetahui cara memindahkan data bersiri dari satu Arduino ke yang lain. Malangnya, sukar bagi penggemar untuk mendapatkan komunikasi data bersiri yang berfungsi dalam projek mereka sendiri. Ini kerana data bersiri dihantar sebagai aliran bait.
Tanpa jenis konteks dalam aliran bait, hampir mustahil untuk menafsirkan data. Tanpa dapat mentafsirkan data, Arduino anda tidak akan dapat berkomunikasi dengan pasti. Kuncinya adalah menambahkan data konteks ini ke aliran bait dengan menggunakan reka bentuk paket bersiri standard.
Reka bentuk paket bersiri, pemadatan paket, dan penghuraian paket adalah kompleks dan sukar dicapai. Nasib baik untuk pengguna Arduino, terdapat perpustakaan yang dapat melakukan semua logik kompleks ini di belakang tabir sehingga anda dapat memberi tumpuan untuk menjadikan projek anda berfungsi tanpa rasa gusar. Instructable ini akan menggunakan perpustakaan SerialTransfer.h untuk pemprosesan paket bersiri.
Ringkasnya: Instructable ini akan menerangkan bagaimana anda dapat melaksanakan data bersiri yang mantap dengan mudah dalam projek apa pun menggunakan perpustakaan SerialTransfer.h. Sekiranya anda ingin mengetahui lebih lanjut mengenai teori tahap rendah mengenai komunikasi bersiri yang mantap, lihat tutorial ini.
Bekalan
-
2 Arduino
Sangat digalakkan anda menggunakan Arduino yang mempunyai banyak UART perkakasan (iaitu Arduino Mega)
- Kawat cangkuk
-
Pasang SerialTransfer.h
Boleh didapati melalui Pengurus Perpustakaan Arduino IDE
Langkah 1: Sambungan Fizikal
Semasa menggunakan komunikasi bersiri, beberapa titik pendawaian perlu diingat:
- Pastikan semua landasan dihubungkan!
- Pin Arduino TX (Transmit) perlu disambungkan ke pin Arduino's RX (Terima) yang lain
Langkah 2: Cara Menggunakan Perpustakaan
SerialTransfer.h membolehkan anda menghantar sejumlah besar data dengan mudah menggunakan protokol paket khusus. Di bawah ini adalah penerangan mengenai semua ciri perpustakaan - banyak yang akan kami gunakan kemudian dalam tutorial ini:
SerialTransfer.txBuff
Ini adalah susunan bait di mana semua data muatan yang akan dihantar melalui siri disangga sebelum penghantaran. Anda boleh mengisi buffer ini dengan bait data untuk dihantar ke Arduino yang lain.
SerialTransfer.rxBuff
Ini adalah susunan bait di mana semua data muatan yang diterima dari Arduino yang lain disangga.
SerialTransfer.bytesRead
Jumlah bait muatan yang diterima oleh Arduino yang lain dan disimpan di SerialTransfer.rxBuff
SerialTransfer.begin (Strim & _port)
Memulakan contoh kelas perpustakaan. Anda boleh meneruskan objek kelas "Serial" sebagai parameter - malah objek kelas "SoftwareSerial"!
SerialTransfer.sendData (const uint16_t & messageLen)
Ini menjadikan Arduino anda menghantar "messageLen" bilangan bait dalam buffer transmisi ke Arduino yang lain. Contohnya, jika "messageLen" adalah 4, 4 bait pertama SerialTransfer.txBuff akan dihantar melalui siri ke Arduino yang lain.
SerialTransfer. Tersedia ()
Ini menjadikan Arduino anda menguraikan data bersiri yang diterima dari Arduino yang lain. Sekiranya fungsi ini mengembalikan boolean "true", ini bermaksud paket baru telah berjaya dihuraikan dan data paket yang baru diterima disimpan / tersedia di SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Menyertakan "len" bilangan bait objek sewenang-wenang (byte, int, float, double, struct, etc …) ke dalam buffer transmit bermula dari indeks seperti yang ditentukan oleh argumen "indeks".
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Membaca "len" bilangan bait dari buffer penerimaan (rxBuff) bermula dari indeks seperti yang ditentukan oleh argumen "indeks" menjadi objek sewenang-wenang (byte, int, float, double, struct, dll …).
CATATAN:
Cara termudah untuk menghantar data adalah dengan menentukan terlebih dahulu struktur yang mengandungi semua data yang ingin anda hantar. Arduino di hujung penerima harus mempunyai struktur yang sama.
Langkah 3: Hantar Data Asas
Sketsa berikut menghantar nilai ADC analogRead (0) dan nilai analogRead (0) ditukar kepada voltan ke Arduino # 2.
Muat naik lakaran berikut ke Arduino # 1:
#sertakan "SerialTransfer.h"
SerialTransfer myTransfer; struktur STRUCT {uint16_t adcVal; voltan apungan; } data; persediaan tidak sah () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Siri1); } gelung void () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (data, sizeof (data)); myTransfer.sendData (sizeof (data)); kelewatan (100); }
Langkah 4: Terima Data Asas
Kod berikut mencetak nilai ADC dan voltan yang diterima dari Arduino # 1.
Muat naik kod berikut ke Arduino # 2:
#sertakan "SerialTransfer.h"
SerialTransfer myTransfer; struktur STRUCT {uint16_t adcVal; voltan apungan; } data; persediaan tidak sah () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Siri1); } gelung void () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); Serial.print (data.adcVal); Cetakan bersiri (''); Serial.println (data.voltage); Bersiri.println (); } lain jika (myTransfer.status <0) {Serial.print ("ERROR:"); jika (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); lain jika (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); lain jika (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Langkah 5: Menguji
Setelah kedua sketsa diunggah ke Arduino masing-masing, anda boleh menggunakan Monitor Serial di Arduino # 2 untuk mengesahkan bahawa anda menerima data dari Arduino # 1!
Disyorkan:
Raspberry PI 3 - Aktifkan Komunikasi Bersiri ke TtyAMA0 hingga BCM GPIO 14 dan GPIO 15: 9 Langkah
Raspberry PI 3 - Aktifkan Komunikasi Bersiri ke TtyAMA0 ke BCM GPIO 14 dan GPIO 15: Saya baru-baru ini berminat untuk mengaktifkan UART0 pada Raspberry Pi (3b) saya supaya saya dapat menghubungkannya terus ke peranti tahap isyarat RS-232 menggunakan standard 9 -pin d-sub penyambung tanpa perlu melalui penyesuai USB ke RS-232. Sebahagian daripada minat saya
PIC MCU dan Komunikasi Bersiri Python: 5 Langkah
Komunikasi Bersiri PIC MCU dan Python: Helo, kawan-kawan! Dalam projek ini saya akan cuba menerangkan eksperimen saya mengenai komunikasi bersiri PIC MCU dan Python. Melalui internet, terdapat banyak tutorial dan video mengenai cara berkomunikasi dengan PIC MCU melalui terminal maya yang sangat berguna. Bagaimana
Komunikasi Bersiri Arduino dan Python - Paparan Pad Kekunci: 4 Langkah
Arduino dan Python Serial Communication - Paparan Keypad: Projek ini dibuat untuk pengguna mac tetapi ia juga dapat dilaksanakan untuk Linux dan Windows, satu-satunya langkah yang harus berbeza adalah pemasangan
Komunikasi Bersiri Tanpa Wayar Menggunakan Buah Biru: 4 Langkah
Komunikasi Bersiri Tanpa Wayar Menggunakan Bluefruit: Berikut adalah panduan langkah demi langkah yang mudah untuk mengganti wayar anda dengan sambungan tenaga rendah bluetooth: Saya mengambil sedikit masa untuk mengetahui ini kerana hampir tidak ada dokumentasi untuk melakukan ini dengan teknologi tenaga rendah Bluetooth moden seperti sebagai Bluefrui
SmartMirror berasaskan Web Menggunakan Komunikasi Bersiri: 6 Langkah
SmartMirror Berasaskan Web Menggunakan Komunikasi Bersiri: Arahan ini disampaikan dengan semua kod yang siap digunakan. Pembangunannya sangat rumit tetapi setelah disiapkan, sangat mudah untuk disesuaikan. Lihat dan nikmati;)