Obsah:

Hodiny polohy 'Weasley' se 4 ručičkami: 11 kroků (s obrázky)
Hodiny polohy 'Weasley' se 4 ručičkami: 11 kroků (s obrázky)

Video: Hodiny polohy 'Weasley' se 4 ručičkami: 11 kroků (s obrázky)

Video: Hodiny polohy 'Weasley' se 4 ručičkami: 11 kroků (s obrázky)
Video: Blondynka v akci-šaty 2024, Červenec
Anonim
Polohovací hodiny „Weasley“se 4 ručičkami
Polohovací hodiny „Weasley“se 4 ručičkami

Takže s Raspberry Pi, který už nějakou dobu koloval, jsem chtěl najít pěkný projekt, který by mi umožnil jej co nejlépe využít. Narazil jsem na tyto skvělé Instructable Build Your Own Weasley Location Clock od ppeters0502 a řekl jsem si, že by bylo dobré to vyzkoušet.

Hodiny se v podstatě skládají z Raspberry Pi, který ovládá serva, aby otočil ručičky hodin. Stejně jako v domě rodiny Weasleyových v knihách/filmech o Harrym Potterovi má každý člen rodiny svou vlastní ruku. Každá ruka ukazuje na aktuální polohu daného člena rodiny. Hodiny toho dosahují přijímáním zpráv z mobilních telefonů rodiny, kdykoli vstoupí nebo opustí předem definovaný poloměr.

Hlavní rozdíly oproti předchozímu Instructable byly v tom, že jsem potřeboval mít 4 ruce, ne 2 (jinak by si moje dcery stěžovaly) a rozhodl jsem se postavit také rám, ne dostat staré hodiny k opětovnému použití. Bylo to proto, že jsem se obával, že prostor bude problémem ve stávajícím pouzdru hodin, s potřebou vejít se do 4 serv atd.

Trvalo to mnohem déle, než jsem očekával, i když většinou tam, kde jsem narazil na hloupé problémy, které mě zarazily a které se nezdály být pokryty původním příspěvkem. Nic proti původnímu Instructable, který byl obecně skvělý, ale uběhlo několik let a verze věcí se změnila … atd. Také pobyt ve Velké Británii znamenal, že některé imperiální/metrické prvky způsobily více výzev, než jsem čekal.

Také, když jsem v kódování v pořádku, fyzická výroba hodin mě rozhodně natáhla a vyžadovala nějaké další nástroje, které mě také trochu zpomalily.

Na konci přidám sekci „Věci, které bych udělal jinak/lépe, kdybych to dělal znovu…“

Zásoby:

Jedna z věcí, která mě zasáhla, bylo, že drahé součástky měly co do činění s ručičkami hodin. 4 ruce jsou rozhodně mnohem dražší než 2. Rozhodl jsem se vložit nějaké náklady, abyste měli nějakou představu. Toto je poprvé, co jsem to všechno sčítal, a když pominu nástroje, myslím, že jsem utratil asi 200 liber. Plus nějaké věci, které jsem nepoužil (a nebyly zahrnuty níže) plus Pi, plus napájecí zdroj, který jsem už měl.

Pi atd

  1. Raspberry Pi - nepamatuji si, kolik to původně stálo, ale byl to Model 2B. Myslím, že pokud ho ještě nemáte, pravděpodobně by to udělal i Pi Zero. Přidal jsem wifi dongle a SD kartu s Raspbianem. A nechal jsem tu ležet starou nabíječku telefonu Android.
  2. Servafat Adafruit pro Pi - 16 liber
  3. Napájení pro Servohat - to jsem se opravdu snažil najít, protože všechny webové stránky pouze ukazovaly na web adafruit, který pak zjevně doporučuje americký napájecí zdroj. Pak jsem si uvědomil, že mám starý zdroj proměnného napětí s vyměnitelnými hroty, takže jsem toho využil. Ale ten americký stojí 8 dolarů, takže o tom je řeč.
  4. Pouzdro na Pi, abych jej pak mohl připevnit k rámu hodin. 5 liber

Servo a převody

Zde cituji cenu za všechny 4, takže rozdělte, pokud chcete méně rukou (sečtením to bude ~ 40 £ ZA RUČI = 160 £: -o

  1. 4 x Servo-použil jsem ty, které doporučil ppeters0502-nalezeno na ebay za ~ 15 £ každý = 60 £-Hledal jsem následující text „GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree „ale někdy byli nedostupní
  2. 4 x mosazné trubky, které do sebe přesně zapadly - každá ~ 3 libry. Dostal jsem 1 kus 1/4 ", 7/32", 3/16 ", 5/32" = 11 GBP
  3. 4 x svorky, které se upínají na mosazné trubky, což vám umožní připevnit převody. ~ 7 £ každý = 28 £. Získal jsem je od ActiveRobots, kteří provádějí pravidelné objednávky od Servocity v USA, což vám umožňuje vyhnout se mezinárodní přepravě. Mohou také získat cokoli jiného, co najdete na hlavním americkém webu Servocity. To bylo velmi užitečné pro další 2 položky
  4. 4 x acetyl 0,770 "převodovka pro montáž na upínací náboje. ~ 6 GBP za kus = 24 GBP
  5. 4 x acetyl spline namontované acetylové převody pro montáž na serva. ~ 6,50 GBP každý = 26 GBP
  6. 1 x balení šestihranných matic k připevněným převodům k upínacím maticím = 2,60 GBP
  7. 1 x 7/64 "šestihranný klíč (imbusový klíč), protože cokoli pochází z USA, je imperiální, takže stovky imbusových klíčů, které již mám, jsou k ničemu = 1 £

Pro fyzickou stavbu

Zde jsem většinou používal odřezky věcí, o kterých jsem lhal

  1. 2 x čtverce překližky pro „čelní“a „zadní“desku
  2. Potom jsem odřízl válce 4x10 cm ze staré zábradlí, kterou jsem měl, abych spojil záda s obličejem
  3. Několik bloků pro upevnění serva se správným ofsetem - jen odřezky z měkkého dřeva, které jsem nařezal na velikost.
  4. Různé šrouby. od velmi malých (pro připojení pouzdra Pi k rámu) po střední (pro připojení rámu dohromady)
  5. 0,75 mm plech z měkké oceli o rozměrech 50 cm x 20 cm (k vyříznutí rukou). To byla jediná věc, kterou jsem koupil ~ 9 liber od Wickes

Nástroje

Některé věci jsem měl a některé jsem si půjčil nebo koupil

  1. Páječka + elektrická pájka - pro připojení konektorů k Adafruit Hat & Pi.
  2. Skládačka - pro vyřezávání hrubého tvaru rukou
  3. Vrtat. jen normální akumulátorová 18V vrtačka
  4. Vrtáky - Mějte na paměti, že budete potřebovat imperiální vrtáky k vytváření otvorů, které odpovídají mosazným trubkám. Některé se mi podařilo půjčit.
  5. pila - na řezání mosazných trubek. Nedělejte to, co jsem udělal, a utrácejte 3 libry za řezačku trubek, funguje to tlakem a znamená, že se vnitřek trubek trochu zmenší. takže trubka příští velikosti se pak nevejde skrz
  6. Lavičkový mlýnek - neměl jsem žádný z nich, ale přítel ano a tvarování rukou bylo mnohem jednodušší. Do té doby jsem používal pouze soubory. Nekoupil bych si jen pro tento projekt, ale pro kovové ruce to bylo skvělé.
  7. Koupil jsem různé diamantové pilníky (velmi malé). užitečné pro ruce a tuby kolem 15 liber
  8. hrubý a hladký brusný papír
  9. některé malé svorky drží věci na místě při vrtání.
  10. svěrák ze stejného důvodu.

Krok 1: Nastavení telefonů, aby posílaly svou polohu vašemu Pi (část I MQTT Broker)

Tento bit velmi dobře popisuje ppeters0502 ve svém vynikajícím Weasley Clock Instructable. Kupodivu, i když možná odrážející různé dovednosti, začal s sestavením a poté přešel na software, já jsem to udělal naopak. Takže jsem začal s telefonem … počkejte, ne, ne, začal jsem s brokerem MQTT, což je krok 6 v jeho Instructable. Vynechám všechny kousky, které si vede velmi dobře, a přidám jen kousky, které bych mohl přidat. Šel jsem cestou CloudMQTT, kterou zmínil.

ALE když jsem to psal, zkontroloval jsem odkaz na plány a zjistil, že již neexistuje žádný bezplatný plán! Z důvodu rozumných důvodů to stáhli. tj. že lidé založí bezplatnou instanci a pak ji nikdy nepoužijí. Nevšiml jsem si, protože aktuální instance mohou pokračovat. Takže se nezměním. Ale dělá to pokyny trochu nadbytečnými. Zdá se, že existují 3 možnosti.

  1. Plaťte 5 $ měsíčně za Cloud MQTT (ale to zní pro hodiny průběžně draho).
  2. Jděte po trase Mosquitto na Pi, jak je popsáno v prvním Instructable. Nemohu se k tomu vyjádřit, ale může to být dobrá volba.
  3. Stačí vygooglit „bezplatného cloudového brokera MQTT“a vypadá to, že existují i další.

Takže za předpokladu, že máte fungujícího brokera MQTT, pokud se jedná o něco jako CloudMQTT, zobrazí se server, uživatel, heslo a port. To vše budete potřebovat k nastavení telefonů pro zasílání makléřů vašich míst/pohybů.

Krok 2: Nastavení telefonů tak, aby posílaly svou polohu na váš Pi (část II Owntracks)

To je také velmi dobře pokryto v původním Instructable, v krocích 7 (Android), 8 (iOS) & 9 (nastavení regionů).

Měl jsem pouze zařízení iOS, takže jsem krok 7 nezkoušel.

Co bych k těmto pokynům dodal?

  1. V nastavení jsou také pole TrackerID a DeviceID. Ty byste měli mít, protože vás dokážou identifikovat ve vaší rodině. Např. Měl jsem je jako R a RPhone. To znamená, že můžete k hodinám projít, které servo a tedy kterou rukou otočit.
  2. Regiony jsou názvy míst, která chcete sledovat.
  3. Každá oblast je definována názvem, zeměpisnou šířkou, délkou a poloměrem.
  4. Protože jsem chtěl mít na svých Hodinách několik míst jako jednu sekci, použil jsem konvenci pojmenování, která se ukázala jako velmi užitečná. Jsou možné i jiné metody, ale mně to fungovalo.

    • Například pro část RODINY v hodinách jsem chtěl mít rodiče a sourozence a rodiče a sourozence mé ženy. Proto jsem měl místa jako „Family Tom“, „Family Dick“, Family Harry „a“Family ParentsR “. To znamenalo, že další fáze mohla vědět, co předat Hodinám.
    • Mějte na paměti, že lidé mohou mít různá umístění. Ale pokud jsou v souladu s konvencí pojmenování, pak je to v pořádku. Např. moje práce by se lišila od pracovní oblasti mé ženy a nazývala by se jinak. ale dokud oba začnou „pracovat“, pak je vše v pořádku.
  5. Chcete, aby byl režim na obrazovce Map nastaven na „Významný“. To znamená, že zprávy (většinou) dostanete pouze při zadávání nebo opouštění oblastí. Zdá se, že se jedná o aktualizovanou verzi poznámky označené DŮLEŽITÉ: na konci kroku 8 v původním Instructable.
  6. Jak již bylo zmíněno v původním Instructable, pomocí Google Maps je skvělý způsob, jak zjistit Lat/Long někde. Zjistil jsem, že je efektivnější to udělat hromadně, zjistit všechny zeměpisné šířky/délky mé polohy, poté jsem je vložil do Notes (na mém počítači Mac) a díky synchronizaci s cloudem to znamenalo, že se magicky objevily na mém iPhone v Notes a mohl jsem je zkopírovat/vložit do Owntracks. Také to znamenalo, že jsem mohl soubor poslat na telefony své rodiny a všichni jsme měli shodná umístění.
  7. Umístění blízko sebe může způsobit problémy. Můj bratr žije o 2 ulice dál a můj telefon si původně myslel, že jsem současně v oblasti jeho domu i doma. Nakonec jsem musel do Node Red vložit další logiku, abych zachytil a ignoroval tuto událost.

Krok 3: Nastavení Raspberry Pi

Nastavení Raspberry Pi
Nastavení Raspberry Pi

Tady tedy předpokládám, že máte základnu Pi nastavenou a na wifi. Běžel jsem Raspbian, ale to by nemělo vadit. Pomocí pokynů na raspberrypi.org vše nastavíte.

Všimněte si, že Pi má porty pro zobrazení na monitor a klávesnici/myš atd. ALE jakmile to máte v hodinách, nic z toho nechcete. Myslím, že odpověď, kterou navrhl někdo na webu Raspberry pi, bylo nastavení připojení VNC. To vám umožní připojit se k jinému zařízení k Pi a také jej ovládat. Dělám to z počítače Mac, ale také z iPadu. Pro snadné použití bych doporučil použít něco s klávesnicí.

Právě jsem zjistil, že se zdá, že to usnadnili, protože jsem se připojil … viz zde

V podstatě se připojíte a získáte okno, které je standardním rozhraním Pi.

Takže máte okno do svého Pi z vašeho notebooku nebo počítače.

Nyní musíte připojit serva.

Nejprve musíte udělat docela základní pájení, abyste dostali klobouk adafruit na Pi. Je to trochu hloupé, ale přesto, že jsem 30 let nepájel, bylo to v pořádku. Jako vždy jsem našel užitečné video z YouTube, které mě provedlo, což byla velká pomoc.

Zatímco klobouk může provozovat 16 serv, potřeboval jsem pouze 4 a tak jsem se obtěžoval pouze s pájením první sady 4 pinů.

Pak serva stačí zatlačit na čepy. Nejprve jsem udělal jeden, abych zkontroloval, zda se servo skutečně může pohybovat.

Tady jsem narazil na svou první velkou zátaras. Měl jsem velmi základní python skript pro přesun serva a doslova se nic nestalo. Strávil jsem asi týden zkoušením nových skriptů atd. A pak se na klobouku začal objevovat kouř. Když jsem všechno vypnul, zkontroloval jsem schéma. Jednalo se o součást, která chrání proti přepólování. Protože jsem měl napájecí zdroj s více špičkami a více napětími, postrádal jsem skutečnost, že byste mohli mít stejnosměrný výstup obousměrný obrácením špičky. Zle jsem to pochopil (šance 50:50) a právě jsem spálil svůj první adafruitový klobouk

:-(Takže malé zpoždění, když jsem koupil nový, znovu připájel a opravil hrot. Mnohem lepší.

Dále jsem musel vyřešit, jak přesunout serva do správného bodu na hodinách. To přijde v kroku 5, ale co jsem udělal, když jsem nevytvořil skutečné hodiny, bylo lehce přišroubovat serva k náhodnému kousku dřeva a nalepit na ně maskovací pásku se šipkou, jako na obrázku. To poskytlo velmi vizuální zpětnou vazbu k tomu, co jsem kódoval.

Krok 4: Instalace Node Red (Získání zpráv ze serveru MQTT do vašeho skriptu Python)

Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)
Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)
Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)
Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)
Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)
Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)
Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)
Instalace Node Red (Získávání zpráv ze serveru MQTT do skriptu Python)

Node-RED je program, který nainstalujete na Pi a který vám poskytne vizuální rozhraní (ve vašem prohlížeči) pro příjem zpráv z vašeho serveru MQTT a jeho použití k předání správných informací do vašeho python skriptu (popsáno v dalším kroku (Krok 5). Do značné míry jsem použil pokyny od ppeters0502 v kroku 5. V těchto tocích je logika a v pythonu další logika a v každém můžete mít více či méně, v závislosti na vašich preferencích. V zásadě musíte udělat následující

  1. Mají přijímací uzly pro zprávy MQTT - ty jsou světle purpurové a měl jsem 1 na člena rodiny
  2. Namapujte to na servo, které chcete přesunout (číslované 0, 1, 2, 3)
  3. Zjistěte, zda zadáváte nebo opouštíte poloměr na OwnTracks
  4. Zjistěte, na které místo musí servo směřovat

    Existovalo několik výjimek ze základních pravidel, které jsem potřeboval zabudovat

  5. Nastavte úhel správně

Nechal jsem Node-RED dělat první 4 a udržoval Python relativně jednoduchý.

Zde můžete vidět základní tok a všechny toky lze exportovat do formátu zde, což znamená, že tento základní tok můžete importovat do svého Node-RED a poté se přizpůsobit. Všimněte si, že jsem odstranil všechna připojení z fialových uzlů, takže nemůžete přistupovat k mé instanci MQTT. Také jsem odstranil všechny testovací uzly, protože obsahují skutečná data … možná budete muset změnit tento typ souboru na flows.json, abyste jej mohli importovat do Node-RED, ale Instructables mi to nedovolil nahrát.

Zelené uzly jsou ladicí uzly, které pak zobrazují výstup v ladicím okně v pravé části obrazovky (může být potřeba rozbalit - najít šipku v půli cesty vpravo)

První bit, který musíte udělat, je bit „Živě - pouze pro ladění“. Tím se zkontroluje, zda můžete přijímat zprávy MQTT, a uvidíte, co v nich je. json je jen strukturovanější verze zpráv, která vám umožní snadnější získání dat. V tomto toku, když je živý, pak připojím fialové uzly vlevo nahoře k uzlu json napravo od nich.

Testovací uzly

Jakmile víte, jak budou zprávy vypadat naživo, bude velmi nudné vyjít z domu a po silnici a zpět, jen aby se spustila událost. Jakmile to uděláte, můžete zprávu zkopírovat do spouště TESTU a poté na ni jednoduše simulovat událost. Můžete také změnit data tak, aby předstírala, že jsou pro různá umístění (ujistěte se, že přesně odpovídají názvům umístění v Owntracks).

Na toku můžete vidět, že všechny testovací případy přecházejí do samostatného uzlu a poté do uzlu json. Jedná se čistě o uklizení obrazovky.

Nemohu dostatečně zdůraznit, jak užitečné tyto uzly byly a stále jsou.

Volání Pythonu

Takže jsem pak narazil na další zátaras. Tohle zabralo hodně googlování ve fórech atd. Můj tok by fungoval perfektně, ale nespustil by můj python skript. Nemohl jsem to vyřešit, ale ušetřím vám nadávání atd. Jen abych řekl, jak je zdůrazněno na druhém snímku obrazovky, musíte zadat python3, protože Node-RED zjevně předpokládá python2, pokud neurčíte.

2 další komplikace - pouze v případě potřeby

Pak jsem měl řadu výzev, kde logika úplně nefungovala. Zaprvé to bylo tak, že Owntracks jsou trochu divné, a protože můj bratr žije o 2 ulice dál, často říkalo, že jsem byl na 2 místech najednou, nebo jsem mezi nimi stále přepínal. Jediný způsob, jak jsem to mohl obejít, bylo přidat podmínku k zastavení falešných poplachů. Pokud to tvrdilo, že jsem v jeho domě, pak jsem prošel a zkontroloval skutečnou délku/šířku ve zprávě a přerušil ji, pokud říkal, že jsem skutečně doma.

Dalším problémem bylo, že jsem při venčení psa nemohl získat dobrý poloměr. Obvykle chodím ve stejné oblasti, takže zde jsem řekl „pokud vstoupím do této oblasti, určitě venčím psa a budu, dokud se nedostanu domů“. to znamenalo, že se nepřepne do hospody, kterou míjím po cestě domů, nebo na různá další místní místa, která by se mohla spustit při venčení psů. Abych to mohl udělat, potřeboval jsem nastavit nějaké trvalé proměnné kontextu (podívejte se na ně na Node-RED. Viz screenshot. Tyto proměnné přetrvávají, dokud se Node-RED nerestartuje, a tak mohu říci, jestli na procházce psem, nastavte proměnnou kontextu "Psa". Pak ignorujte NIC JINÉHO, pokud nevstoupím domů.

Poslední snímek obrazovky je ten můj skutečný konečný tok, se všemi výjimkami, jen pro váš zájem.

Krok 5: Vlastně přesouvání serva s Pythonem na Pi

Krátké odbočení do serva. Nevěděl jsem nic o servech, ale na internetu je spousta informací. Použil jsem nepřetržitá serva, která se mohou otáčet o 360 stupňů a hladce. Druhým hlavním druhem jsou kroková serva, která se pohybují po částech (kroky) a zjevně dosahují pouze asi 180 stupňů (zde zjevně není užitečné). Výhodou krokových serva je, že stačí naklonit úhel a oni se přesunou do tohoto bodu a zastaví se. Veškerá dokumentace, kterou jsem našel, říkala, že nepřetržitá serva fungují tak, že dostanou rychlost a čas na udržení této rychlosti (např. Plnou rychlost po dobu 1 s) a skončí tam, kde skončí, ale je to relativní vzhledem k jejich počátečnímu bodu. Po mnoha pokusech jsem to nemohl dostat do práce, ale pomocí zkušebního zařízení jsem zjistil, že serva se stále vrací do stejného bodu pod stejným úhlem. Což je mnohem jednodušší, tak jsem to udělal. Může existovat nějaká stinná stránka, o které nevím, ale funguje to na mě. Všimněte si však, že každé servo je jedinečné, a proto musíte mít pro každé servo jedinečnou sadu úhlů. Zjistil jsem, že je nejjednodušší mít skript „kalibrace“pythonu, kde bych mohl postupně nastavit serva na úhly a vylepšovat je, dokud nebudou všechny vypadat správně. Toto je první připojený skript. Stačí okomentovat serva, která netestujete, soustředit se na jedno a poté upravit hodnoty podle potřeby. POZNÁMKA: kalibrace na zkušební stolici je jednoduchá, hrubá a připravená. Po sestavení hodin budete muset znovu kalibrovat, protože převody atd. Vše změní. Pak je druhý skript celkem základní. To dělá následující

  1. Importujte několik knihoven
  2. přesuňte proměnné pocházející z Node-RED do proměnných ve skriptu
  3. mapuje úhly určené kalibračním skriptem na místa na hodinách.
  4. zkontrolujte, zda je místo v seznamu nalezeno, a pokud ne, přejděte na „Nebezpečí“
  5. zapište, co bylo provedeno do souboru protokolu
  6. přesuňte požadované servo do požadovaného úhlu
  7. Zastavte „bzučení“jednoho serva *

3 věci na vědomí.

Soubor protokolu je velmi užitečný pro ladění. To znamená, že se můžete podívat na ladění zprávy Node-RED a poté zjistit, co se ve skriptu stalo. výstup vypadá takto. První tři jsou já, když vezmu psa na procházku, a potom Dítě 1 opouští dům a přichází do školy. Poznámka: zkontrolujte čas na Pi. Může mít výchozí hodnotu UTC a neumožňuje změnu letního/zimního času. Např. níže uvedené časy jsou 1 hodinu.

2020-12-07_05: 36: 03 Who = 0, loc = Traveling, detail = Home, Angle = 10, index = 8

2020-12-07_05: 36: 04 Kdo = 0, místo = pes, detail = astony, úhel = 86,5, index = 10

2020-12-07_06: 07: 49 Who = 0, loc = Home, detail = entry, Angle = 75, index = 0

2020-12-07_06: 23: 53 Who = 2, loc = Traveling, detail = Home, Angle = 19, index = 8

2020-12-07_06: 30: 48 Kdo = 2, místo = škola, detail = N, úhel = 60,5, index = 2

Servo-bzučení

Jedno ze serva (0) po skončení skriptu stále bzučelo. Dokážete si asi představit, že je to v naší kuchyni velmi nepříjemné. Někde jsem našel vlákno, které zmínilo nastavení úhlu serva na 'žádný', což nějak nastavilo, že je nečinný. To fungovalo skvěle a je to vidět na scénáři na konci.

Časování

Mějte na paměti, jak nízko se ruka táhne nepřetržitě. Ve skriptu můžete vidět, že existuje řádek time.sleep (4) těsně předtím, než nastavíme servo, aby přestalo bzučet. Důvodem je, že musíte nechat ruku, aby se dostala na místo určení, než ji nastavíte na volnoběh. Jinak to prostě přestane. To je také důležité při jeho kalibraci, protože ve skriptu provádíte více tahů. Nastavil bych běh tak, aby se postupně přesunul na všech 12 míst, abych je mohl všechny znovu zkontrolovat. ale mezi tím potřebuješ trochu času.

Krok 6: Dokončení softwaru - telefony na serva

Až budete mít testovací lavici a skripty nastaveny, můžete je na chvíli spustit „naživo“a zjistit, jak to funguje v reálném čase. Zde jsem našel výjimky, které jsem potřeboval přidat do svého toku Node-RED.

Pokud se chcete soustředit na jednoho, můžete snadno odpojit a připojit členy rodiny v toku Node-RED. Pokud například dva způsobují problémy, ale chcete opravit jeden po druhém. V opačném případě mějte na paměti, že budete nadále přijímat zprávy ze všech připojených telefonů.

Zmínil jsem problém s Dog-walking a dům mého bratra byl docela blízko. Měl jsem 2 další výzvy.

Nejprve umístění v jiných lokalitách. Moje žena dělala kurz na vysoké škole v Londýně. Chtěli jsme, aby se to zaregistrovalo jako „škola“, ale je to také v „Londýně“. Potřebovali jsme tedy znovu použít kontext, abychom řekli, že pokud odcházíte z té „školy“, pak se přesuňte do „Londýna“, nikoli do „cestování“.

Za druhé, závodní podmínky. Jak již bylo zmíněno, dům mého bratra je o 2 ulice dál a také poblíž naší oblíbené hospody/restaurace. To znamená, že někdy jsou přijímány 2 signály současně nebo velmi blízko sebe. To může nastavit „závodní podmínky“, kde získáte různé výsledky v závislosti na tom, která logika prochází nejrychleji, což vede k nepředvídatelným výsledkům. Abych tomu mohl čelit, udělal jsem, že všechny 'zadávací' zprávy mají v logice zpoždění 1 s, což se zdálo problém vyřešit. Možná existují lepší, elegantnější způsoby, jak to vyřešit, ale zdálo se, že to funguje.

Krok 7: Sestavení fyzických hodin - část I - serva a náprava

Budování fyzických hodin - část I - serva a náprava
Budování fyzických hodin - část I - serva a náprava
Budování fyzických hodin - část I - serva a náprava
Budování fyzických hodin - část I - serva a náprava
Budování fyzických hodin - část I - serva a náprava
Budování fyzických hodin - část I - serva a náprava

Teď ten kousek, o kterém jsem si byl nejméně jistý, a proto jsem to nechal vydržet. Chtěl jsem slušnou velikost obličeje a snadnou konstrukci. Byl jsem také nervózní z toho, že jsem fyzicky dostal 2 serva kolem centrální nápravy. To znamenalo, že když jsem se krátce podíval na ebay na staré hodiny podle instrukcí, které jsem sledoval, rozhodl jsem se dát si více šancí tím, že si ho sám postavím.

  • Dostal jsem 2 velké (~ 30 cm) čtverce překližky, kolem kterých jsem ležel (asi 9 mm tlustý).
  • Potom jsem rozřezal starou zábradlí na části 4x10 cm a přišrouboval přední a zadní desky k sobě.
  • Po označení středového otvoru jsem vyvrtal, aby měl stejnou velikost jako největší mosazná trubka.
  • Pak jsem to natřel normální bílou lesklou barvou.
  • Po nějakém experimentování jsem si uvědomil, že bych pravděpodobně nemohl dostat 4 serva kolem stejné nápravy, kdyby byla všechna připevněna k zadní (nebo přední) desce. Takže jsem potřeboval mít buď 3 + 1 nebo 2 + 2, na každém talíři. Skončil jsem s 3 vzadu a 1 s vpředu.
  • Vypracoval jsem požadované ofsety na kus papíru a poté nařízl mosazné trubky, aby odpovídaly. Všimněte si, že nejtlustší trubice je nejkratší a nejtenčí musí jít až k zadní desce. (Nejmenší jsem vlastně zapíchl do otvoru, který jsem částečně vyvrtal v zadní desce, ale ne úplně skrz, aby se náprava nepohybovala dozadu).
  • K trubkám jsem koupil řezačku trubek, ale ta je řezá tlakem, což znamená, že menší trubku nedostanete dovnitř. Použil jsem tedy pilku a pak jsem musel udělat pořádnou dávku, abych je dostal do práce. Soubory diamantových bodů zde byly neocenitelné.
  • Potom jsem připojil diagram ke skutečným offsetům pro svorky a ozubená kola *.
  • Jakmile jsem měl offsety, věděl jsem, jak „vysoko“udělat bloky pro montáž serva. Rozbil jsem pár bloků tak, že jsem je viděl příliš tenké a také jsem vyvrtal díru, abych nechal drát ven.
  • Pak přišla ta hloupá část, kam dát bloky, aby přesně odpovídaly zubům na nápravě. Zašrouboval jsem jeden blok a pak jsem mohl otočit servo, aby se setkalo s nápravou, a pak zašroubovat druhý blok na druhý konec serva. Také jsem zjistil, že potřebuji trochu vystřihnout z některých bloků, abych se nezachytil o další ozubená kola. Trvalo to docela dlouho.
  • Jakmile jsem měl vše hotovo, vzal jsem svůj malinový kufřík, vyvrtal do něj dva otvory a přišrouboval jej k přední desce. Pak jsem mohl přidat Pi, zavřít přední a zadní desku (po připojení serva k pi (pamatovat si, které servo bylo pro kterého člena rodiny) a obrátit se k rukám…

* Zde jsem našel největší problém, který ještě musím zcela vyřešit. Mosazné trubky byly 1/4 ", 7/32", 3/16 ", 5/32". Ale svorky byly metrické (kromě jedné, která byla 1/4 "). Při převodu trubek na metrické byly 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. Zbývající svorky byly vrtány 4 mm, 5 mm a 6 mm. Nejmenší 2 a největší jsou v pořádku. ale jasně, 0,44 mm je příliš velký zdvih pro svorku, takže jsem to musel vycpat papírem. Zkoušel jsem to několikrát a chvíli to funguje dobře a pak se zase uvolní. Takže 2. největší ruka nefunguje správně. Bylo to v pořádku asi 6 měsíců, takže čas strávený tím, že jsem to udělal dobře, byl čas dobře investovaný. Ale kdybych to dělal znovu, možná bych šel o 1 velikost nahoru nebo dolů, s mezerou, abych se pokusil dostat lepší upnutí na trubku. např. jít na 9/32 ", 1/4", (mezera), 3/16 ", 5/32"

Krok 8: Ručičky hodin

Hodinové ručičky
Hodinové ručičky
Hodinové ručičky
Hodinové ručičky
Hodinové ručičky
Hodinové ručičky

Rozhodl jsem se pro ocelový plech, protože jsem chtěl něco tuhého, ale méně pravděpodobného, že by to prasklo, když jsem to vyráběl. Také tenkost znamenala, že 4 ruce byly menší problém.

  • Nejprve jsem načrtl tvar.
  • Pak jsem to přenesl na ocel na nějakou maskovací pásku.
  • Pak jsem je velmi neodborně vyřízl skládačkou. Byli a jsou všichni jiní, ale to mi nevadí.
  • Pak mi přítel navrhl, abych si na jejich tvarování vypůjčil jeho stolovou brusku, a to bylo skvělé. vysoce doporučeno. Jinak podání trvá věky.
  • Ještě bylo třeba udělat nějaké pilování a poté broušení, aby nebyly ostré hrany a také pěkný povrch.
  • Musel jsem vyvrtat otvory, aby odpovídaly příslušným mosazným trubkám (pro kontrolu použijte odříznuté trubky, ne ty namontované na hodinách).
  • Zjistil jsem, že díry potřebují trochu piliny, aby se dostaly na trubice, ale jakmile byly zapnuté, byly těsné a nepotřebovaly žádné lepidlo. Výjimkou byla přední ruka, kterou jsem chtěl mít „kryt“. Po vyvrtání díry jsem vyřízl (většinou) kulatý kus oceli a dostal ji na správnou velikost a přilepil ji dopředu. můžete to vidět na posledním obrázku. Přední ruka občas potřebovala k zajištění špínu lepidla, ale po několika falešných startech ruce fungovaly opravdu dobře.
  • Odmítl jsem myšlenku fotografií (protože děti by si rychle stěžovaly na naše fotky z rande), a tak jsem se spokojil s malováním na iniciály akrylovou barvou.

Krok 9: Dokončete

Kompletní!
Kompletní!
Kompletní!
Kompletní!

Všechno to funguje opravdu pěkně. Ruce jsou někdy trochu mimo, podle toho, odkud přišly, ale ve skutečnosti na tom nezáleží, protože každé místo je část, nejen čára.

Někdy, kupodivu, můj telefon odmítne uznat, že jsem doma. Když jsem zobrazen na mapě, jsem jasně v okruhu Owntracks, a i když je přesnost dobrá … Nemám tušení, proč. nezdá se, že by to postihlo zbytek mé rodiny. ale nastavení je stejné. To znamená, že Owntracks nikdy neposílá zprávu a já se zasekl v „cestování“. Ale obvykle se to nakonec vyřeší samo.

Bylo velmi užitečné mít v naší kuchyni, hlavně vědět, kdy se dívky chystají domů ze školy nebo domů svých přátel, a kdy pro ně mít připravené jídlo/čaj.

Opět velký hattrick díky @ppeters0502 za skvělé pokyny, které je třeba dodržovat. Naštěstí tyto mohou přidat něco k výrobě hodin se 4 ručičkami.

Krok 10: Věci, které jsem se naučil a které by byly lepší/jinak, kdybych to měl udělat znovu

  • Fyzická sestavení vyžadují pokus a omyl. Problémy s vesmírem nelze předvídat, stačí se ponořit a vyzkoušet.
  • U kódu jsou problémy s googlováním zásadní
  • Začněte základní a budujte. Serva na dřevě zkušebního stavu znamenala, že jsem většinu z nich mohl provozovat bez fyzické stavby
  • Možná jsem nechal laserem vyříznout ruce na CNC stroji. Ale nevěděl jsem, kde je ten místní, a líbí se mi, jak se měkká ocel osvědčila (byla levná a bruska to velmi usnadnila)
  • krokový motor může být možný, pokud použijete ozubení k otočení o 360 otáček. ale pak možná budete muset mít serva příliš blízko centrální nápravy
  • Existují 2 typy serv (Futaba a HiTech). Ujistěte se, že jste to zkontrolovali, protože mají na spline různý počet zubů. A původně jsem koupil ty špatné …
  • Nepřipojujte klobouk se špatnou polaritou;-)
  • Google a Stack Overflow jsou vaši přátelé, když se zaseknou. Musíte však použít dobré vyhledávací dotazy …
  • Testovací lavice je vlastně způsob, jak mnohem jednodušeji získat levnější verzi. Většina komplikací při stavbě pochází z nutnosti otáčet rukama kolem stejné nápravy. Pokud v tom uděláte kompromis, pak je vše mnohem jednodušší. A domnívám se, že 4 může být limitem jedné nápravy, pokud se hřídel nedostane mnohem déle. Mohli byste, předpokládám, mít 3 na přední desce a tři na zadní desce, pokud by hřídel byla delší …

Krok 11: Možná budoucí rozšíření…?

Nápady, které jsem měl o dalších krocích, jsou následující.

  1. Chtěl bych znovu upravit starý iPad jako ciferník. tj. vytvořit digitální hodiny. Možná v prohlížeči nebo v aplikaci. Protože fyzické hodiny jsou v podstatě bez státní příslušnosti (tj. Neví, kde se aktuálně nacházejí, kromě toho, že ruce jsou ve fyzické poloze), potřeboval bych mít trvalé úložiště dat. Node Red umí zapisovat do místního systému souborů, takže bych to asi udělal.
  2. Pokud bych to udělal, rád bych to viděl mimo domov. Ale pak opravdu musíme vyřešit zabezpečení. Protože přístup ve stejné síti WiFi je jedna věc, přístup z internetu je věc druhá. V současné době nemám ponětí, jak to nejlépe udělat, ale mám podezření, že by předplatné MQTT, které by šlo jiným způsobem, mohlo fungovat (pi zveřejňuje aktuální stav a externí zařízení se k němu přihlásí) …?
  3. Docela bych si přál jednu ruku pro 'Abroad'. ale to by mohlo být z hlediska OwnTracks složité. Možná by se dalo použít jen long/lat v kombinaci s nějakými obrovskými poloměry?

Doporučuje: