- Arus Proyek:
- Persyaratan Proyek
- Diagram Sirkuit:
- Instal Dependensi untuk Raspberry Pi Oscilloscope:
- Kode Python untuk Raspberry Pi Oscilloscope:
- Raspberry Pi Oscilloscope beraksi:
Halo semuanya, selamat datang di postingan hari ini. Salah satu hal yang paling menarik tentang menjadi seorang pembuat adalah mengetahui cara mengembangkan alat darurat, Anda tidak akan pernah terjebak dalam mengerjakan proyek apa pun jika Anda memiliki keserbagunaan semacam itu. Jadi Hari ini, saya akan berbagi cara membangun versi darurat berbasis Raspberry Pi dari salah satu alat terpenting dalam teknik Listrik / Elektronik; Osiloskop.
Osiloskop adalah alat uji elektronik yang memungkinkan visualisasi dan pengamatan tegangan sinyal yang bervariasi, biasanya sebagai plot dua dimensi dengan satu atau lebih sinyal diplot terhadap waktu. Proyek hari ini akan berusaha untuk mereplikasi kemampuan visualisasi sinyal dari osiloskop menggunakan Raspberry Pi dan modul pengubah analog ke digital.
Arus Proyek:
Mereplikasi visualisasi sinyal osiloskop menggunakan Raspberry Pi akan membutuhkan langkah-langkah berikut;
1. Lakukan konversi Digital ke analog dari sinyal Input
2. Siapkan data yang dihasilkan untuk representasi
3. Plot data pada grafik waktu langsung
Diagram blok yang disederhanakan untuk proyek ini akan terlihat seperti diagram di bawah ini.
Persyaratan Proyek
Persyaratan untuk proyek ini dapat diklasifikasikan menjadi dua:
- Persyaratan Hardware
- Persyaratan Software
Persyaratan perangkat keras
Untuk membangun proyek ini, diperlukan komponen / bagian berikut;
- Raspberry pi 2 (atau model lainnya)
- Kartu SD 8 atau 16GB
- Kabel LAN / Ethernet
- Power Supply atau kabel USB
- ADS1115 ADC
- LDR (Opsional seperti yang dimaksudkan untuk pengujian)
- Resistor 10k atau 1k
- Kabel jumper
- Papan tempat memotong roti
- Monitor atau cara lain untuk melihat Desktop pi (termasuk VNC)
Persyaratan Software
Persyaratan perangkat lunak untuk proyek ini pada dasarnya adalah modul python ( matplotlib dan drawow ) yang akan digunakan untuk visualisasi data dan modul Adafruit untuk antarmuka dengan chip ADS1115 ADC. Saya akan menunjukkan cara menginstal modul ini di Raspberry Pi saat kami melanjutkan.
Sementara tutorial ini akan berfungsi terlepas dari raspberry pi OS yang digunakan, saya akan menggunakan Raspberry Pi stretch OS dan saya akan menganggap Anda sudah terbiasa dengan pengaturan Raspberry Pi dengan Raspbian stretch OS, dan Anda tahu cara SSH ke raspberry pi menggunakan perangkat lunak terminal seperti dempul. Jika Anda mengalami masalah dengan semua ini, ada banyak Tutorial Raspberry Pi di situs web ini yang dapat membantu.
Dengan semua komponen perangkat keras di tempatnya, mari buat skema dan hubungkan komponen bersama.
Diagram Sirkuit:
Untuk mengubah sinyal input analog menjadi sinyal digital yang dapat divisualisasikan dengan Raspberry Pi, kita akan menggunakan chip ADS1115 ADC. Chip ini menjadi penting karena Raspberry Pi, tidak seperti Arduino dan kebanyakan mikrokontroler, tidak memiliki konverter analog ke digital (ADC) on-board. Meskipun kami dapat menggunakan chip ADC yang kompatibel dengan raspberry pi, saya lebih suka chip ini karena resolusinya yang tinggi (16bits) dan lembar data yang terdokumentasi dengan baik serta instruksi penggunaan oleh Adafruit. Anda juga dapat memeriksa tutorial ADC Raspberry Pi kami untuk mempelajarinya lebih lanjut.
ADC adalah perangkat berbasis I2C dan harus dihubungkan ke Raspberry Pi seperti yang ditunjukkan pada skema di bawah ini.
Untuk kejelasan, sambungan pin antara kedua komponen juga dijelaskan di bawah ini.
Koneksi ADS1115 dan Raspberry Pi:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Dengan semua koneksi selesai, nyalakan pi Anda dan lanjutkan untuk menginstal dependensi yang disebutkan di bawah ini.
Instal Dependensi untuk Raspberry Pi Oscilloscope:
Sebelum kita mulai menulis skrip python untuk menarik data dari ADC dan memplotnya pada grafik langsung, kita perlu mengaktifkan antarmuka komunikasi I2C dari raspberry pi dan menginstal persyaratan perangkat lunak yang disebutkan sebelumnya. Ini akan dilakukan dalam langkah-langkah di bawah ini sehingga mudah diikuti:
Langkah 1: Aktifkan antarmuka Raspberry Pi I2C
Untuk mengaktifkan I2C, dari terminal, jalankan;
sudo raspi-config
Ketika panel konfigurasi terbuka, pilih opsi antarmuka, pilih I2C dan klik aktifkan.
Langkah 2: Perbarui Raspberry pi
Hal pertama yang saya lakukan sebelum memulai proyek apa pun adalah memperbarui Pi. Melalui ini, saya yakin setiap hal di OS sudah diperbarui dan saya tidak akan mengalami masalah kompatibilitas dengan perangkat lunak terbaru apa pun yang saya pilih untuk dipasang di Pi. Untuk melakukan ini, jalankan di bawah dua perintah:
sudo apt-get pembaruan sudo apt-get peningkatan
Langkah 3: Instal perpustakaan Adafruit ADS1115 untuk ADC
Setelah pembaruan selesai, kami sekarang siap untuk menginstal dependensi yang dimulai dengan modul python Adafruit untuk chip ADS115. Pastikan Anda berada di direktori home Raspberry Pi dengan menjalankan;
cd ~
kemudian instal build-essential dengan menjalankan;
sudo apt-get install build-essential python-dev python-smbus git
Selanjutnya, kloning folder git Adafruit untuk perpustakaan dengan menjalankan;
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Ubah ke direktori file kloning dan jalankan file setup;
cd Adafruit_Python_ADS1x1z sudo python setup.py install
Setelah instalasi, layar Anda akan terlihat seperti gambar di bawah ini.
Langkah 4: Uji perpustakaan dan komunikasi 12C.
Sebelum kita melanjutkan dengan sisa proyek, penting untuk menguji pustaka dan memastikan ADC dapat berkomunikasi dengan raspberry pi melalui I2C. Untuk melakukan ini kita akan menggunakan contoh skrip yang disertakan dengan pustaka.
Saat masih di folder Adafruit_Python_ADS1x15, ubah direktori ke direktori contoh dengan menjalankan;
contoh cd
Selanjutnya, jalankan contoh sampletest.py yang menampilkan nilai dari empat saluran pada ADC dalam bentuk tabel.
Jalankan contoh menggunakan:
python simpletest.py
Jika modul I2C sudah aktif dan koneksinya bagus, Anda akan melihat datanya seperti gambar di bawah ini.
Jika terjadi kesalahan, periksa untuk memastikan ADC terhubung dengan baik ke PI dan komunikasi I2C diaktifkan di Pi.
Langkah 5: Instal Matplotlib
Untuk memvisualisasikan data kita perlu menginstal modul matplotlib yang digunakan untuk memplot semua jenis grafik dengan python. Ini bisa dilakukan dengan berlari;
sudo apt-get install python-matplotlib
Anda akan melihat hasil seperti gambar di bawah ini.
Langkah6: Instal modul python Drawnow
Terakhir, kita perlu menginstal modul python drawow . Modul ini membantu kami memberikan pembaruan langsung ke plot data.
Kami akan menginstal drawow melalui penginstal paket python; pip , jadi kami perlu memastikannya terpasang. Ini bisa dilakukan dengan berlari;
sudo apt-get install python-pip
Kita kemudian dapat menggunakan pip untuk menginstal paket yang digambar dengan menjalankan:
sudo pip menginstal drawow
Anda harus mendapatkan hasil seperti gambar di bawah ini setelah menjalankannya.
Dengan semua dependensi terinstal, sekarang kita siap untuk menulis kode.
Kode Python untuk Raspberry Pi Oscilloscope:
Kode python untuk Pi Oscilloscope ini cukup sederhana terutama jika Anda sudah familiar dengan modul matplotlib python. Sebelum menunjukkan kepada kita seluruh kode, saya akan mencoba memecahnya menjadi beberapa bagian dan menjelaskan apa yang dilakukan setiap bagian kode sehingga Anda dapat memiliki pengetahuan yang cukup untuk memperluas kode untuk melakukan lebih banyak hal.
Pada tahap ini, penting untuk beralih ke monitor atau menggunakan penampil VNC, apa pun yang melaluinya Anda dapat melihat desktop Raspberry Pi Anda, karena grafik yang sedang diplot tidak akan ditampilkan di terminal.
Dengan monitor sebagai antarmuka, buka file python baru. Anda dapat menyebutnya dengan nama apapun yang Anda inginkan, tetapi saya akan menyebutnya scope.py.
sudo nano scope.py
Dengan file yang dibuat, hal pertama yang kita lakukan adalah mengimpor modul yang akan kita gunakan;
impor waktu impor matplotlib.pyplot sebagai plt dari drawow import * import Adafruit_ADS1x15
Selanjutnya, kami membuat turunan pustaka ADS1x15 yang menentukan ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
Selanjutnya, kami menetapkan penguatan ADC. Ada rentang penguatan yang berbeda dan harus dipilih berdasarkan tegangan yang Anda harapkan pada input ADC. Untuk tutorial ini, kami memperkirakan 0 - 4.09v sehingga kami akan menggunakan gain 1. Untuk info lebih lanjut tentang gain, Anda dapat memeriksa lembar data ADS1015 / ADS1115.
KEUNTUNGAN = 1
Selanjutnya, kita perlu membuat variabel array yang akan digunakan untuk menyimpan data yang akan diplot dan satu lagi untuk digunakan sebagai hitungan.
Val = cnt = 0
Selanjutnya, kami mengetahui niat kami untuk membuat plot yang dikenal interaktif sehingga memungkinkan kami memplot data secara langsung.
plt.ion ()
Selanjutnya, kami memulai konversi ADC berkelanjutan dengan menentukan saluran ADC, dalam hal ini, saluran 0 dan kami juga menentukan keuntungan.
Perlu dicatat bahwa keempat saluran ADC pada ADS1115 dapat dibaca pada saat yang sama, tetapi 1 saluran sudah cukup untuk demonstrasi ini.
adc.start_adc (0, keuntungan = KEUNTUNGAN)
Selanjutnya kita membuat fungsi def makeFig , untuk membuat dan mengatur atribut grafik yang akan menampung plot langsung kita. Pertama-tama kita mengatur batas sumbu y menggunakan ylim , setelah itu kita memasukkan judul plot, dan nama label sebelum kita menentukan data yang akan diplot dan gaya dan warna plotnya menggunakan plt.plot (). Kami juga dapat menyatakan saluran (seperti saluran 0 dinyatakan) sehingga kami dapat mengidentifikasi setiap sinyal ketika empat saluran ADC sedang digunakan. plt.legend digunakan untuk menentukan di mana kita ingin informasi tentang sinyal itu (misalnya, Saluran 0) ditampilkan pada gambar.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputs') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'lower right')
Selanjutnya kita menulis perulangan while yang akan digunakan terus-menerus membaca data dari ADC dan memperbarui plot yang sesuai.
Hal pertama yang kami lakukan adalah membaca nilai konversi ADC
nilai = adc.get_last_result ()
Selanjutnya kami mencetak nilai pada terminal hanya untuk memberi kami cara lain untuk mengonfirmasi data yang diplot. Kami menunggu beberapa detik setelah mencetak kemudian kami menambahkan data ke daftar (val) yang dibuat untuk menyimpan data untuk saluran itu.
print ('Saluran 0: {0}'. format (nilai)) time.sleep (0,5) val.append (int (nilai))
Kami kemudian memanggil drawow untuk memperbarui plot.
digambar (makeFig)
Untuk memastikan bahwa data terbaru tersedia di plot, kami menghapus data pada indeks 0 setelah setiap 50 hitungan data.
cnt = cnt + 1 jika (cnt> 50): val.pop (0)
Itu saja!
The kode Python lengkap diberikan pada akhir tutorial ini.
Raspberry Pi Oscilloscope beraksi:
Salin kode python lengkap dan tempel di file python yang kita buat sebelumnya, ingat kita akan membutuhkan monitor untuk melihat plot sehingga semua ini harus dilakukan oleh VNC atau dengan monitor atau layar yang terhubung.
Simpan kode dan jalankan menggunakan;
sudo python scope.py
Jika Anda menggunakan nama lain selain scope.py, jangan lupa untuk mengubahnya agar cocok.
Setelah beberapa menit, Anda akan melihat data ADC sedang dicetak di terminal. Kadang-kadang Anda mungkin mendapatkan peringatan dari matplotlib (seperti yang ditunjukkan pada gambar di bawah) yang harus disembunyikan tetapi itu tidak mempengaruhi data yang ditampilkan atau plot. Namun untuk menekan peringatan, baris kode berikut dapat ditambahkan setelah baris impor dalam kode kita.
Peringatan impor import matplotlib.cbook warnings.filterwarnings ("abaikan", category = matplotlib.cbook.mplDeprecation)
Itu saja untuk tutorial ini guys, untuk menguji osiloskop Anda sepenuhnya, Anda dapat menghubungkan perangkat analog seperti potensiometer ke saluran di ADC dan Anda akan melihat data berubah dengan setiap putaran potensiometer. Atau Anda dapat memasukkan gelombang Sinus atau gelombang persegi untuk menguji hasilnya.
Terima kasih telah membaca, jika Anda memiliki pertanyaan atau sesuatu yang Anda ingin saya tambahkan, tinggalkan komentar.
Sampai jumpa lagi, Terus buat!