Комментарии 55
Ура! STM-ки в дело пошли, 8-битные правда, но лиха-беда-начало.
А где же фотка того, что получилось в интерьере?
120 рублей — не дорого конечно — только это цена не за модуль на картинке, а за голый чип…
Непонятно, раз уж вы упоминаете деньги, что же MAX7221 не посчитали? Она так и подороже выходит, а у вас их целых две. Может правильнее было бы поногастей МК взять и да пусть он на индикаторы работает?
А где же фотка того, что получилось в интерьере?
Выбор данного МК обусловлен его простотой, дешевизной в условиях кризиса, а также наличием простых средств разработки (STM8S-Discovery)
120 рублей — не дорого конечно — только это цена не за модуль на картинке, а за голый чип…
Непонятно, раз уж вы упоминаете деньги, что же MAX7221 не посчитали? Она так и подороже выходит, а у вас их целых две. Может правильнее было бы поногастей МК взять и да пусть он на индикаторы работает?
+5
120 рублей стоят 5pcs STM8S003F3P6 TSSOP20 ST ARM 8-bit STM8 по первой ссылке или STM8S003F3P6 STM8 Minimum System Development Board SWIM.
Стоимость всего зеркала выходит в 1000 рублей примерно, самое дорогое, это LED индикаторы. В интерьер пока коллега не встроил зеркало, потому что ему еще датчики протянуть по салону и под капот. А что бы снять пустое зеркало надо срезать регистратор с 3М скотча, поэтому только через неделю или две будет фотка в интерьере
Стоимость всего зеркала выходит в 1000 рублей примерно, самое дорогое, это LED индикаторы. В интерьер пока коллега не встроил зеркало, потому что ему еще датчики протянуть по салону и под капот. А что бы снять пустое зеркало надо срезать регистратор с 3М скотча, поэтому только через неделю или две будет фотка в интерьере
0
3M без особых проблем снимается феном.
0
а регистратор он не расплавит?
0
Кстати, на STM32 уже много разных сделали устройств, если есть спрос, то обязательно выложу про другие проекты статьи!
+3
Странно, что вы не решились добавить фукционал кнопкам (двойные нажатия, удержания) и не установили более интересные OLED дисплеи, с возможностью вывода дополнительной информации. Например, obd данные по расходу топлива, температуре двигателя и т.д. Можно много чего придумать, если уж решился делать с нуля электронное зеркало. Ту же яркость можно было бы сделать автоматически настраиваемой, в зависимости от освещенности в салоне.
0
Благодарю за конструктивные пожелания, дополнительный функционал на кнопки в текущем виде не нужен, так конечно можно через них настравать зеркало как угодно, но заказчик (мой коллега) не настаивал на данном функционале. По поводу OBD данных вопрос тоже интересный, когда занимались BT-ELM372 переходников нашли там внутри PIC контроллер, а вот для него прошивку ELM и схему включения с протоколом не нашли, поэтому решили не заморачиваться… Для доп информации коллега купил себе внешний маршрутник и его использует по необходимости))))
0
Выложил конечный результат!
0
Опять не в интерьере, но все равно — здорово!
Стоимость всего зеркала выходит в 1000 рублей примерно, самое дорогое, это LED индикаторы.Это понятно, а во сколько оцениваете свое ВРЕМЯ?
0
Осталось только подсчитать затраченный бюджет и показать как в сборе теперь (первоначальный вид видно в первом фото).
0
Реализацию обмена с DS18B20 практичнее было бы сделать на UART стм-ки. не пришлось бы и с времянками воевать.
0
в RM-ке два обзаца по 1-wire обмену… А вот как команду сброса делать на нем с 480 мкс, не ясно, поэтому пока использовал по старинке, хотя если найти пример по 1-wire то разобраться пару пустяков
0
сброс уартом, для 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 прошел
ну и остального еще десяток строчек. Бонус — никакой зависимости времянок от прерываний.
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 прошел
ну и остального еще десяток строчек. Бонус — никакой зависимости времянок от прерываний.
0
а как пример корректно осуществить данных от DS-ки?
0
в продолжение к предыдущему кусочку:
упрощено — обращение ко всем датчикам сразу (т.е. только к одному :) ), принцип понятен, думаю.
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;
}
упрощено — обращение ко всем датчикам сразу (т.е. только к одному :) ), принцип понятен, думаю.
0
Благодарю, добавлю это в прошивку и в библиотеку кодов по STM
0
А поиск реально на uart сделать? Там же надо каждый бит поверять, или просто dr много раз читаем и все?
0
Можно конечно. Нет, не просто много раз. Алгоритм поиска на 1-wire довольно прикольный.
Вот пример для стм8, это я адаптировал код поиска по 1-wire вот отсюда, в оригинале под STM32 был.
Вот пример для стм8, это я адаптировал код поиска по 1-wire вот отсюда, в оригинале под STM32 был.
0
А зачем нужен барометр и альтиметр на зеркале?
+1
Этот вопрос я бы задал Китаяса, который это придумал, особенно когда он показывает в Мск от 100 до 300 м над уровнем моря, при наших 260, и вообще такая информация от зеркала точно не нужна…
+1
Да, компас явно не при делах — несуразно смотрится — показания крена и тангажа были бы сообразнее в такой компании…
0
Чтобы показать крен и тангаж нужно ставть ставить нормальный ДУС, т.е. мемс гироскоп с более или менее нормальными характеристиками, но они будут стоить больше этого несчастного зеркала ))) Я видел у знакомого в машине механический такой прибор попалвкового типа — шар в жидкости со смещенным центром тяжести.
0
Компас американцы очень любят ставить в свои авто.
0
«Одной из самых необычных штуковин в авто оказалось «волшебное» зеркало, которая наделено функциями барометра, альтиметра и компаса»
Тоесть не смотря на всё это, температуру он штатно так и не умеет показывать?))
Тоесть не смотря на всё это, температуру он штатно так и не умеет показывать?))
+4
Аналогичная мысль появилась. Сколько лет прошло, а китайцы до сих пор практикуют дизайн «побольше всего, дешево и в одну упаковку». Отсюда появляются часы с тучей функций, которые не показывают толком время, 999999 одинаковых игр в 1 картридже, теперь вот и зеркала в авто, которые показывают высоту и давление, но не показывают банальную температуру… Это такой национальный менталитет что-ли?
+2
Самое ужасное что не умеет…
0
Как вариант на UART повесить BT и плату под крылом или бампером тоже с ВТ и датчиком давления/влажности/температуры. И проводов меньше и функционал выше. Для удешевления вместо ВТ повесить пару на 433 Мгц или NRF24L. А так — бонба!
0
Однажды у меня нажало дребезжать зеркало заднего вида, и я его вырвал с корнем. Так и не поставил обратно, надобности в нем нет никакой, разве что удобно можно рассмотреть девицу на заднем сидении
-1
в него можно боковым зрением увидеть быстро несущегося гонщика сзади
0
с гонщиком потом можно познакомиться либо на его похоронах, либо в группе разбора.
Преклоняюсь перед такими, как OP. Хочу сделать внешнюю кнопку для Toggl'а и индикатор прохождения тестов, но не знаю, с какой стороны подступиться
Преклоняюсь перед такими, как OP. Хочу сделать внешнюю кнопку для Toggl'а и индикатор прохождения тестов, но не знаю, с какой стороны подступиться
0
А что за OP, что за кнопка для тестов? Расскажите по подробнее)))
0
OP- original poster, топикстертер, если по-русски.
Для тестов порой хочется отдельный индикатор типа дашборда со сводкой числа пройденых тестов, % покрытия кода итд.
Кнопка — для запуска логгера времени toggl для учета времени.
Понятно, что все это можно сделать и горячими клавишами, но иногда хочется отдельного физического интерфейса для таких частых задач.
Для тестов порой хочется отдельный индикатор типа дашборда со сводкой числа пройденых тестов, % покрытия кода итд.
Кнопка — для запуска логгера времени toggl для учета времени.
Понятно, что все это можно сделать и горячими клавишами, но иногда хочется отдельного физического интерфейса для таких частых задач.
0
Синий светодиод в лучших китайских традициях слепит даже на фото :) Точно он там нужен, особенно если захочется увидеть показания температуры в тёмное время суток? Может на красный/зеленый поменять?
0
А какая маркировка на LED индикаторах? А то по фоткам не разобрать.
0
что то там с компиляторами не все гладко под stm8. Влезли в 8 кбайт?
0
если не использовать stdlib в части функций ввода и вывода, то все ок
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
«Патчим» зеркало в автомобиле