Мы хотели сделать "умные часы" (smartwatch), чтобы они показывали уведомления на iPhone, были достаточно малого размера, имели перезаряжаемую батарею, которой бы хватало на один день.
В итоге мы создали свои собственные часы Apple на основе Arduino. Это "умные часы" основанные на Arduino mini pro, которые подключаются к iPhone через Bluetooth, а USB-микро порт подключен к аккумулятору, что упрощает зарядку. На передней панели сенсорные кнопки, которые позволяют взаимодействовать с часами.
Шаг 1: Введение
Часы будут автоматически синхронизировать время с временем на iPhone при получении нового уведомления. Это делает часы более надежными и менее чувствительными к задержкам в Arduino. Через 10 секунд экран будет отключен для экономии заряда батареи. Экран просыпается, если нажата средняя кнопка или если получено новое уведомление.
Проект родился тогда когда мы наткнулись на страницу Люка Брендта и увидели, что он создал то же самое, чего хотели достичь мы, но нам нужно было устройство меньшего размера, которое можно было бы еще и носить. В этом проекте мы использовали библиотеку ANCS Arduino от Люка. ANCS означает службу Apple Notification Center Service, которая описывается Apple так:
«Цель службы центра уведомлений Apple (ANCS) - предоставить Bluetooth-аксессуарам (которые подключаются к устройствам iOS с помощью низкоэнергетической связи Bluetooth) простой и удобный способ доступа ко многим видам уведомлений, которые генерируются на устройствах iOS».
Этот урок для тех, кто знаком с Arduino, пайкой и 3D-печатью. Для создания умных часов потребовалось много часов. Очень трудной задачей было собрать все части, так как хотелось, чтобы гаджет в итоге был меньше и компактнее. Пришлось делать несколько итераций, пока не нашлось достаточно надежного решения сборки.
Шаг 2: Наши комплектующие
Ниже приведены основные компоненты, используемые для часов. Для того чтобы код, который будет на следующих шагах нормально работал нам понадобятся:
- Arduino Pro Mini 328 - 3,3 В / 8 МГц
- Bluefruit LE - Bluetooth Low Energy (BLE 4.0) - nRF8001 Breakout - v1.0
- Монохромный дисплей с диагональю 0,96" 128x64 OLED
- Аккумулятор Li-Po 3.7V 130mAh (или любая другая перезаряжаемая батарея)
- Микро-USB-разъем
- Рзисторы 3 x 1 МОм 1206 SMD
- Ремешок для часов
Также необходимые детали могут отличаться в зависимости от дизайна часов:
- Провода
- Изоляционная лента
- Зарядное устройство для Li-Po аккумулятора
- Кабель USB-Micro
- Алюминиевый лист
- 4 винта 2x5 мм
- Матричная плата
Шаг 3: Подключаем электронику
Как видно на принципиальной схеме, необходимо подключить много проводов и все компоненты должны быть близко друг к другу, что создает проблему.
После нескольких итераций было придуманы эти шаги, чтобы упростить сборку. Предлагаем посмотреть на фотографии, чтобы увидеть, как решены некоторые проблемы с соединительными проводами.
- Подключите Bluefruit LE к Arduino с помощью гибких проводов.
- Создайте панель для сенсорных кнопок и прикрепите контакты. Прикрепите эту плату к Arduino с помощью гибких проводов. (Штифты отрезаны от светодиодов).
- Измените некоторые контакты для OLED-дисплея и соберите его с Arduino.
- Подключите гибкий провод к земле, сделайте это достаточно длинным, чтобы добраться до задней части часов, которые должны быть в контакте с корпусом (это необходимо, так как емкостное прикосновение требует заземления для правильной работы).
- Присоедините разъем микро-USB с помощью гибких проводов к земле и RAW. Посмотрите на схему распиновки микро USB, чтобы узнать, как подключать заземление и положительное напряжение.
Обратите внимание! Подключите положительный провод от USB к RAW, а не VCC. - Прикрепите аккумулятор с помощью гибких проводов к земле и RAW.
Обратите внимание! Подключите положительный провод от аккумулятора к RAW, а не VCC.
Шаги по сборке часов в корпусе могут подождать загрузки кода и проверки правильности работы аппаратного обеспечения.
Кроме того, необходимо настроить зарядное устройство для часов:
- Отрежьте USB-кабель USB.
- Прикрепите красный провод USB-кабеля к красному проводу от разъема аккумулятора и черный провод в кабеле USB к черному проводу от разъема аккумулятора.
Шаг 4: Программное обеспечение
Для часов были использованы следующие библиотеки - см.ниже. Однако некоторые из них нуждались в нескольких модификациях для работы с используемым оборудованием, что будет объяснено ниже.
Библиотеки
- ANCS Library for Arduino (https://github.com/robotastic/ANCS-Library/tree/master)
- Bluetooth low energy SDK for Arduino (https://github.com/NordicSemiconductor/ble-sdk-Arduino)
- U8glib for the screen (https://github.com/olikraus/u8glib)
- Capacitive Sensing Library (https://playground.arduino.cc/Main/CapacitiveSensor?from=Main.CapSense)
Сделанные изменения заключаются в следующем:
1. Библиотека: ANCS Library for Arduino, Файл: notif.cpp, Строка: 826
Нужно сделать это изменение для того, чтобы модуль Bluefruit LE заработал:
aci_state.aci_pins.spi_clock_divider = SPI_CLOCK_DIV8; //SPI_CLOCK_DIV8 = 2MHz SPI speed //SPI_CLOCK_DIV16 = 1MHz SPI speed aci_state.aci_pins.reset_pin = 9; // This was changed to 9 aci_state.aci_pins.active_pin = UNUSED; aci_state.aci_pins.optional_chip_sel_pin = UNUSED;
Чтобы время было правильно синхронизировано, следующие изменения должны быть реализованы для исправления некоторых ошибок в библиотеке.
2. Библиотека ANCS Library for Arduino, Файл: ancs_data_source.cpp
Замените весь код кодом из файла ancs_data_source.cpp по этой ссылке - https://github.com/robotastic/ANCS-Library/issues/14.
Добавьте следующую строку, прокомментированную ниже в файле ancs_data_source.cpp в строке 217:
case ANCS_NOTIFICATION_ATTRIBUTE_DATE: debug_print(F(", Date: ")); // YYYYMMDDTHHMM datetime = (char*)malloc(5); //Add this row! strncpy(datetime, buffer, 4);
3. Библиотека ANCS Library for Arduino, Файл ancs_notification.h
Замените весь код кодом из файла ancs_notification.h по этой ссылке - https://github.com/robotastic/ANCS-Library/issues/14. В Arduino mini pro отсутствует встроенный программер поэтому необходим внешний. Был использован этот: Sparkfun FTDI - https://www.sparkfun.com/products/9873.
Код
Прилагаемый zip-файл ниже содержит код, запущенный на Arduino, и все необходимые библиотеки. Библиотеки изменены, как указано выше. Мы столкнулись с проблемой при попытке скомпилировать код с Arduino IDE 1.8.3 - это связано с известной ошибкой в компиляторе GCC. Мы загрузили и установили Arduino IDE 1.0.6 и смогли скомпилировать и загрузить код.
Скачать Arduino+Apple+Watch.zip
Шаг 5: Корпус для умных часов
Схема корпуса, достаточно большого для хранения всех компонентов, находится в zip-файле на предыдущем шаге. Это stl-файл используемого в этом проекте. Были сделаны две итерации конструкции корпуса, поэтому форма корпуса может отличаться на некоторых изображениях выше.
Задняя крышка сделана из алюминиевого листа какой-то старой коробки. Вырежьте кусок, который подходит для корпуса и просверлите отверстия для винтов. Для корпуса и браслета, используемых в проекте, необходим промежуток между отверстиями. Хорошо, если задняя крышка выполнена из электропроводящего материала, так как провод заземления к корпусу будет подключен к этой задней крышке. Чтобы получить чистые и прямые края на алюминиевом листе, мы держали лист между двумя деревянными частями и использовал пилу по металу.
Напечатанный 3D-корпус нуждался в некотором "лечении":
- Отшлифуйте корпус мелкой наждачной бумагой.
- Нанесите наполнитель из распылителя, убедитесь, что он хорошо покрывает корпус.
- Отшлифуйте корпус с помощью мелкой наждачной бумаги снова.
- Нанесите краску из распылителя, убедитесь, что она хорошо покрывает корпус. Следуйте инструкциям на баллончиках для достижения наилучших результатов.
Шаг 6: Окончательная сборка
Во-первых, вставьте штифты сенсорной кнопки через нижние отверстия в корпусе. Согните их назад и вставьте их в верхние отверстия в корпусе. Надавите на провода, чтобы они были гладкими. Просто надавите на остальные компоненты, постарайтесь сделать так, чтобы экран был расположен в правильном месте. У нас была серьезная проблема при выравнивании экрана в корпусе. Это зависит как от сборки компонентов, так и от конструкции корпуса. По этой причине экран немного повернут.
Нажмите на микро USB через отверстие в боковой части. Мы использовали ленту, чтобы всё сидело хорошо и коннектор оставался на месте. Припаяйте провод «земля-земля» к задней крышке и изолируйте заднюю крышку лентой. Прикрепите заднюю крышку четырьмя винтами.
Шаг 7: Как использовать умные часы
Эти часы просты в использовании. Просто зайдите в настройки Bluetooth на iPhone, включите Bluetooth и найдите устройство под названием «ANSC rusk». Часы и iPhone теперь на связи, а гаджет будет получать те же уведомления, что и iPhone.
Часы можно перезапустить если одновременно нажать среднюю и правую кнопки. Это полезно, если возникает проблема с соединением. Для зарядки аккумулятора просто подключите модифицированный USB кабель и подключите его к зарядному устройству Li-Po.