Может ли Arduino определять температуру в помещении с помощью голосового вызова с использованием sim900?
Я строю блок контроля температуры с Arduino, LM35 и 16*2 ЖК-дисплеем. Теперь я собираюсь интегрировать это устройство с помощью GSM/GPRS-модуля SIM900A, и я получаю показания температуры по SMS.
Теперь мой вопрос, могу ли я получить эти значения с помощью голосового вызова. Если я позвонил в модем GSM, он может сказать показания температуры.
2 ответа
Помимо наличия всех сообщений в файлах PCM, есть также возможность использовать TTS (текст в речь). Существуют небольшие и компактные механизмы TTS, подходящие для порта Arduino. Вот два, которые я использую (с AVR32):
Tiny Speech Synth от Стэн 1901
просто перенесите его на свой Arduino (удаляя волны и просто используйте буфер в качестве PCM). Единственная библиотека, в которой она действительно нуждается,
math.h
заsin,cos
, Возможно, потребуется немного больше работы, чтобы сделать его более понятным, но это не так уж плохо при настройке частот... его использованиеfloats
в большой степени, но я думаю, что порт в целочисленную математику также возможно...это гораздо более старый движок TTS, первоначально разработанный ZX Spectrum, но он немного менее понятен, особенно с низкокачественными репродукторами (например, зуммером) ... Но для id не требуется ШИМ или ЦАП...
Я не знаю ни одного более свежего движка OpenSource TTS, достаточно компактного для платформы MCU. Все, что я знаю, слишком велики или работают на SAPI,.NET или других интегрированных в ОС вещах, что делает их бесполезными.
№ 1 прост и достаточно прокомментирован, чтобы внести изменения, улучшающие фонемы. № 2 был сильно оптимизирован по скорости и размеру (он работает на ~4 МГц Z80), поэтому нет никакого способа улучшить качество там.
Кстати, есть также IC для TTS, так что это может быть еще лучший выбор...
Вам необходимо добавить все возможные значения в виде файлов.amr или вы можете разбить их и воспроизвести соответствующие файлы, используя команды at. Например, за 35 вы можете воспроизвести звук "тридцать", а затем "пять".
Следуйте примечанию приложения для воспроизведения AMR, доступному здесь