7

AS5045 и STM32

AS5045 и STM32 Stm32, Электроника, Длиннопост

И снова здравствуйте. Хотел бы продолжить тему про магнитный энкодер AS5045, начатую в моей прошлой статье(https://pikabu.ru/story/as5045_i_arduino_6724136).  Но на этот раз датчик подключается не к ардуино, а к STM32F103C8T6. Так как ардуино оказалась слишком медленной  для  одновременного считывания двух датчиков, выполнение вычислений и многого другого не относящегося к теме. Писался код в System Workbench for STM32 (SW4STM32), но образцы представленного кода должны работать в любой другой среде. Кстати, большей частью эти функции практически полностью перекопированы из библиотеки для ардуино но с оглядкой на частоту STM.

И так начнем с выставления портов ввода-вывода в нужные состояния: CS,CLK - OUTPUT;  DO - INPUT. Названия пинов отражают к какому выводу подключаться на плате датчика.

AS5045 и STM32 Stm32, Электроника, Длиннопост

Теперь тактирование. Оно максимально насколько это возможно и где это возможно:

AS5045 и STM32 Stm32, Электроника, Длиннопост

Вначале нужно объявить следующие дефайны:



#define AS5045_STATUS_OCF 0x10

#define AS5045_STATUS_COF 0x08

#define AS5045_STATUS_LIN 0x04

#define AS5045_STATUS_MAGINC 0x02

#define AS5045_STATUS_MAGDEC 0x01


Встречайте, функция инициализации датчика!


_Bool AS5045_Init()

{

uint8_t count = 0;

while (AS5045_Read(), (_status & AS5045_STATUS_OCF) == 0)

{

if (count > 30)

{

return 0 ; //ошибка инициализации

}

HAL_Delay(5);

count++;

}

return 1;

}


А вот и само считывание статуса датчика и его положения:


uint16_t AS5045_Read()

{


HAL_GPIO_WritePin(GPIOB,CS_PIN_Pin,0); 


uint16_t value = 0;

uint8_t i = 0;


status = 0;

for (i = 0; i <12; i++)

{

HAL_GPIO_WritePin(GPIOB,CLK_PIN_Pin,0);

for(uint8_t i = 0; i < 4; i++){}  //без подобных циклов датчик не

HAL_GPIO_WritePin(GPIOB,CLK_PIN_Pin,1);  //успевает передать данные и на выходе

for(uint8_t i = 0; i < 2; i++) {}  //рандомные числа

value = (value << 1) | HAL_GPIO_ReadPin(DO_PIN_GPIO_Port,DO_PIN_Pin);

}


for ( i = 0 ; i < 6 ; i++)

{

HAL_GPIO_WritePin(GPIOB,CLK_PIN_Pin,0);

for(uint8_t i = 0; i < 4; i++){}

HAL_GPIO_WritePin(GPIOB,CLK_PIN_Pin,1);

for(uint8_t i = 0; i < 2; i++){}


status = (status << 1) | HAL_GPIO_ReadPin(DO_PIN_GPIO_Port,DO_PIN_Pin);

}


HAL_GPIO_WritePin(GPIOB,CS_PIN_Pin,1);


_status = status >> 1 ;


return value ;

}


В принципе это все что я хотел показать сегодня. Тут нет программирования нулевого положения и, возможно, она не самая оптимальная по производительности, но эти функции делают все что мне нужно. Спасибо за внимание!

Найдены возможные дубликаты

0

Вы это ногодрыгом сделали, то есть ресурсы такого контроллера используете не оптимально... В этом камне есть специальный модуль (SPI) для подобных применений, будет работать почти не занимая ресурсы ядра.

раскрыть ветку 2
0

Оба SPI уже заняты, так что пришлось так

раскрыть ветку 1
0

Можно на один порт несколько устройств повесить, но я не в курсе что там за устройства и какие ограничения еще есть, так что Вам виднее.

0
Пили на Хабре статью, вроде там больше целевая аудитория. А Ардуино - не занимался, но уважаю))
раскрыть ветку 1
0

Не надо с таким на хабр, заклюют насмерть.

0

Красиво написано. Суперски нарисовано.

А нафиг оно надо и что может?

раскрыть ветку 2
+1

В начале статьи есть ссылка на первую статью по данному датчику, там описано для чего я его применяю

раскрыть ветку 1
+1

пасиба. интересно.

но лениво...)))

Похожие посты
4063

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео

Всем привет! Я давно увлекаюсь восстановлением старой техники, в основном мотоциклов и мопедов.

В 2019 году мною был куплен старый мотоцикл Днепр МТ-16 в состоянии "еду в чермет", но ещё на ходу и с документами.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

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

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

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


Электронный спидометр разместил в оригинальном корпусе спидометра СП102. Для индикации пробега удалось разместить OLED дисплей напротив "окошка" под оригинальный механический одометр. Спидометр на базе микроконтроллера STM32.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

Бортовой компьютер, оснащенный CAN, считывателем RFID метки, фотодатчиком (для функций автоматического включения света/габаритов и подстройки яркости индикаторов на панели приборов) и управляющий всей электроникой мотоцикла, а также собирающий все данные с датчиков и переключателей, получающий по CAN всю телеметрию от ЭБУ инжектора. Прибор также создан на основе микроконтроллера STM. Для индикации - большой графический OLED дисплей.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

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

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

Тем временем, помимо разработки электроники, я собирал мотоцикл и изготавливал на него обвес. Вот, например, крепление канистры с топливом на коляску:

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

Приборная панель в сборе.

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

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

Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР
Восстановление старого мотоцикла Днепр МТ-16 1988 года выпуска и разработка для него крутой электроники. Много фото + видео Мотоциклы, Днепр КМЗ, Электроника, Stm32, Самоделки, Видео, Длиннопост, Технопрон, Мотосезон, Техника СССР

Много часов пришлось провести для написания софта, и работы в этой части предстоит много.


Вот такая история одного мотоцикла и моего хобби. Всем спасибо, кто дочитал! Бонусом предлагаю посмотреть краткий обзор этого мотоцикла на моем ютуб-канале:

Показать полностью 23 1
151

STM32F103C8T6 самодельный USB микрофон

Авторское описание:
stm32f103c8t6 самодельный USB микрофон построенный на базе микрофонного модуля MAX9814. Весь звук для видео был записан на этот микрофон. Применен самый популярный микроконтроллер stm32f103c8t6, любители ардуино его называют STM32 Blue Pill.

Работа микрофона была проверена на windows7 32\64 битной версии и на linux (операционная система Raspbian rasperry pi 3b).АЦП работает на скорости 256kHz, затем частота дискретизации понижается до 32kHz путем усреднения каждых 8 выборок АЦП. Дабы избавить ВАС от проблем со сборкой проекта я предоставляю готовый hex файл для прошивки.

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

За видео благодарим автора канала "ElectroHobby"

68

ИК паяльная станция, ПИД регулятор, фазовое управление, stm32

Захотелось мне как то сделать инфракрасную паяльную станцию. Начал я смотреть разные сайты с готовыми схемами и решил сделать по-своему. Так же среди этих сайтов был и Пикабу, человек очень хорошо описал фазовое управление и алгоритм Брейзенхейма (тут ссылка на статью )Ардуино и управление мощной нагрузкой переменного тока или самогонный аппарат 2. но мне не понравилась идея использовать 2 контроллера.
Задание для себя было таким:
• Два ПИД регулятора для верхнего и нижнего нагревателей;
• Соответственно 2 датчика температуры (для каждого регулятора свой);
• Управление с энкодера и встроенной в него кнопки;
• Отображение на дисплей SSD1306 (128x64 т.к. был)
• Отсылка данных в ПК через USB-CDC;
• Фазовое регулирование (алгоритм Брейзенхейма)
• Малошумящее управление тиристорами (MOC3063)

Мозгом паяльника стал STM32f103 или в народе BluePill. Сконфигурировал его в CubeMX и понеслось.

ИК паяльная станция, ПИД регулятор, фазовое управление, stm32 Электроника, Электричество, Своими руками, Длиннопост, Паяльная станция, Stm32, Микроконтроллеры

Измерение температуры сделал на термопарах с усилением их сигнала на отдельной плате-усилителе (в моем случае я калибровал для каждого канала отдельно каждую термопару). Если будете повторять, лучше сделать на модуле max31855, но придется немного изменить код и схему (там не много просто я занял оба SPI, но место еще есть, луче использовать SPI2) .
В основном меню устанавливаем температуру, поворотом энкодера, значения сохраняются во флеш. Если вам не нужен верх, то можно установить 0 в задании температуры.

ИК паяльная станция, ПИД регулятор, фазовое управление, stm32 Электроника, Электричество, Своими руками, Длиннопост, Паяльная станция, Stm32, Микроконтроллеры

Так же есть подменю с настройками ПИД регуляторов, тут перемещение нажатием кнопки на энкодере а поворот устанавливает значение.

ИК паяльная станция, ПИД регулятор, фазовое управление, stm32 Электроника, Электричество, Своими руками, Длиннопост, Паяльная станция, Stm32, Микроконтроллеры

ПИД регулятор получился не такой как все =). Его интегральная часть это единица времени, а не просто безразмерный коэффициент как в других цифровых регуляторах. Все цифровые регуляторы дискретны (мои срабатывают каждые 500мс(можно сделать быстрее если нужно)), за это время интегральная часть закидывает в буфер текущее значение ошибки регулирования. Дальше берется сумма этого буфера и вот мы получаем интеграл. Вот тут то и отличие, те регуляторы, что я видел, берут сумму всего буфера и умножают на безразмерный коэффициент. У моего регулятора интегратор это и есть число выборок, которое нужно взять. Допустим, время интегрирования установлено 10 т.к. частота дискретизации регулятора 0,5 с 10*0,5=5 секунд. Следовательно, регулятор будет использовать интеграл изменения ошибки за последние 5 секунд. Максимум 256 выборок. Хотел сделать, что то похожее с дифференциальным звеном, но чет забил. Там можно было бы уменьшать время для следующего отчета ошибки для диф. звена, но тогда придется слишком часто дергать АЦП, а нам еще данные по ЮСБ отправлять и на экран.
Чтобы получать данные по USB нужно установить драйвер от STM usb-cdc. Потом у Вас появится ком порт, куда каждые 500мс будут отправляться данные. Можно не использовать эту функцию, ну а если решите написать ГУИ, то в коде вся строка отправления лежит за sprintf. Так же можно отправлять команды на управление. Например, чтобы установить температуру верха нужно закинуть строковые “Ch5”+ 2 байта значение температуры (0x01ff-511 градусов).
Использован широко известный экран i2c на контроллере ssd1306 (128x64), я использую свою библиотеку к нему (урезанный adafruit).
В силовой части использовал тиристоры BTA41-600. Они на 40А, но т.к. китайские, для нагрузки в 2кВт поставил 2 штуки параллельно (говорят так нельзя делать, но я надеюсь, Вы никому не скажете). Чтобы ими управлять и использую внешние прерывания при переходе синуса сети через 0. Сделано на самой обычной оптопаре, диодном мосте и паре резисторов (на схеме d1-4, u5). На печатной плате разделил силовую часть от слаботочной. Предохранителей никаких не ставил, потому что думаю запитать от автомата.

ИК паяльная станция, ПИД регулятор, фазовое управление, stm32 Электроника, Электричество, Своими руками, Длиннопост, Паяльная станция, Stm32, Микроконтроллеры
ИК паяльная станция, ПИД регулятор, фазовое управление, stm32 Электроника, Электричество, Своими руками, Длиннопост, Паяльная станция, Stm32, Микроконтроллеры

С силовой частью все. Вот такое получилось устройство в сборе (пока без радиаторов). Нагружал силовую часть лампочками по 100Вт, все работает.

ИК паяльная станция, ПИД регулятор, фазовое управление, stm32 Электроника, Электричество, Своими руками, Длиннопост, Паяльная станция, Stm32, Микроконтроллеры
ИК паяльная станция, ПИД регулятор, фазовое управление, stm32 Электроника, Электричество, Своими руками, Длиннопост, Паяльная станция, Stm32, Микроконтроллеры

Остается сделать корпус, пока на это нет времени. Нагреватели уже куплены и лежат в коробочках. Нагреватели заказывал у компании Электронагрев, обошлись в 6 тысяч с доставкой в Уфу, но при получении у Деловых линии, возникли проблемы с тем, что у них висел какой то долг)). Через пару дней они закрыли долг и я смог получить свои нагреватели.
Что я бы изменил, если делал заново:
• Использовал max31855
• Не забыл включить вачдог)))
• Использовал freertos
• Дописал ГУЙ))
Схемы и ссылку на код прилагаю:
https://drive.google.com/open?id=1TT0NNhkICT5_5t9u4LS_0rpkKu...
https://easyeda.com/aminovilshat/Payalnik_ultra
З.Ы. я не занимаюсь профессионально программированием STM32, это всего лишь хобби. Но судите строго) кроме советов отказаться от HAL и СubeMX.

Показать полностью 6
645

Расширяем функционал штатной аудиосистемы

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


1. Купить затычку в прикуриватель и не выпендриваться.

2. Купить на разборках за немалые деньги штатный блок Bluetooth + голову поновее.

3. Сделать что-либо самому, но так, чтобы не урезать имеющийся функционал.


Как вы поняли из названия, я выбрал путь номер 3. (не тот, о чем вы подумали)


Итак, имеем:


Штатная аудиосистема, которая состоит из головного устройства и панели, которая выглядит так:

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

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


Задача: выяснить, как осуществляется обмен данными между панелью и головой.


К счастью, в открытом доступе можно найти мануал со схемой, из которой становится ясно, что интерфейсом между головой и панелью является обычный UART, он же COM порт на ПК.

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Далее был пущен в ход логический анализатор, которым была определена скорость и протокол обмена между головой и панелью. (Частота обновления экрана 10 кадров в секунду, частота сканирования нажатий 30 мс). В итоге был получен результат в виде Hello World, знакомого каждому программисту =)

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Следующим шагом был этап выбора микроконтроллера для реализации этой содомии) Выбор пал на STM32F103, на борту которого целых 3 UART и есть поддержка CAN шины (почему бы не добавить и ее). В качестве Bluetooth модуля изначально был куплен CSR8645, первая версия была с ним, но он не мог выводить названия треков, а также не имел управления по цифровой шине, поэтому был куплен прямо from USA модуль под названием Bluegiga WT32i, в котором было все, что нужно и даже больше - поддержка вывода цифрового звука и поддержка lossless кодека AptX. В течение пары месяцев, когда было свободное время велась разработка прототипа. Были познаны все ужасы HAL и прелести SPL. Досконально изучены UART и DMA в микроконтроллере, т.к. связать все это вместе и чтобы оно работало без тормозов и сбоев было необходимо.


Отладка обмена:

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Отладка и настройка Bluetooth-модуля с внешним ЦАПом

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Затем все это добро было внедрено в головное устройство, но так, чтобы можно было без проблем прошить и снять для доработки. В качестве интерфейса был задействован кабель HDMI и разъем из мертвого ноутбука. Изнутри все выглядело так:

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Снаружи вот так:

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Корпусом выступил старый блок питания от ноутбука.


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

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Ну и результат после месяца ожидания:

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

На фото и модели платы немного отличаются, был добавлен CAN трансивер и еще по мелочи.


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

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Корпусом выступил все тот же блок питания.


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

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Вид в сборе

Расширяем функционал штатной аудиосистемы Своими руками, Электроника, Mitsubishi, Embedded, Stm32, Видео, Длиннопост

Ну и видео работы

Примечание. Как вы могли заметить, русский текст выводится транслитом, более-менее умным. Например буква ч заменяется на ch и т.п., чего штатными средствами достичь никак бы не удалось. Ну и в добавок поддержка lossless аудио.


Если кто захочет повторить, пишите, у меня еще осталось 9 плат. Прошивку скину :)


Тем, кто жаждет подробностей. Задействованы все 3 UART. Один на дисплей, один на клавиши и один на Bluetooth модуль. Звуковой поток переключается аналоговым мультиплексором. CAN используется тоже из STM32. Стоит внешний ЦАП PCM5102, звук очень недурный. Подключается между головой и проводкой автомобиля. Разъемы были найдены на разборке за дофига денег)


Вышло дороже, чем купить штатную систему Bluetooth, но удовольствия от разработки оно принесло намного больше)


iam@kolyandex.su

Показать полностью 11 1
115

Недорогая STM32 плата + Arduino IDE

Моё новое видео про дешёвую альтернативу Arduino платам.

Данная отладочная плата, основана на базе микроконтроллера STM32F103C8T6.

Недорогая STM32 плата + Arduino IDE Arduino, Mrподелкинц, Плата, Stm32, Электроника, Программирование, Устройство, Видео, Длиннопост

Сравним основные параметры STM32 платы, и её аналога по цене — Arduino Nano V3.0:


Рабочая частота 72 МГц, против 16 у ардуино;

Объем Flash памяти 64 Кбайта, против 32;

Оперативной памяти, она же RAM(где хранятся переменные), у STM32 целых 20 Кбайт, у ардуинки всего лишь 2;

Быстрый 12-ти битный АЦП, в то время как у Arduino плат, что на базе AVR микроконтроллеров(это как правило большинство) используется 10-ти битный. Это означает, что в случае STM32, функция analogRead(*); будет возвращать 0..4095 против 0..1023, что в первом случае ведёт к более точным измерениям;

16-ти битный аппаратный ШИМ, против 8-ми у Arduino плат, то есть, функция analogWrite(*);pwmWrite(*); может принимать значение 0..65535, против убогих 0..255. Это позволит ещё точнее управлять нашими двигателями, сервами и прочими девайсами, которые рулятся при помощи ШИМ;

Аппаратная работа с USB, чем не может похвастаться не одна Arduino плата стоимостью менее 2 долларов;

Напряжение питания — от 2 до 3.6В(прямо таки заточено под 2 AA батарейки), против 2.7...5В у ардуино плат;

Цены на момент публикации — 1.9 доллара против 1.8(алиэкспресс).

Недорогая STM32 плата + Arduino IDE Arduino, Mrподелкинц, Плата, Stm32, Электроника, Программирование, Устройство, Видео, Длиннопост

По размерам, STM32 чучуть больше Arduino Nano. На небольшом бредборде смотрится вот так:

Недорогая STM32 плата + Arduino IDE Arduino, Mrподелкинц, Плата, Stm32, Электроника, Программирование, Устройство, Видео, Длиннопост

Очевидно, что отладочная плата на базе STM32 выигрывает по всём параметрам у Arduino Nano, исключением является разве что стоимость, но согласитесь 10 центов — хорошая цена за большую производительность, а про периферию, которой нафарширован STM32, так я вообще молчу, чего только стоят DMA или интегрированные в микроконтроллер часы реального времени.


Но предупреждаю, пока что оно всё сыровато, есть баги, далеко не все примеры компилируются. Со временем думаю исправят.

Недорогая STM32 плата + Arduino IDE Arduino, Mrподелкинц, Плата, Stm32, Электроника, Программирование, Устройство, Видео, Длиннопост

Архив к ролику:

https://drive.google.com/file/d/0B3jRYZMczSQsS0w4SG1GRm1IdTA...

Показать полностью 3
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: