Это браслет умеет показывать точное время, отслеживает движение руки по 3 осям, может измерять пульс с отображением мини-графика на дисплее. В дальнейшем к этим функциям мастер планирует добавить и ряд других.
Перед сборкой браслета мастер сначала собирает и тестирует работу устройства на макетной плате.
Инструменты и материалы:
-Модуль ESP — 12 f ESP8266 с поддержкой Wi-Fi;
-Дисплей;
-Модуль MPU6050 (акселерометр, гироскоп);
-Микровибромотор;
-Регулятор 3,3 В;
-Аккумулятор 100mAh;
-Двусторонний скотч;
-Датчик частоты пульса;
-Разъемы;
-Провода;
-Конвертер USB в TTL;
— Arduino Nano V3.0;
-USB-разъем;
-Макетная плата;
-Паяльная станция;
-Листы из пенополистирола;
Шаг первый: подключение дисплея
В своей сборке мастер использовал 0,91-дюймовый OLED-дисплей с 4 контактами. Этот дисплей использует интерфейс I2C, и можно его использовать всего с 2 проводами, кроме питания (VCC и земля). Интерфейс обозначен в модуле OLED как GND, VCC, SCL и SDA. SCL — это последовательные часы, а SDA — это последовательные данные.
Другой особенностью дисплея является то, что он имеет 128 пикселей по горизонтали и 32 пикселя по вертикали, что дает в общей сложности 4096 пикселей, и на нем можно отображать различный текст, изображения и другую графику.
Подключается дисплей следующим образом: подключите SCL дисплея к D1, а SDA дисплея к D2. D1 и D2 являются выводами I2C по умолчанию для NodeMCU, а для питания дисплея подключите VCC и GND модуля к 3,3 В и заземлению nodeMCU.
Шаг второй: тестирование дисплея
Сначала настройте IDE Arduino для NodeMCU.
Чтобы проверить, работает ли OLED-дисплей, перейдите в среду разработки Arduino и загрузите библиотеку Adafruit SSD1306 из диспетчера библиотек.
[Перейдите в Sketch -> include library -> ManageLibrary -> Adafruit SSD1306 ]
Теперь откройте пример и выберите SSD1306_128X32_I2C.
Никаких модификаций кода не требуется. Просто скомпилируйте и загрузите код, на дисплее должен отобразиться демонстрационный эскиз с графикой, анимацией и текстом. Если не работает, проверьте соединение и попробуйте еще раз.
Используйте эту ссылку для получения дополнительной информации об OLED-дисплее.
Шаг третий: датчик пульса
Следующим компонентом будет датчик пульса.
Предположительно, этот датчик должен быть простым в использовании, но мастеру потребовалось несколько дней, чтобы заставить его работать должным образом. Одна из причин заключалась в том, что нужно было найти определенное положение чтобы он правильно работал.
В любом случае сначала посмотрим на датчик пульса. Это аналоговый оптический датчик на 3,3 В, который выводит значение в диапазоне 0–3,3 В (убедитесь, что вы не подключили VCC к 5 В, иначе показания будут неправильными). У нас есть один 10-битный аналоговый вывод на нашей плате NodeMCU, который может считывать этот диапазон напряжения и выдает выходной сигнал от 0 до 1023, который позже можно использовать для проверки импульса.
Подключается датчик следующим образом: подключите вывод S импульсного датчика к A0 NodeMCU, подключите VCC к 3,3 В, а GND датчика к заземлению NodeMCU.
Шаг четвертый: тестирование датчика пульса
Для тестирования нужно сделать быстрый и простой тест с помощью последовательного плоттера.
Перейдите в среду разработки Arduino и выполните простое аналоговое считывание с помощью функции analogRead (A0). Отобразите его на последовательном мониторе с помощью функции serial.print ().
void setup()
{
Serial.begin(115200);
Serial.println("Started!");
}
void loop()
{
Serial.println(analogRead(A0));
delay(10);
}
Как только вы загрузите код, откройте последовательный плоттер [ярлык: нажмите Shift + Ctrl + L]. Здесь можно увидеть аналоговые данные датчика в графическом формате. Приложив палец к датчику, можно увидеть,
Используйте эту ссылку для получения дополнительной информации о датчике пульса.
Шаг пятый: подключение MPU6050
Модуль MPU6050 — это 3-х осевой гироскоп и акселерометр.
Для этой сборки мастер использую MPU6050, который представляет собой датчик MEMS (микро электромеханические системы) с 6 степенями свободы. Это означает, что он может измерять ускорение тела, когда датчик расположен по 3-м осям, и ориентацию тела по 3-м осям. Этот IMU (Инерциальные измерительные модули) очень популярен и его легко найти, поэтому он и был использован в этой сборке. Есть и другие подобные IMU, которые можно использовать, например, MPU9250, BMI270 и т. д.
Интерфейс этого IMU также похож на OLED-дисплей, который подключали ранее, просто подключите выводы SDA и SCL MPU к D2 и D1 nodeMCU, затем подключите VCC и GND к 3,3 В и GND на NodeMCU.
Но что, если нужно будет подключить к нему OLED-дисплей? В этом и есть достоинство интерфейса I2C: с помощью этого протокола связи, имеющего всего 2 провода (помимо источника питания), вы можете подключить до 128 аналогичных датчиков или модулей, поддерживающих I2C.
Шаг шестой: тестирование MPU6050
Для тестирования MPU6050 с NodeMCU будет использоваться библиотека Adafruit MPU6050.
Переходим в среду разработки Arduino и загружаем библиотеку Adafruit SSD1306 из диспетчера библиотек.
[Перейдите в Sketch -> include library -> ManageLibrary -> Adafruit MPU6050 ]
Открываем примеры, выполняем поиск и выбираем пример плоттера.
С помощью этого файла-примера мы можем визуализировать, как данные датчика меняются при различных движениях. Переходя к осям XY, XZ или YZ, мы получаем изменение данных об ускорении, ориентации, данные гироскопа.
Используйте эту ссылку для получения дополнительной информации о MPU6050.
На данный момент были протестированы все компоненты по отдельности и все работают отлично. Теперь можно приступать к сборке и проверке устройства на макетной плате.
Шаг седьмой: подключение всех компонентов
Поскольку мы знаем, как использовать все компоненты, давайте начнем сборку с простого — датчика пульса. Подключите вывод S импульсного датчика к A0 nodeMCU и подключите + и — к 3,3 В и заземлению NodeMCU.
Теперь подключите 0,91-дюймовый OLED-дисплей, где SCL и SDA OLED-дисплея подключены к D1 и D2 nodeMCU, а в качестве последнего компонента подключите MPU6050 к NodeMCU к шине I2C, где дисплей уже подключен.
Чтобы сделать простой тест, можно включить nodeMCU. Светодиод на MPU6050 и светодиод импульсного датчика должны загореться одновременно.
Шаг восьмой: ПО и код
В процессе работы мастер использует программу VScode с расширением Platform.io.
Перейдите на сайт code.visualstudio.com и загрузите стабильную версию для своей операционной системы. После завершения загрузки установите установочный файл, как любую другую обычную программу.
Затем откройте приложение Vscode и установите расширение platform.io из магазина. После установки расширения перезапустите VScode. Когда окно перезапустится, у него будет новый значок в левой части окна (выглядит как муравей). Щелкните значок «муравей» и нажмите «Открыть». Теперь перейдите в папку проекта, которую можно загрузить ниже или загрузить из репозитория GitHub.
Fitness_Watch_Code.rar
Чтобы упростить перенос на IDE Arduino, мастер использовал все библиотеки, совместимые с IDE Arduino, вместо загрузки версии platfrom.io внутри VScdoe. Поэтому нужно сначала установить все библиотеки в свою Arduino IDE.
ESP-Core — от Ivan Grokhotkov
TimeLib — автор PaulStoffregen
EmailSender — от Xreef
Adafruit 6050 — от Adafruit
Wifi Manager — автор Tzapu
OLED — от ThingPulse
Проверьте репозиторий Fitness_Watch на Github, чтобы найти все ссылки на эти библиотеки.
После открытия проекта в редакторе VScode, откройте файл platform.ini. Именно здесь platform.io распознает библиотеки, скорость последовательной связи, структуру и плату, которую мы используем. Для компиляции требуется лишь незначительное изменение кода, просто измените путь к внешней библиотеке на ваш текущий путь к существующей библиотеке Arduino.
lib_extra_dir : "Arduino Library path"
После этого изменения просто скомпилируйте код, нажав галочку в нижнем инструменте окна VScode. Ошибки быть не должно. После успешной компиляции просто загрузите код в NodeMCU. Не нужно беспокоиться о том, к какому порту подключен nodeMCU на вашем ПК, platform.io автоматически обнаружит и загрузит код без каких-либо проблем.
Шаг девятый: настройки WiFi
При первом включении дисплей будет пустым, потому что нужно указать NodeMCU, к какой сети Wi-Fi он должен подключиться, чтобы синхронизировать время.
Если на дисплее ничего не отображается при первой загрузке, NodeMCU создает точку доступа с именем Enter Credentials. Просто подключитесь к этой точке доступа с помощью телефона / ПК / ноутбука. После подключения к точке доступа автоматически откроется страница входа с просьбой ввести SSID Wi-Fi и пароль, к которому вы хотите подключиться. Просто введите учетные данные своей точки доступа, к которой вы хотите подключить часы.
После сохранения устройство автоматически перезагрузится и покажет текущее время. Это всего лишь разовая настройка, учетные данные точки доступа будут сохранены во флэш-памяти NodeMCU, которую мы получим при следующей загрузке.
Шаг одиннадцатый: тестирование прототипа
Теперь посмотрим, насколько хорошо эти разные компоненты работают вместе. После включения nodeMCU можно увидеть точное время с изменением секунд. Так что часы работают отлично.
Теперь, чтобы сначала проверить датчик пульса, нужно перейти к экрану BPM, для этого просто нажмите кнопку flash на nodeMCU. Этот действие также подтверждает, что навигация и нажатие кнопок работают нормально. Как только мы перейдем на экране BPM, просто поместите датчик пульса на свой палец. На OLED-дисплеи, данные датчика пульса отображаются в виде графика на дисплее, а также отображаются удары в минуту или BPM. Итак, мы знаем, что датчик пульса работает без проблем.
Наконец, чтобы протестировать MPU, просто дайте устройству немного отдохнуть, примерно через 15 секунд дисплей выключится. Теперь просто щелкните или встряхните макетную плату, и дисплей должен снова включиться, и показывать время.
Из всех этих тестов мы знаем, что все компоненты оборудования работают нормально и можно переходить к сборке браслета.
Шаг двенадцатый: подготовка платы
Собираться все будет на плате 3,6 см на 5 см. Сначала мастер делает прорези на противоположных сторонах платы. Они нужны для крепления ремешка.
Затем скругляет острые углы.
Когда печатная плата будет готова, нужно разместить на ней компоненты и спаять их вместе.
Посмотрите на распиновку NodeMCU и esp12E для понимания как разместить детали на плате.
Схему можно загрузить ниже.
Принципиальная схема (фитнес-часы) .pdf
Небольшой вибрирующий (тактильный) двигатель используется для обеспечения физической обратной связи при обнаружении запрограммированного пользователем движения. Просто поместите его рядом с 12E и припаяйте один контакт тактильного контакта к GPIO14 на 12E, а другой контакт к земле (не имеет значения, какой контакт куда подключен, поскольку вибрационный двигатель не имеет полярности).
Теперь добавьте регулятор AMS1117 3,3 В и припаяйте контакты в соответствии с подключением на принципиальной схеме. После регулятора закрепите аккумулятор 180 мАч с на двусторонний скотч. TP4056 будет использоваться для внешней зарядки этой батареи.
Для включения и выключения устройства в цепь между батареей и регулятором напряжения устанавливает выключатель питания. Конечно в таком устройстве выключатель не совсем правильно, но это нужно для экономии заряда батареи.
После пайки переключателя поместите MPU6050 поверх переключателя питания и припаяйте контакты SCL и SDA IMU к GPIO5 и GPIO4 ESP12E соответственно. Теперь для дисплея выполните тот же процесс, что и для IMU. Припаяйте OLED-дисплей к контактам батареи и подключите к той же шине I2C ESP12E, к которой подключен IMU.
Шаг тринадцатый: программирование Esp
ESP-12E не поставляется со встроенным программатором, поэтому нужно использовать внешний программатор, такой как модуль FDTI. Мастер сделал адаптер с несколькими проводами и разъемами. Можно временно припаять esp12E и запрограммировать его с помощью модуля FTDI.
Подключите GND [esp12E] к GND.
Rx [esp12E] к Tx,
Tx [esp12E] к Rx
GPIO15 [esp12E] к GND
GPIO0 [esp12E] к GND
VCC [esp12E] к VCC модуля FDTI.
Убедитесь, что при подключении его к компьютеру кнопка программирования постоянно нажата. Это переведет 12E в режим flash, в котором мы сможем загрузить программу. Просто скомпилируйте и загрузите код, как это делалось при сборке на макетной плате.
Шаг четырнадцатый: ремешок
Чтобы сделать их полностью функциональными, как настоящие часы, мастер добавляю липучку, которая будет служить ремешком для этих часов.
Так же закрепляет датчик пульса на ремешке. Подключает контакт S к A0, используя схему делителя напряжения (поскольку ESP12E считывает значение между 0-1 В). Затем подключите контакты + и — к VCC и GND регулятора 3,3 В. Как было сказано ранее, этот датчик пульса не так точен и не очень удобен, если вы делаете часы для фитнеса. Показания этого датчика будут сильно зависеть от того, где вы разместите датчик на своем теле. В дальнейшем мастер планирует заменить его на другой, более точный датчик.
Чтобы устройство не натирало руку к его задней части он приклеивает кусочек пены.
Шаг пятнадцатый: печатная плата
устройство готово, но мастер также разработал печатную плату для него. С печатной платой оно выглядит более профессионально.
Поскольку это печатная плата, мастеру удалось добавить несколько функций.
Добавлена поддержка более эффективного регулятора напряжения.
Поддержка Micro USB
Добавлена встроенная схема зарядного устройства TP4056
Светодиодный индикатор зарядки
Слот программирования для FDTI
Но есть и недостаток, большинство компонентов имеют SMD формат, и для пайки может потребоваться немного больше опыта.
Примечание: мастер еще не получил свою печатную плату и естественно не протестировал ее.
Фитнес-часы gerber.rar
Шаг шестнадцатый: вывод
В целом все работает хорошо кроме датчика пульса. Мастер предлагает вместо него использовать один из датчиков от Spark Fun. Он использует протокол I2C и его можно подключить его к той же линии, с небольшими изменениями кода.
Несмотря на то, что у часов так много функций, ещё не использован весь их потенциал. В дальнейшем мастер планирует заменить датчик частоты сердечных сокращений на более совершенный и использовать функции Wi-Fi и функции обнаружения движения часов, чтобы создать систему домашней автоматизации, управляемую жестами руки.
Весь процесс по сборке такого браслета можно посмотреть на видео.
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Источник: