Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Kirim Data dengan Suara

Komponen dan persediaan

Arduino Nano 33 BLE Sense
× 1

Tentang proyek ini

Di sini, di Chirp HQ, kami sangat senang mendengar pengumuman bahwa Arduino akan merilis papan baru dengan sejumlah fitur baru. Fitur-fitur ini mencakup berbagai sensor, prosesor yang kuat, dan yang paling penting - mikrofon terpasang! Orang-orang baik di Arduino mengirimi kami pra-rilis papan Nano 33 Sense baru, yang sepenuhnya kompatibel dengan Chirp, memungkinkan komunitas pembuat mengirim dan menerima data menggunakan suara.

Chirp menambahkan mekanisme transportasi yang benar-benar unik ke papan Arduino, kemampuan tambahan dari data-over-sound berarti bahwa peretas memiliki lebih banyak opsi konektivitas di ujung jari mereka. Beberapa keuntungan dari data-over-sound meliputi:

  • Agnostik perangkat:data dapat dikirim dari aplikasi seluler, halaman web, atau bahkan hanya dengan file audio
  • Satu ke banyak:perangkat apa pun dalam jangkauan pendengaran dapat menerima data dalam satu transaksi sederhana
  • Tanpa gesekan:tidak memerlukan penyambungan, sandi, atau penyiapan awal

Dalam tutorial ini kami akan mendemonstrasikan cara menggunakan Chirp SDK untuk mengirim nilai RGB untuk mengubah warna LED on board.

Chirp bahkan bekerja di tempat yang bising, berkat penelitian bertahun-tahun yang telah kami lakukan untuk membuat dekoder kuat terhadap suara latar belakang. Baca lebih lanjut tentang manfaat menggunakan data-over-sound di sini.

Jika Anda masih skeptis, cobalah sendiri.

Memulai dengan Chirp lebih mudah dari sebelumnya...

Memulai

Jika Anda belum melakukannya, Anda harus mendaftar ke Chirp di developers.chirp.io. Setelah mendaftar, Anda bisa mendapatkan kunci aplikasi, rahasia, dan konfigurasi audio untuk aplikasi Anda.

Menerima data

Karena Nano 33 Sense dikemas dengan mikrofon terpasang, yang Anda perlukan untuk menerima data menggunakan Chirp adalah SDK Chirp yang tersedia langsung dari Manajer Perpustakaan.

Cukup buka Library Manager, dan cari Chirp SDK. Instal v3.3.0 atau lebih baru dan Anda siap untuk memulai pengkodean.

Alat> Kelola Perpustakaan

Anda dapat membuka kode contoh kami untuk memulai.

File> Contoh> ChirpSDK> Nano33SenseReceive

Anda perlu menyalin dan menempelkan kredensial Anda untuk 16khz-mono-embedded protokol dari developers.chirp.io ke dalam file credential.h.

Kode contoh hanya akan mencetak data yang diterima ke Serial Monitor. Namun, kita dapat dengan mudah mengubah perilaku untuk menyalakan LED on board dengan mengedit onReceivedCallback fungsi.

Dalam fungsi pengaturan Anda, pertama-tama kita harus mengatur pin GPIO yang terhubung ke LED sebagai output

#define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24void setup() { pinMode(R_LED_PIN, OUTPUT); pinMode(G_LED_PIN, OUTPUT); pinMode(B_LED_PIN, OUTPUT);}  

Untuk menggerakkan LED, kita perlu mengeluarkan nilai RGB dari payload data.

void onReceivedCallback(void *chirp, uint8_t *payload, size_t length,{ if (length> 0) { // Nilai tinggi berarti kecerahan lebih rendah, jadi kita // kurangi dari UINT8_MAX analogWrite(R_LED_PIN, UINT8_MAX - payload [0]); analogWrite(B_LED_PIN, UINT8_MAX - payload[2]); } else { Serial.println(“Decode gagal”); }}  

Anda sekarang dapat menguji kode Anda dengan memutar file audio di bawah ini, masing-masing harus mengubah warna LED dari merah menjadi hijau menjadi biru.

Apa selanjutnya?

Iterasi pertama dari Chirp SDK for Arduino hanya beroperasi pada audio 16khz-mono-embedded protokol. Selama beberapa bulan mendatang, kami akan merilis versi yang tidak terdengar yang akan bekerja pada frekuensi mendekati ultrasonik. Dengan ini Anda akan dapat mengirim data pada frekuensi yang tidak dapat didengar manusia, jadi misalnya, Anda dapat menyematkan data kicauan di audio yang ada seperti lagu atau video untuk memicu tindakan.

Kami juga akan menindaklanjuti dengan lebih banyak tutorial tentang bagaimana Anda dapat memanfaatkan data-over-sound dengan Arduino. Beri tahu kami di mana Anda telah menggunakan Chirp di proyek Arduino Anda sendiri dengan menandai kami di twitter @chirp atau hubungi kami di [email protected].

Kode

  • Kicaukan nilai RGB ke Nano 33 Sense
Kirp nilai RGB ke Nano 33 SenseC/C++
Kirim nilai RGB menggunakan Chirp untuk mengubah warna LED on board. Anda dapat menggunakan klip suara terlampir pada tutorial ini untuk mencobanya, atau melakukannya sendiri dengan mengirimkan array 3 byte.
/**----------------- -------------------------------------------------- - Contoh kode untuk menerima data menggunakan board Arduino Nano 33 Sense. @file Nano33SenseReceive.ino @brief Buat akun pengembang di https://developers.chirp.io, dan salin dan tempel string kunci, rahasia, dan konfigurasi Anda untuk protokol "16khz-mono-embedded" ke dalam definisi kicauan di bawah ini. Contoh ini akan mulai mendengarkan nilai RGB dan mengubah warna LED on board. Sirkuit:- Papan Arduino Nano 33 BLE Hak Cipta © 2011-2019, Asio Ltd. Hak cipta dilindungi undang-undang. -------------------------------------------------- -----------------*/#include #include "chirp_connect.h"#define CHIRP_APP_KEY "YOUR_APP_KEY"#define CHIRP_APP_SECRET "YOUR_APP_SECRET"#definisikan CHIRP_APP_CONFIG "YOUR_APP_CONFIG "#define SAMPLE_RATE 16000#define BUFFER_SIZE 256#define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24// Variabel global ------------------------- --------------------------static chirp_connect_t *chirp =NULL;short sampleBuffer[BUFFER_SIZE];volatile int sampleRead;// Definisi fungsi --- -------------------------------------------------------void setupChirp(void); void chirpErrorHandler(kode chirp_connect_error_code_t);void padaPDMdata(void);// Main ---------------------------------- -----------------------------void setup(){ Serial.begin(115200);// while (!Serial); pinMode(R_LED_PIN, OUTPUT); pinMode(G_LED_PIN, OUTPUT); pinMode(B_LED_PIN, OUTPUT); setupChirp(); PDM.onReceive(padaPDMdata); PDM.setGain(30); if (!PDM.begin(1, SAMPLE_RATE)) { Serial.println("Gagal memulai PDM!"); sementara (1); } analogWrite(R_LED_PIN, UINT8_MAX); analogWrite(G_LED_PIN, UINT8_MAX); analogWrite(B_LED_PIN, UINT8_MAX);}void loop(){ if (samplesRead) { chirp_connect_error_code_t err =chirp_connect_process_shorts_input(chirp, sampleBuffer, sampleRead); chirpErrorHandler(err); sampelBaca =0; }}void onPDMdata(){ int bytesAvailable =PDM.available(); PDM.read(sampleBuffer, bytesAvailable); sampleRead =bytesAvailable / sizeof(short);}// Chirp ------------------------------------- -------------------------void onReceivingCallback(void *chirp, uint8_t *payload, size_t length, uint8_t channel){ Serial.println("Menerima data ..."); analogWrite(R_LED_PIN, UINT8_MAX); analogWrite(G_LED_PIN, UINT8_MAX); analogWrite(B_LED_PIN, UINT8_MAX);}void onReceivedCallback(void *chirp, uint8_t *payload, size_t length, uint8_t channel){ if (length) { // Nilai tinggi berarti kecerahan lebih rendah, jadi kita // kurangi dari UINT8_MAX analogWrite(R_LED_PIN, UINT8_MAX - muatan[0]); analogWrite(G_LED_PIN, UINT8_MAX - muatan[1]); analogWrite(B_LED_PIN, UINT8_MAX - payload[2]); } else { analogWrite(R_LED_PIN, 0); analogWrite(G_LED_PIN, UINT8_MAX); analogWrite(B_LED_PIN, UINT8_MAX); penundaan (500); analogWrite(R_LED_PIN, UINT8_MAX); penundaan (500); analogWrite(R_LED_PIN, 0); Serial.println("Decode gagal"); }}void chirpErrorHandler(kode chirp_connect_error_code_t){ if (kode !=CHIRP_CONNECT_OK) { const char *error_string =chirp_connect_error_code_to_string(kode); Serial.println(error_string); keluar (42); }}pengaturan batalChirp(void){ chirp =new_chirp_connect(CHIRP_APP_KEY, CHIRP_APP_SECRET); if (kicauan ==NULL) { Serial.println("Inisialisasi kicauan gagal."); kembali; } chirp_connect_error_code_t err =chirp_connect_set_config(chirp, CHIRP_APP_CONFIG); chirpErrorHandler(err); char *info =chirp_connect_get_info(kicau); Serial.println(info); chirp_connect_free(info); chirp_connect_callback_set_t callback_set ={ .on_state_changed =NULL, .on_sending =NULL, .on_sent =NULL, .on_receiving =onReceivingCallback, .on_received =onReceivedCallback }; err =chirp_connect_set_callbacks(kicauan, callback_set); chirpErrorHandler(err); err =chirp_connect_set_input_sample_rate(kicauan, SAMPLE_RATE); chirpErrorHandler(err); err =chirp_connect_set_frequency_correction(kicauan, 1,0096); chirpErrorHandler(err); err =chirp_connect_start(kicau); chirpErrorHandler(err); Serial.println("SDK Kicauan diinisialisasi."); Serial.flush();}

Proses manufaktur

  1. Rekor LP
  2. Integrasi Data Sensor dengan Mikroprosesor Raspberry Pi
  3. Apa yang Saya Lakukan dengan Data?!
  4. Memulai bisnis dengan IoT
  5. Meningkatkan Industri 4.0 dengan analisis tepi
  6. Tipe Data C++ Char dengan Contoh
  7. 8 Berbagai Jenis Pelanggaran Data Dengan Contoh
  8. Meningkatkan Efisiensi Energi dengan HMI
  9. Memberdayakan Tim Manufaktur Digital Dengan Pengetahuan
  10. Dengan Data Kota Real-Time Hadirkan Inovasi