Isi kandungan:

Monitor Perkakasan PC: 6 Langkah (dengan Gambar)
Monitor Perkakasan PC: 6 Langkah (dengan Gambar)

Video: Monitor Perkakasan PC: 6 Langkah (dengan Gambar)

Video: Monitor Perkakasan PC: 6 Langkah (dengan Gambar)
Video: Cara pasang Monitor ke Laptop + Cara Settingnya! 2024, Julai
Anonim
Monitor Perkakasan PC
Monitor Perkakasan PC
Monitor Perkakasan PC
Monitor Perkakasan PC
Monitor Perkakasan PC
Monitor Perkakasan PC

Hai semua. Saya memulakan projek ini kerana dua sebab: Saya membina gelung penyejuk air di komputer saya baru-baru ini dan memerlukan sesuatu untuk mengisi ruang secara visual dalam kes itu DAN saya mahu suhu dan statistik lain diperiksa dengan cepat mengintip tanpa OSD shenanigans mengisi sudut skrin. Sudah tentu ada penyelesaian yang sudah siap untuk itu, tetapi kebanyakannya tidak sesuai dengan feng shui saya. Oleh itu, alih-alih meletakkan paparan HDMI 7 dalam casing saya dengan kabel yang melekatkan casing dan bar tugas tingkap selalu menyala, saya memutuskan untuk membina mainan saya sendiri.

Oleh kerana saya bukan jurutera atau pengaturcara, tetapi hanya seorang lelaki yang mempunyai solder dan beberapa pengetahuan yang boleh dipelajari sendiri, ini bukan hanya petunjuk langkah demi langkah, saya juga akan berusaha memberi tumpuan kepada masalah ini menyelesaikan dan menyelidik aspek yang mendorong saya ke arah pembinaan ini.

PENAFIAN: SEMUA KERJA SAYA DIBAHAGIKAN SEBAGAI SIKAP KREATIF-KONGSIKAN 4.0. SAYA MEMINTA INSPIRASI DARI BANYAK CONTOH DI SELURUH INTERNET, JIKA ANDA MENGAKUI BEBERAPA BAHAGIAN KERJA INI SEBAGAI ANDA, SILA HUBUNGI SAYA UNTUK MENGHADIRI. TIADA PELANGGARAN YANG DIPERLUKAN, SAYA AKAN MEMBETULKAN SETIAP KESALAHAN. TERIMA KASIH

PENAFIAN KEDUA: KERJA SAYA DIBAHAGIKAN SEBAGAI. SAYA TIDAK BERTANGGUNGJAWAB ATAU KERUSAKAN YANG DILAKUKAN DARI PENGGUNAAN SETIAP KOD ATAU ARAHAN SAYA

Bekalan

  • Arduino Nano (atau UNO jika anda mahu)
  • Paparan TFT. Dalam kes saya, ini adalah paparan 3.5 "yang sesuai dengan ILI9486 / ILI9488L.
  • Senso Suhu. Dalam kes mu sensor TMP36 analog.
  • Kabel, wayar, penyambung dupont (lebih lanjut kemudian)
  • (pilihan) Papan roti untuk ujian
  • (pilihan tetapi disyorkan) papan wangi kecil

Langkah 1: Kajian Kebolehlaksanaan (agak)

Seperti yang saya katakan, saya tidak mahu dan paparan HDMI tersangkut dalam casing PC saya jadi, berjubah dengan kepintaran saya sendiri, saya mula mencari idea yang serupa di internet. Dan ini adalah petua nombor satu: Google adalah rakan anda (baik, mana-mana enjin carian yang baik …). Kita hidup di dunia di mana tidak ada yang benar-benar asli lagi, tetapi daripada melihat ungkapan ini dengan makna negatif, kita dapat menggunakan ini untuk keuntungan kita: apa sahaja yang anda mahu buat, mungkin seseorang di suatu tempat telah melakukan sesuatu yang serupa, jadi jika anda tidak tahu bagaimana melaksanakan idea, kemungkinan besar anda akan mendapat maklumat berguna di luar sana. Semasa mencari di internet, selalunya berguna untuk mempertimbangkan dua peraturan:

  1. jangan repot-repot mencari halaman 3 atau 4 dari sebarang carian, hampir selalu membuang masa. Sebaliknya
  2. ubah istilah carian, ulang kalimat soalan dari sudut pandangan lain (iaitu: "sensor suhu arduino" -> "suhu baca dengan arduino").

Sebenarnya ia penuh dengan projek-projek baik di luar sana, dan saya mengakui saya menghabiskan hari-hari pertama untuk mengkaji kebanyakan projek ini. Tetapi tidak ada yang bersedia untuk menolong saya, kerana saya mahukan sesuatu yang sesuai dengan keperluan saya.

Oleh kerana saya harus membuat sesuatu yang khusus, saya memutuskan untuk fokus pada perkakasan yang betul untuk digunakan dan meninggalkan bahagian perisian untuk kemudian, kerana perisian selalu dapat dibuat dan disesuaikan dengan keperluan, di sisi lain perkakasan saya terikat pada ketersediaan dan ciri.

Saya mahukan sesuatu berdasarkan Arduino, kerana saya sudah memilikinya, ia didokumentasikan dengan baik dan komuniti berkembang. Tidak ada masalah di sini, seperti yang saya katakan sebelum banyak maklumat.

Saya mahukan paparan yang cukup besar untuk dilihat dengan jelas dari jarak beberapa meter dan sesuai dengan rupa bangunan saya, ini tidak termasuk paparan watak nokia dan LCD. OLED juga tidak dapat dipertimbangkan, kerana mereka kecil. Oleh itu, saya memilih paparan warna TFT. Tidak perlu skrin sentuh, kerana ia akan berada di dalam PC. Saya menjumpai yang berukuran 3.5 , yang sudah dirancang untuk Arduino, ~ 15 € di Amazon. Cukup bagus.

Sekarang, setelah perkakasan ditunjukkan, saya memberi tumpuan kepada perisian.

Hampir semua projek, di sisi Arduino, agak serupa. Saya hanya perlu menyesuaikan kod untuk paparan dan protokol komunikasi untuk mengumpulkan data dari aplikasi pelayan. Di sisi komputer, kebanyakan projek berdasarkan C, C ++, C #, python dan kebanyakan projek hanya menawarkan antara muka CLI atau pelayan seperti perkhidmatan Windows. Saya mahukan GUI. Saya tidak pernah menggunakan bahasa seperti C di Windows, apalagi bangunan GUI. Tetapi saya belajar beberapa Visual Basic 15 tahun yang lalu, jadi saya mencubanya dan memuat turun versi Visual Studio percuma dari Microsoft.

Setelah mempelajari banyak projek serupa, saya menggunakan OpenHardwareMonitor untuk mendapatkan semua maklumat perkakasan dan RivaTuner untuk FPS, kerana ini adalah percuma dan cukup didokumentasikan.

Langkah 2: Ujian Perkakasan

Ujian Perkakasan
Ujian Perkakasan
Ujian Perkakasan
Ujian Perkakasan
Ujian Perkakasan
Ujian Perkakasan

Sebelum menghidupkan solder dan memperbaiki selamanya dalam ruang dan masa mana-mana komponen elektronik, adalah amalan yang baik untuk membina prototaip ujian (tip nombor dua). Nasib baik, ini bukan 1995 lagi. Pada masa kini cukup mudah untuk mengatur prototaip yang agak kompleks walaupun di papan roti kecil. Dalam kes saya, paparan TFT mengalami penurunan pin untuk Arduino Uno, jadi saya meletakkannya di Arduino uno saya dan mula bermain dengan perpustakaan contoh dan membaca manual rujukan untuk memahami prinsip dan batasan operasinya.

Pada ketika ini saya telah memikirkan cara melukis garis dan peta bit dan menulis teks, jadi saya mula bermain dengan pengekodan perisian, meninggalkan semua perkara sekunder untuk kemudian, tetapi saya akan memasukkan di sini sensor suhu.

Pada titik tertentu, saya mempunyai tempat kosong di layar tetapi tidak ada data dari sensor PC yang benar-benar berguna, jadi saya memutuskan untuk meletakkan sensor suhu di dalam casing untuk suhu persekitaran. Paparan memakan hampir semua pin Arduino, untungnya pin analog A5 tidak digunakan, jadi saya mengikat TMP36. Saya juga menguji DHT22 tetapi cara ini terlalu banyak untuk aplikasi ini.

Terdapat banyak contoh untuk TMP36, saya hanya menyalinnya dalam satu fungsi. TMP35 mempunyai 3 pin, Vin menuju ke 5V, GND menuju ke tanah dan Keluar menuju ke pin A5. Saya meletakkan kapasitor seramik 0.1uF antara Vin dan GND. Mereka mengatakan itu diperlukan. Mungkin tidak berguna dalam kes ini, tetapi… Saya bahkan menetapkan voltan rujukan analog Arduino ke pin 3.3v untuk bacaan suhu yang lebih baik. Masih tidak berguna dalam kes ini, tetapi …

Langkah 3: Kod Arduino

Sila muat turun dan buka kod Arduino yang disertakan untuk mengikuti penjelasan dalam langkah ini. Saya cuba memberikan komen yang cukup dalam kod itu agar tidak jelas tanpa membanjiri.

Anda pasti memerlukan perpustakaan MCUFRIEND_kbv dan Adafruit GFX. Kedua-duanya mudah dipasang dari Arduino IDE.

Program ini boleh dibahagikan kepada beberapa bahagian seperti ini:

  1. menentukan dan menyatakan semua pemboleh ubah global dan perkara lain yang diperlukan
  2. inisialisasi paparan, tetapkan rujukan luaran dan lukis UI (semua ini terkandung dalam fungsi setup (), kerana ia mesti dijalankan sekali sahaja)
  3. membaca data dari sambungan bersiri dan memperuntukkannya dalam fungsi array (loop ())
  4. membaca data sensor suhu luaran (fungsi readExtTemp ())
  5. mencetak data pada paparan (fungsi printData ())
  6. kembali ke gelung

BAHAGIAN 1: Pernyataan dan definisi

Pada bahagian awal kod, saya menggunakan banyak penunjuk dan tatasusunan, jadi saya dapat menekan banyak baris kod berulang dalam masa lebih pendek untuk menulis kitaran UNTUK. Ya, saya malas. Seperti yang anda lihat, saya menyatakan array penunjuk dan mengisi dengan semua gambar dari fail pics.h. Ini memungkinkan untuk melakukan helah kitaran FOR untuk menarik semua ikon.

BAHAGIAN 2: persediaan (), kebanyakannya lukisan UI

Saya menggunakan fon lalai kerana tidak mempunyai latar belakang yang telus, jadi ia memungkinkan untuk menulis baris teks baru daripada yang lama tanpa perlu menghapusnya. Menggunakan fon lain bermaksud menggambar kotak hitam di atas teks lama sebelum menulis baris baru, yang membawa kepada kesan kerlipan yang tidak menyenangkan.

Selepas beberapa ujian, saya dapat membuat kompromi antara pembacaan dan maklumat yang ditunjukkan. Saya membahagikan paparan dalam dua lajur dan 5 baris. Lajur kiri mencari data CPU dan motherboard, termasuk dari nama CPU atas, bawah, suhu, beban, penggunaan RAM dan suhu motherboard. Yang betul dikhaskan untuk GPU dan merangkumi nama GPU, suhu, beban, kaunter Frames Per Second dan sensor suhu luaran.

Seperti yang anda lihat dalam kodnya, saya memutuskan untuk tidak menggunakan gambar pada kad SD, kerana memuatkannya sangat lambat. Saya memutuskan untuk memasukkan semua ikon dalam memori PROGMEM dan melukis garis dengan arahan drawLine () khusus. ini juga berguna untuk pembetulan UI kecil.

Dalam usaha lemah untuk memberikan gambaran mendalam kepada UI, saya menarik dua perkara (garis, segi empat tepat, gambar) dengan warna yang berbeza dan dengan ofset kecil. Sayangnya itu bukan hasil yang saya harapkan, tetapi ia akan berjaya.

Baris terakhir fungsi ini adalah untuk mencetak tempat letak pada TFT, sehingga Arduino akan menerima data.

BAHAGIAN 3: gelung utama (), pengambilan data dan pemformatan

Di sinilah keajaiban berlaku: data diterima melalui siri, diberikan kepada pemboleh ubah yang betul dan kemudian dicetak. Untuk mencapai semua ini dalam jumlah baris yang paling sedikit, saya menggunakan perintah case case dan a for cycle.

Protokol komunikasi yang saya bawa terbahagi kepada dua bahagian: pelaksanaan awal sekali berjabat tangan dan bahagian data sebenar.

Jabat tangan diperlukan untuk melaksanakan ciri sambungan automatik semasa program PC dimulakan. Ia seperti ini:

  • PC menghantar tali jabat tangan (dalam kes ini hanya "*****;")
  • Arduino menghantar jawapan

Senang kacang.

Bahagian data kelihatan seperti ini: "i: xxx, yyy, zzz, aaa,;" maksudnya ialah:

"i" adalah indeks, saya memanggilnya komponenSelector dalam kod. Nilai "i" adalah:

  • i = 0 - NAMA. Nilai berikut adalah nama yang ditunjukkan pada baris pertama pada paparan. Ini akan dihantar dan dicetak pada paparan hanya sekali, kerana hari ini agak sukar untuk menukar CPU dan GPU…
  • i = 1 - DATA COLUMN pertama - nilai berikut ditunjukkan di separuh kiri paparan dari atas ke bawah. Dalam kes saya: suhu CPU, beban CPU, penggunaan RAM, temp Motherboard.
  • i = 2 - DATA COLUMN ke-2 - seperti di atas, tetapi untuk separuh kanan paparan
  • i = 3 - PERINTAH CETAK. Dalam kes ini, rentetan bersiri mentah hanya "3:;" kerana data lain tidak diperlukan.

"xxx, yyy, zzz, aaa" adalah nilai sebenar. mereka dibaca sebagai rentetan oleh arduino dan keseluruhan format dibuat oleh program PC. Untuk i = 0 nilai ini masing-masing 14 aksara untuk nama perkakasan. Untuk i = 1 atau 2 masing-masing hanya tiga watak, cukup untuk menunjukkan suhu dan bingkai per saat. Sudah tentu ":", "," dan ";" watak dilarang dalam bidang ini.

The ":" adalah pemisah antara komponenSelector dan nilai, the "," adalah pemisah nilai dan ";" adalah akhir baris

Semasa menerima data, Arduino akan menyimpannya sebagai rentetan hingga ";" simbol diterima, maka ia akan mencari simbol ":" dan akan menggunakannya untuk mendapatkan nilai komponenSelecor. Ini akan digunakan untuk fungsi case case untuk memilih prosedur yang betul untuk diikuti. Ia juga digunakan untuk memilih indeks yang betul dalam array allData.

Selepas ini Arduino akan mencari simbol "," dan akan terus memasukkan nilai dalam array allData.

Sekiranya komponenSelector adalah 0, bendera printName akan ditetapkan ke true. Sekiranya komponenSelector adalah 3, fungsi readExtTemp () dan printData () dipanggil.

Bahagian 4: fungsi readExtTemp ()

Tidak banyak yang boleh dikatakan di sini, ia membaca 32 kali dari pin A5 dan menghasilkan nilai suhu sebagai rentetan. Saya bersama Pemberontak, jadi saya menggunakan Celsius. Apa-apa lebih daripada 100 ° C tidak betul sehingga akan ditunjukkan sebagai "---" pada paparan. Untuk apa-apa yang kurang dari 100 ° C akan diformat untuk mempunyai ruang yang cukup untuk menampung ruang 3 aksara pada paparan. Adalah mungkin untuk mengeluarkan dan memasukkan kembali sensor dan tidak ada nilai pelik yang akan ditunjukkan.

Bahagian 5: fungsi printData ()

Seperti biasa saya menggunakan kitaran untuk mencetak barang secara berurutan di paparan. Sekiranya flag printNames adalah benar, ia akan mencetak nama, menetapkan bendera ke false, dan meneruskan.

Bahagian 6: kembali ke gelung

Cukup jelas, saya katakan …

fail pics.h

Di sini saya menyimpan semua ikon untuk UI. Adalah mungkin untuk menggunakan pembaca kad SD yang disertakan dalam paparan, tetapi saya masih mempunyai cukup memori di Arduino untuk ikon hitam putih saya.

Saya merancangnya dengan Editor Ikon Junior kerana percuma dan cukup bagus untuk melukis piksel ikon kecil. Saya terpaksa menukar fail ikon (disimpan sebagai PNG) dengan alat dalam talian SKAARHOJ.

Langkah 4: Kod Asas Visual

Kod Asas Visual
Kod Asas Visual

Inilah kod VB

PEMBERITAHUAN: ini adalah kali pertama saya berkongsi projek Visual Studio. Saya hanya menyalin folder projek dan memasukkannya ke zip. Sekiranya ini tidak berjaya, beritahu saya cara yang lebih baik untuk berkongsi projek seperti ini. Terima kasih

Seperti yang saya katakan sebelumnya, saya tidak dapat membuat GUI dalam bahasa C # atau bahasa lain, tetapi saya mempunyai beberapa pengalaman dalam Visual Basic suatu ketika dahulu. Saya memuat turun edisi Komuniti Visual Studio (tentu saja percuma) dengan persekitaran Visual Basic. Baiklah, saya terpaksa memikirkan banyak perkara, kerana kali terakhir saya menggunakan VB versi 2005 atau semacamnya … Tetapi internet penuh dengan petunjuk yang baik, seperti biasa.

Setelah mengetahui beberapa perkara antara muka, versi yang lebih baru sebenarnya lebih mudah dan lebih fleksibel daripada yang lama.

Untuk program ini, saya mahukan sesuatu dengan bentuk tingkap tetapi dapat dikendalikan sepenuhnya dari ikon dulang sistem. Saya sebenarnya menggunakan borang hampir hanya untuk tujuan penyahpepijatan, kerana saya ingin meletakkan kotak teks dan senarai untuk membaca nilai output fungsi dan beberapa butang arahan untuk mengujinya.

Program "akhir" hanyalah ikon dulang dengan menu pop timbul yang menunjukkan pelbagai kawalan dan bentuk utama dengan dua kotak senarai yang menunjukkan data yang dihantar ke Arduino.

Saya melaksanakan fungsi autoconnect dan fungsi "start at boot". Lebih lanjut mengenai itu kemudian.

Program utama hanyalah penyesuaian dari pelbagai contoh dan potongan kod menggunakan perpustakaan OpenHardwareMonitor dan perpustakaan Memori Bersama RivaTuner.

Program berjalan seperti ini:

  • dapatkan data dari perpustakaan OpenHardwareMonitor dan RTSSSm
  • sediakan dan format semua data untuk protokol komunikasi
  • menghantar data ke Arduino
  • bilas dan ulangi

sudah tentu nama perkakasan dibaca pada permulaan dan dihantar sekali sahaja.

Penghitung FPS hanya diaktifkan apabila aplikasi yang sesuai digunakan (misalnya permainan, program pemodelan 3D, dan sebagainya), jika tidak, tempat letak "---" akan dihantar ke paparan.

saya tidak akan menjelaskan secara mendalam bagaimana mendapatkan nilai dari perpustakaan, kerana didokumentasikan dengan baik di internet dan agak difahami dari kodnya. Hanya ingin memberitahu tentang masalah mendapatkan suhu motherboard untuk ditunjukkan melalui OpenHardwareMonitor (mulai sekarang OHMonitor, kerana hidup terlalu pendek) perpustakaan. Saya mempunyai Asus Maximus VIII Gene MoBo, yang dilengkapi dengan sensor suhu fu ** ton pada motherboard, tetapi OHMonitor menamakannya sebagai Sensor suhu # 1, # 2… #n DAN tidak ada tempat yang ditentukan lokasi suhu. Oleh itu, saya terpaksa memasang perisian suite Asus AI yang mengerikan, di mana sensor mempunyai sekurang-kurangnya NAMA dan membandingkan pelbagai suhu antara kedua-dua program. Nampaknya sensor temp generik motherboard saya adalah # 2 untuk OHMonitor, jadi seperti yang anda lihat di sub Timer1_tick di bawah item MoBo, saya terpaksa mencari nama sensor yang mengandungi rentetan "# 2" untuk mendapatkan bacaan yang betul.

TL; DR: anda mesti menjaga sensor suhu motherboard yang betul. Selebihnya mungkin baik untuk pergi.

Namun ini hanya Versi 1, saya merancang untuk memasang alat ini PC saya yang lain, jadi saya mungkin akan melaksanakan cara untuk memilih sensor dan mungkin juga merancang semula antara muka di Arduino semasa dalam perjalanan.

Fungsi Autoconnect

Fungsi ini sebenarnya sederhana: jika PC tidak dihubungkan dengan Arduino, setiap x milisaat (berdasarkan Timer1) fungsi ini dipanggil. Ia cuba berhubung dengan setiap port COM di PC, jika berjaya menghantar tali jabat tangan "*****;". Sekiranya jawapannya adalah "R", maka peranti yang betul disambungkan dan prosedur biasa diikuti. Jika tidak, ia mencuba port COM seterusnya.

Seperti yang anda lihat, terdapat banyak pengecualian dalam fungsi ini. Ini kerana saya mahukan plug and play sepenuhnya, tanpa output ralat. Dengan menangani pengecualian, saya dapat membuatnya mengabaikan sepenuhnya ketiadaan peranti luaran dan saya juga boleh memasang dan menyambungkan peranti panas pada bila-bila masa yang saya mahukan, tanpa menimbulkan ralat kerosakan untuk program ini.

Fungsi Start At Boot

Saya mahu program ini dimulakan semasa boot. Cukup mudah, kata anda. Letakkan pautan di folder yang sesuai, kata anda. Tetapi tidak. Oleh kerana perpustakaan OHMonitor dan RTSS, kami memerlukan tahap pelaksanaan pentadbir untuk mengumpulkan maklumat. Ini bermaksud skrin UAC yang sangat menjengkelkan setiap kali aplikasi ini dilancarkan. Tidak boleh. Oleh itu, saya menyesuaikan skrip yang dibuat oleh Matthew Wai (pautan di sini) untuk mencapai permulaan senyap semasa boot. Saya baru saja menyalin skrip dalam file Resources1, dibagi dalam beberapa bahagian, kemudian menerapkan subrutin yang membuat (atau membuang) fail tugas windows, disesuaikan dengan lokasi program yang dapat dijalankan sekarang dan hal-hal seperti itu.

Ikon Dulang Sistem

Terima kasih kepada objek NotifyIcon dan ContextMenu, saya dapat melaksanakan cara mudah dan gemuk untuk mengawal aplikasi. Klik kanan pada ikon dulang dan menu muncul. Terdapat oprion ini:

  • Mulakan semasa but: anda boleh menyemak dan mencentangnya untuk mengaktifkan atau mematikan fungsi permulaan pada but
  • Autoconnect: sama seperti di atas, tetapi mengendalikan fungsi autoconnect
  • Sambung / Putus: ia mengendalikan sambungan. Tidak berfungsi dengan Autoconnection diaktifkan
  • Masa muat semula: memberikan submenu lungsur turun, anda boleh memilih masa muat semula dari 1 hingga sepuluh saat
  • Maksimumkan: membuka tetingkap utama. Sama seperti mengklik dua kali pada ikon
  • Keluar: menjelaskan sendiri

Menyusun perisian

Untuk menyusun perisian, anda mungkin perlu memuat turun dan menambahkan rujukan ke perpustakaan yang tidak terdapat dalam kod.

Anda boleh menemui perpustakaan OpenHardwareMonitor di sini. Anda mesti memuat turun perisian, membuka fail zip dan menyalin fail OpenHardwareMonitorLib. DLL di folder projek.

Berikut adalah pautan untuk perpustakaan RTSSharedMemoryNET, anda mesti memuat turun dan menyusun seni bina anda, kemudian salin RTSS [TL; DR] moryNET. DLL dalam folder projek anda.

Sekarang anda perlu menambahkan rujukan dalam kod anda, arahan di sini

Pastikan anda menyusun kedua-dua projek pelayan RTSS [TL; DR] moryNET dan PCHwMon untuk seni bina yang sama.

Saya menyertakan program persediaan siap pakai, jadi anda boleh memasang semuanya tanpa bermain-main dengan Visual Basic. Ia disusun untuk x86, akan berfungsi pada seni bina x86 dan x64. Ia memerlukan kerangka kerja. NET 4.7.2 untuk dijalankan.

Walau apa pun, anda perlu memasang RivaTuner. Anda boleh mendapatkannya di sini sebagai aplikasi mandiri atau anda boleh memasang Msi Afterburner, yang semestinya termasuk RTServer.

Langkah 5: Perlaksanaan Perkakasan Akhir

Disyorkan: