- PVSM.RU - https://www.pvsm.ru -

Хотел красивую железку. Получилось

Часть 1 [1] >> Часть 2 [2] >> Вы находитесь здесь [3]

Однажды любимая жена у друзей на даче нашла радужную пружинку слинки [4]. Вспомнила детство, подошла к лестнице и запустила. Чудо, но пружинка с первого раза идеально пропружинила по каждой ступеньке.
— Получилось! — с радостным удивлением воскликнули все, кто был рядом.
Трёхлетней дочке тоже захотелось попробовать. Она взяла пружинку, забралась на лестницу и запустила её. Пружинка пролетела над лестницей и шмякнулась боком на траву.
— Получилось! — радостно закричала дочка.

В общем, прошёл год с начала моего фанового проекта. Получилось! Та самая красивая железка выглядит вот так:
Моя прелесссть

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

Для хорошей каши из топора нужна крупа.

WiFi Slot

Хотел красивую железку. Получилось - 2

Все знают про ESP8266. У этой борды несколько отличий.

  1. К ней подключаются Troyka-модули. И их разных очень много.
  2. Таких модулей туда можно поставить 4.
  3. У неё 8 каналов АЦП, с измерением диапазона от 0 до 3.3 В. А для голой ESP8266 это очень не характерно.
  4. Здесь есть две шины питания: силовая 5В, цифроаналоговая 3,3 В.
  5. Одно в другое превращается через DC/DC. Меня лично задолбали эти кипятильники-регуляторы. Привет высокий КПД.
  6. А это значит, что можно драйвить моторы прям с неё. И как-нибудь я покажу как.
  7. Она поддерживает Slot Connector. А это круто.

Короче, я могу воткнуть в неё 4 потенциометра, и это будет выглядеть круто. Ради этого всё и затевалось.

i2cio

А вот и мой любимый STM32F030F4P6.

Хотел красивую железку. Получилось - 3
Хотел красивую железку. Получилось - 4

Это платы с одной и той же прошивкой i2cio. Это расширитель портов ввода/вывода.
9 управляющих пинов этой штуки умеют:

  1. 12-битный АЦП
  2. 16-битный ШИМ, с очень круто регулируемой частотой. Хоть сервы туда вешай (DC/DC помогает и тут), хоть моторы постоянного тока крути, хоть звук играй.
    Так же эти 9 плюс ещё один могут цифровой ввод/вывод.

Дополнительно Slot Expander поддерживает Troyka-разъёмы и разделение питания на силовую и аналоговую части.

Аааа… Забыл. Таких штук можно к железке подключить что-то около 100 штук максимум. И они все рассортируются по I2C-адресам автоматом, предоставляя плоскую адресацию пинов. То есть вы сможете написать

i2cio.digitalWrite(852, HIGH);
int tooHighForAnalogPinNumber_areYouReallyShureQuestion = i2cio.analogRead(942);

И при этом всё получится.
Ну и он стоит 33 рубля. И можно сделать датчик линии с самым большим в мире датчиков серого. С 12 битным АЦП и 16-битной регулировкой чувствительности. Не меняя прошивку.

Заголовок спойлера

Что я обязательно и покажу в следующих сериях.

Едем дальше.

Экшн

Друг попросил меня сделать ему пульт для Traktor — любимой программы дискжокеев. Я подумал, что если у меня не получится сделать это быстро и красиво, то ерунда у меня получилась, а не красивая железка.

Скручиваем всё вместе

Хотел красивую железку. Получилось - 5

Примечание: здесь и далее подразумевается, что текста сверху никогда не было

Для этого мне понадобится материнская платка с мозгами esp8266 (слева). Её отличие от остальных только в том, что она квадратная, имеет 8 входов АЦП и питается от 5 В через DC/DC преобразователь. А ещё к ней можно подключить такую же квадратную плату расширения на моём любимом stm32f030f4p6 (справа) через красивую железку (центр).

Добавим кучу потенциометров

Ещё одна особенность этих железок — в них очень просто вставить стандартные модули. Модулей у меня этих много разных. Я взял кучу потенциометров. Потому что все любят кучу потенциометров(с).

Хотел красивую железку. Получилось - 6

Больше потенциометров богу потенциометров!

Хотел красивую железку. Получилось - 7

Соль

Самый долгий пункт сборки. Если захочется сделать всё в точности как я, понадобится сделать следующее:

  1. Купить в Леруа деревянный уголок со стороной 2 см
  2. Взять пилу, и попытаться отпилить его под 45 градусов
  3. Понять, что это не так то просто. Начать бегать повсюду и искать стусло.
  4. Скрутить стусло из советского металлического конструктора.
  5. Упилить почти весь уголок в брак, потому что не дано тебе, Василий, делать что-то красивое руками.
  6. Купить, наконец, стусло.
  7. GOTO 5. Потому что не дано тебе, Василий. Нечего и пытаться.

Вот что получилось:

Хотел красивую железку. Получилось - 8

Ерунда, переделать

Друг говорит: «Это что это, пульт для трактора, да? Не похоже что-то».

Хороша работа. Начинай сначала.

Берём ещё 4 платы расширения, прикручиваем. Берём кучу модульков, и тыкаем куда попало.

Получилось вот это:
Хотел красивую железку. Получилось - 9

Аккуратно сверлим отверстие для Micro-USB коннектора, чтобы запрограммировать материнскую плату и, в последствии, заряжать батарейку.

Хотел красивую железку. Получилось - 10

Ох, не дано тебе, Василий, не дано...

Демонстрация работы

В итоге получился беспроводной пульт для трактора. Он управляет трактором по WiFi через Open Sound Control.

Исходный код

Исходный код на gitHub [5]. Залил целиком рабочую папку, чтобы не искать библиотеки по всему интернету.

А как вообще это работает?

Красивая железка — это просто коннектор, который при помощи четырёх болтов умеет передавать два сигнала и питание. Два сигнала — это I2C. Материнская плата умеет разбрасывать все платы расширения по последовательно идущим I2C-адресам и, впоследствии, что-то с ними делать. Например, считывать 12-битный аналоговый сигнал с (почти) каждой ножки расширителя. Или управлять 16-битным ШИМ на каждой ножке расширителя. Ну или просто использовать эти ножки как цифровой вход/выход. Можно использовать эти расширители, если вам просто не хватило ног на вашем любимом микроконтроллере.
Прошивка stm32f030f4p6, установленного на плате расширения лежит здесь [6].
Библиотека для работы с расширителями портов в Arduino IDE лежит здесь [7].
Если уважаемым хабравчанам будет интересно, я обязательно расскажу об этом подробнее. Но не сегодня.

Автор: acos

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/diy/293220

Ссылки в тексте:

[1] Часть 1: https://habr.com/post/407581/

[2] Часть 2: https://habr.com/post/408899/

[3] Вы находитесь здесь: https://habr.com/post/423775/

[4] слинки: https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D0%B8%D0%BD%D0%BA%D0%B8

[5] gitHub: https://github.com/acosinwork/WiFiSlot_OSC/tree/master/traktor_osc

[6] здесь: https://github.com/acosinwork/i2cio-firmware

[7] здесь: https://github.com/acosinwork/I2cio

[8] Источник: https://habr.com/post/423775/?utm_source=habrahabr&utm_medium=rss&utm_campaign=423775