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


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


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


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


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


WiFi Slot



Все знают про 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.




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


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

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


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


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

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


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

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


Едем дальше.


Экшн


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


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



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


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


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


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



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



Соль


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


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

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



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


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


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


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


Получилось вот это:


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



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


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


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



Исходный код


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


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


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


Прошивка stm32f030f4p6, установленного на плате расширения лежит здесь.


Библиотека для работы с расширителями портов в Arduino IDE лежит здесь.


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