Menggunakan GPIO di PC

9

Saya punya proyek sederhana pada perangkat host yang harus menggerakkan 2 pin dengan tingkat logika tinggi (tegangan 3.3V, 5V atau 12V - tidak masalah) dan menunggu 2 pin lainnya digerakkan tingkat tinggi oleh perangkat periferal.

Dapatkah saya mengimplementasikan perangkat host seperti itu dengan PC standar dan perangkat keras apa (built-in atau ekstra) yang harus saya gunakan?

Andrey Pesoshin
sumber
2
Apakah Anda ingin membeli sesuatu seperti mccdaq.com ?
kenny
1
Saya tertarik, mungkin PC sudah memiliki beberapa fungsi bawaan (pengontrol, pin) untuk keperluan saya? Dan jika tidak - temukan beberapa solusi untuk membeli (btw, terima kasih untuk tautannya!)
Andrey Pesoshin
1
Solusi potensial, yang sederhana dan ekonomis, akan menggunakan sesuatu seperti Launchpad MSP430, terhubung ke PC melalui USB, diprogram dalam lingkungan perangkat lunak mirip Arduino, yang disebut Energia, semuanya seharga $ 4,30 termasuk S / H (Fedex 2 hari, di seluruh dunia), atau bahkan papan DIY yang lebih murah menggunakan AVR (seperti attiny85 dengan bitbanged USB) yang diprogram pada sisi PC di Arduino (jika Anda suka atau lebih suka).
icarus74

Jawaban:

7

Tidak jelas apa yang ingin PC lakukan dan apa yang seharusnya dilakukan perangkat ("perangkat host" tidak masuk akal), tetapi tampaknya Anda menginginkan I / O digital dasar dari PC.

PC sebenarnya tidak dirancang untuk I / O digital langsung ke perangkat eksternal. Tetapi, Anda dapat membeli modul I / O digital yang terhubung ke PC melalui USB, yang kemudian memungkinkan Anda membaca dan menulis masing-masing sinyal digital. Anda dapat melakukannya sendiri paling mudah dengan meminta mikrokontroler berkomunikasi dengan PC melalui port COM.

Namun jika ini benar-benar hanya masalah kontrol yang sederhana, mengapa Anda memerlukan PC sama sekali? Minta mikrokontroler kecil melakukan seluruh tugas itu sendiri. Tepatnya untuk apa mikronkontroler itu. Mereka adalah komputer kecil dengan digital dan jalur I / O lainnya yang keluar yang dimaksudkan untuk terhubung langsung ke perangkat keras eksternal.

Olin Lathrop
sumber
1
Kami tidak memiliki deskripsi lengkap tentang fungsi yang diinginkan, tetapi dugaan saya adalah bahwa ia membutuhkan dual SR-flip-flop. Yang dapat Anda tiru dengan 1 miliar transistor CPU :-).
stevenvh
1
Terima kasih atas jawaban anda. Saya mengerti bahwa ada sejumlah besar solusi untuk dilakukan, tetapi saya ingin bertanya pasti tentang koneksi langsung perangkat eksternal ke PC. Sekarang saya melihat bahwa saya tidak dapat melakukannya secara langsung tetapi dengan controller tambahan atau I / O board
Andrey Pesoshin
@stevenvh Saya telah menyederhanakan deskripsi proyek untuk pemahaman yang lebih baik;) Saya perlu menjelaskan hanya bagian interfacing
Andrey Pesoshin
13

Jika Anda masih dapat menemukannya, perlu disebutkan bahwa port paralel yang sebenarnya adalah sedekat mungkin dengan GPIO seperti yang Anda temukan di PC yang tidak tersedia. Implementasi klasik kurang fleksibel karena banyak pin memiliki arah yang tetap, dan beberapa terbalik, tetapi orang-orang telah mengatasinya selama bertahun-tahun.

Keterbatasan yang lebih besar adalah bahwa pelabuhan seperti itu punah. Penggantian yang lebih abstrak seperti konverter paralel USB biasanya hanya dapat digunakan untuk mengontrol printer yang sebenarnya, dan tidak memiliki register yang dapat langsung Anda baca / tulis untuk mengatur atau memantau keadaan pin. Ada yang dikabarkan beberapa yang memang memiliki kemampuan ini, tetapi mereka bisa sulit ditemukan, dan membutuhkan perhatian rinci kepada pengemudi.

Pada titik itu, penggunaan perangkat I / O yang terhubung USB menjadi lebih praktis. Seringkali ini adalah mikrokontroler yang menjalankan firmware sederhana, baik dari pabrikan atau kustom.

Satu keuntungan utama dari implementasi kustom adalah kemungkinan untuk melepas level terendah, paling berulang, dan / atau mengatur waktu bagian penting dari manipulasi I / O ke prosesor pada perangkat, daripada mencoba melakukannya dari PC di mana latensi dari Paket USB, melintasi beberapa bus, dan sistem operasi multitasking cenderung membuat operasi sedikit demi sedikit sangat lambat.

Jika Anda belum mengetahui dengan pasti bagaimana bentuk solusi Anda, satu kemungkinan adalah mengambil sesuatu seperti Arduino yang dikemas baik dalam arti perangkat keras dan toolchain untuk kemudahan penggunaan, dan dapat beroperasi sebagai solusi yang berdiri sendiri atau sebagai penolong I / O untuk melakukan tugas tingkat rendah di bawah perintah dari PC yang terpasang.

Chris Stratton
sumber
2
Jika OP memilih rute port paralel, perlu dicatat bahwa OS berbasis NT (yaitu OS Windows yang dirilis dalam dekade terakhir) akan memerlukan driver mode kernel khusus untuk mengakses port paralel. Jika Anda menggunakan versi Windows dengan Kebijakan Penandatanganan Kode Kernel Mode (mis. Vista / W7 x64, bahkan mungkin W7 x86), maka driver ini juga harus ditandatangani secara digital.
ajs410
1
jawaban yang bagus, saya akan memilih jika saya bisa :-)
Andrey Pesoshin
1
@ ajs410 - persyaratan penandatanganan kode seperti itu kemungkinan berlaku untuk driver untuk antarmuka lain, seperti USB, juga. Yang mungkin menjadi end-run adalah menggunakan sesuatu yang sistem operasinya sudah menyediakan kode driver, dan yang diperlukan hanyalah file konfigurasi / informasi, misalnya port virtual com. Itu bukan GPIO, tetapi dapat digunakan sebagai saluran perintah / status untuk berbicara dengan mikro pembantu yang memiliki GPIO.
Chris Stratton
8

Saya akan merekomendasikan menggunakan FTDI FT232RL menggunakan driver khusus yang memungkinkan mode bitbang itu . Metode ini akan bekerja di hampir semua PC dan memungkinkan akses latensi yang layak ke GPIO sederhana.
Ada banyak board breakout FTDI di luar sana, tapi saya pribadi menggunakan ini .

David Perek
sumber
terima kasih atas sarannya, ini kedengarannya lebih seperti retasan tetapi harus bekerja. Saya menemukan solusi serupa 8 CHANNEL USB GPIO MODULE
Andrey Pesoshin