В детстве я много времени проводил за игровой приставкой Sega Mega Drive, также известной, как Sega Genesis. Одна из интересных особенностей этой приставки заключается в том, что джойстики подключаются к ней через обычный DE9-порт. Теоретически, сигнал от джойстика должно быть достаточно просто декодировать. Джойстик от ретро-приставки видится мне интересным примитивом для использования в будущих DIY проектах, в связи с чем я решил попробовать сынтегрировать его с Arduino.

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

Вы можете помнить, как когда-то я рассказывал про установку и настройку OpenVPN за 5 минут. А знаете ли вы, что абсолютно любой SSH-сервер можно использовать в качестве совершенно полноценного VPN вообще без какой-либо настройки? Такую добрую магию нам дает замечательная утилита под названием sshuttle, о которой и пойдет речь далее. Вдруг кто-то про нее еще не знает.

Из этой заметки вы узнаете, как можно подобрать пароль к Wi-Fi сети. Вообще-то говоря, меня лично куда сильнее интересует, как защититься от взлома, а не то, как можно что-то кому-то сломать. Но для построения нормальной защиты нужно понимать, как произвести атаку. Поэтому, об атаке далее и пойдет речь. Совершить же ее нам поможет набор утилит под названием aircrack-ng. Протокол WEP сейчас практически никем не используется, не считая каких-нибудь кафе, где сеть все равно не защищена никаким паролем, поэтому далее речь пойдет исключительно о протоколах WPA и WPA2.

Захотелось вот поупражняться в программировании на SystemVerilog. Какую-то шибко интересную задачу выдумывать не стал — решил просто сделать часы на FPGA. Понятно, что электронные часы являются не слишком интересным устройством. Тем более, что их намного проще сделать на базе микроконтроллера. Однако реализация часов на SystemVerilog позволяет столкнуться с множеством тонкостей данного языка. Понимание этих тонкостей является необходимым для создания более сложных проектов.

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

Розетка с таймером (которая также может быть вам известна под именем «реле времени») — это устройство, функционал и назначение которого должно быть очевидно из названия. Вы подключаете какую-нибудь лампу в розетку через это устройство, в результате чего получаете возможность запрограммировать лампу. Например, лампа может автоматически включаться каждый день в 9 утра и выключаться в 10 вечера. Типичный пример, зачем это может быть нужно — симуляция присутствия людей в доме с целью дополнительной защиты от воров. Розетку с таймером в наше время легко купить готовую за небольшие деньги. Однако в этой заметке я расскажу, как я делал такое устройство своими руками.

Некоторое время назад мы научились сериализовывать классы в языке C++ в формат JSON при помощи библиотеки RapidJSON. Формат JSON хорош тем, что он текстовый, а значит может быть прочитан человеком, что удобно при той же отладке. Плох же JSON тем, что никак не проверяет соответствие данных какой-либо схеме. Кроме того, этот формат крайне неэффективен, как минимум, потому что сериализованные объекты хранят имена всех ключей. Наконец, при работе с RapidJSON нам пришлось руками писать методы toJSON и fromJSON. Всех этих недостатков лишен формат Protobuf, с которым мы сегодня и познакомимся.

Про LCD-модули на базе HD44780 (здесь и далее под HD44780 понимается как оригинальный чип, так и совместимые с ним аналоги) я писал уже дважды — в заметке Научился выводить текст на ЖК-индикатор из Arduino, а также Об использовании экранчиков 1602 с I2C-адаптером. В обоих статьях использовался принцип «подключаем экранчик так-то, берем готовую библиотеку, и магия, все работает». Магию, как вы можете помнить, я осуждаю. Поэтому сегодня мы наконец-то разберемся, как устроен протокол подобных дисплеев, и напишем нашу собственную, очень простенькую, библиотеку для работы с ними.

Операционный усилитель — это интегральная схема, предназначенная для усиления слабого сигнала. Операционные усилители часто используются в различных аудио-устройствах. Например, если вы решите спаять усилитель для высокоомных наушников, вам наверняка понадобится операционный усилитель. Звучит, как что-то полезное. Так давайте же разберемся, как работать с этим хозяйством, на примере конкретного чипа NE5532.