Как вам уже известно из статьи Проходим квест на получение позывного и регистрацию РЭС, в качестве своего первого трансивера я выбрал Yaesu FT-891. Сегодня мне хотелось бы вкратце рассказать о данном устройстве, а также поделиться впечатлениями от его использования.

Если вы давно читаете этот блог, то можете помнить некоторые старые посты, посвященные мониторингу. В частности, была рассмотрена связка из Graphite, StatsD и CollectD, а также, несколько поверхностно, сервис Datadog. Однако мир не стоит на месте. Приходят новые технологии, некоторые из которых даже оказываются лучше своих предшественников. В качестве таких новых технологий можно привести в пример связку из Prometheus и Grafana.

Как мы выяснили в рамках заметки Слушаем коротковолновиков при помощи RTL-SDR, любительское радио живет и процветает. В связи с этим я решил попробовать себя в качестве полноценного оператора, а не только слушателя. Далее будут описаны шаги, необходимые для выхода в эфир.

На первый взгляд, модульные тесты в Go пишутся очень просто. Создаем файл с именем пакет_test.go, в нем объявляем функции с именами TestЧтоТестируем, говорим go test, ну и считай готово. Однако на деле все оказывается чуточку сложнее. Например, оказывается, что из коробки в языке нет ни ассертов, ни моков. А когда ты начинаешь генерировать моки, они внезапно начинают участвовать в подсчете покрытия кода тестами. В общем, давайте разберемся, как все устроено на самом деле.

Переменные конденсаторы, они же конденсаторы переменное емкости или КПЕ, используется во множестве устройств. Они нужны в генераторах, фильтрах, антенных тюнерах, некоторых видах антенн, и много где еще. Обратим внимание на тот факт, что в любительской радиосвязи, к примеру, трансивер может с легкостью выдавать 25 Вт или 100 Вт, максимально же разрешенная мощность составляет 1000 Вт. Понятно, что общедоступные маленькие КПЕ тут совершенно не годятся, а нужных для таких мощностей КПЕ в магазине вы попросту не найдете.

В прошлых постах вы могли прочитать о том, как сериализовать объекты в языке C++, используя формат Protobuf, а также в языке Scala, используя Thrift. Была рассмотрена даже такая эзотерика, как формат MessagePack и работа с ним на языке Haskell. Давайте же теперь выясним, как делается сериализация в языке Go. Для этого мы воспользуемся форматом CBOR и библиотекой codec.

Допустим, у вас есть некое устройство, питаемое от внешнего аккумулятора. Для определенности скажем, от это LiIon или LiPo, часто используемые в квадракоптерах. При питании от внешнего источника всегда есть неплохие шансы сжечь устройство. Самый простой способ это сделать — перепутать полярность. Еще можно запитать устройство от блока питания и, случайно крутанув ручку, превысить допустимое напряжение. Давайте рассмотрим классическую схему, защищающую от таких ошибок при помощи компонентов общей стоимостью менее 5$.

Ранее в этом блоге многократно упоминались чипы производства компании FTDI, такие, как FT232RL и FT2232HL — смотри заметки раз, два и далее по ссылкам. В частности, было сказано, что этими чипами можно управлять с компьютера, что позволяет использовать их, например, в качестве программатора. При этом чипы FTDI поддерживают несколько режимов работы. Далее будет рассмотрен, пожалуй, самый простой режим под названием bitbang.

Хотите верьте, хотите нет, но это уже двадцатый по счету пост с рецензиями на прочитанные книги. Так получилось, что в последнее время в основном я читал про радио и обработку сигналов, но не только. Прочитать предыдущие мои рецензии можно здесь: девятнадцатый десяток, восемнадцатый десяток, семнадцатый десяток, шестнадцатый десяток, и далее по ссылкам.

Wiznet W5500 — это Ethernet-контроллер с интерфейсом SPI. Чип поддерживает стандарты 10baseT и 100baseT. Характерной особенностью контроллера является то, что он имеет аппаратную реализацию TCP/IPv4. Это позволяет существенно разгрузить работающий с ним микроконтроллер. Wiznet W5500 поддерживает до 8 сокетов и имеет суммарно 16 Кб памяти на прием и еще 16 Кб на передачу. Эта память может быть распределена между сокетами произвольным образом. Давайте же разберемся, как работать с этим чипом на примере МК STM32.