Sangat sering, pemula dan tidak hanya pengembang memiliki pertanyaan. Bagaimana cara mengontrol dengan Arduino dari komputer? Dan jika komputer itu bukan Raspberry Pi, tetapi komputer rumah biasa? Dan jika Anda tidak ingin menderita dengan ESP8266 dan mengelola melalui antarmuka web? Apakah benar-benar perlu untuk membuka IDE Arduino setiap kali dan mengirim perintah melalui
Port Monitor ? Saya akan berbicara tentang cara membuat aplikasi GUI saya sendiri untuk mengendalikan Arduino.
Peralatan
Baru-baru ini saya mendapat papan yang sangat menarik:
Arduino SS Micro . Papan ini, menyerupai Digispark Attiny 85, tetap merupakan versi Cina dari Arduino Micro dengan output USB.

Saya tidak akan membicarakannya secara rinci, karena pengguna YouTube dengan nama panggilan
iomoio telah melakukan
ini , dan ulasannya dapat ditemukan di
sini .
Tampaknya bagi saya bahwa ini adalah perangkat yang cukup keren dan nyaman untuk proyek rumah kecil, karena kabel memiliki properti super: tersesat pada saat yang paling tidak tepat.
MacBook Pro dengan sistem operasi macOS Mojave digunakan sebagai komputer kontrol, tetapi jangan tutup artikel jika Anda menggunakan Windows atau Linux - semua yang dijelaskan dalam artikel ini akan berfungsi tanpa perubahan pada sistem operasi apa pun.
Sketsa untuk Arduino
Sebagai contoh, sketsa akan digunakan yang menghidupkan dan mematikan LED, pada perintah dari port Serial.
PERINGATANLED di Arduino SS Micro hang pada port SS, dan karenanya dimatikan secara otomatis. Meskipun demikian, contoh
Blink standar adalah LED yang berkedip.
char inChar; #define LED_PIN SS void setup() { pinMode(LED_PIN, OUTPUT);
Jika Anda akan menggunakan Arduino lain - jangan lupa untuk mengubah pin LED.
Kode komputer
Salah satu kelebihan Python, selain cross-platform-nya, adalah keberadaan sejumlah besar perpustakaan. Kami akan membutuhkan:
- PySerial - perpustakaan untuk bekerja dengan port serial
- PyQT5 - pustaka untuk membuat antarmuka grafis
Instalasi
Untuk menginstal, gunakan manajer paket bawaan - pip.
pip install pyserial pyqt5
Untuk kenyamanan membuat GUI, Anda dapat menginstal program QTDesigner.
Antarmuka
Karena program ini dimaksudkan untuk menunjukkan kemampuan, pengguna dapat memilih port dari yang diusulkan, serta kecepatan komunikasi yang akan terjadi.

Kode sumber
Semua pekerjaan dengan perangkat ini berkat pustaka PySerial. Namun ada beberapa nuansa. Misalnya, bagaimana Anda tahu ke port mana perangkat terhubung?
Di seluruh situs
stackoverflow terkenal, pengguna dengan nama panggilan
Thomas menyarankan solusi yang sudah jadi, yang saya gunakan.
def serial_ports(): """ Lists serial port names :raises EnvironmentError: On unsupported or unknown platforms :returns: A list of the serial ports available on the system """ if sys.platform.startswith('win'): ports = ['COM%s' % (i + 1) for i in range(256)] elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
Selain itu, Anda harus menyimpan daftar kecepatan yang tersedia:
speeds = ['1200','2400', '4800', '9600', '19200', '38400', '57600', '115200']
Sekarang mari kita kumpulkan
desain (dibuat di QtDesigner dan dikonversi menggunakan utilitas pyuic5 ke file .py),
fungsi untuk memindai port, dan
kode program utama .
Kelas utama berisi semua logika program
class LedApp(QtWidgets.QMainWindow, design.Ui_Form): def __init__(self): super().__init__() self.setupUi(self) self.Port.addItems(serial_ports()) self.Speed.addItems(speeds) self.realport = None self.ConnectButton.clicked.connect(self.connect) self.EnableBtn.clicked.connect(self.send) def connect(self): try: self.realport = serial.Serial(self.Port.currentText(),int(self.Speed.currentText())) self.ConnectButton.setStyleSheet("background-color: green") self.ConnectButton.setText('') except Exception as e: print(e) def send(self): if self.realport: self.realport.write(b'b')
Variabel
self.Port dan
self.Speed adalah daftar drop-down yang berisi nilai port dan kecepatan yang tersedia.
Ketika Anda mengklik tombol
self.ConnectButton , fungsi
connect disebut, di mana upaya dilakukan untuk menghubungkan ke port yang diberikan pada kecepatan yang diberikan. Jika koneksi berhasil, tombol berubah menjadi hijau dan label berubah.

Fungsi
kirim mengirimkan string byte ke port kami - memaksa kami untuk mengaktifkan mode berkedip.
Dengan demikian, Anda dapat mengontrol berbagai perangkat yang terhubung ke USB.
Artikel ini adalah pengantar dan ikhtisar, informasi lebih lengkap dapat ditemukan, misalnya di sini:
Kode sumber lengkap untuk sketsa Arduino dan program di-host di
GitHub .