Оглавление:

Часы с 4 стрелками "Уизли": 11 шагов (с изображениями)
Часы с 4 стрелками "Уизли": 11 шагов (с изображениями)

Видео: Часы с 4 стрелками "Уизли": 11 шагов (с изображениями)

Видео: Часы с 4 стрелками
Видео: "Гарри Поттер и Узник Азкабана" . Глава - 6 2024, Июль
Anonim
Часы с 4 стрелками 'Weasley'
Часы с 4 стрелками 'Weasley'

Итак, с Raspberry Pi, который был популярным в течение некоторого времени, я хотел найти хороший проект, который позволил бы мне наилучшим образом использовать его. Я наткнулся на эти замечательные обучаемые часы Weasley Location Clock от ppeters0502 и подумал, что было бы неплохо попробовать.

Часы в основном состоят из Raspberry Pi, который управляет сервоприводами, чтобы поворачивать стрелки часов. Как и в доме семьи Уизли в книгах / фильмах о Гарри Поттере, у каждого члена семьи есть своя рука. Каждая рука указывает на текущее местонахождение этого члена семьи. Часы достигают этого, получая сообщения от мобильных телефонов семьи, когда они входят или выходят из заранее определенного радиуса.

Основные отличия от предыдущего Instructable заключались в том, что мне нужно было иметь 4 руки, а не 2 (иначе мои дочери жаловались бы), и я решил также построить рамку, а не брать старые часы для повторного использования. Это было связано с тем, что я был обеспокоен тем, что в существующем корпусе часов возникнет проблема с пространством из-за необходимости разместить 4 сервопривода и т. Д.

Это заняло намного больше времени, чем я ожидал, хотя в основном я сталкивался с неприятными проблемами, которые ставили меня в тупик и которые, похоже, не были затронуты в исходном сообщении. Ничего против оригинального Instructable, который в целом был великолепен, но прошло несколько лет, и версии вещей изменились… и т.д. Кроме того, пребывание в Великобритании означало, что некоторые из имперских / метрических элементов вызвали больше проблем, чем я ожидал.

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

В конце я включу раздел «Что я бы сделал по-другому / лучше, если бы делал это снова…»

Запасы:

Одна из вещей, которая поразила меня, заключалась в том, что дорогие компоненты были связаны с стрелками часов. 4 руки определенно дороже, чем 2. Я решил внести некоторые расчеты, чтобы вы имели некоторое представление. Я впервые складываю все это, и, не считая инструментов, я думаю, что потратил около 200 фунтов стерлингов. Плюс кое-что, что я не использовал (и не включил ниже), плюс Pi, плюс блок питания, которые у меня уже были.

Пи и т. Д

  1. Raspberry Pi - не могу вспомнить, сколько он изначально стоил, но это была модель 2B. Я думаю, что если у вас его еще нет, то, вероятно, подойдет даже Pi Zero. Я добавил ключ Wi-Fi и SD-карту с Raspbian. А у меня валялось старое зарядное устройство для телефона Android.
  2. Сервохат Adafruit для Pi - 16 фунтов стерлингов.
  3. Источник питания для сервохата - мне очень трудно было его найти, поскольку все веб-сайты просто указывали на сайт adafruit, который, очевидно, рекомендует источник питания для США. Затем я понял, что у меня есть старый источник переменного напряжения со сменными наконечниками, и я использовал его. Но американский стоит 8 долларов, так что это ориентировочно.
  4. Чехол для Pi, чтобы я мог прикрепить его к корпусу часов. 5 фунтов стерлингов

Сервоприводы и шестерни

Здесь я цитирую цену для всех 4, поэтому разделите, если вы хотите меньше рук (сложив это ~ 40 фунтов стерлингов за руку = 160 фунтов стерлингов: -o

  1. 4 сервопривода - я использовал рекомендованные ppeters0502 - нашел на ebay по цене ~ 15 фунтов стерлингов каждый = 60 фунтов стерлингов - я искал следующий текст «GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360 градусов. "но иногда они были недоступны
  2. 4 латунных трубки, которые точно подогнаны друг к другу - ~ 3 фунта каждая. Я получил по 1 штуке 1/4 ", 7/32", 3/16 ", 5/32" = 11 фунтов стерлингов.
  3. 4 зажима, которые зажимают латунные трубки, чтобы вы могли прикрепить шестерни. ~ 7 фунтов стерлингов = 28 фунтов стерлингов. Я получил их от ActiveRobots, которые делают регулярные заказы от Servocity в США, что позволяет избежать международной доставки. Они также могут получить все, что вы найдете на главном сайте Servocity в США. Это было очень удобно для следующих 2 предметов.
  4. 4 шестерни из ацетила 0,770 дюйма для установки на зажимные ступицы. ~ 6 фунтов стерлингов каждая = 24 фунта стерлингов
  5. 4 ацетиловых шлицевых ацетиловых шестерни для установки на сервоприводы. ~ 6,50 £ каждый = 26 £
  6. 1 пакет шестигранных гаек к прикрепленным шестерням к зажимным гайкам = 2,60 фунта стерлингов
  7. 1 x 7/64 "шестигранный ключ (шестигранный ключ), потому что все, что приходит из США, является имперским, поэтому сотни шестигранных ключей, которые у меня уже есть, бесполезны = 1 фунт стерлингов

Для физического строения

Здесь я в основном использовал обрезки того, о чем соврал

  1. 2 квадрата фанеры для «лицевой» и «спинной» пластины
  2. Затем я вырезал цилиндры 4х10 см от старых перил, которые у меня были, чтобы соединить спину с лицом.
  3. Некоторые блоки для установки сервоприводов с правильным смещением - только обрезки мягкой древесины, которые я обрезал по размеру.
  4. Ассорти из винтов. от очень маленького (чтобы прикрепить корпус Pi к раме) до среднего (чтобы скрепить раму вместе)
  5. Лист мягкой стали толщиной 0,75 мм размером примерно 50 см на 20 см (чтобы вырезать руки). Это была единственная вещь, которую я купил ~ 9 фунтов стерлингов у Викса.

Инструменты

Некоторые вещи у меня были, а некоторые я одолжил или купил

  1. Паяльник + электрический припой - для крепления разъемов к Adafruit Hat & Pi.
  2. Лобзик - для вырезания черновой формы рук
  3. Дрель. просто обычная аккумуляторная дрель 18В
  4. Сверла - имейте в виду, что вам понадобятся сверла с имперскими сверлами, чтобы сделать отверстия, соответствующие латунным трубкам. Мне удалось одолжить.
  5. ножовка - для резки латунных трубок. Не делайте того, что сделал я, и не тратьте 3 фунта стерлингов на резак для труб, он работает под давлением, и внутренняя часть трубок становится немного меньше. так что труба следующего размера не проходит через
  6. Настольный шлифовальный станок - у меня не было такого, но у друга был, и он НАМНОГО упростил формирование рук. До этого я просто использовал файлы. Я бы не стал покупать его только для этого проекта, но для металлических рук это было здорово.
  7. Я купил несколько разных алмазных напильников (очень маленьких). полезен для рук и трубок около 15 фунтов стерлингов
  8. грубая и гладкая наждачная бумага
  9. некоторые маленькие зажимы удерживают предметы на месте при сверлении.
  10. тиски по той же причине.

Шаг 1: Настройка ваших телефонов для отправки их местоположения на ваш Pi (часть I MQTT-брокер)

Этот бит очень хорошо описан ppeters0502 в его превосходном «Учебном пособии по часам Уизли». Как ни странно, хотя, возможно, отражая разные наборы навыков, он начал со сборки, а затем перешел к программному обеспечению, я сделал это наоборот. Итак, я начал с телефона … подождите, нет, я не начал, я начал с брокера MQTT, который является Шагом 6 в его Instructable. Я опущу все части, которые он делает очень хорошо, и просто добавлю некоторые части, которые я мог бы добавить. Я пошел по маршруту CloudMQTT, о котором он упомянул.

НО пока я писал это, я проверил ссылку на планы и обнаружил, что бесплатного плана больше нет! Они отозвали его по вполне разумным причинам. то есть люди установят бесплатный экземпляр и никогда не будут его использовать. Я не заметил, потому что текущие экземпляры могут продолжаться. Так что я не изменюсь. Но это делает инструкции немного избыточными. Вроде есть 3 варианта.

  1. Платите 5 долларов в месяц за Cloud MQTT (но это звучит слишком дорого для часов на постоянной основе).
  2. Двигайтесь по Mosquitto по маршруту Пи, как описано в первом Руководстве. Я не могу это комментировать, но это может быть хорошим вариантом.
  3. Просто погуглите «бесплатный облачный брокер MQTT», и похоже, что есть и другие.

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

Шаг 2: Настройка ваших телефонов для отправки их местоположения на ваш Pi (Часть II Owntracks)

Это также очень хорошо описано в оригинальном Instructable, в шагах 7 (Android), 8 (iOS) и 9 (настройка регионов).

У меня были только устройства iOS, поэтому не пробовал шаг 7.

Что бы я добавил к этим инструкциям?

  1. В настройке также есть поля TrackerID и DeviceID. Они должны быть у вас, чтобы идентифицировать вас в вашей семье. Например. У меня они были как R и RPhone соответственно. Это означает, что вы можете указать часам, какой сервопривод и, следовательно, какую стрелку повернуть.
  2. Регионы - это названия мест, которые вы хотите отслеживать.
  3. Каждый регион определяется именем, широтой, долготой и радиусом.
  4. Поскольку я хотел иметь несколько мест в одном разделе моих часов, я использовал соглашение об именах, которое оказалось очень полезным. Возможны и другие методы, но у меня это сработало.

    • Например, для раздела часов СЕМЬЯ я хотел, чтобы мои родители, братья и сестры, а также родители и братья и сестры моей жены. Поэтому у меня были такие локации, как «Семейный Том», «Семейный член», «Семья Гарри» и «Семейные родители». Это означало, что на следующем этапе можно было знать, что передать часам.
    • Имейте в виду, что у людей может быть разное местоположение. Но пока они соответствуют соглашению об именах, это нормально. Например. моя работа будет отличаться от региона работы моей жены и называться по-другому. но пока они оба начинают «Работать», все в порядке.
  5. Вы хотите установить режим «Существенный» на экране «Карты». Это означает, что вы (в основном) получаете сообщения только при въезде в регион или выходе из него. Похоже, это обновленная версия примечания, помеченного ВАЖНО: в конце шага 8 в исходной инструкции.
  6. Как упоминалось в оригинальной инструкции, использование Google Maps - отличный способ узнать широту / долготу где-то. Я обнаружил, что более эффективно делать это массово, узнавая все широты и долготы моего местоположения, затем я вставлял их в заметки (на моем Mac), и с облачной синхронизацией это означало, что они волшебным образом появились на моем iPhone в Notes, и я мог скопировать / вставить их в Owntracks. Это также означало, что я мог отправить файл на телефоны моей семьи, и у всех нас было одинаковое местоположение.
  7. Близкое расположение может вызвать проблемы. Мой брат живет в двух улицах отсюда, и сначала мой телефон все время думал, что я одновременно нахожусь в районе его дома и дома. В конце концов мне пришлось добавить в Node Red дополнительную логику, чтобы улавливать и игнорировать это.

Шаг 3: Настройка Raspberry Pi

Настройка Raspberry Pi
Настройка Raspberry Pi

Итак, я предполагаю, что у вас настроен базовый Pi и подключен Wi-Fi. Я использовал Raspbian, но это не имело значения. Используйте инструкции на raspberrypi.org, чтобы все это настроить.

Обратите внимание, что у Pi есть порты для отображения на мониторе и клавиатуре / мыши и т. Д. НО, очевидно, когда у вас есть часы, вы не хотите ничего из этого. Итак, ответ, предложенный кем-то на веб-сайте Raspberry pi, я думаю, заключался в установке соединения VNC. Это позволяет вам подключаться к Pi с другого устройства, а также управлять им. Я делаю это со своего Mac, но также делал это с iPad. Я бы посоветовал использовать что-нибудь с клавиатурой для простоты использования.

Я только что обнаружил, что с тех пор, как я подключился, они, кажется, упростили задачу… см. Здесь

По сути, вы подключаетесь и получаете окно, которое является стандартным интерфейсом Pi.

Итак, у вас есть окно для вашего Pi с вашего ноутбука или компьютера.

Теперь вам нужно подключить сервоприводы.

Сначала вам нужно сделать довольно простую пайку, чтобы надеть шляпу Adafruit на Pi. Это немного неудобно, но, несмотря на то, что я не паял более 30 лет, все было в порядке. Как всегда, я нашел полезное видео на YouTube, которое мне очень помогло.

В то время как шляпа может работать с 16 сервоприводами, мне понадобилось только 4, поэтому я потрудился припаять только первый набор из 4 контактов.

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

Это было то место, где я впервые столкнулся с серьезным препятствием. У меня был очень простой скрипт на Python для перемещения сервоприводов, и буквально ничего не происходило. Я потратил около недели, пробуя новые скрипты и т. Д., А потом на шапке начал появляться дым. Выключив все, я проверил схему. Это был компонент, защищающий от обратной полярности. Поскольку у меня был источник питания с несколькими наконечниками и разными напряжениями, я упустил тот факт, что вы можете получить выход постоянного тока в обоих направлениях, перевернув наконечник. Я ошибся (шанс 50:50) и просто сжег свою первую шляпу из адафрута.

:-(Так что небольшая задержка, как я купил новый, перепаял и поправил наконечник. Намного лучше.

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

Шаг 4: Установка Node Red (получение сообщений с сервера MQTT на ваш скрипт Python)

Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)
Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)
Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)
Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)
Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)
Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)
Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)
Установка Node Red (получение сообщений с сервера MQTT в ваш скрипт Python)

Node-RED - это программа, которую вы устанавливаете на Pi, которая дает вам визуальный интерфейс (в вашем браузере) для получения сообщений с вашего MQTT-сервера и использования его для передачи правильной информации в ваш скрипт python (рассматривается в следующем шаге (Шаг 5). Я в значительной степени использовал инструкции ppeters0502 на шаге 5. В этих потоках есть логика, а в питоне - дополнительная логика, и в каждом из них может быть больше или меньше, в зависимости от ваших предпочтений. В основном вам нужно делать следующий

  1. Получите узлы для сообщений MQTT - они светло-фиолетовые, и у меня было по одному на члена семьи.
  2. Сопоставьте это с сервоприводом, который вы хотите переместить (пронумерованные 0, 1, 2, 3)
  3. Определите, входите ли вы в радиус или выходите из него на OwnTracks
  4. Определите, на какое место должен указывать сервопривод.

    Были некоторые исключения из основных правил, которые мне нужно было встроить

  5. Установите угол правильно

У меня был Node-RED, который делал первые 4, и я оставил Python относительно простым.

Здесь вы можете увидеть базовый поток, и все потоки могут быть экспортированы в формат здесь, что означает, что вы можете импортировать этот базовый поток в свой Node-RED, а затем адаптироваться. Обратите внимание, что я удалил все соединения из фиолетовых узлов, чтобы вы не могли получить доступ к моему экземпляру MQTT. Я также удалил все тестовые узлы, поскольку они содержат фактические данные … вам может потребоваться изменить этот тип файла на flow.json, чтобы импортировать его в ваш Node-RED, но Instructables не разрешил мне загрузить это.

Зеленые узлы - это узлы отладки, которые затем отображают вывод в окне отладки в правой части экрана (может потребоваться расширение - найдите стрелку на полпути вверх справа)

Первое, что нужно сделать, это бит «Live - только для отладки». Это проверяет, можете ли вы получать сообщения MQTT и видеть, что в них содержится. json - это просто более структурированная версия сообщений, которая упрощает получение данных. В этом потоке, когда я работаю, я затем подключаю фиолетовые узлы вверху слева к узлу json справа от них.

Узлы тестирования

Когда вы знаете, как сообщения будут выглядеть вживую, вам станет очень скучно выходить из дома, спускаться по дороге и возвращаться, просто чтобы вызвать событие. Как только вы это сделаете, вы можете скопировать сообщение в триггер TEST, а затем просто щелкнуть его, чтобы смоделировать событие. Вы также можете изменить данные, чтобы они были для разных мест (убедитесь, что они точно соответствуют названиям мест в Owntracks).

Вы можете видеть в потоке, что все тестовые примеры попадают в отдельный узел, а затем - в узел json. Это чисто для того, чтобы привести в порядок экран.

Я не могу переоценить, насколько полезными были эти узлы, и они остаются ими до сих пор.

Вызов Python

Итак, я попал в следующий блокпост. Для этого потребовалось ОЧЕНЬ много гуглить на форумах и т. Д. Мой поток работал бы отлично, но не запускал бы мой скрипт python. Я не смог с этим справиться, но избавлю вас от ругани и т. Д. Просто хочу сказать, что, как выделено на втором снимке экрана, вы должны указать python3, поскольку, очевидно, Node-RED предполагает python2, если вы не укажете.

2 дополнительных осложнения - только при необходимости

Затем у меня возник ряд проблем, в которых логика не совсем работала. Во-первых, Owntracks пошли немного странно, и, поскольку мой брат живет в 2-х улицах, он часто говорил, что я был в 2-х местах одновременно или постоянно переключался между ними. Единственный способ обойти это - добавить условие, предотвращающее ложные срабатывания. Если он утверждал, что я был в его доме, я проложил маршрут и проверил фактическую долготу / широту в сообщении и прервал его, если он сказал, что я действительно дома.

Другая проблема заключалась в том, что, выгуливая собаку, я не мог добиться хорошего радиуса. Обычно я гуляю в том же районе, поэтому здесь я сказал: «Если я войду в это место, я определенно выгуляю собаку, и буду там, пока не вернусь домой». это означало, что он не переключился на паб, который я проезжаю по дороге домой, или другие местные места, которые могут сработать во время выгула собак. Для этого мне нужно было настроить некоторые постоянные переменные контекста (ищите их на Node-RED. См. Снимок экрана. Эти переменные сохраняются до перезапуска Node-RED, поэтому я могу сказать, если на прогулке с собакой, установите переменную контекста на "Собака". Затем игнорируйте НИЧЕГО, если я не войду домой.

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

Шаг 5: Фактическое перемещение сервоприводов с помощью Python на Pi

Небольшой переход к сервоприводам. Я ничего не знал о сервоприводах, но в сети много информации. Я использовал сервоприводы непрерывного действия, которые могут плавно поворачиваться на 360 градусов. Другой основной вид - это шаговые сервоприводы, которые перемещаются кусками (шагами) и, по-видимому, поднимаются только примерно на 180 градусов (здесь явно бесполезно). Преимущество шаговых сервоприводов в том, что вы можете просто поставить угол, и они переместятся в эту точку и остановятся. Во всей документации, которую я нашел, говорится, что непрерывные сервоприводы работают, если им задана скорость и время для поддержания этой скорости (например, полная скорость в течение 1 с), и они заканчиваются там, где они заканчиваются, но это относительно их начальной точки. После множества попыток я не смог заставить это работать, но на испытательном стенде обнаружил, что сервоприводы постоянно возвращаются в одну и ту же точку под одним и тем же углом. Что намного проще, я так и сделал. Может быть, есть обратная сторона, о которой я не знаю, но у меня это работает. Обратите внимание, однако, что каждый сервопривод уникален, и поэтому у вас должен быть уникальный набор углов для каждого сервопривода. Я обнаружил, что проще всего иметь скрипт на Python «калибровки», в котором я мог бы по очереди настраивать сервоприводы на углы, улучшая их, пока все не будут выглядеть правильно. Это первый прикрепленный сценарий. Вы просто комментируете сервоприводы, которые не тестируете, сосредотачиваетесь на одном, а затем настраиваете значения по своему усмотрению. ПРИМЕЧАНИЕ: калибровка для испытательного стенда проста, приблизительна и готова. Вам нужно будет повторно откалибровать часы, когда часы будут собраны, потому что шестерни и т. Д. Все изменят. Тогда второй сценарий довольно прост. Это делает следующее

  1. Импортируйте несколько библиотек
  2. переместите переменные, поступающие из Node-RED, в переменные в скрипте
  3. сопоставляет углы, определенные сценарием калибровки, с точками на часах.
  4. проверьте, что это место найдено в списке, а если нет, перейдите в «Опасность».
  5. записывать в лог-файл, что было сделано
  6. переместите требуемый сервопривод на требуемый угол
  7. Остановите один сервопривод от "гудения" *

3 вещи, на которые стоит обратить внимание.

Лог-файл очень полезен для отладки. Это означает, что вы можете просмотреть отладку сообщения Node-RED, а затем увидеть, что произошло в сценарии. вывод выглядит так. Первые 3 - это я выгуливаю собаку, а затем Ребенок 1 выходит из дома и приходит в школу. Обратите внимание, чтобы проверить время на Pi. По умолчанию он может быть UTC и не допускать смены летнего / зимнего времени. Например. время, указанное ниже, составляет 1 час.

2020-12-07_05: 36: 03 Кто = 0, loc = Путешествие, деталь = Дом, Угол = 10, индекс = 8

2020-12-07_05: 36: 04 Who = 0, loc = Dog, detail = Astons, Angle = 86,5, index = 10

2020-12-07_06: 07: 49 Кто = 0, местоположение = Дом, деталь = ввод, Угол = 75, индекс = 0

2020-12-07_06: 23: 53 Кто = 2, loc = Путешествие, деталь = Дом, Угол = 19, индекс = 8

2020-12-07_06: 30: 48 Кто = 2, loc = школа, деталь = N, угол = 60,5, индекс = 2

Серво-жужжание

Один из сервоприводов (0) продолжал гудеть после окончания сценария. Как вы понимаете, иметь это на нашей кухне очень неприятно. Я нашел где-то поток, в котором упоминалось, что сервоугол установлен на «none», что каким-то образом заставляет его бездействовать. Это сработало блестяще, и это можно увидеть в сценарии в конце.

Сроки

Помните, как низко нужно подметать стрелку круглосуточно. Вы можете видеть в скрипте, что есть строка time.sleep (4) непосредственно перед тем, как мы установим сервопривод, чтобы он перестал гудеть. Это потому, что вы должны позволить руке добраться до места назначения, прежде чем переводить ее в режим ожидания. В противном случае это просто прекратится. Это также важно при его калибровке, потому что вы делаете несколько движений внутри скрипта. Я бы запустил его так, чтобы он по очереди перемещался во все 12 локаций, чтобы я мог перепроверить их все. но вам нужно немного времени между ними.

Шаг 6. Завершение работы над программным обеспечением - от телефонов к сервоприводам

После того, как у вас есть тестовый стенд и настроены скрипты, вы можете немного запустить его «вживую» и посмотреть, как он работает в реальном времени. Здесь я нашел исключения, которые мне нужно было добавить в мой поток Node-RED.

Вы можете легко отключать и подключать членов семьи в потоке Node-RED, если хотите сконцентрироваться на одном из них. Например, если два вызывают проблемы, но вы хотите исправить по одной за раз. В противном случае имейте в виду, что вы продолжите получать сообщения с любых подключенных телефонов.

Я упомянул о проблеме с выгуливанием собак и о том, что дом моего брата находится довольно близко. У меня было еще 2 проблемы.

Во-первых, локации в других локациях. Моя жена училась в колледже в Лондоне. Мы хотели, чтобы это было зарегистрировано как «Школа», но оно также находится в «Лондоне». Поэтому нам нужно было повторно использовать контекст, чтобы сказать, что если вы покидаете эту «Школу», то переезжайте в «Лондон», а не в «Путешествие».

Во-вторых, условия гонки. Как уже упоминалось, дом моего брата находится в 2-х улицах отсюда, а также рядом с нашим любимым пабом / рестораном. Это означает, что иногда 2 сигнала принимаются одновременно или очень близко друг к другу. Это может создать «состояние гонки», при котором вы получите разные результаты в зависимости от того, какой из них быстрее всего проходит по логике, что приведет к непредсказуемым результатам. Чтобы противостоять этому, я сделал все «входящие» сообщения с задержкой в 1 секунду в логике, что, казалось, решило проблему. Могут быть лучшие и более элегантные способы решить эту проблему, но, похоже, это сработало.

Шаг 7: Создание физических часов - Часть I - Сервоприводы и ось

Создание физических часов - часть I - сервоприводы и ось
Создание физических часов - часть I - сервоприводы и ось
Создание физических часов - часть I - сервоприводы и ось
Создание физических часов - часть I - сервоприводы и ось
Создание физических часов - часть I - сервоприводы и ось
Создание физических часов - часть I - сервоприводы и ось

Теперь то, в чем я был меньше всего уверен, поэтому оставил его напоследок. Я хотел лицо приличного размера и легкую конструкцию. Я также нервничал из-за того, что физически получил 2 сервопривода вокруг центральной оси. Это означало, что, бегло взглянув на ebay в поисках старых часов, как в инструкции, которой я следил, я решил дать себе больше шансов, построив их сам.

  • Я получил 2 больших (~ 30 см) квадрата фанеры, которые у меня лежали (толщиной около 9 мм).
  • Затем я разрезал старую балку перил на секции 4х10 см и скрутил переднюю и заднюю панели.
  • Отметив центральное отверстие, я просверлил его так, чтобы оно было такого же размера, как самая большая латунная трубка.
  • Потом покрасил обычной белой глянцевой краской.
  • После некоторых экспериментов я понял, что я, вероятно, не смогу установить 4 сервопривода вокруг одной оси, если бы все они были прикреплены к задней (или передней) пластине. Поэтому мне нужно было иметь либо 3 + 1, либо 2 + 2 на каждой тарелке. В итоге у меня осталось 3 на спине и 1 на лицевой стороне.
  • Я рассчитал требуемые смещения на листе бумаги, а затем вырезал латунные трубки, чтобы они соответствовали друг другу. Обратите внимание, что самая толстая трубка - самая короткая, а самая тонкая должна доходить до задней панели. (Я фактически вставил самый маленький в отверстие, которое я частично просверлил в задней пластине, но не полностью, чтобы ось не двигалась назад).
  • Что касается трубок, я купил труборез, но в нем используется давление, чтобы разрезать их, а это значит, что вы не можете вставить трубку меньшего размера внутрь. Так что я использовал ножовку, а затем пришлось проделать изрядное количество документов, чтобы заставить их работать. Здесь бесценны алмазные напильники.
  • Затем я сопоставил диаграмму с фактическим смещением зажимов и зубцов *.
  • Когда у меня были смещения, я знал, насколько «высоко» сделать блоки для установки сервоприводов. Я сломал пару блоков, распилив их слишком тонко, а также просверлив отверстие, чтобы выходила проволока.
  • Затем пришла непростая часть того, где разместить блоки так, чтобы они точно соответствовали зубьям на оси. Я вкрутил один блок, а затем мог повернуть сервопривод, чтобы он встретился с осью, а затем вкрутил второй блок, другой конец сервопривода. Я также обнаружил, что мне нужно вырезать немного из некоторых блоков, чтобы не зацепиться за другие винтики. Это заняло довольно много времени.
  • Как только я все это сделал, я взял свой корпус Raspberry Pi, просверлил в нем два отверстия и прикрутил к передней панели. Затем я мог добавить Пи, закрыть переднюю и заднюю пластины (подключив сервоприводы к Пи (запомнив, какой сервопривод для какого члена семьи) и повернуться к рукам…

* Здесь я обнаружил самую большую проблему, которую еще не решил полностью. Латунные трубки были 1/4 дюйма, 7/32 дюйма, 3/16 дюйма, 5/32 дюйма. Но зажимы были метрическими (кроме одного, который был 1/4 дюйма). Если перевести трубки в метрические, они были 6,35 мм, 5,56 мм, 4,76 мм 3,97 мм. Остальные зажимы имели диаметр 4 мм, 5 мм и 6 мм. самые большие - в порядке. Но очевидно, что 0,44 мм - это слишком большой ход для зажима, поэтому мне пришлось покрыть его бумагой. Я пробовал это несколько раз, и какое-то время он работал нормально, а затем снова ослабляется. Итак, 2-й по величине рука не работает должным образом. Это было нормально около 6 месяцев, поэтому время, потраченное на это, было хорошо потраченным. Но если бы я делал это снова, я мог бы увеличить или уменьшить на 1 размер, с перерывом лучший зажим для крепления трубки. например, выберите 9/32 дюйма, 1/4 дюйма, (зазор), 3/16 дюйма, 5/32 дюйма

Шаг 8: стрелки часов

Стрелки часов
Стрелки часов
Стрелки часов
Стрелки часов
Стрелки часов
Стрелки часов

Я выбрал листовую сталь, так как мне нужно было что-то жесткое, но с меньшей вероятностью сломаться, пока я это делал. Кроме того, тонкость означала, что 4 руки не представляли проблемы.

  • Сначала я набросал фигуру.
  • Потом перенес на сталь поверх малярного скотча.
  • Потом я очень неумело вырезал их лобзиком. Они были и есть разные, но я не против.
  • Тогда друг предложил мне одолжить его настольную шлифовальную машину, чтобы придать им форму, и это было здорово. настоятельно рекомендуется. В противном случае на регистрацию уйдет много времени.
  • Оставалось еще немного подпилить, а затем отшлифовать, чтобы не было острых краев и получилась хорошая отделка.
  • Мне пришлось просверлить отверстия, чтобы они соответствовали соответствующим латунным трубкам (для проверки используйте отрезные трубы, а не установленные на часах).
  • Я обнаружил, что отверстия нужно немного подпилить, чтобы вставить их в трубки, но когда они были открыты, они были плотными и не нуждались в клее. Исключением была передняя рука, которую я хотел иметь «прикрытие». Поэтому я вырезал (в основном) круглый кусок стали, просверлив отверстие и добрав его до нужного размера, и приклеил его к передней части. Вы можете видеть это на последней картинке. Иногда на переднюю руку нужно наносить клей, чтобы закрепить ее, но после пары неудачных запусков руки действительно работают хорошо.
  • Я отверг идею фотографий (потому что дети быстро будут жаловаться на наши фотографии для свиданий), поэтому я остановился на рисовании инициалов акриловой краской.

Шаг 9: Завершите

Полный!
Полный!
Полный!
Полный!

Все это действительно прекрасно работает. Руки иногда немного отклоняются, в зависимости от того, откуда они пришли, но на самом деле это не имеет значения, потому что каждое место - это участок, а не просто линия.

Иногда, как ни странно, мой телефон отказывается признать, что я дома. Я четко нахожусь в пределах радиуса Owntracks, когда это показано на карте, и даже когда точность хорошая … я не знаю почему. похоже, не беспокоит остальную часть моей семьи. но установка такая же. Это означает, что Owntracks никогда не отправляет сообщения, и я застреваю в «Путешествии». Но обычно со временем все проходит.

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

Опять же, большое спасибо @ ppeters0502 за отличные инструкции, которым нужно следовать. Надеюсь, они могут добавить что-то вроде часов с четырьмя стрелками.

Шаг 10: То, что я узнал, и поступил бы лучше / иначе, если бы мне пришлось делать это снова

  • Физические сборки требуют проб и ошибок. Невозможно предугадать проблемы космоса, нужно просто нырнуть и попробовать.
  • Для кода важны проблемы с поиском в Google
  • Начните с основного и наращивайте. Сервоприводы на дереве испытательного стенда означали, что я могу заставить большую часть их работать без физической сборки.
  • Я мог бы вырезать руки лазером на станке с ЧПУ. Но я не знал, где находится местная, и мне нравится, как получилась мягкая сталь (она была дешевой, а шлифовальный станок значительно упростил задачу).
  • Шаговый двигатель может быть возможен, если вы используете зубчатую передачу для поворота на 360. но тогда вам, возможно, придется расположить сервоприводы слишком близко к центральной оси
  • Есть 2 типа сервоприводов (Futaba и HiTech). Убедитесь, что вы проверили это, так как у них разное количество зубцов на шлице. И я изначально купил не те …
  • Не подключайте шляпу с неправильной полярностью;-)
  • Google и Stack Overflow - ваши друзья, когда вы застряли. Но вам нужно использовать хорошие поисковые запросы …
  • На самом деле испытательный стенд - это способ получить более простую и дешевую версию намного проще. Большая часть сложности сборки возникает из-за того, что руки должны вращаться вокруг одной оси. Если вы пойдете на компромисс, тогда все будет намного проще. И я думаю, что 4 может быть пределом одиночной оси, если только вал не станет намного длиннее. Вы могли бы, я полагаю, иметь 3 на передней панели и три на задней, если бы вал был длиннее …

Шаг 11: Возможные будущие расширения…?

У меня были следующие идеи по поводу следующих шагов.

  1. Я бы хотел использовать старый iPad как циферблат. т.е. сделать цифровые часы. Возможно, на основе браузера или приложения. Поскольку физические часы по сути не имеют состояния (т.е. они не знают, где они в настоящее время находятся, за исключением того, что руки находятся в физическом положении), мне потребуется постоянное хранилище данных. Node Red может записывать в локальную файловую систему, так что я, вероятно, так и сделаю.
  2. Если бы я сделал это, то хотел бы видеть это снаружи дома. Но тогда нам действительно нужно разобраться с безопасностью. Поскольку доступ в одной и той же сети Wi-Fi - это одно, доступ из Интернета - это другое. В настоящее время я не знаю, как лучше всего это сделать, но подозреваю, что подписка MQTT в другом направлении может сработать (pi публикует текущий статус, а внешние устройства подписываются на него)…?
  3. Я бы предпочел одну руку для «За границей». но это может быть сложно с точки зрения OwnTracks. Может быть, можно было бы просто использовать long / lat в сочетании с некоторыми огромными радиусами?

Рекомендуемые: