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

Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan

Komponen dan Perlengkapan

Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan
Arduino Micro
×1
Sparkfun Electret Microphone Breakout
×1
BitVoicer Server
×1
BitVoicer Server 1.0
×1
Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan
LED (generik)
×3
Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan
Resistor 330 ohm
×3

Tentang Proyek Ini

Dalam postingan ini saya akan menunjukkan cara menggunakan papan Arduino dan BitVoicer Server untuk mengontrol beberapa LED dengan perintah suara. Saya akan menggunakan Arduino Micro dalam postingan ini, tetapi Anda dapat menggunakan papan Arduino apa pun yang Anda miliki.

Berikut prosedur yang akan dieksekusi untuk mengubah perintah suara menjadi aktivitas LED:


Video di atas menunjukkan hasil akhir dari postingan ini. Perhatikan dalam video bahwa BitVoicer Server juga memberikan masukan suara sintesis. Masukan suara sintesis ini didefinisikan di server dan direproduksi oleh adapter audio server, tetapi audio sintesis juga dapat dikirim ke Arduino dan direproduksi menggunakan konverter digital-ke-analog (DAC). Dalam postingan saya selanjutnya, saya akan menunjukkan cara menggunakan Arduino DUE, satu pemampul dan satu speaker untuk mereproduksi suara sintesis menggunakan Arduino itu sendiri.

Daftar Bahan:



STEP 1: Pemasangan


Langkah pertama adalah memasang Arduino dan breadboard dengan komponen seperti yang ditunjukkan dalam gambar di bawah ini.

Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan
Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan
Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan
Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan

Detail terpenting di sini adalah referensi analog yang diberikan ke ADC Arduino. Dalam pengujian saya, saya mendapatkan hasil yang lebih baik menggunakan 3,3V dengan Sparkfun Electret Breakout. Itulah sebabnya saya menambahkan kabel jumper antara pin 3,3V dan pin AREF. Jika Anda memutuskan untuk menggunakan fungsi analogRead (alasan apa pun) saat 3,3V diberikan ke pin AREF, Anda HARUS memanggil analogReference(EXTERNAL) sebelum Anda menggunakan fungsi analogRead. Jika tidak, Anda akan menyambungkan tegangan referensi aktif (yang dihasilkan secara internal) dan pin AREF, yang dapat merusak mikrokontroler pada papan Arduino Anda.


STEP 2: Mengunggah Kode ke Arduino


Sekarang Anda harus mengunggah kode di bawah ini ke Arduino Anda. Untuk kenyamanan, sketsa Arduino juga tersedia di bagian Lampiran di bagian bawah postingan ini. Sebelum Anda mengunggah kode, Anda harus menginstal perpustakaan BitVoicer Server ke Arduino IDE dengan benar (Mengimpor Perpustakaan .zip).

BVS_Demo1.ino

Sketsa ini memiliki empat bagian utama:



STEP 3: Mengimpor Objek Solusi BitVoicer Server


Sekarang Anda harus menyiapkan BitVoicer Server untuk bekerja dengan Arduino. BitVoicer Server memiliki empat objek solusi utama: Lokasi, Perangkat, BinaryData dan Skema Suara.

Lokasi mewakili lokasi fisik di mana suatu perangkat dipasang. Dalam kasus saya, saya membuat lokasi bernama Home.

Perangkat adalah klien BitVoicer Server. Saya membuat perangkat Mixed, menamainya ArduinoMicro dan memasukkan pengaturan komunikasi. CATATAN TENTANG ARDUINO MICRO: ia menggunakan RTS dan DTR jadi Anda harus mengaktifkan pengaturan ini di tab komunikasi. Saya juga membuat perangkat SystemSpeaker untuk sintesis suara menggunakan adapter audio server.

BinaryData adalah jenis perintah yang dapat dikirim BitVoicer Server ke perangkat klien. Mereka sebenarnya adalah array byte yang dapat Anda hubungkan ke perintah. Ketika BitVoicer Server mengenali ucapan yang terkait dengan perintah tersebut, itu mengirim array byte ke perangkat target. Saya membuat satu objek BinaryData untuk setiap nilai pin dan menamainya ArduinoMicroGreenLedOn, ArduinoMicroGreenLedOff dan seterusnya. Saya akhirnya memiliki 18 objek BinaryData dalam solusi saya, jadi saya sarankan Anda mengunduh dan mengimpor objek dari file VoiceSchema.sof di bawah ini.

Skema Suara adalah di mana semuanya berkumpul. Mereka mendefinisikan kalimat apa yang harus dikenali dan perintah apa yang akan dijalankan. Untuk setiap kalimat, Anda dapat mendefinisikan sebanyak mungkin perintah yang Anda butuhkan dan urutan eksekusinya. Anda juga dapat mendefinisikan jeda antara perintah. Itulah bagaimana saya berhasil melakukan urutan tindakan yang Anda lihat dalam video.

Anda dapat mengimpor (Mengimpor Objek Solusi) semua objek solusi yang saya gunakan dalam postingan ini dari file di bawah ini. Salah satu berisi Perangkat dan yang lainnya berisi Skema Suara dan Perintahnya.

Devices.sof


VoiceSchema.sof

STEP 4: Kesimpulan


Itu saja! Saya harap Anda menyukainya.

Anda memiliki semua yang Anda butuhkan untuk menjalankan demo yang ditunjukkan dalam video. Perhatikan bahwa dalam video saya mulai dengan mengaktifkan perangkat ArduinoMicro di BitVoicer Server Manager. Segera setelah diaktifkan, Arduino mengidentifikasi Engine Pengenalan Ucapan yang tersedia dan mulai streaming audio ke BitVoicer Server.

Anda dapat mengikuti hasil pengenalan di alat Server Monitor yang tersedia di BitVoicer Server Manager.

Dalam postingan saya selanjutnya saya akan menunjukkan bagaimana Anda dapat mereproduksi suara sintesis menggunakan Arduino DUE.


Kode

BVS_Demo1.inoArduino
#include <BVSP.h> #include <BVSMic.h> // Defines the Arduino pin that will be used to capture audio #define BVSM_AUDIO_INPUT 5 // Defines the LED pins #define RED_LED_PIN 6 #define YELLOW_LED_PIN 9 #define GREEN_LED_PIN 10 // Defines the constants that will be passed as parameters to // the BVSP.begin function const unsigned long STATUS_REQUEST_TIMEOUT = 1000; const unsigned long STATUS_REQUEST_INTERVAL = 2000; // Defines the size of the audio buffer const int AUDIO_BUFFER_SIZE = 64; // Defines the size of the receive buffer const int RECEIVE_BUFFER_SIZE = 2; // Initializes a new global instance of the BVSP class BVSP bvsp = BVSP(); // Initializes a new global instance of the BVSMic class BVSMic bvsm = BVSMic(); // Creates a buffer that will be used to read recorded samples // from the BVSMic class byte audioBuffer[AUDIO_BUFFER_SIZE]; // Creates a buffer that will be used to read the commands sent // from BitVoicer Server. // Byte 0 = pin number // Byte 1 = pin value byte receiveBuffer[RECEIVE_BUFFER_SIZE]; void setup() { // Sets up the pin modes pinMode(RED_LED_PIN, OUTPUT); pinMode(YELLOW_LED_PIN, OUTPUT); pinMode(GREEN_LED_PIN, OUTPUT); // Starts serial communication at 115200 bps Serial.begin(115200); // Sets the Arduino serial port that will be used for // communication, how long it will take before a status request // times out and how often status requests should be sent to // BitVoicer Server. bvsp.begin(Serial, STATUS_REQUEST_TIMEOUT, STATUS_REQUEST_INTERVAL); // Defines the function that will handle the frameReceived // event bvsp.frameReceived = BVSP_frameReceived; // Prepares the BVSMic class timer bvsm.begin(); } void loop() { // Checks if the status request interval has elapsed and if it // has, sends a status request to BitVoicer Server bvsp.keepAlive(); // Checks if there is data available at the serial port buffer // and processes its content according to the specifications // of the BitVoicer Server Protocol bvsp.receive(); // Checks if there is one SRE available. If there is one, // starts recording. if (bvsp.isSREAvailable()) { // If the BVSMic class is not recording, sets up the audio // input and starts recording if (!bvsm.isRecording) { bvsm.setAudioInput(BVSM_AUDIO_INPUT, EXTERNAL); bvsm.startRecording(); } // Checks if the BVSMic class has available samples if (bvsm.available) { // Makes sure the inbound mode is STREAM_MODE before // transmitting the stream if (bvsp.inboundMode == FRAMED_MODE) bvsp.setInboundMode(STREAM_MODE); // Reads the audio samples from the BVSMic class int bytesRead = bvsm.read(audioBuffer, AUDIO_BUFFER_SIZE); // Sends the audio stream to BitVoicer Server bvsp.sendStream(audioBuffer, bytesRead); } } else { // No SRE is available. If the BVSMic class is recording, // stops it. if (bvsm.isRecording) bvsm.stopRecording(); } } // Handles the frameReceived event void BVSP_frameReceived(byte dataType, int payloadSize) { // Checks if the received frame contains binary data // 0x07 = Binary data (byte array) if (dataType == DATA_TYPE_BINARY) { // If 2 bytes were received, process the command. if (bvsp.getReceivedBytes(receiveBuffer, RECEIVE_BUFFER_SIZE) == RECEIVE_BUFFER_SIZE) { analogWrite(receiveBuffer[0], receiveBuffer[1]); } } } 

Skematik

Proyek LED Kendali Suara: Arduino Micro + BitVoicer Server untuk Pengenalan Ucapan

Proses manufaktur

  1. Sistem Absensi RFID berbasis Arduino yang Andalkan dengan Python
  2. Proyek Sensor Suhu & Kelembaban DHT11 dengan Indikator LED dan Speaker Piezo
  3. Arduino Pemantau Suhu & Jam Real-Time dengan Layar TFT 3.2”
  4. Kendalikan Roomba Create 2 Anda dengan Arduino dan Android: Panduan Langkah-demi-Langkah
  5. Buat Voltmeter DIY dengan Arduino dan Layar Nokia 5110 – Panduan Langkah demi Langkah
  6. Arduino & MPU6050: Kontrol Servo Motor Presisi dengan SG90 & MG996R
  7. Modul GPS u-blox LEA-6H 02: Panduan Integrasi Arduino & Python
  8. Membaca Suhu dan Kelembaban dengan DHT11 pada Blynk – Tutorial Arduino Langkah demi Langkah
  9. Menguasai Pengenalan dan Sintesis Ucapan pada Arduino Due
  10. Membuat Kubus LED 4x4x4 dengan Arduino Uno & 1Sheeld – Proyek LED Interaktif