Turinys:

„Weasley“vietos laikrodis 4 rankomis: 11 žingsnių (su nuotraukomis)
„Weasley“vietos laikrodis 4 rankomis: 11 žingsnių (su nuotraukomis)

Video: „Weasley“vietos laikrodis 4 rankomis: 11 žingsnių (su nuotraukomis)

Video: „Weasley“vietos laikrodis 4 rankomis: 11 žingsnių (su nuotraukomis)
Video: Top 10 HP Characters Who Could Have Been Sorted into a Different Hogwarts House 2024, Liepa
Anonim
„Weasley“vietos laikrodis 4 rankomis
„Weasley“vietos laikrodis 4 rankomis

Taigi, su „Raspberry Pi“, kuris jau kurį laiką spardėsi, norėjau rasti gražų projektą, kuris leistų man kuo geriau juo pasinaudoti. Ppeters0502 aptikau šį puikų „Instructable Build Your Own Weasley Location Clock“ir pagalvojau, kad būtų gerai pabandyti.

Laikrodį iš esmės sudaro „Raspberry Pi“, kuris valdo servo, kad pasuktų laikrodžio rodykles. Kaip ir Vizlio šeimos namuose Hario Poterio knygose/filmuose, kiekvienas šeimos narys turi savo ranką. Kiekviena ranka rodo dabartinę to šeimos nario vietą. Laikrodis tai pasiekia gaudamas pranešimus iš šeimos mobiliųjų telefonų, kai jie įeina arba palieka iš anksto nustatytą spindulį.

Pagrindiniai skirtumai nuo ankstesnio „Instructable“buvo tai, kad man reikėjo turėti 4, o ne 2 rankas (kitaip mano dukros būtų pasiskundusios), ir aš nusprendžiau pastatyti rėmą, o ne gauti seno laikrodžio, kad galėčiau jį pakartotinai naudoti. Taip buvo todėl, kad buvau susirūpinęs, kad esama laikrodžio dėklo erdvė bus problema, nes reikia sutalpinti 4 servo ir pan.

Tai užtruko daug ilgiau, nei tikėjausi, nors dažniausiai ten, kur susidūriau su kebliomis problemomis, kurios mane pribloškė ir kurios, atrodo, nebuvo įtrauktos į pradinį pranešimą. Nieko prieš originalų „Instructable“, kuris paprastai buvo puikus, tačiau praėjo keli metai ir pasikeitė dalykų versijos … ir tt Be to, buvimas JK reiškė, kad kai kurie „Imperial/Metric“elementai sukėlė daugiau iššūkių, nei tikėjausi.

Be to, nors man sekasi koduoti, fizinis laikrodžio kūrimas mane tikrai ištempė ir reikalavo papildomų įrankių, kurie taip pat šiek tiek sulėtino.

Pabaigoje įtraukiu skyrių „Dalykai, kuriuos daryčiau kitaip/geriau, jei tai daryčiau dar kartą …“

Priedai:

Vienas iš dalykų, kurie mane nustebino, buvo tai, kad brangūs komponentai buvo padaryti laikrodžio rodyklėmis. 4 rankos neabejotinai yra daug brangesnės nei 2. Nusprendžiau įdėti keletą išlaidų, kad turėtumėt idėją. Tai pirmas kartas, kai viską sudėjau ir, nepaisydamas priemonių, manau, išleidau apie 200 svarų. Plius kai kurie dalykai, kurių nenaudojau (ir neįtraukiau žemiau), taip pat „Pi“, taip pat maitinimo šaltinis, kurį abu jau turėjau.

Pi ir kt

  1. Raspberry Pi - neprisimenu, kiek jis iš pradžių kainavo, bet tai buvo 2B modelis. Manau, kad jei to dar neturite, greičiausiai tai darys net „Pi Zero“. Aš pridėjau „WiFi“raktą ir SD kortelę su „Raspbian“. Ir aš gulėjau sename „Android“telefono įkroviklyje.
  2. „Adafruit Servohat for Pi“- 16 svarų
  3. „Servohat“maitinimo šaltinis - man tikrai buvo sunku rasti, nes visos svetainės tiesiog nurodė „adafruit“svetainę, kuri tada akivaizdžiai rekomenduoja JAV maitinimo šaltinį. Tada supratau, kad turiu seną kintamos įtampos maitinimo šaltinį su keičiamais antgaliais, todėl aš jį naudojau. Tačiau JAV kaina yra 8 USD, taigi tai yra aikštelė.
  4. Dėklas „Pi“, kad galėčiau jį pritvirtinti prie laikrodžio rėmo. £ 5

Servo ir krumpliaračiai

Čia aš nurodau visų 4 kainą, todėl padalinkite, jei norite mažiau rankų (pridėjus tai yra ~ 40 svarų už ranką = 160 svarų: -o

  1. 4 x servos-naudojau tuos, kuriuos rekomendavo ppeters0502-rasta ebay už ~ 15 svarų sterlingų = 60 svarų-ieškojau šio teksto „GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-laipsnių "bet kartais jie buvo nepasiekiami
  2. 4 x žalvariniai vamzdeliai, kurie tiksliai tilpo vienas į kitą - ~ 3 £. Gavau po 1 iš 1/4 ", 7/32", 3/16 ", 5/32" = 11 svarų sterlingų
  3. 4 x spaustukai, prispaudžiami prie žalvario vamzdžių, kad būtų galima pritvirtinti krumpliaračius. ~ 7 £ už kiekvieną = 28 £. Aš juos gavau iš „ActiveRobots“, kurie reguliariai atlieka užsakymus iš „Servocity“JAV, todėl galite išvengti tarptautinių siuntų. Jie taip pat gali gauti viską, ką galite rasti pagrindinėje „Servocity“svetainėje JAV. Tai buvo labai patogu kitiems 2 elementams
  4. 4 x acetilo 0,770 "modelio krumpliaračiai, skirti montuoti ant prispaudimo stebulių. ~ 6 £ kiekviena = 24 £
  5. 4 x acetyl spline montuojamos acetilinės pavaros, skirtos montuoti ant servo. ~ 6,50 svaro sterlingų = 26 svarai
  6. 1 x šešiabriaunių veržlių pakuotė prie pritvirtintų krumpliaračių prie veržliarakčių = 2,60 £
  7. 1 x 7/64 colio šešiakampis raktas (šešiabriaunis raktas), nes viskas, kas atkeliauja iš JAV, yra imperinė, todėl šimtai jau turimų šešiabriaunių raktų yra nenaudingi = 1 svaras

Dėl fizinio sudėjimo

Čia dažniausiai naudojau iškirptus daiktus, apie kuriuos gulėjau

  1. 2 x faneros kvadratai „veidui“ir „nugarai“
  2. Tada nupjoviau 4x10 cm cilindrus nuo seno turėklų, kad galą prijungčiau prie veido
  3. Kai kurie blokai, skirti servo montavimui tinkamu poslinkiu - tik spygliuočių medienos išpjovos, kurias supjaustiau pagal dydį.
  4. Įvairūs varžtai. nuo labai mažo (norint pritvirtinti „Pi“dėklą prie rėmo) iki vidutinio (kad rėmas būtų pritvirtintas kartu)
  5. 0,75 mm minkšto plieno lakštas, apie 50 cm x 20 cm (rankoms išpjauti). Tai buvo vienintelis dalykas, kurį nusipirkau ~ 9 svarus iš „Wickes“

Įrankiai

Kai kuriuos daiktus turėjau, o kai kuriuos pasiskolinau ar nusipirkau

  1. Lituoklis + elektrinis lituoklis - skirtas jungtims pritvirtinti prie „Adafruit Hat & Pi“.
  2. Jigsaw - skirta iškirpti šiurkščią rankų formą
  3. Grąžtas. tiesiog įprastas 18V akumuliatorinis gręžtuvas
  4. Gręžimo antgaliai - Turėkite omenyje, kad jums reikės imperinių grąžtų, kad padarytumėte žalvariniams vamzdžiams tinkamas skyles. Pavyko šiek tiek pasiskolinti.
  5. pjūklas - žalvariniams vamzdžiams pjauti. Nedarykite to, ką aš padariau, ir išleiskite 3 svarus vamzdžių pjaustytuvui, jis veikia spaudžiant ir reiškia, kad vamzdžių vidus tampa šiek tiek mažesnis. todėl kito dydžio vamzdis netelpa
  6. Stalinis šlifuoklis - aš tokių neturėjau, bet draugas turėjo ir tai labai palengvino rankų formavimą. Iki tol aš tiesiog naudoju failus. Tik šiam projektui nepirkčiau, bet metalinėms rankoms tai buvo puiku.
  7. Aš nusipirkau keletą deimantinių taškų failų (labai mažų). naudinga rankoms ir vamzdeliams apie 15 svarų
  8. šiurkštus ir lygus švitrinis popierius
  9. kai kurie maži spaustukai laiko daiktus gręždami.
  10. yda dėl tos pačios priežasties.

1 veiksmas: nustatykite savo telefonus, kad jie išsiųstų vietą į jūsų „Pi“(I dalis „MQTT Broker“)

Šį bitą labai gerai apibūdina ppeters0502 savo puikiame „Weasley Clock Instructable“. Keista, nors galbūt atspindėjo skirtingus įgūdžius, jis pradėjo kurti, o tada perėjo prie programinės įrangos, aš tai padariau atvirkščiai. Taigi, aš pradėjau nuo telefono … palaukite, ne, aš nepradėjau, pradėjau nuo MQTT brokerio, kuris yra 6 žingsnis jo instrukcijoje. Aš praleisiu visus dalykus, kuriuos jis daro labai gerai, ir tiesiog įmesiu keletą bitų, kuriuos galėčiau pridėti. Aš nuėjau jo minėtą „CloudMQTT“maršrutą.

BET aš tai rašiau, patikrinau nuorodą į planus ir sužinojau, kad nemokamo plano nebėra! Jie tai atsiėmė dėl pagrįstų priežasčių. y., kad žmonės sukurs nemokamą egzempliorių ir tada niekada jo nenaudos. Nepastebėjau, nes dabartiniai atvejai gali tęstis. Taigi nesikeisiu. Tačiau tai daro instrukcijas šiek tiek nereikalingas. Atrodo, kad yra 3 variantai.

  1. Mokėkite 5 USD per mėnesį už „Cloud MQTT“(bet tai skamba brangiai už laikrodį nuolat).
  2. Eikite „Mosquitto on Pi“maršrutu, kaip aprašyta pirmoje instrukcijoje. Negaliu to komentuoti, bet gali būti geras pasirinkimas.
  3. Tiesiog „Google“„nemokamas MQTT debesų brokeris“ir atrodo, kad yra ir kitų.

Taigi, darant prielaidą, kad turite veikiantį MQTT tarpininką, jei jis yra kažkas panašaus į „CloudMQTT“, bus rodomas serveris, vartotojas, slaptažodis ir prievadas. Visa tai jums reikės norint nustatyti telefonus, kad brokeris atsiųstų jūsų buvimo vietą/judesius.

2 veiksmas: nustatykite savo telefonus, kad jie išsiųstų vietą į jūsų „Pi“(II dalis „Owntracks“)

Tai taip pat labai gerai aprašyta pradiniame „Instructable“7 veiksme („Android“), 8 („iOS“) ir 9 („Regionų nustatymas“).

Turėjau tik „iOS“įrenginius, todėl nebandžiau 7 veiksmo.

Ką pridėčiau prie šių nurodymų?

  1. Sąrankoje taip pat yra laukai TrackerID ir DeviceID. Tai turėtų turėti galimybę atpažinti jus savo šeimoje. Pvz. Turėjau juos atitinkamai kaip R ir RPhone. Tai reiškia, kad galite pereiti prie laikrodžio, kurį „Servo“, taigi ir kurią ranką pasukti.
  2. Regionai yra vietovių, kurias norite stebėti, pavadinimas.
  3. Kiekvienas regionas yra apibrėžtas pavadinimu, platuma, ilguma ir spinduliu.
  4. Kadangi norėjau, kad mano laikrodžio skiltyje būtų keletas vietų, aš naudoju pavadinimo susitarimą, kuris pasirodė labai naudingas. Galimi ir kiti metodai, bet man tai pavyko.

    • Pavyzdžiui, laikrodžio skyriuje „ŠEIMA“norėjau turėti savo tėvus ir brolius bei seseris ir žmonos tėvus bei brolius ir seseris. Todėl turėjau tokias vietas kaip „Šeima Tomas“, „Šeima Dikas“, Šeima Haris “ir„ Šeimos tėvai R. “. Tai reiškė, kad kitas etapas galėtų žinoti, ką perduoti Laikrodžiui.
    • Atminkite, kad žmonės gali turėti skirtingas vietas. Bet kol jie atitinka pavadinimo konvenciją, tai gerai. Pvz. mano darbas būtų kitoks nei mano žmonos darbo regionas ir kitaip vadinamas. bet kol jie abu pradeda „Darbą“, tol viskas gerai.
  5. Norite, kad Žemėlapių ekrane režimas būtų nustatytas kaip „Reikšmingas“. Tai reiškia, kad pranešimus (dažniausiai) gaunate tik įeidami į regionus arba išeidami iš jų. Atrodo, kad tai yra atnaujinta užrašo versija, pažymėta SVARBU: 8 veiksmo pabaigoje originalioje instrukcijoje.
  6. Kaip minėta originalioje „Instructable“programoje, „Google“žemėlapių naudojimas yra puikus būdas sužinoti, kur yra platus/ilgas. Man pasirodė efektyviau tai padaryti masiškai, sužinojus visus mano buvimo vietos platumus ir ilgus, tada įklijavau juos į „Notes“(„Mac“) ir sinchronizuojant debesį tai reiškė, kad jie stebuklingai pasirodė mano „iPhone“„Notes“ir galėčiau juos nukopijuoti/įklijuoti į „Owntracks“. Tai taip pat reiškė, kad galėjau nusiųsti failą į savo šeimos telefonus, ir mes visi turėjome nuoseklią vietą.
  7. Netoliese esančios vietos gali sukelti problemų. Mano brolis gyvena už 2 gatvių, ir iš pradžių mano telefonas vis galvojo, kad aš tuo pačiu metu būnu jo namuose ir namuose. Galų gale turėjau įdėti papildomos logikos į „Node Red“, kad tai pastebėčiau ir nekreipčiau dėmesio.

3 žingsnis: nustatykite „Raspberry Pi“

„Raspberry Pi“nustatymas
„Raspberry Pi“nustatymas

Taigi čia aš darau prielaidą, kad turite nustatytą bazinį Pi ir „Wi -Fi“. Aš paleidau „Raspbian“, bet tai neturėtų būti svarbu. Norėdami viską nustatyti, naudokite raspberrypi.org pateiktas instrukcijas.

Atkreipkite dėmesį, kad „Pi“turi prievadus, skirtus rodyti monitoriuje ir klaviatūroje/pelėje ir tt. Taigi atsakymas, kurį kažkas pasiūlė „Raspberry pi“svetainėje, manau, buvo nustatyti VNC ryšį. Tai leidžia prisijungti iš kito įrenginio prie „Pi“ir taip pat jį valdyti. Aš tai darau iš „Mac“, bet taip pat iš „iPad“. Patarčiau naudoti kažką su klaviatūra, kad būtų lengviau naudotis.

Aš ką tik pastebėjau, kad nuo tada, kai prisijungiau, jie palengvino … žr. Čia

Iš esmės jūs prisijungiate ir gaunate langą, kuris yra standartinė Pi sąsaja.

Taigi, turite nešiojamojo kompiuterio ar kompiuterio „Pi“langą.

Dabar jums reikia prijungti „Servos“.

Pirmiausia turite atlikti gana paprastą litavimą, kad adafruit skrybėlė būtų ant Pi. Tai šiek tiek keblu, bet nepaisant to, kad nebuvo litavęs 30 metų, tai buvo gerai. Kaip visada, radau naudingą „YouTube“vaizdo įrašą, kuris mane supažindino, o tai labai padėjo.

Nors skrybėlė gali paleisti 16 servo, man reikėjo tik 4, todėl vargau tik lituodamas pirmąjį 4 kaiščių rinkinį.

Tada servos tiesiog stumia ant kaiščių. Pirmiausia padariau vieną, kad patikrintų, ar iš tikrųjų galiu paleisti servo judėjimą.

Čia pataikiau į pirmąjį svarbų kelią. Turėjau labai paprastą „Python“scenarijų, kad galėčiau perkelti servus, ir tiesiog nieko neįvyko. Maždaug savaitę praleidau bandydamas naujus scenarijus ir pan., Tada ant skrybėlės pradėjo pasirodyti dūmai. Viską išjungęs patikrinau schemą. Tai buvo komponentas, apsaugantis nuo atvirkštinio poliškumo. Kadangi turėjau daugiasluoksnį, daugiapakopį maitinimo šaltinį, aš praleidau faktą, kad jūs galite turėti nuolatinės srovės išvestį abiem kryptimis, pakeisdami galiuką. Aš suklydau (50:50 tikimybė) ir tiesiog sudeginau savo pirmąją adafruit skrybėlę

:-(Taigi šiek tiek delsiau, nes nusipirkau naują, vėl litavau ir pataisiau antgalį. Daug geriau.

Tada man reikėjo išsiaiškinti, kaip perkelti servo į teisingą laikrodžio tašką. Tai bus padaryta 5 žingsnyje, bet aš padariau, nesukūręs tikro laikrodžio, - lengvai prisukti servo prie atsitiktinio medžio gabalo ir užklijuoti tam tikrą maskavimo juostą su rodykle, kaip parodyta paveikslėlyje. Tai labai vizualiai atsiliepė apie tai, ką kodavau.

4 žingsnis: Įdiekite raudoną mazgą (pranešimų gavimas iš „MQTT Server“į „Python“scenarijų)

Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)
Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)
Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)
Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)
Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)
Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)
Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)
Raudono mazgo diegimas (pranešimų gavimas iš MQTT serverio į „Python“scenarijų)

„Node-RED“yra programa, kurią įdiegiate „Pi“ir kuri suteikia jums vizualią sąsają (jūsų naršyklėje), kad gautumėte pranešimus iš savo „MQTT“serverio ir panaudotumėte ją, kad perduotumėte teisingą informaciją savo „python“scenarijui (aprašytas kitame žingsnyje (5 veiksmas). Aš beveik naudoju ppeters0502 nurodymus 5 veiksme. Šiuose srautuose yra logikos ir papildomos python logikos, ir jūs galite turėti daugiau ar mažiau kiekviename, priklausomai nuo jūsų pageidavimų. Iš esmės jums reikia tai padaryti Sekantis

  1. Turite priėmimo mazgus MQTT pranešimams - jie yra šviesiai violetiniai ir aš turėjau 1 vienam šeimos nariui
  2. Susiekite jį su servo, kurį norite perkelti (sunumeruoti 0, 1, 2, 3)
  3. Nustatykite, ar įeinate, ar paliekate spindulį „OwnTracks“
  4. Išsiaiškinkite, į kurią vietą turi būti nukreiptas tas servo įtaisas

    Buvo keletas pagrindinių taisyklių išimčių, kurias turėjau sukurti

  5. Teisingai nustatykite kampą

Aš turėjau „Node-RED“daryti pirmuosius 4 ir išlaikiau „Python“palyginti paprastą.

Čia galite pamatyti pagrindinį srautą, o visus srautus galima eksportuoti į čia pateiktą formatą, o tai reiškia, kad galite importuoti šį pagrindinį srautą į savo mazgą-RED ir tada prisitaikyti. Atminkite, kad pašalinau visus ryšius iš purpurinių mazgų, kad negalėtumėte pasiekti mano MQTT egzemplioriaus. Aš taip pat pašalinau visus bandymo mazgus, nes juose yra faktinių duomenų … gali tekti pakeisti šį failo tipą į srautus.json, kad galėtumėte importuoti į „Node-RED“, bet „Instructables“neleido man to įkelti.

Žalieji mazgai yra derinimo mazgai, kurie tada parodo išvestį derinimo lange dešinėje ekrano pusėje (gali tekti išplėsti - raskite rodyklę iki pusės dešinėje)

Pirmiausia reikia atlikti bitą „Tiesiogiai - tik derinimui“. Tai patikrina, ar galite gauti MQTT pranešimus ir pamatyti, kas juose yra. „json“yra tik labiau struktūruota pranešimų versija, leidžianti lengviau gauti duomenis. Esant šiam srautui, aš prijungiu violetinius mazgus viršuje kairėje prie json mazgo dešinėje.

Bandymo mazgai

Kai žinai, kaip žinutės atrodys tiesiogiai, pasidaro labai nuobodu, kai reikia išeiti iš namų, pakeliui ir atgal, kad tik sukeltum įvykį. Kai tai padarysite, galite nukopijuoti pranešimą į TEST aktyviklį, tada tiesiog spustelėkite jį, kad imituotumėte įvykį. Taip pat galite pakeisti duomenis ir apsimesti skirtingomis vietomis (įsitikinkite, kad jie tiksliai atitinka „Owntracks“vietovių pavadinimus).

Sraute matote, kad visi bandymo atvejai patenka į atskirą mazgą, o paskui į json mazgą. Tai tik ekrano sutvarkymui.

Negaliu pakankamai pabrėžti, kokie naudingi šie mazgai buvo ir tebėra.

Skambinimas Python

Taigi aš atsitrenkiau į kitą kelio bloką. Šiam reikėjo daug googleti forumuose ir tt. Mano srautas veiktų puikiai, bet nesukeltų mano python scenarijaus. Negalėjau to išspręsti, bet negailėsiu keiksmažodžių ir pan. Tiesiog norėdamas pasakyti, kad, kaip parodyta antroje ekrano kopijoje, turite nurodyti „python3“, kaip matyt, „Node-RED“daro prielaidą „python2“, nebent nurodote.

2 papildomos komplikacijos - tik prireikus

Tada turėjau nemažai iššūkių, kurių logika ne visai veikė. Pirma, „Owntracks“klostėsi kiek keistai ir, kadangi mano brolis gyvena už 2 gatvių, dažnai sakydavo, kad aš iš karto esu 2 vietose, arba nuolat persijungiau. Vienintelis būdas, kuriuo galėjau apsisukti, buvo pridėti sąlygą, kad būtų sustabdyti klaidingi teigiami rezultatai. Jei buvo teigiama, kad aš esu jo namuose, tada aš nukreipiau ir patikrinau tikrąją ilgumos/platumos pranešimą ir nutraukiau, jei sakoma, kad iš tikrųjų esu namuose.

Kita problema buvo ta, kad vaikščiodamas su savo šunimi negalėjau gauti gero spindulio. Paprastai vaikštau toje pačioje vietovėje, todėl čia pasakiau: „Jei įžengiu į šią zoną, tikrai vedžioju šunį ir būsiu tol, kol grįšiu namo“. tai reiškė, kad jis neperėjo į užeigą, kurią pravažiuoju namo, ar į įvairias kitas vietines vietas, kurios gali sukelti vaikščiojant su šunimis. Norėdami tai padaryti, turėjau nustatyti kai kuriuos nuolatinius kontekstinius kintamuosius (ieškokite jų „Node-RED“. Žr. Ekrano kopiją. Šie kintamieji išlieka tol, kol „Node-RED“nebus paleistas iš naujo, todėl galiu pasakyti, jei vaikštinėjate su šunimi, nustatykite kontekstinį kintamąjį į „šunį“. Tada ignoruokite NIEKĄ, nebent aš „įeinu“į namus.

Paskutinė ekrano kopija yra tikroji mano paskutinė eiga, su visomis išimtimis, tik jūsų interesams.

5 veiksmas: iš tikrųjų perkelkite servos su „Python“ant „Pi“

Trumpas nukrypimas į servus. Aš nieko nežinojau apie servus, bet internete yra daug informacijos. Aš naudojau nepertraukiamus servus, kurie gali sklandžiai pasukti 360 laipsnių kampu. Kita pagrindinė rūšis yra žingsninės servos, kurios juda gabalėliais (žingsniais) ir, matyt, pakyla tik iki maždaug 180 laipsnių (čia akivaizdžiai nenaudinga). Stepper servo privalumas yra tai, kad galite tiesiog pasukti kampą ir jie juda į tą tašką ir sustoja. Visi mano rasti dokumentai sakė, kad nenutrūkstamos servo sistemos veikia, kai joms suteikiamas greitis, ir laikas palaikyti tą greitį (pvz., Visas greitis 1 s) ir jos patenka ten, kur baigiasi, tačiau tai yra jų pradžios taško atžvilgiu. Po daugybės bandymų man nepavyko to padaryti, tačiau, naudodamas bandymų stendą, sužinojau, kad servai nuolat grįžta į tą patį tašką, esant tam pačiam kampui. Tai daug lengviau, todėl aš tai padariau. Gali būti keletas minusų, apie kuriuos nežinau, bet man tai tinka. Tačiau atminkite, kad kiekviena servo sistema yra unikali, todėl kiekvienai servo įrangai turite turėti unikalų kampų rinkinį. Man buvo lengviausia turėti „kalibravimo“„python“scenarijų, kuriame galėčiau paeiliui nustatyti servo kampus ir patobulinti juos, kol jie visi atrodys teisingai. Tai pirmasis pridedamas scenarijus. Jūs tiesiog pakomentuojate servo, kurio nebandote, susikoncentruokite ties vienu ir tada koreguokite vertes, kaip jums reikia. PASTABA: bandymų stendo kalibravimas yra paprastas, grubus ir paruoštas. Surinkus laikrodį, turėsite iš naujo kalibruoti, nes pavaros ir tt viską pakeis. Tada antrasis scenarijus yra gana paprastas. Tai daro taip

  1. Importuokite kelias bibliotekas
  2. perkelkite kintamuosius iš „Node-RED“į scenarijaus kintamuosius
  3. priskiria kalibravimo scenarijaus nustatytus kampus prie laikrodžio vietų.
  4. patikrinkite, ar vieta yra sąraše, o jei ne, pereikite prie „Pavojaus“
  5. parašykite, kas buvo padaryta žurnalo faile
  6. perkelkite reikiamą servo į reikiamą kampą
  7. Sustabdykite vieną servo „zvimbimą“*

3 dalykai, į kuriuos reikia atkreipti dėmesį.

Žurnalo failas yra labai naudingas derinant. Tai reiškia, kad galite pažvelgti į pranešimo „Node-RED“derinimą ir tada pamatyti, kas nutiko scenarijuje. išvestis atrodo taip. Pirmieji 3 - aš vedžioju šunį pasivaikščioti, o tada 1 vaikas išeina iš namų ir atvyksta į mokyklą. Atkreipkite dėmesį, kad patikrintumėte „Pi“laiką. Pagal numatytuosius nustatymus jis gali būti UTC ir neleisti keisti vasaros/žiemos laiko. Pvz. žemiau nurodytas laikas yra 1 valanda.

2020-12-07_05: 36: 03 Kas = 0, lok = keliauja, detalė = namai, kampas = 10, indeksas = 8

2020-12-07_05: 36: 04 Kas = 0, lok = šuo, detalė = Astonsas, kampas = 86,5, indeksas = 10

2020-12-07_06: 07: 49 Kas = 0, loc = Home, detalė = įvedimas, kampas = 75, indeksas = 0

2020-12-07_06: 23: 53 Kas = 2, lok = Keliauja, detalė = Namai, kampas = 19, indeksas = 8

2020-12-07_06: 30: 48 Kas = 2, lok = mokykla, detalė = N, kampas = 60,5, indeksas = 2

Servo dūzgimas

Pasibaigus scenarijui, vienas iš „Servo“(0) nuolat šurmuliavo. Kaip galite įsivaizduoti, tai labai erzina mūsų virtuvėje. Kažkur radau temą, kurioje buvo paminėtas servo kampo nustatymas į „Nėra“, kuris kažkaip nustato, kad jis neveikia. Tai puikiai pavyko ir tai galima pamatyti scenarijuje pabaigoje.

Laikas

Turėkite omenyje, kaip žemai ranka šluoja visą parą. Scenarijuje galite pamatyti, kad yra eilutė time.sleep (4) prieš pat nustatant servo, kad nustotų zvimbti. Taip yra todėl, kad prieš nustatydami tuščiosios eigos režimą, turite leisti rankai pasiekti paskirties vietą. Priešingu atveju jis tiesiog sustoja. Tai taip pat svarbu kalibruojant, nes scenarijuje atliekate kelis judesius. Aš norėčiau, kad jis pajudėtų į visas 12 vietų paeiliui, kad galėčiau jas dar kartą patikrinti. bet jums reikia šiek tiek laiko tarp jų.

6 veiksmas: programinės įrangos užbaigimas - telefonai į servos

Sukūrę bandymų stendą ir sukūrę scenarijus, galite jį šiek tiek paleisti „tiesiogiai“ir pamatyti, kaip jis veikia realiu laiku. Čia radau išimtis, kurias turėjau pridėti prie „Node-RED“srauto.

Jei norite sutelkti dėmesį į vieną, galite lengvai atsijungti ir prijungti šeimos narius „Node-RED“sraute. Pvz., Jei du sukelia problemų, bet norite išspręsti vieną. Priešingu atveju atminkite, kad ir toliau gausite pranešimus iš visų prijungtų telefonų.

Paminėjau šunų vedžiojimo problemą ir tai, kad mano brolio namai yra visai netoli. Turėjau dar 2 iššūkius.

Pirma, vietos kitose vietose. Mano žmona studijavo Londono koledže. Norėjome, kad tai būtų įregistruota kaip „mokykla“, tačiau ji taip pat yra „Londone“. Taigi mums reikėjo iš naujo panaudoti kontekstą ir pasakyti, kad jei išeini iš tos „mokyklos“, pereik prie „Londono“, o ne į „Keliones“.

Antra, lenktynių sąlygos. Kaip minėta, mano brolio namas yra už 2 gatvių, taip pat netoli mūsų mėgstamo užeigos/restorano. Tai reiškia, kad kartais gaunami 2 signalai vienu metu arba labai arti vienas kito. Tai gali sudaryti „lenktynių sąlygą“, kai jūs gausite skirtingus rezultatus, priklausomai nuo to, kuris logika bus pasiektas greičiausiai, o tai lems nenuspėjamus rezultatus. Kad tai įveikčiau, padariau, kad visi „įvedami“pranešimai turėtų 1 sekundės vėlavimą logikoje, o tai, atrodo, išspręs problemą. Galbūt yra geresnių, elegantiškesnių būdų tai išspręsti, bet atrodė, kad tai veikia.

7 žingsnis: Fizinio laikrodžio kūrimas - I dalis - „Servos“ir ašis

Fizinio laikrodžio kūrimas - I dalis. Servai ir ašis
Fizinio laikrodžio kūrimas - I dalis. Servai ir ašis
Fizinio laikrodžio kūrimas - I dalis. Servai ir ašis
Fizinio laikrodžio kūrimas - I dalis. Servai ir ašis
Fizinio laikrodžio kūrimas - I dalis. Servai ir ašis
Fizinio laikrodžio kūrimas - I dalis. Servai ir ašis

Dabar truputis, dėl kurio mažiausiai pasitikėjau, todėl palikau tai paskutinei. Norėjau tinkamo dydžio veido ir lengvos konstrukcijos. Aš taip pat jaudinausi fiziškai, kad aplink centrinę ašį gausiu 2 servo servus. Tai reiškė, kad, trumpai pažvelgęs į „ebay“, ar nėra senų laikrodžių, kaip nurodyta instrukcijoje, kurios laikiausi, nusprendžiau suteikti sau daugiau galimybių ją pasigaminti.

  • Gavau 2 didelius (~ 30 cm) faneros kvadratus, kuriuos turėjau gulėti (apie 9 mm storio).
  • Tada aš supjaustiau seną turėklą į 4x10 cm pločio dalis ir prisukiau priekines ir galines plokštes.
  • Pažymėjęs centrinę skylę, išgręžiau ją tokio paties dydžio, kaip ir didžiausias žalvarinis vamzdis.
  • Tada aš dažiau jį įprastais baltais blizgiais dažais.
  • Po tam tikrų eksperimentų supratau, kad greičiausiai negalėsiu gauti 4 servų aplink tą pačią ašį, jei jie visi būtų pritvirtinti prie galinės (arba priekinės) plokštės. Taigi kiekvienoje lėkštėje turėjau turėti 3 + 1 arba 2 + 2. Aš baigiau 3 gale ir 1 priekyje.
  • Ant popieriaus lapo nubraižiau reikalingus poslinkius, o tada supjaustiau žalvarinius vamzdelius. Atkreipkite dėmesį, kad storiausias vamzdis yra trumpiausias, o ploniausias turi būti iki galinės plokštės. (Tiesą sakant, mažiausią įdėjau į skylę, kurią iš dalies gręžiau galinėje plokštėje, bet ne iki galo, kad ašis nejudėtų atgal).
  • Vamzdžiams aš nusipirkau vamzdžių pjaustytuvą, tačiau juos supjaustant naudojamas slėgis, o tai reiškia, kad mažesnio vamzdelio negalite įeiti į vidų. Taigi aš panaudojau metalo pjūklą ir tada turėjau padaryti nemažai dokumentų, kad jie pradėtų veikti. Čia deimantiniai taškai buvo neįkainojami.
  • Tada aš suderinau diagramą su faktiniais spaustukų ir krumpliaračių poslinkiais *.
  • Kai turėjau poslinkius, žinojau, kaip „aukštai“padaryti blokus, skirtus montuoti servo. Aš sulaužiau porą blokų, pjaudamas juos per plonus, taip pat išgręžiau skylę, kad laidas išeitų.
  • Tada atėjo netikėta dalis, kur dėti blokus, kad jie tiksliai atitiktų ašies krumpliaračius. Aš įsukau vieną bloką ir tada galėjau pasukti servo ašį, o tada įsukti antrą bloką į kitą servo galą. Aš taip pat pastebėjau, kad reikia šiek tiek iškirpti kai kuriuos blokus, kad nebūtų užstrigę kiti krumpliaračiai. Tai užtruko gana ilgai.
  • Kai viską padariau, gavau savo aviečių pi dėklą, išgręžiau jame dvi skyles ir prisukau prie priekinės plokštės. Tada galėčiau pridėti Pi, uždaryti priekines ir galines plokšteles (prijungęs servo prie pi (prisiminęs, kuris servo buvo skirtas kuriam šeimos nariui) ir pasukti į rankas …

* Čia radau didžiausią problemą, kurią dar turiu visiškai išspręsti. Žalvariniai vamzdžiai buvo 1/4 ", 7/32", 3/16 ", 5/32". Tačiau spaustukai buvo metriniai (išskyrus vieną, kuris buvo 1/4 colio). Vamzdžius paverčiant metriniais, jie buvo 6,35 mm, 5,56 mm, 4,76 mm 3,97 mm. Likę spaustukai buvo 4 mm, 5 mm ir 6 mm skersmens. Mažiausias 2 ir didžiausi yra gerai. bet aišku, kad 0,44 mm yra per daug gnybto kelionės, todėl turėjau jį padengti popieriumi. Aš tai bandžiau keletą kartų ir kurį laiką veikia gerai, o tada vėl atsilaisvina. Taigi antras pagal dydį ranka neveikia tinkamai. Vis dėlto tai buvo gerai maždaug 6 mėnesius, todėl laikas, praleistas tai darant gerai, buvo gerai investuotas laikas. Bet jei tai daryčiau dar kartą, galbūt padidinčiau arba sumažinčiau 1 dydžiu ir turėčiau spragą geriau prispausti prie vamzdžio. pvz., 9/32 ", 1/4", (tarpas), 3/16 ", 5/32"

8 žingsnis: Laikrodžio rodyklės

Laikrodžio rodyklės
Laikrodžio rodyklės
Laikrodžio rodyklės
Laikrodžio rodyklės
Laikrodžio rodyklės
Laikrodžio rodyklės

Aš nusprendžiau pasirinkti plieno lakštą, nes norėjau kažko standaus, bet mažiau tikėtino, kad jį padarysiu. Be to, plonas reiškė, kad 4 rankos buvo mažiau problema.

  • Pirmiausia nubraižiau figūrą.
  • Tada aš perkėliau jį į plieną ant tam tikros maskavimo juostos.
  • Tada aš labai nepatyręs juos išpjoviau dėlionės pagalba. Jie buvo ir yra skirtingi, bet man tai netrukdo.
  • Tada draugas pasiūlė pasiskolinti jo stalo malūnėlį, kad juos suformuočiau, ir tai buvo puiku. labai rekomenduojama. Priešingu atveju paraiška užtrunka ilgai.
  • Dar reikėjo šiek tiek padengti, o po to nušlifuoti, kad nebūtų aštrių briaunų ir būtų graži apdaila.
  • Aš turėjau gręžti skyles, kad atitiktų atitinkamus žalvarinius vamzdžius (patikrinkite ne nupjautus vamzdžius, o ne pritvirtintus prie laikrodžio).
  • Radau, kad skylėms reikia šiek tiek padengti, kad jos patektų ant vamzdžių, tačiau vieną kartą jos buvo sandarios ir nereikėjo klijų. Išimtis buvo priekinė ranka, kurią norėjau turėti „viršelį“. Taigi, išgręžęs skylę ir pasiekęs reikiamo dydžio, išpjoviau (dažniausiai) apvalų plieno gabalą ir priklijavau prie priekio. tai galite pamatyti paskutinėje nuotraukoje. Kartais priekinei rankai reikia užtepti klijų, tačiau po kelių klaidingų paleidimų rankos veikia tikrai gerai.
  • Buvau atmetusi nuotraukų idėją (nes vaikai greitai pasiskųstų dėl mūsų datų nuotraukų), todėl nusprendžiau piešti ant inicialų akriliniais dažais.

9 žingsnis: Užbaikite

Baigta!
Baigta!
Baigta!
Baigta!

Viskas veikia tikrai gražiai. Rankos kartais šiek tiek nukrypsta, priklausomai nuo to, iš kur jos atsirado, bet iš tikrųjų tai nesvarbu, nes kiekviena vieta yra ne tik linija, bet ir dalis.

Kartais, keista, mano telefonas atsisako pripažinti, kad esu namuose. Aš aiškiai esu „Owntracks“spinduliu, kai rodomas žemėlapyje, ir net kai tikslumas yra geras … Aš neįsivaizduoju, kodėl. neatrodo, kad tai vargina likusią mano šeimą. bet komplektacija ta pati. Tai reiškia, kad „Owntracks“niekada nesiunčia žinutės ir aš įstrigiu „Kelionėse“. Bet paprastai tai galų gale susitvarko.

Tai buvo labai naudinga turėti mūsų virtuvėje, daugiausia žinoti, kada mergaitės eina namo iš mokyklos ar savo draugų namų, taigi kada jiems paruošti maisto/arbatos.

Dar kartą dėkoju @ppeters0502 už puikias instrukcijas, kurių reikia laikytis. Tikimės, kad tai gali ką nors pridėti prie laikrodžio kūrimo 4 rankomis.

10 veiksmas: dalykai, kuriuos išmokau, ir ar elgčiausi geriau/kitaip, jei turėčiau tai padaryti dar kartą

  • Fiziniams pastatams reikia bandymų ir klaidų. Jokiu būdu negalima nuspėti kosmoso problemų, tereikia pasinerti ir pabandyti.
  • Kalbant apie kodą, „Google“problemos yra būtinos
  • Pradėkite elementariai ir kurkite. Servo ant bandymo stendo medžio reiškė, kad didžiąją jo dalį galėčiau dirbti be fizinės konstrukcijos
  • Aš galėjau nukirpti rankas lazeriu CNC staklėmis. Bet aš nežinojau, kur yra vietinis, ir man patinka, kaip pasirodė lengvasis plienas (jis buvo pigus, o šlifuoklis labai palengvino)
  • žingsninis variklis gali būti įmanomas, jei pavarą naudosite 360 posūkiams. bet tada gali tekti turėti servo per arti centrinės ašies
  • Yra dviejų tipų servo („Futaba“ir „HiTech“). Įsitikinkite, kad tai patikrinote, nes juose yra skirtingas dantų skaičius. Ir iš pradžių pirkau netinkamus …
  • Nejunkite skrybėlės su netinkamu poliškumu;-)
  • „Google“ir „Stack Overflow“yra jūsų draugai, kai įstrigo. Bet reikia naudoti gerus paieškos terminus …
  • Bandymų stendas iš tikrųjų yra būdas daug lengviau gauti paprastesnę, pigesnę versiją. Dauguma komplikacijų kyla dėl to, kad rankos turi suktis aplink tą pačią ašį. Jei dėl to padarysite kompromisą, viskas bus daug lengviau. Ir aš manau, kad 4 gali būti vienos ašies riba, nebent velenas tampa daug ilgesnis. Manau, kad jūs galite turėti 3 ant priekinės plokštės ir tris ant galinės plokštės, jei velenas būtų ilgesnis …

11 veiksmas: galimi būsimi plėtiniai…?

Turėjau idėjų apie tolesnius veiksmus.

  1. Norėčiau pakeisti seną „iPad“kaip laikrodžio rodyklę. y., sukurti skaitmeninį laikrodį. Galbūt naršyklė arba programa. Kadangi fizinis laikrodis iš esmės yra be pilietybės (t. Y. Jis nežino, kur šiuo metu yra, išskyrus tai, kad rankos yra fizinėje padėtyje), man reikia nuolatinio duomenų kaupimo. „Node Red“gali rašyti į vietinę failų sistemą, todėl tikriausiai taip daryčiau.
  2. Jei tai padarysiu, norėčiau tai pamatyti iš namų. Bet tada mums tikrai reikia sutvarkyti saugumą. Kadangi prieiga tame pačiame „Wi -Fi“tinkle yra viena, prieiga iš interneto yra kita. Šiuo metu aš neįsivaizduoju, kaip tai geriausia padaryti, bet įtariu, kad MQTT prenumerata, veikianti kitu keliu, galėtų veikti (pi skelbia dabartinę būseną, o išoriniai įrenginiai ją prenumeruoja) …?
  3. Labai norėčiau vienos rankos filmui „Užsienyje“. bet tai gali būti sudėtinga „OwnTracks“požiūriu. Gal tiesiog galima naudoti ilgą/latą kartu su didžiuliais spinduliais?

Rekomenduojamas: