Sadržaj:

Weasley' Sat sa četiri ruke: 11 koraka (sa slikama)
Weasley' Sat sa četiri ruke: 11 koraka (sa slikama)

Video: Weasley' Sat sa četiri ruke: 11 koraka (sa slikama)

Video: Weasley' Sat sa četiri ruke: 11 koraka (sa slikama)
Video: Супергерои и суперзлодеи против Оскара 2024, Novembar
Anonim
'Weasley' Sat sa četiri ruke
'Weasley' Sat sa četiri ruke

Dakle, s Raspberry Pi -jem koji se već neko vrijeme pojavio, htio sam pronaći lijep projekt koji će mi omogućiti da ga najbolje iskoristim. Naišao sam na ovaj sjajni Instructable Build Your Own Weasley Location Clock od ppeters0502 i pomislio sam da bi bilo dobro pokušati.

Sat se u osnovi sastoji od Raspberry Pi -a koji kontrolira servo pogone kako bi okrenuo kazaljke na satu. Kao i u kući porodice Weasley u knjigama/filmovima o Harryju Potteru, svaki član porodice ima svoju ruku. Svaka ruka pokazuje trenutnu lokaciju tog člana porodice. Sat to postiže primanjem poruka s mobilnih telefona porodice kad god uđu ili izađu iz unaprijed definiranog radijusa.

Glavne razlike u odnosu na prethodni Instructable bile su u tome što sam trebao imati 4 ruke, a ne 2 (inače bi se moje kćerke žalile) i odlučio sam da napravim okvir, a ne da dobijem stari sat za ponovnu upotrebu. To je bilo zato što sam bio zabrinut da će prostor biti problem u postojećoj kućištu sata, s potrebom da se uklopi u 4 servo -a itd.

Trajalo je mnogo duže nego što sam očekivao, iako uglavnom tamo gdje sam naišao na škrte probleme koji su me zbunjivali i za koje izgleda da ih nije pokrivao izvorni post. Ništa protiv originalnog Instructable -a, koji je općenito bio odličan, ali prošlo je nekoliko godina i verzije su se promijenile … itd. Također, boravak u Velikoj Britaniji značio je da su neki od Imperijalnih/Metričkih elemenata izazvali više izazova nego što sam očekivao.

Također, iako sam dobro s kodiranjem, fizička izrada sata definitivno me rastegnula i zahtijevala je neke dodatne alate, što me također donekle usporilo.

Na kraju ću uključiti odjeljak "Stvari koje bih uradio drugačije/bolje da to radim ponovo …"

Potrošni materijal:

Jedna od stvari koje su me pogodile je da su skupe komponente trebale raditi sa kazaljkama na satu. 4 ruke su definitivno skuplje od 2. Odlučio sam staviti neke cijene kako biste imali ideju. Ovo je prvi put da sve zbrajam, a zanemarujući alate, mislim da sam potrošio oko 200 funti. Plus neke stvari koje nisam koristio (i koje nisu navedene ispod) plus Pi, plus napajanje koje sam već imao.

Pi itd

  1. Raspberry Pi - ne sjećam se koliko je prvobitno koštao, ali to je bio model 2B. Mislim da ako ga već nemate, onda bi čak i Pi Zero vjerovatno bio dovoljan. Dodao sam wifi ključ i SD karticu s Raspbian -om. I okolo mi je ležao stari punjač za Android telefon.
  2. Adafruit Servohat za Pi - 16 £
  3. Napajanje za Servohat - Ovo sam se jako borio da pronađem jer su sve web stranice samo pokazale na adafruit stranicu koja onda, očito, preporučuje američko napajanje. Tada sam shvatio da imam staro napajanje s promjenjivim naponom s izmjenjivim vrhovima pa sam to i iskoristio. Ali američki košta 8 dolara, pa je to pravi korak.
  4. Kućište za Pi, kako bih ga zatim mogao pričvrstiti na okvir sata. £ 5

Servo i zupčanici

Ovdje citiram cijenu za sve 4, pa podijelite ako želite manje ruku (zbrajanjem to iznosi ~ 40 £ po ruci = 160 £: -o

  1. 4 x servomotori-koristio sam one koje preporučuje ppeters0502-pronađeno na ebayu za ~ 15 £ = 60 £-tražio sam sljedeći tekst "GWS-Digital-Servo-Jedro-Vitlo-S125-1T-2BB-360 stupnjeva "ali ponekad nisu bili dostupni
  2. 4 x mjedene cijevi koje se točno uklapaju jedna u drugu - ~ 3 £ svaka. Dobio sam po 1 od 1/4 ", 7/32", 3/16 ", 5/32" = 11 £
  3. 4 x stezaljke koje se pričvršćuju na mjedene cijevi kako biste mogli pričvrstiti zupčanike. ~ 7 £ svaki = 28 £. Dobio sam ih od ActiveRobota koji obavljaju redovne narudžbe iz Servocity -a u SAD -u, omogućavajući vam da izbjegnete međunarodnu dostavu. Takođe mogu dobiti bilo šta drugo što možete pronaći na glavnoj američkoj web stranici Servocity -a. Ovo je bilo vrlo zgodno za sljedeće 2 stavke
  4. 4 x zupčanika sa acetil 0,770 "uzorkom za montažu na stezne glavčine. ~ 6 £ svaki = 24 £
  5. 4 x acetil zupčanici montirani na acetil zupčaniku za montažu na servo pogone. ~ £ 6.50 svaki = 26 £
  6. 1 x paket šesterokutnih matica na pričvršćene zupčanike za stezne matice = 2,60 £
  7. 1 x 7/64 "šesterokutni ključ (imbus ključ) jer je sve što dolazi iz SAD -a imperijalno, pa su stotine imbus ključeva koje već imam beskorisni = 1 £

Za fizičku građu

Ovdje sam uglavnom koristio dijelove stvari o kojima sam lagao

  1. 2 x kvadrata šperploče za prednju i zadnju ploču
  2. Zatim sam izrezao cilindre 4x10 cm sa stare ograde koju sam imao, kako bih spojio stražnju stranu s licem
  3. Neki blokovi za montiranje servo pogona s ispravnim pomakom - samo komadići mekog drva koje sam izrezao prema veličini.
  4. Razni vijci. od vrlo malih (za pričvršćivanje Pi kućišta na okvir) do srednjih (za pričvršćivanje okvira zajedno)
  5. 0,75 mm lim od mekog čelika otprilike 50 cm x 20 cm (za rezanje ruku). Ovo je jedino što sam kupio ~ 9 £ od Wickesa

Alati

Neke stvari sam imao, a neke sam posudio ili kupio

  1. Lemilica + električno lemljenje - za pričvršćivanje konektora na Adafruit Hat & Pi.
  2. Ubodna pila - za izrezivanje grubog oblika ruku
  3. Drill. samo obična bežična 18V bušilica
  4. Bušilice - Imajte na umu da će vam biti potrebne imperijalne burgije za izradu rupa koje odgovaraju mesinganim cijevima. Uspeo sam da pozajmim nešto.
  5. nožna pila - za rezanje mjedenih cijevi. Nemojte raditi ono što sam ja radio i potrošiti 3 £ na rezač cijevi, radi pod pritiskom i znači da se unutrašnjost cijevi malo smanjuje. tako da cijev slijedeće veličine tada ne prolazi
  6. Klupa za mljevenje - nisam imala jednu od ovih, ali prijateljica je imala i to je uvelike olakšalo oblikovanje ruku. Do tada sam samo koristio datoteke. Ne bih ga kupio samo za ovaj projekt, ali za metalne ruke bio je odličan.
  7. Kupio sam neke različite dijamantske turpije (vrlo male). korisno za ruke i cijevi oko 15 £
  8. grubi i glatki brusni papir
  9. neke male stezaljke drže stvari na mjestu prilikom bušenja.
  10. porok iz istog razloga.

Korak 1: Postavite svoje telefone da šalju njihovu lokaciju na vaš Pi (I dio MQTT posrednik)

Ovaj dio je vrlo dobro opisao ppeters0502 u svom izvrsnom Weasley Clock Instructable -u. Čudno, iako možda odražava različite skupove vještina, počeo je s izgradnjom, a zatim prešao na softver, a ja sam to uradio obrnuto. Dakle, počeo sam s telefonom … čekaj, nisam, počeo sam s posrednikom MQTT, što je korak 6 u njegovom Instructable. Izostavit ću sve dijelove koje jako dobro radi i samo ću dodati neke dijelove koje bih mogao dodati. Išao sam putem CloudMQTT koji je spomenuo.

ALI dok sam ovo pisao, provjerio sam vezu do planova i otkrio da više nema besplatnog plana! Povukli su ga iz, kako se čini, razumnih razloga. tj. da će ljudi postaviti besplatnu instancu, a zatim je nikada neće koristiti. Nisam primijetio jer se trenutne instance mogu nastaviti. Tako da se neću promeniti. Ali to čini upute pomalo suvišnima. Čini se da postoje 3 opcije.

  1. Plaćajte 5 USD mjesečno za Cloud MQTT (ali to stalno zvuči skupo za sat).
  2. Idite Mosquitto na Pi ruti kako je opisano u prvom Instructable. Ne mogu to komentirati, ali mogla bi biti dobra opcija.
  3. Samo google "besplatni MQTT cloud broker" i čini se da postoje neki drugi.

Dakle, pod pretpostavkom da imate radnog posrednika MQTT -a, ako je išta poput CloudMQTT -a tada će se prikazati poslužitelj, korisnik, lozinka i port. Sve će vam ovo trebati za postavljanje telefona kako biste posredniku poslali svoje lokacije/kretanja.

Korak 2: Postavite svoje telefone da šalju njihovu lokaciju na vaš Pi (dio II Vlasničke stranice)

Ovo je također vrlo dobro pokriveno u originalnom Instructable -u, u koracima 7 (Android), 8 (iOS) i 9 (postavljanje regija).

Imao sam samo iOS uređaje pa nisam pokušao korak 7.

Šta bih dodao tim uputstvima?

  1. U postavci postoje i polja TrackerID i DeviceID. Ovo biste trebali imati kao mogućnost da vas identifikuju u vašoj porodici. Npr. Imao sam ih kao R i RP telefon. To znači da možete preći na sat koji servo i prema tome koju kazaljku okrenuti.
  2. Regije su naziv lokacija koje želite pratiti.
  3. Svaka regija je definirana imenom, zemljopisnom širinom, dužinom i radijusom.
  4. Budući da sam htio imati više lokacija kao jedan odjeljak na satu, koristio sam konvenciju imenovanja, koja se pokazala vrlo korisnom. Moguće su i druge metode, ali meni je to uspjelo.

    • Na primjer, za dio PORODICE, želio sam imati roditelje i braću i sestre, roditelje i braću i sestre svoje žene. Stoga sam imao lokacije poput "Family Tom", "Family Dick", Family Harry "i" Family ParentsR ". To je značilo da bi sljedeća faza mogla znati šta preći na Sat.
    • Imajte na umu da ljudi mogu imati različite lokacije. Ali sve dok su u skladu s konvencijom o imenovanju, to je u redu. Npr. moj posao bi se razlikovao od radnog područja moje žene i drugačije bi se zvao. ali sve dok oboje započnu "posao" onda je sve u redu.
  5. Želite da način rada postavite na 'Značajan' na ekranu Mapa. To znači da poruke (uglavnom) dobivate samo kada uđete ili izađete iz regija. Čini se da je ovo ažurirana verzija bilješke označene VAŽNO: na kraju 8. koraka u originalnom Instructable.
  6. Kao što je spomenuto u izvornom Instructable -u, korištenje Google karata odličan je način da se otkrije Lat/Long negdje. Smatrao sam da je učinkovitije to učiniti skupno, otkrivajući sve lat/long-ove moje lokacije, zatim sam ih zalijepio u Notes (na svom Macu) i uz sinkronizaciju u oblaku to je značilo da su se čarobno pojavile na mojem iPhoneu u Notes -u i mogao sam ih kopirati/zalijepiti u Owntracks. To je takođe značilo da mogu poslati datoteku na telefone svoje porodice i svi smo imali dosljedne lokacije.
  7. Bliske lokacije mogu uzrokovati probleme. Moj brat živi 2 ulice dalje, a u početku je moj telefon stalno razmišljao da sam istovremeno u njegovoj kući, kao i kod kuće. Na kraju sam morao staviti dodatnu logiku u Node Red da uhvatim i zanemarim ovo što se događa.

Korak 3: Postavljanje Raspberry Pi

Postavljanje Raspberry Pi
Postavljanje Raspberry Pi

Dakle, pretpostavljam da imate postavljen osnovni Pi i na WiFi. Vodio sam Raspbian, ali to ne bi trebalo biti važno. Koristite upute na stranici raspberrypi.org da biste sve to postavili.

Imajte na umu da Pi ima priključke za prikaz na monitoru, tastaturi/mišu itd. Ali očito kada ga imate na satu, ne želite ništa od toga. Dakle, odgovor, koji je predložio neko na web stranici Raspberry pi, mislim, bio je postavljanje VNC veze. Ovo vam omogućava povezivanje s drugog uređaja na Pi i njegovu kontrolu. Radim to sa svog Mac -a, ali sam to radio i sa iPad -a. Predlažem da upotrijebite nešto s tipkovnicom radi lakšeg korištenja.

Upravo sam otkrio da su mi izgleda olakšali otkad sam se povezao … pogledajte ovdje

U osnovi se povezujete i dobivate prozor koji je standardni Pi interfejs.

Dakle, imate prozor za svoj Pi sa svog laptopa ili računara.

Sada morate spojiti Servosisteme.

Prvo morate napraviti prilično osnovno lemljenje da biste adafruit šešir stavili na Pi. Malo je škakljivo, ali uprkos tome što nije lemljeno 30-ak godina, bilo je u redu. Kao i uvijek, pronašao sam koristan YouTube video koji me je proveo, što mi je bilo od velike pomoći.

Iako šešir može pokretati 16 servo pogona, trebala su mi samo 4 pa sam mučio samo lemljenje prvog seta od 4 pina.

Zatim se servomotori samo pritisnu na pinove. Prvo sam napravio jednu da provjerim mogu li zaista pokrenuti servo.

Tu sam naišao na svoju prvu veliku prepreku. Imao sam vrlo osnovnu python skriptu za premještanje servomotora i doslovno se ništa nije dogodilo. Proveo sam oko nedelju dana isprobavajući nove skripte itd., A onda se na šeširu počeo pojavljivati dim. Isključivši sve, provjerio sam shemu. To je bila komponenta koja štiti od obrnutog polariteta. Budući da sam imao višenaponski, višenaponski izvor napajanja, propustio sam činjenicu da bi DC izlaz mogao ići u oba smjera okretanjem vrha. Pogrešio sam (šansa 50:50) i upravo sam spalio svoj prvi šešir od adafruta

:-(Tako da je došlo do laganog odlaganja jer sam kupio novi, ponovo zalemio i ispravio vrh. Mnogo bolje.

Zatim sam trebao smisliti kako pomaknuti servo pogone na ispravnu tačku na satu. To će se dogoditi u koraku 5, ali ono što sam učinio, budući da nisam izgradio pravi sat, bilo je da lagano pričvrstim servomotore na nasumični komad drveta i zalijepim neku maskirnu traku sa strelicom, kao na slici. Ovo je dalo vrlo vizuelnu povratnu informaciju onom što sam kodirao.

Korak 4: Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)

Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)
Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)
Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)
Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)
Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)
Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)
Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)
Instaliranje Node Red (Dobivanje poruka s MQTT servera na vašu Python skriptu)

Node-RED je program koji instalirate na Pi, koji vam daje vizualno sučelje (u vašem pregledniku) za primanje poruka s vašeg MQTT servera i pomoću njega prosljeđuje ispravne informacije vašoj python skripti (opisano u sljedećem koraku (Korak 5). Prilično sam koristio upute ppeters0502 u koraku 5. Postoji logika u ovim tokovima i dodatna logika u pythonu, a u svakom možete imati više ili manje, ovisno o vašim željama. U osnovi morate to učiniti sljedeće

  1. Imam prijemne čvorove za MQTT poruke - one su svijetlo ljubičaste i imao sam 1 po članu porodice
  2. Mapirajte to na servo koji želite premjestiti (numeriran 0, 1, 2, 3)
  3. Odredite ulazite li ili napuštate radijus na OwnTracks -u
  4. Odredite na koju lokaciju treba pokazati servo

    Bilo je nekih izuzetaka od osnovnih pravila koja sam trebao ugraditi

  5. Pravilno postavite ugao

Node-RED je radio prva 4, a Python je bio relativno jednostavan.

Ovdje možete vidjeti osnovni tok, a svi tokovi se mogu izvesti u format ovdje, što znači da ovaj osnovni tok možete uvesti u svoj Node-RED, a zatim se prilagoditi. Imajte na umu da sam uklonio sve veze s ljubičastih čvorova tako da ne možete pristupiti mojoj instanci MQTT. Također sam uklonio sve test-čvorove jer sadrže stvarne podatke … možda ćete morati promijeniti ovaj tip datoteke u flows.json kako biste ga uvezli u svoj Node-RED, ali Instructables mi to nije dozvolio.

Zeleni čvorovi su čvorovi za otklanjanje grešaka koji zatim prikazuju izlaz u prozoru za otklanjanje grešaka na desnoj strani ekrana (možda će biti potrebno proširenje - pronađite strelicu do pola gore desno)

Prvi bit koji treba učiniti je bit "Uživo - samo za otklanjanje grešaka". Time se provjerava možete li primiti MQTT poruke i vidjeti što se u njima nalazi. json je samo strukturiranija verzija poruka koja vam omogućuje lakše izvlačenje podataka. U ovom toku, kada je uživo, tada povezujem ljubičaste čvorove gore lijevo sa čvorom json desno od njih.

Testiranje čvorova

Kada znate kako će poruke izgledati uživo, postaje dosadno morati izaći iz svoje kuće, niz cestu i nazad, samo da biste pokrenuli događaj. Nakon što to učinite, poruku možete kopirati u okidač TEST, a zatim samo kliknuti na nju da biste simulirali događaj. Također možete promijeniti podatke, pretvarajući se da su za različite lokacije (provjerite odgovaraju li točno nazivima lokacija u Owntracks -u).

Možete vidjeti u toku da svi test slučajevi idu u zasebni čvor, a zatim to ide u čvor json. Ovo je čisto za sređivanje ekrana.

Ne mogu dovoljno naglasiti koliko su ti čvorovi bili korisni, a i dalje su.

Pozivanje Pythona

Pa sam onda udario u sljedeću blokadu. Ovaj je uzeo MNOGO guglanja po forumima itd. Moj tok bi savršeno funkcionirao, ali ne bi pokrenuo moju python skriptu. Nisam mogao ovo riješiti, ali poštedjet ću vas psovanja itd. Samo da kažem da, kao što je istaknuto na drugom snimku zaslona, morate navesti python3, kako očito Node-RED pretpostavlja python2, osim ako ne navedete.

2 dodatne komplikacije - samo ako je potrebno

Tada sam imao niz izazova u kojima logika nije baš funkcionirala. Prvo je bilo to što je Owntracks bio pomalo čudan i, budući da moj brat živi 2 ulice dalje, često je govorio da sam na 2 mjesta odjednom ili da se stalno prebacujem između njih. Jedini način na koji sam to mogao zaobići bio je da dodam stanje za zaustavljanje lažno pozitivnih rezultata. Ako je tvrdilo da sam u njegovoj kući, pregledao sam i provjerio stvarnu geografsku dužinu/širinu u poruci i prekinuo je ako piše da sam zaista kod kuće.

Drugi problem je bio što, dok sam šetao psa, nisam mogao postići dobar radijus. Obično hodam istim područjem, pa sam ovdje rekao "ako uđem u ovo područje, definitivno ću šetati psa i bit ću sve dok ne dođem kući." to je značilo da se neće prebaciti na pivnicu koju prolazim na putu kući, ili na druga lokalna mjesta koja bi mogla izazvati hodanje pasa. Da bih to učinio, morao sam postaviti neke postojane kontekstualne varijable (potražite ih na Node-RED. Pogledajte snimak ekrana. Ove varijable traju sve dok se Node-RED ponovno ne pokrene, pa mogu reći Ako ste u šetnji psa, postavite kontekstnu varijablu na "Dog". Zatim zanemarite NIŠTA drugo osim ako ne 'uđem' kući.

Zadnji snimak ekrana je moj konačni tok, sa svim izuzecima, samo radi vašeg interesa.

Korak 5: Zapravo premještanje servosa s Pythonom na Pi

Kratko preusmjeravanje na servo pogone. Nisam znao ništa o servo pogonima, ali na internetu postoji mnogo informacija. One koje sam koristio su kontinuirani servo upravljači koji se mogu okretati za 360 stupnjeva i glatko. Druga glavna vrsta su stepeni servo pogoni koji se kreću u komadima (stepenicama) i naizgled idu samo do oko 180 stepeni (ovdje očito nije korisno). Prednost stepper servo servera je što ih možete postaviti samo pod kutom i oni se pomiču do te točke i zaustavljaju. Sva dokumentacija koju sam pronašao kaže da kontinuirani servo motori rade tako što im se daje brzina i vrijeme za održavanje te brzine (npr. Puna brzina za 1 s) i završavaju tamo gdje završavaju, ali to je relativno u odnosu na njihovu početnu točku. Nakon puno pokušaja, ovo mi nije uspjelo, ali sam pomoću testnog stola otkrio da su se servomotori dosljedno vraćali na istu točku pod istim kutom. Što je mnogo lakše, pa sam upravo to uradio. Možda postoji neki nedostatak za koji ne znam, ali meni funkcionira. Imajte na umu, međutim, da je svaki servo jedinstven, pa morate imati jedinstveni skup kutova za svaki servo. Bilo mi je najlakše imati "kalibracijsku" python skriptu, gdje bih mogao redom postaviti servo u kutove, poboljšavajući ih dok svi ne izgledaju ispravno. Ovo je prva priložena skripta. Samo komentirate servomotore koje ne testirate, koncentrirate se na jedan, a zatim prilagodite vrijednosti kako vam je potrebno. NAPOMENA: kalibracija ispitnog stola je jednostavna, gruba i spremna. Morat ćete ponovno kalibrirati kada sat bude sastavljen, jer će zupčanici itd. Promijeniti sve. Zatim je druga skripta prilično osnovna. Radi sledeće

  1. Uvezite nekoliko biblioteka
  2. premjestite varijable koje dolaze iz Node-RED u varijable u skripti
  3. mapira uglove određene skriptom kalibracije lokacijama na satu.
  4. provjerite nalazi li se lokacija na popisu, a ako nije, prijeđite na "Opasnost"
  5. zapisati šta je urađeno u log datoteku
  6. pomaknite potrebni servo pod željeni kut
  7. Zaustavite jedan servo od 'zujanja' *

3 stvari na koje treba obratiti pažnju.

Log-datoteka je super korisna za otklanjanje grešaka. To znači da možete pogledati Node-RED debagovanje poruke, a zatim vidjeti šta se dogodilo u skripti. izlaz izgleda ovako. Prva tri ja vodim psa u šetnju, a zatim dijete 1 napušta kuću i stiže u školu. Napomena za provjeru vremena na Pi. Može biti zadano UTC i ne dopušta promjenu ljetnog/zimskog vremena. Npr. donje vrijeme je 1 sat van.

2020-12-07_05: 36: 03 Tko = 0, loc = Putovanje, detalj = Početna, Kut = 10, indeks = 8

2020-12-07_05: 36: 04 Tko = 0, lokal = pas, detalj = Astons, Kut = 86,5, indeks = 10

2020-12-07_06: 07: 49 Tko = 0, lokalizacija = Početna, detalj = unos, Kut = 75, Indeks = 0

2020-12-07_06: 23: 53 Tko = 2, lokal = Putovanje, detalj = Početna, Kut = 19, Indeks = 8

2020-12-07_06: 30: 48 Tko = 2, lokal = škola, detalj = N, Kut = 60,5, indeks = 2

Servo-zujanje

Jedan od servomotora (0) nastavio je zujati nakon završetka skripte. Kao što možete zamisliti, ovo je jako neugodno imati u našoj kuhinji. Našao sam negdje nit koja spominje postavljanje servo kuta na 'none' što ga nekako postavlja u stanje mirovanja. To je sjajno funkcioniralo i može se vidjeti u scenariju na kraju.

Timings

Imajte na umu koliko je niska kazaljka ruke da biste premetali cijeli dan. U skripti možete vidjeti da postoji time.sleep (4) linija neposredno prije nego što smo postavili servo da prestane zujati. To je zato što morate dozvoliti ruci da dođe do odredišta prije nego što je postavite u stanje mirovanja. U suprotnom, jednostavno prestaje. Ovo je također važno pri kalibriranju, jer radite više poteza unutar skripte. Pokrenuo bih ga tako da se redom premjesti na svih 12 lokacija, tako da ih mogu sve ponovo provjeriti. ali vam treba malo vremena između.

Korak 6: Dovršavanje softvera - telefoni do servo uređaja

Nakon što postavite testni stol i skripte, možete ga pokrenuti 'uživo' nakratko i vidjeti kako radi u stvarnom vremenu. Ovdje sam pronašao iznimke koje sam trebao dodati u svoj Node-RED tok.

Možete se jednostavno odspojiti i povezati članove porodice u Node-RED toku ako se želite koncentrirati na jednog. Na primjer, ako dva uzrokuju probleme, ali želite popraviti jedan po jedan. U suprotnom, imajte na umu da ćete i dalje primati poruke sa svih povezanih telefona.

Spomenuo sam problem sa šetanjem pasa i prilično bliskom kućom mog brata. Imao sam još 2 izazova.

Prvo, lokacije unutar drugih lokacija. Moja žena je pohađala kurs na koledžu u Londonu. Htjeli smo da se to registrira kao 'škola', ali to je također u 'Londonu'. Stoga smo morali ponovo koristiti kontekst da kažemo da ako napuštate tu 'školu', prijeđite na 'London', a ne na 'Putovanje'.

Drugo, uslovi trke. Kao što je spomenuto, kuća mog brata udaljena je 2 ulice, a također u blizini našeg omiljenog paba/restorana. To znači da se ponekad primaju 2 signala istovremeno ili vrlo blizu. Ovo može postaviti „uvjete utrke“u kojima ćete postići različite ishode, ovisno o tome koji će proces najbrže proći logiku, što dovodi do nepredvidivih ishoda. Kako bih se tome suprotstavio, učinio sam da sve 'ulazne' poruke imaju kašnjenje od 1 s u logici, što je izgleda riješilo problem. Možda postoje bolji, elegantniji načini za rješavanje ovoga, ali činilo se da funkcionira.

Korak 7: Izgradnja fizičkog sata - I dio - Servo i osovina

Izgradnja fizičkog sata - I dio - Servo i osovina
Izgradnja fizičkog sata - I dio - Servo i osovina
Izgradnja fizičkog sata - I dio - Servo i osovina
Izgradnja fizičkog sata - I dio - Servo i osovina
Izgradnja fizičkog sata - I dio - Servo i osovina
Izgradnja fizičkog sata - I dio - Servo i osovina

Sad ono u što nisam bio najmanje siguran, zbog čega sam to ostavio da potraje. Htio sam lice pristojne veličine i laku konstrukciju. Bio sam nervozan i zbog toga što sam fizički dobio 2 servo motora oko centralne osovine. To je značilo da sam, pogledavši nakratko na eBay -u stare satove kao u uputstvima koja sam slijedio, odlučio dati sebi više šansi tako što ću ih sam izgraditi.

  • Dobio sam 2 velika (~ 30 cm) kvadrata šperploče koja sam ležao (debljine oko 9 mm).
  • Zatim sam izrezao staru ogradu za ograde na dijelove 4x10 cm i spojio prednju i stražnju ploču zajedno.
  • Označivši središnju rupu, izbušio sam je iste veličine kao najveća mjedena cijev.
  • Zatim sam ga ofarbao normalnom bijelom sjajnom bojom.
  • Nakon nekog eksperimentiranja shvatio sam da vjerovatno ne bih mogao dobiti 4 servo motora oko iste osovine ako su svi pričvršćeni na stražnju (ili prednju) ploču. Pa sam morao imati ili 3 + 1 ili 2 + 2, na svakoj ploči. Završio sam sa 3 pozadi i 1 napred.
  • Razradio sam potrebne pomake na komadu papira, a zatim izrezao mjedene cijevi kako bi odgovarale. Imajte na umu da je najdeblja cijev najkraća, a najtanja mora ići sve do stražnje ploče. (Zapravo sam najmanji ugradio u rupu koju sam djelomično izbušio u stražnjoj ploči, ali ne do kraja tako da se osovina nije pomakla unatrag).
  • Za cijevi sam kupio rezač cijevi, ali za njihovo rezanje koristi se pritisak, što znači da manju cijev ne možete unijeti unutra. Pa sam upotrijebio nožnu pilu, a zatim sam morao podnijeti dosta datoteka kako bih ih natjerao da rade. Dijamantski dosjei ovdje su bili neprocjenjivi.
  • Zatim sam spojio dijagram sa stvarnim pomacima za stezaljke i zupčanike *.
  • Kada sam imao pomake, znao sam koliko 'visoko' napraviti blokove za postavljanje servomotora. Razbio sam nekoliko blokova tako što sam ih isjekao pretanko i izbušio rupu kako bih pustio žicu.
  • Zatim je došao lukavi dio gdje treba postaviti blokove kako bi se točno susreli sa zupčanicima na osovini. Ušrafio sam jedan blok, a zatim mogao okrenuti servo prema osovini, a zatim uviti drugi blok serva. Također sam otkrio da moram malo izrezati neke blokove kako ne bih zaglavio druge zupčanike. Trajalo je dosta dugo.
  • Kad sam sve to obavio, nabavio sam kovčeg od maline pi, izbušio dvije rupe u njemu i pričvrstio ga na prednju ploču. Zatim sam mogao dodati Pi, zatvoriti prednju i stražnju ploču (spojivši servosisteme na pi (sjećajući se koji je servo za kojeg člana porodice) i okrenuti se rukama …

* Ovdje sam pronašao najveći problem koji još nisam u potpunosti riješio. Mjedene cijevi bile su 1/4 ", 7/32", 3/16 ", 5/32". Ali stezaljke su bile metričke (osim jedne koja je bila 1/4 "). Pretvarajući cijevi u metričke bile su 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. Preostale stezaljke bile su otvora 4 mm, 5 mm i 6 mm. Najmanje 2 i najveći su u redu, ali očito je da je 0,44 mm preveliki hod za stezaljku pa sam ga morao obložiti papirom. Pokušao sam ovo nekoliko puta i neko vrijeme radi u redu, a zatim se opet olabavi. Dakle, drugi najveći ruka ne radi ispravno. Bilo je dobro oko 6 mjeseci, pa je vrijeme provedeno u ovom poslu bilo dobro uloženo vrijeme. Ali da sam to radila ponovo, možda bih otišla 1 veličinu gore ili dolje, s razmakom u pokušaju da dobijem bolje stezanje na cijev, npr. idite na 9/32 ", 1/4", (razmak), 3/16 ", 5/32"

Korak 8: kazaljke na satu

Kazaljke na satu
Kazaljke na satu
Kazaljke na satu
Kazaljke na satu
Kazaljke na satu
Kazaljke na satu

Odlučio sam se za čelični lim jer sam htio nešto kruto, ali manje vjerojatno da će puknuti dok ga izrađujem. To što ste bili mršavi značilo je da 4 ruke nisu problem.

  • Prvo sam skicirao oblik.
  • Zatim sam ga prenio u čelik na vrhu neke maskirne trake.
  • Zatim sam ih vrlo nestručno izrezao ubodnom pilom. Bili su, i jesu, različiti, ali meni to ne smeta.
  • Tada mi je prijatelj predložio da posudim njegovu brusilicu za oblikovanje, što je bilo odlično. Preporučuje. U protivnom podnošenje zahtjeva traje godinama.
  • Trebalo je još nešto uložiti, a zatim brusiti kako bi se osiguralo da nema oštrih rubova, a također i lijepu završnu obradu.
  • Morao sam izbušiti rupe koje odgovaraju odgovarajućim mjedenim cijevima (za provjeru koristite odrezane cijevi, a ne montirane na satu).
  • Otkrio sam da je rupicama potrebno malo turpijanja kako bi se navukle na cijevi, ali jednom su bile uske i nije im bilo potrebno ljepilo. Izuzetak je bila prednja ruka koju sam htio imati 'pokriće'. Tako sam izrezao (uglavnom) okrugli komad čelika, nakon što sam izbušio rupu i dobio je odgovarajuće veličine, te je superljepio sprijeda. možete to vidjeti na posljednjoj slici. Povremeno bi prednjoj ruci trebao komadić ljepila da je učvrsti, ali nakon nekoliko pogrešnih pokreta ruke rade jako dobro.
  • Odbio sam ideju o fotografijama (jer bi se djeca brzo žalila na naše fotografije sa datuma) pa sam se odlučio za slikanje na inicijalima akrilnom bojom.

Korak 9: Dovršite

Potpuno!
Potpuno!
Potpuno!
Potpuno!

Sve to zaista lijepo funkcionira. Ruke su ponekad pomalo skinute, ovisno o tome odakle su došle, ali zapravo nije važno jer je svaka lokacija odjeljak, a ne samo linija.

Ponekad, čudno, moj telefon odbija priznati da sam kod kuće. Jasno sam u radijusu Owntracks -a kada je prikazano na karti, pa čak i kada je tačnost dobra … Nemam pojma zašto. izgleda da ne pogađa ostatak moje porodice. ali postavka je ista. To znači da Owntracks nikada ne šalje poruku, a ja zaglavim u „Putovanju“. Ali obično se na kraju to riješi.

Bilo je super korisno imati ih u našoj kuhinji, uglavnom znati kada se djevojke vraćaju iz škole, ili kućama svojih prijatelja, pa kada im treba pripremiti hranu/čaj.

Opet velika zahvalnost @ppeters0502 na sjajnim uputama koje morate slijediti. Nadajmo se da bi ovo moglo dodati nešto oko izrade sata sa 4 kazaljke.

Korak 10: Stvari koje sam naučio i koje bih učinio bolje/drugačije da moram to ponoviti

  • Fizičke verzije zahtijevaju pokušaj i grešku. Ne postoji način predviđanja svemirskih problema, samo trebate zaroniti i pokušati.
  • Za kôd su problemi guglanja bitni
  • Započnite osnovno i nadogradite. Servomotori na drvetu za testne stolove značili su da bih mogao raditi većinu bez fizičke izrade
  • Možda sam laserski rezao ruke na CNC stroju. Ali nisam znao gdje je lokalni, i sviđa mi se kako je izrađen blagi čelik (bio je jeftin, a klupa za brušenje je mnogo olakšala)
  • koračni motor bi mogao biti moguć ako koristite zupčanik za okretanje za 360. ali možda ćete tada morati imati servo preblizu središnje osovine
  • Postoje 2 vrste servo servera (Futaba i HiTech). Uvjerite se da ste ovo provjerili jer imaju različit broj zubaca na zubcu. A u početku sam kupovao pogrešne …
  • Ne povezujte šešir s pogrešnim polaritetom;-)
  • Google i Stack Overflow vaši su prijatelji kad zaglavite. Ali morate koristiti dobre pojmove za pretraživanje …
  • Testna ploča je zapravo način na koji možete lakše dobiti jednostavniju, jeftiniju verziju. Većina komplikacija pri izradi proizlazi iz potrebe da se ruke okreću oko iste osovine. Ako napravite kompromis oko toga, sve je mnogo lakše. I mislim da 4 može biti granica jedne osovine osim ako vratilo ne postane mnogo duže. Pretpostavljam da biste mogli imati 3 na prednjoj ploči i tri na stražnjoj ploči da je osovina duža …

Korak 11: Moguća buduća proširenja …?

Ideje koje sam imao o sljedećim koracima su sljedeće.

  1. Htio bih ponovo namjestiti stari iPad kao sat. odnosno napraviti digitalni sat. Moguće na bazi preglednika ili aplikacije. Budući da je fizički sat u suštini bez državljanstva (tj. Ne zna gdje se trenutno nalazi, osim zbog toga što su kazaljke u fizičkom položaju), morao bih imati stalnu pohranu podataka. Node Red može pisati u lokalni datotečni sistem, pa bih to vjerovatno i uradio.
  2. Da sam to učinio, volio bih to vidjeti izvan kuće. Ali onda zaista moramo riješiti sigurnost. Budući da je pristup unutar iste WiFi mreže jedno, pristup s interneta je drugo. Trenutno nemam pojma kako je najbolje to učiniti, ali sumnjam da bi pretplata na MQTT u drugom smjeru mogla funkcionirati (pi objavljuje trenutni status i vanjski uređaji se pretplaćuju na nju) …?
  3. Volio bih jednu ruku za 'Abroad'. ali to bi moglo biti složeno sa stajališta OwnTracks. Možda bi samo mogao koristiti long/lat u kombinaciji s nekim velikim radijusima?

Preporučuje se: