Как это было Мой отец увлекался электроникой.
Дома был паяльник, провода и куча радиодеталей.
В качестве хобби он легко ремонтировал телевизоры и холодильники.
Я всегда был там.
В 10 лет мне подарили радиоприемник, думаю, у многих он был.
Собрал на нем все схемы, мне понравилось, как они работают. Изучил все основные радиодетали.
Потом мы купили радиоконструктор — «радиоприемник в корпусе».
Пришлось паять, он тоже скоро был готов и работал отлично.
Я продолжал делать небольшие диаграммы.
Доски - лак и стеклянные трубки.
Но потом я заинтересовался программированием.
Освоил C, затем C++.
Окончив университет, он начал работать программистом, чем и занимается по сей день.
Ардуино Когда мой сын подрос, я решил научить и его электронике.
Я взяла свой старый пыльный конструктор и… сын его «выбросил».
Что это за ерунда, зачем мне пищать на разные тона.
Какие-то не интересные схемы.
Я задумался и начал искать, чем можно его заменить.
Знаток и другие дизайнеры в целом были схожи.
И тут я случайно наткнулся на Arduino. Вот что вам нужно.
Электроника и программирование в одном флаконе.
Мы купили плату и начали программировать и изучать электронику.
Выполнив различные задания и накупив кучу датчиков, встал вопрос – что делать дальше.
Мой сын спросил, а что на самом деле можно сделать с Ардуино? Мы провели мозговой штурм и составили список интересных и полезных устройств, которые было бы интересно сделать.
Мы начали думать, как их сделать.
Нашим первым устройством был велокомпьютер.
У нас как раз были велосипеды для всей семьи, поэтому их нужно было оснастить мощным вычислительным центром на микроконтроллере.
Набросали программу на Ардуино, датчики и кнопки, все работало отлично.
Остаётся только собрать всё в коробку и использовать.
Мне хотелось научить сына паять и показать, что при желании можно сделать красивое, компактное, современное устройство самостоятельно, а не покупать его.
Мне пришлось вспомнить свои старые навыки.
Как всё изменилось.
Мои знакомые выходные резисторы были заменены на SMD компоненты.
Очень сложные печатные платы можно изготовить дома с помощью лазерного принтера.
Схемы можно тестировать на симуляторах.
В Интернете много информации, схем и курсов по программированию.
Я начал все это понимать.
Выбор комплектующих для велокомпьютера, схема Все должно быть недорого.
Если он сгорит, не обращайте внимания.
Это первое устройство.
Мы посмотрели, что продается на рынке.
Как правило, все велокомпьютеры крепятся на руле, имеют экран, защищены от дождя и имеют один или два датчика (на руле и на педалях).
Они могут рассчитывать пробег, показывать текущую скорость, каденс (количество оборотов педали), время в пути, сожженные калории и другие показатели.
Решили кран исключить.
Как правило, они либо дороги (в виде готовых плат), либо сложны в пайке (например, экран сотового телефона), и сильно усложняют программу.
У нас уже была практика общения с модулем Bluetooth. Решили использовать его для замены экрана.
В конечном итоге тапом станет смартфон, но мы будем туда редко заглядывать, устройство автономное, а экран понадобится в основном для просмотра результатов поездки или промежуточных данных.
Модуль Bluetooth позволяет программировать прибор на ходу, начинать измерения, организовывать соревнования – все это легко.
Мы решили добавить звук - пищалку, чтобы можно было сигнализировать о разных событиях.
Мне очень понравилась идея, что каденс должен быть не ниже 80, вот об этом и пойдет речь.
Используйте динамик мобильного телефона в качестве твитера:
Батарейки нам изрядно надоели, поэтому мы решили узнать о батарейках.
У нас был небольшой аккумулятор от детского вертолёта - взяли, что потом получилось? Так как его было очень сложно купить, мы поменяли его на LIR2450.
Выбор тела.
Мне понравился этот от Гайнты.
У них очень широкий выбор дел.
Правда, есть минимальная сумма покупки, мы покупали заранее, и для других устройств тоже.
Микроконтроллер конечно же ATMEGA, как на Ардуино.
Сколько это стоит - более 100 рублей в Москве.
Странно, в Китае готовая Ардуино стоит всего 200 рублей.
Решил выбрать замену — Attiny, но она мне не очень понравилась.
Начал копать, и случайно наткнулся на серию stm8, stm8s003f3p, всего 20 рублей, при том, что есть вся периферия.
Большой! Мы сделаем это на этом.
Правда, среда другая, но есть тот C, который я знал.
Также плюсом было наличие нормального отладчика, чего очень не хватало Ардуино! Выбор схемы зарядки li-ion. Довольно быстро мне подошла микросхема TP4056 - 10 рублей, хотя в Китае заказываем десяток - пригодятся.
Плата защиты от переразряда встроена в аккумулятор - поэтому она не нужна.
Но в принципе у STM8 порог переключения 3В, поэтому особой необходимости в платах защиты нет. Всё – схема готова, компоненты подобраны.
Мне нужен программатор ST-link, я купил готовый в Москве, который потом оказался дорогим, ну да ладно.
Наша первая схема:
Делаем плату и все припаиваем, устройство готово.
Они произвели оплату.
Метод ЛУТ не сработал.
Мы нашли новый метод – холодный перенос тонера с помощью ацетона.
В результате получилась отличная плата, хотя, конечно, с небольшими недостатками; Позднее метод был усовершенствован.
Мы используем его до сих пор.
Доска готова.
Ждем микросхемы из Китая (у нас купить TP4056 не представляется возможным).
Все прибыло.
Начинаем паять и видим, что при разводке микросхемы зарядки мы выбрали не тот корпус, названия SO8, MSOP8 очень похожи! Но плата уже готова, переделывать лень, учтем во второй версии! Функцию зарядки убираем и выносим на отдельную плату.
Соединяем все проводкой как надо.
Собираем все в корпус - обоих крепёжных отверстий нет. Ладно, не проблема, крепим вверх дном и прокладываем поролоном.
Прикрепляем кнопку - не застегивается.
Залейте его горячим клеем, и он отвалится.
В результате делаем следующее:
На будущее лучше бы кнопку сразу на плате сделать! Прикрепляем твитер - проводов много, все мешается, но работает.
Перейдем к программированию Чтобы облегчить работу сына, мне пришлось прочитать небольшую лекцию о том, как заменить одну функцию на другую:
- digitalWrite = GPIO_WriteHigh
- digitalRead = GPIO_ReadInputPin
- pinMode = GPIO_Init
- Задержка - написано нами самими
- millis() — не нужен, перешёл на миллисекундный таймер и прерывания, очень удобно.
Таймеры, кнопки, все через прерывания.
Мы написали тестовую программу и перешли к тестированию.
Первая строка кода — включение модуля Bluetooth. И тут мы получаем кризис «мозга».
Сколько времени было потрачено на решение проблемы.
Включаем модуль блютуз и.
МК перезагружается.
Что не так, все работает, конденсаторы на месте, модуль потребляет 30 мА, но не работает. После 2 недель мучительных проверок, тестов и различных советов на форумах причина была найдена.
На плате модуля Bluetooth имеются конденсаторы; при быстром включении модуля они заряжаются, внезапно проседает питание МК и он перегружается.
В итоге ограничиваем линию питания модуля через резистор сопротивлением 10 Ом (подбирали экспериментально) - всё работает нормально.
Правильнее было бы запитать модуль от отдельного LDO. Первая тестовая мини-программа готова — сигналим, рассчитываем скорость и отправляем на телефон.
Включаем - писк еле слышен.
Оказалось, что наш блок питания не 5В и поэтому тихий.
Добавляем транзистор на отдельную мини-платку - отлично - громко слышно.
Прикручиваем его на велосипед, планируем закрепить на руле, припаяли длинные провода, сделали из ручки два датчика и залили термоклеем.
Мы попробовали, и оказалось, что его проще установить на заднюю вилку.
Провода собрали и подключили — не нужно.
В качестве магнита используйте детский конструктор.
Итак, начнем.
Вместо одной революции - тысячи.
Какая ерунда.
Разбираемся, ага, дребезг контактов, ставим задержки - отлично работает. Проверяем соответствие скорости GPS на телефоне.
Начнем экономить электроэнергию.
Устройство должно спать очень долго и работать экономично.
Эсохранение энергии.
Основная цель – устройство должно работать очень долго на одном заряде.
Переключателя нет, будем использовать спящий режим.
Устройство должно включиться само, внешние прерывания от геркона, выключиться самостоятельно, если нет движения в течение 2 минут, то выключиться.
А самое главное, он должен сам собирать статистику поездок и хранить ее в памяти.
Вы долго думали о том, как определить, что такое одна поездка? И решили, что если в течение 3 часов не будет пробок, значит, поездка окончена и велосипед дома.
Чтобы не работать в полном режиме 3 часа было решено использовать спящий режим с таймером автопробуждения.
Таймер можно установить максимум на 30 секунд, поэтому просыпаемся каждые 30 секунд, уменьшаем счетчик и так до тех пор, пока не пройдет 3 часа.
Как все прошло – поездка окончена, записываем данные.
Отладить этот алгоритм было непросто; компилятор каждый раз пытался вмешаться в оптимизацию кода.
Но в итоге все получилось.
По теоретическим расчетам аппарат должен спать больше года, МК в спящем режиме 4 мк, если все отключить - отлично.
Программируем спящий режим и проверяем его.
Спит 3 недели и садится батарея.
Вместо 4мка откуда-то у нас больше 200мка.
Проверяем все еще раз и видим, что LDO потребляет 200 мк в пассивном режиме!!! Найденный.
Надо менять схему! Мы продолжаем тестирование дальше.
Дополнительные функции В отличие от велокомпьютеров, которые есть на рынке, мы решили добавить функциональность.
Наше устройство должно уметь:
- вести статистику за последние 4 поездки и хранить все это в энергонезависимой памяти
- считайте калории только тогда, когда крутятся педали
- подсчитайте активное время движения при скорости более 4 км/ч
- иметь возможность контролировать скорость и ритм, а в случае нарушения выбранного режима оповещать звуком
- программируется через bluetooth: очистка памяти, отображение информации о прошлых поездках, настройка параметров - вес, диаметр колеса, параметры контроля скорости
- учитывайте не среднюю скорость, а ту скорость, с которой вы ехали большую часть времени.
Это необходимо, например, для случая, когда вы едете час, затем отдыхаете 30 минут, затем снова едете, снова стоите 5 минут. Всегда была разная скорость.
В гору ехали 5 минут, под гору 10 секунд. В результате средняя скорость будет вообще не показательна.
Но скорость, с которой мы ехали дольше всего, — это то, что нам нужно.
Задача непростая, но интересная — работа с массивами и условиями.
При очередной новой функции получаем сообщение — закончилась память программы.
МК имеет всего 8 кбайт. Жаль, что ты можешь сделать? Начинаем анализировать лог, куда все шло, и видим, что в стандартной библиотеке есть режим отладки и он включен, выключаем его - получаем дополнительно 2кб памяти.
Теперь этого достаточно.
В итоге все функции влезли, и осталось еще немного.
Отдельно стоит поговорить о самом микроконтроллере STM8. Все это время он проявлял себя просто великолепно.
По ошибке они ему ничего не сделали.
И питание было подано плюс на минус - живо, а HIGH подано на ноги, с замыканием на массу тоже живо.
В целом довольно надежный микроконтроллер.
Мне очень понравилось работать в отладчике.
Почти как на компьютере.
Симулятор помогал отлаживать сложные функции, к тому же это было удобно.
В целом за эту цену микроконтроллер просто отличный.
Еще есть версия с флэшкой 32к на борту, за 60 рублей, вообще супер.
Окончательный вариант Сын очень доволен, аппарат работает как положено! Мы устраиваем забеги, катаемся с ним все лето, оказывается, за одну прогулку мы прошли более 14 км, раньше об этом не задумывались.
По функциям аппарат оказался лучше покупного, только жаль, что нет экрана! Но буквально через месяц использования забываешь об экране, изредка смотришь статистику, об остальном аппарат сам уведомляет. Функция контроля частоты вращения педалей отлично работает и помогает выбрать нужный скоростной режим.
Для остальных членов семьи делаем новую схему и переделываем плату.
Учитываем ошибки:
- заменить твитер на более громкий HC0903A
- уберите LDO из МК, оставьте для блютуса, для сопряжения простой резисторный делитель
- Добавьте USB-разъем — это сделает зарядку более удобной.
- Добавляем угловую кнопку прямо на плату - лишних проводов нет
- Один геркон убрали в корпус, а второй, для педалей, оставили на проводе, разъем убрали - проводов почти полное отсутствие.
Мы очень довольны проектом.
Оказалось, что от макета на Ардуино до конечного продукта — это как переплыть океан, даже с таким простым устройством.
Никто не ожидал столкнуться с таким количеством мелких недостатков.
Но на практике мы проверили, что перейти на другой класс микроконтроллеров не так уж и сложно; они оказались очень похожи друг на друга.
Жаль, что smt8 не встречается чаще.
Но, если писать простую программу, то стандартной библиотеки от ST достаточно; все драйвера есть - UART, I2C, SPI, ADC, EEPROM. Подведем итоги.
Настоящее устройство готово, оно полезно, оно до сих пор работает. Меня полностью устраивает новый вариант. Сын показал всем своим друзьям - он просто молодец.
Желаем вам того же! Если вы все еще тестируете возможности вашего Arduino, подумайте, какое устройство вам нужно и которое вы хотите купить — и сделайте его сами! Вы получите массу удовольствия и опыта.
Если вас интересует изготовление такого же велокомпьютера, то вся информация по проекту находится на сайте.
github .
Единственное, что я очень рекомендую, так это написать прошивку самому, чтобы заработать опыт! Изготовив это устройство, вы научитесь:
- Маршрутные платы в Kicad
- Изготовление досок в домашних условиях
- Пайка smd компонентов
- Программные микроконтроллеры
-
Социальный Тренд #07
19 Oct, 24 -
Yahoo Задерживает Панаму
19 Oct, 24 -
Найм Людей Для Devops И Других Плохих Идей
19 Oct, 24