Sommario:

Orologio di posizione "Weasley" con 4 lancette: 11 passi (con immagini)
Orologio di posizione "Weasley" con 4 lancette: 11 passi (con immagini)

Video: Orologio di posizione "Weasley" con 4 lancette: 11 passi (con immagini)

Video: Orologio di posizione
Video: HARRY POTTER STUDIO TOUR LONDON | COMPLETE WALK THROUGH 2024, Luglio
Anonim
Orologio con posizione "Weasley" a 4 lancette
Orologio con posizione "Weasley" a 4 lancette

Quindi, con un Raspberry Pi che funzionava da un po', volevo trovare un bel progetto che mi permettesse di sfruttarlo al meglio. Mi sono imbattuto in questo fantastico orologio di localizzazione Weasley Instructable di ppeters0502 e ho pensato che sarebbe stato bello provare.

L'orologio consiste fondamentalmente in un Raspberry Pi che controlla i servi per far girare le lancette dell'orologio. Come nella casa della famiglia Weasley nei libri/film di Harry Potter, ogni membro della famiglia ha la propria mano. Ogni mano indica la posizione attuale di quel membro della famiglia. L'orologio ottiene ciò ricevendo messaggi dai telefoni cellulari della famiglia ogni volta che entrano o escono da un raggio predefinito.

Le principali differenze rispetto al precedente Instructable erano che avevo bisogno di 4 lancette, non 2 (altrimenti le mie figlie si sarebbero lamentate) e ho deciso di costruire anche il telaio, non di riutilizzare un vecchio orologio. Questo perché ero preoccupato che lo spazio sarebbe stato un problema in una cassa dell'orologio esistente, con la necessità di inserire 4 servi ecc.

Ci è voluto molto più tempo di quanto mi aspettassi, anche se per lo più mi sono imbattuto in problemi poco pratici che mi hanno lasciato perplesso e che non sembravano essere coperti dal post originale. Niente contro l'Instructable originale, che era generalmente fantastico, ma erano passati alcuni anni e le versioni delle cose erano cambiate … ecc. Inoltre, essere nel Regno Unito significava che alcuni degli elementi Imperial/Metric hanno causato più sfide di quanto mi aspettassi.

Inoltre, mentre sono a posto con la codifica, la realizzazione fisica dell'orologio mi ha decisamente allungato e ha richiesto alcuni strumenti aggiuntivi, il che mi ha anche un po' rallentato.

Alla fine includerò una sezione su "Cose che farei diversamente/meglio se lo facessi di nuovo…"

Forniture:

Una delle cose che mi ha colpito è che i componenti costosi avevano a che fare con le lancette dell'orologio. 4 mani è decisamente più costoso di 2. Ho deciso di inserire alcuni costi in modo da avere un'idea. Questa è la prima volta che ho sommato tutto e, ignorando gli strumenti, penso di aver speso circa £ 200. Inoltre alcune cose che non ho usato (e che non ho incluso di seguito) più il Pi, più l'alimentatore che avevo già entrambi.

Pi ecc

  1. Raspberry Pi - non ricordo quanto costasse originariamente ma era un modello 2B. Penso che se non ne hai già uno, probabilmente andrebbe bene anche un Pi Zero. Avevo aggiunto un dongle wifi e una scheda SD con Raspbian. E avevo un vecchio caricatore del telefono Android in giro.
  2. Adafruit Servohat per il Pi - £ 16
  3. Alimentatore per il Servohat - Questo ho davvero faticato a trovare poiché tutti i siti Web hanno appena indicato il sito di adafruit che quindi, ovviamente, consiglia un alimentatore statunitense. Poi mi sono reso conto che avevo un vecchio alimentatore a tensione variabile con punte intercambiabili, quindi l'ho usato. Ma quello americano è di $ 8, quindi questo è il campo da baseball.
  4. Custodia per il Pi, in modo da poterlo poi attaccare alla cornice dell'orologio. £ 5

Servo e ingranaggi

Qui sto citando il prezzo per tutti e 4, quindi dividi se vuoi meno mani (sommando è ~ £ 40 PER MANO = £ 160:-o

  1. 4 x servi - ho usato quelli consigliati da ppeters0502 - trovati su ebay per ~ £ 15 ciascuno = £ 60 - ho cercato il seguente testo "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "ma a volte non erano disponibili
  2. 4 x tubi in ottone che si adattano esattamente l'uno all'altro - ~ £ 3 ciascuno. Ho ottenuto 1 ciascuno di 1/4", 7/32", 3/16", 5/32" = £ 11
  3. 4 x morsetti che si fissano ai tubi in ottone per consentire il fissaggio degli ingranaggi. ~ £ 7 ciascuno = £ 28. Li ho presi da ActiveRobots che fanno ordini regolari da Servocity negli Stati Uniti, permettendoti di evitare la spedizione internazionale. Possono anche ottenere qualsiasi altra cosa tu possa trovare sul sito principale di Servocity negli Stati Uniti. Questo è stato molto utile per i prossimi 2 articoli
  4. 4 x ingranaggi in acetile da 0,770" per il montaggio sui mozzi di bloccaggio. ~ £ 6 ciascuno = £ 24
  5. 4 x ingranaggi in acetile montati su scanalature di acetile per il montaggio sui servi. ~ £6.50 ciascuno = £26
  6. 1 x confezione di dadi esagonali per ingranaggi collegati a dadi di bloccaggio = £ 2,60
  7. 1 x 7/64 "chiave esagonale (chiave a brugola) perché qualsiasi cosa proveniente dagli Stati Uniti è imperiale, quindi le centinaia di chiavi esagonali che ho già sono inutili = £ 1

Per la costruzione fisica

Qui ho usato principalmente ritagli di cose su cui avevo mentito

  1. 2 x quadrati di compensato per la piastra "faccia" e "posteriore"
  2. Ho quindi tagliato dei cilindri 4x10cm da una vecchia ringhiera che avevo, per collegare la parte posteriore al viso
  3. Alcuni blocchi per montare i servi con l'offset corretto - solo frammenti di legno tenero che ho tagliato a misura.
  4. Viti assortite. da molto piccolo (per collegare la custodia Pi al telaio) a medio (per collegare insieme il telaio)
  5. Lamiera di acciaio dolce da 0,75 mm di circa 50 cm x 20 cm (da cui tagliare le mani). Questa è stata l'unica cosa che ho comprato ~ £ 9 da Wickes

Utensili

Alcune cose che avevo e altre che ho preso in prestito o comprato

  1. Saldatore + saldatura elettrica - per collegare i connettori all'Adafruit Hat & Pi.
  2. Jigsaw - per ritagliare la forma ruvida delle mani
  3. Trapano. solo un normale trapano a batteria da 18V
  4. Punte da trapano - Tieni presente che avrai bisogno di punte da trapano imperiali per realizzare fori che corrispondano ai tubi di ottone. Sono riuscito a prenderne un po' in prestito.
  5. seghetto - per tagliare i tubi di ottone. Non fare quello che ho fatto e spendi £ 3 per il tagliatubi, funziona a pressione e significa che l'interno dei tubi diventa un po' più piccolo. quindi il tubo obliquo della misura successiva non passa attraverso
  6. Smerigliatrice da banco - Non ne avevo uno, ma un amico ce l'ha e ha reso MOLTO più facile modellare le mani. Fino ad allora stavo solo usando i file. Non ne comprerei uno solo per questo progetto, ma per le mani di metallo è stato fantastico.
  7. Ho comprato delle lime a punta di diamante assortite (molto piccole). utile per le mani e i tubi circa £ 15
  8. carta vetrata ruvida e liscia
  9. alcuni piccoli morsetti tengono le cose in posizione durante la perforazione.
  10. un vizio per lo stesso motivo.

Passaggio 1: configurazione dei telefoni per inviare la loro posizione al tuo Pi (Parte I MQTT Broker)

Questo pezzo è descritto molto bene da ppeters0502 nel suo eccellente Weasley Clock Instructable. Stranamente, anche se forse riflettendo competenze diverse, ha iniziato con la build e poi è passato al software, io ho fatto il contrario. Quindi, ho iniziato con il telefono … aspetta, no, non l'ho fatto, ho iniziato con il broker MQTT, che è il passaggio 6 nel suo Instructable. Ometterò tutti i pezzi che fa molto bene e aggiungerò solo alcuni pezzi che potrei aggiungere. Ho seguito il percorso CloudMQTT che ha menzionato.

MA Mentre stavo scrivendo questo, ho controllato il collegamento ai piani e ho scoperto che non esiste più un piano gratuito! L'hanno ritirato, per quelli che sembrano motivi ragionevoli. cioè che le persone creerebbero un'istanza gratuita e quindi non la userebbero mai. Non me ne sono accorto perché le istanze attuali possono continuare. Quindi non cambierò. Ma rende le istruzioni un po' ridondanti. Sembrano esserci 3 opzioni.

  1. Paga $ 5 al mese per Cloud MQTT (ma sembra costoso per l'orologio su base continuativa).
  2. Percorri il percorso Mosquitto on Pi come descritto nel primo Instructable. Non posso commentare su questo, ma potrebbe essere una buona opzione.
  3. Basta cercare su Google "broker cloud MQTT gratuito" e sembra che ce ne siano altri.

Quindi, supponendo che tu abbia un broker MQTT funzionante, se è qualcosa di simile a quello di CloudMQTT, verranno visualizzati un server, un utente, una password e una porta. Avrai bisogno di tutti questi per configurare i tuoi telefoni per inviare al broker le tue posizioni / movimenti.

Passaggio 2: configurazione dei telefoni per inviare la loro posizione al tuo Pi (Parte II Owntracks)

Anche questo è trattato molto bene nell'Instructable originale, nei passaggi 7 (Android), 8 (iOS) e 9 (impostazione delle regioni).

Avevo solo dispositivi iOS, quindi non ho provato il passaggio 7.

Cosa aggiungerei a quelle istruzioni?

  1. Nel setup sono presenti anche i campi TrackerID e DeviceID. Questi dovresti avere per poterti identificare all'interno della tua famiglia. Per esempio. Li avevo rispettivamente come R e RPhone. Ciò significa che puoi passare all'orologio quale Servo e quindi quale lancetta girare.
  2. Le regioni sono il nome delle località che si desidera monitorare.
  3. Ogni regione è definita da un Nome, una Latitudine, una Longitudine e un Raggio.
  4. Poiché volevo avere un numero di posizioni come una sezione del mio orologio, ho usato una convenzione di denominazione, che si è rivelata molto utile. Sono possibili altri metodi, ma questo ha funzionato per me.

    • Ad esempio, per la sezione FAMIGLIA dell'orologio volevo avere i miei genitori e fratelli e i genitori e fratelli di mia moglie. Quindi avevo luoghi come "Family Tom", "Family Dick", Family Harry" e "Family ParentsR". Questo significava che la fase successiva poteva sapere cosa passare all'orologio.
    • Tieni presente che le persone possono avere posizioni diverse. Ma finché sono coerenti con la convenzione di denominazione, va bene. Per esempio. il mio lavoro sarebbe diverso dalla regione di lavoro di mia moglie e chiamato in modo diverso. ma fintanto che entrambi iniziano a "Lavorare", allora tutto va bene.
  5. Vuoi che la modalità sia impostata su "Significativo" nella schermata Mappe. Ciò significa che (per lo più) ricevi messaggi solo quando entri o esci dalle regioni. Questa sembra essere la versione aggiornata della nota contrassegnata IMPORTANTE: alla fine del passaggio 8 nell'Instructable originale.
  6. Come menzionato nell'Instructable originale, l'utilizzo di Google Maps è un ottimo modo per scoprire il Lat/Long da qualche parte. Ho trovato più efficiente farlo in blocco, scoprendo tutti i Lat/Long della mia posizione, poi li ho incollati in Notes (sul mio Mac) e con la sincronizzazione cloud, significava che apparivano magicamente sul mio iPhone in Notes e potrei copiarli/incollarli in Owntracks. Significava anche che potevo inviare il file ai telefoni della mia famiglia e avevamo tutti posizioni coerenti.
  7. Luoghi vicini tra loro possono causare problemi. Mio fratello vive a 2 strade di distanza e inizialmente il mio telefono continuava a pensare che fossi contemporaneamente nella zona di casa sua e a casa sua. Alla fine ho dovuto inserire una logica aggiuntiva in Node Red per rilevare e ignorare questo avvenimento.

Passaggio 3: configurazione del Raspberry Pi

Configurazione del Raspberry Pi
Configurazione del Raspberry Pi

Quindi qui presumo che tu abbia un Pi di base configurato e su wifi. Stavo eseguendo Raspbian ma non dovrebbe importare. Usa le istruzioni su raspberrypi.org per impostare tutto.

Nota che un Pi ha porte per la visualizzazione su un monitor e una tastiera / mouse ecc. MA ovviamente una volta che lo hai nell'orologio, non vuoi nulla di tutto ciò. Quindi la risposta, suggerita da qualcuno sul sito Web Raspberry pi, credo, fosse quella di impostare una connessione VNC. Ciò ti consente di connetterti da un altro dispositivo al Pi e anche di controllarlo. Lo faccio dal mio Mac ma l'ho fatto anche da un iPad. Suggerirei di usare qualcosa con una tastiera per facilità d'uso.

Ho appena scoperto che sembrano aver reso tutto più facile da quando mi sono connesso… guarda qui

In sostanza ti connetti e ottieni una finestra che è l'interfaccia Pi standard.

Quindi, hai una finestra sul tuo Pi dal tuo laptop o computer.

Ora devi collegare i servi.

Per prima cosa devi eseguire alcune saldature di base per ottenere il cappello adafruit sul Pi. È un po 'complicato, ma nonostante non abbia saldato per 30 e passa anni, andava bene. Come sempre, ho trovato un utile video di YouTube per guidarmi attraverso di esso, il che è stato di grande aiuto.

Mentre il cappello può eseguire 16 servi, me ne servivano solo 4 e quindi mi sono preoccupato solo di saldare il primo set di 4 pin.

Quindi i servi spingono semplicemente sui perni. Ne ho fatto uno prima per verificare che potevo effettivamente far muovere il servo.

Fu qui che incontrai il mio primo grande ostacolo. Avevo uno script Python molto semplice per spostare i servi e letteralmente non è successo nulla. Ho passato circa una settimana a provare nuovi script, ecc., e poi il fumo ha iniziato ad apparire sul cappello. Spegnendo tutto, ho controllato lo schema. Era un componente che protegge dall'inversione di polarità. Poiché avevo una fonte di alimentazione multi-punta e multi-tensione, mi ero perso il fatto che si potesse avere l'uscita CC in entrambe le direzioni invertendo la punta. Mi ero sbagliato (50:50 di possibilità) e ho appena bruciato il mio primo cappello adafruit

:-(Quindi un leggero ritardo mentre ne acquistavo uno nuovo, risaldavo e correggevo la punta. Molto meglio.

Successivamente ho dovuto capire come spostare i servi nel punto corretto dell'orologio. Verrà nel passaggio 5, ma quello che ho fatto, non avendo costruito l'orologio vero e proprio, è stato avvitare leggermente i servi su un pezzo di legno a caso e attaccare del nastro adesivo con una freccia su di essi, come nell'immagine. Questo ha dato un feedback molto visivo a ciò che stavo codificando.

Passaggio 4: installazione di Node Red (ottenimento dei messaggi dal server MQTT allo script Python)

Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)
Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)
Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)
Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)
Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)
Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)
Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)
Installazione di Node Red (ottenimento dei messaggi dal server MQTT al tuo script Python)

