Оглавление:

Преобразование текста в речь Нажмите на UChip с процессором ARMbasic и другие SBC с процессором ARMbasic: 3 шага
Преобразование текста в речь Нажмите на UChip с процессором ARMbasic и другие SBC с процессором ARMbasic: 3 шага

Видео: Преобразование текста в речь Нажмите на UChip с процессором ARMbasic и другие SBC с процессором ARMbasic: 3 шага

Видео: Преобразование текста в речь Нажмите на UChip с процессором ARMbasic и другие SBC с процессором ARMbasic: 3 шага
Видео: НЕЙРОСЕТИ + PYTHON | Преобразование текста в речь на Python, Точность 100% 2024, Ноябрь
Anonim
Преобразование текста в речь Щелкните UChip на базе ARMbasic и другие SBC на базе ARMbasic
Преобразование текста в речь Щелкните UChip на базе ARMbasic и другие SBC на базе ARMbasic
Преобразование текста в речь Щелкните UChip на базе ARMbasic и другие SBC на базе ARMbasic
Преобразование текста в речь Щелкните UChip на базе ARMbasic и другие SBC на базе ARMbasic
Преобразование текста в речь Щелкните UChip на базе ARMbasic и другие SBC на базе ARMbasic
Преобразование текста в речь Щелкните UChip на базе ARMbasic и другие SBC на базе ARMbasic

Вступление: Добрый день. Меня зовут Тод. Я профессионал в области аэрокосмической и оборонной промышленности, который в душе тоже немного помешан.

Вдохновение: родом из эпохи удаленного доступа к BBS, 8-битных микроконтроллеров, персональных компьютеров Kaypro / Commodore / Tandy / TI-994A, когда магазины Radio Shack были в изобилии (старые добрые дни), одним из моих первых хобби-проектов встраиваемых систем был работа с комплектом для обучения микропроцессору Motorola MEK6800D2, который я приобрел во время совместной работы в лабораториях MSU EE (после прохождения обучения VoTech в средней школе по электронике в Южном Нижнем Мичигане). Этот проект включал мой прототип РЕЧЕВОГО ПРОЦЕССОРА Radio Shack SP0256 NARRATOR ™ на MEK6800D2, подключил его и запрограммировал 6800, чтобы заставить его издавать псевдо-речь (те, кто работал с HW на основе SP0256, точно знают, о чем я говорю). Это сработало замечательно, и я продвинулся по пути нарезания зубов во встроенных микроконтроллерах и сборке. После школы мешала жизнь: военные, война, супруги, дети, переход в гражданский сектор, начало карьеры и т. Д. - все это привело к тому, что я отказался от своего хобби в пользу стремления к жизни в западной культуре (здесь, в США).

Перенесемся на 20 лет вперед, приближаясь к неизбежному времени, когда дети взрослеют до такой степени, что Невеста и я отвлекаем, ипотека / транспортные средства / счета за колледж медленно оплачиваются, доходы улучшаются с продвижением, а у меня достаточно свободных Настало время, когда я смог снова сосредоточиться на каких-то эгоистичных начинаниях, и я вернулся к хобби, посвященному электронике. В любом случае, учитывая мое происхождение и историю, я искал и нашел среду разработки, с которой я быстро связался - ARMbasic - BASIC был моей первой любовью, и это отвечало требованиям не только повторного освоения меня к программированию, но и работы с оборудованием, которое было дико более сложным. мощнее, чем то, с чего я начал десятилетия назад, и таким образом путешествие началось.

Это было примерно в 2006-2009 годах. Затем по причинам, не зависящим от нас, жизнь изменилась (как это было для многих в те годы). Хобби отложили на полку - сосредоточиться на новой карьере, оправиться от финансовых проблем (в значительной степени он был вложен в сферу недвижимости, и мы взяли это на себя, а молодые люди только приближались к тому моменту, когда финансирование колледжа было императивом). По сути, проблемы Жизни и Первого Мира (мы действительно счастливы, учитывая проблемы и тяжелые труды, с которыми люди в других частях мира борются ежедневно) проявили себя, и … хобби было отложено. Я ненадолго вспомнил об этом в 2011-2012 годах, когда меня встретила еще одна смена карьеры - хобби снова отложили на полку.

Перенесемся еще на десять лет вперед и… Я вернулся, и, добрый лорд, надеюсь, на время (пока я не вздремну в этой пресловутой грязной дремоте и не начну поднимать ромашки снизу). Итак, вот и мы. Вау - Arduino (что это за странное слово?) Штурмовал рынок. Производители ?? Что они, черт возьми ?! …:) Мои друзья из Coridium Corp (владельцы плат разработки для микроконтроллеров ARMbasic и ARM) остались непоколебимыми и верными. Теперь вместо контроллеров серии LPC2xxx появился новый (для меня) объект ARM, Cortex M0 / M3 / M4, и Arduino, и… ВАУ! Культура немного изменилась, и во многих отношениях она сильно изменилась. Peeps сотрудничают удаленно и, по сути, глобально. Аппаратное обеспечение становится удивительно быстрым и мощным, и ARMbasic, созревший и упорно укрепившийся за счет использования различных семейств кремния, является прекрасным для меня и многих других.

Итак, делая короткий рассказ очень длинным, я недавно наткнулся на TTS click от MikroElectronika и почувствовал, как меня охватывает волна ностальгии. Был заказан в течение нескольких минут и очень беспокоился в течение следующих дней, пока устройство не прибыло в руки. Отсюда начинается история …

Запасы

  • 1 шт. MikroElectronika Text To Speech Click, содержит Epson S1V30120 - TTS ASIC модуля
  • 1 шт. ARMbasic Target, выполняющий роль хоста TTS
  • 1 шт. Uno Breakout Shield (или макетная плата, или…)
  • 1 динамик или набор динамиков, рекомендуется настольные активные динамики для ПК с разъемом TRS 1/8 дюйма на них
  • 1 лот прототипирования изделий: проволока, припой, флюс, фитиль, паяльник, разъемы, гнезда для микросхем и т.п.
  • 1 лот Embedded Dev Tools DMM, Logic Probe, Logic Analyzer, Scope и т. Д. - для новых микроконтроллеров хоста TTS

Шаг 1. Аппаратные соединения

Аппаратные межблочные соединения
Аппаратные межблочные соединения
Аппаратные межблочные соединения
Аппаратные межблочные соединения
Аппаратные межблочные соединения
Аппаратные межблочные соединения

Чтобы воспроизвести это, используя цель ARMbasic в форм-факторе Uno или с помощью Itaca uChip, лучше всего будет использовать щит для прототипирования, как я сделал на приведенных выше изображениях (простая ссылка на Amazon).

Некоторые увидят скрученный вместе провод и зададутся вопросом, почему - подавление синфазных помех - простой ответ. Да, здесь мы не имеем дело со сбалансированными сигналами, но я решил, что это не повредит (?), Поэтому я сделал это, когда делал наращивание платы.

Довольно приятный дизайн. Отпечатки прилагаются к настоящему документу в виде графики (AutoCAD 2D - это то, к чему я привык больше всего, работая с ним в течение десятилетий на своей повседневной работе - я все еще режу зубы KiCAD, и это было слишком простым усилием, чтобы обосновать кривую обучения как первый проект в KiCAD). В любом случае, я решил установить сокет uChip непосредственно на экран, чтобы обеспечить автономный вариант использования при использовании uChip в качестве хоста. Я добавил JST для питания от батареи, если я захочу это сделать, и, поскольку у меня есть несколько дополнительных функций, я добавил Adafruit SWD Breakout, чтобы я мог использовать мой Segger J-Link EDU Debug Probe, если возникнет такая необходимость. Этого не произошло, но я сохраняю SWD i'face для использования в будущих проектах.

Кастеллированный означает, в этом контексте, подпилить края печатной платы так, чтобы металлические сквозные отверстия были уменьшены до полуцилиндров, что позволяет пайку на несущей печатной плате - в данном случае на плате отрыва экрана. Я решил сделать это, поскольку плоские разветвительные части экрана не совсем совпадали с расстоянием между двумя рядами заголовков на SWD BOB. Вылез плоский напильник и 5 минут подшивки и проблема решена.

Шаг 2: Программирование и тестирование

Программирование и тестирование
Программирование и тестирование
Программирование и тестирование
Программирование и тестирование
Программирование и тестирование
Программирование и тестирование

После того, как оборудование будет установлено, потребуется полный вызов, чтобы убедиться, что проводка исправна. Затем я всегда проверяю мощность и заземление. Это не только гарантирует, что питание и заземление находятся там, где они должны быть, но и что любые другие выводы, на которых не должно быть питания / заземления, отсутствуют. Это не утомительная задача для такого небольшого проекта, как этот, но для более крупных систем-систем она, хотя и является утомительным шагом, абсолютно необходима, чтобы гарантировать, что никакие подсборки или связанные системы не будут вынуты из-за глупой ошибки, которая может произойти. могли и должны были быть пойманы. Я обычно подключаю минимум товаров, чтобы на плате генерировалось питание, а затем проверяю каждый вывод / вывод на наличие питания и заземления перед подключением сборочных узлов, микросхем и т. Д., Чтобы убедиться, что мощность находится на должном уровне. (с учетом требований к устройствам, не устойчивым к 5 В / IO, 1v8 и 3v3 и т. д.), и это заземление находится там, где оно должно быть, и только там, где оно должно быть. Я был свидетелем каскада отказов в самолетах из-за того, что люди не проводили надлежащих проверок перед подключением. В одном случае потребовалось более 100 тысяч долларов LRU - не самое приятное время, чтобы руководить проектом и мгновенно откладывать его в сторону из-за того, что кто-то замкнул процесс. Еще одна вещь, в которой я виноват, - это выполнение утомительных «проверок окружения» - проверка того, что контакты / завершения не замкнуты на соседние контакты / завершения. Это становится критичным, если вы имеете дело с коаксиальными сборками, многожильными / экранированными жгутами и т.д.

Как только безопасность будет обеспечена, подключите устройства, включите его и затем приступайте к программированию хоста TTS (ARMbasic Target MCU), как это было бы со многими встроенными целевыми MCU. Я записал видео, в котором показано программирование и простое использование TTS Click. Вы можете просмотреть это здесь.

Исходный код ARMbasic можно скачать отсюда - сообщение на форуме с дополнительной информацией. Coridium опубликовал в блоге сообщение об этих усилиях, на которое вы можете перейти, нажав здесь.

Шаг 3. Изменение источника для других целей ARMbasic и различных размышлений

Изменение источника для других целей ARMbasic и различных размышлений
Изменение источника для других целей ARMbasic и различных размышлений
Изменение источника для других целей ARMbasic и различных размышлений
Изменение источника для других целей ARMbasic и различных размышлений
Изменение источника для других целей ARMbasic и различных размышлений
Изменение источника для других целей ARMbasic и различных размышлений
Изменение источника для других целей ARMbasic и различных размышлений
Изменение источника для других целей ARMbasic и различных размышлений

Я не буду утруждать вас шагами, необходимыми для изменения исходного кода для работы с другими целями ARMbasic, кроме как указать, что я гудел об этом в большом количестве комментариев к исходному коду. Найдите время, чтобы взломать файл tts.bas и прочитать, какие изменения необходимы, если вы решите перенести код на другой контроллер на базе ARMbasic.

К настоящему письму прилагаются некоторые изображения, которые я сделал во время цикла разработки, чтобы заставить это работать.

Уроки выучены:

  1. Если у вас есть логический анализатор с неиспользуемыми входами и дополнительные целевые входы-выходы, не используемые для текущей работы, не бойтесь использовать эти входы-выходы в качестве инструментов отладки - разбрызгивание операций ввода-вывода в различных точках кода может быть огромная помощь в отслеживании того, что работает, а что не работает, как ожидалось, для выявления глупых проблем с синхронизацией (то есть прерываний, влияющих на последовательную связь с побитовым вызовом) и для лучшего понимания ваших усилий в целом.
  2. Не все контроллеры ARM одинаковы. Это очевидно. Тем не менее, я получил немного, сделав начальную разработку на LPC1765 Coridium SuperPRO. Оглядываясь назад, то, что сделало это плохим выбором, так это то, что реализация этого ядра ARM позволяла доступ к памяти без выравнивания слов. При переносе кода C на ARMbasic все шло довольно гладко, пока я не попытался использовать его с целью SAMD21 - все вырвалось наружу, и все пошло невообразимо из-за невыровненного доступа при заполнении буферов, манипулировании флагами, работе с версией ARMbasic структур / союзов, которые я придумал, и т. д. Это был болезненный урок. Вывод из этого: если кто-то хочет иметь переносимый код, разработайте его для наиболее ограниченного кандидата, просто чтобы убедиться, что он не столкнется с драматизмом в конце проекта, когда он, вероятно, наиболее рад использовать плоды свои усилия..:)
  3. Перенос кода C на ARMbasic НЕ невозможен. Эти усилия были в значительной степени одним из гигантских этапов эволюции обучения портированию. Если вы потратите время на сравнение исходных исходных кодов C с кодом ARMbasic, который я создал, у вас должно получиться несколько идей о том, как реализовать вещи, которые могут не быть частью основного дизайна ARMbasic (например, Структуры).
  4. Беритесь за подобные вещи небольшими порциями. По умолчанию я тот, кто любит регулярно получать удовольствие. Такие усилия, как эти усилия по портированию и разработке, вряд ли можно будет выполнить за одну ночь. Ставьте перед собой реалистичные цели и работайте над их достижением, стараясь не отвлекаться на «общую картину».
  5. Логический анализатор сыграл решающую роль в этих усилиях. Да, у меня есть устройство DS-Logic + нижнего и среднего уровня, но я могу категорически заявить, что дешевого LA с полосой пропускания 24 МГц за 12,50 долларов США от Amazonia было бы более чем достаточно. Соедините это с PulseView от Sigrok (бесплатно) (выполняет декодирование протокола), и у вас будет очень надежная система, которая должна работать в огромном множестве сценариев, таких как то, что я пытался предпринять с этим проектом. Убедитесь, что вы получили устройство с тестовыми зажимами, или заказывайте тестовые зажимы отдельно, так как они очень полезны (как Трампфельдиан).
  6. Простой логический пробник - тоже очень полезный инструмент. На обзорной картинке рабочего пространства вы заметите древний логический зонд Archer (Radio Shack) в правом нижнем углу изображения. Я был искренне удивлен, обнаружив, насколько это полезно в повседневной жизни, даже при наличии хорошо оборудованной лаборатории.

Возможно, я уже связывался с ними ранее, но я не могу вспомнить, и мне лень смотреть. Вот сообщение в блоге, в котором есть видео о модуле TTS в действии (в то время он был размещен на Itaca uChip) и сообщение на форуме ARMbasic, где можно загрузить портированный исходный код ARMbasic.

Будьте осторожны и получайте удовольствие от взлома!

-МГц

Рекомендуемые: