Cuprins:

Ceas de localizare „Weasley” cu 4 mâini: 11 pași (cu imagini)
Ceas de localizare „Weasley” cu 4 mâini: 11 pași (cu imagini)

Video: Ceas de localizare „Weasley” cu 4 mâini: 11 pași (cu imagini)

Video: Ceas de localizare „Weasley” cu 4 mâini: 11 pași (cu imagini)
Video: Ceas cu GPS si apeluri video pentru copilul tau! 2024, Iulie
Anonim
Ceas de localizare „Weasley” cu 4 mâini
Ceas de localizare „Weasley” cu 4 mâini

Așa că, cu un Raspberry Pi care se lovea de ceva vreme, am vrut să găsesc un proiect frumos care să-mi permită să-l folosesc cel mai bine. Am dat peste acest minunat Instructable Build Your Own Weasley Location Clock de la ppeters0502 și m-am gândit că ar fi bine să încerc.

Ceasul constă în esență dintr-un Raspberry Pi care controlează servo-urile pentru a întoarce mâinile ceasului. Ca și în casa familiei Weasley din cărțile / filmele Harry Potter, fiecare membru al familiei are propria sa mână. Fiecare mână indică locația curentă a acelui membru al familiei. Ceasul realizează acest lucru primind mesaje de pe telefoanele mobile ale familiei ori de câte ori acestea intră sau ies dintr-o rază predefinită.

Principalele diferențe față de Instructable-ul anterior au fost că trebuia să am 4 mâini, nu 2 (altfel fiicele mele s-ar fi plâns) și am decis să construiesc și rama, să nu primesc un ceas vechi pentru a-l reutiliza. Acest lucru se datorează faptului că mă îngrijora faptul că spațiul ar fi o problemă într-o carcasă de ceas existentă, cu necesitatea de a se încadra în 4 servouri etc.

A durat mult mai mult decât am anticipat, deși în cea mai mare parte am întâlnit probleme dificile care m-au împiedicat și care nu păreau să fie acoperite de postarea originală. Nimic împotriva Instructable-ului original, care a fost în general grozav, dar trecuseră câțiva ani și versiunile lucrurilor s-au schimbat … etc. De asemenea, a fi în Marea Britanie însemna că unele dintre elementele imperiale / metrice au provocat mai multe provocări decât mă așteptam.

De asemenea, în timp ce sunt bine la codificare, realizarea fizică a ceasului m-a întins cu siguranță și a necesitat câteva instrumente suplimentare, care, de asemenea, m-au încetinit oarecum.

La final, voi include o secțiune despre „Lucruri pe care le-aș face diferit / mai bine dacă aș face din nou …”

Provizii:

Unul dintre lucrurile care m-au izbit a fost că componentele scumpe aveau de-a face cu acele ceasului. 4 mâini sunt cu siguranță mult mai scumpe decât 2. Am decis să introduc câteva costuri, astfel încât să aveți o idee. Este pentru prima dată când am adăugat totul și, ignorând instrumentele, cred că am cheltuit aproximativ 200 de lire sterline. Plus câteva lucruri pe care nu le-am folosit (și nu le-am inclus mai jos) plus Pi, plus sursa de alimentare pe care le aveam deja.

Pi etc

  1. Raspberry Pi - nu-mi amintesc cât a costat inițial, dar a fost un model 2B. Cred că dacă nu aveți deja unul, atunci chiar și un Pi Zero ar avea probabil. Am adăugat un dongle wifi și un card SD cu Raspbian. Și am avut un încărcător vechi de telefon Android întins.
  2. Adafruit Servohat pentru Pi - 16 GBP
  3. Sursă de alimentare pentru Servohat - Acest lucru m-am străduit cu adevărat să-l găsesc, deoarece toate site-urile web au indicat doar site-ul adafruit, care apoi recomandă în mod evident o sursă de alimentare din SUA. Apoi mi-am dat seama că aveam o sursă de tensiune variabilă veche, cu vârfuri interschimbabile, așa că am folosit-o. Dar cel din SUA este de 8 dolari, deci acesta este stadionul.
  4. Carcasă pentru Pi, astfel încât să o pot atașa la rama ceasului. 5 GBP

Servo și unelte

Aici citez prețul pentru toți cei 4, deci împărțiți dacă doriți mai puține mâini (Adăugându-l este de ~ 40 GBP PER MÂNĂ = 160 GBP: -o

  1. 4 x Servoase - le-am folosit pe cele recomandate de ppeters0502 - găsite pe eBay pentru ~ 15 GBP fiecare = 60 GBP - Am căutat textul următor „GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree „dar uneori nu erau disponibile
  2. 4 x tuburi de alamă care se potriveau exact unul în celălalt - ~ 3 GBP fiecare. Am câte 1 de 1/4 ", 7/32", 3/16 ", 5/32" = 11 GBP
  3. 4 x cleme care se fixează pe tuburile de alamă pentru a vă permite să atașați unelte. ~ 7 GBP fiecare = 28 GBP. Le-am primit de la ActiveRobots care fac comenzi regulate de la Servocity în SUA, permițându-vă să evitați transportul internațional. De asemenea, pot obține orice altceva puteți găsi pe site-ul principal Servocity din SUA. Acest lucru a fost foarte la îndemână pentru următoarele 2 articole
  4. 4 x roți dințate tip acetil 0.770 "pentru montare pe butucii de prindere. ~ 6 GBP fiecare = 24 GBP
  5. 4 x roți dințate acetil montate pe acetil spline pentru montare pe servomotoare. ~ 6,50 GBP fiecare = 26 GBP
  6. 1 x pachet de piulițe hexagonale la roți dințate atașate la piulițe de prindere = 2,60 GBP
  7. 1 x cheie hexagonală de 7/64 "(cheie Allen), deoarece tot ce vine din SUA este imperial, deci sutele de chei Allen pe care le am deja sunt inutile = 1 GBP

Pentru construcția fizică

Aici am folosit mai ales bucăți de lucruri despre care am mințit

  1. 2 x pătrate de placaj pentru placa „față” și „spate”
  2. Am tăiat apoi cilindrii de 4x10cm de pe o șină de balustradă veche pe care o aveam, pentru a conecta spatele la față
  3. Câteva blocuri pentru a monta servo-urile la decalajul corect - doar tăieturi de rasinoase pe care le-am tăiat la dimensiune.
  4. Șuruburi asortate. de la foarte mic (pentru a atașa carcasa Pi la cadru) la mediu (pentru a atașa cadrul împreună)
  5. Foaie de oțel de 0,75 mm, aproximativ 50cm x 20cm (pentru a tăia mâinile). Acesta a fost singurul lucru pe care l-am cumpărat ~ 9 GBP de la Wickes

Instrumente

Unele lucruri pe care le-am avut și unele le-am împrumutat sau le-am cumpărat

  1. Fier de lipit + lipit electric - pentru atașarea conectorilor la Adafruit Hat & Pi.
  2. Jigsaw - pentru tăierea formei aspre a mâinilor
  3. Burghiu. doar un burghiu normal de 18V fără fir
  4. Burghie - Rețineți că veți avea nevoie de burghie imperiale pentru a face găuri care se potrivesc cu tuburile de alamă. Am reușit să împrumut câteva.
  5. ferăstrău - pentru tăierea tuburilor de alamă. Nu faceți ceea ce am făcut și cheltuiți 3 GBP pe tăietorul de tuburi, funcționează prin presiune și înseamnă că interiorul tuburilor devine puțin mai mic. deci tubul cu dimensiunea următoare nu se potrivește
  6. Mașină de tocat bancă - Nu am avut una dintre acestea, dar un prieten a făcut-o și a făcut mai ușor modelarea mâinilor. Până atunci foloseam doar fișiere. Nu aș cumpăra unul doar pentru acest proiect, dar pentru mâinile metalice a fost minunat.
  7. Am cumpărat câteva dosare asortate cu puncte de diamant (foarte mici). util pentru mâini și tuburi în jur de 15 GBP
  8. șmirghel aspru și neted
  9. unele cleme mici țin lucrurile la loc atunci când găuriți.
  10. un viciu din același motiv.

Pasul 1: Configurarea telefoanelor dvs. pentru a-și trimite locația către Pi (Partea I Broker MQTT)

Acest bit este descris foarte bine de ppeters0502 în excelentul său Weasley Clock Instructable. În mod ciudat, deși poate reflectă diferite seturi de abilități, el a început cu versiunea și apoi s-a mutat în software, am făcut-o invers. Așadar, am început cu telefonul … așteaptă, nu, nu, am început cu brokerul MQTT, care este Pasul 6 din Instructable. Voi omite toate bucățile pe care le face foarte bine și voi arunca câteva bucăți pe care aș putea să le adaug. Am urmat ruta CloudMQTT pe care a menționat-o.

DAR În timp ce scriam asta, am verificat linkul către planuri și am constatat că nu mai există un plan gratuit! L-au retras, pentru ceea ce pare motive întemeiate. adică oamenii ar crea o instanță gratuită și apoi nu o vor folosi niciodată. Nu am observat deoarece instanțele actuale pot continua. Deci nu mă voi schimba. Dar face instrucțiunile puțin redundante. Se pare că există 3 opțiuni.

  1. Plătiți 5 USD pe lună pentru Cloud MQTT (dar sună costisitor pentru ceas în mod continuu).
  2. Mergeți pe ruta Mosquitto on Pi așa cum este descris în primul instructabil. Nu pot să comentez acest lucru, dar ar putea fi o opțiune bună.
  3. Doar google „broker gratuit în cloud MQTT” și se pare că mai sunt și alții.

Deci, în ipoteza că aveți un broker MQTT care funcționează, dacă este ceva asemănător celui CloudMQTT, atunci va fi afișat un server, utilizator, parolă și port. Veți avea nevoie de toate acestea pentru a vă configura telefoanele pentru a trimite brokerului locațiile / mișcările dvs.

Pasul 2: Configurați-vă telefoanele pentru a-și trimite locația către Pi (piese proprii partea II)

Acest lucru este, de asemenea, acoperit foarte bine în versiunea originală Instructable, din pașii 7 (Android), 8 (iOS) și 9 (configurarea regiunilor).

Am avut doar dispozitive iOS, așa că nu am încercat pasul 7.

Ce aș adăuga la aceste instrucțiuni?

  1. În set-up există și câmpurile TrackerID și DeviceID. Acestea ar trebui să le aveți ca fiind capabile să vă identifice în familie. De exemplu. Le-am avut ca R și respectiv RPhone. Acest lucru înseamnă că puteți trece la ceas ce servotă și, prin urmare, ce mână să întoarceți.
  2. Regiunile sunt numele locațiilor pe care doriți să le urmăriți.
  3. Fiecare regiune este definită de un nume, o latitudine, o longitudine și o rază.
  4. Deoarece am vrut să am o serie de locații ca o singură secțiune pe Ceasul meu, am folosit o convenție de numire, care sa dovedit a fi foarte utilă. Sunt posibile și alte metode, dar acest lucru a funcționat pentru mine.

    • De exemplu, pentru secțiunea FAMILIE a ceasului am vrut să am părinții și frații mei și părinții și frații soției mele. Prin urmare, am avut locații precum "Family Tom", "Family Dick", Family Harry "și" Family ParentsR ". Aceasta însemna că etapa următoare ar putea ști ce să treacă la Ceas.
    • Rețineți că oamenii pot avea locații diferite. Dar atâta timp cât sunt în concordanță cu convenția de numire, atunci este în regulă. De exemplu. munca mea ar fi diferită de regiunea de lucru a soției mele și ar fi chemat diferit. dar atâta timp cât amândoi încep „Munca”, atunci totul este în regulă.
  5. Doriți ca modul să fie setat la „Semnificativ” pe ecranul Hărți. Aceasta înseamnă că (majoritatea) primiți mesaje numai atunci când intrați sau ieșiți din regiuni. Aceasta pare a fi versiunea actualizată a notei marcate cu IMPORTANT: la sfârșitul pasului 8 din instructabilul original.
  6. După cum sa menționat în versiunea originală Instructable, utilizarea Google Maps este o modalitate excelentă de a afla Lat / Long de undeva. Mi s-a părut mai eficient să fac acest lucru în bloc, aflând toate laturile / lungimile locației mele, apoi le-am lipit în Note (pe Mac-ul meu) și, cu sincronizarea cloud, a însemnat că au apărut magic pe iPhone-ul meu în Note și le-aș putea copia / lipi în Owntracks. De asemenea, a însemnat că aș putea trimite fișierul pe telefoanele familiei mele și am avut cu toții locații consistente.
  7. Locațiile apropiate pot cauza probleme. Fratele meu locuiește la 2 străzi distanță și, inițial, telefonul meu a continuat să creadă că mă aflu simultan în regiunea casei sale, precum și acasă. În cele din urmă a trebuit să pun logică suplimentară în Node Red pentru a prinde și a ignora acest lucru.

Pasul 3: Configurarea Raspberry Pi

Configurarea Raspberry Pi
Configurarea Raspberry Pi

Deci, aici presupun că aveți un Pi bazat pe Wi-Fi. Conduceam Raspbian, dar nu ar trebui să conteze. Utilizați instrucțiunile de la raspberrypi.org pentru a configura totul.

Rețineți că un Pi are porturi pentru afișare pe un monitor și tastatură / mouse etc. DAR, evident, odată ce îl aveți în ceas, nu doriți nimic din toate acestea. Deci, răspunsul, sugerat de cineva de pe site-ul Raspberry pi, cred, a fost de a configura o conexiune VNC. Acest lucru vă permite să vă conectați de la un alt dispozitiv la Pi și să îl controlați și. O fac de pe Mac, dar am făcut-o și de pe un iPad. Aș sugera să folosiți ceva cu o tastatură pentru ușurință în utilizare.

Tocmai am constatat că par să fi făcut-o mai ușoară de când m-am conectat … vezi aici

În esență, vă conectați și obțineți o fereastră care este interfața standard Pi.

Deci, aveți o fereastră către Pi de pe laptop sau computer.

Acum trebuie să conectați Servo-urile.

Mai întâi trebuie să faceți o lipire destul de simplă pentru a obține pălăria adafruit pe Pi. Este puțin ciudat, dar, în ciuda faptului că nu a lipit timp de 30 de ani, a fost bine. Ca întotdeauna, am găsit un videoclip YouTube util care să mă plimbe prin el, ceea ce a fost de mare ajutor.

În timp ce pălăria poate rula 16 servouri, am avut nevoie doar de 4 și așa că m-am deranjat doar să lipesc primul set de 4 pini.

Apoi, servo-urile doar împing pe pini. Am făcut unul mai întâi pentru a verifica dacă aș putea efectua servo-ul să se miște.

Aici am ajuns la primul meu obstacol important. Am avut un script Python foarte de bază pentru a muta servo-urile și literalmente nu s-a întâmplat nimic. Am petrecut aproximativ o săptămână încercând noi scripturi etc., apoi a început să apară fum pe pălărie. Oprind totul, am verificat schema. A fost o componentă care protejează împotriva polarității inverse. Deoarece aveam o sursă de alimentare cu mai multe vârfuri, cu mai multe tensiuni, îmi lipsise faptul că ieșirea de curent continuu mergea în ambele sensuri inversând vârful. M-am înșelat (50:50 șanse) și tocmai mi-am ars prima pălărie de adafruit

:-(Deci, o ușoară întârziere în timp ce am cumpărat una nouă, am re-lipit și am corectat vârful. Mult mai bine.

Apoi a trebuit să aflu cum să mut servourile în punctul corect de pe ceas. Asta va veni la Pasul 5, dar ceea ce am făcut, neavând construit ceasul propriu-zis, a fost să înșurub ușor servomotoarele pe un pic aleatoriu de lemn și să lipesc niște bandă de mascare cu o săgeată pe ele, ca în imagine. Acest lucru a dat un feedback foarte vizual la ceea ce codificam.

Pasul 4: Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)

Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)
Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)
Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)
Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)
Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)
Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)
Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)
Instalarea Node Red (Obținerea mesajelor de pe serverul MQTT în scriptul dvs. Python)

Node-RED este un program pe care îl instalați pe Pi, care vă oferă o interfață vizuală (pe browserul dvs.) pentru a primi mesaje de pe serverul MQTT și a le utiliza pentru a transmite informațiile corecte scriptului dvs. Python (acoperit în pasul următor (Pasul 5). Am folosit destul de mult instrucțiunile de la ppeters0502 la Pasul 5. Există logică în aceste fluxuri și logică suplimentară în Python și puteți avea mai mult sau mai puțin în fiecare, în funcție de preferințe. Practic, trebuie să faceți următoarele

  1. Au noduri de primire pentru mesajele MQTT - acestea sunt de culoare violet deschis și am avut 1 pe membru de familie
  2. Asociați-l cu servo-ul pe care doriți să îl mutați (numerotat 0, 1, 2, 3)
  3. Determinați dacă introduceți sau părăsiți o rază pe OwnTracks
  4. Aflați în ce locație trebuie să fie indicat servo

    Au existat câteva excepții de la regulile de bază pe care trebuia să le construiesc

  5. Setați unghiul corect

Am avut Node-RED făcând primele 4 și am păstrat Python relativ simplu.

Puteți vedea fluxul de bază aici și toate fluxurile pot fi exportate în formatul de aici, ceea ce înseamnă că puteți importa acest flux de bază în Node-RED și apoi să vă adaptați. Rețineți că am eliminat toate conexiunile de la nodurile violet, astfel încât să nu puteți accesa instanța mea MQTT. De asemenea, am eliminat toate nodurile de testare, deoarece acestea conțin date reale … poate fi necesar să schimbați acest tip de fișier pentru a fi fluxuri.json pentru a importa în Node-RED, dar Instructables nu mi-a permis să încărc asta.

Nodurile verzi sunt noduri de depanare care apoi afișează ieșirea în fereastra de depanare din dreapta ecranului (poate fi nevoie să se extindă - găsiți săgeata la jumătatea din dreapta)

Primul bit de făcut este bitul „Live - doar pentru depanare”. Aceasta verifică dacă puteți primi mesajele MQTT și puteți vedea ce conține. json este doar o versiune mai structurată a mesajelor care vă permite să obțineți datele mai ușor. În acest flux, când sunt live, conectez apoi nodurile violete din stânga sus la nodul json din dreapta acestora.

Testarea nodurilor

Odată ce știi cum vor arăta mesajele în direct, devine foarte plictisitor să trebuiască să ieși din casă și să cobori pe drum și înapoi, doar pentru a declanșa un eveniment. După ce ați făcut acest lucru, puteți copia mesajul într-un declanșator TEST și apoi faceți clic pe acesta pentru a simula evenimentul. De asemenea, puteți schimba datele, pentru a vă preface că sunt pentru locații diferite (asigurați-vă că acestea corespund exact cu numele locației din Owntracks).

Puteți vedea în flux că cazurile de testare intră într-un nod separat și apoi intră în nodul json. Aceasta este doar pentru a ordona ecranul.

Nu pot sublinia suficient cât de utile au fost și sunt încă aceste noduri.

Apelarea la Python

Așa că am lovit următorul obstacol. Acesta a luat o mulțime de googuri pe forumuri etc. Fluxul meu ar funcționa perfect, dar nu mi-ar declanșa scriptul python. Nu am putut rezolva acest lucru, dar vă voi scuti de înjurături etc. Doar pentru a spune că, așa cum este evidențiat în a doua captură de ecran, trebuie să specificați python3, deoarece aparent Node-RED presupune python2, dacă nu specificați.

2 complicații suplimentare - numai dacă este necesar

Apoi am avut o serie de provocări în care logica nu prea funcționa. În primul rând, Owntracks a devenit un pic ciudat și, deoarece fratele meu locuiește la 2 străzi distanță, a spus adesea că mă aflam în 2 locuri simultan sau că tot trec între ele. Singurul mod în care am putut să-l ocolesc a fost să adaug într-o stare pentru a opri falsurile pozitive. Dacă pretindeam că sunt la el acasă, atunci am direcționat și verificat longitudinea / latitudinea reală din mesaj și l-am întrerupt dacă a spus că sunt de fapt acasă.

Cealaltă problemă a fost că, când mă plimbam cu câinele, nu puteam obține o rază bună. De obicei merg în aceeași zonă, așa că aici, am spus „dacă intru în această zonă, cu siguranță mă plimb câinele și voi fi până când ajung acasă”. asta însemna că nu va trece la cârciuma pe care o trec pe drumul spre casă sau în alte locuri locale care ar putea declanșa în timpul mersului cu câini. Pentru a face acest lucru, a trebuit să configurez câteva variabile de context persistente (căutați-le în Node-RED. Vedeți captura de ecran. Aceste variabile persistă până când Node-RED este repornit și așa că pot spune Dacă pe o plimbare de câine, setați variabila de context la „Câine”. Apoi ignora ORICE altceva decât dacă „Intru” acasă.

Ultima captură de ecran este cea a fluxului meu final real, cu toate excepțiile, doar pentru interesul dumneavoastră.

Pasul 5: Mutați de fapt Servo-urile cu Python pe Pi

O scurtă deviere în servos. Nu știam nimic despre servo, dar există o mulțime de informații online. Cele pe care le-am folosit sunt servouri continue care se pot transforma la 360 de grade și fără probleme. Cealaltă sortare principală este servomotorul pas cu pas care se mișcă în bucăți (pași) și se pare că urcă doar la aproximativ 180 de grade (în mod clar nu este util aici). Avantajul servomotorelor pas cu pas este că puteți pune un unghi și se deplasează în acel punct și se opresc. Toată documentația pe care am găsit-o spunea că servo-urile continue funcționează primind o viteză și un timp pentru a menține acea viteză (de exemplu, viteza maximă timp de 1s) și ajung acolo unde ajung, dar este relativ la punctul lor de pornire. După o mulțime de încercări, nu am reușit să funcționeze, dar am aflat, folosind banca de testare, că servo-urile s-au întors în mod constant în același punct având același unghi. Ceea ce este mult mai ușor, așa că tocmai am făcut asta. S-ar putea să existe unele dezavantaje despre care nu știu, dar funcționează pentru mine. Rețineți, totuși, că fiecare servo este unic și, prin urmare, trebuie să aveți un set unic de unghiuri pentru fiecare servo. Mi s-a părut cel mai ușor să am un script python de „calibrare”, unde să pot seta servourile la unghiuri la rândul lor, rafinându-le până când toate arătau bine. Acesta este primul script atașat. Doar comentați serviciile pe care nu le testați, vă concentrați pe unul și apoi ajustați valorile după cum aveți nevoie. NOTĂ: calibrarea pentru bancul de testare este simplă, dură și gata. Va trebui să recalibrați când ceasul este asamblat, deoarece uneltele etc. vor schimba totul. Apoi, al doilea script este destul de simplu. Face următoarele

  1. Importați câteva biblioteci
  2. mutați variabilele provenind de la Node-RED la variabilele din script
  3. mapează unghiurile determinate de scriptul de calibrare la locațiile de pe ceas.
  4. verificați dacă locația se găsește în listă și, dacă nu, treceți la „Pericol”
  5. scrieți ce s-a făcut într-un fișier jurnal
  6. deplasați servo-ul necesar în unghiul dorit
  7. Opriți un servo de la „bâzâit” *

3 lucruri de reținut.

Fișierul jurnal este foarte util pentru depanare. Înseamnă că puteți privi depanarea Node-RED a unui mesaj și apoi puteți vedea ce s-a întâmplat în script. rezultatul arată astfel. Primii 3 sunt eu care duc câinele la plimbare, iar apoi copilul 1 părăsind casa și ajung la școală. Notă pentru a verifica ora pe Pi. Este posibil să fie implicit UTC și să nu permită schimbarea orei de vară / iarnă. De exemplu. timpul de mai jos este de 1 oră.

2020-12-07_05: 36: 03 Cine = 0, loc = Călătorie, detaliu = Acasă, Unghi = 10, index = 8

2020-12-07_05: 36: 04 Cine = 0, loc = câine, detaliu = Astoni, unghi = 86,5, index = 10

2020-12-07_06: 07: 49 Cine = 0, loc = Acasă, detaliu = intrare, Unghi = 75, index = 0

2020-12-07_06: 23: 53 Cine = 2, loc = Călătorie, detaliu = Acasă, Unghi = 19, index = 8

2020-12-07_06: 30: 48 Cine = 2, loc = Școală, detaliu = N, Unghi = 60,5, index = 2

Servo-buzzing

Unul dintre Servo-uri (0) a continuat să bâzâie după încheierea scriptului. După cum vă puteți imagina, acest lucru este foarte enervant să-l aveți în bucătăria noastră. Am găsit undeva un subiect care menționa setarea unghiului servo la „niciunul”, care îl stabilește cumva să fie inactiv. Acest lucru a funcționat strălucit și poate fi văzut în scenariu la sfârșit.

Timpuri

Rețineți cât de scăzută are o mână pentru a mătura ceasul. Puteți vedea în script că există o linie time.sleep (4) chiar înainte de a seta servo să oprească buzzing. Acest lucru se datorează faptului că trebuie să permiteți mâinii să ajungă la destinație înainte de a o seta la ralanti. Altfel doar se oprește. Acest lucru este important și atunci când îl calibrați, deoarece faceți mai multe mișcări în cadrul scriptului. L-aș seta să ruleze pentru a muta pe rând în toate cele 12 locații, astfel încât să le pot verifica din nou pe toate. dar ai nevoie de puțin timp între ele.

Pasul 6: Finalizarea software-ului - Telefoane pe servere

După ce ați configurat bancul de testare și scripturile, atunci îl puteți rula „live” un pic și puteți vedea cum funcționează în timp real. Aici am găsit excepțiile pe care trebuia să le adaug în fluxul meu Node-RED.

Puteți deconecta și conecta cu ușurință membrii familiei în fluxul Node-RED dacă doriți să vă concentrați asupra unuia. De exemplu, dacă două cauzează probleme, dar doriți să remediați una câte una. În caz contrar, rețineți că veți primi în continuare mesaje de pe orice telefoane conectate.

Am menționat problema legată de mersul cu câinii și casa fratelui meu fiind destul de apropiată. Am avut alte 2 provocări.

În primul rând, locații în alte locații. Soția mea făcea un curs la un colegiu din Londra. Am vrut ca acest lucru să se înregistreze ca „Școală”, dar este și în „Londra”. Așadar, a trebuit să refolosim contextul pentru a spune că, dacă părăsiți acea „școală”, atunci treceți la „Londra”, nu la „călătorie”.

În al doilea rând, condițiile cursei. După cum am menționat, casa fratelui meu este la 2 străzi distanță și, de asemenea, în apropierea pubului / restaurantului nostru preferat. Aceasta înseamnă că uneori se recepționează 2 semnale în același timp sau foarte apropiate. Acest lucru poate crea o „condiție de cursă” în care obțineți rezultate diferite, în funcție de care devine logica cea mai rapidă, ducând la rezultate imprevizibile. Pentru a contracara acest lucru, am făcut ca toate mesajele de „introducere” să aibă o întârziere de 1s în logică, ceea ce părea să rezolve problema. S-ar putea să existe modalități mai bune, mai elegante, de a rezolva acest lucru, dar părea să funcționeze.

Pasul 7: Construirea ceasului fizic - Partea I - Servo-uri și axă

Construirea ceasului fizic - Partea I - Servo-uri și axă
Construirea ceasului fizic - Partea I - Servo-uri și axă
Construirea ceasului fizic - Partea I - Servo-uri și axă
Construirea ceasului fizic - Partea I - Servo-uri și axă
Construirea ceasului fizic - Partea I - Servo-uri și axă
Construirea ceasului fizic - Partea I - Servo-uri și axă

Acum, puținul despre care eram cel mai puțin încrezător, motiv pentru care l-am lăsat să dureze. Am vrut o față de dimensiuni decente și o construcție ușoară. De asemenea, am fost nervos că am obținut fizic 2 servo-uri în jurul axei centrale. Acest lucru însemna că, după ce m-am uitat scurt la eBay pentru ceasuri vechi ca în instructivul pe care îl urmam, am decis să-mi acord mai multe șanse construindu-l eu însumi.

  • Am primit 2 pătrate mari (~ 30cm) de placaj pe care le aveam în jur (grosime de aproximativ 9mm).
  • Apoi am tăiat o șină veche de balustradă în secțiuni de 4x10cm și am înșurubat fața și plăcile posterioare.
  • După ce am marcat orificiul central, l-am forat pentru a avea aceeași dimensiune ca cel mai mare tub de alamă.
  • Apoi l-am pictat cu vopsea albă normală lucioasă.
  • După câteva experimente, mi-am dat seama că probabil nu aș putea obține 4 servo-uri în jurul aceleiași axe dacă ar fi toate atașate la placa din spate (sau din față). Deci, trebuia să am fie 3 + 1, fie 2 + 2, pe fiecare farfurie. Am ajuns cu 3 pe spate și 1 în față.
  • Am elaborat compensările necesare pe o bucată de hârtie și apoi am tăiat tuburile de alamă pentru a se potrivi. Rețineți că cel mai gros tub este cel mai scurt, iar cel mai subțire trebuie să meargă până la placa din spate. (De fapt, am introdus-o pe cea mai mică într-o gaură pe care am forat-o parțial în placa din spate, dar nu până la capăt, astfel încât axa să nu se miște înapoi).
  • Pentru tuburi, am cumpărat un tăietor de tuburi, dar care folosește presiune pentru a le tăia și înseamnă că nu puteți intra în interiorul tubului mai mic. Așa că am folosit un ferăstrău și apoi a trebuit să depun o cantitate corectă de depuneri pentru a-i face să funcționeze. Fișierele cu puncte de diamant au fost de neprețuit aici.
  • Apoi am asortat diagrama cu decalajele reale pentru cleme și roți dințate *.
  • Odată ce am avut offset-urile, am știut cât de "înalt" să fac blocurile pentru a monta servomotoarele. Am rupt câteva blocuri tăiindu-le prea subțiri și, de asemenea, găurind gaura pentru a lăsa firul să iasă.
  • Apoi a venit partea dificilă a locului în care să puneți blocurile astfel încât să se întâlnească exact cu roțile dințate de pe osie. Am înșurubat într-un bloc și apoi am putut roti servo-ul pentru a întâlni axul și apoi înșurub în al doilea bloc celălalt capăt al servo-ului. De asemenea, am constatat că trebuia să tai puțin din unele blocuri pentru a evita să prind alte roți dințate. A durat destul de mult.
  • Odată ce am făcut toate acestea, mi-am luat carcasa de zmeură pi, am făcut două găuri în ea și am înșurubat-o pe placa frontală. Apoi aș putea adăuga Pi-ul, închide plăcile din față și din spate (după ce am conectat servo-urile la pi (amintindu-mi ce servo era pentru care membru al familiei) și să mă întorc la mâini …

* Aici am găsit cea mai mare problemă, pe care încă nu am rezolvat-o complet. Tuburile de alamă erau de 1/4 ", 7/32", 3/16 ", 5/32". Dar clemele au fost metrice (cu excepția unuia care avea 1/4 "). Conversia tuburilor în metrice a fost de 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. Clemele rămase au fost de 4 mm, 5 mm și 6 mm. cele mai mari sunt în regulă, dar în mod clar 0.44mm este o cursă prea mare pentru clemă, așa că a trebuit să-l tamponez cu hârtie. Am încercat acest lucru de mai multe ori și funcționează OK pentru o vreme și apoi se slăbește din nou. mâna nu funcționează corect. Totuși a fost bine timp de aproximativ 6 luni, așa că timpul petrecut făcând asta bine a fost un timp bine investit. Dar dacă o făceam din nou, aș fi putut să mă duc cu o dimensiune în sus sau în jos, cu un decalaj pentru a încerca să obțin o clemă mai bună pentru a se potrivi cu tubul.

Pasul 8: Mâinile ceasului

Mâinile ceasului
Mâinile ceasului
Mâinile ceasului
Mâinile ceasului
Mâinile ceasului
Mâinile ceasului

M-am decis cu tablă de oțel, deoarece doream ceva rigid, dar mai puțin probabil să se rupă în timp ce îl făceam. De asemenea, a fi subțire însemna că 4 mâini reprezentau mai puțin o problemă.

  • Mai întâi am schițat o formă.
  • Apoi l-am transferat pe oțel deasupra unei benzi de mascare.
  • Apoi le-am decupat foarte inexpert cu puzzle-ul meu. Au fost și sunt diferiți, dar nu mă deranjează asta.
  • Apoi, un prieten mi-a sugerat să-i împrumut polizorul de bancă pentru a le modela, iar acest lucru a fost grozav. foarte recomandat. În caz contrar, depunerea durează vârste.
  • Mai rămânea câteva lucrări de făcut și apoi șlefuire, pentru a nu avea margini ascuțite și, de asemenea, un finisaj frumos.
  • A trebuit să fac găuri pentru a se potrivi cu tuburile de alamă respective (folosiți tuburi decupate pentru a verifica, nu cele montate pe ceas).
  • Am descoperit că găurile aveau nevoie de puțină pila pentru a le pune pe tuburi, dar odată ce erau strânse și nu aveau nevoie de lipici. Excepția a fost mâna din față, pe care am vrut să o am”acoperă”. Așa că am decupat o bucată de oțel (cea mai mare parte) rotundă, după ce am forat gaura și am adus-o la dimensiunea potrivită și am lipit-o în față. îl puteți vedea în ultima poză. Ocazional, mâna din față ar avea nevoie de un pic de adeziv pentru a-l asigura, dar după câteva porniri false mâinile funcționează foarte bine.
  • Respingusem ideea de fotografii (deoarece copiii se plângeau rapid de fotografiile noastre de dată) așa că m-am mulțumit să pictez pe inițiale cu vopsea acrilică.

Pasul 9: Finalizați

Complet!
Complet!
Complet!
Complet!

Totul funcționează foarte frumos. Mâinile sunt uneori puțin oprite, în funcție de unde provin, dar de fapt nu contează deoarece fiecare locație este o secțiune nu doar o linie.

Uneori, ciudat, telefonul meu refuză să recunoască faptul că sunt acasă. Sunt clar în raza Owntracks atunci când sunt afișate pe hartă și chiar și atunci când acuratețea este bună … Nu am idee de ce. nu pare să afecteze restul familiei mele. dar montajul este același. Aceasta înseamnă că Owntracks nu trimite niciodată un mesaj și mă blochez în „Călătorie”. Dar, de obicei, se rezolvă în cele din urmă.

A fost foarte util să avem în bucătăria noastră, mai ales să știm când fetele se îndreaptă spre casă de la școală, sau la casele prietenilor lor și așa când să le pregătim mâncarea / ceaiul.

Din nou, un sfat mare de mulțumire către @ ppeters0502 pentru instrucțiunile minunate de urmat. Sperăm că acestea pot adăuga ceva în jurul realizării unui ceas cu 4 mâini..

Pasul 10: Lucruri pe care le-am învățat și aș face mai bine / diferit dacă ar trebui să o fac din nou

  • Construcțiile fizice au nevoie de încercări și erori. Nu există nicio modalitate de a prezice problemele spațiului, trebuie doar să vă scufundați și să încercați.
  • Pentru cod, problemele de googling sunt esențiale
  • Începeți de bază și construiți. Servo-urile de pe lemnul băncii de testare au însemnat că pot obține cea mai mare parte a acestuia funcționând fără construcția fizică
  • S-ar putea să am mâinile tăiate cu laser la o mașină CNC. Dar nu știam unde este localul și îmi place cum a funcționat oțelul blând (a fost ieftin, iar polizorul de bancă a făcut-o mult mai ușoară)
  • un motor pas cu pas ar putea fi posibil dacă utilizați angrenajul pentru a obține 360 de ture. dar s-ar putea să trebuiască să aveți servo-urile prea aproape de puntea centrală
  • Există 2 tipuri de servo (Futaba și HiTech). Asigurați-vă că ați verificat acest lucru, deoarece acestea au un număr diferit de dinți pe spline. Și le-am cumpărat pe cele greșite inițial …
  • Nu conectați pălăria cu polaritatea greșită;-)
  • Google și Stack Overflow sunt prietenii tăi când sunt blocați. Dar trebuie să folosiți termeni de căutare buni …
  • Bancul de testare este de fapt un mod prin care puteți obține o versiune mai simplă și mai ieftină mult mai ușor. Cea mai mare parte a complicațiilor cu construcția provine din faptul că mâinile trebuie să se rotească în jurul aceleiași axe. Dacă faceți un compromis în acest sens, atunci totul este mult mai ușor. Și cred că 4 poate fi limita axei unice, cu excepția cazului în care arborele devine mult mai lung. Ați putea, presupun, să aveți 3 pe placa din față și trei pe placa din spate dacă arborele ar fi mai lung …

Pasul 11: Extensii viitoare posibile …?

Ideile pe care le-am avut despre pașii următori sunt următoarele.

  1. Aș dori să refac un iPad vechi ca față. adică faceți un ceas digital. Eventual bazat pe browser sau o aplicație. Deoarece un ceas fizic este în esență apatrid (adică nu știe unde se află în prezent, cu excepția faptului că mâinile sunt într-o poziție fizică), ar trebui să am un stoc persistent de date. Node Red poate scrie în sistemul de fișiere local, așa că probabil aș face asta.
  2. Dacă aș face asta, aș vrea să o pot vedea din afara casei. Dar atunci trebuie să rezolvăm securitatea. Deoarece accesul în aceeași rețea wifi este un lucru, accesul de pe internet este altul. Momentan nu am nicio idee despre cum să fac asta cel mai bine, dar bănuiesc că ar putea funcționa un abonament MQTT care merge în altă direcție (pi publică starea curentă și dispozitivele externe se abonează la el) …?
  3. Mi-ar plăcea o mână pentru „În străinătate”. dar asta ar putea fi complex din punct de vedere OwnTracks. Poate s-ar putea folosi doar lung / lat combinat cu niște raze imense?

Recomandat: