Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Программное обеспечение для записи аудиофайлов на микросхемы ISD1700

Компоненты и расходные материалы

Arduino Nano R3
× 1
Макет (общий)
× 2
Модуль записи и воспроизведения голоса ISD1760
× 1
Кабель USB-A - Mini-USB
× 1
Телефонный аудиоразъем, 3,5 мм
× 2
9 В, 1 А, импульсный настенный источник питания
× 1
Источник питания макетной платы 5 В
× 1
Перемычки (общие)
× 1

Приложения и онлайн-сервисы

Инструмент записи ISD1700
Архивируйте с помощью инструмента записи ISD1700 с кодом для ARDUINO и приложения Windows
IDE Arduino

Об этом проекте

В одном из моих недавних проектов мне нужно было добавить озвучивание коротких текстовых сообщений. Щиты типа MP3-модуля с SD-картой мне показались излишними, и «научить» Arduino воспроизводить человеческую речь означало бы потратить все ресурсы микроконтроллера только на эту задачу, которая по сути является вспомогательной. Кроме того, в любом случае мне будет не хватать памяти.

Беглый поиск выявил микросхемы записи и воспроизведения голоса серии ISD1700 с управлением по SPI, способные хранить сообщения длительностью до нескольких минут.

Голосовые сообщения были заранее подготовлены в виде отдельных файлов. Оставался только вопрос, как их записать в память ИС. Программаторы для ISD1700 не получили широкого распространения и стоят намного дороже самих чипов. Была некоторая информация о том, как его построить (https://laserwar.ru/sound_lasertag.html), но я скорее программист, чем радиолюбитель, поэтому я хотел использовать стандартное оборудование - плата Arduino отлично подходила для этой роли.

После изучения таблицы («ISD1700Design Guide») я понял, что есть аналоговый вход, через который можно записывать файлы. А для автоматизации процессов я решил написать специальную программу - ISD1700 Record Tool.

ISD1700 Record Tool позволяет записывать набор аудиофайлов в ISD1700 через плату Arduino. Программа состоит из двух частей:эскиз платы Arduino ( ISD1700.ino ) и отдельное приложение Windows ( ISD1700.exe ).

Эскиз в ISD1700.ino написан для платы ARUINO на базе ATMega328P (протестирован на Arduino Uno и Arduino Nano), но, вероятно, также может работать и на других платах.

Список поддерживаемых ISD1700:

1) ISD1730;

2) ISD1740;

3) ISD1750;

4) ISD1760;

5) ISD1790;

6) ISD17120;

7) ISD17150;

8) ISD17180;

9) ISD17210;

10) ISD17240.

Приложение для Windows основано на аудио библиотеке BASS, которая поддерживает наиболее распространенные форматы:MP3, WAV, OGG и др.

1. Подключение оборудования

При разработке программного обеспечения я использовал готовый записывающий модуль вместо отдельной микросхемы ISD1700. Прежде чем пробовать любые другие возможные варианты подключения, настоятельно рекомендую ознакомиться с исходным техническим описанием ISD1700.

На рис. 1–5 показан мой комплект оборудования. В этом случае используется ARDUINO NANO.

На небольшой макетной плате я поместил два гнезда 3,5 мм (рис. 2) для аудиовхода (слева) и наушников (справа).

Я рекомендую использовать дополнительный блок питания, а не питать все компоненты через выход 5V Arduino, потому что у меня было много ошибок подключения без внешнего источника питания. Однако это может быть связано с плохим качеством проводных соединений или чем-то еще.

2. Прошивка Arduino

Подключите плату Arduino к компьютеру через USB, откройте ISD1700.ino в ADUINO IDE и загрузите скетч как обычно (рис. 6).

3. Пользовательский интерфейс приложения

Запустите ISD1700.exe . Описание каждого элемента управления показано на рис. 7.

4. Типовая последовательность действий

На рис. 8 показана типичная последовательность действий в приложении Windows.

Описание:

1. Откройте аудиофайлы, которые хотите записать на ISD1700. Сортируйте их, просто перетаскивая мышью, или удаляйте ненужные файлы (предварительно проверив их), если необходимо. Также вы можете воспроизводить каждый файл и регулировать уровень громкости.

2. Выберите COM-порт, к которому подключена плата ARDUINO (рис. 9).

3. Нажмите кнопку «Определить ISD1700» и убедитесь, что модель ISD1700 отображается в поле справа.

4. Убедитесь, что общая продолжительность всех аудиофайлов меньше, чем емкость ISD1700 в секундах; иначе вы не сможете начать запись.

5. Нажмите кнопку «Начать запись». Вы можете видеть прогресс на панели. При необходимости нажмите «Остановить запись».

6. После завершения процесса вы можете скопировать адреса всех треков в буфер обмена. 10 показывает разницу между двумя вариантами.

Использование модуля записи ISD1700 позволяет воспроизводить аудиофайлы сразу после завершения процесса записи с помощью наушников и встроенных кнопок.

Код

  • Код ISD1700 ARDUINO
Код ISD1700 ARDUINO C / C ++
 // Код Arduino для инструмента записи ISD1700 // Протестировано:Arduino Uno, Arduino Nano (ATMega328P) // Авторские права:Антон Царицынский, август 2019 г. // Электронная почта:[email protected]//// Это программное обеспечение предоставляется «как есть» без каких-либо гарантий. // Автор не несет ответственности за любые нежелательные эффекты, вызванные использованием этого программного обеспечения .// Коммерческое распространение этого программного обеспечения не разрешено .// Сторонние библиотеки и компоненты являются собственностью их соответствующие разработчики. # 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 ISD_CANCEL_OIGN =3006; 3007; const byte ISD_SS_PIN =8; логическое isdIsUp =false; логическое isdNotifyIfFull =true; логическое isdPowerUp (void) {byte SR0B1 =1; SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SR0B1 =SPI.transfer (0x01); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); возврат (SR0B1 &1)! =1; } логическое isdPowerDown (void) {SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x07); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction ();} логическое isdReset (void) {SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x03); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); delay (20);} void isdClrInt (void) {SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x04); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction ();} логическое isdIsReady (void) {байт SR1 =0; SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x05); SPI.transfer (0x00); SR1 =SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); возврат (~ SR1 &1)! =1; } void isdEnableAnaIn (void) {byte APC [2]; SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x44); SPI.transfer (0x00); APC [0] =SPI.transfer (0x00); APC [1] =SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); APC [0] &=~ B01010000; SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x45); SPI.transfer (APC [0]); SPI.transfer (APC [1]); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction ();} byte isdDeviceID (void) {идентификатор байта; SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x09); SPI.transfer (0x00); ID =SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); return ID;} логическое isdIsFull (void) {байт SR0B1 =2; SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SR0B1 =SPI.transfer (0x05); SPI.transfer (0x00); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); возврат (SR0B1 &2) ==2; } void isdRec (void) {SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x41); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); delay (40);} void isdStop (void) {SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x02); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); delay (100);} void isdErase (void) {SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x43); SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); while (! isdIsReady ()) {}} беззнаковое int isdReadRecordPointer (void) {byte DB [2]; SPI.beginTransaction (SPISettings (1000000, LSBFIRST, SPI_MODE3)); digitalWrite (ISD_SS_PIN, LOW); SPI.transfer (0x08); SPI.transfer (0x00); DB [0] =SPI.transfer (0x00); DB [1] =SPI.transfer (0x00); digitalWrite (ISD_SS_PIN, HIGH); SPI.endTransaction (); return (DB [1] <<8) | DB [0];} unsigned int isdInit (void) {while (! IsdPowerUp ()) {} задержка (100); isdClrInt (); в то время как (! isdIsReady ()) {} isdEnableAnaIn (); return 3000 + isdDeviceID ();} установка void () {pinMode (ISD_SS_PIN, OUTPUT); digitalWrite (ISD_SS_PIN, HIGH); Serial.begin (9600); SPI.begin (); } char cmd; void loop () {если (Serial.available ()) {cmd =Serial.read (); переключатель (cmd) {case 'D':Serial.print (isdInit ()); isdPowerDown (); isdIsUp =false; ломать; case 'E':isdInit (); isdErase (); Серийный.печать (ISD_ERASE_OK); isdIsUp =true; isdNotifyIfFull =true; ломать; case 'R':isdRec (); Серийный.печать (ISD_REC_OK); ломать; case 'S':isdStop (); Serial.print (isdReadRecordPointer ()); ломать; case 'X':isdReset (); Серийный.печать (ISD_RESET_OK); isdIsUp =false; ломать; случай 'C':if (isdIsUp) {isdStop (); isdReset (); Серийный.печать (ISD_CANCEL_OK); isdIsUp =false; } ломать; }} если (isdNotifyIfFull &&isdIsUp) {если (isdIsFull ()) {isdReset (); isdIsUp =false; Serial.print (ISD_FULL); isdNotifyIfFull =false; }}} 

Схема


Производственный процесс

  1. Сертификация ISO 26262 для компонентов программного обеспечения
  2. Мишень из вольфрамового титанового сплава для чипов
  3. Вольфрамовая мишень высокой чистоты для полупроводниковых чипов
  4. Взлетает количество микросхем ИИ, все больше внимания уделяется программному обеспечению ИИ
  5. ОКСИМЕТР ИМПУЛЬСА для АВАРИЙНОГО ПРИМЕНЕНИЯ во время болезни КОРОНАВИРУСА
  6. Реактивный настольный светильник для звука Arduino
  7. Метеостанция ThingSpeak Arduino
  8. Автоключ для охоты на лис по радио
  9. Health Band - умный помощник для пожилых людей
  10. Файлы Hexion для банкротства