Съдържание:

Часовник за местоположение „Уизли“с 4 стрелки: 11 стъпки (със снимки)
Часовник за местоположение „Уизли“с 4 стрелки: 11 стъпки (със снимки)

Видео: Часовник за местоположение „Уизли“с 4 стрелки: 11 стъпки (със снимки)

Видео: Часовник за местоположение „Уизли“с 4 стрелки: 11 стъпки (със снимки)
Видео: Смарт часовник за деца Canyon “Sandy” KW-34 2024, Юли
Anonim
Часовник за местоположение „Уизли“с 4 стрелки
Часовник за местоположение „Уизли“с 4 стрелки

И така, с Raspberry Pi, който се движеше известно време, исках да намеря хубав проект, който да ми позволи да го използвам най -добре. Попаднах на този страхотен Инструктируем часовник за изграждане на собствено местоположение на Уизли от ppeters0502 и си помислих, че би било добре да опитам.

Часовникът се състои основно от Raspberry Pi, който контролира серво, за да завърти стрелките на часовника. Както в къщата на семейство Уизли в книгите/филмите за Хари Потър, всеки член на семейството има собствена ръка. Всяка ръка сочи текущото местоположение на този член на семейството. Часовникът постига това, като получава съобщения от мобилните телефони на семейството всеки път, когато влизат или излизат от предварително определен радиус.

Основните разлики от предишния Instructable бяха, че трябваше да имам 4 ръце, а не 2 (в противен случай дъщерите ми щяха да се оплакват) и реших също да изградя рамката, а не да използвам стар часовник за повторна употреба. Това беше така, защото се притеснявах, че пространството ще бъде проблем в съществуващ корпус на часовника, с необходимостта да се побере в 4 сервомотора и т.н.

Това отне много повече време, отколкото очаквах, макар и най -вече там, където срещнах странни проблеми, които ме затрудняваха и които изглежда не бяха обхванати от първоначалната публикация. Нищо против оригиналния Instructable, който като цяло беше страхотен, но бяха изминали няколко години и версиите на нещата се промениха … и т.н. Също така, пребиваването във Великобритания означаваше, че някои от имперските/метричните елементи предизвикаха повече предизвикателства, отколкото очаквах.

Освен това, докато съм добре с кодирането, физическото изработване на часовника определено ме разтегна и изискваше някои допълнителни инструменти, което също ме забави донякъде.

В края ще включа раздел на тема „Нещата, които бих направил по различен/по -добър начин, ако го правя отново …“

Консумативи:

Едно от нещата, които ме впечатлиха, беше, че скъпите компоненти трябваше да се правят със стрелките на часовника. 4 ръце определено са много по -скъпи от 2. Реших да направя някои разходи, за да имате представа. Това е първият път, когато добавям всичко и без да се обръща внимание на инструментите, мисля, че похарчих около 200 паунда. Плюс някои неща, които не използвах (и не са включени по -долу) плюс Pi, плюс захранването, което и двете вече имах.

Пи и др

  1. Raspberry Pi - не помня колко струваше първоначално, но беше модел 2B. Мисля, че ако все още нямате такъв, тогава дори Pi Zero вероятно би го направил. Бях добавил wifi ключ и SD карта с Raspbian. И имах старо зарядно устройство за Android.
  2. Adafruit Servohat за Pi - 16 паунда
  3. Захранване за Servohat - Това наистина се мъчих да намеря, тъй като всички уебсайтове просто посочиха сайта adafruit, който тогава очевидно препоръчва американско захранване. Тогава разбрах, че имам старо захранване с променливо напрежение със сменяеми накрайници, затова го използвах. Но американският е $ 8, така че това е точката.
  4. Калъф за Pi, за да мога след това да го закача към рамката на часовника. 5 паунда

Серво и предавки

Тук цитирам цената за всичките 4, така че разделете, ако искате по-малко ръце (Добавянето й е ~ £ 40 на ръка = £ 160: -o

  1. 4 x серво-използвах препоръчаните от 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 x скоби, които се захващат върху месинговите тръби, за да ви позволят да прикрепите зъбни колела. ~ £ 7 всеки = £ 28. Получих ги от ActiveRobots, които извършват редовни поръчки от Servocity в САЩ, което ви позволява да избегнете международната доставка. Те също могат да получат всичко друго, което можете да намерите на главния сайт на Servocity в САЩ. Това беше много удобно за следващите 2 елемента
  4. 4 x зъбни колела с ацетил 0.770 "за монтиране върху затягащите главини. ~ £ 6 всеки = £ 24
  5. 4 x ацетилни зъбни колела, монтирани на ацетил шлиц за монтиране на серво. ~ £ 6.50 всеки = 26 £
  6. 1 x пакет шестостенни гайки към прикачени зъбни колела към затягащи гайки = 2,60 £
  7. 1 x 7/64 "шестнадесетичен ключ (шестограмен ключ), защото всичко, идващо от САЩ, е имперско, така че стотиците ключове, които вече имам, са безполезни = £ 1

За физическото изграждане

Тук използвах най -вече откъсвания от неща, за които съм лъгал

  1. 2 x квадрата от шперплат за „лицевата“и „задната“плоча
  2. След това отрязах цилиндри 4x10 cm от стара перила, която имах, за да свържа гърба с лицето
  3. Някои блокове за монтиране на сервомоторите с правилното отместване - просто отрязвания от иглолистна дървесина, които изрязах по размер.
  4. Разнообразни винтове. от много малък (за закрепване на Pi кутия към рамката) до среден (за закрепване на рамка заедно)
  5. 0,75 мм лист от мека стомана около 50 см х 20 см (за изрязване на ръцете). Това беше единственото нещо, което купих ~ £ 9 от Wickes

Инструменти

Някои неща имах, а други взех назаем или купих

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

Стъпка 1: Настройване на телефоните ви да изпращат местоположението им на вашия Pi (част I MQTT брокер)

Този бит е описан много добре от ppeters0502 в неговия отличен Weasley Clock Instructable. Странно, въпреки че може би отразява различни набори от умения, той започна с изграждането и след това премина към софтуера, аз го направих обратното. И така, започнах с телефона … изчакайте, не, не, започнах с брокера MQTT, който е Стъпка 6 в неговия Instructable. Ще пропусна всички битове, които той прави много добре, и просто ще добавя някои битове, които мога да добавя. Минах по маршрута на CloudMQTT, който той спомена.

НО докато пишех това, проверих връзката към плановете и установих, че вече няма безплатен план! Те го оттеглиха на основание, което изглежда разумно. т.е. хората ще създадат безплатен екземпляр и след това никога няма да го използват. Не забелязах, защото текущите инстанции могат да продължат. Така че няма да се променя. Но това прави инструкциите малко излишни. Изглежда има 3 варианта.

  1. Плащайте $ 5 на месец за Cloud MQTT (но това звучи скъпо за часовника на постоянна основа).
  2. Отидете по маршрута Mosquitto on Pi, както е описано в първия Instructable. Не мога да коментирам това, но може да е добър вариант.
  3. Просто потърсете в Google „безплатен облачен брокер MQTT“и изглежда, че има някои други.

Така че, при предположение, че имате работещ брокер на MQTT, ако той е нещо като CloudMQTT, тогава ще бъдат показани сървър, потребител, парола и порт. Всичко това ще ви е необходимо за настройка на телефоните ви, за да изпратите на брокера вашите местоположения/движения.

Стъпка 2: Настройка на телефоните ви, за да изпращат местоположението им на вашия Pi (част II Owntracks)

Това също е покрито много добре в оригиналния Instructable, в Стъпки 7 (Android), 8 (iOS) & 9 (настройка на региони).

Имах само устройства с iOS, така че не опитах стъпка 7.

Какво бих добавил към тези инструкции?

  1. В настройката има и полетата TrackerID и DeviceID. Това трябва да имате, за да можете да ви идентифицираме в семейството си. Напр. Имах ги съответно като R и RPhone. Това означава, че можете да преминете към часовника кой Servo и следователно коя ръка да завъртите.
  2. Регионите са името на местоположенията, които искате да проследите.
  3. Всеки регион се определя от име, географска ширина, дължина и радиус.
  4. Тъй като исках да имам няколко местоположения като един раздел на часовника си, използвах конвенция за именуване, която се оказа много полезна. Възможни са и други методи, но това работи при мен.

    • Например, за семейния раздел на часовника исках да имам моите родители и братя и сестри и родителите и братята и сестрите на съпругата ми. Затова имах локации като „Семеен Том“, „Семеен Дик“, Семеен Хари и „Семейни родители R.“Това означаваше, че следващият етап може да знае какво да премине към Часовника.
    • Имайте предвид, че хората могат да имат различни места. Но докато те са в съответствие с конвенцията за именуване, това е добре. Напр. работата ми щеше да е различна от района на работа на съпругата ми и да се нарича по различен начин. но докато и двамата започнат "Работа", тогава всичко е наред.
  5. Искате режимът да бъде зададен на „Значителен“на екрана на Карти. Това означава, че (предимно) получавате съобщения само когато влизате или напускате региони. Изглежда, че това е актуализираната версия на бележката, отбелязана ВАЖНО: в края на Стъпка 8 в оригиналния Instructable.
  6. Както бе споменато в оригиналния Instructable, използването на Google Maps е чудесен начин да разберете Lat/Long на някъде. Открих, че е по-ефективно да направя това в насипно състояние, като открия всички Lat/Longs на моето местоположение, след което ги поставих в Notes (на моя Mac) и със синхронизирането в облака, това означаваше, че те магически се появиха на моя iPhone в Notes и мога да ги копирам/поставя в Owntracks. Това също означаваше, че мога да изпратя файла на телефоните на семейството си и всички ние имахме последователни местоположения.
  7. Близки места могат да причинят проблеми. Брат ми живее на 2 улици и първоначално телефонът ми непрекъснато мислеше, че съм едновременно в района на неговата къща, както и у дома. В крайна сметка трябваше да въведа допълнителна логика в Node Red, за да уловя и игнорирам това.

Стъпка 3: Настройка на Raspberry Pi

Настройване на Raspberry Pi
Настройване на Raspberry Pi

Така че тук предполагам, че имате основен Pi настроен и на wifi. Аз работех с Raspbian, но това няма значение. Използвайте инструкциите на raspberrypi.org, за да настроите всичко.

Имайте предвид, че Pi има портове за показване към монитор и клавиатура/мишка и т.н. НО очевидно, след като го имате в часовника, не искате нищо от това. Така че отговорът, предложен от някой на уебсайта на Raspberry pi, мисля, че беше да се създаде VNC връзка. Това ви позволява да се свържете от друго устройство към Pi и да го контролирате. Правя го от моя Mac, но го направих и от iPad. Предлагам да използвате нещо с клавиатура за по -лесно използване.

Току -що открих, че те изглежда са улеснили, откакто се свързах … вижте тук

По същество се свързвате и получавате прозорец, който е стандартният Pi интерфейс.

И така, имате прозорец към вашия Pi от вашия лаптоп или компютър.

Сега трябва да свържете Servos.

Първо трябва да направите доста основно запояване, за да поставите адафрутната шапка върху Pi. Това е малко непохватно, но въпреки че не е запоено 30 и повече години, беше добре. Както винаги, намерих полезен видеоклип в YouTube, който да ме преведе през него, което беше много полезно.

Докато шапката може да работи с 16 сервомотора, имах нужда само от 4 и затова се притесних само от запояването на първия комплект от 4 пина.

Тогава сервомоторите просто натискат щифтовете. Първо направих един, за да проверя дали действително мога да накарам сервото да се премести.

Тук попаднах на първата си голяма пречка. Имах много елементарен скрипт на python за преместване на сервомоторите и буквално нищо не се случи. Прекарах около седмица, опитвайки нови скриптове и т.н., а след това димът започна да се появява на шапката. Като изключих всичко, проверих схемата. Това е компонент, който предпазва от обратна полярност. Тъй като имах източник на захранване с много накрайници, с много напрежения, бях пропуснал факта, че може да изведете DC изхода в двете посоки, като обърнете върха. Бях объркал (шанс 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. Има логика в тези потоци и допълнителна логика в python и можете да имате повече или по -малко във всеки, в зависимост от вашите предпочитания. По принцип трябва да направите следното

  1. Имам получаващи възли за MQTT съобщенията - те са светло лилави и имах по 1 на член на семейството
  2. Съпоставете това със серво, което искате да преместите (номерирани 0, 1, 2, 3)
  3. Определете дали влизате или излизате от радиус на OwnTracks
  4. Разберете към кое място трябва да сочи сервото

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

  5. Задайте правилно ъгъла

Имах Node-RED да прави първите 4 и поддържах Python сравнително прост.

Можете да видите основния поток тук и всички потоци могат да бъдат експортирани във формата тук, което означава, че можете да импортирате този основен поток във вашия Node-RED и след това да се адаптирате. Обърнете внимание, че премахнах всички връзки от лилавите възли, така че да нямате достъп до моя екземпляр MQTT. Също така премахнах всички тестови възли, тъй като те съдържат действителни данни … може да се наложи да промените този тип файл на flows.json, за да импортирате във вашия Node-RED, но Instructables не ми позволи да го кача.

Зелените възли са възли за отстраняване на грешки, които след това показват изход в прозореца за отстраняване на грешки вдясно на екрана (може да се наложи разширяване - намерете стрелката наполовина нагоре вдясно)

Първият бит, който трябва да направите, е битът "На живо - само за отстраняване на грешки". Това проверява дали можете да получавате 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 Кой = 0, loc = Куче, детайл = Astons, ъгъл = 86,5, индекс = 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, локал = училище, детайл = N, ъгъл = 60,5, индекс = 2

Серво-бръмчене

Един от сервомоторите (0) продължаваше да бръмчи след края на сценария. Както можете да си представите, това е супер досадно да имаме в нашата кухня. Намерих нишка някъде, в която се споменава настройката на ъгъла на серво на „няма“, което по някакъв начин го настройва на празен ход. Това работи блестящо и може да се види в сценария в края.

Срокове

Имайте предвид колко ниско е една ръка, за да дебне денонощно. Можете да видите в скрипта, че има ред 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 отпред.
  • Изработих необходимите офсети върху лист хартия и след това изрязах месинговите тръби, за да съвпадат. Обърнете внимание, че най -дебелата тръба е най -късата, а най -тънката трябва да стигне чак до задната плоча. (Всъщност вградих най -малката в дупка, която частично пробих в задната плоча, но не докрай, така че оста да не се движи назад).
  • За тръбите купих резачка за тръби, но това използва натиск, за да ги отреже и това означава, че не можете да вкарате по -малката тръба вътре. Затова използвах ножовка и след това трябваше да направя доста документи, за да ги накарам да работят. Тук диамантените файлове бяха безценни.
  • След това съпоставих диаграмата с действителните отмествания за скобите и зъбците *.
  • След като имах отмествания, знаех колко „високо“да направя блоковете за монтиране на сервомоторите. Счупих няколко блока, като ги нарязах твърде тънки и също пробих дупката, за да извадя жицата.
  • След това дойде лудата част от мястото, където да се поставят блоковете, така че те да отговарят точно на зъбците на оста. Завих един блок и след това можех да завъртя серво, за да се срещне с оста, и след това да завинтвам втория блок на другия край на серво. Открих също, че трябва да изрежа малко от някои блокове, за да избегна зацепването на други зъбци. Това отне доста време.
  • След като свърших всичко това, взех кутията си с малинов пи, пробих две дупки в нея и я завинтвам към предната плоча. След това мога да добавя Pi, да затворя предната и задната плочи (след като свързах сервомоторите към pi (запомняйки кое серво е за кой член на семейството) и да се обърна към ръцете …

* Тук открих най -големия проблем, който тепърва ще решавам напълно. Месинговите тръби бяха 1/4 ", 7/32", 3/16 ", 5/32". Но скобите бяха метрични (с изключение на една, която беше 1/4 "). Преобразувайки тръбите в метрични, те бяха 6.35 мм, 5.56 мм, 4.76 мм 3.97 мм. Останалите скоби бяха с диаметър 4 мм, 5 мм и 6 мм. Най -малките 2 и най -големите са добре. но очевидно 0,44 мм е твърде много пътуване за скобата, така че трябваше да я подложа с хартия. Опитах това няколко пъти и работи добре за известно време и след това отново се разхлабва. Така че вторият по големина ръката не работи правилно. Въпреки това беше добре за около 6 месеца, така че времето, прекарано в това добре, беше време, добре инвестирано. Но ако го правех отново, може би щях да отида с 1 размер нагоре или надолу, с празнина, за да се опитам да получа по -добра скоба към тръбата, напр. отидете за 9/32 ", 1/4", (междина), 3/16 ", 5/32"

Стъпка 8: Стрелките на часовника

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

Взех решение за стоманена ламарина, тъй като исках нещо твърдо, но по -малко вероятно да се счупи, докато го правех. Да бъдеш тънък означаваше, че 4 ръцете бяха по -малко проблем.

  • Първо скицирах форма.
  • След това го прехвърлих върху стоманата върху някаква маскираща лента.
  • След това много неопитно ги изрязах с мозайката си. Всички те бяха и са различни, но това не ме притеснява.
  • Тогава един приятел предложи да взема назаем неговата шлифовъчна машина, за да ги оформя, и това беше страхотно. силно препоръчително. В противен случай подаването отнема години.
  • Трябваше да се направят още пили и след това шлайфане, за да се гарантира, че няма остри ръбове, а също и хубав завършек.
  • Трябваше да пробия дупки, за да съответстват на съответните месингови тръби (използвайте изрязани тръби за проверка, а не монтираните на часовника).
  • Открих, че дупките се нуждаят от малко запълване, за да се поставят върху епруветките, но веднъж бяха тесни и не се нуждаеха от лепило. Изключението беше предната ръка, която исках да имам „корица“. Затова изрязах (предимно) кръгло парче стомана, след като пробих дупката и я докарах до правилния размер и я залепих отпред. можете да го видите на последната снимка. Понякога предната ръка ще се нуждае от лепило, за да я закрепи, но след няколко фалшиви стартирания ръцете работят много добре.
  • Бях отхвърлил идеята за снимки (защото децата бързо се оплакваха от нашите снимки от срещи), затова се задоволих да рисувам върху инициали с акрилна боя.

Стъпка 9: Завършете

Пълен!
Пълен!
Пълен!
Пълен!

Всичко работи много добре. Ръцете понякога са малко откъснати, в зависимост от това откъде са дошли, но всъщност няма значение, защото всяко място е участък, а не само линия.

Понякога, странно, телефонът ми отказва да признае, че съм у дома. Ясно съм в радиуса на Owntracks, когато е показан на картата, и дори когато точността е добра … Нямам представа защо. изглежда не засяга останалата част от семейството ми. но настройката е същата. Това означава, че Owntracks никога не изпраща съобщение и аз се забивам в „Пътуване“. Но обикновено в крайна сметка се подрежда.

Изключително полезно беше да имаме в кухнята си, най-вече да знаем кога момичетата се прибират от училище или в къщите на приятелите си и така кога да им приготвим храна/чай.

Отново голяма благодарност към @ppeters0502 за страхотните инструкции, които трябва да следвате. Надяваме се, че те могат да добавят нещо около изработването на часовник с 4 стрелки.

Стъпка 10: Неща, които научих и бих направил по -добре/различно, ако трябваше да го направя отново

  • Физическите конструкции се нуждаят от опит и грешка. Няма начин да предвидите проблемите с космоса, просто трябва да се потопите и да опитате.
  • За кода проблемите с гугъл са от съществено значение
  • Започнете основно и изградете. Сервомоторите на дървения материал на тестовия стенд означават, че мога да накарам повечето от тях да работят без физическа конструкция
  • Може би съм лазерно отрязал ръцете на CNC машина. Но не знаех къде е местният и ми харесва как се получи меката стомана (беше евтина и шлифовъчната машина го направи много по -лесна)
  • стъпков двигател може да е възможен, ако използвате предавката, за да получите завой на 360. но тогава може да се наложи сервоприводите да са твърде близо до централната ос
  • Има 2 вида серво (Futaba & HiTech). Уверете се, че сте проверили това, тъй като те имат различен брой зъби на шината. И първоначално си купих грешните…
  • Не свързвайте шапката с неправилна полярност;-)
  • Google и Stack Overflow са вашите приятели, когато са заседнали. Но трябва да използвате добри термини за търсене …
  • Тестовият стенд всъщност е начин, по който можете да получите по -проста, по -евтина версия много по -лесно. Повечето от усложненията при изграждането идват от необходимостта ръцете да се въртят около една и съща ос. Ако направите компромис с това, тогава всичко е много по -лесно. И мисля, че 4 може да е границата на единичната ос, освен ако валът не стане много по -дълъг. Предполагам, че бихте могли да имате 3 на предната плоча и три на задната плоча, ако валът беше по -дълъг …

Стъпка 11: Възможни бъдещи разширения …?

Идеите, които имах за следващите стъпки, са следните.

  1. Бих искал да пренастроя стария iPad като циферблат. т.е. направете цифров часовник. Вероятно базиран на браузър или приложение. Тъй като физическият часовник е по същество без състояние (т.е. не знае къде се намира в момента, освен по силата на стрелките, които са във физическо положение), ще трябва да имам постоянно хранилище на данни. Node Red може да записва в локалната файлова система, така че вероятно бих направил това.
  2. Ако направих това, бих искал да мога да го видя извън дома. Но тогава наистина трябва да подредим сигурността. Тъй като достъпът в една и съща wifi мрежа е едно, достъпът от интернет е друго. В момента нямам представа как най -добре да направя това, но подозирам, че един абонамент за MQTT, който върви по друг начин, може да работи (pi публикува текущото състояние и външните устройства се абонират за него) …?
  3. Бих искал едната ръка за „В чужбина“. но това може да бъде сложно от гледна точка на OwnTracks. Може би просто бих могъл да използвам long/lat в комбинация с някои огромни радиуси?

Препоръчано: