İçindekiler:

4 Elli 'Weasley' Konum Saati: 11 Adım (Resimli)
4 Elli 'Weasley' Konum Saati: 11 Adım (Resimli)

Video: 4 Elli 'Weasley' Konum Saati: 11 Adım (Resimli)

Video: 4 Elli 'Weasley' Konum Saati: 11 Adım (Resimli)
Video: WEDNESDAY ADDAMS 2 DİLA KENT 2024, Temmuz
Anonim
4 Elli 'Weasley' Konum Saati
4 Elli 'Weasley' Konum Saati

Bu yüzden, bir süredir ortalıkta dolaşan bir Raspberry Pi ile, onu en iyi şekilde kullanmamı sağlayacak güzel bir proje bulmak istedim. ppeters0502 tarafından hazırlanan bu harika Eğitilebilir Kendi Weasley Konum Saatinizi Oluşturun ile karşılaştım ve denemenin iyi olacağını düşündüm.

Saat temel olarak, saatin ibrelerini döndürmek için servoları kontrol eden bir Raspberry Pi'den oluşur. Harry Potter kitaplarında/filmlerinde Weasley ailesinin evinde olduğu gibi, her aile üyesinin kendi eli vardır. Her bir el, o aile üyesinin mevcut konumunu gösterir. Saat bunu, ailenin cep telefonlarından önceden tanımlanmış bir yarıçapa girdiklerinde veya çıktıklarında mesaj alarak başarır.

Önceki Eğitilebilir Tablodan temel farklar, 2 değil 4 ele ihtiyacım olmasıydı (aksi takdirde kızlarım şikayet ederdi) ve yeniden kullanmak için eski bir saat almamak için çerçeveyi de oluşturmaya karar verdim. Bunun nedeni, mevcut bir saat kasasında, 4 servo vb.

Beklediğimden çok daha uzun sürdü, ancak çoğunlukla beni şaşırtan ve orijinal gönderide yer almayan küçük sorunlarla karşılaştım. Genel olarak harika olan orijinal Eğitilebilir'e karşı hiçbir şey yok, ancak birkaç yıl geçti ve bazı şeylerin sürümleri değişti… vb. Ayrıca, Birleşik Krallık'ta olmak, bazı İmparatorluk/Metrik öğelerinin beklediğimden daha fazla zorluğa neden olduğu anlamına geliyordu.

Ayrıca, kodlamada iyi olsam da, saatin fiziksel yapısı beni kesinlikle gerdi ve bazı ek araçlar gerektirdi, bu da beni biraz yavaşlattı.

Sonunda "Yeniden yapsaydım daha farklı/daha iyi yapacağım şeyler…" üzerine bir bölüm ekleyeceğim.

Gereçler:

Bana çarpan şeylerden biri, pahalı bileşenlerin saatin ibreleriyle yapılmasıydı. 4 el kesinlikle 2'den çok daha pahalıdır. Bir fikriniz olsun diye biraz maliyet koymaya karar verdim. İlk defa hepsini ekledim ve araçları bir kenara bırakırsak, sanırım yaklaşık 200 sterlin harcadım. Artı kullanmadığım bazı şeyler (ve aşağıya eklemedim) artı Pi ve her ikisi de zaten sahip olduğum güç kaynağı.

Pi vb

  1. Raspberry Pi - başlangıçta ne kadara mal olduğunu hatırlayamıyorum ama bir Model 2B'ydi. Bence zaten bir tane yoksa, o zaman bir Pi Zero bile muhtemelen yapardı. Raspbian ile bir wifi dongle ve SD kart eklemiştim. Ve etrafta yatan eski bir Android telefon şarj cihazım vardı.
  2. Pi için Adafruit Servohat - £ 16
  3. Servohat için güç kaynağı - Bunu bulmakta gerçekten zorlandım çünkü tüm web siteleri adafruit sitesine işaret etti ve o zaman açıkça bir ABD güç kaynağı öneriyor. Sonra, değiştirilebilir uçlara sahip eski bir değişken voltaj kaynağım olduğunu fark ettim ve onu kullandım. Ama ABD'deki 8 dolar, bu yüzden basketbol sahası bu.
  4. Pi için kılıf, böylece onu saat çerçevesine bağlayabilirim. £ 5

Servolar ve dişliler

Burada 4'ünün de fiyatını veriyorum, bu yüzden daha az el istiyorsanız bölün (Toplayarak, EL BAŞINA ~40£ = 160£:-o

  1. 4 x Servo - ppeters0502 tarafından önerilenleri kullandım - ebay'de her biri ~ 15 £ = 60 £ bulundu - Aşağıdaki metni aradım "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "ama bazen müsait olmuyorlardı
  2. Tam olarak iç içe geçen 4 x pirinç boru - her biri ~ 3 £. 1/4", 7/32", 3/16", 5/32" = 11 £
  3. Dişlileri takmanıza izin vermek için pirinç borulara kelepçelenen 4 x kelepçe. ~ Her biri 7 sterlin = 28 sterlin. Bunları ABD'deki Servocity'den düzenli siparişler veren ActiveRobot'lardan aldım ve uluslararası nakliyeden kaçınmanıza izin verdim. Ayrıca Servocity'nin ana ABD sitesinde bulabileceğiniz her şeyi alabilirler. Bu, sonraki 2 öğe için çok kullanışlı oldu
  4. Sıkıştırma göbeklerine montaj için 4 x asetil 0,770" desen dişli. ~ Her biri 6 £ = 24 £
  5. Servolara montaj için 4 x asetil kama monteli asetil dişli. ~ Her biri 6,50 £ = 26 £
  6. 1 adet altıgen somun paketi, bağlı dişlilere ve sıkma somunlarına = 2,60 £
  7. 1 x 7/64" altıgen anahtar (alyen anahtarı) çünkü ABD'den gelen her şey emperyaldir, bu nedenle zaten sahip olduğum yüzlerce allen anahtarı işe yaramaz = 1 £

Fiziksel yapı için

Burada çoğunlukla yalan söylediğim şeylerin kırpıntılarını kullandım.

  1. 'Yüz' ve 'arka' plaka için 2 x kare kontrplak
  2. Daha sonra, arkayı yüze bağlamak için sahip olduğum eski bir korkuluk rayından 4x10cm'lik silindirler kestim.
  3. Servoları doğru ofsette monte etmek için bazı bloklar - sadece boyuta göre kestiğim yumuşak ağaç kesikleri.
  4. Çeşitli vidalar. çok küçükten (Pi kasasını çerçeveye takmak için) orta (çerçeveyi birbirine bağlamak için)
  5. 0,75 mm siyah sac yaklaşık 50 cm x 20 cm (elleri kesmek için). Wickes'tan yaklaşık 9 £ aldığım tek şey buydu.

Aletler

Sahip olduğum bazı şeyler ve ödünç aldığım veya satın aldığım bazı şeyler

  1. Havya + elektrik lehimi - konektörleri Adafruit Hat & Pi'ye takmak için.
  2. Dekupaj testeresi - ellerin kaba şeklini kesmek için
  3. Delmek. sadece normal bir kablosuz 18V matkap
  4. Matkap uçları - Pirinç borularla eşleşen delikler açmak için emperyal matkap uçlarına ihtiyacınız olacağını unutmayın. Biraz ödünç almayı başardım.
  5. demir testeresi - pirinç boruları kesmek için. Benim yaptığımı yapmayın ve tüp kesiciye 3 £ harcamayın, basınçla çalışır ve tüplerin iç kısmının biraz küçüldüğü anlamına gelir. böylece bir sonraki boyuttaki tüp geçmez
  6. Tezgah öğütücü - Bunlardan birine sahip değildim ama bir arkadaşım vardı ve elleri çok daha kolay şekillendirdi. O zamana kadar sadece dosyaları kullanıyordum. Sadece bu proje için almazdım ama metal eller için harikaydı.
  7. Bazı çeşitli elmas nokta dosyaları satın aldım (çok küçük). 15 £ civarında eller ve tüpler için kullanışlıdır
  8. kaba ve pürüzsüz zımpara kağıdı
  9. bazı küçük kelepçeler, delme sırasında bir şeyleri yerinde tutar.
  10. aynı nedenden dolayı bir mengene.

Adım 1: Telefonlarınızı Konumlarını Pi'nize Gönderecek Şekilde Ayarlama (Bölüm I MQTT Broker)

Bu bit, ppeters0502 tarafından mükemmel Weasley Clock Instructable'ında çok iyi tanımlanmıştır. Tuhaf bir şekilde, belki farklı beceri kümelerini yansıtıyor olsa da, derlemeyle başladı ve ardından yazılıma geçti, ben tam tersini yaptım. Bekle, hayır yapmadım, Talimatında 6. Adım olan MQTT komisyoncusu ile başladım. Çok iyi yaptığı tüm parçaları atlayacağım ve ekleyebileceğim bazı parçaları vereceğim. Bahsettiği CloudMQTT rotasına gittim.

BUTas Bunu yazarken, planların bağlantısını kontrol ettim ve artık ücretsiz bir plan olmadığını gördüm! Makul gerekçeler gibi görünen gerekçelerle geri çektiler. yani, insanlar ücretsiz bir örnek kurar ve sonra onu asla kullanmaz. Fark etmedim çünkü mevcut örnekler devam edebilir. O yüzden değişmeyeceğim. Ancak talimatları biraz gereksiz kılıyor. 3 seçenek var gibi görünüyor.

  1. Cloud MQTT için ayda 5 ABD doları ödeyin (ancak bu, sürekli olarak saat için pahalı geliyor).
  2. İlk Talimatta açıklandığı gibi Mosquitto on Pi rotasına gidin. Bu konuda yorum yapamam ama iyi bir seçenek olabilir.
  3. Sadece "ücretsiz MQTT bulut komisyoncusu" google ve diğerleri var gibi görünüyor.

Dolayısıyla, çalışan bir MQTT aracınız olduğu varsayımıyla, eğer CloudMQTT'ye benzer bir şeyse, o zaman bir Sunucu, Kullanıcı, Parola ve Bağlantı Noktası görüntülenecektir. Tüm bunlara, telefonlarınızı komisyoncuya konumlarınızı/hareketlerinizi gönderecek şekilde ayarlamak için ihtiyacınız olacak.

Adım 2: Telefonlarınızı Konumlarını Pi'nize Gönderecek Şekilde Ayarlama (Bölüm II Kendi Parçaları)

Bu, aynı zamanda, Adım 7 (Android), 8 (iOS) ve 9'da (Bölgeleri ayarlama) orijinal Talimatta çok iyi bir şekilde ele alınmıştır.

Yalnızca iOS cihazlarım vardı, bu yüzden 7. adımı denemedim.

Bu talimatlara ne eklerdim?

  1. Kurulumda ayrıca TrackerID ve DeviceID alanları da vardır. Bunlar, aileniz içinde sizi tanımlayabilecek nitelikte olmalıdır. Örneğin. Onları sırasıyla R ve RPhone olarak aldım. Bu, hangi Servo ve dolayısıyla hangi eli çevireceğiniz saate geçebileceğiniz anlamına gelir.
  2. Bölgeler, izlemek istediğiniz konumların adıdır.
  3. Her bölge bir Ad, Enlem, Boylam ve Yarıçap ile tanımlanır.
  4. Saatimde bir bölüm olarak bir dizi konumun olmasını istediğim için, çok yararlı olduğu ortaya çıkan bir adlandırma kuralı kullandım. Başka yöntemler de mümkün ama bu benim için çalıştı.

    • Örneğin, saatin AİLE bölümü için annemle babamı ve kardeşlerimi ve eşimin anne babasını ve kardeşleri olmasını istedim. Bu yüzden "Family Tom", "Family Dick", Family Harry" & "Family ParentsR" gibi yerlerim vardı. Bu, bir sonraki aşamanın Saat'e ne geçeceğini bilebileceği anlamına geliyordu.
    • İnsanların farklı konumlara sahip olabileceğini unutmayın. Ancak adlandırma kuralına uygun oldukları sürece sorun değil. Örneğin. benim işim eşimin çalışma bölgesinden farklı olurdu ve farklı çağrılırdı. ama ikisi de "Çalışmaya" başladıkları sürece her şey yolundadır.
  5. Haritalar ekranında modun 'Önemli' olarak ayarlanmasını istiyorsunuz. Bu, (çoğunlukla) yalnızca bölgelere girdiğinizde veya bölgelerden ayrıldığınızda mesaj alacağınız anlamına gelir. Bu, ÖNEMLİ olarak işaretlenmiş notun güncellenmiş versiyonu gibi görünüyor: Orijinal Eğitilebilir Dosyadaki 8. Adımın sonunda.
  6. Orijinal Eğitilebilir Kitapta belirtildiği gibi, Google Haritalar'ı kullanmak, bir yerin Enlem/Boylamını bulmanın harika bir yoludur. Bunu toplu olarak yapmayı, konumumun tüm Enlem/Boylamlarını bulmayı daha verimli buldum, sonra bunları Notes'a (Mac'imde) yapıştırdım ve bulut senkronizasyonuyla, sihirli bir şekilde iPhone'umda göründükleri anlamına geliyordu. Notes'ta ve onları Owntracks'e kopyalayabilir/yapıştırabilirim. Ayrıca, dosyayı ailemin telefonlarına gönderebileceğim ve hepimizin tutarlı konumları olduğu anlamına geliyordu.
  7. Birbirine yakın yerler sorunlara neden olabilir. Kardeşim 2 sokak ötede oturuyor ve telefonum ilk başta hem evinin bulunduğu bölgede hem de evde olduğumu düşünmeye devam etti. Sonunda, bu olayı yakalamak ve yok saymak için Node Red'e ek mantık koymak zorunda kaldım.

3. Adım: Raspberry Pi'yi Ayarlama

Raspberry Pi'yi Ayarlama
Raspberry Pi'yi Ayarlama

Bu yüzden burada, bir temel Pi'niz olduğunu ve wifi'ye sahip olduğunuzu farz ediyorum. Raspbian çalıştırıyordum ama önemli olmamalı. Her şeyi kurmak için raspberrypi.org'daki talimatları kullanın.

Bir Pi'nin bir monitöre ve klavyeye/fareye vb. görüntülemek için bağlantı noktalarına sahip olduğunu unutmayın. ANCAK bir kez saate sahip olduğunuzda, bunlardan hiçbirini istemezsiniz. Yani Raspberry pi web sitesinde biri tarafından önerilen cevap, sanırım bir VNC bağlantısı kurmaktı. Bu, başka bir cihazdan Pi'ye bağlanmanıza ve onu kontrol etmenize olanak tanır. Mac'imden yapıyorum ama aynı zamanda bir iPad'den de yaptım. Kullanım kolaylığı için klavyeli bir şey kullanmanızı öneririm.

Bağlandığımdan beri işleri kolaylaştırdıklarını öğrendim… buraya bakın

Esasen bağlanır ve standart Pi arayüzü olan bir pencere alırsınız.

Yani, dizüstü bilgisayarınızdan veya bilgisayarınızdan Pi'nize bir pencereniz var.

Şimdi Servoları bağlamanız gerekiyor.

Adafruit şapkasını Pi'ye takmak için önce oldukça basit bir lehimleme yapmanız gerekir. Biraz zahmetli ama 30 küsur yıldır lehimlenmemiş olmasına rağmen iyiydi. Her zamanki gibi, bana yardımcı olacak faydalı bir YouTube videosu buldum, bu çok yardımcı oldu.

Şapka 16 servo çalıştırabilirken, sadece 4'e ihtiyacım vardı ve bu yüzden sadece ilk 4 pim setini lehimlemekle uğraştım.

Ardından servolar sadece pimleri iter. İlk önce servoyu hareket ettirebileceğimi kontrol etmek için bir tane yaptım.

İlk büyük barikatımı burada vurdum. Servoları hareket ettirmek için çok basit bir python betiğim vardı ve kelimenin tam anlamıyla hiçbir şey olmadı. Yaklaşık bir haftamı yeni senaryolar vs. denemekle geçirdim ve sonra şapkada duman çıkmaya başladı. Her şeyi kapatarak şemayı kontrol ettim. Ters polariteye karşı koruyan bir bileşendi. Çok uçlu, çok voltajlı bir güç kaynağım olduğundan, ucu tersine çevirerek DC çıkışının her iki yöne de gitmesini sağlayabileceğiniz gerçeğini gözden kaçırmıştım. Yanlış anladım (50:50 şans) ve ilk adafruit şapkamı yaktım

:-(Bu yüzden yeni bir tane aldığımda biraz gecikme oldu, yeniden lehimledim ve ucu düzelttim. Çok daha iyi.

Daha sonra servoları saatte doğru noktaya nasıl hareket ettireceğimi bulmam gerekiyordu. Bu Adım 5'te gelecek, ancak asıl saati kurmadan yaptığım şey, servoları rastgele bir tahta parçasına hafifçe vidalamak ve resimde olduğu gibi üzerlerine ok bulunan bir maskeleme bandı yapıştırmaktı. Bu, kodladığım şeye çok görsel bir geri bildirim verdi.

Adım 4: Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)

Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)
Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)
Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)
Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)
Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)
Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)
Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)
Node Red Kurulumu (MQTT Sunucusundan Python Komut Dosyanıza Mesajları Alma)

Node-RED, Pi'ye yüklediğiniz, MQTT Sunucunuzdan mesajlar almanız ve bunu python betiğinize doğru bilgileri iletmek için kullanmanız için (tarayıcınızda) görsel bir arayüz sağlayan bir programdır (bir sonraki adımda ele alınmıştır (Adım 5). Adım 5'te ppeters0502 tarafından verilen talimatları oldukça fazla kullandım. devamındaki

  1. MQTT mesajları için alıcı düğümleri var - bunlar açık mor ve aile üyesi başına 1 tane vardı
  2. Bunu, taşımak istediğiniz servo ile eşleştirin (0, 1, 2, 3 numaralı)
  3. OwnTracks'te bir yarıçapa girip girmediğinizi veya bir yarıçaptan çıkıp çıkmadığınızı belirleyin
  4. Servo'nun hangi konumu göstermesi gerektiğini öğrenin

    Oluşturmam gereken temel kurallarda bazı istisnalar vardı

  5. Açıyı doğru ayarlayın

İlk 4'ü Node-RED yaptım ve Python'u nispeten basit tuttum.

Temel akışı burada görebilirsiniz ve tüm akışlar buradaki biçime aktarılabilir; bu, bu temel akışı Node-RED'inize aktarabileceğiniz ve ardından uyarlayabileceğiniz anlamına gelir. MQTT örneğime erişememeniz için mor düğümlerdeki tüm bağlantıları çıkardığımı unutmayın. Ayrıca, gerçek verileri içerdikleri için tüm test düğümlerini çıkardım… Node-RED'inize içe aktarmak için bu dosya türünü flow.json olarak değiştirmeniz gerekebilir, ancak Instructables bunu yüklememe izin vermedi.

Yeşil düğümler, daha sonra ekranın sağındaki hata ayıklama penceresinde çıktıyı görüntüleyen hata ayıklama düğümleridir (genişletme gerekebilir - sağdaki yarıya kadar oku bulun)

Yapılacak ilk bit, "Canlı - yalnızca hata ayıklama için" bitidir. Bu, MQTT mesajlarını alıp alamayacağınızı ve içlerinde ne olduğunu görebileceğinizi kontrol eder. json, verileri daha kolay çıkarmanıza izin veren mesajların yalnızca daha yapılandırılmış bir sürümüdür. Bu akışta, canlı olduğunda, sol üstteki mor düğümleri sağındaki json düğümüne bağlarım.

Düğümleri Test Etme

Mesajların canlı yayında nasıl görüneceğini öğrendikten sonra, bir olayı tetiklemek için evinizden çıkıp yolda yürümek zorunda kalmak çok sıkıcı hale geliyor. Bunu yaptıktan sonra mesajı bir TEST tetikleyicisine kopyalayabilir ve ardından olayı simüle etmek için tıklamanız yeterlidir. Verileri, farklı konumlar içinmiş gibi yapmak için de değiştirebilirsiniz (bunların Owntracks'teki konum adlarına tam olarak karşılık geldiğinden emin olun).

Akışta, test senaryolarının hepsinin ayrı bir düğüme gittiğini ve ardından bunun json düğümüne gittiğini görebilirsiniz. Bu tamamen ekranı toparlamak içindir.

Bu düğümlerin ne kadar yararlı olduğunu ve hala ne kadar yararlı olduğunu yeterince vurgulayamıyorum.

Python'u çağırmak

Sonra bir sonraki barikata çarptım. Bu, forumlarda vs. çok fazla googling aldı. Akışım mükemmel çalışırdı, ancak python betiğimi tetiklemezdi. Bunu çözemedim, ama sizi küfretmekten vb. kurtaracağım. Sadece ikinci ekran görüntüsünde vurgulandığı gibi, python3'ü belirtmeniz gerektiğini söylemek için, görünüşe göre Düğüm-RED, python2'yi varsayıyor, siz belirtmediğiniz sürece.

2 ek komplikasyon - yalnızca gerekirse

Daha sonra mantığın pek işe yaramadığı bir takım zorluklar yaşadım. Birincisi, Owntracks biraz tuhaf gitti ve ağabeyim 2 sokak ötede oturduğundan, sık sık aynı anda 2 yerde olduğumu ya da sürekli geçiş yaptığımı söylüyordu. Etrafında dolaşabilmemin tek yolu, yanlış pozitifleri durdurmak için bir koşul eklemekti. Evinde olduğumu iddia ederse, mesajdaki asıl Boylam/Enlem'i kontrol ettim ve gerçekten evde olduğumu söylediyse iptal ettim.

Diğer sorun ise köpeğimi gezdirirken gerçekten iyi bir yarıçap alamamamdı. Genelde aynı bölgede yürürüm, o yüzden burada "bu alana girersem kesinlikle köpeği gezdiririm ve eve gelene kadar da öyle olacağım" dedim. bu, eve giderken yanından geçtiğim pub'a veya köpek gezdirirken tetikleyebilecek diğer çeşitli yerel yerlere geçmeyeceği anlamına geliyordu. Bunu yapmak için bazı kalıcı Bağlam değişkenleri ayarlamam gerekiyordu (onları Düğüm-RED'de arayın. Ekran görüntüsüne bakın. Bu değişkenler Düğüm-RED yeniden başlatılıncaya kadar devam eder ve böylece şunu söyleyebilirim: Eğer bir köpek yürüyüşündeyse, Bağlam Değişkenini ayarlayın. "Köpek"e. Sonra Eve 'Girmediğim sürece HERHANGİ BİR ŞEYİ yok sayın.

Son ekran görüntüsü, tüm istisnalar dışında, yalnızca ilginiz için gerçek son akışımdan biridir.

Adım 5: Aslında Pi üzerinde Python ile Servoları Taşıma

Servolara kısa bir saptırma. Servolar hakkında hiçbir şey bilmiyordum ama internette çok fazla bilgi var. Benim kullandıklarım 360 derece dönebilen sürekli servolar ve sorunsuz. Diğer ana sıralama, parçalar halinde (adımlar) hareket eden ve görünüşe göre sadece 180 dereceye kadar çıkan (burada açıkça kullanışlı değil) kademeli servolardır. Step servoların avantajı, sadece bir açı koyabilmeniz ve o noktaya hareket etmeleri ve durmalarıdır. Bulduğum tüm belgeler, sürekli servolara bir hız ve bu hızı korumak için bir zaman (örneğin 1s için tam hız) verilerek çalıştığını ve sona erdikleri yere geldiklerini söyledi, ancak başlangıç noktalarına göre. Birçok denemeden sonra bunu çalıştıramadım, ancak test tezgahını kullanarak servoların aynı açıyla sürekli olarak aynı noktaya döndüğünü öğrendim. Hangisi çok daha kolay, ben de öyle yaptım. Bilmediğim bazı dezavantajları olabilir, ama benim için işe yarıyor. Bununla birlikte, her servonun benzersiz olduğunu ve bu nedenle her servo için benzersiz bir açı setine sahip olmanız gerektiğini unutmayın. Bir 'kalibrasyon' python betiğine sahip olmanın en kolay yolunu buldum, burada servoları sırayla açılara ayarlayabilir ve hepsi doğru görünene kadar onları düzeltebilirim. Bu, eklenen ilk komut dosyasıdır. Sadece test etmediğiniz servoları yorumlayın, birine konsantre olun ve ardından değerleri istediğiniz gibi ayarlayın. NOT: test tezgahı için kalibrasyon basit, kaba ve hazırdır. Saat monte edildiğinde yeniden kalibre etmeniz gerekecek, çünkü dişliler vb. her şeyi değiştirecektir. O zaman ikinci komut dosyası oldukça basit. Aşağıdakileri yapar

  1. Birkaç kitaplığı içe aktarın
  2. Düğüm-RED'den gelen değişkenleri komut dosyasındaki değişkenlere taşıyın
  3. kalibrasyon komut dosyası tarafından belirlenen açıları saat üzerindeki konumlara eşler.
  4. konumun listede bulunup bulunmadığını kontrol edin ve değilse "Tehlike"ye geçin
  5. bir günlük dosyasına ne yapıldığını yaz
  6. gerekli servoyu gerekli açıya getirin
  7. Bir servonun 'vızıldamasını' durdurun *

Dikkat edilmesi gereken 3 şey.

Günlük dosyası, hata ayıklama için çok kullanışlıdır. Bu, bir mesajın Node-RED hata ayıklamasına bakabileceğiniz ve ardından komut dosyasında ne olduğunu görebileceğiniz anlamına gelir. çıktı şuna benziyor. İlk 3'ü köpeği yürüyüşe çıkarıyorum ve ardından 1. Çocuk evden çıkıp okula geliyor. Pi'deki saati kontrol etmeyi unutmayın. UTC'ye varsayılan olabilir ve yaz/kış saati değişikliklerine izin vermeyebilir. Örneğin. aşağıdaki saatler 1 saattir.

2020-12-07_05:36:03 Kim = 0, loc = Seyahat, detay = Ev, Açı = 10, indeks = 8

2020-12-07_05:36:04 Kim = 0, loc = Köpek, detay = Astons, Açı = 86.5, indeks = 10

2020-12-07_06:07:49 Kim = 0, loc = Ev, detay = giriyor, Açı = 75, indeks = 0

2020-12-07_06:23:53 Kim = 2, loc = Seyahat, detay = Ev, Açı = 19, indeks = 8

2020-12-07_06:30:48 Kim = 2, loc = Okul, detay = N, Açı = 60,5, indeks = 2

Servo vızıltı

Servolardan (0) biri, senaryonun bitiminden sonra vızıldamaya devam etti. Tahmin edebileceğiniz gibi, bunun mutfağımızda olması çok can sıkıcı. Servo açısını 'hiçbiri' olarak ayarlamaktan bahseden ve bir şekilde boşta kalmasını sağlayan bir iş parçacığı buldum. Bu zekice çalıştı ve sonunda senaryoda görülebilir.

zamanlamaları

Bir elin günün her saatini süpürmek için ne kadar alçaldığını unutmayın. Komut dosyasında, servoyu vızıltıyı durduracak şekilde ayarlamadan hemen önce bir time.sleep(4) satırı olduğunu görebilirsiniz. Bunun nedeni, eli boşta bırakmadan önce hedefine ulaşmasına izin vermeniz gerektiğidir. Aksi takdirde sadece durur. Bu, kalibre ederken de önemlidir, çünkü komut dosyası içinde birden fazla hareket yapıyorsunuz. Hepsini tekrar kontrol edebilmek için sırayla 12 konumun tümüne hareket edecek şekilde çalışır hale getirirdim. ama arada biraz zamana ihtiyacın var.

Adım 6: Yazılımın Sonlandırılması - Telefonlardan Servolara

Test ortamını ve komut dosyalarını ayarladıktan sonra, onu bir süre 'canlı' olarak çalıştırabilir ve gerçek zamanlı olarak nasıl çalıştığını görebilirsiniz. Node-RED akışıma eklemem gereken istisnaları burada buldum.

Birine konsantre olmak istiyorsanız, Düğüm-RED akışında aile üyelerini kolayca ayırabilir ve bağlayabilirsiniz. Örneğin, iki soruna neden oluyorsa ancak her seferinde birini düzeltmek istiyorsanız. Aksi takdirde, bağlı telefonlardan mesaj almaya devam edeceğinizi unutmayın.

Köpek gezdirme sorunundan ve kardeşimin evinin oldukça yakın olmasından bahsetmiştim. 2 zorluk daha yaşadım.

İlk olarak, diğer konumlar içindeki konumlar. Karım Londra'da bir kolejde ders veriyordu. Bunun 'Okul' olarak kaydedilmesini istedik, ama aynı zamanda 'Londra'da. Bu yüzden, o 'Okul'dan ayrılıyorsanız, 'Seyahat' yerine 'Londra'ya taşınacağınızı söylemek için bağlamı yeniden kullanmamız gerekiyordu.

İkincisi, yarış koşulları. Belirtildiği gibi, kardeşimin evi 2 sokak ötede ve ayrıca favori pub/restoranımızın yakınında. Bu, bazen 2 sinyalin aynı anda veya birbirine çok yakın olarak alındığı anlamına gelir. Bu, mantıktan hangisinin daha hızlı geçtiğine bağlı olarak farklı sonuçlar elde ettiğiniz ve tahmin edilemez sonuçlara yol açan bir 'yarış koşulu' oluşturabilir. Buna karşı koymak için, tüm 'giriş' mesajlarının mantıkta sorunu çözdüğü anlaşılan 1s gecikme olmasını sağladım. Bunu çözmenin daha iyi, daha zarif yolları olabilir, ama işe yaramış gibi görünüyordu.

7. Adım: Fiziksel Saati Oluşturma - Bölüm I - Servolar ve Aks

Fiziksel Saati Oluşturma - Bölüm I - Servolar ve Aks
Fiziksel Saati Oluşturma - Bölüm I - Servolar ve Aks
Fiziksel Saati Oluşturma - Bölüm I - Servolar ve Aks
Fiziksel Saati Oluşturma - Bölüm I - Servolar ve Aks
Fiziksel Saati Oluşturma - Bölüm I - Servolar ve Aks
Fiziksel Saati Oluşturma - Bölüm I - Servolar ve Aks

Şimdi en az güvendiğim kısım, bu yüzden onu sona bıraktım. İyi boyutta bir yüz ve kolay bir yapı istiyordum. Ayrıca merkezi aksın etrafında fiziksel olarak 2 servo almak konusunda gergindim. Bu, takip ettiğim talimatta olduğu gibi eski saatler için ebay'e kısaca baktıktan sonra, kendim inşa ederek kendime daha fazla şans vermeye karar verdim.

  • Etrafımda uzanmış (yaklaşık 9 mm kalınlığında) 2 büyük (~ 30 cm) kare kontrplak aldım.
  • Sonra eski bir tırabzan rayını 4x10cm'lik bölümlere ayırdım ve ön ve arka plakaları birbirine vidaladım.
  • Merkez deliği işaretledikten sonra, en büyük pirinç boruyla aynı boyutta olacak şekilde deldim.
  • Sonra normal beyaz parlak boya ile boyadım.
  • Bazı deneylerden sonra, hepsi arka (veya ön) plakaya bağlıysa, muhtemelen aynı aks etrafında 4 servo alamayacağımı fark ettim. Bu yüzden her plakada 3 + 1 veya 2 + 2 olması gerekiyordu. Arkada 3, önde 1 ile bitirdim.
  • Bir kağıt parçası üzerinde gerekli ofsetleri hesapladım ve ardından pirinç boruları eşleştirmek için kestim. En kalın borunun en kısa olduğuna ve en incenin arka plakaya kadar gitmesi gerektiğine dikkat edin. (Aslında en küçüğünü arka plakaya kısmen açtığım bir deliğe gömdüm, ancak aksın geriye doğru hareket etmemesi için sonuna kadar değil).
  • Tüpler için bir tüp kesici aldım, ancak bu onları kesmek için basınç kullanır ve bu, daha küçük tüpü içeri alamayacağınız anlamına gelir. Bu yüzden bir demir testeresi kullandım ve sonra onları işe almak için oldukça fazla dosyalama yapmak zorunda kaldım. Elmas nokta dosyaları burada çok değerliydi.
  • Sonra diyagramı kelepçeler ve dişliler için gerçek ofsetlerle eşleştirdim *.
  • Ofsetleri aldığımda, servoları monte etmek için blokları ne kadar 'yüksek' yapacağımı biliyordum. Birkaç bloğu çok ince keserek kırdım ve ayrıca teli çıkarmak için deliği deldim.
  • Ardından, aks üzerindeki dişlilerle tam olarak buluşacakları şekilde blokları nereye koyacaklarının karmaşık kısmı geldi. Bir bloğu vidaladım ve daha sonra dingili karşılamak için servoyu döndürebilir ve ardından ikinci bloğu servonun diğer ucunu vidalayabilirim. Ayrıca diğer çarklara takılmamak için bazı bloklardan biraz kesmem gerektiğini de buldum. Oldukça uzun sürdü.
  • Tüm bunları yaptıktan sonra ahududu pi kasamı aldım, içine iki delik açtım ve ön plakaya vidaladım. Sonra Pi'yi ekleyebilir, ön ve arka plakaları kapatabilir (servoları pi'ye bağlayarak (hangi servonun hangi aile üyesi için olduğunu hatırlayarak) ve ellere dönebilirdim…

* Henüz tam olarak çözemediğim en büyük sorunu burada buldum. Pirinç borular 1/4", 7/32", 3/16", 5/32" idi. Ama kelepçeler metrikti (1/4" olan hariç). en büyüğü gayet iyi. ama açıkçası 0,44mm kelepçe için çok fazla hareket mesafesi bu yüzden kağıtla doldurmak zorunda kaldım. Bunu birkaç kez denedim ve bir süre normal çalışıyor ve sonra tekrar gevşetiyor. Yani 2. en büyük el düzgün çalışmıyor. Yaklaşık 6 ay boyunca iyiydi, bu yüzden bunu iyi yapmak için harcanan zaman iyi harcanmış bir zamandı. Ama tekrar yapıyor olsaydım, denemek ve almak için bir boşluk bırakarak 1 beden büyük veya küçük olabilirdim. boruya oturması için daha iyi bir kelepçe. örn. 9/32", 1/4", (boşluk), 3/16", 5/32" için gidin

Adım 8: Saat İbreleri

Saat Elleri
Saat Elleri
Saat Elleri
Saat Elleri
Saat Elleri
Saat Elleri

Sert bir şey istediğim için çelik sacda karar kıldım, ancak bunu yaparken kırılma olasılığı daha düşüktü. Ayrıca ince olmak, 4 elin daha az sorun olduğu anlamına geliyordu.

  • Önce bir şekil çizdim.
  • Sonra bir maskeleme bandının üzerine çeliğe aktardım.
  • Sonra onları çok beceriksizce yapbozla kestim. Hepsi farklıydı ve farklılar, ama bu umurumda değil.
  • Sonra bir arkadaşım onları şekillendirmek için onun öğütücüsünü ödünç almamı önerdi ve bu harikaydı. şiddetle tavsiye edilir. Aksi takdirde dosyalama uzun sürer.
  • Keskin kenarların olmamasını ve ayrıca güzel bir yüzey elde edilmesini sağlamak için yapılacak biraz eğeleme ve ardından zımparalama vardı.
  • İlgili pirinç borulara uyması için delikler açmam gerekiyordu (kontrol etmek için saate monte edilmiş olanları değil, kesilmiş boruları kullanın).
  • Deliklerin tüplere takılması için biraz eğelenmesi gerektiğini buldum, ancak bir kez sıkıydılar ve yapıştırıcıya ihtiyaç duymadılar. İstisna, bir 'kapak' olmasını istediğim ön eldi. Bu yüzden, (çoğunlukla) yuvarlak bir çelik parçası kestim, deliği delip doğru boyuta getirdikten sonra ön tarafa yapıştırdım. son resimde görebilirsiniz. Bazen ön eli sabitlemek için bir miktar yapıştırıcıya ihtiyaç duyabilir, ancak birkaç yanlış çalıştırmadan sonra eller gerçekten iyi çalışır.
  • Fotoğraf fikrini reddetmiştim (çünkü çocuklar eski fotoğraflarımızdan çabucak şikayet edeceklerdi) bu yüzden akrilik boya ile baş harflerini boyamaya karar verdim.

9. Adım: Tamamlayın

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

Hepsi gerçekten güzel çalışıyor. Eller bazen nereden geldiklerine bağlı olarak biraz kapalıdır, ancak aslında önemli değil çünkü her konum sadece bir çizgi değil bir bölümdür.

Bazen garip bir şekilde telefonum evde olduğumu kabul etmeyi reddediyor. Haritada gösterildiğinde açıkça Owntracks yarıçapındayım ve doğruluk iyi olsa bile… Nedeni hakkında hiçbir fikrim yok. ailemin geri kalanını etkilemiyor gibi görünüyor. ama kurulum aynı. Bu, Owntracks'in asla mesaj göndermediği ve benim 'Seyahat Etme' bölümünde takılıp kaldığım anlamına geliyor. Ama genellikle sonunda kendini çözer.

Mutfağımızda olması, çoğunlukla kızların okuldan veya arkadaşlarının evlerinden ne zaman eve gittiklerini ve dolayısıyla onlar için ne zaman yemek/çay hazırlanacağını bilmek çok faydalı oldu.

Yine, izlenecek harika talimatlar için @ppeters0502'ye büyük bir şapka ipucu. Umarım bunlar 4 elle bir saat yapma konusunda bir şeyler ekleyebilir..

Adım 10: Öğrendiğim ve Tekrar Yapmam Gerekseydi Daha İyi/Farklı Yapacağım Şeyler

  • Fiziksel yapılar deneme yanılma gerektirir. Uzayın sorunlarını tahmin etmenin bir yolu yok, sadece dalıp denemeniz gerekiyor.
  • Kod için googling sorunları önemlidir
  • Temel başlayın ve oluşturun. Test tezgahı ahşabındaki servolar, fiziksel yapı olmadan çoğunu çalıştırabileceğim anlamına geliyordu.
  • Ellerimi bir CNC makinesinde lazerle kesmiş olabilirim. Ama yerel olanın nerede olduğunu bilmiyordum ve yumuşak çeliğin nasıl çalıştığını beğendim (ucuzdu ve tezgah taşlama makinesi bunu çok daha kolay hale getirdi)
  • 360 dönüş elde etmek için dişlileri kullanırsanız bir step motor mümkün olabilir. ancak daha sonra servoları merkezi aksa çok yakın tutmanız gerekebilir.
  • 2 tip servo (Futaba & HiTech) vardır. Spline'da farklı sayıda diş olduğu için bunu kontrol ettiğinizden emin olun. Ve başlangıçta yanlış olanları aldım…
  • Şapkayı yanlış polariteye bağlamayın;-)
  • Google ve Stack Overflow, takıldığında arkadaşlarınızdır. Ancak iyi arama terimleri kullanmanız gerekiyor…
  • Test tezgahı aslında daha basit, daha ucuz bir versiyonu çok daha kolay elde etmenin bir yoludur. Yapıdaki karmaşıklığın çoğu, ellerin aynı aks etrafında dönmesinden kaynaklanmaktadır. Bundan taviz verirseniz, o zaman her şey çok daha kolay. Ve bence, şaft çok daha uzun olmadıkça, 4 tek dingilin sınırı olabilir. Şaft daha uzun olsaydı, sanırım ön plakada 3 ve arka plakada üç tane olabilirdi…

Adım 11: Gelecekteki Olası Uzantılar…?

Sonraki adımlar hakkında sahip olduğum fikirler aşağıdaki gibidir.

  1. Saat yüzü olarak eski bir iPad'i yeniden kullanmak istiyorum. yani bir dijital saat yapmak. Muhtemelen tarayıcı tabanlı veya bir uygulama. Fiziksel bir saat esasen durumsuz olduğundan (yani, eller fiziksel bir konumda olması dışında, şu anda nerede olduğunu bilmiyor) kalıcı bir veri deposuna sahip olmam gerekir. Kırmızı Düğüm yerel dosya sistemine yazabilir, bu yüzden muhtemelen bunu yapardım.
  2. Bunu yapsaydım, o zaman onu evin dışından görebilmek isterim. Ama sonra gerçekten güvenliği çözmemiz gerekiyor. Aynı wifi ağı içinde erişim bir şey olduğundan, internetten erişim başka bir şeydir. Şu anda bunu en iyi nasıl yapacağım hakkında hiçbir fikrim yok, ancak diğer yöne giden bir MQTT aboneliğinin işe yarayabileceğinden şüpheleniyorum (pi mevcut durumu yayınlar ve harici cihazlar buna abone olur)…?
  3. 'Yurtdışı' için bir eli çok isterim. ancak bu, OwnTracks açısından karmaşık olabilir. Belki bazı büyük yarıçaplarla birlikte uzun/lat kullanabilir mi?

Önerilen: