Innehållsförteckning:

'Weasley' Location Clock med 4 händer: 11 steg (med bilder)
'Weasley' Location Clock med 4 händer: 11 steg (med bilder)

Video: 'Weasley' Location Clock med 4 händer: 11 steg (med bilder)

Video: 'Weasley' Location Clock med 4 händer: 11 steg (med bilder)
Video: Lagoon 52 - 2000nm, Amsterdam to Mediterranean, ex Great Circle 2024, Juli
Anonim
"Weasley" läge klocka med 4 händer
"Weasley" läge klocka med 4 händer

Så, med en Raspberry Pi som hade sparkat runt ett tag, ville jag hitta ett trevligt projekt som skulle låta mig utnyttja det på bästa sätt. Jag stötte på denna fantastiska Instructable Build Your Own Weasley Location Clock av ppeters0502 och tänkte att det skulle vara bra att prova.

Klockan består i princip av en Raspberry Pi som styr servon för att vrida händerna på klockan. Precis som i familjen Weasley i Harry Potter -böckerna/filmerna har varje familjemedlem sin egen hand. Varje hand pekar på den aktuella platsen för den familjemedlemmen. Klockan uppnår detta genom att ta emot meddelanden från familjens mobiltelefoner när de går in eller lämnar en fördefinierad radie.

De största skillnaderna med den tidigare instruerbara var att jag behövde ha 4 händer, inte 2 (annars skulle mina döttrar ha klagat) och jag bestämde mig för att bygga ramen också, inte få en gammal klocka att återanvända. Detta var för att jag var orolig för att utrymme skulle vara ett problem i ett befintligt klockfodral, med behovet av att passa in i 4 servon etc.

Det tog mycket längre tid än jag förväntade mig, men mestadels där jag stötte på jobbiga problem som stubbade mig och som inte tycktes täckas av det ursprungliga inlägget. Ingenting mot den ursprungliga Instructable, som i allmänhet var bra, men några år hade gått och versioner av saker förändrades … etc. Att vara i Storbritannien innebar också att några av de kejserliga/metriska elementen orsakade fler utmaningar än jag förväntat mig.

Även om jag är okej med kodningen sträckte det fysiska arbetet med klockan mig definitivt och krävde några ytterligare verktyg, vilket också bromsade mig något.

I slutet kommer jag att inkludera ett avsnitt om "Saker jag skulle göra annorlunda/bättre om jag skulle göra det igen …"

Tillbehör:

En av de saker som slog mig var att de dyra komponenterna skulle göra med klockans händer. 4 händer är definitivt mycket dyrare än 2. Jag bestämde mig för att lägga in några kostnadsberäkningar så att du har en aning. Det här är första gången jag har lagt ihop det hela, och bortsett från verktygen tror jag att jag har spenderat cirka 200 pund. Plus några saker jag inte använde (och har inte inkluderat nedan) plus Pi, plus strömförsörjningen som jag redan hade.

Pi osv

  1. Raspberry Pi - kommer inte ihåg hur mycket det ursprungligen kostade men det var en modell 2B. Jag tror att om du inte redan har en så skulle troligen även en Pi Zero göra det. Jag hade lagt till en wifi -dongel och SD -kort med Raspbian. Och jag hade en gammal Android -telefonladdare liggande.
  2. Adafruit Servohat för Pi - £ 16
  3. Strömförsörjning för Servohat - Det här kämpade jag verkligen för att hitta eftersom alla webbplatser bara pekade på adafruit -sajten som då uppenbarligen rekommenderar en amerikansk strömförsörjning. Då insåg jag att jag hade en gammal variabel spänningsmatning med utbytbara tips så jag använde det. Men den amerikanska är $ 8 så det är ballparken.
  4. Väska till Pi, så att jag sedan kunde fästa den på klockramen. £ 5

Servo och växlar

Här citerar jag priset för alla 4, så dela om du vill ha färre händer (Lägga till det är ~ £ 40 PER HAND = £ 160: -o

  1. 4 x servon-jag använde de som rekommenderas av ppeters0502-hittades på ebay för ~ £ 15 styck = £ 60-jag sökte efter följande text "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "men ibland var de inte tillgängliga
  2. 4 x mässingsrör som sitter exakt inuti varandra - ~ £ 3 styck. Jag fick 1 vardera 1/4 ", 7/32", 3/16 ", 5/32" = £ 11
  3. 4 x klämmor som kläms fast på mässingsrören så att du kan fästa kugghjul. ~ £ 7 styck = £ 28. Jag fick dem från ActiveRobots som gör regelbundna beställningar från Servocity i USA, så att du kan undvika den internationella frakten. De kan också få allt annat du kan hitta på Servocitys huvudsakliga amerikanska webbplats. Detta var mycket praktiskt för de nästa 2 artiklarna
  4. 4 x acetyl 0,770 "mönster kugghjul för montering på klämnaven. ~ £ 6 styck = £ 24
  5. 4 x acetyl spline-monterade acetylväxlar för montering på servon. ~ £ 6,50 styck = £ 26
  6. 1 x förpackning sexkantmuttrar till fästdrev till klämmuttrar = 2,60 kr
  7. 1 x 7/64 "hexnyckel (insexnyckel) eftersom allt som kommer från USA är kejserligt, så de hundratals insexnycklar jag redan har är värdelösa = £ 1

För den fysiska byggnaden

Här använde jag mest avskärningar av saker jag hade ljugit om

  1. 2 x rutor plywood för plattan "ansikte" och "baksida"
  2. Jag klippte sedan 4 x 10 cm cylindrar av en gammal räcke som jag hade för att ansluta baksidan till ansiktet
  3. Några block för att montera servon vid rätt förskjutning - bara avskärningar av barrträ som jag skär till i storlek.
  4. Diverse skruvar. från mycket liten (för att fästa Pi -fodral till ram) till medium (för att fästa ramen tillsammans)
  5. 0,75 mm plåt av mjukt stål ca 50 cm x 20 cm (för att skära händerna ur). Detta var det enda jag köpte ~ £ 9 från Wickes

Verktyg

Vissa saker hade jag och en del hade jag lånat eller köpt

  1. Lödkolv + elektrisk löd - för att fästa kontakterna på Adafruit Hat & Pi.
  2. Pussel - för att skära ut den grova formen på händerna
  3. Borra. bara en vanlig sladdlös 18V borr
  4. Borrbitar - Tänk på att du kommer att behöva kejserliga borr för att göra hål som matchar mässingsrören. Jag lyckades låna några.
  5. bågfil - för skärning av mässingsrören. Gör inte vad jag gjorde och spendera £ 3 på rörskäraren, det fungerar med tryck och innebär att rörens insida blir lite mindre. så att röret i nästa storlek inte passar igenom
  6. Bänkslipmaskin - jag hade inte en av dessa men en vän hade det och det gjorde det mycket lättare att forma händerna. Fram till dess använde jag bara filer. Jag skulle inte köpa en bara för det här projektet, men för metallhänderna var det bra.
  7. Jag köpte några olika diamantspetsfiler (mycket små). användbart för händer och rör runt £ 15
  8. grovt och slätt sandpapper
  9. några små klämmor håller saker på plats vid borrning.
  10. en vice av samma anledning.

Steg 1: Konfigurera dina telefoner för att skicka deras plats till din Pi (del I MQTT -mäklare)

Denna bit beskrivs mycket väl av ppeters0502 i sin utmärkta Weasley Clock Instructable. Konstigt, men kanske återspeglar olika färdigheter, började han med bygget och flyttade sedan till programvaran, jag gjorde det tvärtom. Så jag började med telefonen … vänta, nej det gjorde jag inte, jag började med MQTT -mäklaren, vilket är steg 6 i hans instruerbara. Jag kommer att utelämna alla bitar som han gör mycket bra och bara slänga in några bitar som jag kan lägga till. Jag gick CloudMQTT -rutten som han nämnde.

MEN när jag skrev detta kollade jag länken till planerna och upptäckte att det inte längre finns en gratis plan! De drog tillbaka det, för vad som verkar vara rimliga skäl. dvs att människor skulle skapa en gratis instans och sedan aldrig använda den. Jag märkte inte eftersom nuvarande fall kan fortsätta. Så jag kommer inte ändra mig. Men det gör instruktionerna lite överflödiga. Det verkar finnas 3 alternativ.

  1. Betala $ 5 per månad för Cloud MQTT (men det låter löpande dyrt för klockan).
  2. Gå Mosquitto on Pi -rutten enligt beskrivningen i den första instruktionsboken. Jag kan inte kommentera det, men kan vara ett bra alternativ.
  3. Googla bara "gratis MQTT molnmäklare" så ser det ut som att det finns några andra.

Så, under antagandet att du har en fungerande MQTT -mäklare, om det är något liknande CloudMQTT så kommer det att visas en server, användare, lösenord och port. Du behöver allt detta för att konfigurera dina telefoner för att skicka mäklaren dina platser/rörelser.

Steg 2: Konfigurera dina telefoner för att skicka deras plats till din Pi (del II Owntracks)

Detta täcks också mycket bra i den ursprungliga Instructable, i steg 7 (Android), 8 (iOS) och 9 (konfigurera regioner).

Jag hade bara iOS -enheter så försökte inte steg 7.

Vad skulle jag lägga till i dessa instruktioner?

  1. I konfigurationen finns också fälten TrackerID och DeviceID. Dessa bör du ha för att kunna identifiera dig inom din familj. T.ex. Jag hade dem som R respektive RPhone. Detta innebär att du kan passera till klockan som Servo och därför vilken hand du ska vrida.
  2. Regioner är namnet på de platser som du vill spåra.
  3. Varje region definieras av ett namn, en latitud, en longitud och en radie.
  4. Eftersom jag ville ha ett antal platser som en sektion på min klocka använde jag en namnkonvention, vilket visade sig vara mycket användbart. Andra metoder är möjliga men detta fungerade för mig.

    • Till exempel, för FAMILJEN på klockan ville jag ha mina föräldrar och syskon och min frus föräldrar och syskon. Därför hade jag platser som "Family Tom", "Family Dick", Family Harry "&" Family ParentsR ". Detta innebar att nästa etapp kunde veta vad jag skulle skicka till klockan.
    • Tänk på att människor kan ha olika platser. Men så länge de är förenliga med namnkonventionen är det bra. T.ex. mitt arbete skulle skilja sig från min frus arbetsregion och kallas annorlunda. men så länge de båda börjar "Arbeta" så är allt bra.
  5. Du vill att läget är inställt på 'Significant' på kartskärmen. Det betyder att du (mestadels) bara får meddelanden när du går in i eller lämnar regioner. Detta verkar vara den uppdaterade versionen av anteckningen märkt VIKTIGT: i slutet av steg 8 i den ursprungliga instruerbara.
  6. Som nämnts i den ursprungliga instruktionsboken är att använda Google Maps ett bra sätt att ta reda på Lat/Long för någonstans. Jag tyckte att det var mer effektivt att göra detta i bulk, ta reda på alla lat/längder på min plats, sedan klistrade jag in dem i Notes (på min Mac) och med molnsynkronisering innebar det att de magiskt visade sig på min iPhone i Notes och jag kunde kopiera/klistra in dem i Owntracks. Det innebar också att jag kunde skicka filen till min familjs telefoner och vi hade alla konsekventa platser.
  7. Platser som ligger nära varandra kan orsaka problem. Min bror bor 2 gator bort, och från början trodde min telefon att jag samtidigt var i såväl hans hus som hemma. Så småningom var jag tvungen att lägga ytterligare logik i Node Red för att fånga och ignorera detta som händer.

Steg 3: Konfigurera Raspberry Pi

Konfigurera Raspberry Pi
Konfigurera Raspberry Pi

Så här antar jag att du har en bas -Pi installerad och på wifi. Jag körde Raspbian men det borde inte spela någon roll. Använd instruktionerna på raspberrypi.org för att få allt klart.

Observera att en Pi har portar för visning till en bildskärm och tangentbord/mus etc. MEN uppenbarligen när du har den i klockan vill du inte ha något av det. Så svaret, som föreslogs av någon på Raspberry pi -webbplatsen, tror jag, var att skapa en VNC -anslutning. Detta låter dig ansluta från en annan enhet till Pi och styra den också. Jag gör det från min Mac men har också gjort det från en iPad. Jag föreslår att du använder något med ett tangentbord för enkel användning.

Jag upptäckte precis att de verkar ha gjort det lättare sedan jag anslöt … se här

I huvudsak ansluter du och får ett fönster som är standard Pi -gränssnittet.

Så du har ett fönster till din Pi från din bärbara dator eller dator.

Nu måste du ansluta servon.

Först måste du göra en ganska grundläggande lödning för att få adafruithatten på Pi. Det är lite jobbigt, men trots att det inte har lödts på 30-åriga år var det bra. Som alltid hittade jag en användbar YouTube -video för att gå igenom den, vilket var till stor hjälp.

Även om hatten kan köra 16 servon, behövde jag bara 4 och jag orkade bara lödda den första uppsättningen med 4 stift.

Sedan trycker servona bara på stiften. Jag gjorde en först för att kontrollera att jag faktiskt kunde få servon att röra sig.

Det var här jag träffade mitt första stora vägspärr. Jag hade ett mycket grundläggande python -skript för att flytta servon och det hände ingenting. Jag tillbringade ungefär en vecka med att testa nya manus etc, och sedan började det dyka upp rök på hatten. När jag stängde av allt, kollade jag schemat. Det var en komponent som skyddar mot omvänd polaritet. Eftersom jag hade en flertippad, flerspänningskälla, hade jag missat det faktum att du kunde få likströmssignalen att gå åt båda hållen genom att vända spetsen. Jag hade fel (50:50 chans) och brände precis ut min första adafruit -hatt

:-(Så en liten fördröjning när jag köpte en ny, lodde om och korrigerade spetsen. Mycket bättre.

Därefter behövde jag räkna ut hur jag skulle flytta servon till rätt punkt på klockan. Det kommer i steg 5, men det jag gjorde, efter att inte ha byggt den egentliga klockan, var att skruva servon lätt till en slumpmässig bit trä och klistra lite maskeringstejp med en pil på dem, som på bilden. Detta gav en mycket visuell återkoppling till vad jag kodade.

Steg 4: Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)

Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)
Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)
Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)
Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)
Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)
Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)
Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)
Installera Node Red (Hämta meddelandena från MQTT -servern till ditt Python -skript)

Node-RED är ett program som du installerar på Pi, som ger dig ett visuellt gränssnitt (i din webbläsare) för att ta emot meddelanden från din MQTT-server och använda den för att skicka rätt information till ditt python-skript (beskrivs i nästa steg (Steg 5). Jag använde ganska mycket instruktionerna från ppeters0502 i steg 5. Det finns logik i dessa flöden och ytterligare logik i python, och du kan ha mer eller mindre i varje, beroende på dina preferenser. I grund och botten måste du göra det följande

  1. Har mottagande noder för MQTT -meddelanden - dessa är ljuslila och jag hade 1 per familjemedlem
  2. Mappa det till den servo som du vill flytta (numrerad 0, 1, 2, 3)
  3. Bestäm om du anger eller lämnar en radie på OwnTracks
  4. Ta reda på vilken plats som servon behöver peka på

    Det fanns några undantag från de grundläggande reglerna som jag behövde bygga in

  5. Ställ in vinkeln korrekt

Jag hade Node-RED att göra de första 4 och höll Python relativt enkelt.

Du kan se grundflödet här och alla flöden kan exporteras till formatet här, vilket innebär att du kan importera detta grundläggande flöde till din Node-RED och sedan anpassa. Observera att jag har tagit bort alla anslutningar från de lila noder så att du inte kan komma åt min MQTT -instans. Jag tog också bort alla test-noder eftersom de innehåller faktiska data … du kan behöva ändra denna filtyp för att vara flows.json för att importera till din Node-RED men Instructables tillät mig inte att ladda upp det.

De gröna noder är felsökningsnoder som sedan visar utdata i felsökningsfönstret till höger på skärmen (kan behöva utökas - hitta pilen halvvägs upp till höger)

Den första biten att göra är "Live - endast för felsökning". Det kontrollerar att du kan ta emot MQTT -meddelanden och se vad som finns i dem. json är bara en mer strukturerad version av meddelandena som låter dig få ut data lättare. I detta flöde, när jag lever, ansluter jag sedan de lila noder längst upp till vänster till json -noden till höger om dem.

Testa noder

När du väl vet hur meddelandena kommer att se ut live, blir det väldigt tråkigt att behöva gå ut ur ditt hus och nerför vägen och tillbaka, bara för att utlösa en händelse. När du har gjort det kan du kopiera meddelandet till en TEST -utlösare och sedan klicka på det för att simulera händelsen. Du kan också ändra data för att låtsas vara för olika platser (se till att de exakt motsvarar platsnamnen i Owntracks).

Du kan se i flödet att testfallen alla går in i en separat nod och sedan går det in i json -noden. Detta är enbart för att städa upp skärmen.

Jag kan inte nog understryka hur användbara dessa noder var och fortfarande är.

Ringer Python

Så jag träffade sedan nästa vägspärr. Den här tog en massa googling i forum etc. Mitt flöde skulle fungera perfekt, men det skulle inte utlösa mitt python -skript. Jag kunde inte lösa detta, men jag kommer att spara dig svordomar etc. Bara för att säga att, som markeras i den andra skärmdumpen, måste du ange python3, som tydligen Node-RED antar python2, om du inte anger.

2 ytterligare komplikationer - endast om det behövs

Jag hade sedan ett antal utmaningar där logiken inte riktigt fungerade. Först var det att Owntracks gick lite konstigt och eftersom min bror bor 2 gator bort sa det ofta att jag var på 2 ställen samtidigt eller fortsatte att växla mellan. Det enda sättet jag kunde komma runt det var att lägga till i ett tillstånd för att stoppa falska positiva. Om det hävdade att jag var hemma hos honom, gick jag igenom och kollade den faktiska longitud/latitud i meddelandet och avbröt det om det sa att jag faktiskt var hemma.

Det andra problemet var att när jag gick med min hund kunde jag inte riktigt få en bra radie. Jag brukar gå i samma område, så här sa jag "om jag kommer in i detta område går jag definitivt med hunden och kommer att vara det tills jag kommer hem." detta innebar att det inte skulle byta till puben som jag passerar på vägen hem, eller olika andra lokala platser som kan utlösa när jag går hund. För att göra detta behövde jag ställa in några ihållande kontextvariabler (leta upp dem på Node-RED. Se skärmdump. Dessa variabler kvarstår tills Node-RED startas om och så jag kan säga Om på en hundpromenad, ställ in kontextvariabeln till "Hund". Ignorera sedan ALLT annat om jag inte "går in" hem.

Den sista skärmdumpen är den av mitt faktiska slutflöde, med alla undantag, bara för ditt intresse.

Steg 5: Flytta faktiskt servon med Python på Pi

En kort avledning till servon. Jag visste ingenting om servon, men det finns massor av information online. De jag använde är kontinuerliga servon som kan vända 360 grader och smidigt. Den andra huvudsorten är stegservos som rör sig i bitar (steg) och uppenbarligen bara går upp till cirka 180 grader (klart inte användbart här). Fördelen med stegservos är att du bara kan sätta i en vinkel och de flyttar till den punkten och stannar. All dokumentation jag hittade sa att kontinuerliga servon fungerar genom att de får en hastighet och en tid att bibehålla den hastigheten (t.ex. full hastighet i 1s) och de hamnar där de hamnar, men det är relativt deras startpunkt. Efter många försök kunde jag inte få det att fungera, men fick reda på, med hjälp av testbänken, att servon konsekvent återvände till samma punkt med samma vinkel. Vilket är mycket lättare, så jag gjorde det bara. Det kan finnas någon nackdel som jag inte vet om, men det fungerar för mig. Observera dock att varje servo är unik, så du måste ha en unik uppsättning vinklar för varje servo. Jag tyckte att det var lättast att ha ett 'kalibrerings' python -skript, där jag kunde ställa in servon i vinklar i tur och ordning och förfina dem tills de alla såg rätt ut. Detta är det första manuset som bifogas. Du kommenterar bara servon som du inte testar, koncentrerar dig på en och justerar sedan värdena efter behov. OBS: kalibrering för testbänken är enkel och grov och klar. Du måste kalibrera om när klockan är monterad, eftersom växlarna etc. kommer att förändra allt. Då är det andra manuset ganska grundläggande. Det gör följande

  1. Importera några bibliotek
  2. flytta variablerna som kommer från Node-RED till variabler i skriptet
  3. mappar de vinklar som bestäms av kalibreringsskriptet till platserna på klockan.
  4. kontrollera att platsen finns i listan, och om inte, flytta till "fara"
  5. skriva ut vad som gjorts till en loggfil
  6. flytta önskad servo till önskad vinkel
  7. Stoppa en servo från att "surra" *

3 saker att notera.

Loggfilen är supernyttig för felsökning. Det betyder att du kan titta på Node-RED-felsökningen för ett meddelande och sedan se vad som hände i skriptet. utgången ser ut så här. De tre första är jag som tar hunden på en promenad, och sedan lämnar barn 1 huset och anländer till skolan. Obs för att kontrollera tiden på Pi. Det kan vara standard på UTC och inte tillåta ändringar i sommar/vintertid. T.ex. tiderna nedan är 1 timme ute.

2020-12-07_05: 36: 03 Vem = 0, loc = Resa, detalj = Hem, Vinkel = 10, index = 8

2020-12-07_05: 36: 04 Vem = 0, loc = Hund, detalj = Astons, Vinkel = 86,5, index = 10

2020-12-07_06: 07: 49 Vem = 0, loc = Hem, detalj = in, Vinkel = 75, index = 0

2020-12-07_06: 23: 53 Vem = 2, loc = Resa, detalj = Hem, Vinkel = 19, index = 8

2020-12-07_06: 30: 48 Vem = 2, loc = Skola, detalj = N, Vinkel = 60,5, index = 2

Servo-surrande

En av servon (0) fortsatte att surra efter manusets slut. Som du kan föreställa dig är det här superirriterande att ha i vårt kök. Jag hittade en tråd någonstans som nämnde inställningen av servovinkeln till "ingen" som på något sätt sätter den till att vara inaktiv. Det fungerade strålande och kan ses i manuset i slutet.

Tidpunkter

Tänk på hur låg en hand tar för att sopa dygnet runt. Du kan se i manuset att det finns en time.sleep (4) -rad strax innan vi ställer in servon för att sluta surra. Det beror på att du måste låta handen komma till dess destination innan du ställer in den på tomgång. Annars stannar det bara. Detta är också viktigt när du kalibrerar det, eftersom du gör flera drag i skriptet. Jag skulle ställa in det för att flytta till alla 12 platser i tur och ordning, så att jag kunde kontrollera dem alla igen. men du behöver lite tid emellan.

Steg 6: Avsluta programvaran - telefoner till servon

När du har testbänken och skripten inställda kan du köra den "live" en stund och se hur den fungerar i realtid. Det var här jag hittade undantagen som jag behövde lägga till i mitt Node-RED-flöde.

Du kan enkelt koppla bort och ansluta familjemedlemmar i Node-RED-flödet om du vill koncentrera dig på en. Till exempel om två orsakar problem men du vill åtgärda ett i taget. Tänk annars på att du kommer att fortsätta ta emot meddelanden från alla anslutna telefoner.

Jag nämnde problemet med Dog-walking och min brors hus som var ganska nära. Jag hade 2 andra utmaningar.

För det första, platser inom andra platser. Min fru gjorde en kurs på ett college i London. Vi ville att det skulle registreras som "School", men det är också i "London". Så vi behövde återanvända sammanhanget för att säga att om du lämnar den "skolan" flyttar du till "London" inte "reser".

För det andra, tävlingsförhållanden. Som nämnts ligger min brors hus 2 gator bort, och även nära vår favorit pub/restaurang. Detta innebär att ibland 2 signaler tas emot samtidigt, eller mycket nära varandra. Detta kan skapa ett "race -tillstånd" där du får olika resultat beroende på vilket som går snabbast genom logiken, vilket leder till oförutsägbara resultat. För att motverka detta gjorde jag att alla "inmatade" meddelanden har en 1s fördröjning i logiken, vilket tycktes lösa problemet. Det kan finnas bättre, mer eleganta sätt att lösa detta, men det verkade fungera.

Steg 7: Bygga den fysiska klockan - del I - servon och axeln

Bygga den fysiska klockan - del I - servon och axeln
Bygga den fysiska klockan - del I - servon och axeln
Bygga den fysiska klockan - del I - servon och axeln
Bygga den fysiska klockan - del I - servon och axeln
Bygga den fysiska klockan - del I - servon och axeln
Bygga den fysiska klockan - del I - servon och axeln

Nu den biten som jag var minst säker på, varför jag lämnade den kvar. Jag ville ha en ansiktsstorlek och enkel konstruktion. Jag var också nervös för att fysiskt få 2 servon runt mittaxeln. Detta innebar att jag, efter att ha tittat kort på ebay efter gamla klockor som i instruktionen som jag följde, bestämde mig för att ge mig själv fler chanser genom att bygga den själv.

  • Jag fick 2 stora (~ 30 cm) rutor plywood som jag hade liggande (ca 9 mm tjock).
  • Sedan skar jag en gammal banderollskena i sektioner på 4x10 cm och skruvade ihop fram- och bakplåtarna.
  • Efter att ha markerat mitthålet borrade jag det till samma storlek som det största mässingsröret.
  • Sedan målade jag den med vanlig vit glansfärg.
  • Efter lite experimenterande insåg jag att jag förmodligen inte kunde få 4 servon runt samma axel om de alla var fästa på den bakre (eller främre) plattan. Så jag behövde ha antingen 3 + 1 eller 2 + 2, på varje tallrik. Jag slutade med 3 på baksidan och 1 på framsidan.
  • Jag räknade ut de förskjutningar som krävs på ett papper och klippte sedan mässingsrören för att passa. Observera att det tjockaste röret är det kortaste, och det tunnaste måste gå hela vägen till bakplattan. (Jag inbäddade faktiskt den minsta i ett hål som jag delvis borrade i bakplattan, men inte hela vägen igenom så att axeln inte rörde sig bakåt).
  • För rören köpte jag en rörskärare, men det använder tryck för att skära dem och det betyder att du inte kan få det mindre röret inuti. Så jag använde en bågfil och fick sedan göra en hel del arkivering för att få dem att fungera. Diamantpunktfilerna var ovärderliga här.
  • Sedan matchade jag diagrammet till de faktiska förskjutningarna för klämmorna och kuggarna *.
  • När jag väl hade förskjutningarna visste jag hur 'högt' man skulle göra för att montera servona. Jag bröt ett par block genom att såga dem för tunna och också borra hålet för att släppa ut tråden.
  • Sedan kom den knepiga delen av var klossarna skulle placeras så att de exakt skulle möta kuggarna på axeln. Jag skruvade in ett block och kunde sedan rotera servon för att möta axeln och sedan skruva in det andra blocket den andra änden av servon. Jag fann också att jag behövde klippa lite ur några block för att undvika att klämma fast andra kuggar. Det tog ett tag.
  • När jag hade gjort allt fick jag mitt hallon pi -hölje, borrade två hål i det och skruvade fast det på frontplattan. Sedan kunde jag lägga till Pi, stänga fram- och bakplattorna (efter att ha anslutit servon till pi (komma ihåg vilken servo som var för vilken familjemedlem) och vända mig till händerna …

* Här hittade jag det största problemet, som jag ännu inte har löst helt. Mässingsrören var 1/4 ", 7/32", 3/16 ", 5/32". Men klämmorna var metriska (förutom en som var 1/4 "). Omvandlingen av rören till metriska var 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. De återstående klämmorna var 4 mm, 5 mm och 6 mm. De minsta 2 och största är bra. men klart är 0,44 mm för mycket resor för klämman så jag var tvungen att stoppa ut den med papper. Jag har provat detta ett antal gånger och det fungerar OK ett tag för att sedan lossna igen. Så det näst största handen misslyckades med att fungera korrekt. Det var dock bra i cirka 6 månader, så tid att göra det här var väl investerad tid. Men om jag skulle göra det igen hade jag kanske gått upp eller ner 1 storlek, med ett mellanrum att försöka få en bättre klämma till rörpassning. t.ex. gå för 9/32 ", 1/4", (gap), 3/16 ", 5/32"

Steg 8: Klockhänderna

Klockhänderna
Klockhänderna
Klockhänderna
Klockhänderna
Klockhänderna
Klockhänderna

Jag bestämde mig för stålplåt eftersom jag ville ha något styvt men mindre benäget att knäppa medan jag gjorde det. Att vara tunn gjorde också att fyra händer var mindre problem.

  • Först skissade jag ut en form.
  • Sedan överförde jag den till stålet ovanpå lite maskeringstejp.
  • Sedan klippte jag ut dem väldigt illa med min sticksåg. De var och är alla olika, men jag har inget emot det.
  • Sedan föreslog en vän att jag skulle låna hans bänkskärare för att forma dem, och det här var jättebra. Högt rekommenderad. Annars tar ansökan åldrar.
  • Det fanns fortfarande lite arkivering att göra och sedan slipning för att säkerställa inga skarpa kanter och även en fin finish.
  • Jag var tvungen att borra hål för att matcha respektive mässingsrör (använd avskurna rör för att kontrollera, inte de monterade på klockan).
  • Jag fann att hålen behövde lite filning för att få dem på rören, men en gång var de täta och behövde inget lim. Undantaget var den främre handen som jag ville ha ett "omslag". Så jag skar ut en (mestadels) rund bit stål, efter att ha borrat hålet och fått det till rätt storlek och överlimmat det på framsidan. du kan se det på sista bilden. Ibland skulle den främre handen behöva en klick lim för att säkra den, men efter ett par falska starter fungerar händerna riktigt bra.
  • Jag hade avvisat idén med foton (eftersom barn snabbt skulle klaga på våra datumbilder) så jag nöjde mig med att måla på initialer med akrylfärg.

Steg 9: Slutför

Komplett!
Komplett!
Komplett!
Komplett!

Allt fungerar riktigt fint. Händerna är ibland lite av, beroende på var de kom ifrån, men faktiskt spelar det ingen roll eftersom varje plats är en sektion, inte bara en linje.

Ibland vägrar min telefon konstigt nog att erkänna att jag är hemma. Jag befinner mig tydligt inom Owntracks radie när den visas på kartan, och även när noggrannheten är bra … Jag har ingen aning om varför. verkar inte drabba resten av min familj. men upplägget är detsamma. Det betyder att Owntracks aldrig skickar ett meddelande och jag fastnar i 'Resa'. Men det brukar lösa sig så småningom.

Det har varit supernyttigt att ha i vårt kök, mestadels för att veta när tjejerna är på väg hem från skolan, eller deras vänners hus, och så när de ska ha mat/te redo för dem.

Återigen, ett stort hat-tips till @ppeters0502 för de bra instruktionerna att följa. Förhoppningsvis kan dessa lägga till något runt att göra en klocka med 4 händer..

Steg 10: Saker jag lärde mig och skulle göra bättre/annorlunda om jag var tvungen att göra det igen

  • Fysiska byggnader kräver försök och fel. Det finns inget sätt att förutsäga rymdproblem, du behöver bara dyka in och försöka.
  • För kod är googlingproblem avgörande
  • Börja grundläggande och bygg upp. Servona på testbänken trä gjorde att jag kunde få det mesta att fungera utan den fysiska byggnaden
  • Jag kan ha fått händerna laserskurna på en CNC -maskin. Men jag visste inte var den lokala var, och jag gillar hur det mjuka stålet fungerade (det var billigt och bänkskäraren gjorde det mycket lättare)
  • en stegmotor kan vara möjlig om du använder växeln för att få en 360 varv. men du kan då behöva ha servon för nära centralaxeln
  • Det finns 2 typer av servo (Futaba & HiTech). Se till att du har kontrollerat detta eftersom de har olika antal tänder på spline. Och jag köpte fel först …
  • Anslut inte hatten med fel polaritet;-)
  • Google och Stack Overflow är dina vänner när de fastnar. Men du måste använda bra söktermer …
  • Testbänken är faktiskt ett sätt att du kan få en enklare, billigare version mycket lättare. Det mesta av komplikationen med bygget kommer från att behöva ha händerna roterade runt samma axel. Om du går på kompromiss med det är allt mycket lättare. Och jag tror att 4 kan vara gränsen för den ena axeln om inte axeln blir mycket längre. Du kan antagligen ha 3 på frontplattan och tre på bakplattan om axeln var längre …

Steg 11: Möjliga framtida förlängningar …?

Idéerna jag hade om nästa steg är följande.

  1. Jag skulle vilja omformulera en gammal iPad som urtavlan. dvs göra en digital klocka. Möjligen webbläsarbaserad eller en app. Eftersom en fysisk klocka i huvudsak är statslös (dvs den vet inte var den är för närvarande, förutom på grund av att händerna är i en fysisk position) skulle jag behöva ha en ihållande lagring av data. Node Red kan skriva ut till det lokala filsystemet, så jag skulle nog göra det.
  2. Om jag gjorde det skulle jag vilja kunna se det utanför hemmet. Men då måste vi verkligen reda ut säkerheten. Eftersom åtkomst inom samma wifi -nätverk är en sak, är åtkomst från internet en annan. Jag har för närvarande ingen aning om hur man bäst gör detta, men jag misstänker att en MQTT -prenumeration går åt andra hållet (pi publicerar nuvarande status och externa enheter prenumererar på det) …?
  3. Jag skulle vilja ha en hand för 'utomlands'. men det kan vara komplext ur OwnTracks synvinkel. Kanske bara kan använda long/lat kombinerat med några enorma radier?

Rekommenderad: