Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49
Banyak proyek Arduino mengandalkan transmisi data antara beberapa Arduino.
Baik Anda hobi membuat mobil RC, pesawat RC, atau merancang stasiun cuaca dengan tampilan jarak jauh, Anda perlu mengetahui cara mentransfer data serial dari satu Arduino ke Arduino lainnya dengan andal. Sayangnya, sulit bagi penghobi untuk mendapatkan komunikasi data serial yang bekerja di proyek mereka sendiri. Ini karena data serial dikirim sebagai aliran byte.
Tanpa konteks apa pun dalam aliran byte, hampir tidak mungkin untuk menafsirkan data. Tanpa dapat menafsirkan data, Arduino Anda tidak akan dapat berkomunikasi dengan andal. Kuncinya adalah menambahkan data konteks ini ke aliran byte dengan menggunakan desain paket serial standar.
Desain paket serial, isian paket, dan penguraian paket rumit dan sulit dicapai. Beruntung bagi pengguna Arduino, ada perpustakaan yang tersedia yang dapat melakukan semua logika rumit ini di belakang layar sehingga Anda dapat fokus untuk membuat proyek Anda bekerja tanpa kesulitan ekstra. Instruksi ini akan menggunakan perpustakaan SerialTransfer.h untuk pemrosesan paket serial.
Singkatnya: Instruksi ini akan membahas bagaimana Anda dapat mengimplementasikan data serial yang kuat dengan mudah di proyek apa pun menggunakan perpustakaan SerialTransfer.h. Jika Anda ingin mempelajari lebih lanjut tentang teori tingkat rendah tentang komunikasi serial yang kuat, lihat tutorial ini.
Perlengkapan
-
2 Arduino
Sangat disarankan agar Anda menggunakan Arduino yang memiliki banyak UART perangkat keras (yaitu Arduino Mega)
- Kawat penghubung
-
Instal SerialTransfer.h
Tersedia melalui Manajer Perpustakaan Arduino IDE
Langkah 1: Koneksi Fisik
Saat menggunakan komunikasi serial, beberapa titik pengkabelan perlu diingat:
- Pastikan semua ground terhubung!
- Pin Arduino TX (Transmit) perlu dihubungkan ke pin RX (Receive) Arduino lainnya
Langkah 2: Cara Menggunakan Perpustakaan
SerialTransfer.h memungkinkan Anda mengirim data dalam jumlah besar dengan mudah menggunakan protokol paket khusus. Di bawah ini adalah deskripsi semua fitur perpustakaan - banyak di antaranya akan kita gunakan nanti dalam tutorial ini:
SerialTransfer.txBuff
Ini adalah array byte di mana semua data muatan yang akan dikirim melalui serial di-buffer sebelum transmisi. Anda dapat mengisi buffer ini dengan byte data untuk dikirim ke Arduino lain.
SerialTransfer.rxBuff
Ini adalah array byte di mana semua data payload yang diterima dari Arduino lain di-buffer.
SerialTransfer.bytesBaca
Jumlah byte payload yang diterima oleh Arduino lain dan disimpan di SerialTransfer.rxBuff
SerialTransfer.begin(Aliran &_port)
Menginisialisasi instance dari kelas perpustakaan. Anda dapat melewatkan objek kelas "Serial" sebagai parameter - bahkan objek kelas "SoftwareSerial"!
SerialTransfer.sendData(const uint16_t &messageLen)
Ini membuat Arduino Anda mengirim "messageLen" sejumlah byte di buffer transmisi ke Arduino lain. Misalnya, jika "messageLen" adalah 4, 4 byte pertama dari SerialTransfer.txBuff akan dikirim melalui serial ke Arduino lainnya.
SerialTransfer.tersedia()
Ini membuat Arduino Anda mem-parsing data serial yang diterima dari Arduino lain. Jika fungsi ini mengembalikan boolean "true", itu berarti paket baru telah berhasil diurai dan data paket yang baru diterima disimpan/tersedia di SerialTransfer.rxBuff.
SerialTransfer.txObj(const T &val, const uint16_t &len, const uint16_t &indeks=0)
Masukkan "len" jumlah byte dari objek arbitrer (byte, int, float, double, struct, dll…) ke dalam buffer transmisi mulai dari indeks seperti yang ditentukan oleh argumen "index".
SerialTransfer.rxObj(const T &val, const uint16_t &len, const uint16_t &index=0)
Membaca "len" jumlah byte dari buffer penerima (rxBuff) mulai dari indeks seperti yang ditentukan oleh argumen "index" menjadi objek arbitrer (byte, int, float, double, struct, dll…).
CATATAN:
Cara termudah untuk mengirimkan data adalah dengan terlebih dahulu menentukan struct yang berisi semua data yang ingin Anda kirim. Arduino di sisi penerima harus memiliki struct identik yang ditentukan.
Langkah 3: Mengirimkan Data Dasar
Sketsa berikut mentransmisikan nilai ADC dari analogRead(0) dan nilai analogRead(0) yang dikonversi menjadi tegangan ke Arduino #2.
Unggah sketsa berikut ke Arduino #1:
#sertakan "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUKTUR { uint16_t adcVal; tegangan mengambang; } data; void setup() { Serial.begin(115200); Serial1.begin(115200); myTransfer.begin(Serial1); } void loop() { data.adcVal = analogRead(0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj(data, ukuran(data)); myTransfer.sendData(ukuran(data)); penundaan(100); }
Langkah 4: Terima Data Dasar
Kode berikut mencetak nilai ADC dan tegangan yang diterima dari Arduino #1.
Unggah kode berikut ke Arduino #2:
#sertakan "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUKTUR { uint16_t adcVal; tegangan mengambang; } data; void setup() { Serial.begin(115200); Serial1.begin(115200); myTransfer.begin(Serial1); } void loop() { if(myTransfer.available()) { myTransfer.rxObj(data, sizeof(data)); Serial.print(data.adcVal); Serial.print(' '); Serial.println(data.voltage); Serial.println(); } else if(myTransfer.status < 0) { Serial.print("ERROR: "); if(myTransfer.status == -1) Serial.println(F("CRC_ERROR")); else if(myTransfer.status == -2) Serial.println(F("PAYLOAD_ERROR")); else if(myTransfer.status == -3) Serial.println(F("STOP_BYTE_ERROR")); } }
Langkah 5: Pengujian
Setelah kedua sketsa diunggah ke Arduino masing-masing, Anda dapat menggunakan Serial Monitor di Arduino #2 untuk memverifikasi bahwa Anda menerima data dari Arduino #1!
Direkomendasikan:
Raspberry PI 3 - Aktifkan Komunikasi Serial ke TtyAMA0 ke BCM GPIO 14 dan GPIO 15: 9 Langkah
Raspberry PI 3 - Aktifkan Komunikasi Serial ke TtyAMA0 ke BCM GPIO 14 dan GPIO 15: Saya baru-baru ini tertarik untuk mengaktifkan UART0 pada Raspberry Pi (3b) saya sehingga saya dapat menghubungkannya langsung ke perangkat level sinyal RS-232 menggunakan standar 9 -pin konektor d-sub tanpa harus melalui adaptor USB ke RS-232. Bagian dari ketertarikan saya
Komunikasi Serial Com a Dragonboard 410c Usando Mezzanine 96boards Sensors: 7 Langkah
Komunikasi Serial Com a Dragonboard 410c Usando Mezzanine 96boards Sensors: O objetivo desse tutorial é mostrar as etapas needárias para configurar o ambiente de desenvolvimento, de modo que seja possível comunicar com a Dragonboard 410c através de um computador / notebook usando comunica&ccedi
PIC MCU dan Komunikasi Serial Python: 5 Langkah
PIC MCU dan Komunikasi Serial Python: Halo guys! Dalam proyek ini saya akan mencoba menjelaskan eksperimen saya pada PIC MCU dan komunikasi serial Python. Melalui internet, ada banyak tutorial dan video tentang cara berkomunikasi dengan PIC MCU melalui terminal virtual yang sangat berguna. Namun
Komunikasi Serial Arduino dan Python - Tampilan Keypad: 4 Langkah
Komunikasi Serial Arduino dan Python - Tampilan Keypad: Proyek ini dibuat untuk pengguna mac tetapi juga dapat diimplementasikan untuk Linux dan Windows, satu-satunya langkah yang harus berbeda adalah instalasi
Komunikasi Serial Nirkabel Menggunakan Bluefruit: 4 Langkah
Komunikasi Serial Nirkabel Menggunakan Bluefruit: Berikut ini adalah panduan langkah demi langkah sederhana untuk mengganti kabel Anda dengan koneksi bluetooth hemat energi: Butuh beberapa saat untuk mengetahuinya karena hampir tidak ada dokumentasi untuk melakukan ini dengan teknologi energi rendah bluetooth modern seperti sebagai buah biru