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

Perangkat Lunak untuk Merekam File Audio Ke Chip ISD1700

Komponen dan persediaan

Arduino Nano R3
× 1
Breadboard (generik)
× 2
Modul perekaman dan pemutaran suara ISD1760
× 1
Kabel USB-A ke Mini-USB
× 1
Konektor Audio Ponsel, 3,5 mm
× 2
Suplai Daya Dinding Pengalih 9V 1A
× 1
Suplai daya papan tempat memotong roti 5V
× 1
Kabel jumper (generik)
× 1

Aplikasi dan layanan online

Alat Rekam ISD1700
Arsip dengan Alat Rekam ISD1700 dengan kode untuk ARDUINO dan aplikasi Windows
Arduino IDE

Tentang proyek ini

Dalam salah satu proyek terbaru saya, saya perlu menambahkan menyuarakan pesan teks singkat. Perisai seperti MP3-modul dengan SD-card menurut saya berlebihan, dan «mengajarkan» Arduino untuk mereproduksi ucapan manusia berarti menghabiskan semua sumber daya mikrokontroler pada tugas ini saja, yang sebenarnya merupakan salah satu tambahan. Saya juga akan kehabisan memori dalam hal apa pun.

Pencarian singkat mengungkapkan chip perekaman suara dan pemutaran seri ISD1700, dikendalikan SPI, mampu menyimpan pesan hingga beberapa menit.

Pesan suara disiapkan sebelumnya dalam bentuk file terpisah. Satu-satunya pertanyaan yang tersisa adalah cara merekamnya ke dalam memori IC. Pemrogram untuk ISD1700 tidak tersebar luas dan harganya jauh lebih tinggi daripada chip itu sendiri. Ada beberapa informasi tentang cara membuatnya (https://laserwar.ru/sound_lasertag.html), tetapi saya seorang programmer daripada amatir radio, jadi saya ingin menggunakan perangkat keras standar – papan Arduino sangat bagus untuk peran itu.

Setelah lembar data («ISD1700Design Guide») dipelajari, saya menyadari bahwa ada input analog yang dapat digunakan untuk merekam file. Dan untuk otomatisasi proses, saya memutuskan untuk menulis perangkat lunak khusus - Alat Perekaman ISD1700.

Alat Rekam ISD1700 memungkinkan Anda untuk merekam satu set file audio ke ISD1700 melalui papan Arduino. Perangkat lunak ini terdiri dari dua bagian:sketsa untuk papan Arduino (ISD1700.ino ) dan aplikasi Windows mandiri (ISD1700.exe ).

Sketsa di ISD1700.ino ditulis untuk papan ARUINO berbasis ATMega328P (diuji pada Arduino Uno dan Arduino Nano), tetapi mungkin juga berfungsi pada papan lain.

Daftar ISD1700 yang didukung:

1) ISD1730;

2) ISD1740;

3) ISD1750;

4) ISD1760;

5) ISD1790;

6) ISD17120;

7) ISD17150;

8) ISD17180;

9) ISD17210;

10) ISD17240.

Aplikasi Windows didasarkan pada perpustakaan audio BASS, yang mendukung format yang paling banyak digunakan:MP3, WAV, OGG dll.

1. Koneksi perangkat keras

Selama pengembangan perangkat lunak saya menggunakan modul perekaman yang sudah jadi, bukan IC ISD1700 yang terpisah. Sebelum mencoba kemungkinan varian koneksi lainnya, saya sangat menyarankan untuk membaca lembar data ISD1700 asli.

Gambar 1-5 menunjukkan perangkat keras saya. ARDUINO NANO digunakan dalam kasus ini.

Pada papan tempat memotong roti kecil saya meletakkan dua soket 3,5 mm (Gbr. 2) untuk input audio (kiri) dan earphone (kanan).

Saya merekomendasikan menggunakan unit catu daya tambahan daripada menyalakan semua komponen melalui output 5V Arduino karena saya memiliki banyak kesalahan koneksi tanpa sumber daya eksternal. Namun, hal ini dapat disebabkan oleh kualitas sambungan kabel yang buruk atau hal lainnya.

2. Mem-flash Arduino

Hubungkan papan Arduino ke PC Anda melalui USB, buka ISD1700.ino di ADUINO IDE dan upload sketsa seperti biasa (Gbr. 6).

3. Antarmuka pengguna aplikasi

Jalankan ISD1700.exe . Deskripsi setiap elemen kontrol ditunjukkan pada Gambar 7.

4. Urutan operasional tipikal

Gbr. 8 menunjukkan urutan operasional tipikal dalam aplikasi Windows.

Deskripsi:

1. Buka file audio yang ingin Anda rekam ke ISD1700. Urutkan mereka hanya dengan menyeretnya dengan mouse, atau hapus file yang tidak diinginkan (setelah memeriksanya sebelumnya) jika perlu. Anda juga dapat memutar setiap file dan menyesuaikan level volume.

2. Pilih COM-port tempat board ARDUINO terhubung (Gbr. 9).

3. Tekan tombol “Detect ISD1700” dan pastikan model ISD1700 telah ditampilkan pada kotak di sebelah kanan.

4. Pastikan durasi total semua file audio kurang dari kapasitas ISD1700 dalam detik; jika tidak, Anda tidak akan dapat mulai merekam.

5. Tekan tombol “Mulai merekam”. Anda dapat melihat kemajuan di bilah. Tekan “Stop record” jika perlu.

6. Setelah proses selesai, Anda dapat menyalin alamat semua trek ke clipboard.Gbr. 10 menunjukkan perbedaan antara dua opsi.

Menggunakan modul perekaman ISD1700 membuatnya dapat memutar file audio sesaat setelah proses perekaman selesai dengan bantuan earphone dan tombol onboard.

Kode

  • Kode ARDUINO ISD1700
Kode ARDUINO ISD1700C/C++
// Kode Arduino untuk Alat Rekam ISD1700// Diuji:Arduino Uno, Arduino Nano (ATMega328P)// Hak Cipta:Anton Tsaritsynskyy, Agustus 2019// Email:[email protected]//// Ini perangkat lunak disediakan "sebagaimana adanya" tanpa jaminan apa pun.// Penulis tidak bertanggung jawab atas efek yang tidak diinginkan yang disebabkan oleh penggunaan perangkat lunak ini.// Distribusi komersial perangkat lunak ini tidak diizinkan.// Pustaka dan komponen pihak ketiga adalah milik mereka masing-masing pengembang.#include const unsigned int ISD_ERASE_OK =3002;const unsigned int ISD_REC_OK =3003;const unsigned int ISD_STOP_OK =3004;const unsigned int ISD_RESET_OK =3005;const unsigned int ISDOK_ 3006Lconst unsigned =3006Lconst unsigned int ISD_RESET_OK 3007;const byte ISD_SS_PIN =8;boolean isdIsUp =false;boolean isdNotifyIfFull =true;boolean isdPowerUp(void) { byte SR0B1 =1; SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SR0B1 =SPI.transfer(0x01); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); kembali (SR0B1 &1) !=1; }boolean isdPowerDown(void) { SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x07); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaction();}boolean isdReset(void) { SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x03); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); delay(20);}void isdClrInt(void) { SPI.beginTransaction(SPISettings(1000000, LSBFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x04); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaction();}boolean isdIsReady(void) { byte SR1 =0; SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x05); SPI.transfer (0x00); SR1 =SPI.transfer(0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); kembali (~SR1 &1) !=1; }void isdEnableAnaIn(void) { byte APC [2]; SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x44); SPI.transfer (0x00); APC[0] =SPI.transfer(0x00); APC[1] =SPI.transfer(0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); APC[0] &=~B01010000; SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x45); SPI.transfer(APC[0]); SPI.transfer(APC[1]); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaction();}byte isdDeviceID(void) { byte ID; SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x09); SPI.transfer (0x00); ID =SPI.transfer(0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); return ID;}boolean isdIsFull(void) { byte SR0B1 =2; SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SR0B1 =SPI.transfer(0x05); SPI.transfer (0x00); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); kembali (SR0B1 &2) ==2; }void isdRec(void) { SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x41); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); delay(40);}void isdStop(void) { SPI.beginTransaction(SPISettings(1000000, LSBFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x02); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); delay(100);}void isdErase(void) { SPI.beginTransaction(SPISettings(1000000, LSBFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x43); SPI.transfer (0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); while ( !isdIsReady() ) {} }unsigned int isdReadRecordPointer(void) { byte DB[2]; SPI.beginTransaction(SPISettings(1000000, LSFIRST, SPI_MODE3)); digitalWrite(ISD_SS_PIN, RENDAH); SPI.transfer (0x08); SPI.transfer (0x00); DB[0] =SPI.transfer(0x00); DB[1] =SPI.transfer(0x00); digitalWrite(ISD_SS_PIN, TINGGI); SPI.endTransaksi(); kembali (DB[1] <<8) | DB[0];}unsigned int isdInit(void) { while ( !isdPowerUp() ) {} delay(100); isdClrInt(); while ( !isdIsReady() ) {} isdEnableAnaIn(); return 3000+isdDeviceID();}pengaturan batal() { pinMode(ISD_SS_PIN, OUTPUT); digitalWrite(ISD_SS_PIN, TINGGI); Serial.begin(9600); SPI.mulai(); }char cmd; void loop() { if (Serial.available()) { cmd =Serial.read(); switch (cmd) { case 'D':Serial.print( isdInit() ); isdPowerDown(); isdIsUp =salah; merusak; kasus 'E':isdInit(); isdHapus(); Serial.print(ISD_ERASE_OK); isdIsUp =benar; isdNotifyIfFull =benar; merusak; kasus 'R':isdRec(); Serial.print(ISD_REC_OK); merusak; kasus 'S':isdStop(); Serial.print( isdReadRecordPointer() ); merusak; kasus 'X':isdReset(); Serial.print(ISD_RESET_OK); isdIsUp =salah; merusak; case 'C':if (isdIsUp) { isdStop(); isdReset(); Serial.print(ISD_CANCEL_OK); isdIsUp =salah; } merusak; } } if (isdNotifyIfFull &&isdIsUp) { if (isdIsFull()) { isdReset(); isdIsUp =salah; Serial.print(ISD_FULL); isdNotifyIfFull =salah; } }}

Skema


Proses manufaktur

  1. Sertifikasi ISO 26262 untuk Komponen Perangkat Lunak
  2. Target Paduan Titanium Tungsten untuk Keripik
  3. Target Tungsten Kemurnian Tinggi untuk Chip Semikonduktor
  4. Chip AI melonjak, perangkat lunak AI mendapatkan sorotan
  5. PULSE OXIMETER untuk penggunaan DARURAT selama PENYAKIT CORONAVIRUS
  6. Lampu Meja Reaktif Audio Arduino
  7. Stasiun Cuaca ArduinoThingSpeak
  8. Auto-Keyer untuk Radio Fox Hunting
  9. Health Band - Asisten Cerdas untuk Lansia
  10. File Hexion untuk kebangkrutan