Как сделать бегущий «умный» поворотник своими руками для автомобиля


Бегущие поворотники на ленте WS2812 и Arduino

Arduino: 1.8.6 Hourly Build 2017/10/20 02:33 (Windows 7), Плата:«Arduino/Genuino Uno» D:\arduino\iop\arduino-nightly\arduino-builder -dump-prefs -logger=machine -hardware D:\arduino\iop\arduino-nightly\hardware -tools D:\arduino\iop\arduino-nightly\tools-builder -tools D:\arduino\iop\arduino-nightly\hardware\tools\avr -built-in-libraries D:\arduino\iop\arduino-nightly\libraries -libraries D:\arduino\iop\arduino-nightly\libraries\libraries -fqbn=arduino:avr:uno -ide-version=10806 -build-path C:\Users\305E~1\AppData\Local\Temp\arduino_build_878607 -warnings=none -build-cache C:\Users\305E~1\AppData\Local\Temp\arduino_cache_271047 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=D:\arduino\iop\arduino-nightly\hardware\tools\avr -prefs=runtime.tools.avrdude.path=D:\arduino\iop\arduino-nightly\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\arduino\iop\arduino-nightly\hardware\tools\avr -verbose D:\arduino\arduino-nightly\libraries\ad\ad.ino D:\arduino\iop\arduino-nightly\arduino-builder -compile -logger=machine -hardware D:\arduino\iop\arduino-nightly\hardware -tools D:\arduino\iop\arduino-nightly\tools-builder -tools D:\arduino\iop\arduino-nightly\hardware\tools\avr -built-in-libraries D:\arduino\iop\arduino-nightly\libraries -libraries D:\arduino\iop\arduino-nightly\libraries\libraries -fqbn=arduino:avr:uno -ide-version=10806 -build-path C:\Users\305E~1\AppData\Local\Temp\arduino_build_878607 -warnings=none -build-cache C:\Users\305E~1\AppData\Local\Temp\arduino_cache_271047 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=D:\arduino\iop\arduino-nightly\hardware\tools\avr -prefs=runtime.tools.avrdude.path=D:\arduino\iop\arduino-nightly\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\arduino\iop\arduino-nightly\hardware\tools\avr -verbose D:\arduino\arduino-nightly\libraries\ad\ad.ino Using board ‘uno’ from platform in folder: D:\arduino\iop\arduino-nightly\hardware\arduino\avr Using core ‘arduino’ from platform in folder: D:\arduino\iop\arduino-nightly\hardware\arduino\avr Detecting libraries used… «D:\arduino\iop\arduino-nightly\hardware\tools\avr/bin/avr-g++» -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\cores\arduino» «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\variants\standard» «C:\Users\305E~1\AppData\Local\Temp\arduino_build_878607\sketch\ad.ino.cpp» -o «nul» «D:\arduino\iop\arduino-nightly\hardware\tools\avr/bin/avr-g++» -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\cores\arduino» «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\variants\standard» «-ID:\arduino\iop\arduino-nightly\libraries\Adafruit_NeoPixel-master» «C:\Users\305E~1\AppData\Local\Temp\arduino_build_878607\sketch\ad.ino.cpp» -o «nul» «D:\arduino\iop\arduino-nightly\hardware\tools\avr/bin/avr-g++» -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\cores\arduino» «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\variants\standard» «-ID:\arduino\iop\arduino-nightly\libraries\Adafruit_NeoPixel-master» «-ID:\arduino\iop\arduino-nightly\libraries\Adafruit_ADXL345-1.0.0» «C:\Users\305E~1\AppData\Local\Temp\arduino_build_878607\sketch\ad.ino.cpp» -o «nul» «D:\arduino\iop\arduino-nightly\hardware\tools\avr/bin/avr-g++» -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\cores\arduino» «-ID:\arduino\iop\arduino-nightly\hardware\arduino\avr\variants\standard» «-ID:\arduino\iop\arduino-nightly\libraries\Adafruit_NeoPixel-master» «-ID:\arduino\iop\arduino-nightly\libraries\Adafruit_ADXL345-1.0.0» «C:\Users\305E~1\AppData\Local\Temp\arduino_build_878607\sketch\ad.ino.cpp» -o «C:\Users\305E~1\AppData\Local\Temp\arduino_build_878607\preproc\ctags_target_for_gcc_minus_e.cpp» In file included from D:\arduino\arduino-nightly\libraries\ad\ad.ino:3:0:

D:\arduino\iop\arduino-nightly\libraries\Adafruit_ADXL345-1.0.0/Adafruit_ADXL345_U.h:26:29: fatal error: Adafruit_Sensor.h: No such file or directory

#include

compilation terminated.

Используем библиотеку Adafruit_NeoPixel-master версии 1.0.3 из папки: D:\arduino\iop\arduino-nightly\libraries\Adafruit_NeoPixel-master Используем библиотеку Adafruit_ADXL345-1.0.0 версии 1.0.0 из папки: D:\arduino\iop\arduino-nightly\libraries\Adafruit_ADXL345-1.0.0 exit status 1 Ошибка компиляции для платы Arduino/Genuino Uno.

Купить адресную светодиодную ленту

Ленты ws2812 достаточно распространены на российском рынке, их без труда можно найти в многочисленных специализированных магазинах. Можем посоветовать интернет-магазин Giant4.Ru с достаточно широким ассортиментом различных светодиодных лент и вполне низкими ценами, сопоставимыми с али. Если же есть возможность и желание ждать товар с Алиэкспресса, то ниже мы собрали вместе некоторые популярные варианты у надежных поставщиков:

Адресная светодиодная лент 1m/4m/5m WS2812B 30/60/144 pixels,IP30/IP65/IP67 DC5VСветодиодная лента DC5V WS2812B 1m/4m/5m 30/60/74/96/144 pixels/leds/m от надежного поставщикаАдресная светодиодная лента DC5V 1m/4m/5m WS2812B

Как работает адресная светодиодная лента

Принцип работы ленты следующий. Она поделена на сегменты, в каждом из которых находятся светодиод и конденсатор. Они все подключены параллельно, а данные передаются последовательно от одного сегмента к другому. Управление осуществляется контроллером, в котором прописывается программа функционирования. Управлять лентой можно через платформу Ардуино.

Маркировка адресной ленты:

  • Black PCB / White PCB – цвета подложки;
  • 1м/5 м – длина адресной ленты;
  • 30/60/74 и т.д. – сколько светодиодов приходится на 1 метр ленты;
  • IP30, IP65, IP67 – степень влаго- и пылезащищенности ленты =.

Адресные светодиодные ленты используются для сборки полноценных модулей, в конструировании ламп с управлением soft lights, для декоративной подсветки, в построении диодных экранов уличной рекламы.

  • Ws2812b

Видео инструкции и ролики

Обучающее видео на канале HomeMade:

Видео по созданию бегущей строки на базе ленты ws2112

Подключение

  • Взять SWCAN с диагностической колодки, пин №5. Там же кинуть землю;
  • Взять SWCAN с разъема для магнитолы, в нем он находится под номером №14, а земля №38:

Другой стороной MCP2515 подключаем к нашему микроконтроллеру — Arduino UNO. Делаем это как показано на схеме:

  • INT => D2;
  • SCK => D13;
  • SI — D11;
  • SO — D12;
  • CS — D10;
  • GND — GND;
  • VCC — 5V.

MP3 проигрыватель управляется по последовательному порту через пины RX и TX. По факту RX не используется, управление одностороннее. В случае с Arduino можно использовать как физический интерфейс, размещенный на пинах D0 (RX) и D1 (TX) Ардуины, так и воспользовавшись библиотекой SoftwareSerial поднять программный интерфейс на любом цифровом пине. Я выбрал второй вариант и использовал для него пин D6. При первом подключении я столкнулся с помехами на динамик, решением оказалось TX пин подключить через 1кОм резистор. Подключаем проигрыватель так:

  • VCC — 5V;
  • GND — GND;
  • TX — D6;
  • SPK_1 и SPK_2 — на динамик.

На этом подключение заканчивается и мы переходим к теории о шине SWCAN.

SWCAN шина и используемые в ней коды

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

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

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

Поворотник (включить):Extended ID: 0×10400060 DLC: 5 Data: 0×82 0×08 0×01 0xFF 0xD4
Поворотник (выключить):Extended ID: 0×10400060 DLC: 5 Data: 0×81 0×08 0×01 0xFF 0xD5
Открытая водительская дверь на зажигании (включить):Extended ID: 0×10400040 DLC: 5 Data: 0×86 0x3C 0xFF 0xFF 0×58
Открытая водительская дверь на зажигании (выключить):Extended ID: 0×10400040 DLC: 5 Data: 0×86 0x3C 0×00 0xFF 0×58
Сброс одометра (единократный щелчок):Extended ID: 0×10400060 DLC: 5 Data: 0×85 0x1E 0×01 0×33 0×38
Непристегнутый ремень на скорости выше 20км/ч (включить):Extended ID: 0×10400058 DLC: 5 Data: 0×87 0×65 0×64 0xFF 0×05
Непристегнутый ремень на скорости выше 20км/ч (выключить):Extended ID: 0×10400058 DLC: 5 Data: 0×87 0×65 0×00 0xFF 0×05
Тройной писк при открытой двери в движении (единократно):Extended ID: 0×10400060 DLC: 5 Data: 0×86 0×28 0×04 0xFF 0×88
Движение на стояночном тормозе (включить):Extended ID: 0×10400060 DLC: 5 Data: 0×86 0x1E 0xFF 0xFF 0×78
Движение на стояночном тормозе (выключить):Extended ID: 0×10400060 DLC: 5 Data: 0×86 0x1E 0×00 0xFF 0×78

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

Требования

  • Автомобиль Chevrolet Cobalt в комплектации LTZ или Ravon R4 любой комплектации;
  • Любой программируемый микроконтроллер, я использую Arduino UNO;
  • MCP2515 — CAN-контроллер с интерфейсом SPI;
  • DFPlayer Mini — аппаратный проигрыватель MP3 файлов с последовательным интерфейсом управления;
  • Любой динамик для воспроизведения звуков.

Стоимость такого удовольствия следующая: Arduino (250 руб.), MCP2515 (130 руб.), DFPlayer (60 руб.), динамик (50 руб.). Итого 490 рублей.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]