Ранее мы выяснили, как разрабатывать под микроконтроллеры STM32 с использованием знакомой и понятной многим Arduino IDE. Этот подход, впрочем, не лишен недостатков. В частности, он (1) вводит лишние слои абстракции, что не позволяет писать максимально эффективный и компактный код, (2) работает с весьма ограниченным множеством микроконтроллеров и плат, а также (3) привязан к конкретной среде разработки, и не самой лучшей. Поэтому сегодня мы научимся разрабатывать под STM32 по-взрослому.
В детстве я много времени проводил за игровой приставкой Sega Mega Drive, также известной, как Sega Genesis. Одна из интересных особенностей этой приставки заключается в том, что джойстики подключаются к ней через обычный DE9-порт. Теоретически, сигнал от джойстика должно быть достаточно просто декодировать. Джойстик от ретро-приставки видится мне интересным примитивом для использования в будущих DIY проектах, в связи с чем я решил попробовать подружить его с Arduino.
Захотелось вот поупражняться в программировании на SystemVerilog. Какую-то шибко интересную задачу выдумывать не стал — решил просто сделать часы на FPGA. Понятно, что электронные часы являются не слишком интересным устройством. Тем более, что их намного проще сделать на базе микроконтроллера. Однако реализация часов на SystemVerilog позволяет столкнуться с множеством тонкостей данного языка. Понимание этих тонкостей является необходимым для создания более сложных проектов.
Традиционно платы травят хлорным железом, как это ранее было описано в статье про лазерно-утюжную технологию. Однако хлорное железо имеет ряд недостатков. В частности, оно оставляет несмываемые пятна на одежде и мебели. Плюс к этому хлорное железо продается только в специализированных магазинах и стоит сравнительно дорого. Поэтому сегодня мы рассмотрим альтернативный и лишенный названных недостатков подход, заключающийся в использовании перекиси водорода, лимонной кислоты и поваренной соли.
Розетка с таймером (ее же иногда называют «реле времени») — это устройство, функционал и назначение которого должно быть очевидно из названия. Вы подключаете какую-нибудь лампу в розетку через это устройство, в результате чего получаете возможность запрограммировать лампу. Например, лампа может автоматически включаться каждый день в 9 утра и выключаться в 10 вечера. Зачем это может быть нужно — уход за растениями, создание эффекта присутствия людей в доме с целью отпугивания воров, и так далее. Розетку с таймером в наше время легко купить готовую за небольшие деньги. Однако в этой заметке я расскажу, как сделать такое устройство своими руками.
Про LCD-модули на базе HD44780 (здесь и далее под HD44780 понимается как оригинальный чип, так и совместимые с ним аналоги) я писал уже дважды — в заметке Научился выводить текст на ЖК-индикатор из Arduino, а также Об использовании экранчиков 1602 с I2C-адаптером. В обоих статьях использовался принцип «подключаем экранчик так-то, берем готовую библиотеку, и магия, все работает». Магию, как вы можете помнить, я осуждаю. Поэтому сегодня мы наконец-то разберемся, как устроен протокол подобных дисплеев, и напишем нашу собственную, очень простенькую, библиотеку для работы с ними.
Операционный усилитель — это интегральная схема, предназначенная для усиления сигналов низкой частоты. Операционные усилители часто используются в различных аудио-устройствах. Давайте же разберемся, как работать с этим хозяйством, на примере конкретного чипа NE5532.
Ранее мы с вами познакомились с такими интегральными схемами, как таймер 555, счетчик 4026, логические вентили, а также сдвиговые регистры и декодеры. Теперь же пришло время узнать о компараторах. Несмотря на кажущуюся простоту, компараторы — куда более интересные устройства, чем может показаться на первый взгляд.
Так исторически сложилось, что в качестве ПО для построения принципиальных схем и проектирования печатных плат долгое время я использовал EAGLE. Эта программа мне очень нравится низким порогом вхождения, наличием freeware версии, и, конечно же, поддержкой Linux. Столкнувшись в какой-то момент с ограничениями бесплатной версии (принципиальные схемы ограничены двумя листами, можно делать платы размером примерно до 10x10 см, число слоев в плате ограничено двумя) я решил купить EAGLE. И тогда я узнал, что компания-разработчик не продает его гражданам России. Вообще. Почему — не знаю. Тогда я впервые серьезно задумался о переходе на бесплатный и открытый KiCad.
В одном из предыдущих постов, а именно — посте Учимся программировать под FPGA на SystemVerilog, мы познакомились с основами разработки под FPGA, а также платой Arty Artix-7 и средой разработки Vivado от компании Xilinx. Помимо прочего, было сказано, что все ПО в мире FPGA является закрытым и совместимым только с железом конкретного производителя (то есть, полный вендор лок). Так вот, оказывается, что это не совсем правда. Открытое ПО для разработки под FPGA все-таки существует, и сегодня мы научимся с ним работать.