Isi kandungan:

Jam Lokasi 'Weasley' Dengan 4 Tangan: 11 Langkah (dengan Gambar)
Jam Lokasi 'Weasley' Dengan 4 Tangan: 11 Langkah (dengan Gambar)

Video: Jam Lokasi 'Weasley' Dengan 4 Tangan: 11 Langkah (dengan Gambar)

Video: Jam Lokasi 'Weasley' Dengan 4 Tangan: 11 Langkah (dengan Gambar)
Video: Terlahir Untuk Menjadi Seorang Penyihir - ALUR CERITA FILM Harry Potter And The Sorcerer's Stone 2024, Julai
Anonim
Jam Lokasi 'Weasley' Dengan 4 Tangan
Jam Lokasi 'Weasley' Dengan 4 Tangan

Oleh itu, dengan Raspberry Pi yang telah lama berjalan, saya ingin mencari projek yang bagus yang membolehkan saya memanfaatkannya dengan sebaik-baiknya. Saya menjumpai Jam Lokasi Weasley Sendiri yang Dapat Diajar dengan hebat oleh ppeters0502 dan berpendapat bahawa akan baik untuk dicuba.

Jam pada dasarnya terdiri daripada Raspberry Pi yang mengendalikan servo untuk memutar tangan jam. Seperti di rumah keluarga Weasley dalam buku / filem Harry Potter, setiap ahli keluarga mempunyai tangan mereka sendiri. Setiap tangan menunjukkan lokasi anggota keluarga yang ada sekarang. Jam mencapai ini dengan menerima mesej dari telefon bimbit keluarga setiap kali mereka memasuki atau meninggalkan radius yang telah ditentukan.

Perbezaan utama dari Instructable sebelumnya adalah bahawa saya perlu mempunyai 4 tangan, bukan 2 (jika tidak anak perempuan saya akan mengeluh) dan saya memutuskan untuk membina bingkai juga, tidak mendapat jam lama untuk digunakan semula. Ini kerana saya bimbang bahawa ruang akan menjadi masalah dalam casing jam yang ada, dengan keperluan untuk memuat dalam 4 servos dll.

Saya mengambil masa lebih lama daripada yang saya jangkakan, walaupun di mana saya menemui masalah yang mengejutkan saya, dan yang sepertinya tidak dilindungi oleh catatan asal. Tidak ada yang bertentangan dengan Instructable yang asli, yang umumnya hebat, tetapi beberapa tahun telah berlalu dan versi perkara berubah … dll. Juga, berada di UK bermaksud beberapa elemen Imperial / Metrik menyebabkan lebih banyak cabaran daripada yang saya jangkakan.

Juga, semasa saya OK dalam pengekodan, pembuatan jam secara fizikal pasti meregangkan saya, dan memerlukan beberapa alat tambahan, yang juga sedikit melambatkan saya.

Pada akhirnya saya akan memasukkan bahagian mengenai "Perkara yang akan saya lakukan dengan cara lain / lebih baik sekiranya saya melakukannya lagi …"

Bekalan:

Salah satu perkara yang mengejutkan saya ialah komponen yang mahal itu berkaitan dengan jam tangan. 4 tangan pasti jauh lebih mahal daripada 2. Saya memutuskan untuk memasukkan beberapa kos supaya anda mempunyai idea. Ini adalah kali pertama saya menambahkan semuanya, dan mengabaikan alat, saya rasa saya menghabiskan kira-kira £ 200. Ditambah beberapa barang yang tidak saya gunakan (dan belum termasuk di bawah) ditambah Pi, ditambah dengan bekalan kuasa yang kedua-duanya sudah saya miliki.

Pi dll

  1. Raspberry Pi - tidak ingat berapa asalnya harganya tetapi ia adalah Model 2B. Saya fikir jika anda belum memilikinya, mungkin Pi Zero mungkin akan melakukannya. Saya telah menambahkan kad WiFi dan kad SD dengan Raspbian. Dan saya mempunyai pengecas telefon Android lama.
  2. Adafruit Servohat untuk Pi - £ 16
  3. Bekalan kuasa untuk Servohat - Ini benar-benar sukar saya cari kerana semua laman web hanya menunjuk ke laman web adafruit yang pada masa itu, jelas mengesyorkan bekalan kuasa AS. Kemudian saya menyedari bahawa saya mempunyai bekalan voltan berubah lama dengan petua yang boleh ditukar ganti jadi saya menggunakannya. Tetapi AS adalah $ 8 jadi itulah taman permainannya.
  4. Sarung untuk Pi, supaya saya dapat memasangnya pada bingkai jam. £ 5

Servo dan gear

Di sini saya memetik harga untuk keempat-empat, jadi bagi jika anda mahu lebih sedikit tangan (Menambahnya adalah ~ £ 40 PER TANGAN = £ 160: -o

  1. 4 x Servos - Saya menggunakan yang disyorkan oleh ppeters0502 - dijumpai di ebay dengan harga ~ £ 15 setiap satu = £ 60 - Saya mencari teks berikut "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "tetapi kadangkala mereka tidak tersedia
  2. 4 x tiub tembaga yang dipasang tepat di antara satu sama lain - ~ £ 3 setiap satu. Saya mendapat 1 setiap 1/4 ", 7/32", 3/16 ", 5/32" = 11 £
  3. 4 x pengapit yang mengapit tiub tembaga untuk membolehkan anda memasang roda gigi. ~ £ 7 setiap satu = £ 28. Saya mendapatkannya dari ActiveRobots yang melakukan pesanan biasa dari Servocity di AS, yang membolehkan anda mengelakkan penghantaran antarabangsa. Mereka juga boleh mendapatkan apa sahaja yang anda dapati di laman utama AS Servocity. Ini sangat berguna untuk 2 item seterusnya
  4. Gear corak 4 x acetyl 0.770 "untuk dipasang di hab pengapit. ~ £ 6 setiap satu = £ 24
  5. 4 x gear asetil yang dipasang di spline untuk dipasang pada servo. ~ £ 6.50 setiap satu = £ 26
  6. 1 x pek kacang hex ke roda gigi yang terpasang ke kacang penjepit = £ 2.60
  7. Kekunci hex 1 x 7/64 (kunci allen) kerana apa sahaja yang datang dari AS adalah imperialis, jadi ratusan kunci allen yang sudah saya miliki tidak berguna = £ 1

Untuk binaan Fizikal

Di sini saya kebanyakannya menggunakan potongan barang yang saya bohong

  1. 2 x petak papan lapis untuk pinggan 'muka' dan 'belakang'
  2. Saya kemudian memotong silinder 4x10cm dari rel banister lama yang saya miliki, untuk menghubungkan bahagian belakang ke muka
  3. Beberapa blok untuk memasang servo pada offset yang betul - hanya potongan kayu lunak yang saya potong mengikut ukuran.
  4. Skru pelbagai. dari sangat kecil (untuk memasang casing Pi ke bingkai) hingga medium (untuk memasang bingkai bersama)
  5. Lembaran keluli ringan 0.75mm sekitar 50cm x 20cm (untuk memotong tangan). Ini satu-satunya barang yang saya beli ~ £ 9 dari Wickes

Alat

Beberapa barang yang saya ada dan beberapa yang saya pinjam atau beli

  1. Soldering Iron + solder elektrik - untuk memasang penyambung ke Adafruit Hat & Pi.
  2. Jigsaw - untuk memotong bentuk tangan yang kasar
  3. Gerudi. hanya gerudi 18V tanpa wayar biasa
  4. Bit gerudi - Ingatlah bahawa anda AKAN memerlukan bit gerudi imperial untuk membuat lubang yang sesuai dengan tiub tembaga. Saya berjaya meminjam sebilangan.
  5. gergaji besi - untuk memotong tiub tembaga. Jangan buat apa yang saya buat dan belanjakan £ 3 untuk pemotong tiub, ia berfungsi dengan tekanan dan bermaksud bahagian dalam tiub menjadi sedikit lebih kecil. jadi tiub bersaiz seterusnya tidak masuk
  6. Pengisar bangku - Saya tidak mempunyai salah satu daripada ini tetapi seorang rakan melakukannya dan ini menjadikan pembentukan tangan jauh lebih mudah. Sehingga itu saya hanya menggunakan fail. Saya tidak akan membelinya hanya untuk projek ini, tetapi untuk tangan logam itu hebat.
  7. Saya membeli beberapa fail titik berlian (sangat kecil). berguna untuk tangan dan tiub sekitar £ 15
  8. kertas pasir kasar dan halus
  9. beberapa pengapit kecil menahan barang semasa menggerudi.
  10. maksiat dengan alasan yang sama.

Langkah 1: Menyiapkan Telefon Anda untuk Menghantar Lokasi Mereka ke Pi Anda (Bahagian I Broker MQTT)

Bit ini dijelaskan dengan baik oleh ppeters0502 dalam Weasley Clock Instructable yang sangat baik. Anehnya, walaupun mungkin mencerminkan kemahiran yang berbeza, dia memulakan dengan membina dan kemudian beralih ke perisian, saya melakukannya sebaliknya. Oleh itu, saya mulakan dengan telefon… tunggu, tidak, saya mulakan dengan broker MQTT, yang merupakan Langkah 6 dalam Instructable-nya. Saya akan menghilangkan semua bit yang dia lakukan dengan baik dan hanya membuang beberapa bit yang mungkin saya tambahkan. Saya melalui laluan CloudMQTT yang disebutnya.

TETAPI semasa saya menulis ini, saya memeriksa pautan ke rancangan dan mendapati bahawa tidak ada rancangan percuma lagi! Mereka menariknya, kerana sepertinya alasan yang munasabah. iaitu bahawa orang akan menyediakan contoh percuma dan kemudian tidak akan menggunakannya. Saya tidak perasan kerana kejadian semasa dapat diteruskan. Jadi saya tidak akan berubah. Tetapi ia menjadikan arahannya sedikit berlebihan. Nampaknya ada 3 pilihan.

  1. Bayar $ 5 setiap bulan untuk Cloud MQTT (tetapi kedengarannya mahal untuk jam secara berterusan).
  2. Pergi ke arah Mosquitto on Pi seperti yang dijelaskan dalam Instructable pertama. Saya tidak dapat mengulas mengenai perkara itu, tetapi boleh menjadi pilihan yang baik.
  3. Cukup google "broker cloud MQTT percuma" dan nampaknya ada beberapa yang lain.

Oleh itu, dengan andaian bahawa anda mempunyai broker MQTT yang berfungsi, jika seperti CloudMQTT, maka akan ada Pelayan, Pengguna, Kata Laluan dan Port yang dipaparkan. Anda memerlukan semua ini untuk mengatur telefon anda untuk menghantar broker lokasi / pergerakan anda.

Langkah 2: Menyiapkan Telefon Anda untuk Menghantar Lokasi Mereka ke Pi Anda (Trek Sendiri Bahagian II)

Ini juga dibahas dengan baik dalam Instructable yang asli, dalam Langkah 7 (Android), 8 (iOS) & 9 (menyiapkan Kawasan).

Saya hanya mempunyai peranti iOS jadi tidak mencuba langkah 7.

Apa yang akan saya tambah pada arahan tersebut?

  1. Dalam penyediaannya juga terdapat bidang TrackerID dan DeviceID. Ini semestinya anda dapat mengenal pasti anda dalam keluarga. Cth. Saya mempunyai mereka sebagai R dan RPhone masing-masing. Ini bermakna anda boleh melewati jam mana Servo dan oleh itu tangan mana yang hendak dipusingkan.
  2. Kawasan adalah nama untuk lokasi yang ingin anda lacak.
  3. Setiap wilayah ditentukan oleh Nama, Lintang, Bujur dan Radius.
  4. Kerana saya ingin mempunyai sejumlah lokasi sebagai satu bahagian pada Jam saya, saya menggunakan konvensyen penamaan, yang ternyata sangat berguna. Kaedah lain mungkin tetapi ini berjaya untuk saya.

    • Sebagai contoh, Untuk bahagian KELUARGA jam saya ingin mempunyai ibu bapa dan adik-beradik saya dan ibu bapa dan adik-beradik isteri saya. Oleh itu, saya mempunyai lokasi seperti "Family Tom", "Family Dick", Family Harry "&" Family ParentsR ". Ini bermaksud bahawa peringkat seterusnya dapat mengetahui apa yang harus disampaikan kepada Jam.
    • Ingatlah bahawa orang boleh mempunyai lokasi yang berbeza. Tetapi selagi mereka konsisten dengan konvensyen penamaan maka tidak mengapa. Cth. pekerjaan saya akan berbeza dengan kawasan kerja isteri saya dan dipanggil berbeza. tetapi selagi mereka berdua memulakan "Kerja" maka semuanya baik-baik saja.
  5. Anda mahu mod ditetapkan ke 'Significant' di skrin Maps. Ini bermaksud bahawa anda (kebanyakannya) hanya menerima mesej semasa anda memasuki atau meninggalkan kawasan. Nampaknya ini adalah versi nota terkini yang bertanda PENTING: pada akhir Langkah 8 dalam Instruksional yang asal.
  6. Seperti yang disebutkan dalam Instructable yang asli, menggunakan Peta Google adalah cara terbaik untuk mengetahui Lat / Long dari suatu tempat. Saya merasa lebih cekap untuk melakukan ini secara besar-besaran, mengetahui semua Lat / Longs dari lokasi saya, kemudian saya menempelkannya ke Notes (di Mac saya) dan dengan penyegerakan awan, ini bermaksud bahawa mereka muncul secara ajaib di iPhone saya dalam Catatan dan saya dapat menyalin / menampalnya ke dalam Trek Sendiri. Ini juga bermaksud bahawa saya dapat mengirim fail ke telefon keluarga saya dan kami semua mempunyai lokasi yang konsisten.
  7. Lokasi yang berdekatan boleh menyebabkan masalah. Abang saya tinggal 2 jalan, dan pada mulanya telefon saya terus berfikir bahawa saya serentak berada di kawasan rumahnya dan juga di rumah. Akhirnya saya terpaksa memasukkan logik tambahan ke dalam Node Red untuk menangkap dan mengabaikan kejadian ini.

Langkah 3: Menyiapkan Raspberry Pi

Menyiapkan Raspberry Pi
Menyiapkan Raspberry Pi

Jadi di sini saya menganggap bahawa anda mempunyai asas Pi yang disiapkan dan menggunakan wifi. Saya menjalankan Raspbian tetapi tidak menjadi masalah. Gunakan arahan di raspberrypi.org untuk menyiapkan semuanya.

Perhatikan bahawa Pi mempunyai port untuk dipaparkan ke monitor dan papan kekunci / tetikus dll. TETAPI jelas sekali setelah anda memilikinya pada waktu, anda tidak menginginkannya. Jadi jawapannya, yang dicadangkan oleh seseorang di laman web Raspberry pi, saya fikir, adalah untuk membuat sambungan VNC. Ini membolehkan anda menyambung dari peranti lain ke Pi dan mengawalnya juga. Saya melakukannya dari Mac saya tetapi juga melakukannya dari iPad. Saya cadangkan menggunakan sesuatu dengan papan kekunci untuk kemudahan penggunaan.

Saya baru sahaja mendapati bahawa mereka nampaknya mempermudah sejak saya berhubung … lihat di sini

Pada dasarnya anda menyambung dan mendapatkan tetingkap yang merupakan antara muka Pi standard.

Oleh itu, anda mempunyai tetingkap Pi dari komputer riba atau komputer anda.

Sekarang anda perlu menyambungkan Servos.

Mula-mula anda perlu melakukan pematerian yang cukup asas untuk mendapatkan topi adafruit ke Pi. Agak gementar, tetapi walaupun tidak menyolder selama 30 tahun, itu baik-baik saja. Seperti biasa, saya menjumpai video YouTube yang berguna untuk memandu saya melaluinya, yang sangat membantu.

Walaupun topi boleh menjalankan 16 servo, saya hanya memerlukan 4 dan jadi saya hanya mengganggu pematerian set pertama 4 pin.

Kemudian servo hanya menekan ke pin. Saya melakukan yang pertama untuk memastikan bahawa saya benar-benar dapat membuat servo bergerak.

Di sinilah saya mengalami sekatan jalan raya pertama saya. Saya mempunyai skrip python yang sangat asas untuk memindahkan servo dan secara harfiah tidak ada yang berlaku. Saya menghabiskan kira-kira seminggu untuk mencuba skrip baru dan lain-lain, dan kemudian asap mula muncul di topi. Memadamkan semuanya, saya memeriksa skema. Ia adalah komponen yang melindungi daripada kekutuban terbalik. Kerana saya mempunyai sumber kuasa pelbagai voltan, banyak, saya terlepas kenyataan bahawa anda boleh mendapatkan output DC dengan dua arah dengan membalikkan hujungnya. Saya salah faham (peluang 50:50) dan baru sahaja membakar topi iklan pertama saya

:-(Jadi sedikit kelewatan ketika saya membeli yang baru, menyolder semula dan membetulkan hujungnya. Lebih baik.

Seterusnya saya perlu mengetahui cara memindahkan servo ke titik yang betul pada jam. Itu akan datang pada Langkah 5, tetapi apa yang saya lakukan, kerana tidak membina jam yang sebenarnya, adalah dengan perlahan memasang servo ke sebilangan kayu acak, dan menempelkan beberapa pita pelindung dengan anak panah pada mereka, seperti dalam gambar. Ini memberikan maklum balas yang sangat visual untuk apa yang saya kodkan.

Langkah 4: Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)

Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)
Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)
Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)
Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)
Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)
Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)
Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)
Memasang Node Red (Mendapatkan Mesej Dari Pelayan MQTT ke Skrip Python Anda)

Node-RED adalah program yang anda pasang pada Pi, yang memberi anda antara muka visual (pada penyemak imbas anda) untuk menerima mesej dari Pelayan MQTT anda dan menggunakannya untuk menyampaikan maklumat yang betul ke skrip python anda (dibahas pada langkah berikutnya (Langkah 5). Saya menggunakan banyak arahan oleh ppeters0502 dalam Langkah 5. Terdapat logik dalam aliran ini, dan logik tambahan dalam ular sawa, dan anda boleh mempunyai lebih kurang dalam setiap, bergantung pada pilihan anda. Pada dasarnya anda perlu melakukan yang berikut

  1. Telah menerima nod untuk mesej MQTT - ini berwarna ungu muda dan saya mempunyai 1 bagi setiap ahli keluarga
  2. Petakan ke servo yang ingin anda pindahkan (bernombor 0, 1, 2, 3)
  3. Tentukan sama ada anda memasuki atau meninggalkan radius di OwnTracks
  4. Cari lokasi mana yang perlu ditunjukkan oleh servo

    Terdapat beberapa pengecualian dari peraturan asas yang perlu saya bina

  5. Tetapkan sudut dengan betul

Saya mempunyai Node-RED melakukan 4 yang pertama, dan menjadikan Python agak sederhana.

Anda dapat melihat aliran asas di sini, dan semua aliran dapat dieksport ke dalam format di sini, yang bermaksud bahawa anda dapat mengimport aliran asas ini ke Node-RED anda dan kemudian menyesuaikan diri. Perhatikan bahawa saya telah melepaskan semua sambungan dari simpul ungu sehingga anda tidak dapat mengakses instance MQTT saya. Saya juga membuang semua ujian-node kerana mengandungi data sebenar … anda mungkin perlu menukar jenis fail ini menjadi flow.json untuk mengimport ke Node-RED anda tetapi Instructables tidak membenarkan saya memuat naiknya.

Node hijau adalah node debug yang kemudian memaparkan output di tetingkap debug di sebelah kanan skrin (mungkin perlu berkembang - cari anak panah di tengah kanan)

Bit pertama yang perlu dilakukan adalah bit "Live - for debugging only". Itu memastikan bahawa anda boleh menerima mesej MQTT dan melihat apa yang ada di dalamnya. json hanyalah versi mesej yang lebih tersusun yang membolehkan anda mengeluarkan data dengan lebih mudah. Dalam aliran ini, semasa disiarkan, saya kemudian menghubungkan simpul ungu ke kiri atas ke simpul json di sebelah kanannya.

Nod Ujian

Sebaik sahaja anda mengetahui bagaimana mesej itu akan disiarkan secara langsung, sangat membosankan apabila anda berjalan keluar dari rumah anda dan ke jalan dan belakang, hanya untuk mencetuskan peristiwa. Setelah selesai, anda boleh menyalin mesej ke dalam pencetus UJIAN, dan kemudian klik untuk mensimulasikan acara. Anda juga dapat mengubah data, untuk berpura-pura berada di lokasi yang berbeda (pastikan data tersebut sesuai dengan nama lokasi di Owntracks).

Anda dapat melihat dalam aliran bahawa kes ujian semuanya masuk ke simpul yang berasingan dan kemudian masuk ke simpul json. Ini semata-mata untuk membersihkan skrin.

Saya tidak dapat menekankan betapa berguna node ini, dan masih ada.

Memanggil Python

Oleh itu, saya kemudian menyekat sekatan jalan seterusnya. Yang ini banyak BANYAK googling di forum dll. Aliran saya akan berfungsi dengan sempurna, tetapi tidak akan mencetuskan skrip python saya. Saya tidak dapat menyelesaikannya, tetapi saya akan menghindarkan anda dari sumpah dll. Hanya untuk mengatakan bahawa, seperti yang disorot dalam tangkapan skrin kedua, anda mesti menentukan python3, kerana Node-RED nampaknya menganggap python2, kecuali anda menyatakannya.

2 komplikasi tambahan - hanya jika diperlukan

Saya kemudian menghadapi sejumlah cabaran di mana logiknya tidak berjaya. Yang pertama adalah bahawa Owntracks agak pelik dan, kerana saudara saya tinggal 2 jalan jauhnya, ia sering mengatakan bahawa saya berada di 2 tempat sekaligus, atau terus bertukar. Satu-satunya cara yang dapat saya lakukan ialah menambahkan keadaan untuk menghentikan positif palsu. Sekiranya ia menyatakan bahawa saya berada di rumahnya, maka saya melalui dan memeriksa Longitud / Lintang sebenar dalam mesej dan membatalkannya jika mengatakan bahawa saya sebenarnya berada di rumah.

Masalah lain ialah, ketika berjalan anjing saya tidak dapat memperoleh radius yang baik. Saya biasanya berjalan di kawasan yang sama, jadi di sini, saya berkata "jika saya memasuki kawasan ini, saya pasti akan berjalan dengan anjing itu, dan akan sampai ke rumah." ini bermaksud bahawa ia tidak akan beralih ke pub yang saya lalui dalam perjalanan pulang, atau pelbagai tempat tempatan lain yang boleh mencetuskan ketika berjalan-jalan anjing. Untuk melakukan ini, saya perlu menyiapkan beberapa pemboleh ubah Konteks yang berterusan (cari di Node-RED. Lihat tangkapan skrin. Pemboleh ubah ini berterusan sehingga Node-RED dimulakan semula dan saya boleh katakan Jika berjalan kaki, tetapkan Variabel Konteks kepada "Dog". Kemudian abaikan yang lain kecuali saya 'Enter' Home.

Tangkapan skrin terakhir adalah salah satu aliran akhir sebenar saya, dengan semua pengecualian, hanya untuk kepentingan anda.

Langkah 5: Sebenarnya Memindahkan Servos Dengan Python pada Pi

Pengalihan pendek ke servo. Saya tidak tahu apa-apa mengenai servos, tetapi terdapat banyak maklumat dalam talian. Yang saya gunakan ialah servo berterusan yang boleh bertukar 360 darjah, dan lancar. Jenis utama yang lain adalah servo stepper yang bergerak dalam potongan (step) dan nampaknya hanya naik hingga sekitar 180 darjah (jelas tidak berguna di sini). Kelebihan servo stepper adalah anda boleh meletakkan sudut dan mereka bergerak ke tahap itu, dan berhenti. Semua dokumentasi yang saya dapati mengatakan bahawa servo berterusan berfungsi dengan diberi kepantasan, dan masa untuk mengekalkan kelajuan itu (mis. Kelajuan penuh selama 1 dtk) dan mereka berakhir di mana mereka berakhir, tetapi ia berkaitan dengan titik permulaannya. Selepas banyak percubaan, saya tidak dapat menyelesaikannya, tetapi saya dapati, dengan menggunakan bangku ujian, servos secara konsisten kembali ke titik yang sama dengan sudut yang sama. Yang lebih mudah, jadi saya buat begitu. Mungkin ada beberapa kelemahan yang saya tidak tahu, tetapi ia berfungsi untuk saya. Namun, perhatikan bahawa setiap servo adalah unik, dan oleh itu anda harus mempunyai satu set sudut yang unik untuk setiap servo. Saya merasa paling mudah untuk mempunyai skrip python 'kalibrasi', di mana saya dapat mengatur servo ke sudut secara bergantian, menyempurnakannya sehingga semuanya kelihatan betul. Ini adalah skrip pertama yang dilampirkan. Anda hanya memberi komen tentang servo yang tidak anda uji, tumpukan perhatian pada satu, dan kemudian sesuaikan nilai yang anda perlukan. CATATAN: penentukuran untuk bangku ujian mudah dan kasar dan siap. Anda perlu menentukur semula semasa jam dipasang, kerana gear dll akan mengubah segalanya. Kemudian skrip kedua cukup asas. Ia melakukan perkara berikut

  1. Import beberapa perpustakaan
  2. pindahkan pemboleh ubah yang berasal dari Node-RED ke pemboleh ubah dalam skrip
  3. memetakan sudut yang ditentukan oleh skrip penentukuran ke lokasi pada jam.
  4. periksa bahawa lokasi terdapat dalam senarai, dan jika tidak maka pindah ke "Peril"
  5. tuliskan apa yang dilakukan pada fail log
  6. gerakkan servo yang diperlukan ke sudut yang diperlukan
  7. Hentikan satu servo daripada 'berdengung' *

3 perkara yang perlu diberi perhatian.

Fail log sangat berguna untuk penyahpepijatan. Ini bermaksud bahawa anda dapat melihat Node-RED debug mesej, dan kemudian melihat apa yang berlaku dalam skrip. output kelihatan seperti ini. 3 yang pertama adalah saya membawa anjing berjalan-jalan, dan kemudian Anak 1 meninggalkan rumah dan tiba di sekolah. Catatan untuk memeriksa waktu di Pi. Ia mungkin lalai ke UTC dan tidak membenarkan perubahan waktu musim panas / musim sejuk. Cth. masa di bawah adalah 1 jam keluar.

2020-12-07_05: 36: 03 Siapa = 0, loc = Perjalanan, perincian = Rumah, Sudut = 10, indeks = 8

2020-12-07_05: 36: 04 Who = 0, loc = Dog, detail = Astons, Angle = 86.5, indeks = 10

2020-12-07_06: 07: 49 Siapa = 0, loc = Rumah, detail = masuk, Sudut = 75, indeks = 0

2020-12-07_06: 23: 53 Siapa = 2, loc = Perjalanan, perincian = Rumah, Sudut = 19, indeks = 8

2020-12-07_06: 30: 48 Siapa = 2, loc = Sekolah, perincian = N, Sudut = 60.5, indeks = 2

Melayan servo

Salah satu Servos (0) terus berdengung setelah akhir skrip. Seperti yang anda bayangkan, ini sangat menjengkelkan di dapur kami. Saya menjumpai utas di suatu tempat yang menyebutkan menetapkan sudut servo ke 'tidak ada' yang entah bagaimana menjadikannya tidak aktif. Itu berfungsi dengan cemerlang dan dapat dilihat dalam skrip di akhir.

Masa

Ingatlah betapa rendahnya tangan untuk menyapu sepanjang masa. Anda dapat melihat dalam skrip bahawa ada garis time.sleep (4) sebelum kita menetapkan servo untuk berhenti berdengung. Ini kerana anda harus membiarkan tangan sampai ke tempat tujuan sebelum anda meletakkannya dalam keadaan tidak aktif. Jika tidak ia berhenti. Ini juga penting ketika menentukurnya, kerana anda melakukan banyak pergerakan dalam skrip. Saya akan mengaturnya agar berpindah ke semua 12 lokasi secara bergilir, sehingga saya dapat memeriksa semula semuanya. tetapi anda memerlukan sedikit masa di antara.

Langkah 6: Memuktamadkan Perisian - Telefon ke Servos

Setelah anda menyediakan bangku ujian dan skrip, anda boleh menjalankannya secara 'live' sebentar dan melihat bagaimana ia berfungsi dalam masa nyata. Di sinilah saya dapati pengecualian yang perlu saya tambahkan ke aliran Node-RED saya.

Anda boleh memutuskan hubungan dan menghubungkan ahli keluarga dengan mudah dalam aliran Node-RED jika anda mahu menumpukan perhatian pada satu. Contohnya, jika dua menyebabkan masalah tetapi anda mahu membetulkannya satu demi satu. Jika tidak, ingat bahawa anda akan terus menerima mesej dari mana-mana telefon yang disambungkan.

Saya menyebutkan masalah dengan berjalan kaki anjing dan rumah saudara saya agak dekat. Saya menghadapi 2 cabaran lain.

Pertama, lokasi di lokasi lain. Isteri saya sedang mengikuti kursus di sebuah kolej di London. Kami mahu itu mendaftar sebagai 'Sekolah', tetapi juga ada di 'London'. Oleh itu, kami perlu menggunakan kembali konteks untuk mengatakan bahawa jika anda meninggalkan 'Sekolah' itu, maka beralihlah ke 'London' bukan 'Perjalanan'.

Kedua, keadaan perlumbaan. Seperti yang telah disebutkan, rumah saudara saya berjarak 2 jalan, dan juga berhampiran pub / restoran kegemaran kami. Ini bermaksud bahawa kadangkala 2 isyarat diterima pada masa yang sama, atau sangat berdekatan. Ini dapat menetapkan 'keadaan perlumbaan' di mana anda memperoleh hasil yang berbeza bergantung pada logika yang paling cepat, yang membawa kepada hasil yang tidak dapat diramalkan. Untuk mengatasi ini, saya membuat semua mesej 'masuk' mempunyai kelewatan 1s dalam logik, yang sepertinya dapat menyelesaikan masalah. Mungkin ada cara yang lebih baik, lebih elegan, untuk menyelesaikannya, tetapi nampaknya berjaya.

Langkah 7: Membangunkan Jam Fizikal - Bahagian I - Servos & Gandar

Membangunkan Jam Fizikal - Bahagian I - Servos & Gandar
Membangunkan Jam Fizikal - Bahagian I - Servos & Gandar
Membangunkan Jam Fizikal - Bahagian I - Servos & Gandar
Membangunkan Jam Fizikal - Bahagian I - Servos & Gandar
Membangunkan Jam Fizikal - Bahagian I - Servos & Gandar
Membangunkan Jam Fizikal - Bahagian I - Servos & Gandar

Sekarang sedikit yang saya kurang yakin, itulah sebabnya saya membiarkannya bertahan. Saya mahukan bentuk muka yang baik dan pembinaan yang mudah. Saya juga merasa gementar kerana mendapatkan 2 servo secara bulat di gandar pusat. Ini bermaksud bahawa, setelah melihat sebentar di ebay untuk jam lama seperti yang diarahkan yang saya ikuti, saya memutuskan untuk memberikan lebih banyak peluang kepada saya dengan membuatnya sendiri.

  • Saya mendapat 2 kotak papan lapis (~ 30cm) yang saya terbaring (setebal 9mm).
  • Kemudian saya memotong rel bannister lama menjadi bahagian 4x10cm dan mengikat bahagian depan dan belakang.
  • Setelah menandakan lubang tengah, saya menggerudi untuk menjadi ukuran yang sama dengan tiub tembaga terbesar.
  • Kemudian saya cat dengan cat gloss putih biasa.
  • Selepas beberapa percubaan, saya menyedari bahawa saya mungkin tidak dapat memperoleh 4 servo pada gandar yang sama jika semuanya dipasang pada plat belakang (atau depan). Oleh itu, saya mesti mempunyai 3 + 1 atau 2 + 2, di setiap pinggan. Saya berakhir dengan 3 di bahagian belakang dan 1 di bahagian depan.
  • Saya mengusahakan ofset yang diperlukan pada sehelai kertas dan kemudian memotong tiub tembaga agar sesuai. Perhatikan bahawa tiub paling tebal adalah yang terpendek, dan yang paling nipis mesti sampai ke plat belakang. (Saya sebenarnya memasukkan lubang terkecil di lubang yang saya gerudi sebahagiannya di piring belakang, tetapi tidak sepanjang jalan sehingga gandar tidak bergerak ke belakang).
  • Untuk tiub, saya membeli pemotong tiub, tetapi ia menggunakan tekanan untuk memotongnya dan ini bermakna anda tidak boleh memasukkan tiub yang lebih kecil di dalamnya. Oleh itu, saya menggunakan gergaji besi dan kemudian perlu membuat sebilangan besar pengajuan agar mereka berjaya. Fail titik berlian sangat berharga di sini.
  • Kemudian saya memadankan rajah itu dengan pengimbangan sebenar untuk pengapit dan roda gigi *.
  • Sebaik sahaja saya mengimbangi, saya tahu betapa 'tinggi' membuat blok untuk memasang servos. Saya memecahkan beberapa blok dengan melihatnya terlalu nipis dan juga menggerudi lubang untuk membiarkan wayar keluar.
  • Kemudian datang bahagian yang sukar untuk meletakkan blok sehingga mereka betul-betul memenuhi roda di gandar. Saya mengacaukan satu blok dan kemudian dapat memutar servo untuk memenuhi gandar dan kemudian memusingkan blok kedua hujung servo yang lain. Saya juga mendapati bahawa saya perlu memotong sedikit dari beberapa blok untuk mengelakkan penyumbatan roda lain. Ia mengambil masa yang agak lama.
  • Setelah semua selesai, saya mendapatkan sarung pi raspberry saya, menggerudi dua lubang di dalamnya, dan memasukkannya ke piring depan. Kemudian saya dapat menambah Pi, menutup pinggan depan dan belakang (setelah menghubungkan servo ke pi (mengingati servo untuk ahli keluarga mana) dan beralih ke tangan …

* Di sini saya menemui masalah terbesar, yang belum dapat saya selesaikan sepenuhnya. Tiub tembaga adalah, 1/4 ", 7/32", 3/16 ", 5/32". Tetapi pengapit adalah metrik (kecuali satu yang berukuran 1/4 "). Menukar tiub menjadi metrik ialah 6.35mm, 5.56mm, 4.76mm 3.97mm. Pengapit selebihnya adalah lubang 4mm, 5mm dan 6mm. 2 terkecil dan terbesar adalah baik-baik saja. tetapi jelas 0.44mm terlalu banyak perjalanan untuk pengapit, jadi saya terpaksa memasangnya dengan kertas. Saya telah mencuba ini beberapa kali dan ia berfungsi dengan baik untuk sementara waktu dan kemudian melonggarkan lagi. tangan gagal berfungsi dengan baik. Ia baik-baik saja selama kira-kira 6 bulan, jadi masa yang dihabiskan untuk melakukan ini dengan baik adalah masa yang dilaburkan dengan baik. Tetapi jika saya melakukannya lagi, saya mungkin naik 1 ukuran ke atas atau ke bawah, dengan jurang untuk mencuba dan mendapatkan pengapit yang lebih baik untuk pemasangan tiub. mis., gunakan 9/32 ", 1/4", (celah), 3/16 ", 5/32"

Langkah 8: Tangan Jam

Tangan Jam
Tangan Jam
Tangan Jam
Tangan Jam
Tangan Jam
Tangan Jam

Saya memutuskan keluli lembaran kerana saya mahukan sesuatu yang kaku tetapi kurang senang ketika saya membuatnya. Juga kurus bermakna 4 tangan tidak menjadi masalah.

  • Mula-mula saya merangka bentuk.
  • Kemudian saya memindahkannya ke keluli di atas beberapa pita pelekat.
  • Kemudian saya sangat memotongnya dengan jigsaw saya. Mereka dulu, dan semuanya berbeza, tetapi saya tidak keberatan.
  • Kemudian seorang rakan mencadangkan saya meminjam penggiling bangku untuk membentuknya, dan ini bagus. amat disyorkan. Jika tidak, pemfailan memakan masa.
  • Masih ada beberapa pemfailan yang harus dilakukan dan kemudian pengamplasan untuk memastikan tidak ada tepi tajam dan juga kemasan yang bagus.
  • Saya terpaksa menggerudi lubang untuk memadankan tiub tembaga masing-masing (gunakan tabung yang dipotong untuk memeriksa, bukan yang dipasang pada jam).
  • Saya dapati lubang itu memerlukan sedikit pengisian untuk memasukkannya ke dalam tiub, tetapi sekali lubang itu rapat dan tidak memerlukan lem. Pengecualian adalah bahagian depan yang saya mahu mempunyai 'penutup'. Oleh itu, saya memotong sekeping keluli bulat (kebanyakan), setelah mengebor lubang dan mendapatkannya dengan ukuran yang betul, dan memasangnya ke depan. anda boleh melihatnya dalam gambar terakhir. Kadang-kadang tangan depan memerlukan sedikit gam untuk mengamankannya tetapi setelah beberapa kali salah, tangan berfungsi dengan baik.
  • Saya telah menolak idea foto (kerana anak-anak akan mengadu dengan gambar tarikh kita dengan cepat) jadi saya memutuskan untuk melukis pada inisial dengan cat akrilik.

Langkah 9: Selesaikan

Selesai!
Selesai!
Selesai!
Selesai!

Semuanya berfungsi dengan baik. Tangan kadang-kadang agak jauh, bergantung dari mana asalnya, tetapi sebenarnya tidak menjadi masalah kerana setiap lokasi adalah bahagian bukan sekadar garis.

Kadang-kadang, peliknya, telefon saya enggan mengakui bahawa saya berada di rumah. Saya jelas berada dalam radius Owntracks ketika ditunjukkan di peta, dan walaupun ketepatannya baik … Saya tidak tahu mengapa. nampaknya tidak menyusahkan seluruh keluarga saya. tetapi penyediaannya sama. Ini bermaksud bahawa Owntracks tidak pernah menghantar mesej dan saya terjebak dalam 'Traveling'. Tetapi biasanya ia akhirnya terselesaikan.

Sangat berguna jika ada di dapur kita, terutama untuk mengetahui kapan gadis-gadis itu pulang dari sekolah, atau rumah rakan mereka, dan kapan harus menyediakan makanan / teh untuk mereka.

Sekali lagi, hujung topi terima kasih kepada @ ppeters0502 atas arahan yang bagus untuk diikuti. Mudah-mudahan ini dapat menambah sesuatu membuat jam dengan 4 tangan..

Langkah 10: Perkara yang Saya Pelajari, dan Akan Lebih Baik / Berbeza Sekiranya Saya Perlu Melakukannya Lagi

  • Binaan fizikal memerlukan percubaan dan kesilapan. Tidak ada cara untuk meramalkan masalah ruang, anda hanya perlu menyelam dan mencuba.
  • Untuk kod, masalah googling adalah mustahak
  • Mulakan asas dan bina. Servo di kayu bangku ujian bermaksud bahawa saya dapat memanfaatkannya tanpa binaan fizikal
  • Saya mungkin memotong laser tangan pada mesin CNC. Tetapi saya tidak tahu di mana lokasinya, dan saya suka bagaimana keluli lembut berfungsi (ia murah dan penggiling bangku membuatnya lebih mudah)
  • motor stepper mungkin boleh dilakukan jika anda menggunakan gear untuk mendapatkan putaran 360. tetapi anda mungkin harus mempunyai servo terlalu dekat dengan gandar pusat
  • Terdapat 2 jenis servo (Futaba & HiTech). Pastikan anda telah memeriksanya kerana mereka mempunyai gigi yang berlainan. Dan pada mulanya saya membeli yang salah …
  • Jangan sambungkan topi dengan kekutuban yang salah;-)
  • Google dan Stack Overflow adalah rakan anda ketika tersekat. Tetapi anda perlu menggunakan istilah carian yang baik …
  • Bangku ujian sebenarnya adalah cara untuk mendapatkan versi yang lebih mudah dan lebih murah dengan lebih mudah. Sebilangan besar komplikasi dengan binaan berpunca dari tangan berpusing di sekitar gandar yang sama. Sekiranya anda berkompromi dengan perkara itu, maka semuanya lebih mudah. Dan saya fikir bahawa 4 mungkin had gandar tunggal kecuali poros semakin panjang. Anda boleh, saya rasa ada 3 di piring depan dan tiga di pinggan belakang jika poros lebih panjang …

Langkah 11: Kemungkinan Sambungan Masa Depan …?

Idea yang saya ada mengenai langkah seterusnya adalah seperti berikut.

  1. Saya ingin menjadikan semula iPad lama sebagai muka jam. iaitu membuat jam digital. Mungkin berasaskan penyemak imbas atau aplikasi. Oleh kerana jam fizikal pada asasnya tidak bernegara (iaitu ia tidak tahu di mana ia berada sekarang, kecuali kerana tangan berada dalam kedudukan fizikal) saya memerlukan simpanan data yang berterusan. Node Red boleh menulis ke sistem fail tempatan, jadi saya mungkin akan melakukannya.
  2. Sekiranya saya melakukannya, saya ingin melihatnya dari luar rumah. Tetapi kita benar-benar perlu menyelesaikan keselamatan. Kerana akses dalam rangkaian wifi yang sama adalah satu perkara, akses dari internet adalah perkara lain. Pada masa ini saya tidak tahu bagaimana cara terbaik untuk melakukan ini, tetapi saya mengesyaki langganan MQTT akan berfungsi dengan cara lain (pi menerbitkan status semasa dan peranti luaran melanggannya)…?
  3. Saya suka satu tangan untuk 'Abroad'. tetapi itu boleh menjadi kompleks dari sudut pandang OwnTracks. Mungkin hanya boleh menggunakan panjang / lat yang digabungkan dengan beberapa jari-jari besar?

Disyorkan: