Bagaimana mendeteksi papan HAT atau GPIO macam apa yang terpasang - jika ada?

8

Saya menyiapkan beberapa Raspberry Pis untuk digunakan dalam demo kepada kolega, untuk memamerkan kemampuan Pi itu sendiri, dan beberapa add-on board yang tersedia.

Saya benar-benar ingin dapat mempertahankan satu skrip cron-job / start-up untuk semua demo yang mungkin saya atur, dan minta skrip itu mendeteksi apa HAT atau papan GPIO yang lebih lama dicolokkan, sehingga saya dapat memicu sebuah skrip / program demo yang sesuai.

Sebagai contoh,

Apakah ada cara untuk menjalankan Python, sh atau yang serupa, untuk mendeteksi yang mana dari beberapa papan GPIO umum yang terhubung ke Pi?

Hal-hal yang saya pertimbangkan:

  • Menggunakan informasi dari Pinout.xyz untuk mendeteksi pin yang digunakan, tetapi itu terdengar seperti banyak pekerjaan.

Perhatikan bahwa maksud saya adalah mendeteksi konfigurasi secara otomatis, tanpa perlu memasang keyboard, ssh in, atau serupa - karenanya keinginan untuk deteksi otomatis, dan mengapa sesuatu seperti mengatur variabel lingkungan tidak akan membantu.

Clare Macrae
sumber
1
Saya pikir ini mungkin dengan topi, karena mengandung eprom yang digunakan untuk pengaturan. Anda mungkin dapat menentukan sisanya dengan beberapa skrip shell dan melihat apa yang dilaporkan oleh dmesg, lsusb dll. Anda mungkin juga ingin mempertimbangkan pengaturan variabel lingkungan yang Anda ubah ketika Anda bertukar perangkat keras.
Steve Robillard
@ SeveRobillard, apakah semua topi datang dengan eprom? Apakah mereka tidak bisa ditumpuk? Jika demikian, bagaimana beberapa episode ditangani secara terpisah?
Ghanima
@SteveRobillard Terima kasih atas sarannya. Saya telah mengklarifikasi pertanyaan saya untuk mencoba mengatakan mengapa pengaturan variabel lingkungan (dan interaksi keyboard lainnya) tidak berfungsi. Saya belum pernah mendengar tentang dmesg dan lsusb. Googling mereka menunjuk saya ke Tahu Raspberry Pi Anda yang terlihat bagus juga.
Clare Macrae
@ Ganima Saya akan sangat senang untuk menyelesaikan ini untuk kasus satu-HAT, dan tidak khawatir tentang menumpuknya!
Clare Macrae
Baik dibaca: github.com/raspberrypi/hats
Ghanima

Jawaban:

5

Setelah membaca komentar dan jawaban sebelumnya yang sangat membantu dari Steve Robillard dan Ghanima :

/ proc / device-tree / hat / product

Jika /proc/device-tree/hat/productada, Anda memiliki HAT yang dilampirkan dan dimuat - dan file itu berisi nama HAT.

Berikut adalah beberapa contoh keluaran:

Tampilan-o-Tron HAT

cat /proc/device-tree/hat/product
Display-o-Tron HAT

Nama dan konten semua file di /proc/device-tree/hat/dalam perangkat ini:

name: hat
product: Display-o-Tron HAT
product_id: 0x0007
product_ver: 0x0001
uuid: 666dfe9b-9d78-4825-bbfe-1697048fc6cd
vendor: Pimoroni Ltd.

Adafruit PiTFT Plus - 3,5 inci

cat /proc/device-tree/hat/product
Adafruit PiTFT Plus - 3.5 inch Resistive

Nama dan konten semua file di /proc/device-tree/hat/dalam perangkat ini:

name: hat
product: Adafruit PiTFT Plus - 3.5 inch Resistive Touch
product_id: 0x0000
product_ver: 0x0000
uuid: 684cdc28-d27f-4065-9d11-bb3f3463786d
vendor: Adafruit Industries

Pembaruan: 2018-05-17

Beberapa perangkat dipasarkan sebagai HAT tetapi tidak memiliki EEPROM dengan gumpalan data yang valid, dalam hal ini, tidak ada cara untuk mendeteksi tipe "HAT", karena tidak sesuai dengan spesifikasi HAT.

Pembaruan: 2020-01-07

Saya membuat repo github dengan skrip untuk mendapatkan data untuk HAT yang saya akses, dan untuk mencatat yang bukan benar-benar HAT:

https://github.com/claremacrae/raspi_hat_data

Permintaan tarik dipersilahkan - jalankan saja copy_hat_data.shskrip dalam repo itu.

Clare Macrae
sumber
1
Senang ini bekerja dengan baik untuk Anda! Terima kasih atas konten kehidupan nyata pohon perangkat. Ini tentu membantu untuk memahami masalah dengan lebih baik.
Ghanima
Itu masih berfungsi! Masalah yang Anda tautkan di github hanyalah kesalahan pengguna.
Paul Slocum
Terima kasih @PaulSlocum - Saya telah memperbarui ini, dan membuat repo tentang ini lebih jelas .... Jika Anda mencobanya pada TOPI apa pun yang saya tidak punya datanya, saya akan sangat menghargai Anda menambahkannya ... Biarkan saya tahu jika Anda memerlukan info lebih lanjut ....
Clare Macrae
Saya mendapatkan informasi yang sama persis dari /sys/firmware/devicetree/base/hatjika ada topi terpasang ke RPi. Mana yang disarankan?
testuser
4

Ripping off SteveRobillards komentar luar biasa:

Gunakan E2C IE HAT

The Raspberry Pi Blog poin untuk HAT spesifikasi untuk GitHub dimana kedua dokumentasi dan perangkat lunak ( eepromutils) untuk manipulasi tersedia.

README.md :

ID EEPROM berisi data yang mengidentifikasi papan, memberi tahu B + bagaimana GPIO perlu diatur dan perangkat keras apa yang ada di papan tulis. Ini memungkinkan papan tambahan untuk secara otomatis diidentifikasi dan diatur oleh perangkat lunak Pi pada saat boot termasuk memuat semua driver yang diperlukan.

Informasi HAT tercermin dalam bagan perangkat /proc/device-tree/hatyang dapat dibaca dari ruang pengguna dengan salah satu cara yang disebutkan (python, sh, ...).

Perhatikan bahwa tidak ada HAT bertumpuk * (per Blog Raspberry Pi ):

Stackable HATs ditampilkan dalam diskusi spesifikasi - tetapi akhirnya dibuang karena meningkatnya kompleksitas autoconfig dan potensi kesalahan pengguna.

Jadi pada waktu tertentu hanya satu HAT akan terhubung, minta EEPROM-nya dibacakan, dan buat informasinya tersedia di bagan perangkat.


* Dimungkinkan untuk membuat topi yang dapat ditumpuk jika mereka memiliki tipe yang sama dan karenanya tidak memerlukan identifikasi ganda dan berbeda, mis. Adafruit 16-Channel PWM / Servo HAT untuk Raspberry Pi .

Ghanima
sumber
@steverobillard, maaf, tidak bisa menolak.
Ghanima
3
Tidak masalah selama pengguna mendapat jawaban - hanya itu yang penting.
Steve Robillard
Terima kasih banyak @SteveRobillard dan Ghanima - ini memberi saya beberapa petunjuk yang sangat bagus.
Clare Macrae