Node-RED è un programma che installi sul Pi, che ti offre un'interfaccia visiva (sul tuo browser) per ricevere messaggi dal tuo server MQTT e utilizzarlo per passare le informazioni corrette al tuo script python (trattato nel passaggio successivo (Passaggio 5). Ho praticamente usato le istruzioni di ppeters0502 nel passaggio 5. C'è una logica in questi flussi e una logica aggiuntiva nel Python, e puoi avere più o meno in ciascuno, a seconda delle tue preferenze. Fondamentalmente devi fare il seguente

  1. Avere nodi di ricezione per i messaggi MQTT: questi sono viola chiaro e ne avevo 1 per membro della famiglia
  2. Mappalo sul servo che desideri spostare (numerato 0, 1, 2, 3)
  3. Determina se stai entrando o uscendo da un raggio su OwnTracks
  4. Calcola a quale posizione deve puntare quel servo

    C'erano alcune eccezioni alle regole di base che dovevo costruire

  5. Imposta l'angolo correttamente

Ho fatto fare a Node-RED i primi 4 e ho mantenuto il Python relativamente semplice.

Puoi vedere il flusso di base qui e tutti i flussi possono essere esportati nel formato qui, il che significa che puoi importare questo flusso di base nel tuo Node-RED e quindi adattarlo. Nota che ho eliminato tutte le connessioni dai nodi viola in modo che tu non possa accedere alla mia istanza MQTT. Ho anche eliminato tutti i nodi di test in quanto contengono dati effettivi… potrebbe essere necessario modificare questo tipo di file in flow.json per importarlo nel tuo Node-RED ma Instructables non mi ha permesso di caricarlo.

I nodi verdi sono nodi di debug che quindi visualizzano l'output nella finestra di debug a destra dello schermo (potrebbe essere necessario espandere - trova la freccia a metà in alto a destra)

Il primo bit da fare è il bit "Live - solo per il debug". Ciò verifica che tu possa ricevere i messaggi MQTT e vedere cosa c'è in essi. json è solo una versione più strutturata dei messaggi che ti consente di estrarre i dati più facilmente. In questo flusso, quando sono live, collego quindi i nodi viola in alto a sinistra al nodo json a destra di essi.

Nodi di test

Una volta che sai come appariranno i messaggi dal vivo, diventa molto noioso dover uscire di casa e percorrere la strada e tornare indietro, solo per innescare un evento. Dopo averlo fatto, puoi copiare il messaggio in un trigger TEST e quindi fare clic su di esso per simulare l'evento. Puoi anche modificare i dati, per fingere di essere per posizioni diverse (assicurati che corrispondano esattamente ai nomi delle posizioni in Owntracks).

Puoi vedere nel flusso che i casi di test vanno tutti in un nodo separato e poi che va nel nodo json. Questo è puramente per riordinare lo schermo.

Non posso sottolineare abbastanza quanto siano stati utili questi nodi, e lo siano tuttora.

Chiamare Python

Così ho poi colpito il prossimo posto di blocco. Questo ha richiesto MOLTO googling nei forum, ecc. Il mio flusso avrebbe funzionato perfettamente, ma non avrebbe attivato il mio script Python. Non sono riuscito a risolverlo, ma ti risparmierò le imprecazioni ecc. Solo per dire che, come evidenziato nel secondo screenshot, devi specificare python3, poiché apparentemente Node-RED assume python2, a meno che non lo specifichi.

2 complicazioni aggiuntive - solo se necessario

Poi ho avuto una serie di sfide in cui la logica non funzionava del tutto. Il primo è che Owntracks è diventato un po' strano e, dato che mio fratello vive a 2 strade di distanza, spesso diceva che ero in 2 posti contemporaneamente, o che continuavo a passare da uno all'altro. L'unico modo per aggirare il problema era aggiungere una condizione per fermare i falsi positivi. Se affermava che ero a casa sua, allora l'ho instradato e ho controllato l'effettiva longitudine/latitudine nel messaggio e l'ho interrotto se diceva che ero effettivamente a casa.

L'altro problema era che, quando portavo a spasso il mio cane, non riuscivo davvero a ottenere un buon raggio. Di solito cammino nella stessa zona, quindi qui ho detto "se entro in questa zona, sicuramente porterò a spasso il cane, e lo farò fino a quando non torno a casa". questo significava che non sarebbe passato al pub che passo sulla strada di casa, o in vari altri luoghi locali che potrebbero innescarsi mentre passeggio con il cane. Per fare ciò avevo bisogno di impostare alcune variabili di contesto persistenti (cercarle su Node-RED. Vedi screenshot. Queste variabili persistono fino al riavvio di Node-RED e quindi posso dire Se sei a passeggio, imposta la variabile di contesto a "Cane". Quindi ignora NIENTE altro a meno che non 'Entro' a casa.

L'ultimo screenshot è quello del mio attuale flusso finale, con tutte le eccezioni, solo per il tuo interesse.

Passaggio 5: effettivamente spostare i servi con Python sul Pi

Una breve deviazione nei servi. Non sapevo nulla dei servi, ma ci sono molte informazioni online. Quelli che ho usato sono servi continui che possono girare a 360 gradi e senza intoppi. L'altro tipo principale sono i servi stepper che si muovono in blocchi (passi) e apparentemente salgono solo fino a circa 180 gradi (chiaramente non utili qui). Il vantaggio dei servi stepper è che puoi semplicemente inserire un angolo e si spostano in quel punto e si fermano. Tutta la documentazione che ho trovato diceva che i servi continui funzionano ricevendo una velocità e un tempo per mantenere quella velocità (ad esempio la massima velocità per 1 secondo) e finiscono dove finiscono, ma è relativo al loro punto di partenza. Dopo molti tentativi, non sono riuscito a farlo funzionare, ma ho scoperto, usando il banco di prova, che i servi tornavano costantemente allo stesso punto dato lo stesso angolo. Che è molto più facile, quindi l'ho appena fatto. Potrebbe esserci qualche aspetto negativo di cui non sono a conoscenza, ma per me funziona. Nota, tuttavia, che ogni servo è unico, quindi devi avere un set unico di angoli per ogni servo. Ho trovato più facile avere uno script Python di "calibrazione", in cui potevo impostare i servi sugli angoli a turno, perfezionandoli finché non sembravano tutti a posto. Questo è il primo script allegato. Devi solo commentare i servi che non stai testando, concentrarti su uno e quindi regolare i valori di cui hai bisogno. NOTA: la calibrazione per il banco prova è semplice e approssimativa e pronta. Dovrai ricalibrare quando l'orologio è assemblato, perché gli ingranaggi ecc cambieranno tutto. Quindi il secondo script è abbastanza semplice. Fa quanto segue

  1. Importa alcune librerie
  2. sposta le variabili provenienti da Node-RED nelle variabili nello script
  3. mappa gli angoli determinati dallo script di calibrazione alle posizioni sull'orologio.
  4. controlla che la posizione si trovi nell'elenco e, in caso contrario, passa a "Pericolo"
  5. scrivi cosa è stato fatto in un file di registro
  6. spostare il servo richiesto all'angolo richiesto
  7. Ferma un servo dal "ronzio" *

3 cose da notare.

Il file di registro è super utile per il debug. Significa che puoi guardare il debug di Node-RED di un messaggio e quindi vedere cosa è successo nello script. l'output è simile a questo. I primi 3 sono io che porto il cane a fare una passeggiata, e poi il bambino 1 che esco di casa e arrivo a scuola. Nota per controllare l'ora sul Pi. L'impostazione predefinita potrebbe essere UTC e non consentire modifiche all'ora legale/solare. Per esempio. i tempi sottostanti sono 1 ora fuori.

2020-12-07_05:36:03 Chi = 0, loc = In viaggio, dettaglio = Casa, Angolo = 10, indice = 8

2020-12-07_05:36:04 Chi = 0, loc = Cane, dettaglio = Astons, Angolo = 86,5, indice = 10

2020-12-07_06:07:49 Chi = 0, loc = Home, dettaglio = entrata, Angolo = 75, indice = 0

2020-12-07_06:23:53 Chi = 2, loc = In viaggio, dettaglio = Casa, Angolo = 19, indice = 8

2020-12-07_06:30:48 Chi = 2, loc = Scuola, dettaglio = N, Angolo = 60,5, indice = 2

Servo-ronzio

Uno dei Servo (0) ha continuato a ronzare dopo la fine del copione. Come puoi immaginare, è molto fastidioso averlo nella nostra cucina. Ho trovato un thread da qualche parte che menzionava l'impostazione dell'angolo del servo su "none" che in qualche modo lo impostava inattivo. Ha funzionato brillantemente e può essere visto nella sceneggiatura alla fine.

tempi

Tenete a mente quanto in basso ci vuole una mano per spazzare ventiquattr'ore su ventiquattro. Puoi vedere nello script che c'è una riga time.sleep(4) appena prima di impostare il servo per smettere di ronzare. Questo perché devi consentire alla mano di raggiungere la sua destinazione prima di impostarla su inattivo. Altrimenti si ferma. Questo è importante anche quando lo si calibra, perché si stanno facendo più mosse all'interno dello script. Lo metterei in esecuzione per spostarsi a turno in tutte e 12 le posizioni, in modo da poterle ricontrollare tutte. ma hai bisogno di un po' di tempo nel mezzo.

Passaggio 6: finalizzazione del software: dai telefoni ai servi

Una volta che hai impostato il banco di prova e gli script, puoi eseguirlo "live" per un po' e vedere come funziona in tempo reale. Qui è dove ho trovato le eccezioni che dovevo aggiungere al mio flusso Node-RED.

Puoi facilmente disconnettere e connettere i membri della famiglia nel flusso Node-RED se vuoi concentrarti su uno. Ad esempio, se due stanno causando problemi ma si desidera risolverne uno alla volta. In caso contrario, tieni presente che continuerai a ricevere messaggi da qualsiasi telefono connesso.

Ho menzionato il problema con il Dog-walking e la casa di mio fratello che è abbastanza vicina. Ho avuto altre 2 sfide.

Innanzitutto, posizioni all'interno di altre posizioni. Mia moglie stava facendo un corso in un college a Londra. Volevamo che fosse registrato come "Scuola", ma è anche in "Londra". Quindi abbiamo dovuto riutilizzare il contesto per dire che se stavi lasciando quella "Scuola", allora passa a "Londra" e non a "Viaggiare".

In secondo luogo, le condizioni di gara. Come accennato, la casa di mio fratello è a 2 strade di distanza e anche vicino al nostro pub/ristorante preferito. Ciò significa che a volte vengono ricevuti 2 segnali contemporaneamente o molto vicini tra loro. Questo può creare una "condizione di gara" in cui ottieni risultati diversi a seconda di quale supera la logica più rapidamente, portando a risultati imprevedibili. Per contrastare ciò, ho fatto in modo che tutti i messaggi "in entrata" avessero un ritardo di 1 secondo nella logica, che sembrava risolvere il problema. Potrebbero esserci modi migliori, più eleganti, per risolvere questo problema, ma sembrava funzionare.

Passaggio 7: costruire l'orologio fisico - Parte I - I servi e l'asse

Costruire l'orologio fisico - Parte I - I servi e l'asse
Costruire l'orologio fisico - Parte I - I servi e l'asse
Costruire l'orologio fisico - Parte I - I servi e l'asse
Costruire l'orologio fisico - Parte I - I servi e l'asse
Costruire l'orologio fisico - Parte I - I servi e l'asse
Costruire l'orologio fisico - Parte I - I servi e l'asse

