Indholdsfortegnelse:

Weasley' placeringsur med 4 hænder: 11 trin (med billeder)
Weasley' placeringsur med 4 hænder: 11 trin (med billeder)

Video: Weasley' placeringsur med 4 hænder: 11 trin (med billeder)

Video: Weasley' placeringsur med 4 hænder: 11 trin (med billeder)
Video: Воды как в дипломе. Финал ► 6 Прохождение Hogwarts Legacy 2024, Juli
Anonim
'Weasley' placeringsur med 4 hænder
'Weasley' placeringsur med 4 hænder

Så med en Raspberry Pi, der havde sparket rundt i et stykke tid, ville jeg finde et godt projekt, der ville gøre det muligt for mig at udnytte det bedst muligt. Jeg stødte på dette fantastiske Instructable Build Your Own Weasley Location Clock af ppeters0502 og tænkte, at det ville være godt at prøve.

Uret består dybest set af en Raspberry Pi, som styrer servoer for at vende urets hænder. Som i familien Weasley i Harry Potter -bøgerne/filmene har hvert familiemedlem sin egen hånd. Hver hånd peger på det aktuelle familiemedlems aktuelle placering. Uret opnår dette ved at modtage beskeder fra familiens mobiltelefoner, når de kommer ind eller forlader en foruddefineret radius.

De største forskelle med den tidligere instruerbare var, at jeg skulle have 4 hænder, ikke 2 (ellers ville mine døtre have klaget), og jeg besluttede også at bygge rammen, ikke få et gammelt ur til at genbruge. Dette var fordi jeg var bekymret for, at plads ville være et problem i en eksisterende urkasse, med behovet for at passe til 4 servoer osv.

Det tog meget længere tid, end jeg havde regnet med, dog mest hvor jeg stødte på besværlige problemer, der stubbede mig, og som ikke syntes at være dækket af det oprindelige indlæg. Intet imod den originale Instructable, som generelt var fantastisk, men der var gået nogle år, og versioner af ting ændrede sig … osv. Betød også at være i Storbritannien, at nogle af de kejserlige/metriske elementer forårsagede flere udfordringer, end jeg havde forventet.

Selvom jeg er i orden med kodningen, strakte den fysiske fremstilling af uret mig bestemt og krævede nogle ekstra værktøjer, som også bremsede mig noget.

Til sidst vil jeg inkludere et afsnit om "Ting, jeg ville gøre anderledes/bedre, hvis jeg gjorde det igen …"

Tilbehør:

En af de ting, der slog mig, var, at de dyre komponenter skulle gøre med urets hænder. 4 hænder er bestemt langt dyrere end 2. Jeg besluttede at lægge nogle omkostninger ind, så du har en idé. Det er første gang, jeg har lagt det hele sammen, og hvis jeg ser bort fra værktøjerne, tror jeg, at jeg har brugt omkring £ 200. Plus nogle ting, jeg ikke brugte (og ikke har inkluderet herunder) plus Pi, plus strømforsyningen, som jeg allerede havde.

Pi osv

  1. Raspberry Pi - kan ikke huske, hvor meget det oprindeligt kostede, men det var en Model 2B. Jeg tror, at hvis du ikke allerede har en, så ville selv en Pi Zero nok gøre det. Jeg havde tilføjet en wifi -dongle og SD -kort med Raspbian. Og jeg havde en gammel Android -telefonoplader liggende.
  2. Adafruit Servohat til Pi - 16 £
  3. Strømforsyning til Servohat - Dette kæmpede jeg virkelig for at finde, da alle websteder bare pegede på adafruit -webstedet, som derefter naturligvis anbefaler en amerikansk strømforsyning. Så indså jeg, at jeg havde en gammel variabel spændingsforsyning med udskiftelige spidser, så jeg brugte det. Men den amerikanske er $ 8, så det er boldpladsen.
  4. Etui til Pi, så jeg derefter kunne vedhæfte den til urrammen. £ 5

Servoer og gear

Her citerer jeg prisen for alle 4, så del, hvis du vil have færre hænder (Tilføjelse af det er ~ £ 40 PER HAND = £ 160: -o

  1. 4 x Servoer-jeg brugte dem anbefalet af ppeters0502-fundet på ebay til ~ £ 15 hver = £ 60-jeg søgte efter følgende tekst "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "men nogle gange var de ikke tilgængelige
  2. 4 x messingrør, der passer nøjagtigt ind i hinanden - ~ £ 3 hver. Jeg fik 1 hver på 1/4 ", 7/32", 3/16 ", 5/32" = £ 11
  3. 4 x klemmer, der klemmer på messingrørene, så du kan fastgøre tandhjul. ~ £ 7 hver = £ 28. Jeg fik dem fra ActiveRobots, der foretager regelmæssige ordrer fra Servocity i USA, så du kan undgå den internationale forsendelse. De kan også få alt andet, du kan finde på Servocitys vigtigste amerikanske websted. Dette var meget praktisk til de næste 2 varer
  4. 4 x acetyl 0,770 "mønstergear til montering på klemnavene. ~ 6 kr. Hver = 24 kr
  5. 4 x acetyl spline-monterede acetyl gear til montering på servoerne. ~ £ 6,50 hver = £ 26
  6. 1 x pakning sekskantmøtrikker til fastgjorte gear til spændemøtrikker = 2,60 kr
  7. 1 x 7/64 "hex -nøgle (unbrakonøgle), fordi alt, der kommer fra USA, er kejserligt, så de hundredvis af unbrakonøgler, jeg allerede har, er ubrugelige = £ 1

Til den fysiske opbygning

Her brugte jeg mest nedskæringer af ting, jeg havde liggende om

  1. 2 x firkanter krydsfiner til pladen 'ansigt' og 'bagside'
  2. Jeg skar derefter 4 x 10 cm cylindre af en gammel skinnestang, jeg havde, for at forbinde bagsiden med ansigtet
  3. Nogle blokke til montering af servoerne ved den korrekte forskydning - bare afskæringer af blødt træ, som jeg skar i størrelse.
  4. Diverse skruer. fra meget lille (for at vedhæfte Pi -kassen til rammen) til medium (for at vedhæfte rammen sammen)
  5. 0,75 mm plade af blødt stål ca. 50 cm x 20 cm (til at skære hænderne ud af). Dette var det eneste, jeg købte ~ £ 9 fra Wickes

Værktøjer

Nogle ting havde jeg, og nogle lånte eller købte jeg

  1. Loddejern + elektrisk loddemetal - til fastgørelse af konnektorerne til Adafruit Hat & Pi.
  2. Stiksav - til at skære den hårde form af hænderne ud
  3. Bore. bare en normal akku 18V
  4. Bor - Husk, at du får brug for kejserlige bor til at lave huller, der matcher messingrørene. Det lykkedes mig at låne nogle.
  5. hacksav - til skæring af messingrørene. Gør ikke, hvad jeg gjorde, og brug £ 3 på rørskæreren, det virker ved tryk og betyder, at rørets indre bliver en smule mindre. så det næste størrelse ned-rør ikke derefter passer igennem
  6. Bænkkværn - jeg havde ikke en af disse, men en ven havde, og det gjorde det meget lettere at forme hænderne. Indtil da brugte jeg bare filer. Jeg ville ikke købe en bare til dette projekt, men til metalhænderne var det fantastisk.
  7. Jeg købte nogle forskellige diamantspidsfiler (meget små). nyttigt til hænder og rør omkring £ 15
  8. groft og glat sandpapir
  9. nogle små klemmer holder tingene på plads ved boring.
  10. en skruestik af samme grund.

Trin 1: Opsætning af dine telefoner til at sende deres placering til din Pi (del I MQTT -mægler)

Denne bit er beskrevet meget godt af ppeters0502 i hans fremragende Weasley Clock Instructable. Mærkeligt nok, selvom han måske afspejler forskellige færdigheder, begyndte han med opbygningen og flyttede derefter til softwaren, jeg gjorde det omvendt. Så jeg startede med telefonen … hæng på, nej, det gjorde jeg ikke, jeg startede med MQTT -mægleren, som er trin 6 i hans instruerbare. Jeg vil udelade alle de stykker, han gør meget godt, og bare smide nogle bits ind, som jeg kan tilføje. Jeg gik CloudMQTT -ruten, som han nævnte.

MEN da jeg skrev dette, tjekkede jeg linket til planerne og fandt ud af, at der ikke længere er en gratis plan! De trak det tilbage, for hvad der virker som rimelige grunde. dvs. at folk ville oprette en gratis instans og derefter aldrig bruge den. Jeg lagde ikke mærke til det, fordi de nuværende tilfælde kan fortsætte. Så jeg ændrer mig ikke. Men det gør instruktionerne en smule overflødige. Der ser ud til at være 3 muligheder.

  1. Betal $ 5 om måneden for Cloud MQTT (men det lyder løbende dyrt for uret).
  2. Gå Mosquitto on Pi -ruten som beskrevet i den første Instructable. Jeg kan ikke kommentere det, men det kan være en god mulighed.
  3. Bare google "gratis MQTT cloud broker", og det ser ud til at der er nogle andre.

Så under forudsætning af at du har en fungerende MQTT -mægler, hvis det ligner noget CloudMQTT, vil der blive vist en server, bruger, adgangskode og port. Du skal bruge alt dette for at konfigurere dine telefoner for at sende mægleren dine placeringer/bevægelser.

Trin 2: Opsætning af dine telefoner til at sende deres placering til din Pi (Owntracks del II)

Dette er også dækket meget godt i den originale Instructable, i trin 7 (Android), 8 (iOS) og 9 (opsætning af regioner).

Jeg havde kun iOS -enheder, så prøvede ikke trin 7.

Hvad ville jeg tilføje til disse instruktioner?

  1. I opsætningen er der også felterne TrackerID og DeviceID. Disse burde du have som værende i stand til at identificere dig inden for din familie. F.eks. Jeg havde dem som henholdsvis R og RPhone. Det betyder, at du kan passere igennem til uret, som Servo og derfor hvilken hånd der skal drejes.
  2. Regioner er navnet på de steder, du vil spore.
  3. Hver region er defineret af et navn, en breddegrad, en længdegrad og en radius.
  4. Fordi jeg ønskede at have et antal steder som en sektion på mit ur, brugte jeg en navngivningskonvention, som viste sig at være meget nyttig. Andre metoder er mulige, men det virkede for mig.

    • For eksempel ville jeg i FAMILIE -delen af uret have mine forældre og søskende og min kones forældre og søskende. Derfor havde jeg steder som "Family Tom", "Family Dick", Family Harry "og" Family ParentsR ". Dette betød, at den næste fase kunne vide, hvad de skulle sende til uret.
    • Husk på, at folk kan have forskellige placeringer. Men så længe de er i overensstemmelse med navnekonventionen, er det fint. F.eks. mit arbejde ville være anderledes end min kones arbejdsområde og kaldet anderledes. men så længe de begge starter "Arbejde", så er alt i orden.
  5. Du vil have tilstanden indstillet til 'Signifikant' på kortskærmen. Det betyder, at du (for det meste) kun får beskeder, når du går ind i eller forlader regioner. Dette ser ud til at være den opdaterede version af noten mærket VIGTIGT: i slutningen af trin 8 i den originale Instructable.
  6. Som nævnt i den originale Instructable er brug af Google Maps en fantastisk måde at finde ud af Lat/Long et sted. Jeg fandt det mere effektivt at gøre dette i bulk, ved at finde ud af alle Lat/Longs på min placering, derefter indsatte jeg dem i Notes (på min Mac) og med skyens synkronisering betød det, at de på magisk vis dukkede op på min iPhone i Notes, og jeg kunne kopiere/indsætte dem i Owntracks. Det betød også, at jeg kunne sende filen til min families telefoner, og vi havde alle konsekvente placeringer.
  7. Steder, der er tæt på hinanden, kan forårsage problemer. Min bror bor 2 gader væk, og i første omgang tænkte min telefon på, at jeg samtidig var i både hans hus og hjemme. Til sidst måtte jeg lægge yderligere logik i Node Red for at fange og ignorere dette.

Trin 3: Opsætning af Raspberry Pi

Opsætning af Raspberry Pi
Opsætning af Raspberry Pi

Så her går jeg ud fra, at du har en base Pi konfigureret og på wifi. Jeg kørte Raspbian, men det burde ikke være ligegyldigt. Brug vejledningen på raspberrypi.org for at få det hele sat op.

Bemærk at en Pi har porte til visning til en skærm og tastatur/mus osv. MEN naturligvis når du har den i uret, vil du ikke have noget af det. Så svaret, foreslået af nogen på Raspberry pi -webstedet, tror jeg, var at oprette en VNC -forbindelse. Dette giver dig mulighed for at oprette forbindelse fra en anden enhed til Pi og også styre den. Jeg gør det fra min Mac, men har også gjort det fra en iPad. Jeg vil foreslå at bruge noget med et tastatur til brugervenlighed.

Jeg fandt lige ud af, at de synes at have gjort det lettere, siden jeg tilsluttede mig … se her

I det væsentlige forbinder du og får et vindue, som er standard Pi -grænsefladen.

Så du har et vindue til din Pi fra din bærbare computer eller computer.

Nu skal du forbinde servoer.

Først skal du lave en ganske grundlæggende lodning for at få adafruit -hatten på Pi. Det er lidt besværligt, men på trods af ikke at have loddet i 30-årige år, var det fint. Som altid fandt jeg en nyttig YouTube -video til at guide mig igennem den, hvilket var en stor hjælp.

Mens hatten kan køre 16 servoer, havde jeg kun brug for 4, og derfor gad jeg kun lodde det første sæt med 4 ben.

Derefter skubber servoerne bare på stifterne. Jeg gjorde en først for at kontrollere, at jeg faktisk kunne få servoen til at bevæge sig.

Det var her, jeg ramte min første store vejspærring. Jeg havde et meget grundlæggende python -script til at flytte servoer, og der skete bogstaveligt talt ikke noget. Jeg brugte omkring en uge på at prøve nye scripts osv., Og så begyndte der at dukke røg op på hatten. Når jeg slukkede alt, tjekkede jeg skematisk. Det var en komponent, der beskytter mod omvendt polaritet. Fordi jeg havde en multi-tip, multi-voltage strømkilde, havde jeg savnet det faktum, at du kunne få DC-udgangen til at gå begge veje ved at vende spidsen. Jeg havde taget fejl (50:50 chance) og lige brændt min første adafruit hat ud

:-(Så en lille forsinkelse, da jeg købte en ny, loddes om og rettede spidsen. Meget bedre.

Dernæst havde jeg brug for at finde ud af, hvordan jeg flyttede servoer til det korrekte punkt på uret. Det vil komme i trin 5, men det jeg gjorde, da jeg ikke havde bygget det egentlige ur, var at skrue servoerne let til en tilfældig bit træ og stikke lidt malertape med en pil på dem, som på billedet. Dette gav en meget visuel feedback til, hvad jeg kodede.

Trin 4: Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)

Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)
Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)
Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)
Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)
Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)
Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)
Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)
Installation af Node Red (hentning af meddelelser fra MQTT -server til dit Python -script)

