Китайский SDR + Arduino. Часть 2 — как приготовить Arduino.

Небольшое лирическое отступление — «Почему Arduino?»

Платы Arduino построены на микроконтроллерах Atmega и имеют несколько вариантов, как от совсем миниатюрных (Arduino Pro Mini), до высокопроизводительных с большим количеством выводов (Arduino Due).

Спорить о достоинствах и недостатках смысла нет, как и пытаться сравнивать с PIC или STM микроконтроллерами. У каждого свои недостатки.

Для меня Arduino кажется более удобным (по сравнению с имеющимися в доступности другими микроконтроллерами) по следующим причинам:
— большой выбор вариантов исполнения плат Arduino, можно подобрать свой вариант под большинство задач;
— можно взять миниатюрную плату с уже готовой обвязкой микроконтроллера и просто разместить его на своей плате или сделать «шилд» (плата расширения) для Arduino;
— отсутствует такое понятие как «прошивка», которая для других микроконтроллеров представляет собой «черный ящик», в котором что-то изменить, без участия автора, не представляется возможным. Для Arduino есть «скетч», исходный текст программы микроконтроллера, который всегда можно «допилить» под свои нужды. За универсальность платим некоторым снижением производительности, но в наших задачах это не критично.
— «дуракоустойчивость» — даже начинающему чрезвычайно сложно превратить Arduino в «кирпич», штатными средствами, в отличии от других микроконтроллеров.
— бесплатная базовая система разработки программного обеспечения, которую даже не обязательно устанавливать, достаточно распаковать архив;
— есть несколько средств разработки программ под Arduino;
— переносимость написанных «скетчей» под другие микроконтроллеры;
— огромный выбор библиотек, они есть практически для любых периферийных устройств и датчиков;
— большое сообщество пользователей, соответственно часто можно найти уже готовое решение той или иной задачи;

Свое мнение про Arduino я уже высказал.

Переходим к продолжению темы SDR+Arduino.

Назначение входов/выходов мы обсудили в предыдущей статье. Попробуем теперь придумать протокол обмена между компьютером и нашим микроконтроллером.

В целях «универсальности», наш протокол должен быть чисто текстовым, чтобы его можно было использовать из любого языка программирования,
а возможно и из командной строки или пакетных файлов (как Windows, так и Linux).

Для того, чтобы наш микроконтроллер понял, где оканчивается команда и ее уже нужно выполнять, мы договоримся использовать символ «@».
Ну а весь текст, который идет до этого символа и будет собственно командой.

Примечание: Предлагаемый ниже набор команд является субъективным и определен только ленью автора придумывать что-то более сложное.

Все команды будут цифровыми.

Команды переключения диапазонных фильтров:- от 11 до 16 — соответственно включают ДПФ  на 1.8, 3.5, 7, 14, 21, 28 МГц

Команда включения/выключения предварительного усилителя (МШУ)  — 21/22

Команда на включение/выключение аттенюатора  — 31/32

Команда на вращение оси конденсатора переменной емкости (далее КПЕ) входного контура (в случае решения от US5MQ) — от 100 до 199 — устанавливают % поворота ротора конденсатора (100 — минимальная емкость, 199 — максимальная емкость)

Команда на вращение потенциометра плавной регулировки входного уровня сигнала — от 200 до 299 — устанавливают % поворота ротора конденсатора/потенциометра (200 — минимум, 299 — максимум)

Ну а собственно «скетч», который позволит нашей Arduino выполнять придуманные нами команды, можно загрузить ОТСЮДА.