Китайский 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 выполнять придуманные нами команды, можно загрузить ОТСЮДА.