Node-RED er et program, du installerer på Pi, som giver dig en visuel grænseflade (i din browser) til at modtage beskeder fra din MQTT-server og bruge den til at videregive de korrekte oplysninger til dit python-script (dækket i det næste trin (Trin 5). Jeg brugte stort set instruktionerne fra ppeters0502 i trin 5. Der er logik i disse strømme og yderligere logik i python, og du kan have mere eller mindre i hver, afhængigt af dine præferencer. Grundlæggende skal du gøre det følgende

  1. Har modtaget noder til MQTT -beskederne - disse er lys lilla, og jeg havde 1 pr. Familiemedlem
  2. Kort det til den servo, du vil flytte (nummereret 0, 1, 2, 3)
  3. Bestem, om du indtaster eller forlader en radius på OwnTracks
  4. Find ud af, hvilken placering servoen skal pege på

    Der var nogle undtagelser fra de grundlæggende regler, som jeg havde brug for at bygge ind

  5. Indstil vinklen korrekt

Jeg havde Node-RED til at lave de første 4, og holdt Python relativt enkel.

Du kan se det grundlæggende flow her, og alle forløb kan eksporteres til formatet her, hvilket betyder, at du kan importere dette grundlæggende flow til din Node-RED og derefter tilpasse. Bemærk, at jeg har fjernet alle forbindelser fra de lilla noder, så du ikke kan få adgang til min MQTT -forekomst. Jeg fjernede også alle test-noder, da de indeholder faktiske data … du skal muligvis ændre denne filtype til at være flows.json for at importere til din Node-RED, men Instructables lod mig ikke uploade det.

De grønne knuder er fejlfindingsknudepunkter, som derefter viser output i fejlfindingsvinduet til højre på skærmen (skal muligvis udvides - find pilen halvvejs op til højre)

Den første bit, der skal gøres, er "Live - kun til fejlfinding". Det kontrollerer, at du kan modtage MQTT -meddelelser og se, hvad der er i dem. json er bare en mere struktureret version af meddelelserne, som giver dig mulighed for lettere at få dataene ud. I dette flow, når jeg lever, forbinder jeg derefter de lilla noder øverst til venstre til json -noden til højre for dem.

Test af noder

Når du først ved, hvordan beskederne kommer til at se ud live, bliver det meget kedeligt at skulle gå ud af dit hus og ned ad vejen og tilbage, bare for at udløse en begivenhed. Når du har gjort det, kan du kopiere meddelelsen til en TEST -trigger og derefter bare klikke på den for at simulere hændelsen. Du kan også ændre dataene for at foregive at være for forskellige placeringer (sørg for at de svarer nøjagtigt til placeringsnavnene i Owntracks).

Du kan se i flowet, at testcases alle går ind i en separat knude, og derefter går det ind i json -noden. Dette er udelukkende for at rydde op på skærmen.

Jeg kan ikke understrege nok, hvor nyttige disse noder var og stadig er.

Ringer til Python

Så jeg ramte så den næste vejspærring. Denne tog en masse googling i fora osv. Mit flow ville fungere perfekt, men det ville ikke udløse mit python script. Jeg kunne ikke finde ud af det, men jeg vil spare dig for bande osv. Bare for at sige, at som det fremhæves i det andet skærmbillede, skal du angive python3, da Node-RED tilsyneladende antager python2, medmindre du angiver det.

2 yderligere komplikationer - kun hvis det er nødvendigt

Jeg havde derefter en række udfordringer, hvor logikken ikke helt virkede. Først var det, at Owntracks gik lidt underligt, og da min bror bor 2 gader væk, sagde det ofte, at jeg var 2 steder på en gang eller blev ved med at skifte mellem. Den eneste måde jeg kunne komme rundt på det var at tilføje i en tilstand for at stoppe falske positive. Hvis det hævdede, at jeg var hjemme hos ham, så kørte jeg igennem og tjekkede den faktiske længdegrad/breddegrad i meddelelsen og afbrød det, hvis det sagde, at jeg faktisk var hjemme.

Det andet problem var, at når jeg gik med min hund, kunne jeg ikke rigtig få en god radius. Jeg plejer at gå i det samme område, så her sagde jeg "hvis jeg kommer ind i dette område, går jeg helt sikkert med hunden, og vil være det, indtil jeg kommer hjem." det betød, at det ikke ville skifte til den pub, som jeg passerer på vejen hjem, eller forskellige andre lokale steder, der kunne udløse, mens jeg gik en hund. For at gøre dette var jeg nødt til at oprette nogle vedvarende kontekstvariabler (slå dem op på Node-RED. Se skærmbillede. Disse variabler vedvarer, indtil Node-RED genstartes, og så jeg kan sige, at hvis du går på en hund, skal du indstille kontekstvariablen til "Hund". Ignorer derefter ALT andet, medmindre jeg 'Enter' Home.

Det sidste skærmbillede er det af mit egentlige endelige flow, med alle undtagelserne, bare for din interesse.

Trin 5: Faktisk flytning af servoer med Python på Pi

En kort omledning til servoer. Jeg vidste intet om servoer, men der er masser af information online. Dem, jeg brugte, er kontinuerlige servoer, der kan vende 360 grader og problemfrit. Den anden hovedsort er stepper servoer, der bevæger sig i bidder (trin) og tilsyneladende kun går op til cirka 180 grader (klart ikke brugbart her). Fordelen ved stepper servoer er, at du bare kan sætte i en vinkel, og de bevæger sig til det punkt og stopper. Al den dokumentation, jeg fandt, sagde, at kontinuerlige servoer virker ved at få en hastighed og en tid til at opretholde denne hastighed (f.eks. Fuld hastighed i 1 sek.), Og de ender, hvor de ender, men det er i forhold til deres startpunkt. Efter mange forsøg kunne jeg ikke få dette til at fungere, men fandt ud af ved hjælp af testbænken, at servoer konsekvent vendte tilbage til det samme punkt givet den samme vinkel. Hvilket er meget lettere, så jeg gjorde det bare. Der kan være en ulempe, som jeg ikke ved om, men det virker for mig. Bemærk dog, at hver servo er unik, og derfor skal du have et unikt sæt vinkler for hver servo. Jeg fandt det lettest at have et 'kalibrering' python -script, hvor jeg efter tur kunne indstille servoerne til vinkler og forfine dem, indtil de alle så rigtigt ud. Dette er det første script vedhæftet. Du kommenterer bare de servoer, som du ikke tester, koncentrerer dig om en og justerer derefter værdierne, som du har brug for. BEMÆRK: kalibrering til testbænken er enkel og grov og klar. Du bliver nødt til at kalibrere igen, når uret er samlet, fordi gearene osv. Vil ændre alt. Så er det andet script temmelig grundlæggende. Det gør følgende

  1. Importer et par biblioteker
  2. flytte variablerne fra Node-RED til variabler i scriptet
  3. kortlægger de vinkler, der er bestemt af kalibreringsskriptet, til placeringerne på uret.
  4. Kontroller, at placeringen findes på listen, og hvis ikke, skal du flytte til "fare"
  5. skrive hvad der blev gjort til en logfil
  6. flytte den nødvendige servo til den nødvendige vinkel
  7. Stop en servo fra at 'summe' *

3 ting at bemærke.

Logfilen er super nyttig til fejlfinding. Det betyder, at du kan se på Node-RED-fejlfinding af en meddelelse og derefter se, hvad der skete i scriptet. output ser sådan ud. De første 3 er mig, der tager hunden med en tur, og derefter forlader barn 1 huset og ankommer til skolen. Bemærk for at kontrollere klokkeslættet på Pi. Det er muligvis standard til UTC og tillader ikke ændringer af sommer/vinter. F.eks. tiderne herunder er 1 time ude.

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

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

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

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

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

Servo-summende

En af servoerne (0) blev ved med at summe efter scriptets afslutning. Som du kan forestille dig, er dette super-irriterende at have i vores køkken. Jeg fandt en tråd et eller andet sted, som nævnte at indstille servovinklen til 'ingen', som på en eller anden måde sætter den til at være inaktiv. Det fungerede glimrende og kan ses i manuskriptet til sidst.

Tidspunkter

Husk, hvor lav en hånd tager for at feje døgnet rundt. Du kan se i scriptet, at der er en time.sleep (4) linje lige før vi sætter servoen til at stoppe med at summende. Det er fordi du skal tillade hånden at komme til sin destination, før du sætter den til inaktiv. Ellers stopper det bare. Dette er også vigtigt, når du kalibrerer det, fordi du laver flere træk i scriptet. Jeg ville lade det køre for at flytte til alle 12 steder efter tur, så jeg kunne kontrollere dem alle igen. men du har brug for lidt tid imellem.

Trin 6: Afslutning af softwaren - telefoner til servoer

Når du har testbænken og scripts sat op, kan du køre den 'live' lidt og se, hvordan den fungerer i realtid. Det er her, jeg fandt de undtagelser, som jeg havde brug for at tilføje til mit Node-RED-flow.

Du kan let afbryde og forbinde familiemedlemmer i Node-RED-flowet, hvis du vil koncentrere dig om et. For eksempel, hvis to forårsager problemer, men du vil rette en ad gangen. Ellers skal du huske på, at du fortsat vil modtage beskeder fra alle tilsluttede telefoner.

Jeg nævnte problemet med at hundevandre og min brors hus var ganske tæt. Jeg havde 2 andre udfordringer.

For det første placeringer inden for andre lokationer. Min kone lavede et kursus på et college i London. Vi ville have, at det skulle registreres som 'Skole', men det er også i 'London'. Så vi var nødt til at genbruge konteksten for at sige, at hvis du forlader den 'skole', skal du flytte til 'London' ikke 'rejse'.

For det andet race betingelser. Som nævnt er min brors hus 2 gader væk, og også i nærheden af vores foretrukne pub/restaurant. Det betyder, at nogle gange modtages 2 signaler på samme tid eller meget tæt på hinanden. Dette kan oprette en 'race -tilstand', hvor du får forskellige resultater afhængigt af, hvilke der kommer hurtigste igennem logikken, hvilket fører til uforudsigelige resultater. For at imødegå dette fik jeg alle 'indtastning' -meddelelser til at have en 1s forsinkelse i logikken, hvilket syntes at løse problemet. Der kan være bedre, mere elegante måder at løse dette på, men det syntes at virke.

Trin 7: Opbygning af det fysiske ur - del I - servoer og aksel

Opbygning af det fysiske ur - del I - servoer og aksel
Opbygning af det fysiske ur - del I - servoer og aksel
Opbygning af det fysiske ur - del I - servoer og aksel
Opbygning af det fysiske ur - del I - servoer og aksel
Opbygning af det fysiske ur - del I - servoer og aksel
Opbygning af det fysiske ur - del I - servoer og aksel

Nu den smule, som jeg var mindst sikker på, og derfor lod jeg den vare. Jeg ville have en anstændig størrelse ansigt og let konstruktion. Jeg var også nervøs for fysisk at få 2 servoer rundt om midterakslen. Dette betød, at jeg efter at have kigget kort på ebay efter gamle ure som i den instruktive, jeg fulgte, besluttede at give mig selv flere chancer ved at bygge det selv.

  • Jeg fik 2 store (~ 30 cm) firkanter af krydsfiner, som jeg havde liggende (ca. 9 mm tyk).
  • Derefter skar jeg en gammel bannisterskinne op i 4x10cm sektioner og skruede fronten og bagpladerne sammen.
  • Efter at have markeret centerhullet, borede jeg det til at have samme størrelse som det største messingrør.
  • Derefter malede jeg den med normal hvid glansmaling.
  • Efter lidt eksperimentering indså jeg, at jeg nok ikke kunne få 4 servoer rundt om den samme aksel, hvis de alle var fastgjort til den bageste (eller forreste) plade. Så jeg skulle enten have 3 + 1 eller 2 + 2 på hver tallerken. Jeg endte med 3 på bagsiden og 1 på forsiden.
  • Jeg udarbejdede de nødvendige forskydninger på et stykke papir og skar derefter messingrørene efter, så de passede. Bemærk, at det tykkeste rør er det korteste, og det tyndeste skal gå helt til bagpladen. (Jeg indlejrede faktisk den mindste i et hul, som jeg delvist borede i bagpladen, men ikke hele vejen igennem, så akslen ikke bevægede sig bagud).
  • Til rørene købte jeg en rørskærer, men det bruger tryk til at skære dem, og det betyder, at du ikke kan få det mindre rør indeni. Så jeg brugte en hacksav og måtte derefter lave en hel del arkivering for at få dem til at fungere. Diamantpunktfilerne var uvurderlige her.
  • Derefter matchede jeg diagrammet med de faktiske forskydninger for klemmerne og tandhjulene *.
  • Når jeg havde forskydningerne, vidste jeg, hvor 'høj' man skulle lave klodser til montering af servoerne. Jeg brød et par blokke ved at save dem for tynde og også bore hullet for at slippe tråden ud.
  • Derefter kom den besværlige del af, hvor kloderne skulle placeres, så de præcist ville møde tandhjulene på akslen. Jeg skruede en blok i og kunne derefter rotere servoen for at møde akslen og derefter skrue den anden blok i den anden ende af servoen. Jeg fandt også ud af, at jeg var nødt til at skære lidt ud af nogle blokke for at undgå at hænge andre tandhjul. Det tog ret lang tid.
  • Da jeg havde gjort alt det, fik jeg min hindbær pi -kasse, borede to huller i den og skruede den fast på frontpladen. Derefter kunne jeg tilføje Pi'en, lukke for- og bagpladerne (efter at have forbundet servoerne til pi'en (huske hvilken servo der var til hvilket familiemedlem)) og vende mig til hænderne …

* Her fandt jeg det største problem, som jeg endnu ikke helt har løst. Messingrørene var 1/4 ", 7/32", 3/16 ", 5/32". Men klemmerne var metriske (undtagen en som var 1/4 "). Konvertering af rørene til metriske de var 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. De resterende klemmer var 4 mm, 5 mm og 6 mm boring. De mindste 2 og de største er fine. men klart er 0,44 mm for meget rejse for klemmen, så jeg var nødt til at putte den ud med papir. Jeg har prøvet dette et antal gange, og det fungerer OK et stykke tid og løsner derefter igen. Så den næststørste hånden fungerer ikke korrekt. Det var dog fint i cirka 6 måneder, så tid brugt på at gøre dette godt var tid godt investeret. Men hvis jeg gjorde det igen, var jeg måske gået 1 størrelse op eller ned, med et mellemrum at forsøge at få en bedre klemme til rørpasning. f.eks. gå til 9/32 ", 1/4", (mellemrum), 3/16 ", 5/32"

Trin 8: Urets hænder

Urets hænder
Urets hænder
Urets hænder
Urets hænder
Urets hænder
Urets hænder

Jeg besluttede mig for stålplade, da jeg ville have noget stift, men mindre tilbøjeligt til at snappe, mens jeg lavede det. Også at være tynd betød, at 4 hænder var mindre et problem.

  • Først skitserede jeg en form.
  • Derefter overførte jeg det til stålet oven på noget malertape.
  • Så skar jeg dem meget billigt ud med mit stiksav. De var og er alle forskellige, men det gider jeg ikke.
  • Så foreslog en ven, at jeg lånte hans bænkesliber til at forme dem, og det var fantastisk. højt anbefalet. Ellers tager ansøgningen aldre.
  • Der var stadig noget arkivering at gøre og derefter slibning for at sikre ingen skarpe kanter og også en flot finish.
  • Jeg var nødt til at bore huller for at matche de respektive messingrør (brug afskårne rør til at kontrollere, ikke de monterede på uret).
  • Jeg fandt ud af, at hullerne havde brug for lidt filning for at få dem på rørene, men engang var de stramme og havde ikke brug for lim. Undtagelsen var den forreste hånd, som jeg ville have et 'cover'. Så jeg skar et (for det meste) rundt stykke stål ud, efter at have boret hullet og fik det til den rigtige størrelse og limede det til fronten. du kan se det på det sidste billede. Lejlighedsvis har den forreste hånd brug for en klat lim for at sikre den, men efter et par falske starter fungerer hænderne rigtig godt.
  • Jeg havde afvist ideen om fotos (fordi børn hurtigt ville klage over vores dato -fotos), så jeg nøjedes med at male på initialer med akrylmaling.

Trin 9: Færdig

Komplet!
Komplet!
Komplet!
Komplet!

Det hele fungerer rigtig fint. Hænderne er nogle gange lidt off, afhængigt af hvor de kom fra, men faktisk er det ligegyldigt, fordi hvert sted er en sektion, ikke bare en linje.

Nogle gange, underligt nok, nægter min telefon at erkende, at jeg er hjemme. Jeg er klart inden for Owntracks -radius, når det vises på kortet, og selv når nøjagtigheden er god … jeg aner ikke hvorfor. synes ikke at ramme resten af min familie. men opsætningen er den samme. Det betyder, at Owntracks aldrig sender en besked, og jeg sidder fast i 'Rejser'. Men det ordner normalt sig selv til sidst.

Det har været super nyttigt at have i vores køkken, mest for at vide, hvornår pigerne skal hjem fra skolen eller deres venners huse, og så hvornår de skal have mad/te klar til dem.

Igen et stort hat-tip til @ppeters0502 for de gode instruktioner at følge. Forhåbentlig kan disse tilføje noget omkring at lave et ur med 4 hænder.

Trin 10: Ting, jeg lærte, og ville gøre det bedre/anderledes, hvis jeg skulle gøre det igen

  • Fysiske opbygninger har brug for forsøg og fejl. Der er ingen måde at forudsige problemerne i rummet, du skal bare dykke ned og prøve.
  • For kode er googlingproblemer afgørende
  • Start grundlæggende og opbyg. Servoerne på testbænketræet betød, at jeg kunne få det meste til at fungere uden den fysiske opbygning
  • Jeg kunne have fået hænderne laserskåret på en CNC -maskine. Men jeg vidste ikke, hvor den lokale var, og jeg kan godt lide, hvordan det bløde stål fungerede (det var billigt og bænkesliberen gjorde det meget lettere)
  • en trinmotor kan være mulig, hvis du bruger gearet til at få en 360 -sving. men du skal da muligvis have servoerne for tæt på centralakslen
  • Der er 2 typer servo (Futaba & HiTech). Sørg for, at du har kontrolleret dette, da de har forskellige tænder på spline. Og jeg købte de forkerte i starten …
  • Tilslut ikke hatten med den forkerte polaritet;-)
  • Google og Stack Overflow er dine venner, når de sidder fast. Men du skal bruge gode søgeudtryk …
  • Testbænken er faktisk en måde, hvorpå du lettere kan få en enklere, billigere version. Det meste af komplikationen med bygningen kommer fra at skulle have hænderne til at rotere rundt om den samme aksel. Hvis du går på kompromis med det, så er det hele meget lettere. Og jeg tror, at 4 kan være grænsen for den enkelte aksel, medmindre akslen bliver meget længere. Du kunne, jeg formoder, have 3 på frontpladen og tre på bagpladen, hvis akslen var længere …

Trin 11: Mulige fremtidige udvidelser …?

De ideer, jeg havde om de næste trin, er som følger.

  1. Jeg vil gerne omformulere en gammel iPad som urskive. dvs. lave et digitalt ur. Muligvis browserbaseret eller en app. Da et fysisk ur i det væsentlige er statsløst (dvs. det ved ikke, hvor det er i øjeblikket, undtagen i kraft af at hænderne er i en fysisk position), ville jeg have brug for en vedvarende lagring af data. Node Red kan skrive ud til det lokale filsystem, så det ville jeg nok gøre.
  2. Hvis jeg gjorde det, ville jeg gerne kunne se det udefra. Men så er vi virkelig nødt til at ordne sikkerheden. Fordi adgang inden for det samme wifi -netværk er en ting, er adgang fra internettet en anden. Jeg har i øjeblikket ingen idé om, hvordan man bedst gør dette, men jeg formoder, at et MQTT -abonnement går den anden vej kunne fungere (pi udgiver den aktuelle status og eksterne enheder abonnerer på det) …?
  3. Jeg vil meget gerne have en hånd til 'Abroad'. men det kan være komplekst set fra et OwnTracks synspunkt. Måske bare kunne bruge lang/lat kombineret med nogle enorme radier?

Anbefalede: