Isi kandungan:

Pad Kekunci Yang Dapat Diprogramkan: 5 Langkah (dengan Gambar)
Pad Kekunci Yang Dapat Diprogramkan: 5 Langkah (dengan Gambar)

Video: Pad Kekunci Yang Dapat Diprogramkan: 5 Langkah (dengan Gambar)

Video: Pad Kekunci Yang Dapat Diprogramkan: 5 Langkah (dengan Gambar)
Video: Cara Memindahkan Gambar di Word 2024, September
Anonim
Pad Kekunci Yang Boleh Diprogramkan
Pad Kekunci Yang Boleh Diprogramkan
Pad Kekunci Yang Boleh Diprogramkan
Pad Kekunci Yang Boleh Diprogramkan

Dalam projek ini saya akan menunjukkan cara membuat papan kekunci yang boleh diprogramkan secara relatif mudah dan murah untuk memetakan pintasan papan kekunci, aplikasi dan banyak lagi yang paling kerap anda gunakan.

Pad kekunci ini dikesan sebagai papan kekunci di semua OS utama, tidak diperlukan pemacu tambahan.

Bekalan

  • Pengekod putar.
  • Banyak butang tekan (bergantung pada keperluan anda).
  • Arduino Pro Micro, Arduino Leonardo atau papan pemuka lain dengan Atmega32U4 MCU.
  • Kawat, solder, solder, dll.
  • (Pilihan) Beberapa asas yang kuat untuk memastikan papan kekunci tidak tergelincir, saya menggunakan HDD 3.5 "lama

Langkah 1: Litar Elektrik

Litar Elektrik
Litar Elektrik

Saya memilih untuk menggunakan papan Arduino Pro Micro dev dengan Atmega32U4 MCU yang mempunyai 18 pin digital yang boleh digunakan.

Pin untuk menyambungkan butang tekan dan pengekod putar dipilih tanpa urutan tertentu, tetapi beberapa perkara harus diperhatikan:

  1. Semua pin mampu membaca digital mempunyai pull-up dalaman yang memungkinkan untuk mengurangkan perintang pull-down luaran. Sudah tentu kod harus dikemas kini dengan sewajarnya, kerana mengharapkan keadaan pin berubah dari rendah ke tinggi ketika butang tekan ditekan.
  2. Dalam pustaka encoder.h contoh menunjukkan bahawa prestasi terbaik pengekod dicapai apabila kedua-dua pin yang disambungkan ke MCU mengganggu pin yang mampu. Sebilangan besar pin analog Atmega32U4 tidak mempunyai keupayaan mengganggu.
  3. Nilai perintang pull-down yang tepat tidak penting, apa-apa dari 1 kΩ hingga 100 kΩ akan berfungsi dengan baik. Nilai rintangan yang lebih besar membolehkan pelesapan daya yang lebih kecil tetapi menghasilkan tindak balas pin yang lebih perlahan terhadap perubahan voltan. Cukup pilih perintang nilai apa sahaja yang paling anda miliki.
  4. Pengekod mekanikal bukanlah perkara yang paling dipercayai kerana kehausan hubungan dan melantun. Itulah sebabnya mengapa penyelesaian penyahpinjam yang baik diperlukan. Nilai kapasitor pilihan saya dan masa kelewatan dalam kod mungkin tidak akan memberikan hasil terbaik untuk anda. Oleh itu, sedikit percubaan diperlukan. Atau beralih ke sesuatu seperti pengekod optik, tetapi harganya jauh lebih tinggi.

Langkah 2: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Saya mahu menjadikan pad kekunci kelihatan bersih, jadi saya menyolder semua komponen di bahagian belakang papan prototaip. Saya menyangka bahawa papan kekunci akan lebih ergonomik jika digunakan dengan ketinggian pada sudut kecil. Itulah sebabnya saya memasangkan Arduino Pro Micro pada papan berasingan dan menghubungkan semua pin digital dengan wayar ke butang tekan. Lebih senang menyambungkan kabel USB dengan cara itu.

Saya menjumpai HDD 3.5 yang lama untuk digunakan sebagai alas keypad, ia cukup berat dan menghalang bentuk papan meluncur di atas meja semasa beroperasi (bantalan anti-slip juga membantu). Ia juga mempunyai lubang skru 3 mm yang sesuai di mana saya mengacaukan penutup kuningan dan membetulkan papan pada sedikit sudut.

Langkah 3: Pengaturcaraan

Kod ditulis dengan Arduino IDE. Anda perlu memasang 2 perpustakaan:

  • Pengekod oleh Paul Stoffregen
  • Papan kekunci oleh Arduino

Untuk menyusun Atmega32U4, anda juga perlu memasang fail papan Arduino Pro Micro, Sparkfun mempunyai tutorial hebat bagaimana melakukannya.

Satu perkara yang perlu diperhatikan terlebih dahulu adalah berhati-hati agar tidak membiarkan "kekunci ditekan" dalam kod anda. Ini berlaku kepada saya dan MCU sentiasa menghantar beberapa kombinasi tekan utama. Satu-satunya cara saya menyedari cara memperbaikinya adalah dengan membakar semula boot-loader ke MCU. Sekiranya anda akan seperti saya, anda boleh mengikuti panduan ini untuk membakar boot-loader, anda memerlukan papan arduino lain untuk digunakan sebagai pengaturcara.

Dalam gelung utama MCU membaca terlebih dahulu setiap keadaan butang tekan, jika keadaan berubah dari RENDAH ke TINGGI dikesan, fungsi papan kekunci_pendek (i) dijalankan. Pembolehubah i adalah id butang yang ditekan, jumlah butang tekan ditentukan oleh ALL_BUTTONS (dalam kes saya 15). Semasa dieksekusi, keyboard_shortcut (i) menghantar CTRL + SHIFT dan kemudian huruf yang dipetakan ke butang id: 1-> A, 2-> B, 3-> C dll. Beberapa kombinasi seperti CTRL + SHIFT + N dihilangkan kerana sudah digunakan pada Windows10 secara lalai (dalam kes ini untuk membuat folder baru). Berikut adalah senarai semua pintasan Windows lalai. Setelah seketika, MCU menghantar isyarat untuk melepaskan semua kekunci dan fungsi keluar kembali ke gelung utama.

Setelah semua butang diperiksa, MCU memeriksa apakah kedudukan pengekod putar berubah dan jika tidak, jalan pintas papan kekunci (i) dijalankan dengan id unik.

Tekan butang encoder membalikkan pemboleh ubah boolean encoderButtonFlag. Apabila encoder diputar jalan pintas yang berbeza dihantar ke PC, bergantung pada arah putaran dan nilai encoderButtonFlag.

Sekiranya debugFlag ditetapkan ke 1 mesej debug dihantar melalui UART ke monitor bersiri.

Langkah 4: Mengkonfigurasi Pintasan

Mengkonfigurasi Pintasan
Mengkonfigurasi Pintasan
Mengkonfigurasi Pintasan
Mengkonfigurasi Pintasan

Apa yang dilakukan setiap jalan pintas juga anda, kita semua mempunyai pilihan yang berbeza. Saya akan memberikan jalan pintas yang saya konfigurasikan sebagai contoh. Saya menggunakan Linux Mint 19.3 dengan pengurus desktop xfce4, jadi contoh saya terutamanya melibatkan skrip bash, tetapi saya akan menunjukkan beberapa contoh asas untuk Windows10 juga.

Pada gambar pertama anda dapat melihat skrip mana yang saya petak ke jalan pintas mana. Ia dilakukan dari menu tetapan xfce, proses untuk ini adalah lurus ke depan. Anda boleh mendapatkan skrip ini di repositori GitHub saya

Butang tekan 6 yang lebih kecil di bahagian bawah adalah untuk memulakan aplikasi seperti penyemak imbas web atau pengurus fail, beberapa aplikasi ini dipanggil dari skrip start_only_one_app.sh, yang mendapat semua nama aplikasi yang dimulakan dan mencari aplikasi yang ingin anda mulakan. Sekiranya tetingkap aplikasi sudah ada, ia akan terfokus, contoh aplikasi baru akan dimulakan.

Skrip lain:

  • 2nd_display_control.sh - menghidupkan / mematikan monitor kedua.
  • moon_lamp.sh - menghidupkan / mematikan Lampu Bulan saya.
  • pc_load.sh - membuat gelembung pemberitahuan dengan penggunaan dan suhu CPU dan GPU semasa.
  • shutdown.sh - menginisialisasi penutupan PC dengan kelewatan 1 minit dan membuat gelembung pemberitahuan di mana baki masa ditunjukkan.
  • spec_vpn.sh - menyambung ke pelayan OpenVPN tertentu atau jika sambungan sudah ada, putuskan sambungan dari pelayan.
  • shortcut_controll.sh - mengambil perintah (tambah, tolak, tab, tutup) sebagai argumen, mengesan tetingkap apa yang sekarang difokuskan dan jika aplikasi tertentu didapati aktif menjalankan tindakan kawalan. Sebagai contoh untuk membuka tab baru di jalan pintas editor teks luhur adalah "CTRL + N" dan di terminal xfce - "CTRL + T", jadi skrip ini memungkinkan untuk membuka tab baru di luhur dan terminal dengan butang tekan yang sama.

Fungsi pertama pengekod putar adalah untuk mengawal kelantangan, fungsi kedua adalah untuk mengawal zoom tetingkap aktif melalui shortcut_controll.sh.

Untuk OS Windows, anda dapat memetakan jalan pintas ke aplikasi melalui tetingkap sifat program seperti yang ditunjukkan pada gambar kedua. Untuk perkara lain, anda pasti mahu menggunakan AutoHotkey. Ini adalah bahasa skrip automasi untuk Windows.

Beberapa contoh ringkas sintaks AHK:

; Kawalan kelantangan

^ + t:: Kirim {Volume_Up}

kembali

^ + v:: Kirim {Volume_Down}

kembali

Tutup tetingkap aktif

^ + h:: WinGetTitle, Tajuk, A

PostMessage, 0x112, 0xF060,,,% Tajuk%

kembali

; Shutdown PC

^ + b:: Jalankan shutdown / s

Langkah 5: Penambahbaikan

Penambahbaikan
Penambahbaikan

Beberapa kemungkinan peningkatan:

  • Butang tekan berkualiti lebih baik.
  • Prototaip PCB melenturkan cukup banyak apabila butang ditekan.
  • Pencahayaan RGB untuk menukar warna bergantung pada fungsi pengekod putar yang ditetapkan.
  • Lebih banyak butang (gunakan IC ekspander IO).
  • Pengekod putar yang lebih baik (atau penyelesaian penyahtinjaan yang lebih baik).

Disyorkan: