Daftar Isi:

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

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

Video: Jam Lokasi 'Weasley' Dengan 4 Jarum: 11 Langkah (dengan Gambar)
Video: Cara Menghitung Sudut Pada Jarum Jam 2024, Juli
Anonim
Jam Lokasi 'Weasley' Dengan 4 Jarum
Jam Lokasi 'Weasley' Dengan 4 Jarum

Jadi, dengan Raspberry Pi yang sudah lama beredar, saya ingin menemukan proyek bagus yang memungkinkan saya memanfaatkannya sebaik mungkin. Saya menemukan Jam Lokasi Weasley Anda Sendiri yang Dapat Diinstruksikan oleh ppeters0502 dan berpikir bahwa akan baik untuk mencoba.

Jam pada dasarnya terdiri dari Raspberry Pi yang mengontrol servos untuk memutar jarum jam. Seperti di rumah keluarga Weasley di buku/film Harry Potter, setiap anggota keluarga memiliki tangannya sendiri. Setiap tangan menunjuk ke lokasi saat ini dari anggota keluarga itu. Jam mencapai ini dengan menerima pesan dari ponsel keluarga setiap kali mereka masuk atau keluar dari radius yang telah ditentukan.

Perbedaan utama dengan Instructable sebelumnya adalah saya harus memiliki 4 tangan, bukan 2 (jika tidak, anak perempuan saya akan mengeluh) dan saya memutuskan untuk membuat bingkai juga, tidak mendapatkan jam tua untuk digunakan kembali. Ini karena saya khawatir bahwa ruang akan menjadi masalah dalam kotak jam yang ada, dengan kebutuhan untuk memasukkan 4 servo, dll.

Butuh waktu lebih lama dari yang saya perkirakan, meskipun sebagian besar di mana saya menemukan masalah rumit yang membuat saya bingung, dan yang tampaknya tidak tercakup oleh posting asli. Tidak ada yang bertentangan dengan Instructable asli, yang umumnya hebat, tetapi beberapa tahun telah berlalu dan versi berbagai hal berubah … dll. Juga, berada di Inggris berarti bahwa beberapa elemen Imperial/Metric menyebabkan lebih banyak tantangan daripada yang saya harapkan.

Juga, sementara saya baik-baik saja dalam pengkodean, pembuatan jam secara fisik pasti membuat saya lelah, dan membutuhkan beberapa alat tambahan, yang juga agak memperlambat saya.

Di bagian akhir saya akan menyertakan bagian tentang "Hal-hal yang akan saya lakukan secara berbeda/lebih baik jika saya melakukannya lagi…"

Perlengkapan:

Salah satu hal yang mengejutkan saya adalah bahwa komponen mahal berhubungan dengan jarum jam. 4 tangan pasti jauh lebih mahal daripada 2. Saya memutuskan untuk memasukkan beberapa biaya sehingga Anda memiliki beberapa ide. Ini adalah pertama kalinya saya menambahkan semuanya, dan mengabaikan alat, saya pikir saya menghabiskan sekitar £200. Ditambah beberapa barang yang tidak saya gunakan (dan belum termasuk di bawah) ditambah Pi, ditambah catu daya yang sudah saya miliki.

Pi dll

  1. Raspberry Pi - tidak dapat mengingat berapa biaya awalnya tetapi itu adalah Model 2B. Saya pikir jika Anda belum memilikinya, maka bahkan Pi Zero mungkin akan melakukannya. Saya telah menambahkan dongle wifi dan kartu SD dengan Raspbian. Dan saya memiliki pengisi daya ponsel Android lama tergeletak di sekitar.
  2. Adafruit Servohat untuk Pi - £16
  3. Catu daya untuk Servohat - Ini sangat sulit saya temukan karena semua situs web hanya menunjuk ke situs adafruit yang kemudian, jelas merekomendasikan catu daya AS. Kemudian saya menyadari bahwa saya memiliki suplai tegangan variabel lama dengan tip yang dapat dipertukarkan, jadi saya menggunakannya. Tapi yang AS adalah $8 jadi itu kasarnya.
  4. Kasing untuk Pi, sehingga saya bisa memasangnya ke bingkai jam. £5

Servo dan roda gigi

Di sini saya mengutip harga untuk semua 4, jadi bagilah jika Anda ingin lebih sedikit tangan (Menambahkannya adalah ~£40 PER HAND = £160:-o

  1. 4 x Servos - Saya menggunakan yang direkomendasikan oleh ppeters0502 - ditemukan di ebay seharga ~ £15 masing-masing = £60 - Saya mencari teks berikut "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-derajat " tapi terkadang mereka tidak tersedia
  2. 4 x tabung kuningan yang dipasang persis di dalam satu sama lain - ~ £3 masing-masing. Saya mendapat 1 masing-masing 1/4", 7/32", 3/16", 5/32" = £11
  3. 4 x klem yang menjepit tabung kuningan untuk memungkinkan Anda memasang roda gigi. ~ £7 masing-masing = £28. Saya mendapatkannya dari ActiveRobots yang melakukan pesanan reguler dari Servocity di AS, memungkinkan Anda menghindari pengiriman internasional. Mereka juga bisa mendapatkan apa pun yang dapat Anda temukan di situs utama AS Servocity. Ini sangat berguna untuk 2 item berikutnya
  4. 4 x roda gigi pola asetil 0,770" untuk pemasangan pada hub penjepit. ~ £6 masing-masing = £24
  5. 4 x roda gigi asetil yang dipasang di spline untuk pemasangan pada servos. ~ £6,50 masing-masing = £26
  6. 1 x pak mur hex ke roda gigi yang terpasang ke mur penjepit = £2,60
  7. 1 x 7/64" kunci hex (kunci allen) karena apa pun yang berasal dari AS adalah imperial, jadi ratusan kunci allen yang saya miliki tidak berguna = £1

Untuk bangunan fisik

Di sini saya kebanyakan menggunakan potongan dari hal-hal yang saya bohongi

  1. 2 x kotak kayu lapis untuk pelat 'muka' dan 'belakang'
  2. Saya kemudian memotong silinder 4x10cm dari rel pegangan tangga lama yang saya miliki, untuk menghubungkan bagian belakang ke muka
  3. Beberapa blok untuk memasang servos pada offset yang benar - hanya potongan kayu lunak yang saya potong sesuai ukuran.
  4. Berbagai macam sekrup. dari sangat kecil (untuk memasang kotak Pi ke bingkai) hingga sedang (untuk memasang bingkai bersama-sama)
  5. Lembaran baja ringan 0.75mm sekitar 50cm x 20cm (untuk memotong tangan). Ini adalah satu-satunya yang saya beli ~£9 dari Wickes

Peralatan

Beberapa hal yang saya miliki dan beberapa saya pinjam atau beli

  1. Solder Iron + solder listrik - untuk memasang konektor ke Adafruit Hat & Pi.
  2. Jigsaw - untuk memotong bentuk tangan yang kasar
  3. Mengebor. hanya bor 18V tanpa kabel biasa
  4. Mata bor - Ingatlah bahwa Anda AKAN membutuhkan mata bor imperial untuk membuat lubang yang cocok dengan tabung kuningan. Saya berhasil meminjam beberapa.
  5. gergaji besi - untuk memotong tabung kuningan. Jangan lakukan apa yang saya lakukan dan habiskan £3 untuk pemotong tabung, itu bekerja dengan tekanan dan berarti bagian dalam tabung menjadi sedikit lebih kecil. jadi tabung ukuran berikutnya tidak bisa masuk
  6. Penggiling bangku - Saya tidak memilikinya tetapi seorang teman memilikinya dan itu membuat membentuk tangan JAUH lebih mudah. Sampai saat itu saya hanya menggunakan file. Saya tidak akan membeli satu hanya untuk proyek ini, tetapi untuk tangan logam itu bagus.
  7. Saya membeli beberapa macam file titik berlian (sangat kecil). berguna untuk tangan dan tabung sekitar £15
  8. amplas kasar dan halus
  9. beberapa klem kecil menahan benda di tempatnya saat mengebor.
  10. wakil untuk alasan yang sama.

Langkah 1: Menyiapkan Ponsel Anda untuk Mengirim Lokasi Mereka ke Pi Anda (Bagian I MQTT Broker)

Bit ini dijelaskan dengan sangat baik oleh ppeters0502 dalam Weasley Clock Instructable-nya yang luar biasa. Anehnya, meskipun mungkin mencerminkan keahlian yang berbeda, dia mulai dengan build dan kemudian pindah ke perangkat lunak, saya melakukannya sebaliknya. Jadi, saya mulai dengan telepon … tunggu, tidak, saya mulai dengan broker MQTT, yaitu Langkah 6 di Instructable-nya. Saya akan menghilangkan semua bagian yang dia lakukan dengan sangat baik dan hanya memasukkan beberapa bagian yang mungkin saya tambahkan. Saya mengikuti rute CloudMQTT yang dia sebutkan.

TAPI ketika saya menulis ini, saya memeriksa tautan ke paket dan menemukan bahwa tidak ada lagi paket gratis! Mereka menariknya, untuk alasan yang tampaknya masuk akal. yaitu bahwa orang akan membuat instance gratis dan kemudian tidak pernah menggunakannya. Saya tidak menyadarinya karena instance saat ini dapat berlanjut. Jadi saya tidak akan berubah. Tapi itu membuat instruksi agak berlebihan. Sepertinya ada 3 pilihan.

  1. Bayar $5 per bulan untuk Cloud MQTT (tapi kedengarannya mahal untuk jam secara berkelanjutan).
  2. Pergi ke rute Mosquitto on Pi seperti yang dijelaskan dalam Instructable pertama. Saya tidak bisa mengomentari itu, tapi bisa menjadi pilihan yang baik.
  3. Hanya google "broker awan MQTT gratis" dan sepertinya ada beberapa yang lain.

Jadi, dengan asumsi Anda memiliki broker MQTT yang berfungsi, jika itu seperti yang CloudMQTT maka akan ada Server, Pengguna, Kata Sandi, dan Port yang ditampilkan. Anda akan memerlukan semua ini untuk menyiapkan ponsel Anda untuk mengirim broker lokasi/pergerakan Anda.

Langkah 2: Menyiapkan Ponsel Anda untuk Mengirim Lokasi Mereka ke Pi Anda (Bagian II Owntracks)

Ini juga dibahas dengan sangat baik di Instructable asli, di Langkah 7 (Android), 8 (iOS) & 9 (mengatur Wilayah).

Saya hanya memiliki perangkat iOS jadi tidak mencoba langkah 7.

Apa yang akan saya tambahkan ke instruksi itu?

  1. Di set-up ada juga bidang TrackerID dan DeviceID. Ini Anda harus memiliki sebagai mampu mengidentifikasi Anda dalam keluarga Anda. Misalnya. Saya memilikinya sebagai R dan RPhone masing-masing. Ini berarti bahwa Anda dapat melewati ke jam Servo mana dan karena itu tangan mana yang harus diputar.
  2. Regions adalah nama untuk lokasi yang ingin Anda lacak.
  3. Setiap wilayah ditentukan oleh Nama, Lintang, Bujur, dan Radius.
  4. Karena saya ingin memiliki sejumlah lokasi sebagai satu bagian di Jam saya, saya menggunakan konvensi penamaan, yang ternyata sangat berguna. Metode lain dimungkinkan tetapi ini berhasil untuk saya.

    • Misalnya, Untuk bagian KELUARGA jam saya ingin memiliki orang tua dan saudara kandung dan orang tua dan saudara istri saya. Oleh karena itu saya memiliki lokasi seperti "Family Tom", "Family Dick", Family Harry" & "Family ParentsR". Ini berarti bahwa tahap selanjutnya dapat mengetahui apa yang harus diteruskan ke Jam.
    • Ingatlah bahwa orang dapat memiliki lokasi yang berbeda. Tetapi selama mereka konsisten dengan konvensi penamaan maka tidak apa-apa. Misalnya. pekerjaan saya akan berbeda dari wilayah kerja istri saya dan disebut berbeda. tetapi selama mereka berdua mulai "Bekerja" maka semuanya baik-baik saja.
  5. Anda ingin mode disetel ke 'Significant' di layar Maps. Ini berarti bahwa Anda (kebanyakan) hanya menerima pesan saat Anda memasuki atau meninggalkan wilayah. Ini tampaknya merupakan versi terbaru dari catatan bertanda PENTING: di akhir Langkah 8 di Instructable.
  6. Seperti disebutkan dalam Instructable asli, menggunakan Google Maps adalah cara yang bagus untuk mengetahui Lintang/Bujur suatu tempat. Saya merasa lebih efisien untuk melakukan ini secara massal, mencari tahu semua Lat/Longs dari lokasi saya, lalu saya menempelkannya ke Notes (di Mac saya) dan dengan sinkronisasi cloud, itu berarti mereka muncul secara ajaib di iPhone saya di Notes dan saya dapat menyalin/menempelkannya ke Owntracks. Itu juga berarti saya dapat mengirim file ke ponsel keluarga saya dan kami semua memiliki lokasi yang konsisten.
  7. Lokasi yang berdekatan dapat menimbulkan masalah. Kakak saya tinggal 2 jalan jauhnya, dan awalnya hp saya terus berpikir bahwa saya secara bersamaan di wilayah rumahnya juga di rumah. Akhirnya saya harus memasukkan logika tambahan ke Node Red untuk menangkap dan mengabaikan hal ini terjadi.

Langkah 3: Menyiapkan Raspberry Pi

Menyiapkan Pi Raspberry
Menyiapkan Pi Raspberry

Jadi di sini saya berasumsi bahwa Anda memiliki pengaturan Pi dasar dan wifi. Saya menjalankan Raspbian tetapi itu tidak masalah. Gunakan instruksi di raspberrypi.org untuk menyiapkan semuanya.

Perhatikan bahwa Pi memiliki port untuk ditampilkan ke monitor dan keyboard/mouse dll. TAPI jelas sekali Anda memilikinya di jam, Anda tidak menginginkan semua itu. Jadi jawabannya, disarankan oleh seseorang di situs web Raspberry pi, saya pikir, adalah mengatur koneksi VNC. Ini memungkinkan Anda untuk terhubung dari perangkat lain ke Pi dan mengontrolnya juga. Saya melakukannya dari Mac saya tetapi juga melakukannya dari iPad. Saya sarankan menggunakan sesuatu dengan keyboard untuk kemudahan penggunaan.

Saya baru saja menemukan bahwa mereka tampaknya telah membuatnya lebih mudah sejak saya terhubung … lihat di sini

Pada dasarnya Anda terhubung dan mendapatkan jendela yang merupakan antarmuka Pi standar.

Jadi, Anda memiliki jendela ke Pi Anda dari laptop atau komputer Anda.

Sekarang Anda perlu menghubungkan Servos.

Pertama, Anda perlu melakukan penyolderan yang cukup mendasar untuk mendapatkan topi adafruit ke Pi. Ini sedikit rumit, tetapi meskipun tidak disolder selama 30 tahun, itu baik-baik saja. Seperti biasa, saya menemukan video YouTube yang berguna untuk memandu saya melewatinya, yang sangat membantu.

Sementara topi dapat menjalankan 16 servos, saya hanya membutuhkan 4 dan saya hanya repot-repot menyolder set pertama dari 4 pin.

Kemudian servos hanya mendorong ke pin. Saya melakukan yang pertama untuk memeriksa bahwa saya benar-benar bisa membuat servo bergerak.

Di sinilah saya mengalami hambatan besar pertama saya. Saya memiliki skrip python yang sangat mendasar untuk memindahkan servos dan secara harfiah tidak ada yang terjadi. Saya menghabiskan sekitar satu minggu mencoba skrip baru, dll, dan kemudian asap mulai muncul di topi. Mematikan semuanya, saya memeriksa skema. Itu adalah komponen yang melindungi terhadap polaritas terbalik. Karena saya memiliki sumber daya multi-ujung, multi-tegangan, saya telah melewatkan fakta bahwa Anda dapat membuat keluaran DC berjalan dua arah dengan membalikkan ujungnya. Saya salah (peluang 50:50) dan baru saja membakar topi adafruit pertama saya

:-(Jadi sedikit penundaan saat saya membeli yang baru, menyolder ulang dan memperbaiki ujungnya. Jauh lebih baik.

Selanjutnya saya perlu mencari cara untuk memindahkan servos ke titik yang benar pada jam. Itu akan datang pada Langkah 5, tetapi apa yang saya lakukan, karena tidak membuat jam yang sebenarnya, adalah dengan sedikit mengencangkan servos ke sedikit kayu acak, dan menempelkan selotip dengan panah di atasnya, seperti pada gambar. Ini memberikan umpan balik yang sangat visual untuk apa yang saya koding.

Langkah 4: Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)

Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)
Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)
Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)
Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)
Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)
Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)
Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)
Menginstal Node Red (Mendapatkan Pesan Dari Server MQTT ke Skrip Python Anda)

Node-RED adalah program yang Anda instal di Pi, yang memberi Anda antarmuka visual (di browser Anda) untuk menerima pesan dari Server MQTT Anda dan menggunakannya untuk meneruskan informasi yang benar ke skrip python Anda (dibahas di langkah berikutnya (Langkah 5). Saya cukup banyak menggunakan instruksi oleh ppeters0502 di Langkah 5. Ada logika dalam alur ini, dan logika tambahan di python, dan Anda dapat memiliki lebih atau kurang di masing-masing, tergantung pada preferensi Anda. Pada dasarnya Anda perlu melakukannya pengikut

  1. Telah menerima node untuk pesan MQTT - ini berwarna ungu muda dan saya memiliki 1 per anggota keluarga
  2. Petakan itu ke servo yang ingin Anda pindahkan (bernomor 0, 1, 2, 3)
  3. Tentukan apakah Anda memasuki atau meninggalkan radius di OwnTracks
  4. Cari tahu lokasi mana yang harus ditunjuk oleh servo

    Ada beberapa pengecualian untuk aturan dasar yang harus saya buat

  5. Atur sudut dengan benar

Saya meminta Node-RED melakukan 4 yang pertama, dan membuat Python relatif sederhana.

Anda dapat melihat aliran dasar di sini, dan semua aliran dapat diekspor ke format di sini, yang berarti Anda dapat mengimpor aliran dasar ini ke Node-RED Anda dan kemudian beradaptasi. Perhatikan bahwa saya telah menghapus semua koneksi dari node ungu sehingga Anda tidak dapat mengakses instans MQTT saya. Saya juga menghapus semua test-node karena mengandung data aktual… Anda mungkin perlu mengubah jenis file ini menjadi flow.json untuk mengimpor ke Node-RED Anda tetapi Instructables tidak mengizinkan saya mengunggahnya.

Node hijau adalah node debug yang kemudian menampilkan output di jendela debug di sebelah kanan layar (mungkin perlu diperluas - temukan panah setengah di sebelah kanan)

Bit pertama yang harus dilakukan adalah bit "Langsung - hanya untuk debugging". Itu memeriksa bahwa Anda dapat menerima pesan MQTT dan melihat apa yang ada di dalamnya. json hanyalah versi pesan yang lebih terstruktur yang memungkinkan Anda mengeluarkan data dengan lebih mudah. Dalam aliran ini, ketika hidup, saya kemudian menghubungkan simpul ungu di kiri atas ke simpul json di sebelah kanannya.

Pengujian Node

Setelah Anda tahu bagaimana pesan akan terlihat secara langsung, akan sangat membosankan jika harus berjalan keluar rumah dan menyusuri jalan dan kembali, hanya untuk memicu suatu peristiwa. Setelah Anda selesai melakukannya, Anda dapat menyalin pesan ke pemicu TEST, lalu klik saja untuk mensimulasikan acara tersebut. Anda juga dapat mengubah data, untuk berpura-pura menjadi lokasi yang berbeda (pastikan mereka sesuai dengan nama lokasi di Owntracks).

Anda dapat melihat dalam alur bahwa semua kasus uji masuk ke simpul terpisah dan kemudian masuk ke simpul json. Ini murni untuk merapikan layar.

Saya tidak bisa cukup menekankan betapa bergunanya simpul-simpul ini, dan masih ada.

Memanggil Python

Jadi saya kemudian menabrak penghalang jalan berikutnya. Yang ini membutuhkan BANYAK googling di forum dll. Alur saya akan bekerja dengan sempurna, tetapi itu tidak akan memicu skrip python saya. Saya tidak dapat menyelesaikan ini, tetapi saya akan mengampuni Anda dari sumpah serapah dll. Hanya untuk mengatakan bahwa, seperti yang disorot pada tangkapan layar kedua, Anda harus menentukan python3, karena tampaknya Node-RED mengasumsikan python2, kecuali jika Anda menentukannya.

2 komplikasi tambahan - hanya jika diperlukan

Saya kemudian memiliki sejumlah tantangan di mana logika tidak cukup bekerja. Pertama adalah Owntracks menjadi agak aneh dan, karena saudara laki-laki saya tinggal 2 jalan jauhnya, sering dikatakan bahwa saya berada di 2 tempat sekaligus, atau terus berpindah-pindah. Satu-satunya cara saya bisa mengatasinya adalah dengan menambahkan kondisi untuk menghentikan positif palsu. Jika ia mengklaim bahwa saya berada di rumahnya, maka saya mengarahkan dan memeriksa Bujur/Lintang yang sebenarnya dalam pesan tersebut dan membatalkannya jika dikatakan bahwa saya benar-benar berada di rumah.

Masalah lainnya adalah, ketika berjalan dengan anjing saya, saya tidak bisa mendapatkan radius yang baik. Saya biasanya berjalan di area yang sama, jadi di sini, saya berkata "jika saya memasuki area ini, saya pasti berjalan anjing, dan akan sampai saya pulang." ini berarti bahwa itu tidak akan beralih ke pub yang saya lewati dalam perjalanan pulang, atau berbagai tempat lokal lainnya yang dapat memicu anjing berjalan-jalan. Untuk melakukan ini, saya perlu menyiapkan beberapa variabel Konteks yang persisten (lihat di Node-RED. Lihat tangkapan layar. Variabel-variabel ini bertahan sampai Node-RED dimulai ulang dan jadi saya dapat mengatakan Jika berjalan-jalan, atur Variabel Konteks ke "Anjing". Lalu abaikan APA SAJA kecuali saya 'Masuk' Rumah.

Tangkapan layar terakhir adalah salah satu aliran terakhir saya yang sebenarnya, dengan semua pengecualian, hanya untuk minat Anda.

Langkah 5: Sebenarnya Memindahkan Servo Dengan Python di Pi

Pengalihan singkat ke servos. Saya tidak tahu apa-apa tentang servos, tetapi ada banyak informasi online. Yang saya gunakan adalah servos kontinu yang dapat berputar 360 derajat, dan lancar. Jenis utama lainnya adalah servos stepper yang bergerak dalam potongan (langkah) dan tampaknya hanya naik sekitar 180 derajat (jelas tidak berguna di sini). Keuntungan dari servos stepper adalah Anda bisa meletakkannya di sudut dan mereka bergerak ke titik itu, dan berhenti. Semua dokumentasi yang saya temukan mengatakan bahwa servos terus menerus bekerja dengan diberi kecepatan, dan waktu untuk mempertahankan kecepatan itu (mis. Setelah banyak upaya, saya tidak dapat menjalankannya, tetapi menemukan, menggunakan bangku tes, bahwa servos secara konsisten kembali ke titik yang sama dengan sudut yang sama. Yang jauh lebih mudah, jadi saya lakukan saja. Mungkin ada beberapa kelemahan yang saya tidak tahu, tetapi itu berhasil untuk saya. Namun, perhatikan bahwa setiap servo adalah unik, sehingga Anda harus memiliki kumpulan sudut yang unik untuk setiap servo. Saya merasa paling mudah untuk memiliki skrip python 'kalibrasi', di mana saya dapat mengatur servos ke sudut secara bergantian, menyempurnakannya sampai semuanya terlihat benar. Ini adalah skrip pertama yang dilampirkan. Anda cukup mengomentari servos yang tidak Anda uji, berkonsentrasi pada satu, dan kemudian sesuaikan nilainya sesuai kebutuhan. CATATAN: kalibrasi untuk test-bench sederhana dan kasar dan siap. Anda perlu mengkalibrasi ulang saat jam dipasang, karena roda gigi dll akan mengubah segalanya. Kemudian skrip kedua cukup mendasar. Ini melakukan hal berikut:

  1. Impor beberapa perpustakaan
  2. pindahkan variabel yang berasal dari Node-RED ke variabel dalam skrip
  3. memetakan sudut yang ditentukan oleh skrip kalibrasi ke lokasi pada jam.
  4. periksa apakah lokasi ditemukan dalam daftar, dan jika tidak maka pindah ke "Peril"
  5. tulis apa yang dilakukan pada file log
  6. pindahkan servo yang diperlukan ke sudut yang diperlukan
  7. Hentikan satu servo dari 'berdengung' *

3 hal yang perlu diperhatikan.

File log sangat berguna untuk debugging. Ini berarti Anda dapat melihat debug Node-RED dari sebuah pesan, dan kemudian melihat apa yang terjadi di skrip. outputnya seperti ini. 3 yang pertama adalah saya mengajak anjing jalan-jalan, dan kemudian anak 1 meninggalkan rumah dan tiba di sekolah. Catatan untuk memeriksa waktu pada Pi. Ini mungkin default ke UTC dan tidak memungkinkan untuk perubahan waktu musim panas/musim dingin. Misalnya. waktu di bawah adalah 1 jam keluar.

2020-12-07_05:36:03 Who = 0, loc = Travelling, detail = Home, Angle = 10, index = 8

2020-12-07_05:36:04 Siapa = 0, loc = Anjing, detail = Astons, Sudut = 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 Who = 2, loc = Travelling, detail = Home, Angle = 19, index = 8

2020-12-07_06:30:48 Siapa = 2, lokasi = Sekolah, detail = N, Sudut = 60,5, indeks = 2

Servo-berdengung

Salah satu Servos (0) terus berdengung setelah akhir skrip. Seperti yang dapat Anda bayangkan, ini sangat menjengkelkan untuk dimiliki di dapur kami. Saya menemukan utas di suatu tempat yang menyebutkan pengaturan sudut servo ke 'tidak ada' yang entah bagaimana membuatnya diam. Itu bekerja dengan sangat baik dan dapat dilihat pada naskah di bagian akhir.

Pengaturan waktu

Ingatlah seberapa rendah tangan yang dibutuhkan untuk menyapu sepanjang waktu. Anda dapat melihat dalam skrip bahwa ada baris time.sleep(4) tepat sebelum kita mengatur servo untuk berhenti berdengung. Itu karena Anda harus membiarkan tangan mencapai tujuannya sebelum Anda mengaturnya ke idle. Kalau tidak, itu hanya berhenti. Ini juga penting saat mengkalibrasinya, karena Anda melakukan banyak gerakan di dalam skrip. Saya akan mengaturnya berjalan untuk pindah ke semua 12 lokasi secara bergantian, sehingga saya bisa memeriksa ulang semuanya. tetapi Anda perlu sedikit waktu di antaranya.

Langkah 6: Menyelesaikan Perangkat Lunak - Telepon ke Servo

Setelah bangku tes dan skrip disiapkan, Anda dapat menjalankannya 'langsung' sebentar dan melihat cara kerjanya secara real time. Di sinilah saya menemukan pengecualian yang perlu saya tambahkan ke aliran Node-RED saya.

Anda dapat dengan mudah memutuskan dan menghubungkan anggota keluarga dalam aliran Node-RED jika Anda ingin berkonsentrasi pada satu. Misalnya, jika dua menyebabkan masalah tetapi Anda ingin memperbaikinya satu per satu. Jika tidak, ingatlah bahwa Anda akan terus menerima pesan dari ponsel mana pun yang terhubung.

Saya menyebutkan masalah dengan berjalan-jalan dengan Anjing dan rumah saudara laki-laki saya cukup dekat. Saya punya 2 tantangan lain.

Pertama, lokasi di dalam lokasi lain. Istri saya sedang mengikuti kursus di sebuah perguruan tinggi di London. Kami ingin mendaftar sebagai 'Sekolah', tetapi juga di 'London'. Jadi kami perlu menggunakan kembali konteksnya untuk mengatakan bahwa jika Anda meninggalkan 'Sekolah' itu maka pindah ke 'London' bukan 'Bepergian'.

Kedua, kondisi balapan. Seperti yang disebutkan, rumah saudara laki-laki saya berjarak 2 jalan, dan juga dekat dengan pub/restoran favorit kami. Ini berarti bahwa terkadang 2 sinyal diterima secara bersamaan, atau sangat berdekatan. Ini dapat mengatur 'kondisi balapan' di mana Anda mendapatkan hasil yang berbeda tergantung pada mana yang melewati logika tercepat, yang mengarah ke hasil yang tidak terduga. Untuk mengatasi ini, saya membuat semua pesan 'memasuki' memiliki penundaan 1 detik dalam logika, yang sepertinya memperbaiki masalah. Mungkin ada cara yang lebih baik, lebih elegan, untuk menyelesaikan ini, tetapi tampaknya berhasil.

Langkah 7: Membangun Jam Fisik - Bagian I - Servos & Gandar

Membangun Jam Fisik - Bagian I - Servos & Gandar
Membangun Jam Fisik - Bagian I - Servos & Gandar
Membangun Jam Fisik - Bagian I - Servos & Gandar
Membangun Jam Fisik - Bagian I - Servos & Gandar
Membangun Jam Fisik - Bagian I - Servos & Gandar
Membangun Jam Fisik - Bagian I - Servos & Gandar

Sekarang bagian yang paling tidak saya yakini, itulah sebabnya saya membiarkannya bertahan. Saya menginginkan wajah dengan ukuran yang layak dan konstruksi yang mudah. Saya juga gugup karena secara fisik mendapatkan 2 servos di sekitar poros tengah. Ini berarti bahwa, setelah melihat sekilas di ebay untuk jam-jam tua seperti dalam instruksi yang saya ikuti, saya memutuskan untuk memberi diri saya lebih banyak kesempatan dengan membangunnya sendiri.

  • Saya mendapat 2 kotak kayu lapis besar (~ 30cm) yang saya letakkan di sekitar (tebal sekitar 9mm).
  • Kemudian saya memotong rel bannister tua menjadi bagian 4x10cm dan memasang pelat depan dan belakang.
  • Setelah menandai lubang tengah, saya mengebornya dengan ukuran yang sama dengan tabung kuningan terbesar.
  • Kemudian saya mengecatnya dengan cat gloss putih biasa.
  • Setelah beberapa percobaan, saya menyadari bahwa saya mungkin tidak bisa mendapatkan 4 servos pada poros yang sama jika semuanya dipasang ke pelat belakang (atau depan). Jadi saya perlu memiliki 3 + 1 atau 2 + 2, di setiap piring. Saya berakhir dengan 3 di belakang dan 1 di depan.
  • Saya mengerjakan offset yang diperlukan pada selembar kertas dan kemudian memotong tabung kuningan agar sesuai. Perhatikan bahwa tabung paling tebal adalah yang terpendek, dan yang paling tipis harus sampai ke pelat belakang. (Saya benar-benar menyematkan yang terkecil di lubang yang saya bor sebagian di pelat belakang, tetapi tidak sepenuhnya sehingga gandar tidak bergerak mundur).
  • Untuk tabung, saya membeli pemotong tabung, tapi itu menggunakan tekanan untuk memotongnya dan itu berarti Anda tidak bisa memasukkan tabung yang lebih kecil ke dalamnya. Jadi saya menggunakan gergaji besi dan kemudian harus melakukan cukup banyak pengarsipan untuk membuatnya bekerja. Point-file berlian sangat berharga di sini.
  • Kemudian saya mencocokkan diagram dengan offset sebenarnya untuk klem dan roda gigi *.
  • Setelah saya memiliki offset, saya tahu seberapa 'tinggi' untuk membuat blok untuk memasang servos. Saya memecahkan beberapa balok dengan menggergajinya terlalu tipis dan juga mengebor lubang untuk melepaskan kawat.
  • Kemudian datang bagian yang sulit untuk meletakkan balok-balok itu sehingga mereka benar-benar bertemu dengan roda-roda pada porosnya. Saya memasang satu blok dan kemudian bisa memutar servo untuk memenuhi poros dan kemudian memasang di blok kedua ujung servo yang lain. Saya juga menemukan bahwa saya perlu memotong sedikit dari beberapa blok untuk menghindari tersangkut roda penggerak lainnya. Butuh waktu cukup lama.
  • Setelah saya menyelesaikan semua itu, saya mendapatkan kotak raspberry pi saya, mengebor dua lubang di dalamnya, dan memasangnya ke pelat depan. Kemudian saya dapat menambahkan Pi, menutup pelat depan dan belakang (setelah menghubungkan servos ke pi (mengingat servo mana untuk anggota keluarga) dan beralih ke tangan…

* Di sini saya menemukan masalah terbesar, yang belum sepenuhnya saya selesaikan. Tabung kuningan itu, 1/4", 7/32", 3/16", 5/32". Tetapi klemnya adalah metrik (kecuali satu yang berukuran 1/4"). Mengubah tabung menjadi metrik adalah 6.35mm, 5.56mm, 4.76mm 3.97mm. Klem yang tersisa adalah lubang 4mm, 5mm dan 6mm. terbesar baik-baik saja. tapi jelas 0,44mm terlalu banyak perjalanan untuk penjepit jadi saya harus melapisinya dengan kertas. Saya telah mencoba ini beberapa kali dan berfungsi dengan baik untuk sementara waktu dan kemudian mengendur lagi. Jadi yang terbesar ke-2 tangan gagal bekerja dengan baik. Itu baik-baik saja selama sekitar 6 bulan, jadi waktu yang dihabiskan untuk melakukan ini dengan baik adalah waktu yang diinvestasikan dengan baik. Tetapi jika saya melakukannya lagi, saya mungkin akan naik atau turun 1 ukuran, dengan celah untuk mencoba dan mendapatkan penjepit yang lebih baik untuk tabung fit. misalnya pergi untuk 9/32", 1/4", (celah), 3/16", 5/32"

Langkah 8: Jarum Jam

Jarum Jam
Jarum Jam
Jarum Jam
Jarum Jam
Jarum Jam
Jarum Jam

Saya memutuskan pada baja lembaran karena saya menginginkan sesuatu yang kaku tetapi kecil kemungkinannya untuk patah saat saya membuatnya. Juga menjadi kurus berarti 4 tangan tidak menjadi masalah.

  • Pertama saya membuat sketsa bentuk.
  • Kemudian saya memindahkannya ke baja di atas selotip.
  • Kemudian saya dengan sangat tidak ahli memotongnya dengan jigsaw saya. Mereka dulu, dan sekarang, semuanya berbeda, tapi aku tidak keberatan.
  • Kemudian seorang teman menyarankan saya meminjam penggiling bangkunya untuk membentuknya, dan ini bagus. sangat dianjurkan. Jika tidak, pengarsipan membutuhkan waktu lama.
  • Masih ada beberapa pengarsipan yang harus dilakukan dan kemudian pengamplasan untuk memastikan tidak ada tepi yang tajam dan juga hasil akhir yang bagus.
  • Saya harus mengebor lubang untuk mencocokkan tabung kuningan masing-masing (gunakan tabung yang dipotong untuk memeriksa, bukan yang terpasang pada jam).
  • Saya menemukan bahwa lubang-lubang itu membutuhkan sedikit pengarsipan untuk memasukkannya ke dalam tabung, tetapi sekali lubang itu kencang dan tidak membutuhkan lem. Pengecualian adalah tangan depan yang saya ingin memiliki 'penutup'. Jadi saya memotong (kebanyakan) sepotong baja bundar, setelah mengebor lubang dan membuatnya dengan ukuran yang tepat, dan merekatkannya ke depan. bisa dilihat di gambar terakhir. Kadang-kadang tangan depan membutuhkan setetes lem untuk mengamankannya, tetapi setelah beberapa kali salah memulai, tangan bekerja dengan sangat baik.
  • Saya telah menolak ide foto (karena anak-anak akan mengeluh tentang foto kencan kami dengan cepat) jadi saya memutuskan untuk melukis inisial dengan cat akrilik.

Langkah 9: Selesai

Menyelesaikan!
Menyelesaikan!
Menyelesaikan!
Menyelesaikan!

Semuanya bekerja dengan sangat baik. Tangannya terkadang agak lepas, tergantung dari mana asalnya, tapi sebenarnya tidak masalah karena setiap lokasi adalah bagian bukan sekedar garis.

Terkadang, anehnya, ponsel saya menolak untuk mengakui bahwa saya di rumah. Saya jelas berada dalam radius Owntracks ketika ditampilkan di peta, dan bahkan ketika akurasinya bagus… Saya tidak tahu mengapa. tampaknya tidak menimpa seluruh keluarga saya. tapi settingnya sama. Ini berarti Owntracks tidak pernah mengirim pesan dan saya terjebak dalam 'Travelling'. Tapi biasanya akan beres dengan sendirinya pada akhirnya.

Sangat berguna untuk ada di dapur kami, terutama untuk mengetahui kapan gadis-gadis itu pulang dari sekolah, atau rumah teman-teman mereka, dan kapan harus menyiapkan makanan/teh untuk mereka.

Sekali lagi, ucapan terima kasih yang sebesar-besarnya kepada @ppeters0502 atas instruksi yang bagus untuk diikuti. Semoga ini bisa menambah sesuatu seputar pembuatan jam dengan 4 tangan..

Langkah 10: Hal-hal yang Saya Pelajari, dan Akan Lebih Baik/Berbeda Jika Saya Harus Melakukannya Lagi

  • Bangunan fisik membutuhkan trial and error. Tidak ada cara untuk memprediksi masalah ruang, Anda hanya perlu menyelam dan mencoba.
  • Untuk kode, masalah googling sangat penting
  • Mulai dasar dan bangun. Servo di kayu bangku uji berarti saya bisa membuat sebagian besar bekerja tanpa bangunan fisik
  • Saya mungkin mendapat potongan laser tangan di mesin CNC. Tapi saya tidak tahu di mana yang lokal, dan saya suka bagaimana baja ringan bekerja (murah dan penggiling bangku membuatnya lebih mudah)
  • motor stepper dimungkinkan jika Anda menggunakan roda gigi untuk mendapatkan putaran 360. tetapi Anda mungkin harus memiliki servos terlalu dekat dengan poros tengah
  • Ada 2 jenis servo (Futaba & HiTech). Pastikan Anda telah memeriksa ini karena mereka memiliki jumlah gigi yang berbeda pada spline. Dan awalnya saya salah beli…
  • Jangan hubungkan topi dengan polaritas yang salah;-)
  • Google dan Stack Overflow adalah teman Anda saat macet. Tetapi Anda perlu menggunakan istilah pencarian yang baik…
  • Bangku tes sebenarnya adalah cara agar Anda bisa mendapatkan versi yang lebih sederhana dan lebih murah dengan lebih mudah. Sebagian besar komplikasi dengan build berasal dari keharusan memutar tangan di sekitar poros yang sama. Jika Anda berkompromi dengan itu, maka semuanya jauh lebih mudah. Dan saya pikir 4 mungkin menjadi batas poros tunggal kecuali porosnya menjadi lebih panjang. Anda bisa, saya kira memiliki 3 di pelat depan dan tiga di pelat belakang jika porosnya lebih panjang …

Langkah 11: Kemungkinan Ekstensi Masa Depan…?

Gagasan yang saya miliki tentang langkah selanjutnya adalah sebagai berikut.

  1. Saya ingin menggunakan kembali iPad lama sebagai tampilan jam. yaitu membuat jam digital. Mungkin berbasis browser atau aplikasi. Karena jam fisik pada dasarnya tidak memiliki kewarganegaraan (yaitu tidak tahu di mana saat ini, kecuali karena jarum berada dalam posisi fisik), saya harus memiliki penyimpanan data yang persisten. Node Red dapat menulis ke sistem file lokal, jadi saya mungkin akan melakukannya.
  2. Jika saya melakukan itu maka saya ingin dapat melihatnya dari luar rumah. Tapi kemudian kita benar-benar perlu memilah keamanan. Karena akses dalam jaringan wifi yang sama adalah satu hal, akses dari internet adalah hal lain. Saat ini saya tidak tahu tentang cara terbaik untuk melakukan ini, tetapi saya menduga langganan MQTT dengan cara lain dapat bekerja (pi menerbitkan status saat ini dan perangkat eksternal berlangganan ke sana)…?
  3. Saya cukup suka satu tangan untuk 'Luar Negeri'. tapi itu bisa rumit dari sudut pandang OwnTracks. Mungkin bisa menggunakan long/lat yang dikombinasikan dengan radius yang besar?

Direkomendasikan: