Mündəricat:

Weasley' Yer Saatı 4 Əllə: 11 Addım (Şəkillərlə)
Weasley' Yer Saatı 4 Əllə: 11 Addım (Şəkillərlə)

Video: Weasley' Yer Saatı 4 Əllə: 11 Addım (Şəkillərlə)

Video: Weasley' Yer Saatı 4 Əllə: 11 Addım (Şəkillərlə)
Video: HARRY POTTER STUDIO TOUR LONDON | COMPLETE WALK THROUGH 2024, Iyul
Anonim
'Weasley' 4 Əlli Yer Saatı
'Weasley' 4 Əlli Yer Saatı

Beləliklə, bir müddətdir təpiklənən bir Raspberry Pi ilə, ən yaxşı şəkildə istifadə etməyimə imkan verən gözəl bir layihə tapmaq istədim. Ppeters0502 tərəfindən bu möhtəşəm Təlim Edilə bilən Öz Weasley Yer Saatına rast gəldim və sınamağın yaxşı olacağını düşündüm.

Saat əsasən saat əqrəblərini çevirmək üçün servoları idarə edən bir Raspberry Pi -dən ibarətdir. Harry Potter kitablarında/filmlərində Weasley ailənin evində olduğu kimi, hər ailənin öz əli var. Hər əl o ailə üzvünün indiki yerini göstərir. Saat, ailənin cib telefonlarından əvvəlcədən təyin edilmiş bir radiusa girəndə və ya çıxanda mesajlar alaraq buna nail olur.

Əvvəlki Təlimatçının əsas fərqləri, 2 yox, 4 əlimə ehtiyacım olması idi (əks halda qızlarım şikayət edərdi) və yenidən istifadə etmək üçün köhnə bir saat almamaq üçün çərçivəni də qurmağa qərar verdim. Bunun səbəbi, 4 servo və s.

Gözlədiyimdən çox daha uzun çəkdi, baxmayaraq ki, çox vaxt məni əsəbiləşdirən və orijinal yazı ilə əhatə olunmayan görünən problemlərlə rastlaşdım. Ümumiyyətlə əla olan orijinal Instructable əleyhinə heç bir şey yox idi, amma bir neçə il keçdi və hər şeyin versiyaları dəyişdi… və s. Həmçinin İngiltərədə olmaq, İmperator/Metrik elementlərin bəzilərinin gözlədiyimdən daha çox çətinliklərə səbəb olduğu anlamına gəlirdi.

Həm də kodlaşdırma qaydasında olduğum halda, saatın fiziki quruluşu məni mütləq uzadırdı və bəzi əlavə vasitələrə ehtiyac duyurdu ki, bu da məni bir qədər yavaşlatdı.

Sonda "Yenidən etsəydim fərqli/daha yaxşı edəcəyim şeylər …" mövzusunda bir bölmə daxil edəcəyəm.

Təchizat:

Məni təəccübləndirən şeylərdən biri də bahalı komponentlərin saat əli ilə edilməsi idi. 4 əl mütləq 2 -dən qat -qat bahadır. İlk dəfə hamısını əlavə etdim və alətlərə məhəl qoymadan, təxminən 200 funt xərclədiyimi düşünürəm. Əlavə olaraq istifadə etmədiyim (və aşağıda daxil edilməyən) bəzi şeylər, üstəlik Pi, üstəlik hər ikisində də mövcud olan enerji təchizatı.

Pi və s

  1. Raspberry Pi - nə qədər başa gəldiyini xatırlaya bilmirəm, ancaq Model 2B idi. Düşünürəm ki, əgər onsuz da biriniz yoxdursa, bəlkə də Pi Zero belə edər. Raspbian ilə bir wifi dongle və SD kart əlavə etmişdim. Ətrafımda köhnə bir Android telefon şarj cihazı vardı.
  2. Pi üçün Adafruit Servohat - 16 funt
  3. Servohat üçün enerji təchizatı - Bu, həqiqətən də bütün veb saytlarının adafruit saytına işarə etdiyi üçün tapmaq istədim, açıq şəkildə ABŞ -ın enerji təchizatını tövsiyə edir. Sonra başa düşdüm ki, dəyişdirilə bilən ipuçları olan köhnə dəyişən bir gərginlik təchizatı var və buna görə də istifadə etdim. Ancaq ABŞ -ın qiyməti 8 dollardır, buna görə top meydançası budur.
  4. Pi üçün qutu, sonra onu saat çərçivəsinə bağlaya bilərəm. 5 funt sterlinq

Servo və dişlilər

Burada hamısının qiymətini qeyd edirəm, buna görə də daha az əl istəsən bölün (Əlavə etmək ~ ƏLƏ ~ 40 £ = 160 £: -o

  1. 4 x Servo-ppeters0502 tərəfindən tövsiyə olunanlardan istifadə etdim-hər biri ~ 15 funt-sterlinq üçün ebayda tapıldı-"GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-dərəcə "Ancaq bəzən onlar əlçatmaz idi
  2. Bir -birinə tam uyğun olan 4 x pirinç borular - hər biri ~ 3 funt. Hər biri 1/4 ", 7/32", 3/16 ", 5/32" = 11 funt sterlinq aldım
  3. Pirinç borulara dişliləri bağlamağa imkan verən 4 x sıxac. ~ Hər biri 7 funt sterlinq = 28 funt. Onları ABŞ -da Servocity -dən müntəzəm sifariş verən ActiveRobots -dan aldım ki, bu da beynəlxalq yük daşımalarının qarşısını almağa imkan verir. Servocity -nin əsas ABŞ saytında tapa biləcəyiniz başqa bir şeyi də ala bilərlər. Bu, sonrakı 2 maddə üçün çox lazımlı idi
  4. Sıxma yuvalarına montaj üçün 4 x asetil 0.770 "model dişli. ~ Hər biri 6 funt sterlinq = 24 funt
  5. Servolara montaj üçün 4 x asetil spline quraşdırılmış asetil dişli. Hər biri ~ 6,50 £ = 26 funt
  6. 1 x altıbucaqlı qoz -fındıq bağlayan dişlilərə = 2.60 funt sterlinq
  7. 1 x 7/64 "altıbucaqlı açar (allen açarı), çünki ABŞ -dan gələn hər şey imperiya xarakteri daşıyır, buna görə də əlimdə olan yüzlərlə allen açarı yararsızdır = 1 funt sterlinq

Fiziki quruluş üçün

Burada daha çox yalan danışdığım şeylərin kəsilməsini istifadə etdim

  1. 'Üz' və 'arxa' lövhə üçün 2 x kvadrat kontrplak
  2. Arxanı üzə bağlamaq üçün 4x10 sm ölçüdə olan silindrləri əlimdəki köhnə lövhədən kəsdim.
  3. Servoları düzgün ofsetə bağlamaq üçün bəzi bloklar - ölçüsünə görə kəsdiyim yumşaq ağac kəsikləri.
  4. Müxtəlif vintlər. çox kiçikdən (Pi qutusunu çərçivəyə bağlamaq üçün) orta səviyyəyə (çərçivəni birlikdə bağlamaq üçün)
  5. Təxminən 50 sm x 20 sm (əlləri kəsmək üçün) 0,75 mm yumşaq polad təbəqə. Wickes -dən ~ 9 funt sterlinq aldığım tək şey bu idi

Alətlər

Sahib olduğum bəzi şeylər və ya götürdüyüm şeylər

  1. Lehimləmə Dəmir + elektrik lehim - bağlayıcıları Adafruit Hat & Pi -yə bağlamaq üçün.
  2. Yapboz - əllərin kobud formasını kəsmək üçün
  3. Qazma. yalnız normal bir simsiz 18V qazma
  4. Matkap ucları - Pirinç borulara uyğun olan deliklər düzəltmək üçün imperator qazma uclarına ehtiyacınız olacağını unutmayın. Bir az borc götürməyi bacardım.
  5. testere - pirinç boruları kəsmək üçün. Etdiyimi etmə və boru kəsiciyə 3 funt xərcləmə, təzyiqlə işləyir və boruların iç hissəsi bir qədər kiçilir. beləliklə, sonrakı ölçülü aşağı boru ona sığmır
  6. Tezgah öğütücü - bunlardan heç biri yox idi, amma bir dostum var idi və əllərin şəklini çox asanlaşdırdı. O vaxta qədər yalnız fayllardan istifadə edirdim. Yalnız bu layihə üçün satın almazdım, amma metal əllər üçün əla idi.
  7. Müxtəlif almaz nöqtəli fayllar aldım (çox kiçik). 15 funt ətrafında əllər və borular üçün faydalıdır
  8. kobud və hamar zımpara
  9. bəzi kiçik sıxaclar qazma zamanı şeyləri yerində saxlayır.
  10. eyni səbəbdən bir köməkçi.

Addım 1: Telefonlarınızı Qurduqları Yerləri Pi -yə göndərmək üçün (I hissə MQTT Broker)

Bu bit, əla Weasley Clock Instructable kitabında ppeters0502 tərəfindən çox yaxşı təsvir edilmişdir. Qəribədir, bəlkə də fərqli bacarıq sahələrini əks etdirsə də, quruculuqla başladı və sonra proqrama keçdi, mən bunu başqa cür etdim. Beləliklə, telefonla başladım … asın, yox, yox, MQTT brokerindən başladım, bu da onun Təlimatında 6 -cı addımdır. Çox yaxşı etdiyi bütün bitləri atıb əlavə edə biləcəyim bəzi bitləri atacağam. Onun dediyi CloudMQTT marşrutu ilə getdim.

AMA bunu yazarkən planların bağlantısını yoxladım və artıq pulsuz bir plan olmadığını gördüm! Ağlabatan əsas kimi göründüyü üçün geri çəkdilər. yəni insanlar pulsuz bir nümunə quracaqlar və sonra heç vaxt istifadə etməyəcəklər. İndiki instansiyalar davam edə biləcəyi üçün fərq etmədim. Buna görə dəyişməyəcəyəm. Ancaq təlimatları bir az artıq edir. Görünür 3 variant var.

  1. Cloud MQTT üçün ayda 5 dollar ödəyin (lakin bu, davamlı olaraq saat üçün baha başa gəlir).
  2. İlk Təlimatda təsvir edildiyi kimi, Mosquitto on Pi marşrutu ilə gedin. Bunu şərh edə bilmərəm, amma yaxşı bir seçim ola bilər.
  3. Sadəcə google "pulsuz MQTT bulud brokeri" və başqalarının olduğu görünür.

Beləliklə, işləyən bir MQTT brokerinizin olduğu fərziyyəsinə görə, əgər CloudMQTT kimi bir şeydirsə, onda bir Server, İstifadəçi, Şifrə və Liman görünəcək. Brokerə yerlərinizi/hərəkətlərinizi göndərmək üçün telefonlarınızı qurmaq üçün bunların hamısına ehtiyacınız olacaq.

Addım 2: Telefonlarınızı Qurduqları Yerləri Pi -yə Göndərmək üçün (II hissə öz izləri)

Bu, orijinal Təlimatlandırmada, 7 (Android), 8 (iOS) və 9 (Regionların qurulması) da çox yaxşı əhatə olunmuşdur.

Yalnız iOS cihazlarım var idi, buna görə də 7 -ci addımı sınamadım.

Bu təlimatlara nə əlavə edərdim?

  1. Quraşdırmada TrackerID və DeviceID sahələri də var. Ailənizdə sizi tanıya biləcəyiniz üçün bunlara sahib olmalısınız. Məsələn, Onları sırasıyla R və RPhone olaraq aldım. Bu o deməkdir ki, hansı Servo və buna görə də hansı əli çevirməli olduğunuz saata keçə bilərsiniz.
  2. Bölgələr, izləmək istədiyiniz yerlərin adıdır.
  3. Hər bir bölgə bir Ad, Bir Enlem, Bir Boylam və Bir Yarıçapla təyin olunur.
  4. Saatımın bir bölməsi olaraq bir çox yerə sahib olmaq istədiyim üçün çox faydalı olduğu ortaya çıxan bir adlandırma konvensiyasından istifadə etdim. Başqa üsullar mümkündür, amma bu mənim üçün işləmişdir.

    • Məsələn, AİLƏ saatı üçün valideynlərimin, bacılarımın və həyat yoldaşımın valideynlərinin və bacılarının olmasını istəyirdim. Buna görə də "Family Tom", "Family Dick", Family Harry "və" Family FamilyR "kimi yerlərim var idi. Bu, növbəti mərhələnin Saata nə keçəcəyini bilməsi demək idi.
    • İnsanların fərqli yerlərə sahib ola biləcəyini unutmayın. Ancaq adlandırma konvensiyasına uyğun olduqları müddətcə yaxşıdır. Məsələn, işim həyat yoldaşımın iş bölgəsindən fərqli olacaq və fərqli adlandırılacaq. amma ikisi də "İş" ə başladıqları müddətcə hər şey qaydasındadır.
  5. Rejimin Xəritələr ekranında 'Əhəmiyyətli' olaraq təyin olunmasını istəyirsiniz. Bu o deməkdir ki, (əsasən) yalnız bölgələrə daxil olanda və ya çıxanda mesaj alırsan. Bu, Vacib olaraq qeyd olunan qeydin yenilənmiş versiyası kimi görünür: Orijinal Təlimatdakı 8 -ci addımın sonunda.
  6. Orijinal Təlimat kitabında qeyd edildiyi kimi, Google Xəritələrdən istifadə etmək bir yerin Lat/Uzunluğunu tapmaq üçün əla bir yoldur. Bunu toplu şəkildə etməyimi, yerimin bütün Lat/Uzunluqlarını öyrənərək daha səmərəli hesab etdim, sonra onları Notes-a yapışdırdım (Mac-da) və bulud sinxronizasiyası ilə sehrli şəkildə iPhone-da göründükləri mənasına gəldi. Qeydlərdə və onları Owntracks -ə kopyalayıb yapışdıra bilərəm. Bu, eyni zamanda, faylı ailəmin telefonlarına göndərə biləcəyimi və hamımızın tutarlı yerlərimiz olduğunu ifadə etdi.
  7. Bir -birinə yaxın olan yerlər problem yarada bilər. Qardaşım 2 küçə uzaqda yaşayır və əvvəlcə telefonum eyni anda həm evinin, həm də evinin bölgəsində olduğumu düşünürdü. Nəhayət, baş verənləri tutmaq və görməməzlikdən gəlmək üçün Node Red -ə əlavə məntiq qoymalı oldum.

Addım 3: Raspberry Pi qurmaq

Raspberry Pi qurmaq
Raspberry Pi qurmaq

Beləliklə, burada Wi -Fi -da qurulmuş bir baza Pi olduğunu düşünürəm. Mən Raspbian ilə məşğul idim, amma fərq etməməlidir. Hər şeyi qurmaq üçün raspberrypi.org saytındakı təlimatları istifadə edin.

Bir Pi bir monitor və klaviatura/siçan və s. Göstərmək üçün portlara sahib olduğunu unutmayın, ancaq saat içərisində bir dəfə olduğu üçün heç bir şey istəmirsiniz. Raspberry pi veb saytında kiminsə təklif etdiyi cavab, düşünürəm ki, VNC bağlantısı qurmaq idi. Bu, başqa bir cihazdan Pi -yə qoşulmağa və onu idarə etməyə imkan verir. Bunu Mac -dan edirəm, amma iPad -dən də etmişəm. İstifadəni asanlaşdırmaq üçün klaviatura ilə bir şey istifadə etməyi məsləhət görürəm.

Bağlandığımdan bəri daha asanlaşdırdıqlarını gördüm … buraya baxın

Əsasən standart Pi interfeysi olan bir pəncərə bağlayırsınız.

Beləliklə, dizüstü kompüterinizdən və ya kompüterinizdən Pi üçün bir pəncərəniz var.

İndi Servoları bağlamalısınız.

Adafruit şapkasını Pi üzərinə çıxarmaq üçün əvvəlcə kifayət qədər əsas lehimləmə etməlisiniz. Bir az qəribədir, amma 30 ildir lehimləməsə də, yaxşı idi. Həmişə olduğu kimi, mənə kömək etmək üçün faydalı bir YouTube videosu tapdım və bu da çox kömək etdi.

Şapka 16 servo işlədə bilsə də, yalnız 4 -ə ehtiyacım var idi və buna görə də yalnız 4 pinli ilk dəsti lehimləməkdən narahat oldum.

Sonra servoları sancaqlar üzərinə itələyin. Əslində servonun hərəkət etməsini təmin edə biləcəyimi yoxlamaq üçün əvvəlcə etdim.

İlk böyük maneəni vurduğum yer budur. Servoları hərəkət etdirmək üçün çox sadə bir python skriptim var idi və sözün əsl mənasında heç nə olmadı. Təxminən bir həftə yeni skriptlər və s. Sınamağa başladım və sonra papaqda tüstü görünməyə başladı. Hər şeyi söndürüb, sxemini yoxladım. Ters polariteye qarşı qoruyan bir komponent idi. Çox uclu, çox gərginlikli bir güc mənbəyimə sahib olduğum üçün ucunu dəyişdirərək DC çıxışının hər iki tərəfə gedə biləcəyini qaçırmışdım. Səhv etdim (şans 50:50) və ilk adafruit şapkamı yandırdım

:-(Yenisini aldığımda, yenidən lehimləndiyində və ucunu düzəldəndə bir az gecikmə oldu. Daha yaxşı.

Sonra servoları saatın düzgün nöqtəsinə necə köçürəcəyimi öyrənməliydim. Bu, 5 -ci addımda olacaq, amma əslində saatı qurmadan etdiyim şey, servoları təsadüfi bir ağac parçasına yüngülcə vidalamaq və şəkildəki kimi ox ilə bir neçə maskeləmə lenti yapışdırmaq idi. Bu, kodlaşdırdığım şeyə çox əyani rəy verdi.

Addım 4: Qırmızı Node Quraşdırma (MQTT Serverdən Python Scriptinizə Mesajların Alınması)

Qırmızı Node Quraşdırma (MQTT Serverindən Python Scriptinizə Mesajların Alınması)
Qırmızı Node Quraşdırma (MQTT Serverindən Python Scriptinizə Mesajların Alınması)
Qırmızı Node Quraşdırma (MQTT Serverindən Python Scriptinizə Mesajların Alınması)
Qırmızı Node Quraşdırma (MQTT Serverindən Python Scriptinizə Mesajların Alınması)
Qırmızı Node Quraşdırma (MQTT Serverindən Python Scriptinizə Mesajların Alınması)
Qırmızı Node Quraşdırma (MQTT Serverindən Python Scriptinizə Mesajların Alınması)
Qırmızı Node Quraşdırılması (MQTT Serverindən Python Scriptinizə Mesajların Alınması)
Qırmızı Node Quraşdırılması (MQTT Serverindən Python Scriptinizə Mesajların Alınması)

Node-RED, Pi-də quraşdırdığınız bir proqramdır ki, sizə MQTT Serverinizdən mesaj qəbul etmək və düzgün məlumatı python skriptinizə ötürmək üçün istifadə etmək üçün vizual bir interfeys (brauzerinizdə) verir (növbəti addımda (Adım 5). Adım 5 -də ppeters0502 tərəfindən verilən təlimatları çox istifadə etdim. Bu axınlarda məntiq var və pythonda əlavə məntiq var və seçiminizə görə hər birində az və ya çox ola bilər. Əsasən etməlisiniz. növbəti

  1. MQTT mesajları üçün qəbul qovşaqlarına sahib olun - bunlar açıq bənövşəyi rəngdədir və hər ailə üzvünə 1 ədəd düşmüşdür
  2. Bunu hərəkət etmək istədiyiniz servoya xəritələyin (nömrələnmiş 0, 1, 2, 3)
  3. OwnTracks -də bir radiusa girib -çıxmadığınızı müəyyənləşdirin
  4. Servonun hansı yerə işarə etməli olduğunu müəyyənləşdirin

    Daxil etməyim lazım olan əsas qaydalara bəzi istisnalar var idi

  5. Bucağı düzgün təyin edin

Node-RED-in ilk 4-ü etdi və Pythonu nisbətən sadə saxladım.

Burada əsas axını görə bilərsiniz və bütün axınlar buradakı formata ixrac edilə bilər, yəni bu əsas axını Node-RED-ə idxal edib sonra uyğunlaşdıra bilərsiniz. Diqqət yetirin ki, bənövşəyi qovşaqlardan bütün əlaqələri kəsmişəm ki, mənim MQTT nümunəmə daxil ola bilməyəsiniz. Faktiki məlumatlar olduğu üçün bütün test qovşaqlarını da sildim … Node-RED-ə idxal etmək üçün bu fayl növünü flows.json olaraq dəyişdirmək lazım ola bilər, ancaq Instructables bunu yükləməyimə icazə vermədi.

Yaşıl düyünlər, sonra ekranın sağındakı hata ayıklama pəncərəsində çıxışı göstərən ayıklama qovşaqlarıdır (genişləndirilməsi lazım ola bilər - sağdakı oxu yarıya qədər tapın)

Ediləcək ilk iş "Canlı - yalnız ayıklama üçün" bitidir. Bu, MQTT mesajlarını ala biləcəyinizi və onlarda nə olduğunu görə biləcəyinizi yoxlayır. json, məlumatları daha asan çıxarmağa imkan verən mesajların daha quruluşlu bir versiyasıdır. Bu axında, canlı olaraq, sol üstdəki bənövşəyi düyünləri sağdakı json düyünə bağlayıram.

Test Nodları

Mesajların canlı olaraq necə görünəcəyini bildikdən sonra, sadəcə bir hadisəni tetiklemek üçün evinizdən çıxmaq, yolda və geriyə getmək çox darıxdırıcı olur. Bunu etdikdən sonra mesajı TEST tətikçisinə kopyalaya və sonra hadisəni simulyasiya etmək üçün üzərinə vura bilərsiniz. Fərqli yerlər kimi görünmək üçün məlumatları da dəyişə bilərsiniz (onların Owntracks -dəki yer adlarına tam uyğun gəldiyindən əmin olun).

Sınaq hallarının hamısının ayrı bir qovluğa girdiyini və sonra bunun json qovşağına girdiyini görə bilərsiniz. Bu sırf ekranı səliqəyə salmaq üçündür.

Bu qovşaqların nə qədər faydalı olduğunu vurğulaya bilmərəm və indi də var.

Pythona zəng edin

Sonra növbəti maneəni vurdum. Bu, forumlarda və s. Çoxlu googling aldı, axınım mükəmməl işləyəcək, amma python skriptimi işə salmayacaq. Bunu həll edə bilmədim, ancaq söyüş və s. Bağışlayacağam. İkinci ekran görüntüsündə vurğulandığı kimi, qeyd etmədiyiniz təqdirdə Node-RED python2-ni ehtiva etdiyi üçün python3 göstərməlisiniz.

2 əlavə komplikasiya - yalnız lazım olduqda

Məntiqin tam işləmədiyi bir sıra çətinliklər yaşadım. Birincisi, Owntracks bir az qəribə getdi və qardaşım 2 küçə uzaqda yaşadığı üçün tez -tez bir anda 2 yerdə olduğumu və ya aralarında keçid etdiyimi söylədi. Əldə edə biləcəyim yeganə yol, yanlış pozitivləri dayandırmaq üçün bir şərt əlavə etmək idi. Evində olduğumu iddia edirsə, mesajı oxudum və əslində Boylam/Enlem yoxladım və həqiqətən evdə olduğumu söylədikdə onu ləğv etdim.

Başqa bir problem, itimi gəzərkən həqiqətən yaxşı bir radius əldə edə bilməməyim idi. Adətən eyni ərazidə gəzirəm, ona görə də "bu əraziyə girsəm, mütləq iti gəzirəm və evə çatana qədər də olacağam" dedim. Bu, evə gedərkən yola çıxdığım meyxanaya və ya it gəzərkən tetikleyebilecek digər yerli yerlərə keçməyəcəyimi ifadə etdi. Bunu etmək üçün bəzi davamlı Kontekst dəyişənləri qurmalı oldum (onları Node-RED-də axtarın. Ekran görüntüsünə baxın. Bu dəyişənlər Node-RED yenidən başlayana qədər davam edir və buna görə də deyə bilərəm ki, əgər it gəzirsə, Kontekst Dəyişənini təyin edin. "Köpək" ə. Sonra Evə "Girmədiyim" halda başqa heç bir şeyi görməzdən gəlin.

Son ekran görüntüsü, istisnalar istisna olmaqla, yalnız sizin marağınız üçün faktiki son axınımdan biridir.

Addım 5: Əslində Pi üzərində Python ilə Servoları Hərəkət edin

Qısa servolara yönləndirmə. Servolar haqqında heç nə bilmirdim, amma internetdə çoxlu məlumatlar var. İstifadə etdiklərim 360 dərəcəni çevirə bilən davamlı servolardır. Digər əsas növlər, hissələrlə (addımlarla) hərəkət edən və yəqin ki, təxminən 180 dərəcəyə qədər yüksələn step servolardır (burada faydalı deyil). Step servoların üstünlüyü ondadır ki, sadəcə bucağa qoya bilərsiniz və onlar o nöqtəyə hərəkət edir və dayanırlar. Tapdığım bütün sənədlər, davamlı servolara bir sürət verilərək işlədiyini və bu sürəti qorumaq üçün vaxt verdiyini (məsələn, 1 saniyə üçün tam sürət) və sona çatdıqları yerdə bitdiklərini, ancaq başlanğıc nöqtələrinə nisbətən olduğunu söylədi. Çox cəhdlərdən sonra bunu işə sala bilmədim, amma test skamyasından istifadə edərək servoların eyni açı ilə ardıcıl olaraq eyni nöqtəyə qayıtdığını öyrəndim. Hansı daha asandır, buna görə də bunu etdim. Bilmədiyim bir mənfi cəhət də ola bilər, amma mənim üçün işləyir. Ancaq unutmayın ki, hər bir servo unikaldır və buna görə də hər bir servo üçün özünəməxsus açılar dəstinə malik olmalısınız. Servoları açılara təyin edə biləcəyim, hamısı düzgün görünənə qədər təmizləyə biləcəyim bir 'kalibrləmə' python skriptinə sahib olmağı ən asan tapdım. Bu əlavə olunan ilk skriptdir. Yalnız sınamadığınız servoları şərh edirsiniz, birinə diqqət yetirirsiniz və sonra dəyərləri ehtiyacınıza uyğun olaraq düzəldirsiniz. Qeyd: test tezgahı üçün kalibrləmə sadə və kobud və hazırdır. Saat toplandıqda yenidən kalibr etməlisiniz, çünki dişli çarxlar hər şeyi dəyişəcək. Sonra ikinci ssenari olduqca əsasdır. Aşağıdakıları edir

  1. Bir neçə kitabxana idxal edin
  2. Node-RED-dən gələn dəyişənləri skriptdəki dəyişənlərə köçürün
  3. kalibrləmə skriptinin təyin etdiyi bucaqları saatlardakı yerlərə xəritələyir.
  4. yerin siyahıda tapıldığını yoxlayın və yoxsa "Təhlükə" yə keçin
  5. bir qeyd sənədinə nə edildiyini yazın
  6. tələb olunan servoyu lazımi açıya köçürün
  7. Bir servonun 'uğultusunu' dayandırın *

Qeyd etmək üçün 3 şey.

Günlük faylı ayıklama üçün çox faydalıdır. Bir mesajın Node-RED ayıklamasına baxa və sonra skriptdə nə baş verdiyini görə biləcəyiniz deməkdir. çıxış belə görünür. İlk 3 -ü iti gəzməyə aparıram, sonra 1 -ci uşaq evdən çıxıb məktəbə gəlir. Pi üzərindəki vaxtı yoxlamaq üçün qeyd edin. Varsayılan olaraq UTC ola bilər və yaz/qış vaxtının dəyişməsinə icazə verə bilməz. Məsələn, aşağıda göstərilən vaxtlar 1 saatdır.

2020-12-07_05: 36: 03 Kim = 0, lok = Səyahət, detal = Ev, Açı = 10, indeks = 8

2020-12-07_05: 36: 04 Kim = 0, lok = Köpək, detal = Astons, Açı = 86.5, indeks = 10

2020-12-07_06: 07: 49 Kim = 0, lok = Ev, detal = giriş, Bucaq = 75, indeks = 0

2020-12-07_06: 23: 53 Kim = 2, lok = Səyahət, detal = Ev, Açı = 19, indeks = 8

2020-12-07_06: 30: 48 Kim = 2, lok = Məktəb, detal = N, Açı = 60.5, indeks = 2

Servo səs-küy

Skript bitdikdən sonra Servodan biri (0) səs -küy salmağa davam etdi. Təsəvvür etdiyiniz kimi, bu, mətbəximizdə olması çox əsəbidir. Servo bucağını boş olaraq qoyan 'heç biri' olaraq təyin etdiyim bir yerdə bir mövzu tapdım. Bu, mükəmməl işlədi və sonunda ssenaridə görünə bilər.

Vaxtlar

Bir əlin gecə -gündüz süpürmək üçün nə qədər aşağı olduğunu unutmayın. Ssenaridə servonun səs -küyünü dayandırmaq üçün təyin etməzdən əvvəl time.sleep (4) xəttinin olduğunu görə bilərsiniz. Boş yerə qoymadan əvvəl əlin təyinat yerinə çatmasına icazə verməlisiniz. Əks təqdirdə sadəcə dayanır. Bu, kalibrləmə zamanı da vacibdir, çünki skript daxilində birdən çox hərəkət edirsiniz. Hamısını yenidən yoxlaya bilməyim üçün bütün 12 yerə hərəkət etməyi işə salırdım. amma arada bir az vaxta ehtiyac var.

Addım 6: Proqramı sona çatdırmaq - Servolara Telefonlar

Test skamyası və skriptlər qurulduqdan sonra onu bir qədər 'canlı' işlədə və real vaxtda necə işlədiyini görə bilərsiniz. Node-RED axınıma əlavə etməyim lazım olan istisnaları burada tapdım.

Birinə konsentrə olmaq istəyirsinizsə, Node-RED axınında ailə üzvlərini asanlıqla ayıra və bağlaya bilərsiniz. Məsələn, ikisi problem yaradırsa, ancaq bir anda həll etmək istəyirsən. Əks təqdirdə, bağlı telefonlardan mesaj almağa davam edəcəyinizi unutmayın.

İt gəzintisi və qardaşımın evinin olduqca yaxın olması ilə bağlı problemdən danışdım. Başqa 2 problemim var idi.

Birincisi, digər yerlərdəki yerlər. Həyat yoldaşım Londonda bir kollecdə oxuyurdu. Bunun "Məktəb" olaraq qeydiyyatdan keçməsini istədik, amma eyni zamanda "London" da. Buna görə kontekstdən yenidən istifadə etməliyik ki, əgər bu "Məktəbi" tərk edirsinizsə, "Səyahət etmək" ə deyil, "London" a keçin.

İkincisi, yarış şərtləri. Qeyd edildiyi kimi, qardaşımın evi 2 küçə uzaqlıqda və eyni zamanda ən sevdiyimiz pub/restoranın yaxınlığındadır. Bu o deməkdir ki, bəzən eyni anda və ya bir -birinə çox yaxın 2 siqnal alınır. Bu, gözlənilməz nəticələrə gətirib çıxaran məntiqdən ən sürətli keçdiyinizə görə fərqli nəticələr əldə edə biləcəyiniz bir 'yarış vəziyyəti' qura bilər. Bunun qarşısını almaq üçün bütün 'giriş' mesajlarının problemi həll etmək üçün görünən məntiqdə 1 saniyə gecikməsinə səbəb oldum. Bunu həll etməyin daha yaxşı, daha zərif yolları ola bilər, amma işə yarayırdı.

Addım 7: Fiziki Saatın Qurulması - I hissə - Servolar və Aks

Fiziki Saat qurmaq - I hissə - Servolar və Aks
Fiziki Saat qurmaq - I hissə - Servolar və Aks
Fiziki Saat qurmaq - I hissə - Servolar və Aks
Fiziki Saat qurmaq - I hissə - Servolar və Aks
Fiziki Saat qurmaq - I hissə - Servolar və Aks
Fiziki Saat qurmaq - I hissə - Servolar və Aks

İndi ən az güvəndiyim şey, buna görə də sona qədər qoydum. Düzgün bir ölçü və asan bir quruluş istədim. Fiziki olaraq mərkəzi oxun ətrafında 2 servo almaqdan da əsəbləşdim. Bu o demək idi ki, izlədiyim təlimatdakı kimi köhnə saatlar üçün ebay -a qısaca baxaraq, özüm quraraq özümə daha çox şans verməyə qərar verdim.

  • Ətrafımda uzanan (təxminən 9 mm qalınlığında) 2 böyük (~ 30 sm) kontrplak kvadratım var.
  • Sonra köhnə bir bannister rayını 4x10 sm ölçüdə kəsdim, ön və arxa plakaları vidaladım.
  • Orta çuxuru qeyd edərək, ən böyük pirinç borusu ilə eyni ölçüdə qazdım.
  • Sonra adi ağ rəngli boya ilə boyadım.
  • Bir az təcrübədən sonra başa düşdüm ki, hamısı arxa (və ya ön) lövhəyə yapışdırılsa, eyni oxun ətrafında 4 servo ala bilmərəm. Buna görə hər bir boşqabda ya 3 + 1 ya da 2 + 2 olması lazım idi. Arxada 3, öndə 1 ilə sona çatdım.
  • Bir kağız parçasında tələb olunan ofsetləri hazırladım və sonra pirinç borularını uyğunlaşdırmaq üçün kəsdim. Unutmayın ki, ən qalın boru ən qısadır və ən incə arxa plakaya qədər getməlidir. (Əslində ən kiçik olanı arxa plakada qismən qazdığım bir çuxura gömdüm, amma oxun geriyə doğru hərəkət etməməsi üçün bütün yolu keçmədim).
  • Borular üçün bir boru kəsici aldım, amma bu, onları kəsmək üçün təzyiqdən istifadə edir və bu, içərisindəki kiçik borunu ala bilməyəcəyiniz deməkdir. Deməli, bir mişar maşını istifadə etdim və sonra işə düzəltmək üçün kifayət qədər sənəd verməliydim. Burada almaz nöqtə sənədləri əvəzolunmaz idi.
  • Sonra diaqramı qısqaclar və dişlər üçün əsl ofsetlərə uyğunlaşdırdım *.
  • Ofsetləri əldə etdikdən sonra, blokları servolara bağlamaq üçün nə qədər yüksək olduğunu bilirdim. Bir neçə bloku çox incə gördüm və telin çıxması üçün çuxur qazdım.
  • Sonra blokların harada yerləşdiriləcəyinin fiddly hissəsi gəldi ki, oxdakı dişlilərə tam uyğun gəlsinlər. Bir bloka vidaladım və sonra oxu qarşılamaq üçün servoyu döndərdim və sonra servonun digər ucunu ikinci blokda vidaladım. Digər dişləri bağlamamaq üçün bəzi bloklardan bir az kəsməli olduğumu da gördüm. Çox uzun çəkdi.
  • Bütün bunları etdikdən sonra moruq pi çantamı aldım, içərisində iki delik açdım və ön lövhəyə vidaladım. Sonra Pi daxil edə bilərəm, ön və arxa lövhələri bağlaya bilərəm (servoları pi -yə bağlayaraq (hansı servonun hansı ailə üzvü üçün olduğunu xatırlayıram) və əllərə dönə bilərəm …

* Burada hələ tam həll etmədiyim ən böyük problemi tapdım. Pirinç borular 1/4 ", 7/32", 3/16 ", 5/32" idi. Amma sıxaclar metrik idi (1/4 "olan biri istisna olmaqla). Borular metrikə çevrilərkən 6.35mm, 5.56mm, 4.76mm 3.97mm idi. Qalan sıxaclar 4mm, 5mm və 6mm delikli idi. Ən kiçik 2 və Ən böyüyü yaxşıdır, amma aydındır ki, 0.44mm sıxac üçün çox səyahətdir, buna görə kağızla örtmək məcburiyyətində qaldım. Bunu bir neçə dəfə sınadım və bir müddət yaxşı işləyir və sonra yenidən boşalır. Əl düzgün işləmir. Təxminən 6 ay yaxşı idi, buna görə də bunu yaxşı etmək üçün sərf olunan vaxt yaxşı sərmayə qoyulmuş vaxt idi. Amma bunu təkrar etsəydim, sınamaq və almaq üçün bir boşluqla 1 ölçü yuxarı və ya aşağı gedə bilərdim. boruya daha yaxşı bir sıxac. məsələn, 9/32 ", 1/4", (boşluq), 3/16 ", 5/32"

Addım 8: Saat Əlləri

Saat Əlləri
Saat Əlləri
Saat Əlləri
Saat Əlləri
Saat Əlləri
Saat Əlləri

Sərt bir şey istədiyim üçün polad poladdan istifadə etməyə qərar verdim, amma hazırlayarkən yıxılma ehtimalı az idi. Arıq olmaq da 4 əlin daha az problem olduğu anlamına gəlirdi.

  • Əvvəlcə bir şəkil çəkdim.
  • Sonra onu maskalanan lentin üstündəki polada köçürdüm.
  • Sonra çox təcrübəsiz olaraq onları yapbozumla kəsdim. Hamısı fərqli idi və fərqlidir, amma buna əhəmiyyət vermirəm.
  • Sonra bir dostum onları düzəltmək üçün dəzgah dəyirmanını götürməyimi təklif etdi və bu əla oldu. çox tövsiyə olunur. Əks təqdirdə sənədləşmə uzun illər çəkir.
  • Hələ bir az iş görülməli idi, sonra iti kənarların və gözəl bir bitirmənin olmaması üçün zımpara.
  • Müvafiq pirinç borulara uyğun olan deliklər qazmalı oldum (yoxlamaq üçün kəsilmiş borulardan istifadə edin, saata quraşdırılmışları deyil).
  • Tapdım ki, çuxurların borulara yerləşdirilməsi üçün bir az doldurulmasına ehtiyac var, amma bir dəfə sıx idi və yapışqan lazım deyildi. İstisna 'örtük' almaq istədiyim ön əlim idi. Deliyi qazıb lazımi ölçüdə əldə etdikdən sonra (əsasən) yuvarlaq bir polad parçasını kəsdim və ön tərəfə yapışdırdım. bunu son şəkildən görə bilərsiniz. Bəzən ön əldən yapışdırmaq üçün bir az yapışqan lazım olur, ancaq bir neçə dəfə yalan başladıqdan sonra əllər həqiqətən yaxşı işləyir.
  • Şəkil ideyasını rədd etmişdim (çünki uşaqlar bizim tarixi fotoşəkillərimizdən tez şikayət edərdilər) və buna görə də akril boya ilə hərflərin baş hərflərini çəkməyə qərar verdim.

Addım 9: Tamamlayın

Tamamlayın!
Tamamlayın!
Tamamlayın!
Tamamlayın!

Hamısı həqiqətən gözəl işləyir. Əllər bəzən haradan gəldiklərindən asılı olaraq bir az uzaqlaşırlar, amma əslində heç bir əhəmiyyəti yoxdur, çünki hər bir yer yalnız bir xətt deyil.

Bəzən qəribə bir şəkildə telefonum evdə olduğumu qəbul etməkdən imtina edir. Xəritədə göstərildikdə və hətta dəqiqliyi yaxşı olsa belə, Owntracks radiusundayam … Bunun səbəbini bilmirəm. ailənin qalan hissəsini narahat etmir. amma quruluş eynidir. Bu o deməkdir ki, Owntracks heç vaxt mesaj göndərmir və mən "Səyahət" lə sıxışıram. Ancaq ümumiyyətlə sonda özünü düzəldir.

Mətbəximizdə olmaq, çox vaxt qızların məktəbdən evə gedəcəyini və ya dostlarının evlərinə getdiyini və buna görə də onlara nə vaxt yemək/çay hazırlamağı bilmək çox faydalıdır.

Yenə böyük bir şapka ucu @ppeters0502-ə böyük təlimatlara riayət etmək üçün. İnşallah bunlar 4 əli ilə bir saat düzəltməklə bir şey əlavə edə bilər.

Addım 10: Yenidən etməli olsam öyrəndiyim və daha yaxşı/fərqli bir şey edərdim

  • Fiziki quruluşların sınaq və səhvlərə ehtiyacı var. Kosmos problemlərini proqnozlaşdırmaq üçün heç bir yol yoxdur, sadəcə dalmaq və cəhd etmək lazımdır.
  • Kod üçün googling problemləri vacibdir
  • Əsas işə başlayın və qurun. Test tezgahının taxtasındakı servolar, fiziki quruluş olmadan çoxunu işlədə biləcəyimi ifadə etdi
  • Bir CNC maşınında əllərimi lazerlə kəsə bilərdim. Ancaq yerli olanın harada olduğunu bilmirdim və yumşaq poladın necə işlədiyini sevirəm (ucuz idi və dəzgah dəyirmanı daha asanlaşdırdı)
  • 360 dönmə əldə etmək üçün dişli mexanizmindən istifadə etsəniz, bir step motor mümkün ola bilər. ancaq servoların mərkəzi oxa çox yaxın olması lazım ola bilər
  • 2 növ servo var (Futaba & HiTech). Bunu yoxladığınızdan əmin olun, çünki spline -da fərqli sayda diş var. Və əvvəlcə səhv olanları aldım …
  • Şapkanı yanlış polarite ilə bağlamayın;-)
  • Google və Stack Overflow sıxışdıqda dostlarınızdır. Ancaq yaxşı axtarış terminlərindən istifadə etməlisiniz …
  • Test skamyası, daha sadə, daha ucuz bir versiyanı daha asan əldə edə biləcəyiniz bir yoldur. Quruluşun ən çətinliyi, əllərin eyni ox ətrafında fırlanmasından irəli gəlir. Bununla güzəştə gedirsənsə, onda hər şey daha asandır. Və düşünürəm ki, mil çox uzanmadıqca 4 tək oxun limiti ola bilər. Güman edə bilərəm ki, mil daha uzun olsaydı, ön plakada 3, arxa plakada üçü olardı …

Addım 11: Mümkün Gələcək Uzantılar …?

Növbəti addımlarla bağlı fikirlərim belədir.

  1. Saat üzü olaraq köhnə bir iPad-i yenidən təyin etmək istərdim. yəni rəqəmsal saat düzəlt. Bəlkə də brauzer əsaslı və ya bir tətbiq. Fiziki bir saat əslində vətəndaşlığı olmadığı üçün (yəni əllərin fiziki mövqedə olması istisna olmaqla, hazırda harada olduğunu bilmir) davamlı bir məlumat anbarına sahib olmalıyam. Qırmızı Node yerli fayl sisteminə yaza bilər, buna görə də bunu edərdim.
  2. Bunu etsəydim, evin kənarından görmək istəyərdim. Ancaq sonra həqiqətən təhlükəsizliyi həll etməliyik. Eyni wifi şəbəkəsinə daxil olmaq bir şeydir, İnternetdən giriş başqa şeydir. Hal -hazırda bunun ən yaxşı şəkildə necə ediləcəyi barədə heç bir fikrim yoxdur, amma başqa bir şəkildə gedən bir MQTT abunəçiliyinin işləyə biləcəyindən şübhələnirəm (pi mövcud vəziyyəti dərc edir və xarici cihazlar buna abunə olur) …?
  3. Bir tərəfdən 'Xaricdə' filmini çox istərdim. lakin bu, OwnTracks baxımından kompleks ola bilər. Bəlkə yalnız böyük/yarı radiuslarla birlikdə uzun/lat istifadə edə bilərsən?

Tövsiyə: