Патчім» дзеркало в автомобілі

Колега на роботі купив собі новий автомобіль Chery Tiggo FL, куди китайці напхали багато різних функцій за невисоку вартість автомобіля. Однією з найнезвичайніших штуковин в авто виявилося «чарівне» дзеркало, яке наділене функціями барометра, альтиметра та компаса.

Головним недоліком усієї начинки даного автомобіля є відсутність датчиків температури за боротом автомобіля та всередині його. Цей недолік вирішили з колегою змінити шляхом модифікації штатного дзеркала заднього виду позаштатними методами.

дзеркало

Отже, приступимо до створення «патчу» на дзеркало.Постановка завдання.Необхідно в автомобілі отримувати інформацію про зовнішню температуру навколишнього середовища та температуру всередині салону. Як обмеження приймаємо, що додаткові «колгоспні» пристрої ставити не будемо. Як припущення приймаємо можливість відмовитися від показань альтиметра та барометра. Як вихідні дані виступає дзеркало заднього виду, зображене малюнку.

Аналіз вихідних даних.Будь-яка справа починається з аналізу вихідних даних, тому почнемо з демонтажу дзеркала та його розбору. Судячи з зовнішнього вигляду в дзеркалі є два індикатори світлодіодних семисегментних по 4 знаки, значить або можна дістатися, або придумати щось своє.

Взагалі варто відзначити, що реалізація функцій альтиметра, барометра та компаса задоволена огидна в дзеркалі, тому що показання плавають сильно, значення кратні 100, а компас не калібруємо за відомими методиками. Тому ці функції можна викинути при нагоді. Тим більше, відомо, що одночасне вимірювання висоти та тиску одним барометричним датчиком з допустимою точністю неможливе. Якщо змінюється висота, то датчик маєВиміряти тільки висоту, а якщо стоїмо на місці, то вимірюваємо тільки атмосферний тиск. Судячи з показань приладів, складається відчуття, що в дзеркалі є один компас і барометричний датчик.

Усередині дзеркала знаходиться така плата:

патчім

Отже розтин показало, що у нас всередині дзеркала знаходиться плата, на якій для керування індикаторами LED стоять драйвери TM1638, а логіка зашита в контролер MPC82E54AS2. Як датчик використовується MEMSIC C2122M. Займатися перезашивкою поточного контролера та модифікацією плати поки що бажання немає, тому вирішено зробити свою плату для дзеркала, яка реалізуватиме нашу логіку і виводитиме потрібну нам інформацію від датчиків.

Рішення задачі.Отже, вирішено зробити свою плату, що повторює габарити штатної плати та індикатори, тільки не буде використовувати індикатор компаса, він нам не потрібен. Логіка роботи пристрою наступна: 1) Є три кнопки: "+", "PWR", "-": додати яскравість, увімкнути або вимкнути підсвічування, зменшити яскравість; 2) При натисканні на кнопки вмикається підсвічування та інформація відображається 20 секунд; 3) Якщо екран увімкнено, то PWR вимикає його; 4) Дані температур оновлюються один раз на 1 секунду.

Відповідно функціональна схема пристрою має вигляд:

автомобілі

Таким чином, відповідно до схеми у нас мікроконтролер SPI взаємодіє з двома драйверами LED, двома датчиками температури. Все запитано за схемою, що повторює штатну, щоб використовувати частину радіоелементів із плати.

Як мікроконтролер будемо використовувати STM8S003, як найдешевший з лінійки STM8S, периферії у нього достатньо, а зокрема нам потрібні тільки GPIO, RCC, SPI. Як датчики температури використані DS18B20, які не складають дефіциту тає на руках. Для керування LED індикаторами використовується MAX7221.

МК STM8S003 має такі характеристики:

дзеркало

Вибір даного МК обумовлений його простотою, дешевизною за умов кризи, і навіть наявністю простих засобів розробки (STM8S-Discovery). Для тих хто не хоче розводити друк, можна зробити все те саме на макетній платі з використанням наступної просто налагоджувальної хустки:

патчім

Ціна на ebay лише 120 рублів.

Виходячи з функціональної схеми виходить наступна принципова схема пристрою:

автомобілі

Плату з двостороннім монтажем виготовили за допомогою фоторезиста, також ним зроблений шар маски фіолетового кольору, внаслідок чого вийшов наступний виріб, вид «штатної» плати та «патч» плати зі своєю логікою:

патчім

Програмна реалізація досить проста, спочатку відпрацьована на базі Arduino, потім портативний функціонал на STM8S бойового виробу, готового до установки на автомобіль. Стендові випробування на кліматику та напрацювання на відмову плата пройшла успішно, тому зараз здійснюється монтаж плати в автомобіль. Коли колега зробить установку, викладу комплексний звіт про всі зміни його автомобіля.

Всередині вихідного коду три простих бібліотеки мовою Сі:

  • роботи з біпером
  • роботи з драйвером LED
  • роботи з DS18b20

З точки зору програмування ключовим моментом є факт, що STM8 плавають такти, тому затримки для DS18b20 реалізовані на базовому таймері номер 4, для прикладу функція затримки на 15 мкс для контролера на частоті 16МГц має вигляд:

Приклад обміну з датчиком DS18b20 засобами UART1 підказав artko:

Рівень яскравості індикаторів зберігається в незалежній пам'яті за принципомкарти пам'яті описаної за допомогою структури. Для кожного поля структури є функція взяття значення та функція запису нового значення.

Висновки.Отже, розроблено пристрій для автомобіля, який вирішує задачу вимірювання температури всередині салону та поза ним. Здавалося проста функція, але чомусь у китайських авто її немає, або вона дуже захована від обивателя.

Демонстрація функціоналу нової плати:

UPD:Як обіцяв процес складання в дзеркало:

дзеркало

Випробування на негативні температури:

патчім

Дзеркало у зборі!

дзеркало

Хардкорна конфа за С++. Ми запрошуємо лише профі.