Innholdsfortegnelse:

Weasley' posisjonsklokke med 4 hender: 11 trinn (med bilder)
Weasley' posisjonsklokke med 4 hender: 11 trinn (med bilder)

Video: Weasley' posisjonsklokke med 4 hender: 11 trinn (med bilder)

Video: Weasley' posisjonsklokke med 4 hender: 11 trinn (med bilder)
Video: Stranger Things Actors First Scene Vs. Season 4 Final Scene 2024, Juli
Anonim
'Weasley' posisjonsklokke med 4 hender
'Weasley' posisjonsklokke med 4 hender

Så, med en Raspberry Pi som hadde sparket rundt en stund, ønsket jeg å finne et fint prosjekt som ville tillate meg å utnytte det best. Jeg kom over denne flotte Instructable Build Your Own Weasley Location Clock av ppeters0502 og tenkte at det ville være godt å prøve.

Klokken består i utgangspunktet av en Raspberry Pi som styrer servoer for å snu hendene på klokken. Som i huset til Weasley -familien i Harry Potter -bøkene/filmene, har hvert familiemedlem sin egen hånd. Hver hånd peker på den nåværende plasseringen av det familiemedlemmet. Klokken oppnår dette ved å motta meldinger fra familiens mobiltelefoner når de kommer inn eller forlater en forhåndsdefinert radius.

De viktigste forskjellene med den forrige Instructable var at jeg trengte å ha 4 hender, ikke 2 (ellers ville døtrene mine ha klaget) og jeg bestemte meg for å bygge rammen også, ikke få en gammel klokke til å gjenbruke. Dette var fordi jeg var bekymret for at plass ville være et problem i en eksisterende urkasse, med behovet for å passe inn i 4 servoer osv.

Det tok mye lengre tid enn jeg forventet, men hovedsakelig der jeg kom over vanskelige problemer som stubbet meg, og som ikke så ut til å være dekket av det opprinnelige innlegget. Ingenting mot den originale Instructable, som generelt var flott, men noen år hadde gått og versjoner av ting endret seg … etc. Å være i Storbritannia betydde også at noen av de keiserlige/metriske elementene forårsaket flere utfordringer enn jeg forventet.

Selv om jeg har det bra med kodingen, strekker den fysiske utformingen av klokken meg definitivt og krevde noen ekstra verktøy, noe som også bremset meg noe.

Til slutt vil jeg inkludere en seksjon om "Ting jeg ville gjort annerledes/bedre hvis jeg gjorde det igjen …"

Rekvisita:

En av tingene som slo meg var at de dyre komponentene skulle gjøre med klokkens hender. 4 hender er definitivt mye dyrere enn 2. Jeg bestemte meg for å legge inn noen kostnadsberegninger slik at du har en ide. Dette er første gang jeg har lagt alt sammen, og hvis jeg ser bort fra verktøyene, tror jeg at jeg brukte rundt 200 pund. Pluss noen ting jeg ikke brukte (og ikke har inkludert nedenfor) pluss Pi, pluss strømforsyningen som jeg allerede hadde.

Pi osv

  1. Raspberry Pi - husker ikke hvor mye det opprinnelig kostet, men det var en modell 2B. Jeg tror at hvis du ikke allerede har en, vil sannsynligvis selv en Pi Zero gjøre det. Jeg hadde lagt til en wifi -dongle og SD -kort med Raspbian. Og jeg hadde en gammel Android -telefonlader liggende.
  2. Adafruit Servohat for Pi - £ 16
  3. Strømforsyning til Servohat - Dette slet jeg virkelig med å finne ettersom alle nettsteder bare pekte på adafruit -nettstedet, som da åpenbart anbefaler en amerikansk strømforsyning. Da innså jeg at jeg hadde en gammel variabel spenningsforsyning med utskiftbare tips, så jeg brukte det. Men den amerikanske er $ 8, så det er ballparken.
  4. Etui til Pi, slik at jeg deretter kunne feste den til klokkerammen. £ 5

Servoer og gir

Her siterer jeg prisen for alle 4, så del hvis du vil ha færre hender (Hvis du legger den til er det ~ £ 40 PER HAND = £ 160: -o

  1. 4 x servoer-jeg brukte de som ble anbefalt av ppeters0502-funnet på ebay for ~ £ 15 hver = £ 60-jeg søkte etter følgende tekst "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "men noen ganger var de utilgjengelige
  2. 4 x messingrør som passet nøyaktig inni hverandre - ~ £ 3 hver. Jeg fikk 1 hver på 1/4 ", 7/32", 3/16 ", 5/32" = £ 11
  3. 4 x klemmer som festes på messingrørene slik at du kan feste tannhjul. ~ £ 7 hver = £ 28. Jeg fikk dem fra ActiveRobots som gjør vanlige bestillinger fra Servocity i USA, slik at du kan unngå internasjonal frakt. De kan også få alt annet du kan finne på Servocitys viktigste amerikanske nettsted. Dette var veldig praktisk for de neste 2 elementene
  4. 4 x acetyl 0,770 "mønstergir for montering på klemnavene. ~ £ 6 hver = £ 24
  5. 4 x acetyl-spline-monterte acetylgir for montering på servoene. ~ £ 6,50 hver = £ 26
  6. 1 x pakke sekskantmutter til festet tannhjul til festemuttere = £ 2,60
  7. 1 x 7/64 "unbrakonøkkel (unbrakonøkkel) fordi alt som kommer fra USA er imperialt, så hundrevis av unbrakonøkler jeg allerede har er ubrukelige = £ 1

For det fysiske bygget

Her brukte jeg stort sett kutt av ting jeg hadde liggende om

  1. 2 x firkanter av kryssfiner for 'ansikt' og 'bak' plate
  2. Jeg kuttet deretter 4 x 10 cm sylindere av en gammel rekkverkskinne jeg hadde, for å koble ryggen til ansiktet
  3. Noen blokker for å montere servoene i riktig forskyvning - bare myke treklipp som jeg kuttet i størrelse.
  4. Diverse skruer. fra veldig liten (for å feste Pi -saken til rammen) til middels (for å feste rammen sammen)
  5. 0,75 mm stålplate ca 50 cm x 20 cm (for å kutte hendene ut av). Dette var det eneste jeg kjøpte ~ £ 9 fra Wickes

Verktøy

Noen ting jeg hadde, og noen jeg lånte eller kjøpte

  1. Loddejern + elektrisk loddetinn - for å feste kontaktene til Adafruit Hat & Pi.
  2. Stikksag - for å kutte ut den grove formen på hendene
  3. Bore. bare en vanlig batteridrevet 18V drill
  4. Borekroner - Husk at du MÅ trenge keiserlige borekroner for å lage hull som matcher messingrørene. Jeg klarte å låne noen.
  5. baufil - for kutting av messingrørene. Ikke gjør det jeg gjorde, og bruk £ 3 på rørkutteren, det virker med trykk og betyr at det indre av rørene blir litt mindre. så det neste størrelsesrøret ikke passer gjennom
  6. Benkekvern - Jeg hadde ikke en av disse, men en venn hadde det, og det gjorde det lettere å forme hendene. Inntil da brukte jeg bare filer. Jeg ville ikke kjøpe en bare for dette prosjektet, men for metallhendene var det flott.
  7. Jeg kjøpte noen forskjellige diamantpunktfiler (veldig små). nyttig for hender og rør rundt £ 15
  8. grovt og glatt sandpapir
  9. noen små klemmer holder ting på plass når du borer.
  10. en vice av samme grunn.

Trinn 1: Konfigurere telefonene dine for å sende posisjonen til Pi (del I MQTT -megler)

Denne biten er veldig godt beskrevet av ppeters0502 i sin utmerkede Weasley Clock Instructable. Merkelig, selv om han kanskje gjenspeiler forskjellige ferdigheter, begynte han med byggingen og flyttet deretter til programvaren, jeg gjorde det omvendt. Så jeg begynte med telefonen … vent, nei, det gjorde jeg ikke, jeg begynte med MQTT -megleren, som er trinn 6 i instruksjonsboken. Jeg vil utelate alle bitene han gjør veldig bra og bare kaste inn noen biter som jeg kan legge til. Jeg gikk CloudMQTT -ruten som han nevnte.

MEN da jeg skrev dette, sjekket jeg lenken til planene og fant ut at det ikke lenger er en gratis plan! De trakk det tilbake, for det som virker som rimelig grunn. dvs. at folk ville sette opp en gratis forekomst og deretter aldri bruke den. Jeg la ikke merke til det fordi nåværende tilfeller kan fortsette. Så jeg vil ikke forandre meg. Men det gjør instruksjonene litt overflødige. Det ser ut til å være 3 alternativer.

  1. Betal $ 5 per måned for Cloud MQTT (men det høres dyrt ut for klokken fortløpende).
  2. Gå Mosquitto on Pi -ruten som beskrevet i den første Instructable. Jeg kan ikke kommentere det, men kan være et godt alternativ.
  3. Bare google "gratis MQTT skymegler", og det ser ut til at det er noen andre.

Så, forutsatt at du har en fungerende MQTT -megler, hvis det er noe som ligner CloudMQTT, vil det bli vist en server, bruker, passord og port. Du trenger alt dette for å sette opp telefonene dine for å sende megleren posisjoner/bevegelser.

Trinn 2: Konfigurere telefonene dine for å sende posisjonen deres til Pi (del II Owntracks)

Dette er også godt dekket i den originale Instructable, i trinn 7 (Android), 8 (iOS) og 9 (konfigurering av regioner).

Jeg hadde bare iOS -enheter, så prøvde ikke trinn 7.

Hva vil jeg legge til i disse instruksjonene?

  1. I oppsettet er det også feltene TrackerID og DeviceID. Disse bør du ha for å kunne identifisere deg i familien din. F.eks. Jeg hadde dem som henholdsvis R og RPhone. Dette betyr at du kan passere til klokken som Servo og derfor hvilken hånd du skal snu.
  2. Regioner er navnet på stedene du vil spore.
  3. Hver region er definert av et navn, en breddegrad, en lengdegrad og en radius.
  4. Fordi jeg ønsket å ha en rekke steder som en seksjon på klokken min, brukte jeg en navnekonvensjon, som viste seg å være veldig nyttig. Andre metoder er mulige, men dette fungerte for meg.

    • For eksempel, for FAMILY -delen av klokken ønsket jeg å ha mine foreldre og søsken og min kones foreldre og søsken. Derfor hadde jeg steder som "Family Tom", "Family Dick", Family Harry "og" Family ParentsR ". Dette betydde at neste etappe kunne vite hva jeg skulle sende til klokken.
    • Husk at folk kan ha forskjellige steder. Men så lenge de er i samsvar med navnekonvensjonen, er det greit. F.eks. arbeidet mitt ville være annerledes enn min kones arbeidsområde og kalt annerledes. men så lenge de begge starter "Work", er alt bra.
  5. Du vil at modusen skal settes til 'Signifikant' på kartskjermen. Dette betyr at du (stort sett) bare får meldinger når du går inn i eller forlater regioner. Dette ser ut til å være den oppdaterte versjonen av notatet merket VIKTIG: på slutten av trinn 8 i den originale Instructable.
  6. Som nevnt i den opprinnelige Instructable, er bruk av Google Maps en fin måte å finne Lat/Long på et sted. Jeg syntes det var mer effektivt å gjøre dette i bulk, og fant ut alle Lat/Longs av posisjonen min, så limte jeg dem inn i Notes (på min Mac) og med sky-synkronisering betydde det at de på magisk vis dukket opp på min iPhone i Notes, og jeg kunne kopiere/lime dem inn i Owntracks. Det betydde også at jeg kunne sende filen til familiens telefoner, og vi hadde alle konsekvente steder.
  7. Steder som ligger tett sammen kan forårsake problemer. Broren min bor 2 gater unna, og i utgangspunktet trodde telefonen min at jeg samtidig var i huset hans så vel som hjemme. Til slutt måtte jeg legge ekstra logikk i Node Red for å fange og ignorere dette som skjer.

Trinn 3: Konfigurere Raspberry Pi

Sette opp Raspberry Pi
Sette opp Raspberry Pi

Så her antar jeg at du har en base Pi satt opp og på wifi. Jeg kjørte Raspbian, men det burde ikke ha noe å si. Bruk instruksjonene på raspberrypi.org for å få alt satt opp.

Vær oppmerksom på at en Pi har porter for visning til en skjerm og tastatur/mus osv. MEN åpenbart når du har den i klokken, vil du ikke ha noe av det. Så svaret, foreslått av noen på Raspberry pi -nettstedet, tror jeg, var å sette opp en VNC -tilkobling. Dette lar deg koble fra en annen enhet til Pi og kontrollere den også. Jeg gjør det fra min Mac, men har også gjort det fra en iPad. Jeg foreslår at du bruker noe med et tastatur for enkel bruk.

Jeg fant ut at de ser ut til å ha gjort det lettere siden jeg koblet til … se her

I hovedsak kobler du til og får et vindu som er standard Pi -grensesnitt.

Så du har et vindu til din Pi fra den bærbare datamaskinen eller datamaskinen.

Nå må du koble til servoene.

Først må du gjøre ganske grunnleggende lodding for å få adafruit -hatten på Pi. Det er litt tøft, men til tross for at det ikke har loddet på 30 år, var det greit. Som alltid fant jeg en nyttig YouTube -video for å lede meg gjennom den, noe som var til stor hjelp.

Mens hatten kan kjøre 16 servoer, trengte jeg bare 4, og derfor gadd jeg bare lodde det første settet med 4 pinner.

Deretter skyver servoene bare på pinnene. Jeg gjorde en først for å sjekke at jeg faktisk kunne få servoen til å bevege seg.

Det var her jeg traff min første store veisperring. Jeg hadde et veldig grunnleggende python -skript for å flytte servoene, og ingenting skjedde bokstavelig talt. Jeg brukte omtrent en uke på å prøve nye skript osv., Og så begynte det å dukke opp røyk på hatten. Da jeg slo av alt, sjekket jeg skjemaet. Det var en komponent som beskytter mot omvendt polaritet. Fordi jeg hadde en multi-tip, multi-voltage strømkilde, hadde jeg savnet det faktum at du kunne få DC-utgangen til å gå begge veier ved å snu tuppen. Jeg hadde misforstått (50:50 sjanse) og nettopp brent ut min første adafruithatt

:-(Så en liten forsinkelse da jeg kjøpte en ny, loddet på nytt og korrigerte spissen. Mye bedre.

Deretter trengte jeg å finne ut hvordan jeg skulle flytte servoene til riktig punkt på klokken. Det vil komme i trinn 5, men det jeg gjorde, uten å ha bygget den faktiske klokken, var å skru servoene lett til en tilfeldig bit av tre, og lime litt maskeringstape med en pil på dem, som på bildet. Dette ga en veldig visuell tilbakemelding på det jeg kodet.

Trinn 4: Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)

Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)
Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)
Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)
Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)
Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)
Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)
Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)
Installere Node Red (Få meldingene fra MQTT -serveren til ditt Python -script)

Node-RED er et program du installerer på Pi, som gir deg et visuelt grensesnitt (i nettleseren din) for å motta meldinger fra MQTT-serveren og bruke den til å sende riktig informasjon til python-skriptet ditt (dekket i neste trinn (Trinn 5). Jeg brukte stort sett instruksjonene fra ppeters0502 i trinn 5. Det er logikk i disse flytene, og ytterligere logikk i pythonet, og du kan ha mer eller mindre i hver, avhengig av dine preferanser. I utgangspunktet må du gjøre følgende

  1. Har mottatt noder for MQTT -meldingene - disse er lys lilla og jeg hadde 1 per familiemedlem
  2. Kart det til servoen du vil flytte (nummerert 0, 1, 2, 3)
  3. Bestem om du skal angi eller forlate en radius på OwnTracks
  4. Finn ut hvilken plassering servoen må peke på

    Det var noen unntak fra de grunnleggende reglene som jeg trengte å bygge inn

  5. Still inn vinkelen riktig

Jeg hadde Node-RED på de fire første, og holdt Python relativt enkelt.

Du kan se den grunnleggende flyten her, og alle strømmer kan eksporteres til formatet her, noe som betyr at du kan importere denne grunnleggende flyten til Node-RED og deretter tilpasse. Vær oppmerksom på at jeg har fjernet alle tilkoblinger fra de lilla nodene, slik at du ikke får tilgang til min MQTT -forekomst. Jeg fjernet også alle testnodene da de inneholder faktiske data … du må kanskje endre denne filtypen til å være flows.json for å importere til Node-RED, men Instructables lot meg ikke laste den opp.

De grønne nodene er feilsøkingsnoder som deretter viser utdata i feilsøkingsvinduet til høyre på skjermen (kan trenge utvidelse - finn pilen halvveis opp til høyre)

Den første biten å gjøre er "Live - for debugging only" -biten. Det sjekker at du kan motta MQTT -meldingene og se hva som er i dem. json er bare en mer strukturert versjon av meldingene som lar deg lettere få ut dataene. I denne strømmen, når den er live, kobler jeg deretter de lilla nodene øverst til venstre til json -noden til høyre for dem.

Testnoder

Når du vet hvordan meldingene kommer til å se ut live, blir det veldig kjedelig å måtte gå ut av huset ditt og nedover veien og tilbake, bare for å utløse en hendelse. Når du har gjort det, kan du kopiere meldingen til en TEST -utløser, og deretter bare klikke på den for å simulere hendelsen. Du kan også endre dataene for å late som de er for forskjellige steder (sørg for at de samsvarer nøyaktig med stedsnavnene i Owntracks).

Du kan se i flyten at testtilfellene alle går inn i en egen node og deretter går det inn i json -noden. Dette er bare for å rydde opp i skjermen.

Jeg kan ikke understreke nok hvor nyttige disse nodene var, og fortsatt er.

Ringer til Python

Så jeg traff den neste veisperringen. Denne tok mye googling i fora osv. Flyten min ville fungere perfekt, men det ville ikke utløse python -skriptet mitt. Jeg kunne ikke finne ut av dette, men jeg vil spare deg for banning osv. Bare for å si at, som markert i det andre skjermbildet, må du spesifisere python3, som tilsynelatende Node-RED antar python2, med mindre du spesifiserer.

2 ekstra komplikasjoner - bare ved behov

Jeg hadde da en rekke utfordringer der logikken ikke helt fungerte. Det første var at Owntracks gikk litt rart, og ettersom broren min bor 2 gater unna, sa det ofte at jeg var to steder samtidig, eller byttet mellom. Den eneste måten jeg kunne komme meg rundt var å legge til i en tilstand for å stoppe falske positiver. Hvis det hevdet at jeg var hjemme hos ham, da ruter jeg gjennom og sjekket den faktiske lengdegrad/breddegraden i meldingen og avbrøt den hvis den sa at jeg faktisk var hjemme.

Det andre problemet var at når jeg gikk med hunden min, kunne jeg egentlig ikke få en god radius. Jeg går vanligvis i samme område, så her sa jeg "hvis jeg kommer inn i dette området, går jeg definitivt med hunden, og vil være det til jeg kommer hjem." dette betydde at det ikke ville bytte til puben jeg passerer på vei hjem, eller forskjellige andre lokale steder som kan utløse mens jeg går tur med hund. For å gjøre dette trengte jeg å sette opp noen vedvarende kontekstvariabler (slå dem opp på Node-RED. Se skjermbilde. Disse variablene vedvarer til Node-RED startes på nytt, så jeg kan si Hvis på en hundetur, sett kontekstvariabelen til "Dog". Ignorer deretter ALT annet med mindre jeg "går" hjem.

Det siste skjermbildet er det av min faktiske siste flyt, med alle unntakene, bare for din interesse.

Trinn 5: Flytter faktisk servoer med Python på Pi

En kort avledning til servoer. Jeg visste ingenting om servoer, men det er mye informasjon på nettet. De jeg brukte er kontinuerlige servoer som kan snu 360 grader, og jevnt. Den andre hovedsorten er stepper -servoer som beveger seg i biter (trinn) og tilsynelatende bare går opp til ca 180 grader (tydelig ikke nyttig her). Fordelen med stepper servoer er at du bare kan sette i en vinkel, og de beveger seg til det punktet og stopper. All dokumentasjon jeg fant sa at kontinuerlige servoer fungerer ved å få en hastighet, og en tid for å opprettholde den hastigheten (f.eks. Full hastighet i 1 sek.), Og de ender der de ender, men det er relativt til utgangspunktet. Etter mange forsøk kunne jeg ikke få dette til å fungere, men fant ut ved hjelp av testbenken at servoer konsekvent kom tilbake til samme punkt gitt samme vinkel. Noe som er mye lettere, så jeg gjorde det bare. Det kan være en ulempe som jeg ikke vet om, men det fungerer for meg. Vær imidlertid oppmerksom på at hver servo er unik, og derfor må du ha et unikt sett med vinkler for hver servo. Jeg fant det lettest å ha et kalibrerings -python -skript, der jeg kunne sette servoene i vinkler etter tur og finpusse dem til de alle så riktig ut. Dette er det første manuset som er vedlagt. Du kommenterer bare servoene du ikke tester, konsentrerer deg om en og justerer deretter verdiene etter behov. MERK: kalibrering for testbenken er enkel og grov og klar. Du må kalibrere på nytt når klokken er satt sammen, fordi tannhjulene osv. Vil endre alt. Da er det andre manuset ganske grunnleggende. Det gjør følgende

  1. Importer noen få biblioteker
  2. flytte variablene som kommer fra Node-RED til variabler i skriptet
  3. kartlegger vinklene som er bestemt av kalibreringsskriptet, til stedene på klokken.
  4. sjekk at stedet er funnet i listen, og hvis ikke, flytt til "fare"
  5. skrive ut hva som ble gjort til en loggfil
  6. flytte den nødvendige servoen til ønsket vinkel
  7. Stopp en servo fra å "surre" *

3 ting å merke seg.

Loggfilen er super nyttig for feilsøking. Det betyr at du kan se på Node-RED feilsøking av en melding, og deretter se hva som skjedde i skriptet. utgangen ser slik ut. De tre første er jeg som tar hunden en tur, og deretter forlater barn 1 huset og kommer til skolen. Merk for å sjekke tiden på Pi. Det kan være UTC som standard og ikke tillate endringer i sommer/vinter. F.eks. tidene nedenfor er 1 time ute.

2020-12-07_05: 36: 03 Hvem = 0, loc = Reise, detaljer = Hjem, Vinkel = 10, indeks = 8

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

2020-12-07_06: 07: 49 Hvem = 0, loc = Hjem, detalj = angi, Vinkel = 75, indeks = 0

2020-12-07_06: 23: 53 Hvem = 2, loc = Reise, detaljer = Hjem, Vinkel = 19, indeks = 8

2020-12-07_06: 30: 48 Hvem = 2, loc = Skole, detalj = N, Vinkel = 60,5, indeks = 2

Servo-summende

En av servoene (0) fortsatte å surre etter slutten av manuset. Som du kan forestille deg, er dette super-irriterende å ha på kjøkkenet vårt. Jeg fant en tråd et sted som nevnte å sette servovinkelen til "ingen" som på en eller annen måte setter den til å være inaktiv. Det fungerte glimrende og kan sees i manuset til slutt.

Tidspunkter

Husk hvor lav en hånd tar for å feie døgnet rundt. Du kan se i skriptet at det er en time.sleep (4) linje like før vi setter servoen til å slutte å surre. Det er fordi du må la hånden komme til målet før du setter den på tomgang. Ellers stopper det bare. Dette er også viktig når du kalibrerer det, fordi du gjør flere trekk i skriptet. Jeg ville sette den i gang for å flytte til alle 12 stedene etter tur, slik at jeg kunne sjekke dem alle på nytt. men du trenger litt tid i mellom.

Trinn 6: Avslutte programvaren - telefoner til servoer

Når du har testbenken og skriptene satt opp, kan du kjøre den 'live' litt og se hvordan den fungerer i sanntid. Det er her jeg fant unntakene som jeg trengte å legge til i min Node-RED flyt.

Du kan enkelt koble fra og koble familiemedlemmer i Node-RED-strømmen hvis du vil konsentrere deg om en. For eksempel, hvis to forårsaker problemer, men du vil fikse en om gangen. Husk ellers at du vil fortsette å motta meldinger fra alle tilkoblede telefoner.

Jeg nevnte problemet med at hundevandring og huset til broren min var ganske nært. Jeg hadde 2 andre utfordringer.

Først steder på andre steder. Min kone gjorde et kurs på en høyskole i London. Vi ønsket at det skulle registreres som 'School', men det er også i 'London'. Så vi trengte å bruke konteksten på nytt for å si at hvis du forlot den 'skolen', flytt deretter til 'London' og ikke 'Reise'.

For det andre, løpsforhold. Som nevnt er huset til broren min 2 gater unna, og også i nærheten av vår favoritt pub/restaurant. Dette betyr at noen ganger mottas 2 signaler samtidig, eller veldig nær hverandre. Dette kan sette opp en "løpstilstand" hvor du får forskjellige utfall, avhengig av hvilke som kommer raskest gjennom logikken, noe som fører til uforutsigbare utfall. For å motvirke dette, gjorde jeg at alle innmeldingsmeldinger hadde en 1s forsinkelse i logikken, som så ut til å fikse problemet. Det kan være bedre, mer elegante måter å løse dette på, men det så ut til å fungere.

Trinn 7: Bygg den fysiske klokken - del I - servoene og akselen

Bygge den fysiske klokken - del I - servoene og akselen
Bygge den fysiske klokken - del I - servoene og akselen
Bygge den fysiske klokken - del I - servoene og akselen
Bygge den fysiske klokken - del I - servoene og akselen
Bygge den fysiske klokken - del I - servoene og akselen
Bygge den fysiske klokken - del I - servoene og akselen

Nå den biten jeg var minst trygg på, og derfor lot jeg den vare. Jeg ønsket et anstendig størrelse ansikt og enkel konstruksjon. Jeg var også nervøs for å fysisk få 2 servoer rundt sentralakselen. Dette betydde at jeg, etter å ha sett kort på ebay for gamle klokker som i instruksjonene som jeg fulgte, bestemte meg for å gi meg selv flere sjanser ved å bygge den selv.

  • Jeg fikk 2 store (~ 30 cm) firkanter av kryssfiner som jeg hadde liggende (ca 9 mm tykk).
  • Deretter kuttet jeg en gammel bannerskinne i seksjoner på 10 x 10 cm og skrudde fronten og bakplatene sammen.
  • Etter å ha merket senterhullet, boret jeg det til samme størrelse som det største messingrøret.
  • Deretter malte jeg den med vanlig hvit glansmaling.
  • Etter litt eksperimentering innså jeg at jeg sannsynligvis ikke kunne få 4 servoer rundt samme aksel hvis de alle var festet til den bakre (eller front) platen. Så jeg trengte å ha enten 3 + 1 eller 2 + 2, på hver tallerken. Jeg endte opp med 3 på baksiden og 1 på forsiden.
  • Jeg regnet ut forskyvningene som kreves på et stykke papir og klippet deretter messingrørene for å passe. Vær oppmerksom på at det tykkeste røret er det korteste, og det tynneste må gå helt til bakplaten. (Jeg innebygde faktisk den minste i et hull som jeg delvis boret i bakplaten, men ikke helt gjennom slik at akselen ikke beveget seg bakover).
  • For rørene kjøpte jeg en rørskærer, men det bruker trykk for å kutte dem, og det betyr at du ikke kan få det mindre røret inni. Så jeg brukte en baufil og måtte gjøre en god del arkivering for å få dem til å fungere. Diamantpunktfilene var uvurderlige her.
  • Deretter matchet jeg diagrammet til de faktiske forskyvningene for klemmene og tannhjulene *.
  • Når jeg hadde forskyvningen, visste jeg hvor "høy" jeg skulle lage blokkene for montering av servoene. Jeg brøt et par blokker ved å sage dem for tynne og også bore hullet for å slippe ledningen ut.
  • Så kom den vanskelige delen av hvor de skulle sette blokkene, slik at de akkurat møtte tannhjulene på akselen. Jeg skrudde inn en blokk og kunne deretter rotere servoen for å møte akselen og deretter skru inn den andre blokken den andre enden av servoen. Jeg fant også ut at jeg måtte kutte litt ut av noen blokker for å unngå å feste andre tannhjul. Det tok ganske lang tid.
  • Når jeg hadde gjort alt, fikk jeg bringebær -pi -etuiet mitt, boret to hull i det og skrudde det på frontplaten. Deretter kunne jeg legge til Pi, lukke opp front- og bakplatene (etter å ha koblet servoene til pi -en (huske hvilken servo var for hvilket familiemedlem) og snu til hendene …

* Her fant jeg det største problemet, som jeg ennå ikke har løst helt. Messingrørene var 1/4 ", 7/32", 3/16 ", 5/32". Men klemmene var metriske (bortsett fra en som var 1/4 "). Konvertering av rørene til metriske de var 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. De resterende klemmene var 4 mm, 5 mm og 6 mm boring. Den minste 2 og den største er fine. men tydeligvis er 0,44 mm for mye reise for klemmen, så jeg måtte putte den ut med papir. Jeg har prøvd dette flere ganger, og det fungerer OK en stund for deretter å løsne igjen. Så den nest største hånden fungerer ikke som den skal. Det var greit i omtrent 6 måneder, så tid brukt til å gjøre dette godt var tid godt investert. Men hvis jeg gjorde det igjen kunne jeg ha gått en størrelse opp eller ned, med et mellomrom å prøve å få en bedre klemme til rørpasning. f.eks. gå for 9/32 ", 1/4", (gap), 3/16 ", 5/32"

Trinn 8: Klokkehåndene

Klokkehåndene
Klokkehåndene
Klokkehåndene
Klokkehåndene
Klokkehåndene
Klokkehåndene

Jeg bestemte meg for stålplate ettersom jeg ville ha noe stivt, men mindre sannsynlig å knipse mens jeg lagde det. Også å være tynn betydde at 4 hender var mindre et problem.

  • Først skisserte jeg en form.
  • Deretter overførte jeg den til stålet på toppen av litt maskeringstape.
  • Deretter kuttet jeg dem veldig feilaktig ut med stikksagen min. De var, og er, alle forskjellige, men jeg har ikke noe imot det.
  • Så foreslo en venn at jeg skulle låne benkekvernen hans for å forme dem, og dette var flott. sterkt anbefalt. Ellers tar arkiveringen aldre.
  • Det var fortsatt litt arkivering å gjøre og deretter sliping for å sikre ingen skarpe kanter og også en fin finish.
  • Jeg måtte bore hull for å matche de respektive messingrørene (bruk avskårne rør for å kontrollere, ikke de monterte på klokken).
  • Jeg fant ut at hullene trengte litt filing for å få dem på rørene, men en gang var de tette og trengte ikke lim. Unntaket var den fremre hånden som jeg ønsket å ha et "cover". Så jeg skar ut et (stort sett) rundt stykke stål, etter å ha boret hullet og fått det til riktig størrelse, og limt det på forsiden. du kan se det på det siste bildet. Av og til trenger hånden en klatt lim for å sikre den, men etter et par falske starter fungerer hendene veldig bra.
  • Jeg hadde avvist ideen om bilder (fordi barn raskt ville klage på datoene våre), så jeg nøyde meg med å male på initialer med akrylmaling.

Trinn 9: Fullfør

Fullstendig!
Fullstendig!
Fullstendig!
Fullstendig!

Det hele fungerer veldig fint. Noen ganger er hendene litt av, avhengig av hvor de kom fra, men faktisk spiller det ingen rolle fordi hvert sted er en seksjon, ikke bare en linje.

Noen ganger, underlig nok, nekter telefonen min å erkjenne at jeg er hjemme. Jeg er tydelig innenfor Owntracks radius når det vises på kartet, og selv når nøyaktigheten er god … jeg aner ikke hvorfor. ser ikke ut til å ramme resten av familien min. men oppsettet er det samme. Dette betyr at Owntracks aldri sender en melding, og jeg blir sittende fast i 'Reise'. Men det ordner seg vanligvis etterhvert.

Det har vært veldig nyttig å ha på kjøkkenet vårt, mest for å vite når jentene skal hjem fra skolen, eller husene til vennene sine, og så når de skal ha mat/te klar til dem.

Igjen, en stor hatt-takk til @ppeters0502 for gode instruksjoner å følge. Forhåpentligvis kan disse legge til noe rundt å lage en klokke med 4 hender.

Trinn 10: Ting jeg lærte, og ville gjort det bedre/annerledes hvis jeg måtte gjøre det igjen

  • Fysiske konstruksjoner krever prøving og feiling. Det er ingen måte å forutsi problemene med plass, du trenger bare å dykke ned og prøve.
  • For kode er googlingproblemer avgjørende
  • Start grunnleggende og bygg opp. Servoene på testbenken gjorde at jeg kunne få det meste til å fungere uten det fysiske bygget
  • Jeg kan ha fått hendene laserskåret på en CNC -maskin. Men jeg visste ikke hvor den lokale var, og jeg liker hvordan det milde stålet fungerte (det var billig og benkekvern gjorde det mye lettere)
  • en trinnmotor kan være mulig hvis du bruker giret for å få en 360 sving. men du må da ha servoene for nær sentralakselen
  • Det er 2 typer servo (Futaba og HiTech). Sørg for at du har sjekket dette ettersom de har forskjellige tanntall på spline. Og jeg kjøpte feil de i utgangspunktet …
  • Ikke koble til hatten med feil polaritet;-)
  • Google og Stack Overflow er vennene dine når de sitter fast. Men du må bruke gode søkeord …
  • Testbenken er faktisk en måte at du kan få en enklere, billigere versjon mye lettere. Det meste av komplikasjonen med bygningen kommer fra at du må ha hendene rotert rundt den samme akselen. Hvis du går på kompromiss med det, er alt mye lettere. Og jeg tror at 4 kan være grensen for enkeltakslen med mindre akselen blir mye lengre. Du kan anta å ha 3 på frontplaten og tre på bakplaten hvis akselen var lengre …

Trinn 11: Mulige fremtidige utvidelser …?

Ideene jeg hadde om de neste trinnene er som følger.

  1. Jeg vil omformulere en gammel iPad som urskive. dvs. lage en digital klokke. Muligens nettleserbasert eller en app. Siden en fysisk klokke egentlig er statsløs (dvs. den vet ikke hvor den er, bortsett fra på grunn av at hendene er i en fysisk posisjon) ville jeg trenge å ha en vedvarende lagring av data. Node Red kan skrive ut til det lokale filsystemet, så jeg ville nok gjort det.
  2. Hvis jeg gjorde det, ville jeg gjerne sett det utenfra hjemmet. Men da må vi virkelig ordne opp i sikkerheten. Fordi tilgang i det samme wifi -nettverket er en ting, er tilgang fra internett en annen. Jeg har foreløpig ingen anelse om hvordan jeg best gjør dette, men jeg mistenker at et MQTT -abonnement går den andre veien kan fungere (pi publiserer nåværende status og eksterne enheter abonnerer på det) …?
  3. Jeg vil ganske gjerne ha en hånd for 'Utlandet'. men det kan være komplekst fra et OwnTracks synspunkt. Kanskje kan du bare bruke lang/lat kombinert med noen enorme radier?

Anbefalt: