В сети можно найти массу примеров использования радиомодулей на 433 МГц совместно с Arduino. Обычно эти примеры ограничиваются чем-то вроде «а давайте подключим библиотеку VirtualWire, воспользуемся парой процедур из нее, и опа, все магическим образом работает». Само собой разумеется, меня такое положение дел не устраивает, потому что я хочу знать точно, как эти модули общаются с Arduino, и что именно они передают в эфир. Давайте же во всем разберемся!

Ранее в заметке Как я собирал свой первый квадрокоптер на базе PixHawk была описана, так сказать, базовая комплектация квадрокоптера — полетный контроллер, рама, ESC, моторы, пропеллеры, и так далее. Это минимум, необходимый для получения чего-то, что летает. Однако на таком квадрокоптере вы далеко не улетите, так как по мере удаления от вас он очень быстро превращается в небольшое черное пятнышко на небе. Да и не очень-то безопасно на нем летать. В частности, при потери связи с аппаратурой или сильном разряде аккумулятора лучшее, что может сделать квадрокоптер — это успеть автоматически приземлиться (в реку, на дерево, или кому-нибудь на голову). Давайте же выясним, как можно решить эти проблемы.

PostGIS — это географическая информационная система, или ГИС (geographic information system, GIS), реализованная в виде расширения к PostgreSQL. ГИС позволяет хранить пространственные или географические данные, такие, как точки, ломанные линии и полигоны, производить по ним эффективный поиск, а также выполнять с ними другие операции. В общем, можно написать убийцу Google Maps и Яндекс.Карт :) Давайте же попробуем разобраться, как пользоваться этой штукой.

Вашему вниманию предлагается небольшой крякми. Но не классический софтверный крякми, для которого нужно написать кейген или патч, а полностью железный. Крякми изначально был сделан для конкурса Realtime Hardware Hack, проводимого в рамках конференции Chaos Constructions 2017. Однако организаторы конкурса в лице Hardware Village в итоге решили использовать другой крякми (судя по фото, более простой). Поэтому, насколько мне известно, на момент публикации поста данный крякми еще никем не был пройден.

JSON используется очень много где. В частности, он нужен для написания REST-сервисов и REST-клиентов. Если какие-то объекты нужно сериализовывать и класть в какой-нибудь Redis, использовать в качестве сериализованного представления JSON также будет неплохой идеей. Наконец, информация в базе данных часто хранится в виде JSON просто из соображений удобства изменения схемы. Так давайте же выясним, как работать с JSON, если вы пишите на C++.

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

В последнее время наблюдается повышенный интерес к теме безопасных мессенджеров. Поскольку наиболее популярные из современных мессенджеров, претендующих на безопасность, являются закрытыми, требуют обязательного указания мобильного телефона или, например, работают в браузере, мне лично большого доверия они не внушают. Поэтому сегодня речь пойдет о полностью открытом, бесплатном, кроссплатформенном и внушающем, по крайне мере лично мне, какое-то доверие варианте, заключающемся в использовании Jabber (он же XMPP) с OTR-плагином.

В этой заметке речь пойдет о Software Defined Radio, или SDR. SDR — это когда у вас есть некое специальное устройство для работы с радио-сигналами, подключенное к компьютеру, а софт на компьютере определяет, что именно это устройство будет принимать и передавать. В сущности, SDR — это отладчик для радио. С его помощью вы можете как отлаживать собственное железо, так и искать баги / уязвимости в чужом, а также реверсить закрытые беспроводные протоколы и притворяться приемником или передатчиком, работающим по определенному протоколу.

PL/pgSQL — язык программирования, используемый для написания хранимых процедур и триггеров для PostgreSQL. Сказать по правде, впервые увидев код на PL/pgSQL, я испытал ужас. Хотя в коде и угадывались типичные конструкции процедурных языков программирования, выглядел он больно уж загадочно и вообще напоминал код на COBOL. Само собой разумеется, со временем это ощущение у меня прошло. Цель заметки — показать, что кода на PL/pgSQL не нужно бояться, и в целом язык довольно простой.

Типичная радиоаппаратура работает как-то так. Есть передатчик (собственно, сама аппа) и приемник. Приемник с передатчиком общаются по какому-то своему протоколу, часто закрытому. Приемник декодирует этот протокол и передает положение ручек на аппаратуре дальше, например, полетному контроллеру (ПК) квадрокоптера. ПК и приемник общаются по своему протоколу, который должны понимать оба. В этом месте большой популярностью пользуются PWM и PPM. Есть и другие варианты, в частности, SBUS, DSM2 и DSX, но в рамках данной статьи мы рассмотрим только PWM и PPM.