Ora la parte di cui ero meno fiducioso, motivo per cui l'ho lasciata durare. Volevo un viso di dimensioni adeguate e una costruzione facile. Ero anche nervoso all'idea di ottenere fisicamente 2 servi attorno all'asse centrale. Ciò significava che, dopo aver guardato brevemente su ebay i vecchi orologi come nell'istruibile che stavo seguendo, ho deciso di darmi più possibilità costruendolo da solo.

  • Ho ottenuto 2 quadrati di compensato grandi (~30 cm) che avevo in giro (circa 9 mm di spessore).
  • Poi ho tagliato un vecchio binario per ringhiere in sezioni di 4x10 cm e ho avvitato insieme la piastra anteriore e quella posteriore.
  • Dopo aver segnato il foro centrale, l'ho forato in modo che avesse le stesse dimensioni del tubo di ottone più grande.
  • Poi l'ho dipinto con una normale vernice bianca lucida.
  • Dopo alcuni esperimenti mi sono reso conto che probabilmente non avrei potuto ottenere 4 servi attorno allo stesso asse se fossero stati tutti attaccati alla piastra posteriore (o anteriore). Quindi avevo bisogno di avere 3 + 1 o 2 + 2, su ogni piatto. Ho finito con 3 sul retro e 1 sul davanti.
  • Ho elaborato gli offset richiesti su un pezzo di carta e poi ho tagliato i tubi di ottone per abbinarli. Nota che il tubo più spesso è il più corto e il più sottile deve arrivare fino alla piastra posteriore. (In realtà ho incorporato il più piccolo in un foro che ho praticato parzialmente nella piastra posteriore, ma non completamente in modo che l'asse non si sposti all'indietro).
  • Per i tubi, ho comprato un tagliatubi, ma questo usa la pressione per tagliarli e significa che non puoi inserire il tubo più piccolo all'interno. Quindi ho usato un seghetto e poi ho dovuto fare una discreta quantità di limatura per farli funzionare. Le lime a punta di diamante erano inestimabili qui.
  • Quindi ho abbinato il diagramma agli offset effettivi per i morsetti e gli ingranaggi *.
  • Una volta che ho avuto gli offset, sapevo quanto "alto" fare i blocchi per montare i servi. Ho rotto un paio di blocchi segandoli troppo sottili e praticando anche il foro per far uscire il filo.
  • Poi è arrivata la parte complicata di dove mettere i blocchi in modo che incontrassero esattamente gli ingranaggi sull'asse. Ho avvitato un blocco e quindi ho potuto ruotare il servo per incontrare l'asse e quindi avvitare il secondo blocco l'altra estremità del servo. Ho anche scoperto che dovevo tagliare un po' da alcuni blocchi per evitare di impigliare altri ingranaggi. Ci è voluto un bel po'.
  • Una volta fatto tutto, ho preso la mia custodia per Raspberry Pi, ho praticato due fori e l'ho avvitata alla piastra frontale. Quindi potrei aggiungere il Pi, chiudere le piastre anteriore e posteriore (avendo collegato i servi al pi greco (ricordando quale servo era per quale membro della famiglia) e girare alle mani …

* Qui ho trovato il problema più grande, che devo ancora risolvere completamente. I tubi in ottone erano, 1/4", 7/32", 3/16", 5/32". Ma i morsetti erano metrici (tranne uno che era da 1/4"). Convertendo i tubi in metrici erano 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. I morsetti rimanenti erano alesaggio di 4 mm, 5 mm e 6 mm. Il più piccolo 2 e il più grandi vanno bene. ma chiaramente lo 0,44 mm è una corsa eccessiva per il morsetto, quindi ho dovuto riempirlo con della carta. L'ho provato un certo numero di volte e funziona bene per un po' e poi si allenta di nuovo. Quindi il 2 ° più grande la mano non funziona correttamente. È andato bene per circa 6 mesi però, quindi il tempo trascorso a farlo bene è stato tempo ben investito. Ma se lo avessi fatto di nuovo avrei potuto aumentare o diminuire di 1 taglia, con uno spazio vuoto per cercare di ottenere un migliore adattamento del morsetto al tubo, ad esempio per 9/32", 1/4", (gap), 3/16", 5/32"

Passaggio 8: le lancette dell'orologio

Le lancette dell'orologio
Le lancette dell'orologio
Le lancette dell'orologio
Le lancette dell'orologio
Le lancette dell'orologio
Le lancette dell'orologio

Ho deciso per la lamiera d'acciaio perché volevo qualcosa di rigido ma con meno probabilità che si spezzasse mentre lo stavo realizzando. Inoltre, essere sottili significava che 4 mani erano un problema minore.

  • Per prima cosa ho abbozzato una forma.
  • Poi l'ho trasferito sull'acciaio sopra del nastro adesivo.
  • Poi li ho ritagliati molto inespertamente con il mio seghetto alternativo. Erano, e sono, tutti diversi, ma non mi dispiace.
  • Poi un amico mi ha suggerito di prendere in prestito la sua mola da banco per modellarli, e questo è stato fantastico. altamente raccomandato. Altrimenti l'archiviazione richiede anni.
  • C'era ancora un po' di limatura da fare e poi carteggiare per garantire che non ci fossero spigoli vivi e anche una bella finitura.
  • Ho dovuto praticare dei fori per far combaciare i rispettivi tubi di ottone (usare i tubi tagliati per controllare, non quelli montati sull'orologio).
  • Ho scoperto che i fori avevano bisogno di un po' di limatura per inserirli sui tubi, ma una volta inseriti erano stretti e non avevano bisogno di colla. L'eccezione era la mano anteriore che volevo avere una "copertina". Quindi ho ritagliato un pezzo d'acciaio (per lo più) rotondo, dopo aver praticato il foro e averlo ottenuto della giusta dimensione, e l'ho superincollato sul davanti. lo vedi nell'ultima foto. Occasionalmente la mano anteriore avrebbe bisogno di una piccola quantità di colla per fissarla, ma dopo un paio di false partenze le mani funzionano davvero bene.
  • Avevo rifiutato l'idea delle foto (perché i bambini si lamentavano rapidamente delle nostre foto di data) quindi ho optato per la pittura sulle iniziali con vernice acrilica.

Passaggio 9: completo

Completare!
Completare!
Completare!
Completare!

Funziona tutto davvero bene. Le mani a volte sono un po' storte, a seconda della provenienza, ma in realtà non importa perché ogni posizione è una sezione e non solo una linea.

A volte, stranamente, il mio telefono si rifiuta di riconoscere che sono a casa. Sono chiaramente all'interno del raggio di Owntracks quando viene mostrato sulla mappa, e anche quando la precisione è buona… non ho idea del perché. non sembra affliggere il resto della mia famiglia. ma l'assetto è lo stesso. Ciò significa che Owntracks non invia mai un messaggio e rimango bloccato in "Viaggiare". Ma di solito si risolve da solo alla fine.

È stato molto utile averlo nella nostra cucina, soprattutto per sapere quando le ragazze stanno tornando a casa da scuola o dalle case dei loro amici, e quindi quando avere cibo/tè pronto per loro.

Ancora una volta, un grande ringraziamento a @ppeters0502 per le ottime istruzioni da seguire. Speriamo che questi possano aggiungere qualcosa intorno alla creazione di un orologio a 4 lancette..

Passaggio 10: cose che ho imparato e che farei meglio/in modo diverso se dovessi rifarlo

  • Le build fisiche richiedono tentativi ed errori. Non c'è modo di prevedere i problemi di spazio, basta tuffarsi e provare.
  • Per il codice, i problemi di ricerca su Google sono essenziali
  • Inizia di base e costruisci. I servi sul legno del banco prova significavano che potevo far funzionare la maggior parte senza la costruzione fisica
  • Potrei aver tagliato al laser le mani con una macchina CNC. Ma non sapevo dove fosse quello locale, e mi piace come funzionava l'acciaio dolce (era economico e la smerigliatrice da banco lo rendeva molto più facile)
  • un motore passo-passo potrebbe essere possibile se usi l'ingranaggio per ottenere un giro di 360. ma potresti dover avere i servi troppo vicini all'asse centrale
  • Ci sono 2 tipi di servo (Futaba e HiTech). Assicurati di aver controllato questo dato che hanno un numero diverso di denti sulla spline. E inizialmente ho comprato quelli sbagliati…
  • Non collegare il cappello con la polarità sbagliata;-)
  • Google e Stack Overflow sono tuoi amici quando sei bloccato. Ma devi usare buoni termini di ricerca…
  • Il banco di prova è in realtà un modo per ottenere una versione più semplice ed economica molto più facilmente. La maggior parte della complicazione con la costruzione deriva dal dover far ruotare le mani attorno allo stesso asse. Se si scende a compromessi su questo, allora è tutto molto più facile. E penso che 4 possa essere il limite del singolo asse a meno che l'albero non si allunghi molto. Potresti, suppongo, averne 3 sulla piastra anteriore e tre sulla piastra posteriore se l'asta fosse più lunga…

Passaggio 11: possibili estensioni future…?

Le idee che ho avuto sui prossimi passi sono le seguenti.

  1. Vorrei riutilizzare un vecchio iPad come quadrante dell'orologio. cioè fare un orologio digitale. Possibilmente basato su browser o un'app. Poiché un orologio fisico è essenzialmente senza stato (cioè non sa dove si trova attualmente, tranne in virtù del fatto che le lancette si trovano in una posizione fisica) avrei bisogno di avere un archivio persistente di dati. Node Red può scrivere sul file system locale, quindi probabilmente lo farei.
  2. Se lo facessi, mi piacerebbe poterlo vedere da fuori casa. Ma poi abbiamo davvero bisogno di sistemare la sicurezza. Poiché l'accesso all'interno della stessa rete wifi è una cosa, l'accesso da Internet è un'altra. Al momento non ho idea di come farlo al meglio, ma sospetto che un abbonamento MQTT che va nella direzione opposta potrebbe funzionare (pi pubblica lo stato corrente e i dispositivi esterni si iscrivono ad esso) …?
  3. Mi piacerebbe molto una mano per "Abroad". ma ciò potrebbe essere complesso dal punto di vista di OwnTracks. Forse potresti semplicemente usare long/lat combinato con dei raggi enormi?

Consigliato: