После знакомства с клавиатурой от смартфона BlackBerry Q10 мне захотелось кое-что выяснить. Что будет, если взять от этой клавиатуры только пластиковые клавиши, а саму плату с кнопками развести самостоятельно? В этом случае не пришлось бы возиться с крохотными коннекторами, через которые подключается оригинальная клавиатура. Также мы были бы уверены в качестве модуля. А то эти клавиатуры выдирают из старых телефонов, и кто знает, в каком они там состоянии (залипающие кнопки и т.п.).
Как-то раз я прочитал на hackaday.com небольшую заметку об IceRadio. Это проект господина Eric Brombaugh, представляющий собой SDR на базе микроконтроллера STM32, FPGA производства Lattice серии Ultra или Ultra Plus, АЦП AD9203 или более дорогого ADC14C105, ЦАП CS4344 с интерфейсом I2S, а также тюнера R820T2, используемого в донглах RTL-SDR. Помимо прочего, проект интересен своей модульностью. Он состоит из четырех независимых плат, каждую из которых можно использовать повторно в других проектах. Особенно меня заинтересовал модуль на базе тюнера R820T2, о котором и пойдет речь в этом посте.
Однажды, во время утреннего полистывания Twitter, мое внимание привлек проект господина @arturo182 (a.k.a Artur Pacholec). Проект представляет собой DIY смартфон на базе экранчика ILI9341 и qwerty-клавиатуры с подсветкой от BlackBerry Q10. Особенно меня впечатлила идея использования клавиатуры от смартфона. Было решено незамедлительно обзавестись такой клавиатурой и научиться с ней работать.
АЦП и ЦАП могут быть полезны в ряде задач, например, если нужно считывать данные с аналоговых датчиков, или при работе со звуком. Многие МК семейства STM32 имеют встроенный АЦП (даже несколько), а некоторые МК также имеют и встроенный ЦАП. В этой заметке мы рассмотрим простой пример использования обоих устройств. Для экспериментов я использовал плату LimeSTM32 на базе STM32F405, имеющего как АЦП, так и ЦАП.
Большое преимущество программатора ST-Link/v2-1 перед ST-Link/v2 заключается в том, что помимо самого программатора в v2-1 также есть встроенный USB-UART. На практике это очень удобно — меньше проводов, меньше занятых USB-портов. Как заливка прошивки, так и передача отладочного вывода происходят через одно устройство вместо двух. Есть только одна маленькая проблема. Если ST-Link/v2 можно без проблем купить на eBay, то ST-Link/v2-1 бывает только встроенным в отладочные платы семейств Discovery и Nucleo. Однако, как выяснилось, плату Nucleo довольно легко разделить на два отдельных устройства — программатор ST-Link/v2-1 и отладочную плату.
OLED-экранчики на базе SSD1306 / SSD1309 / SH1106 пользуются большой популярностью как в DIY сообществе, так и индустрии, благодаря своей яркости, широкому углу обзора и небольшой цене. Но при этом они способны выводить только бинарное изображение. В качестве альтернативы, лишенной этого досадного недостатка, можно предложить экранчики на базе контроллера SSD1351. По большому счету, они полостью аналогичны экранчикам на базе SSD1306, но выводят изображение в 16-и битном цвете.
Прошло больше года с тех пор, как я познакомился с микроконтроллерами STM32. За это время были перепробованы разные отладочные платы, из которых наиболее удобными для меня оказались платы серии Nucleo. Но даже они не лишены некоторых неприятных дефектов. Как известно, удобство в мелочах. Поэтому в какой-то момент было решено сделать отладочную плату, которая была бы удобна лично мне.
Как известно, печатать на 3D-принтере с использованием пластика ABS достаточно сложно. Если в случае пластика PLA можно просто нажать кнопку и пойти по своим делаем, то ABS постоянно норовит отклеиться от стола или свернуться. Первую проблему еще достаточно легко решить. Далее будет описано несколько способов. А вот со сворачиванием (warping) дела обстоят куда сложнее. Утверждается, что чтобы решить эту проблему, необходимо построить термокамеру (Heated Build Chamber, HBC). Насколько сложно построить HBC и действительно ли она решает все проблемы? Давайте выясним!
I2S (Inter-IC Sound) — это цифровой протокол передачи звука, который довольно часто используется в современной электронике. I2S не имеет ничего общего с I2C кроме похожего названия, поэтому важно эти протоколы не путать. В рамках поста мы постараемся разобраться, на что вообще похож I2S, и как с ним работать.
Вы могли обратить внимание, что до сих пор при изучении микроконтроллеров STM32 мы как-то обходились исключительно синхронным кодом. Это может неплохо работать для игрушечных примеров, но при попытке написать что-то действительно полезное без прерываний и таймеров далеко не уедешь. Так что, пришла пора научиться с ними работать. Должен предупредить, что статья вышла довольно длинной, поскольку тема непростая.