Inhoudsopgave:

Locatieklok 'Weasley' met 4 wijzers - Ajarnpa
Locatieklok 'Weasley' met 4 wijzers - Ajarnpa

Video: Locatieklok 'Weasley' met 4 wijzers - Ajarnpa

Video: Locatieklok 'Weasley' met 4 wijzers - Ajarnpa
Video: HARRY POTTER STUDIO TOUR LONDON | COMPLETE WALK THROUGH 2024, Juli-
Anonim
Locatieklok 'Weasley' met 4 wijzers
Locatieklok 'Weasley' met 4 wijzers

Dus met een Raspberry Pi die al een tijdje aan het draaien was, wilde ik een leuk project vinden waarmee ik er optimaal gebruik van kon maken. Ik kwam deze geweldige Instructable Build Your Own Weasley Location Clock van ppeters0502 tegen en dacht dat het goed zou zijn om het te proberen.

De klok bestaat in feite uit een Raspberry Pi die servo's bestuurt om de wijzers van de klok te laten draaien. Net als in het huis van de familie Wemel in de boeken/films van Harry Potter, heeft elk gezinslid zijn eigen hand. Elke hand wijst naar de huidige locatie van dat familielid. De klok bereikt dit door berichten van de mobiele telefoons van het gezin te ontvangen wanneer ze een vooraf gedefinieerde straal binnenkomen of verlaten.

De belangrijkste verschillen met de vorige Instructable waren dat ik 4 handen nodig had, niet 2 (anders zouden mijn dochters geklaagd hebben) en ik besloot ook het frame te bouwen, geen oude klok om opnieuw te gebruiken. Dit was omdat ik bang was dat de ruimte een probleem zou zijn in een bestaande klokkast, met de noodzaak om in 4 servo's enz.

Het duurde veel langer dan ik had verwacht, maar vooral waar ik lastige problemen tegenkwam die me dwarszaten en die niet onder de oorspronkelijke post leken te vallen. Niets tegen de originele Instructable, die over het algemeen geweldig was, maar er waren enkele jaren verstreken en versies van dingen waren veranderd … enz. Omdat ik in het VK was, betekende dit ook dat sommige imperiale/metrische elementen meer uitdagingen veroorzaakten dan ik had verwacht.

Ook, hoewel ik goed ben in het coderen, heeft het fysieke maken van de klok me zeker uitgerekt en wat extra hulpmiddelen nodig gehad, wat me ook enigszins vertraagde.

Aan het einde zal ik een sectie opnemen over "Dingen die ik anders/beter zou doen als ik het opnieuw zou doen…"

Benodigdheden:

Een van de dingen die me opvielen was dat de dure componenten te maken hadden met de wijzers van de klok. 4 handen is zeker veel duurder dan 2. Ik heb besloten om wat kosten in te voeren, zodat je een idee hebt. Dit is de eerste keer dat ik alles heb opgeteld, en als ik de tools buiten beschouwing heb gelaten, denk ik dat ik ongeveer £ 200 heb uitgegeven. Plus wat dingen die ik niet heb gebruikt (en hieronder niet heb opgenomen) plus de Pi, plus de voeding die ik allebei al had.

Pi enz

  1. Raspberry Pi - kan me niet herinneren hoeveel het oorspronkelijk kostte, maar het was een Model 2B. Ik denk dat als je er nog geen hebt, zelfs een Pi Zero dat waarschijnlijk zou doen. Ik had een wifi-dongle en SD-kaart toegevoegd met Raspbian. En ik had een oude Android-telefoonoplader rondslingeren.
  2. Adafruit Servohat voor de Pi - £ 16
  3. Stroomvoorziening voor de Servohat - Dit had ik echt moeite om te vinden, omdat alle websites zojuist naar de adafruit-site wezen die toen duidelijk een Amerikaanse stroomvoorziening aanbeveelt. Toen realiseerde ik me dat ik een oude variabele spanningsvoorziening had met verwisselbare tips, dus die gebruikte ik. Maar de Amerikaanse is $ 8, dus dat is de marge.
  4. Koffer voor de Pi, zodat ik hem dan aan het klokframe kon bevestigen. £ 5

Servo's en versnellingen

Hier noem ik de prijs voor alle 4, dus deel als je minder handen wilt (optellen is het ~ £ 40 PER HAND = £ 160:-o

  1. 4 x servo's - ik heb de servo's gebruikt die worden aanbevolen door ppeters0502 - gevonden op ebay voor ~ £ 15 per stuk = £ 60 - ik zocht naar de volgende tekst "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-graden " maar soms waren ze niet beschikbaar
  2. 4 x koperen buizen die precies in elkaar pasten - ~ £ 3 per stuk. Ik heb 1 elk van 1/4", 7/32", 3/16", 5/32" = £ 11
  3. 4 x klemmen die op de koperen buizen klemmen om versnellingen te bevestigen. ~ £ 7 per stuk = £ 28. Ik heb ze van ActiveRobots die regelmatig bestellingen doen bij Servocity in de VS, zodat je de internationale verzending kunt vermijden. Ze kunnen ook alles krijgen wat je op Servocity's belangrijkste Amerikaanse site kunt vinden. Dit was erg handig voor de volgende 2 items
  4. 4 x acetyl 0,770" patroon tandwielen voor montage op de klemnaven. ~ £6 elk = £24
  5. 4 x acetyl spline gemonteerde acetyl tandwielen voor montage op de servo's. ~ £6.50 elk = £26
  6. 1 x pak zeskantmoeren op bevestigde tandwielen op klemmoeren = £ 2,60
  7. 1 x 7/64" inbussleutel (inbussleutel) omdat alles dat uit de VS komt imperial is, dus de honderden inbussleutels die ik al heb zijn nutteloos = £ 1

Voor de fysieke build

Hier gebruikte ik meestal restanten van dingen waar ik over had gelogen

  1. 2 x vierkanten multiplex voor de 'face' en 'back' plaat
  2. Ik sneed toen cilinders van 4x10cm uit een oude leuning die ik had, om de achterkant met het gezicht te verbinden
  3. Enkele blokken om de servo's op de juiste offset te monteren - alleen zachthoutresten die ik op maat heb gesneden.
  4. Diverse schroeven. van heel klein (om Pi-behuizing aan frame te bevestigen) tot medium (om frame aan elkaar te bevestigen)
  5. 0,75 mm plaat van zacht staal ongeveer 50 cm x 20 cm (om de handen uit te snijden). Dit was het enige dat ik ~£9 van Wickes kocht

Gereedschap

Sommige dingen had ik en sommige heb ik geleend of gekocht

  1. Soldeerbout + elektrisch soldeer - voor het bevestigen van de connectoren aan de Adafruit Hat & Pi.
  2. Decoupeerzaag - voor het uitsnijden van de ruwe vorm van de handen
  3. Oefening. gewoon een normale accu 18V boormachine
  4. Boren - Houd er rekening mee dat u Engelse boren nodig hebt om gaten te maken die passen bij de koperen buizen. Ik heb er wat van kunnen lenen.
  5. ijzerzaag - voor het snijden van de koperen buizen. Doe niet wat ik deed en geef £ 3 uit aan de buizensnijder, deze werkt door druk en betekent dat de binnenkant van de buizen een beetje kleiner wordt. dus de volgende maat onderbuis past er dan niet doorheen
  6. Bench grinder - Ik had er geen, maar een vriend wel en het maakte het vormgeven van de handen VEEL gemakkelijker. Tot die tijd gebruikte ik alleen bestanden. Ik zou er niet alleen voor dit project een kopen, maar voor de metalen wijzers was het geweldig.
  7. Ik kocht een aantal verschillende diamanten puntvijlen (erg klein). handig voor de handen en buizen rond £ 15
  8. ruw en glad schuurpapier
  9. sommige kleine klemmen houden dingen op hun plaats tijdens het boren.
  10. een ondeugd om dezelfde reden.

Stap 1: Uw telefoons instellen om hun locatie naar uw Pi te verzenden (deel I MQTT-makelaar)

Dit bit wordt heel goed beschreven door ppeters0502 in zijn uitstekende Weasley Clock Instructable. Vreemd genoeg, hoewel hij misschien verschillende vaardigheden weerspiegelt, begon hij met de build en stapte toen over naar de software, ik deed het andersom. Dus ik begon met de telefoon … wacht even, nee dat deed ik niet, ik begon met de MQTT-makelaar, wat stap 6 is in zijn Instructable. Ik zal alle stukjes weglaten die hij heel goed doet en er gewoon wat stukjes in gooien die ik zou kunnen toevoegen. Ik ging de CloudMQTT-route die hij noemde.

MAAR Terwijl ik dit aan het schrijven was, controleerde ik de link naar de plannen en ontdekte dat er geen gratis abonnement meer is! Ze hebben het ingetrokken, voor wat lijkt op redelijke gronden. dat wil zeggen dat mensen een gratis exemplaar zouden opzetten en het vervolgens nooit zouden gebruiken. Ik heb het niet gemerkt omdat de huidige instanties kunnen doorgaan. Dus ik zal niet veranderen. Maar het maakt de instructies een beetje overbodig. Er lijken 3 opties te zijn.

  1. Betaal de $ 5 per maand voor Cloud MQTT (maar dat klinkt continu duur voor de klok).
  2. Ga de Mosquitto op Pi-route zoals beschreven in de eerste Instructable. Ik kan daar niets over zeggen, maar zou een goede optie kunnen zijn.
  3. Google maar eens op "free MQTT cloud broker" en het lijkt erop dat er nog meer zijn.

Dus, in de veronderstelling dat je een werkende MQTT-makelaar hebt, als het zoiets is als de CloudMQTT-makelaar, worden er een server, gebruiker, wachtwoord en poort weergegeven. U hebt deze allemaal nodig om uw telefoons in te stellen om de makelaar uw locaties/bewegingen te sturen.

Stap 2: Uw telefoons instellen om hun locatie naar uw Pi te verzenden (deel II Owntracks)

Dit wordt ook heel goed behandeld in de originele Instructable, in stap 7 (Android), 8 (iOS) & 9 (regio's instellen).

Ik had alleen iOS-apparaten, dus ik heb stap 7 niet geprobeerd.

Wat zou ik aan die instructies toevoegen?

  1. In de opzet staan ook de velden TrackerID en DeviceID. Deze moet u hebben om u binnen uw gezin te kunnen identificeren. bijv. Ik had ze respectievelijk als R en RPhone. Dit betekent dat je door naar de klok kunt gaan welke Servo en dus welke wijzer je moet draaien.
  2. Regio's zijn de naam voor de locaties die u wilt volgen.
  3. Elke regio wordt gedefinieerd door een naam, een breedtegraad, een lengtegraad en een straal.
  4. Omdat ik een aantal locaties als één sectie op mijn klok wilde hebben, gebruikte ik een naamgevingsconventie, die erg handig bleek te zijn. Andere methoden zijn mogelijk, maar dit werkte voor mij.

    • Voor het gedeelte FAMILY van de klok wilde ik bijvoorbeeld mijn ouders en broers en zussen en de ouders en broers en zussen van mijn vrouw hebben. Daarom had ik locaties als "Family Tom", "Family Dick", Family Harry" & "Family ParentsR". Dit betekende dat de volgende fase kon weten wat ze aan de klok moesten doorgeven.
    • Houd er rekening mee dat mensen verschillende locaties kunnen hebben. Maar zolang ze consistent zijn met de naamgevingsconventie, is dat prima. bijv. mijn werk zou anders zijn dan het werkgebied van mijn vrouw en anders genoemd worden. maar zolang ze allebei "Werk" starten, is alles in orde.
  5. U wilt dat de modus is ingesteld op 'Belangrijk' op het scherm Kaarten. Dit betekent dat je (meestal) alleen berichten krijgt als je regio's binnenkomt of verlaat. Dit lijkt de bijgewerkte versie te zijn van de notitie die is gemarkeerd als BELANGRIJK: aan het einde van stap 8 in de originele Instructable.
  6. Zoals vermeld in de originele Instructable, is het gebruik van Google Maps een geweldige manier om de Lat/Long van ergens te achterhalen. Ik vond het efficiënter om dit in bulk te doen, alle Lat/Longs van mijn locatie te achterhalen, daarna plakte ik ze in Notes (op mijn Mac) en met de cloudsynchronisatie betekende dit dat ze op magische wijze op mijn iPhone verschenen in Notes en ik kon ze kopiëren en plakken in Owntracks. Het betekende ook dat ik het bestand naar de telefoons van mijn familie kon sturen en we hadden allemaal vaste locaties.
  7. Locaties die dicht bij elkaar liggen kunnen voor problemen zorgen. Mijn broer woont 2 straten verder, en aanvankelijk bleef mijn telefoon denken dat ik zowel in de buurt van zijn huis als thuis was. Uiteindelijk moest ik extra logica in Node Red plaatsen om dit te vangen en te negeren.

Stap 3: De Raspberry Pi instellen

De Raspberry Pi instellen
De Raspberry Pi instellen

Dus hier ga ik ervan uit dat je een basis Pi hebt ingesteld en op wifi. Ik draaide Raspbian, maar dat zou niet uit moeten maken. Gebruik de instructies op raspberrypi.org om alles in te stellen.

Merk op dat een Pi poorten heeft voor weergave op een monitor en toetsenbord/muis enz. MAAR als je het eenmaal in de klok hebt, wil je dat natuurlijk niet. Dus het antwoord, gesuggereerd door iemand op de Raspberry pi-website, was denk ik om een VNC-verbinding op te zetten. Hiermee kunt u vanaf een ander apparaat verbinding maken met de Pi en deze ook bedienen. Ik doe het vanaf mijn Mac, maar heb het ook vanaf een iPad gedaan. Ik zou aanraden om iets met een toetsenbord te gebruiken voor gebruiksgemak.

Ik heb net ontdekt dat ze het gemakkelijker lijken te hebben gemaakt sinds ik verbinding heb gemaakt … zie hier

In wezen maak je verbinding en krijg je een venster dat de standaard Pi-interface is.

Je hebt dus een venster naar je Pi vanaf je laptop of computer.

Nu moet je de servo's aansluiten.

Eerst moet je vrij eenvoudig solderen om de adafruit-hoed op de Pi te krijgen. Het is een beetje onhandig, maar ondanks dat ik 30 jaar niet heb gesoldeerd, was het prima. Zoals altijd vond ik een handige YouTube-video om me er doorheen te leiden, wat een grote hulp was.

Terwijl de hoed 16 servo's kan gebruiken, had ik er maar 4 nodig en dus nam ik alleen de moeite om de eerste set van 4 pinnen te solderen.

Dan duwen de servo's gewoon op de pinnen. Ik deed er eerst een om te controleren of ik de servo echt kon laten bewegen.

Hier raakte ik mijn eerste grote wegversperring. Ik had een heel eenvoudig python-script om de servo's te verplaatsen en er gebeurde letterlijk niets. Ik heb ongeveer een week besteed aan het uitproberen van nieuwe scripts enz., en toen begon er rook op de hoed te verschijnen. Ik schakelde alles uit en controleerde het schema. Het was een onderdeel dat beschermt tegen omgekeerde polariteit. Omdat ik een multi-tip, multi-voltage stroombron had, had ik het feit gemist dat je de DC-uitgang beide kanten op kon laten gaan door de tip om te keren. Ik had het mis (50:50 kans) en heb net mijn eerste adafruit-hoed opgebrand

:-(Dus een kleine vertraging omdat ik een nieuwe kocht, opnieuw soldeerde en de tip corrigeerde. Veel beter.

Vervolgens moest ik uitzoeken hoe ik de servo's naar het juiste punt op de klok kon verplaatsen. Dat komt in stap 5, maar wat ik deed, omdat ik de eigenlijke klok niet had gebouwd, was om de servo's lichtjes op een willekeurig stuk hout te schroeven en wat plakband met een pijl erop te plakken, zoals op de afbeelding. Dit gaf een zeer visuele feedback op wat ik aan het coderen was.

Stap 4: Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)

Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)
Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)
Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)
Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)
Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)
Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)
Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)
Node Red installeren (de berichten van de MQTT-server naar uw Python-script halen)

Node-RED is een programma dat u op de Pi installeert en dat u een visuele interface (in uw browser) geeft om berichten van uw MQTT-server te ontvangen en deze te gebruiken om de juiste informatie door te geven aan uw python-script (behandeld in de volgende stap (Stap 5). Ik heb vrijwel de instructies van ppeters0502 in stap 5 gebruikt. Er zit logica in deze stromen en extra logica in de python, en je kunt er meer of minder in hebben, afhankelijk van je voorkeur. het volgende

  1. Ontvangen knooppunten voor de MQTT-berichten - deze zijn lichtpaars en ik had er 1 per gezinslid
  2. Wijs dat toe aan de servo die u wilt verplaatsen (genummerd 0, 1, 2, 3)
  3. Bepaal of u een straal binnenkomt of verlaat op OwnTracks
  4. Zoek uit naar welke locatie die servo moet wijzen

    Er waren enkele uitzonderingen op de basisregels die ik moest inbouwen

  5. Stel de hoek correct in

Ik liet Node-RED de eerste 4 doen en hield de Python relatief eenvoudig.

U kunt hier de basisstroom zien en alle stromen kunnen hier naar het formaat worden geëxporteerd, wat betekent dat u deze basisstroom in uw Node-RED kunt importeren en vervolgens kunt aanpassen. Merk op dat ik alle verbindingen van de paarse knooppunten heb verwijderd, zodat je geen toegang hebt tot mijn MQTT-instantie. Ik heb ook alle testknooppunten verwijderd omdat ze werkelijke gegevens bevatten … je moet dit bestandstype mogelijk wijzigen in flows.json om in je Node-RED te importeren, maar Instructables liet me dat niet uploaden.

De groene knooppunten zijn foutopsporingsknooppunten die vervolgens de uitvoer weergeven in het foutopsporingsvenster aan de rechterkant van het scherm (mogelijk moet u deze uitbreiden - zoek de pijl halverwege naar rechts)

Het eerste dat u moet doen, is het "Live - alleen voor foutopsporing"-bit. Dat controleert of u de MQTT-berichten kunt ontvangen en kunt zien wat erin staat. json is slechts een meer gestructureerde versie van de berichten waarmee u de gegevens er gemakkelijker uit kunt halen. In deze stroom, wanneer ik live ben, verbind ik vervolgens de paarse knooppunten linksboven met het json-knooppunt rechts ervan.

Knooppunten testen

Als je eenmaal weet hoe de berichten er live uit gaan zien, wordt het erg saai om je huis uit te moeten lopen en de weg af en terug, alleen maar om een evenement te activeren. Als je dat eenmaal hebt gedaan, kun je het bericht naar een TEST-trigger kopiëren en erop klikken om de gebeurtenis te simuleren. U kunt de gegevens ook wijzigen om te doen alsof ze voor verschillende locaties zijn (zorg ervoor dat ze exact overeenkomen met de locatienamen in Owntracks).

Je kunt in de stroom zien dat de testgevallen allemaal naar een apart knooppunt gaan en dat gaat dan naar het json-knooppunt. Dit is puur om het scherm op te ruimen.

Ik kan niet genoeg benadrukken hoe nuttig deze knooppunten waren, en nog steeds zijn.

Python aanroepen

Dus toen raakte ik de volgende wegversperring. Deze vergde VEEL googlen op forums enz. Mijn stroom zou perfect werken, maar het zou mijn python-script niet activeren. Ik kon dit niet uitwerken, maar ik zal je het vloeken etc besparen. Gewoon om te zeggen dat, zoals benadrukt in de tweede schermafbeelding, je python3 moet specificeren, aangezien Node-RED blijkbaar python2 aanneemt, tenzij je opgeeft.

2 extra complicaties - alleen indien nodig

Ik had toen een aantal uitdagingen waarbij de logica niet helemaal werkte. De eerste was dat Owntracks een beetje raar liep en omdat mijn broer 2 straten verderop woont, werd er vaak gezegd dat ik op 2 plaatsen tegelijk was, of bleef wisselen. De enige manier waarop ik er omheen kon, was door een voorwaarde toe te voegen om valse positieven te stoppen. Als het beweerde dat ik bij hem thuis was, dan heb ik het doorgestuurd en de daadwerkelijke lengtegraad/breedtegraad in het bericht gecontroleerd en het afgebroken als het zei dat ik echt thuis was.

Het andere probleem was dat ik bij het uitlaten van mijn hond niet echt een goede straal kon krijgen. Ik loop meestal in hetzelfde gebied, dus hier zei ik: "Als ik dit gebied betreed, ben ik zeker met de hond aan het uitlaten, en dat zal ik blijven tot ik thuiskom." dit betekende dat het niet zou overschakelen naar de pub die ik op weg naar huis passeer, of verschillende andere lokale plaatsen die zouden kunnen triggeren tijdens het uitlaten van de hond. Om dit te doen, moest ik een aantal persistente contextvariabelen instellen (zoek ze op op Node-RED. Zie screenshot. Deze variabelen blijven bestaan totdat Node-RED opnieuw wordt gestart en dus kan ik zeggen dat als je met een hond loopt, de contextvariabele moet worden ingesteld naar "Hond" en negeer dan IETS anders, tenzij ik Thuis 'binnenkom'.

De laatste screenshot is die van mijn daadwerkelijke laatste stroom, met alle uitzonderingen, alleen voor uw interesse.

Stap 5: Servo's daadwerkelijk verplaatsen met Python op de Pi

Een korte omleiding in servo's. Ik wist niets van servo's, maar er is veel informatie online. Degenen die ik gebruikte zijn continue servo's die 360 graden kunnen draaien, en soepel. De andere hoofdsoort zijn stepper-servo's die in brokken (stappen) bewegen en blijkbaar maar tot ongeveer 180 graden gaan (duidelijk niet handig hier). Het voordeel van stepper-servo's is dat je ze gewoon in een hoek kunt plaatsen en ze naar dat punt gaan en stoppen. Alle documentatie die ik vond, zei dat continue servo's werken door een snelheid te krijgen en een tijd om die snelheid te behouden (bijvoorbeeld volle snelheid voor 1s) en ze eindigen waar ze eindigen, maar het is relatief ten opzichte van hun startpunt. Na veel pogingen kreeg ik dit niet werkend, maar ontdekte met behulp van de testbank dat servo's consequent terugkeerden naar hetzelfde punt onder dezelfde hoek. Dat is veel makkelijker, dus dat heb ik maar gedaan. Er is misschien een nadeel dat ik niet weet, maar het werkt voor mij. Merk echter op dat elke servo uniek is, en dus moet je een unieke set hoeken hebben voor elke servo. Ik vond het het gemakkelijkst om een 'kalibratie' python-script te hebben, waar ik de servo's beurtelings in hoeken kon zetten en ze kon verfijnen totdat ze er allemaal goed uitzagen. Dit is het eerste script dat is bijgevoegd. Je becommentarieert gewoon de servo's die je niet aan het testen bent, concentreert je op één en past vervolgens de waarden aan zoals je nodig hebt. OPMERKING: kalibreren voor de testbank is eenvoudig en ruw en klaar. U moet opnieuw kalibreren wanneer de klok is gemonteerd, omdat de versnellingen enz. Alles zullen veranderen. Dan is het tweede script vrij eenvoudig. Het doet het volgende:

  1. Een paar bibliotheken importeren
  2. verplaats de variabelen die van Node-RED komen naar variabelen in het script
  3. wijst de hoeken die zijn bepaald door het kalibratiescript toe aan de locaties op de klok.
  4. controleer of de locatie in de lijst staat, en zo niet, ga dan naar "Gevaar"
  5. uitschrijven wat er is gedaan naar een logbestand
  6. verplaats de vereiste servo naar de gewenste hoek
  7. Stop een servo van 'zoemen' *

3 dingen om op te merken.

Het logbestand is super handig voor het debuggen. Het betekent dat je de Node-RED-foutopsporing van een bericht kunt bekijken en vervolgens kunt zien wat er in het script is gebeurd. de uitvoer ziet er als volgt uit. De eerste 3 ben ik die met de hond gaat wandelen, en dan kind 1 dat het huis verlaat en op school aankomt. Opmerking om de tijd op de Pi te controleren. Het kan standaard UTC zijn en geen wijzigingen in de zomer-/wintertijd toestaan. bijv. onderstaande tijden zijn 1 uur uit.

2020-12-07_05:36:03 Wie = 0, loc = Reizen, detail = Thuis, Hoek = 10, index = 8

2020-12-07_05:36:04 Wie = 0, loc = Hond, detail = Astons, Hoek = 86.5, index = 10

2020-12-07_06:07:49 Wie = 0, loc = Thuis, detail = binnenkomst, Hoek = 75, index = 0

2020-12-07_06:23:53 Wie = 2, loc = Reizen, detail = Thuis, Hoek = 19, index = 8

2020-12-07_06:30:48 Wie = 2, loc = School, detail = N, Hoek = 60,5, index = 2

Servo-zoemend

Een van de servo's (0) bleef zoemen na het einde van het script. Zoals je je kunt voorstellen, is dit supervervelend om in onze keuken te hebben. Ik vond ergens een draad die vermeldde dat de servo-hoek op 'none' moest worden ingesteld, waardoor deze op de een of andere manier inactief werd. Dat werkte briljant en is te zien aan het einde van het script.

tijdstippen

Houd in gedachten hoe laag een wijzer nodig heeft om de klok rond te vegen. Je kunt in het script zien dat er een time.sleep(4) regel is net voordat we de servo instellen om te stoppen met zoemen. Dat komt omdat je de hand op zijn bestemming moet laten komen voordat je hem inactief maakt. Anders houdt het gewoon op. Dit is ook belangrijk bij het kalibreren, omdat je meerdere zetten binnen het script doet. Ik zou het laten draaien om om de beurt naar alle 12 locaties te gaan, zodat ik ze allemaal opnieuw kon controleren. maar je hebt wat tijd tussendoor nodig.

Stap 6: De software afronden - telefoons naar servo's

Als je eenmaal de testbank en de scripts hebt ingesteld, kun je het een tijdje 'live' draaien en in realtime zien hoe het werkt. Hier vond ik de uitzonderingen die ik moest toevoegen aan mijn Node-RED-stroom.

Je kunt gezinsleden eenvoudig loskoppelen en verbinden in de Node-RED-stroom als je je op één wilt concentreren. Als er bijvoorbeeld twee problemen veroorzaken, maar u er één tegelijk wilt oplossen. Houd er anders rekening mee dat u berichten blijft ontvangen van alle aangesloten telefoons.

Ik noemde het probleem met hondenuitlaatservice en het huis van mijn broer dat vrij dichtbij was. Ik had nog 2 andere uitdagingen.

Ten eerste locaties binnen andere locaties. Mijn vrouw volgde een cursus aan een universiteit in Londen. We wilden die registreren als 'School', maar het staat ook in 'Londen'. Dus moesten we de context opnieuw gebruiken om te zeggen dat als je die 'school' zou verlaten, je naar 'Londen' moest verhuizen en niet naar 'Reizen'.

Ten tweede, de raceomstandigheden. Zoals gezegd, het huis van mijn broer ligt 2 straten verderop, en ook vlakbij onze favoriete pub/restaurant. Dit betekent dat soms 2 signalen tegelijk worden ontvangen, of heel dicht bij elkaar. Dit kan een 'race-conditie' creëren waarbij je verschillende uitkomsten krijgt, afhankelijk van welke de logica het snelst doorkomt, wat leidt tot onvoorspelbare uitkomsten. Om dit tegen te gaan heb ik ervoor gezorgd dat alle 'invoerende' berichten een vertraging van 1 seconde hebben in de logica, wat het probleem leek op te lossen. Er zijn misschien betere, elegantere manieren om dit op te lossen, maar het leek te werken.

Stap 7: Het bouwen van de fysieke klok - Deel I - de servo's en as

De fysieke klok bouwen - Deel I - de servo's en assen
De fysieke klok bouwen - Deel I - de servo's en assen
De fysieke klok bouwen - Deel I - de servo's en assen
De fysieke klok bouwen - Deel I - de servo's en assen
De fysieke klok bouwen - Deel I - de servo's en assen
De fysieke klok bouwen - Deel I - de servo's en assen

Nu het stukje waar ik het minst zeker van was, en daarom heb ik het voor het laatst gelaten. Ik wilde een gezicht van behoorlijke omvang en een gemakkelijke constructie. Ik was ook nerveus over het fysiek krijgen van 2 servo's rond de centrale as. Dit betekende dat ik, na even op ebay te hebben gekeken voor oude klokken zoals in de instructable die ik volgde, besloot mezelf meer kansen te geven door het zelf te bouwen.

  • Ik kreeg 2 grote (~ 30 cm) vierkanten multiplex die ik had liggen (ongeveer 9 mm dik).
  • Daarna sneed ik een oude leuningrail in secties van 4x10cm en schroefde de voor- en achterplaten aan elkaar.
  • Nadat ik het middelste gat had gemarkeerd, boorde ik het om dezelfde grootte te hebben als de grootste koperen buis.
  • Daarna heb ik het geverfd met normale witte glansverf.
  • Na wat experimenteren realiseerde ik me dat ik waarschijnlijk geen 4 servo's rond dezelfde as zou kunnen krijgen als ze allemaal aan de achter- (of voor) plaat waren bevestigd. Dus ik moest 3 + 1 of 2 + 2 op elk bord hebben. Ik eindigde met 3 aan de achterkant en 1 aan de voorkant.
  • Ik heb de vereiste offsets op een stuk papier uitgewerkt en vervolgens de koperen buizen op maat gesneden. Merk op dat de dikste buis de kortste is en dat de dunste helemaal tot aan de achterplaat moet gaan. (Ik heb de kleinste eigenlijk ingebed in een gat dat ik gedeeltelijk in de achterplaat heb geboord, maar niet helemaal door zodat de as niet naar achteren bewoog).
  • Voor de buizen heb ik een buizensnijder gekocht, maar die gebruikt druk om ze te snijden en het betekent dat je de kleinere buis er niet in kunt krijgen. Dus ik gebruikte een ijzerzaag en moest toen een behoorlijke hoeveelheid vijlen doen om ze aan het werk te krijgen. De diamanten puntvijlen waren hier van onschatbare waarde.
  • Vervolgens heb ik het diagram afgestemd op de werkelijke offsets voor de klemmen en tandwielen *.
  • Toen ik eenmaal de offsets had, wist ik hoe 'hoog' ik de blokken moest maken om de servo's te monteren. Ik brak een paar blokken door ze te dun te zagen en ook het gat te boren om de draad eruit te laten.
  • Toen kwam het lastige deel van waar de blokken moesten worden geplaatst, zodat ze precies de tandwielen op de as zouden raken. Ik schroefde een blok in en kon vervolgens de servo draaien om de as te ontmoeten en vervolgens het tweede blok aan het andere uiteinde van de servo vastschroeven. Ik ontdekte ook dat ik een beetje uit sommige blokken moest snijden om te voorkomen dat andere tandwielen zouden blijven haken. Het duurde een hele tijd.
  • Toen ik dat allemaal had gedaan, pakte ik mijn Raspberry Pi-behuizing, boorde er twee gaten in en schroefde hem op de voorplaat. Dan kon ik de Pi toevoegen, de voor- en achterplaten sluiten (nadat ik de servo's op de pi had aangesloten (onthouden welke servo voor welk familielid was) en naar de handen draaien …

* Hier vond ik het grootste probleem, dat ik nog niet helemaal heb opgelost. De koperen buizen waren 1/4", 7/32", 3/16", 5/32". Maar de klemmen waren metrisch (behalve één die 1/4") was. Bij het omzetten van de buizen naar metrisch waren ze 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. De overige klemmen hadden een boring van 4 mm, 5 mm en 6 mm. De kleinste 2 en de de grootste zijn prima. maar de 0,44 mm is duidelijk te veel veerweg voor de klem, dus ik moest hem opvullen met papier. Ik heb dit een aantal keer geprobeerd en het werkt een tijdje goed en komt dan weer los. Dus de 2e grootste hand werkt niet goed. Het ging echter goed voor ongeveer 6 maanden, dus de tijd die ik hieraan besteedde, was goed geïnvesteerde tijd. Maar als ik het opnieuw zou doen, zou ik misschien 1 maat groter of kleiner zijn gegaan, met een opening om te proberen een betere klem om op de buis te passen, bijv. ga voor 9/32", 1/4", (gap), 3/16", 5/32"

Stap 8: De wijzers

De wijzers
De wijzers
De wijzers
De wijzers
De wijzers
De wijzers

Ik koos voor plaatstaal omdat ik iets stijfs wilde, maar minder snel zou breken terwijl ik het aan het maken was. Ook dun zijn betekende dat 4 handen minder een probleem was.

  • Eerst schetste ik een vorm.
  • Daarna bracht ik het over op het staal bovenop wat plakband.
  • Daarna heb ik ze heel ondeskundig uitgesneden met mijn decoupeerzaag. Ze waren en zijn allemaal anders, maar dat vind ik niet erg.
  • Toen stelde een vriend voor dat ik zijn bankmolen zou lenen om ze te vormen, en dit was geweldig. sterk aanbevolen. Anders duurt het indienen eeuwen.
  • Er moest nog wat gevijld worden en daarna schuren om geen scherpe randen te krijgen en ook nog een mooie afwerking.
  • Ik moest gaten boren die bij de respectieve koperen buizen passen (gebruik afgesneden buizen om te controleren, niet de gemonteerde buizen op de klok).
  • Ik ontdekte dat de gaten een beetje gevijld moesten worden om ze op de buizen te krijgen, maar eenmaal erop waren ze strak en hadden ze geen lijm nodig. De uitzondering was de fronthand die ik een 'cover' wilde hebben. Dus ik heb een (meestal) rond stuk staal uitgesneden, nadat ik het gat had geboord en op de juiste maat had gekregen, en het aan de voorkant superlijmde. je kunt het zien op de laatste foto. Af en toe heeft de voorste hand een beetje lijm nodig om hem vast te zetten, maar na een paar valse starts werken de handen heel goed.
  • Ik had het idee van foto's afgewezen (omdat kinderen snel zouden klagen over onze ouderwetse foto's), dus besloot ik om met acrylverf op initialen te schilderen.

Stap 9: Voltooi

Compleet!
Compleet!
Compleet!
Compleet!

Het werkt allemaal heel mooi. De handen zijn soms een beetje afwijkend, afhankelijk van waar ze vandaan komen, maar eigenlijk maakt het niet uit, want elke locatie is een sectie en niet alleen een lijn.

Soms, vreemd genoeg, weigert mijn telefoon te erkennen dat ik thuis ben. Ik ben duidelijk binnen de straal van Owntracks als ik het op de kaart zie, en zelfs als de nauwkeurigheid goed is… ik heb geen idee waarom. lijkt de rest van mijn familie niet te kwellen. maar de opstelling is hetzelfde. Hierdoor verstuurt Owntracks nooit een bericht en loop ik vast in 'Reizen'. Maar meestal lost het zichzelf uiteindelijk op.

Het was super handig om in onze keuken te hebben, vooral om te weten wanneer de meisjes van school naar huis gaan, of het huis van hun vrienden, en dus wanneer ze eten/thee voor ze klaar moeten hebben.

Nogmaals, een grote tip van dank aan @ppeters0502 voor de geweldige instructies die moeten worden gevolgd. Hopelijk kunnen deze iets toevoegen rond het maken van een klok met 4 wijzers..

Stap 10: Dingen die ik heb geleerd en die ik beter/anders zou doen als ik het opnieuw moest doen

  • Fysieke builds vereisen vallen en opstaan. Er is geen manier om de problemen van de ruimte te voorspellen, je hoeft er alleen maar in te duiken en het te proberen.
  • Voor code is het googlen van problemen essentieel
  • Begin basis en bouw op. De servo's op het hout van de testbank betekenden dat ik het meeste kon laten werken zonder de fysieke build
  • Ik heb misschien de handen laten lasersnijden op een CNC-machine. Maar ik wist niet waar de lokale was, en ik vind het leuk hoe het zachte staal werkte (het was goedkoop en de bankslijper maakte het veel gemakkelijker)
  • een stappenmotor zou mogelijk kunnen zijn als je de tandwieloverbrenging gebruikt om een 360 draai te krijgen. maar misschien moet je dan de servo's te dicht bij de centrale as hebben
  • Er zijn 2 soorten servo (Futaba & HiTech). Zorg ervoor dat je dit hebt gecontroleerd, want ze hebben verschillende aantallen tanden op de spie. En ik kocht aanvankelijk de verkeerde…
  • Sluit de hoed niet aan met de verkeerde polariteit;-)
  • Google en Stack Overflow zijn je vrienden als je vastzit. Maar je moet goede zoektermen gebruiken…
  • De testbank is eigenlijk een manier waarop je veel gemakkelijker aan een eenvoudigere, goedkopere versie kunt komen. Het grootste deel van de complicatie met de constructie komt van het feit dat de handen rond dezelfde as moeten draaien. Als je daar een compromis over sluit, is het allemaal veel gemakkelijker. En ik denk dat 4 misschien de limiet is van de enkele as, tenzij de as veel langer wordt. Je zou, denk ik, 3 op de voorplaat en drie op de achterplaat kunnen hebben als de schacht langer was …

Stap 11: Mogelijke toekomstige uitbreidingen…?

De ideeën die ik had over de volgende stappen zijn als volgt.

  1. Ik wil een oude iPad opnieuw gebruiken als wijzerplaat. d.w.z. een digitale klok maken. Eventueel browsergebaseerd of een app. Omdat een fysieke klok in wezen staatloos is (d.w.z. hij weet niet waar hij zich momenteel bevindt, behalve omdat de wijzers zich in een fysieke positie bevinden), zou ik een permanente opslag van gegevens moeten hebben. Node Red kan naar het lokale bestandssysteem schrijven, dus dat zou ik waarschijnlijk doen.
  2. Als ik dat deed, zou ik het graag van buitenaf kunnen zien. Maar dan moeten we echt de beveiliging regelen. Omdat toegang binnen hetzelfde wifi-netwerk één ding is, is toegang vanaf internet een ander. Ik heb momenteel geen idee hoe ik dit het beste kan doen, maar ik vermoed dat een MQTT-abonnement de andere kant op zou kunnen werken (pi publiceert de huidige status en externe apparaten abonneren zich erop) …?
  3. Ik zou heel graag één hand willen hebben voor 'Abroad'. maar dat kan vanuit OwnTracks-oogpunt complex zijn. Misschien kun je gewoon long/lat gebruiken in combinatie met een paar enorme radii?

Aanbevolen: