Jika Anda membutuhkan PC Anda – terutama laptop korporat dari pekerjaan Anda – untuk melihat Anda aktif bahkan saat Anda menjauh, jiggler mouse adalah pilihan terbaik Anda. Sebagian besar komputer yang dikeluarkan perusahaan tidak mengizinkan Anda menginstal perangkat lunak atau memata-matai aplikasi mana yang Anda jalankan sehingga menggunakan perangkat yang menggerakkan penunjuk secara otomatis tetapi menampilkan OS saat mouse memecahkan masalah. Anda dapat pergi ke Amazon dan membeli perangkat USB yang harganya mulai dari $7 hingga $40, atau Anda dapat membuat jiggler mouse buatan sendiri menggunakan $4 Raspberry Pi Piko.
Dalam cara ini, kita akan membuat jiggler mouse diy menggunakan Raspberry Pi Pico dan CircuitPython. Tidak ada lagi yang diperlukan, bahkan driver, membuat proyek $4 ini sangat menghemat waktu dan uang Anda. Perhatikan bahwa, meskipun kami menggunakan Pico, instruksi ini akan berfungsi untuk semua mikrokontroler bertenaga RP2040 yang memiliki dukungan CircuitPython (hampir semuanya). Sebuah papan seperti Adafruit Trinkey QT2040mikrokontroler bertenaga RP2040 lainnya yang harganya $8, akan lebih baik daripada Pico karena memiliki USB Type-A built-in sehingga bahkan tidak memerlukan kabel untuk terhubung ke PC Anda.
Mengonfigurasi CircuitPython untuk Mouse Jiggler
1. Buka halaman resmi CircuitPython untuk Raspberry Pi Pico dan unduh gambar firmware UF2 rilis terbaru. Pada saat penulisan ini adalah CircuitPython 8 Beta 6. Jika Anda menggunakan papan bertenaga RP2040 yang berbeda, temukan Halaman UF2 di Circuitpython.org.
2. Sambil menahan tombol BOOTSEL, sambungkan Raspberry Pi Pico ke komputer Anda. Drive baru, RPI-RP2 akan muncul
3. Salin file CircuitPython UF2 yang diunduh ke RPI-RP2. Ini akan menulis CircuitPython ke penyimpanan flash internal Pico. Drive baru, CIRCUITPY akan muncul.
Kami membutuhkan sejumlah perpustakaan CircuitPython sebelum kami dapat melanjutkan. Pustaka kode pratulis ini menambahkan fitur tambahan ke proyek.
1. Unduh bundel perpustakaan untuk versi CircuitPython yang sama seperti yang diinstal pada Pico. Kami menginstal CircuitPython 8 jadi unduh bundel untuk versi 8.x.
2. Ekstrak bundel ke desktop Anda dan kemudian buka folder lib terkandung di dalam.
3. Salin folder adafruit_hid dari folder lib ini ke folder lib di drive CIRCUITPY.
Menulis Kode CircuitPython untuk Mouse Jiggler
1. Unduh dan instal Thonny jika Anda belum memilikinya. Thonny adalah editor Python yang mencakup Python 3, MicroPython dan CircuitPython.
2. Buka Thonny dan buka Alat >> Opsi.
3. Pilih Interpreter, lalu setel interpreter sebagai CircuitPython, port ke otomatis, dan klik OK. Tonny sekarang akan terhubung ke Pico W yang menjalankan CircuitPython.
4. Klik File >> Buka dan buka code.py di perangkat CircuitPython (Raspberry Pi Pico kami).
5. Hapus semua kode yang sudah ada di dalam file.
6. Impor perpustakaan USB_HID, diikuti oleh pustaka dukungan Mouse Adafruit.
import usb_hid
from adafruit_hid.mouse import Mouse
7. Impor fungsi tidur dari pustaka waktu. Kami akan menggunakan ini untuk menambahkan penundaan singkat di antara setiap gerakan.
from time import sleep
8. Buat objek, m, untuk mengontrol mouse virtual.
m = Mouse(usb_hid.devices)
9. Buat lingkaran untuk terus menjalankan kode di dalamnya. Untuk tujuan pengujian loop ini dapat diganti dengan for loop, jika tidak, kode akan membuat kita tidak dapat bekerja.
while True:
Pengujian Alternatif Untuk Loop
for i in range(2):
10. Gunakan “bergerak” untuk memindahkan kursor 100 piksel ke kiri.
m.move(-100, 0, 0)
11. Cetak pesan ke shell Python dan jeda selama setengah detik. Pencetakan membantu kami men-debug kode.
print("I am working")
12. Sekarang gerakkan mouse 100 piksel ke kanan, cetak pesan lain dan jeda setengah detik lagi.
m.move(100, 0, 0)
print("I am so busy")
sleep(0.5)
13. Gerakkan mouse ke bawah 100 piksel, cetak pesan, lalu jeda lagi.
m.move(0, -100, 0)
print("So much to do")
sleep(0.5)
14. Gerakkan mouse ke atas 10 piksel, cetak pesan, lalu jeda lagi.
m.move(0, 100, 0)
print("I need a vacation")
sleep(0.5)
15. Simpan kode sebagai code.py ke Raspberry Pi Pico (perangkat CircuitPython) Anda. CircuitPython akan secara otomatis menjalankan code.py (MicroPython juga dapat melakukannya dengan main.py dan boot.py) saat Pico terhubung ke komputer. Karena OS yakin ini “hanya mouse”, proyek ini dapat digunakan di OS apa pun.
Daftar Kode Lengkap
import usb_hid
from adafruit_hid.mouse import Mouse
from time import sleep
m = Mouse(usb_hid.devices)
while True:
m.move(-100, 0, 0)
print("I am working")
sleep(0.5)
m.move(100, 0, 0)
print("I am so busy")
sleep(0.5)
m.move(0, -100, 0)
print("So much to do")
sleep(0.5)
m.move(0, 100, 0)
print("I need a vacation")
sleep(0.5)
Menambahkan Tombol ke Jiggler DIY
Jiggler plug and play mouse berguna, tetapi yang lebih berguna adalah yang dapat kita aktifkan dengan menekan satu tombol. Di sini kami memodifikasi kode untuk memasukkan tombol tekan pada GPIO12 yang akan mengaktifkan atau menonaktifkan jiggler.
Untuk Proyek Ini Anda Akan Membutuhkan
- Raspberry Pi Pico
- Breadboard Setengah Ukuran
- Tekan tombol
- 2 x Kabel pria ke pria
Rangkaiannya sangat sederhana, kita hanya perlu menyambungkan tombol tekan ke GPIO 12 dan GND. GPIO 12 akan diset pull high, dan saat tombol ditekan maka pin akan terhubung ke GND. Ini akan memicu pin untuk mengubah status menjadi rendah, dan kami menggunakan ini sebagai toggle untuk kode jiggler. Proyek ini akan dibangun di atas kode dari versi sebelumnya.
1. Tambahkan dua impor tambahan untuk papan dan digitalio. Kedua pustaka ini menyediakan akses ke GPIO dan memungkinkan kami untuk mengatur status pin GPIO.
import usb_hid
from adafruit_hid.mouse import Mouse
from time import sleep
import board
from digitalio import DigitalInOut, Direction, Pull
2. Buat sebuah objek, tombol dan atur ini menjadi GPIO12.
m = Mouse(usb_hid.devices)
button = DigitalInOut(board.GP12)
3. Atur GPIO 12 menjadi input dan tarik pin tinggi. Beberapa pin GPIO memiliki resistor internal yang dapat kita tarik tinggi ke 3.3V atau rendah ke GND.
button.direction = Direction.INPUT
button.pull = Pull.UP
4. Buat dua variabel, aktif dan button_press dan simpan 0 di masing-masing. Kedua variabel ini akan menyimpan 0 atau 1, mengidentifikasi apakah jiggler aktif dan tombol telah ditekan. Pada awal kode keduanya disetel ke tidak aktif menggunakan 0.
active = 0
button_press = 0
5. Tambahkan while True loop untuk menjalankan kode.
while True:
6. Buat pernyataan bersyarat yang memeriksa status tombol dan nilai yang disimpan aktif. Saat tombol ditekan, status GPIO 12 berubah dari tinggi (Benar) menjadi rendah (Salah). Saat ditekan, pernyataan bersyarat akan memeriksa nilai yang disimpan dalam keadaan aktif. Nilai defaultnya adalah 0, artinya jiggler tidak aktif.
if button.value == False and active == 0:
7. Perbarui variabel ke 1 dan kemudian cetak pesan ke shell Python.
active = 1
button_press = 1
print("Turning on")
8. Tambahkan jeda lima detik untuk kondisi ini. Ini memberi kami waktu untuk menekan tombol dan untuk kode untuk mendaftarkan pers dan menawarkan banyak waktu debounce yang mencegah penekanan beberapa tombol.
sleep(5)
9. Gunakan kondisi else if untuk memeriksa bahwa tombol tidak sedang ditekan dan bahwa nilai yang disimpan dalam active dan button_press adalah 1. Ini berarti kita telah menekan tombol dan ingin menjalankan kode jiggler mouse.
elif button.value == True and active == 1 and button_press == 1:
10. Gunakan kembali kode mouse jiggler untuk menggerakkan mouse di sekitar layar.
m.move(-100, 0, 0)
print("I am working")
sleep(0.5)
m.move(100, 0, 0)
print("I am so busy")
sleep(0.5)
m.move(0, -100, 0)
print("So much to do")
sleep(0.5)
m.move(0, 100, 0)
print("I need a vacation")
sleep(0.5)
11. Buat pernyataan bersyarat lain untuk memeriksa bahwa tombol telah ditekan dan yang aktif dan button_press menyimpan nilai 1. Artinya, pengguna ingin mematikan kode jiggler.
elif button.value == False and active == 1 and button_press == 1:
12. Cetak pesan ke pengguna, lalu setel ulang nilai yang disimpan dalam variabel sebelum menjeda selama lima detik.
print("Turning off")
active = 0
button_press = 0
sleep(5)
13. Simpan proyek sebagai code.py ke Raspberry Pi Pico dan papan akan mengatur ulang dan menjalankan kode. Tekan tombol untuk mengaktifkan dan menonaktifkan kode jiggler.
Daftar Kode Lengkap
import usb_hid
from adafruit_hid.mouse import Mouse
from time import sleep
import board
from digitalio import DigitalInOut, Direction, Pull
m = Mouse(usb_hid.devices)
button = DigitalInOut(board.BUTTON)
button.direction = Direction.INPUT
button.pull = Pull.UP
active = 0
button_press = 0
while True:
if button.value == False and active == 0:
active = 1
button_press = 1
print("Turning on")
sleep(5)
elif button.value == True and active == 1 and button_press == 1:
m.move(-100, 0, 0)
print("I am working")
sleep(0.5)
m.move(100, 0, 0)
print("I am so busy")
sleep(0.5)
m.move(0, -100, 0)
print("So much to do")
sleep(0.5)
m.move(0, 100, 0)
print("I need a vacation")
sleep(0.5)
elif button.value == False and active == 1 and button_press == 1:
print("Turning off")
active = 0
button_press = 0
sleep(5)
Perhiasan Khusus Adafruit QT2040 Versi
Trinkey QT2040 Adafruit adalah papan berbentuk dongle USB yang ditenagai oleh Raspberry Pi RP2040. Itu tidak memiliki GPIO tradisional, melainkan menggunakan konektor StemmaQT untuk digunakan dengan papan breakout yang kompatibel.
Versi khusus dari kode toggle tombol ini menggunakan board built in user button (BOOT) untuk mengaktifkan / menonaktifkan kode dan NeoPixel untuk menunjukkan jika jiggler aktif. Kode ini sebagian besar sama dengan kode sakelar tombol sebelumnya, hanya diubah untuk menggunakan referensi tombol (abstraksi CircuitPython) dan untuk mengatur NeoPixels.
1. Unduh bundel perpustakaan untuk versi CircuitPython yang sama seperti yang diinstal pada Pico. Kami menginstal CircuitPython 8 jadi unduh bundel untuk versi 8.x.
2. Ekstrak bundel ke desktop Anda dan kemudian buka folder lib terkandung di dalam.
3. Salin file/folder berikut dari folder lib ini ke folder lib di drive CIRCUITPY.
adafruit_hid
adafruit_pixelbuf.mpy
neopixel.mpy
4. Buka file baru di Thonny dan salin kode dari contoh sebelumnya.
5. Dalam impor, tambahkan baris untuk mengimpor pustaka NeoPixel.
import neopixel
6. Setelah mengatur tombol, tambahkan baris baru untuk membuat sambungan ke NeoPixel tunggal di Trinkey QT2040.
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
7. Gulir ke bawah ke kondisi else if yang mengaktifkan jiggler. Di sinilah kita menekan tombol, dan variabel aktif dan button_press diatur ke 1. Tambahkan garis untuk menyetel piksel menjadi merah, dengan kecerahan seperempat.
pixel.fill((32, 0, 0))
8. Gulir ke bawah ke tempat kode jiggler dimatikan. Di sinilah tombol ditekan, dan variabel aktif dan button_press diatur ke 1. Ubah warna NeoPixel menjadi hijau, dengan kecerahan seperempat.
pixel.fill((0, 32, 0))
9. Simpan kode sebagai code.py ke Adafruit Trinkey QT2040. Papan akan diatur ulang dan kode akan dimulai. Tekan tombol untuk beralih kode.
Daftar Kode Lengkap
import usb_hid
from adafruit_hid.mouse import Mouse
from time import sleep
import board
from digitalio import DigitalInOut, Direction, Pull
import neopixel
m = Mouse(usb_hid.devices)
button = DigitalInOut(board.BUTTON)
button.direction = Direction.INPUT
button.pull = Pull.UP
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
active = 0
button_press = 0
while True:
if button.value == False and active == 0:
active = 1
button_press = 1
print("Turning on")
sleep(5)
elif button.value == True and active == 1 and button_press == 1:
pixel.fill((32, 0, 0))
m.move(-100, 0, 0)
print("I am working")
sleep(0.5)
m.move(100, 0, 0)
print("I am so busy")
sleep(0.5)
m.move(0, -100, 0)
print("So much to do")
sleep(0.5)
m.move(0, 100, 0)
print("I need a vacation")
sleep(0.5)
elif button.value == False and active == 1 and button_press == 1:
pixel.fill((0, 32, 0))
print("Turning off")
active = 0
button_press = 0
sleep(5)