Daftar Isi:

Jam Kubus Multifungsi Berbasis Posisi: 5 Langkah (dengan Gambar)
Jam Kubus Multifungsi Berbasis Posisi: 5 Langkah (dengan Gambar)

Video: Jam Kubus Multifungsi Berbasis Posisi: 5 Langkah (dengan Gambar)

Video: Jam Kubus Multifungsi Berbasis Posisi: 5 Langkah (dengan Gambar)
Video: Cara Cepat Menghafal Materi 2024, Juli
Anonim
Image
Image
Jam Kubus Multifungsi Berbasis Posisi
Jam Kubus Multifungsi Berbasis Posisi
Jam Kubus Multifungsi Berbasis Posisi
Jam Kubus Multifungsi Berbasis Posisi

Proyek Fusion 360 »

Ini adalah jam berbasis Arduino yang menampilkan layar OLED yang berfungsi sebagai jam dengan tanggal, sebagai pengatur waktu tidur siang, dan sebagai lampu malam. "Fungsi" yang berbeda dikendalikan oleh akselerometer dan dipilih dengan memutar jam kubus.

Saya menginginkan jam nakas baru tetapi saya tidak ingin menghabiskan uang untuk jam mewah yang memiliki banyak fungsi yang tidak akan saya gunakan. Selain itu, saya telah mengumpulkan komponen dan sensor yang tergeletak begitu saja, jadi saya memutuskan untuk menggunakannya untuk membuat jam saya sendiri!

Saya memiliki beberapa tujuan untuk proyek ini:

  1. Tampilkan waktu itu dengan opsi untuk dimatikan
  2. Sertakan fungsi lampu malam
  3. Sertakan timer tidur siang 15 menit dengan alarm
  4. Dapat menampilkan tanggal

Perlengkapan

  • Arduino Pro Mini 5V
  • Akselerometer 3-Sumbu ADXL335
  • DS3231 AT24C32 IIC presisi Jam waktu nyata
  • Pembicara Mini
  • Layar OLED SSD1306 IIC 0.96in
  • Catu daya 5V DC
  • LED x 2
  • Resistor 220ohm x 2
  • Jack tong DC
  • Kabel
  • Peralatan

    • Pemotong / penari telanjang kawat
    • Besi solder / solder
    • Pencetak 3D (opsional)
    • Pemrogram FTDI untuk menghubungkan antara Pro mini dan Arduino IDE

Langkah 1: Prototipe dan Uji Sirkuit

Prototipe dan Uji Sirkuit
Prototipe dan Uji Sirkuit
Prototipe dan Uji Sirkuit
Prototipe dan Uji Sirkuit
Prototipe dan Uji Sirkuit
Prototipe dan Uji Sirkuit

Hubungkan komponen ke Arduino. Tata letak atau skema papan tempat memotong roti ditunjukkan di atas. RTC dan OLED menggunakan protokol I2C untuk berinteraksi dengan Arduino dan menggunakan pin A4 dan A5. Accelerometer menggunakan 3 pin analog. Saya menggunakan A0, A1, A2. LED dan Piezo dapat menggunakan salah satu pin digital, saya menggunakan masing-masing 4 dan 8.

Antarmuka dengan setiap komponen. Saya harus menginstal beberapa perpustakaan Arduino untuk berinteraksi dengan setiap komponen. Mereka ditunjukkan pada gambar di atas.

Kode menggunakan Arduino IDE. Saya menyaring beberapa contoh sketsa yang disediakan oleh setiap perpustakaan untuk mengetahui sintaks yang tepat untuk setiap komponen berdasarkan apa yang saya ingin mereka lakukan. Saya membuat sketsa untuk setiap komponen untuk mengujinya satu per satu. Mereka disediakan di bawah ini. Saya mulai dengan speaker piezo karena itu yang paling mudah. Sebenarnya tidak perlu library khusus, hanya fungsi khusus yang mengatur frekuensi dan suara. Agar LED berfungsi, Anda hanya perlu menarik salah satu pin digital tinggi dan rendah. Selanjutnya, saya pindah ke OLED dan ini juga cukup mudah untuk diatur. Sketsa di bawah ini adalah demo Adafruit yang melewati semua animasi/teks yang dapat ditampilkan. Kemudian, saya mencoba membuat RTC berfungsi. Sketsa yang saya berikan adalah bagian dari contoh di perpustakaan yang mendapatkan waktu saat ini dan mencetaknya ke monitor serial. Akhirnya, saya menggunakan contoh yang diberikan untuk menguji akselerometer. Output dari setiap sumbu dicetak pada monitor serial.

Sekarang saatnya untuk menyatukan semuanya!

Langkah 2: Program Utama

Program Utama
Program Utama
Program Utama
Program Utama

Sekarang saya tahu semuanya bekerja secara individual, saya dapat mulai membuat program yang menyatukan semuanya. Saya akan membahas proses saya untuk menulis program di bawah ini tetapi jangan ragu untuk mengunduh kode lengkap di bawah ini untuk digunakan untuk proyek Anda sendiri. Saya mencoba untuk meninggalkan komentar khusus sehingga Anda dapat mempelajari kodenya sendiri.

Saya perlu menampilkan waktu dan tanggal pada OLED yang cukup sederhana. Saya hanya perlu mencetak waktu saat ini ke layar alih-alih monitor serial. Ada beberapa hal pemformatan yang harus saya perhitungkan untuk membuatnya menampilkan format 12 jam alih-alih 24 dan menambah/menghapus 0 di tempat yang sesuai. Tanggalnya mirip dengan penambahan tampilan bulan dan hari dalam persegi panjang yang digambar di layar. Saya menggunakan loop FOR bersarang untuk membuat timer dan mematikan piezo setelah akhir loop. Saya memutuskan untuk membuat layar berkedip saat bel berbunyi yang merupakan animasi dasar yang diambil dari demo Adafruit. Saya membuat memutar kubus kembali ke posisi jam satu-satunya cara mematikan bel. Akhirnya, saya ingin cara mematikan layar yang dilakukan hanya dengan membersihkan layar. Sekarang, saya membutuhkan semua fungsi ini untuk bekerja berdasarkan keluaran akselerometer. Saya menggunakan skrip Accel_Test untuk menentukan koordinat sumbu dari setiap posisi yang saya inginkan untuk menjalankan setiap fungsi. Saya secara manual memindahkan chip akselerometer dan mencatat pembacaan pada monitor serial. Diagram di atas memberikan koordinat output dari setiap posisi di GREY. Koordinat dalam RED adalah batas antara setiap posisi dan saya menggunakan angka-angka itu untuk program saya. Dalam 4 posisi tampilan, hanya koordinat sumbu X dan Y yang diperlukan. Posisi kelima untuk lampu malam memanfaatkan sumbu Z. Saya menggunakan pernyataan IF sederhana untuk posisi akselerometer sebelum setiap blok fungsi. Jika Anda menggunakan akselerometer yang berbeda, koordinat ini mungkin berbeda dan perlu disesuaikan dalam program.

Langkah 3: Mencetak Kubus 3D

3D Mencetak Kubus
3D Mencetak Kubus
3D Mencetak Kubus
3D Mencetak Kubus
3D Mencetak Kubus
3D Mencetak Kubus

Saya pikir kubus akan menjadi desain terbaik untuk mengakomodasi bagaimana saya ingin jam berfungsi. Saya menggunakan fusion360 untuk membuat modelnya. Saya membutuhkan guntingan untuk OLED dan jack barel. Saya juga ingin akses mudah untuk mengganti baterai sel di RTC setelah semuanya ditransfer. Saya membutuhkan slot untuk menjaga Arduino dalam orientasi yang mudah diprogram ulang jika perlu. Selain itu, penutup harus mudah dilepas sehingga saya dapat mengakses Arduino. Anda dapat melihat model CAD di atas dan file STL di bawah.

Saya mencetak bodi dalam PLA hitam dengan pengisi 20%, resolusi 0.2mm.

Selungkup atau selongsong dicetak dalam filamen fleksibel Solutech dengan pengisi 100%, resolusi 0,3 mm. Saya menggunakan bahan ini karena memiliki beberapa fleksibilitas yang membuatnya mudah untuk diregangkan di seluruh tubuh. Ini juga terasa lebih lembut saat memutar jam. Terakhir, saya memilih filamen bening sehingga LED untuk lampu malam akan bersinar.

Langkah 4: Perakitan

perakitan
perakitan
perakitan
perakitan
perakitan
perakitan

Saya menghubungkan semuanya menggunakan skema dari Langkah 1. Saya menggunakan sepotong kecil perfboard untuk menghubungkan semua kabel umum sehingga saya tidak perlu menyolder banyak kabel ke satu pin di Arduino. Lem panas digunakan untuk mengamankan segala sesuatu di tempatnya masing-masing kecuali Arduino. Itu baru saja didorong ke slot yang ditentukan. Saya memastikan bahwa papan akselerometer tegak lurus dan rata di bagian bawah bodi sehingga koordinat dalam kode tidak perlu diubah.

Langkah 5: Unggah dan Selesai

Unggah dan Selesai!
Unggah dan Selesai!
Unggah dan Selesai!
Unggah dan Selesai!
Unggah dan Selesai!
Unggah dan Selesai!
Unggah dan Selesai!
Unggah dan Selesai!

Sekarang program terakhir dapat diunggah ke jam untuk mengatur waktu yang tepat. Baterai sel harus menjaga waktu bahkan ketika listrik dicabut. Geser lengan cetak 3D di atas tubuh untuk menyembunyikan semua komponen dan Anda memiliki jam kubus lengkap!

Saya harap Anda menikmati membuat proyek ini dan merasa berguna seperti saya. Bagian yang menyenangkan tentang proyek ini adalah sangat dapat disesuaikan. Jangan ragu untuk menambahkan fungsi Anda sendiri yang berbeda seperti fungsi alarm, gunakan komponen yang berbeda seperti OLED yang lebih besar, penerima radio FM, dll. Selamat membuat!

Direkomendasikan: