Как стать автором
Обновить

Комментарии 55

Ура! STM-ки в дело пошли, 8-битные правда, но лиха-беда-начало.

А где же фотка того, что получилось в интерьере?

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

120 рублей — не дорого конечно — только это цена не за модуль на картинке, а за голый чип…
Непонятно, раз уж вы упоминаете деньги, что же MAX7221 не посчитали? Она так и подороже выходит, а у вас их целых две. Может правильнее было бы поногастей МК взять и да пусть он на индикаторы работает?
120 рублей стоят 5pcs STM8S003F3P6 TSSOP20 ST ARM 8-bit STM8 по первой ссылке или STM8S003F3P6 STM8 Minimum System Development Board SWIM.

Стоимость всего зеркала выходит в 1000 рублей примерно, самое дорогое, это LED индикаторы. В интерьер пока коллега не встроил зеркало, потому что ему еще датчики протянуть по салону и под капот. А что бы снять пустое зеркало надо срезать регистратор с 3М скотча, поэтому только через неделю или две будет фотка в интерьере
3M без особых проблем снимается феном.
а регистратор он не расплавит?
Я скорее про 3М в общем, чем про конкретное место в частности.
В любом случае, сомневаюсь, что фен способен расплавить регистратор. Кроме того, он же вроде под наклейкой висит, а не прямо в ней, просто не направляйте на него струю.
НЛО прилетело и опубликовало эту надпись здесь
Кстати, на STM32 уже много разных сделали устройств, если есть спрос, то обязательно выложу про другие проекты статьи!
Странно, что вы не решились добавить фукционал кнопкам (двойные нажатия, удержания) и не установили более интересные OLED дисплеи, с возможностью вывода дополнительной информации. Например, obd данные по расходу топлива, температуре двигателя и т.д. Можно много чего придумать, если уж решился делать с нуля электронное зеркало. Ту же яркость можно было бы сделать автоматически настраиваемой, в зависимости от освещенности в салоне.
Благодарю за конструктивные пожелания, дополнительный функционал на кнопки в текущем виде не нужен, так конечно можно через них настравать зеркало как угодно, но заказчик (мой коллега) не настаивал на данном функционале. По поводу OBD данных вопрос тоже интересный, когда занимались BT-ELM372 переходников нашли там внутри PIC контроллер, а вот для него прошивку ELM и схему включения с протоколом не нашли, поэтому решили не заморачиваться… Для доп информации коллега купил себе внешний маршрутник и его использует по необходимости))))
Выложил конечный результат!
Опять не в интерьере, но все равно — здорово!

Стоимость всего зеркала выходит в 1000 рублей примерно, самое дорогое, это LED индикаторы.
Это понятно, а во сколько оцениваете свое ВРЕМЯ?
Кстати, цена не много изменилась, температурные испытания выявили проблемы с MAX7221CNG, меняем её на микросхему дороже и которая стойкая хорошо к морозу MAX7219EWG
Осталось только подсчитать затраченный бюджет и показать как в сборе теперь (первоначальный вид видно в первом фото).
Я напишу короткую статью общую через пару неделю, когда зеркало соберем, потому что мы еще там сделали камеру заднего вида в нештатном козырке от солнца, регистратор, маршрутник, измеритель напряжения
Не забудьте двд-плеер и фоторамку)

+1 ждём фотки.
Выложил в сборе зеркало в статье!
Реализацию обмена с DS18B20 практичнее было бы сделать на UART стм-ки. не пришлось бы и с времянками воевать.
в RM-ке два обзаца по 1-wire обмену… А вот как команду сброса делать на нем с 480 мкс, не ясно, поэтому пока использовал по старинке, хотя если найти пример по 1-wire то разобраться пару пустяков
сброс уартом, для STM8S.
void ds1820_uartinit(uint32_t baud)
{
USART_DeInit(USART1);
USART_Init(USART1, baud, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No,
USART_Mode_Rx | USART_Mode_Tx);
}
void ds1820_write(uint8_t byte)
{
UART1->DR = byte;
while (!(UART1->SR & (uint8_t)UART1_FLAG_TC)); // ждем завершения передачи
}

ну и сам сброс
ds1820_uartinit(9600);
ds1820_write(0xf0);

если сразу после прочитать буфер приема и там что-то отличное от передаваемого (rx и tx просто соединить) — то presense прошел
ну и остального еще десяток строчек. Бонус — никакой зависимости времянок от прерываний.
а как пример корректно осуществить данных от DS-ки?
в продолжение к предыдущему кусочку:
uint8_t ds1820_read() 
{
   return ((uint8_t)UART1->DR);
}

void ds_write(uint8_t byte) {
    int i;
    for(i = 0; i < 8; i ++) {
        if(byte & 1) {
            ds1820_write(0xff);
        } else {
            ds1820_write(0x00);
        }
        ds1820_read();
        byte >>= 1;
    }
   
}

uint8_t ds_read() {
    int i;
    uint8_t res = 0;
    for(i = 0; i < 8; i ++) {
       ds1820_write(0xff);
       uint8_t c = ds1820_read();
       if(c == 0xff) {
          res |= (1 << i);
       }
    }
    return res;
}

void ds1820_startconversion()
{
  ds1820_uartinit(9600);
  ds1820_write(0xf0);
  ds1820_uartinit(115200);
  ds_write(0xcc);
  ds_write(0x44);
}

int16_t ds1820_readtemp()
{
  ds1820_uartinit(9600);
  ds1820_write(0xf0);
  ds1820_uartinit(115200);
  ds_write(0xcc);
  ds_write(0xBE);
  uint8_t temp1 = ds_read();
  uint8_t temp2 = ds_read();
 
  int16_t temp3 = (uint16) temp2 * (uint16)0x0100L + (uint16) temp1;
  return temp3;
}


упрощено — обращение ко всем датчикам сразу (т.е. только к одному :) ), принцип понятен, думаю.
Благодарю, добавлю это в прошивку и в библиотеку кодов по STM
А поиск реально на uart сделать? Там же надо каждый бит поверять, или просто dr много раз читаем и все?
Можно конечно. Нет, не просто много раз. Алгоритм поиска на 1-wire довольно прикольный.
Вот пример для стм8, это я адаптировал код поиска по 1-wire вот отсюда, в оригинале под STM32 был.
А зачем нужен барометр и альтиметр на зеркале?
Этот вопрос я бы задал Китаяса, который это придумал, особенно когда он показывает в Мск от 100 до 300 м над уровнем моря, при наших 260, и вообще такая информация от зеркала точно не нужна…
Эта погрешность будет при датчике любого качества. С помощью только барометрического датчика вычислять абсолютную высоту невозможно, потому что атмосферное давление меняется.
Да, компас явно не при делах — несуразно смотрится — показания крена и тангажа были бы сообразнее в такой компании…
Чтобы показать крен и тангаж нужно ставть ставить нормальный ДУС, т.е. мемс гироскоп с более или менее нормальными характеристиками, но они будут стоить больше этого несчастного зеркала ))) Я видел у знакомого в машине механический такой прибор попалвкового типа — шар в жидкости со смещенным центром тяжести.
Гироскоп не нужен, нужен акселерометер. А лучше инклинометер.
Компас американцы очень любят ставить в свои авто.
так вот откуда ноги растут? Только у америкосов он по GPS наверное завязан
«Одной из самых необычных штуковин в авто оказалось «волшебное» зеркало, которая наделено функциями барометра, альтиметра и компаса»

Тоесть не смотря на всё это, температуру он штатно так и не умеет показывать?))
Аналогичная мысль появилась. Сколько лет прошло, а китайцы до сих пор практикуют дизайн «побольше всего, дешево и в одну упаковку». Отсюда появляются часы с тучей функций, которые не показывают толком время, 999999 одинаковых игр в 1 картридже, теперь вот и зеркала в авто, которые показывают высоту и давление, но не показывают банальную температуру… Это такой национальный менталитет что-ли?
Вообще на примере китайцев ясно, почему немцы не пихают вагон функций, потому что все равно их никто не будет настраивать, лучше сделать одну функцию «железно» работающую, чем вагон «мусора» до которого никто не доберется
Самое ужасное что не умеет…
Как вариант на UART повесить BT и плату под крылом или бампером тоже с ВТ и датчиком давления/влажности/температуры. И проводов меньше и функционал выше. Для удешевления вместо ВТ повесить пару на 433 Мгц или NRF24L. А так — бонба!
Про нрф готовлю статью, для умной теплицы. А так как всегда проблема питания и корпуса IP67
Она сама будет ориентироваться по компасу, солнцу и фазе луны? :-)
Питание — аккумулятор, защита легко решается коробкой с гермовводами или силиконовой заливкой.
Дла начала надо чтобы она научилась климат держать))) а потом уже остальное )))
Однажды у меня нажало дребезжать зеркало заднего вида, и я его вырвал с корнем. Так и не поставил обратно, надобности в нем нет никакой, разве что удобно можно рассмотреть девицу на заднем сидении
в него можно боковым зрением увидеть быстро несущегося гонщика сзади
с гонщиком потом можно познакомиться либо на его похоронах, либо в группе разбора.
Преклоняюсь перед такими, как OP. Хочу сделать внешнюю кнопку для Toggl'а и индикатор прохождения тестов, но не знаю, с какой стороны подступиться
А что за OP, что за кнопка для тестов? Расскажите по подробнее)))
OP- original poster, топикстертер, если по-русски.
Для тестов порой хочется отдельный индикатор типа дашборда со сводкой числа пройденых тестов, % покрытия кода итд.
Кнопка — для запуска логгера времени toggl для учета времени.
Понятно, что все это можно сделать и горячими клавишами, но иногда хочется отдельного физического интерфейса для таких частых задач.
На самом деле сделать можно на базе ardino nano, сделать довольно просто и интересно, посмотрите для примера мою предыдущую статью про RGB полоску, там схожая задача, только про нагрузку CPU решал
Синий светодиод в лучших китайских традициях слепит даже на фото :) Точно он там нужен, особенно если захочется увидеть показания температуры в тёмное время суток? Может на красный/зеленый поменять?
Это диод с штатной платы, для подсветки кнопок, на самом деле его затянули через 100 Ом, и все равно слепит))))
А какая маркировка на LED индикаторах? А то по фоткам не разобрать.
куплены на Ali маркировка на них XD3641AS
Не, я про те, что на плате стоят, с компасом и проч.
HL-LED773SG-C101
HL-LED77D-A101
HL-LED771SG-C101
что то там с компиляторами не все гладко под stm8. Влезли в 8 кбайт?
если не использовать stdlib в части функций ввода и вывода, то все ок
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации