Велокомпьютер на STM8. Не совсем arduino, реальный интересный прибор с подробной инструкцией.

myowndevice
Offline
Зарегистрирован: 18.09.2017

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

Рассмотрено как программировать STM8 с нуля. Много теории, схемотехника, спящий режим, прервания, таймеры, работа с bluetooth, работа с пзу. Общие принципы программирования.

Сама идея подойдет и для ATMega.

Описание велокомпьютера:

Управление по bluetooth. Питание от li-ion аккумулятора. 2 датчика — на колесо и педали. Более 18 поездок по 3часа на одном заряде. Автоматическое фиксирование поездки. Расчёт и хранение за 3 последние поездки основных показателей — скорость, расход калорий, каденс. И самое главное звуковой контроль параметров — заданной скорости и каденса. Компактный размер 30х50х35мм.

b707
Онлайн
Зарегистрирован: 26.05.2017

Не хотел влезать, ибо уже все сказал в обсуждении статьи про МК.

Но по себе знаю, как обидно, когда трудился. писал статью - и вообще никакой реакции. Пусть мой отклик будет первым.

Главное. что бросилось в глаза - из сравнения части "Анализ рынка" и возможностей самоделки ясно следует, что по совокупности парметров приборчик не дотягивает даже до дешевых моделей "за 700руб".  Имхо, чтобы прибор стал интересным, советую автору добавить экран с выводом актуальных показаний.  Возможность после поездки посмотреть на телефоне сохраненные данные (весьма куцые) отсутствия экрана никак не компенсирует. Купили бы вы автомобиль, показания спидометра которого можно просмотреть только после поездки, на компе? :)

Ну и по мелочи - на некоторых листингах кода служебные символы HTML. Про запись флеш на СТМ32 написано неверно.

Deamon
Offline
Зарегистрирован: 21.09.2017

Экран нужен однозначно.

bizzon
Offline
Зарегистрирован: 29.03.2016

Где-то на гиктаймсе я это уже видел.

Novice User
Offline
Зарегистрирован: 25.09.2017

а с дисплеем можно сделать?

a5021
Offline
Зарегистрирован: 07.07.2013

myowndevice пишет:
Рассмотрено как программировать STM8 с нуля.

Рассмотрено, как неправильно программировать STM8 c нуля. Точнее, как вообще неправильно программировать. Конкретно:

CLK->PCKENR1 = 0;
CLK->PCKENR1 |= CLK_PCKENR1_UART2|CLK_PCKENR1_TIM4;
CLK->PCKENR2 = 0xFF & 0b01110111;

Вместо первых двух строк можно и должно написать всего одну:

CLK->PCKENR1 = CLK_PCKENR1_UART2 + CLK_PCKENR1_TIM4;

Запись в таком виде компактнее и нагляднее, а конечный результат ровно такой же, как после выполнения двух ваших строк.

Последняя строка в вашем коде вообще какая-то абракадабра. Вы в курсе, что операция логического "И" с числом 0xFF не имеет ровно никакого смысла, т.к. результат будет всегда равен второму операнду. Пример:

0xFF & 0 = 0
0xFF & 1 = 1
0xFF & 2 = 2
0xFF & 0b01110111 = 0b01110111

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

CLK->PCKENR2 = 0b01110111;

без всяких лишних логических операций. А вообще, конечно, лучше писать как нибудь ближе к канону:

#define CLK_PCKENR2_AWU	(1 << 2)
CLK->PCKENR2 = CLK_PCKENR2_AWU;

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

 
ssss
Offline
Зарегистрирован: 01.07.2016

a5021 пишет:

Рассмотрено, как неправильно программировать STM8 c нуля. Точнее, как вообще неправильно программировать.

 

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

a5021
Offline
Зарегистрирован: 07.07.2013

Вам почудилось, что товарища по несчастью обижают?

ssss
Offline
Зарегистрирован: 01.07.2016

Ты снова блеснул своей тупизной... и в норку!

a5021
Offline
Зарегистрирован: 07.07.2013

Вяло и безыскусно набрасываете. Не цепляет.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

a5021 пишет:

Вяло и безыскусно набрасываете. Не цепляет.

эсесовцу Атмел платит, что бы он вызывал рвотные рефлексы у потенциальных покупателей STM.

О_О

myowndevice
Offline
Зарегистрирован: 18.09.2017

Ну с тактирование вы не разобрались. SIMUL не определен. Генератор внешний и делитель 8. Так что все верно.

По поводу первой команды - сначала все очистил, потому что пробовал разные разные варианты, что оставить из периферии. Пробовал все убрать и т.д. Так и осталось.

с &FF, косяк, но не прям УЖАС УЖАС катастрофа, как вы пишите.

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

Вас послушать, так вся программа неверная. Все написано правильно, и работает, потребление тока соответсвует статье. Прямо скажем - придрались.

myowndevice
Offline
Зарегистрирован: 18.09.2017

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

Если вы новичок, рекомендую начинать без дисплея! Здесь же смысл научится платы делать, паять на полезном простом приборе. Не модули соединять, а полноценную схему сделать и т.д.

myowndevice
Offline
Зарегистрирован: 18.09.2017

b707 пишет:

Не хотел влезать, ибо уже все сказал в обсуждении статьи про МК.

Но по себе знаю, как обидно, когда трудился. писал статью - и вообще никакой реакции. Пусть мой отклик будет первым.

Главное. что бросилось в глаза - из сравнения части "Анализ рынка" и возможностей самоделки ясно следует, что по совокупности парметров приборчик не дотягивает даже до дешевых моделей "за 700руб".  Имхо, чтобы прибор стал интересным, советую автору добавить экран с выводом актуальных показаний.  Возможность после поездки посмотреть на телефоне сохраненные данные (весьма куцые) отсутствия экрана никак не компенсирует. Купили бы вы автомобиль, показания спидометра которого можно просмотреть только после поездки, на компе? :)

Ну и по мелочи - на некоторых листингах кода служебные символы HTML. Про запись флеш на СТМ32 написано неверно.

Ну, не уверен, что по возможностям не дотягивает. Только из за дисплея? Не думаю, что это основной элемент велокомпьютера. Раньше, например, велосчетчики крепились на колесо, и их не было видно. Есть велокомпьютеры с креплением на руку, как часы - их тоже всю поездку не видно. Более важно собирать статистику для анализа. Все время смотреть на скорость смысла нет никакого. Ровно первые три поездки смотришь и все. А вот итоги поездки посмотреть - это очень важно и нужно. Тем более, если есть цель какая-то, то ее можно задать - например, ехать все время не ниже 40 км\ч, гораздо удобнее звуком предупреждать, чем смотреть все время.

А дешевые даже каденс считать не умеют, и уж тем более оповещать об этом. Калории не умеют считать, что более важно. А данные по поездкам вообще никто не хранит. И информация вовсе не куцая, а полная я бы сказал. Вы, наверное, путаете велокомпьютер со спидометром!

myowndevice
Offline
Зарегистрирован: 18.09.2017

b707 пишет:

Про запись флеш на СТМ32 написано неверно.

Да перепутал с Nuvoton. Но главное, что такое есть! и это надо иметь ввиду.