- Aliran Projek:
- Keperluan Projek
- Rajah Litar:
- Pasang Ketergantungan untuk Raspberry Pi Oscilloscope:
- Kod Python untuk Oscilloscope Raspberry Pi:
- Raspberry Pi Oscilloscope in Action:
Hai kawan-kawan, selamat datang ke siaran hari ini. Salah satu perkara yang paling menarik untuk menjadi pembuatnya adalah mengetahui cara mengembangkan alat sementara, anda tidak akan pernah bosan mengerjakan projek apa pun apabila anda mempunyai fleksibiliti seperti itu. Jadi Hari Ini, saya akan berkongsi bagaimana membina versi sementara Raspberry Pi salah satu alat terpenting dalam kejuruteraan Elektrik / Elektronik; Osiloskop.
Osiloskop adalah instrumen ujian elektronik yang memungkinkan visualisasi dan pemerhatian voltan isyarat yang berbeza-beza, biasanya sebagai plot dua dimensi dengan satu atau lebih isyarat diplot terhadap masa. Projek hari ini akan berusaha meniru keupayaan visualisasi isyarat osiloskop menggunakan Raspberry Pi dan modul penukar analog ke digital.
Aliran Projek:
Meniru visualisasi isyarat osiloskop menggunakan Raspberry Pi akan memerlukan langkah-langkah berikut;
1. Lakukan penukaran Digital ke analog isyarat Input
2. Sediakan data yang dihasilkan untuk perwakilan
3. Petak data pada grafik masa langsung
Gambarajah blok yang dipermudahkan untuk projek ini akan seperti gambarajah di bawah.
Keperluan Projek
Keperluan untuk projek ini dapat dikelaskan kepada dua:
- Keperluan Perkakasan
- Keperluan Perisian
Keperluan perkakasan
Untuk membina projek ini, komponen / bahagian berikut diperlukan;
- Raspberry pi 2 (atau model lain)
- Kad SD 8 atau 16GB
- Kabel LAN / Ethernet
- Bekalan Kuasa atau kabel USB
- ADS1115 ADC
- LDR (Pilihan seperti yang dimaksudkan untuk ujian)
- Perintang 10k atau 1k
- Wayar pelompat
- Papan roti
- Pantau atau cara lain untuk melihat Desktop pi (termasuk VNC)
Keperluan Perisian
Keperluan perisian untuk projek ini pada dasarnya adalah modul python ( matplotlib dan drawow ) yang akan digunakan untuk visualisasi data dan modul Adafruit untuk berinteraksi dengan cip ADS1115 ADC. Saya akan menunjukkan cara memasang modul ini pada Raspberry Pi semasa kita meneruskan.
Walaupun tutorial ini berfungsi tanpa mengira OS raspberry pi yang digunakan, saya akan menggunakan OS peregangan Raspberry Pi dan saya menganggap anda sudah biasa mengatur Raspberry Pi dengan OS peregangan Raspbian, dan anda tahu bagaimana memasukkan SSH ke dalam raspberry pi menggunakan perisian terminal seperti dempul. Sekiranya anda mempunyai masalah dengan perkara ini, terdapat banyak Tutorial Raspberry Pi di laman web ini yang dapat membantu.
Dengan semua komponen perkakasan yang ada, mari buat skema dan sambungkan komponen tersebut bersama-sama.
Rajah Litar:
Untuk menukar isyarat input analog ke isyarat digital yang dapat dilihat dengan Raspberry Pi, kita akan menggunakan cip ADS1115 ADC. Cip ini menjadi penting kerana Raspberry Pi, tidak seperti Arduino dan kebanyakan pengawal mikro, tidak mempunyai penukar analog ke digital (ADC). Walaupun kami boleh menggunakan cip ADC serasi raspberry pi, saya lebih suka cip ini kerana resolusi tinggi (16 bit) dan lembaran data yang didokumentasikan dengan baik dan menggunakan arahan oleh Adafruit. Anda juga boleh melihat tutorial Raspberry Pi ADC kami untuk mengetahui lebih lanjut mengenainya.
ADC adalah peranti berasaskan I2C dan harus disambungkan ke Raspberry Pi seperti yang ditunjukkan dalam skema di bawah.
Untuk kejelasan, sambungan pin antara dua komponen juga dijelaskan di bawah.
Sambungan ADS1115 dan Raspberry Pi:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Dengan sambungan selesai, aktifkan pi anda dan terus pasang kebergantungan yang disebutkan di bawah.
Pasang Ketergantungan untuk Raspberry Pi Oscilloscope:
Sebelum kita mula menulis skrip python untuk menarik data dari ADC dan memplotnya pada grafik langsung, kita perlu mengaktifkan antara muka komunikasi I2C dari raspberry pi dan memasang keperluan perisian yang disebutkan sebelumnya. Ini akan dilakukan dalam langkah-langkah di bawah ini sehingga mudah diikuti:
Langkah 1: Dayakan antara muka Raspberry Pi I2C
Untuk mengaktifkan I2C, dari terminal, jalankan;
sudo raspi-config
Apabila panel konfigurasi dibuka, pilih pilihan antara muka, pilih I2C dan klik aktifkan.
Langkah 2: Kemas kini pi Raspberry
Perkara pertama yang saya lakukan sebelum memulakan sesuatu projek adalah mengemas kini Pi. Melalui ini, saya pasti setiap perkara pada OS terkini dan saya tidak akan mengalami masalah keserasian dengan perisian terbaru yang saya pilih untuk dipasang di Pi. Untuk melakukan ini, jalankan di bawah dua arahan:
sudo apt-get update sudo apt-get upgrade
Langkah 3: Pasang perpustakaan Adafruit ADS1115 untuk ADC
Dengan kemas kini selesai, kami kini sudah siap untuk memasang dependensi bermula dengan modul Adafruit python untuk cip ADS115. Pastikan anda berada di direktori utama Raspberry Pi dengan menjalankan;
cd ~
kemudian pasang keperluan asas dengan menjalankan;
sudo apt-get install build-essential python-dev python-smbus git
Seterusnya, klon folder Adafruit git untuk perpustakaan dengan menjalankan;
git klon https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Tukar ke direktori fail yang diklon dan jalankan fail persediaan;
cd Adafruit_Python_ADS1x1z sudo python setup.py pasang
Selepas pemasangan, skrin anda akan kelihatan seperti gambar di bawah.
Langkah 4: Uji perpustakaan dan komunikasi 12C.
Sebelum kita meneruskan projek yang lain, penting untuk menguji perpustakaan dan memastikan ADC dapat berkomunikasi dengan raspberry pi melalui I2C. Untuk melakukan ini, kita akan menggunakan contoh skrip yang disertakan dengan perpustakaan.
Semasa masih dalam folder Adafruit_Python_ADS1x15, ubah direktori ke direktori contoh dengan menjalankan;
contoh cd
Seterusnya, jalankan contoh sampletest.py yang memaparkan nilai empat saluran pada ADC dalam bentuk jadual.
Jalankan contoh menggunakan:
python simpletest.py
Sekiranya modul I2C diaktifkan dan sambungannya baik, anda harus melihat data seperti yang ditunjukkan dalam gambar di bawah.
Sekiranya berlaku ralat, periksa untuk memastikan ADC disambungkan dengan baik ke PI dan komunikasi I2C diaktifkan pada Pi.
Langkah 5: Pasang Matplotlib
Untuk memvisualisasikan data, kita perlu memasang modul matplotlib yang digunakan untuk memplot semua jenis grafik di python. Ini boleh dilakukan dengan menjalankan;
sudo apt-get install python-matplotlib
Anda akan melihat hasilnya seperti gambar di bawah.
Langkah6: Pasang modul Drawnow python
Terakhir, kita perlu memasang modul drawow python. Modul ini membantu kami memberikan kemas kini langsung ke plot data.
Kami akan memasang drawow melalui pemasang python package; pip , jadi kita perlu memastikannya dipasang. Ini boleh dilakukan dengan menjalankan;
sudo apt-get install python-pip
Kita kemudian boleh menggunakan pip untuk memasang paket drawow dengan menjalankan:
sudo pip install drawow
Anda harus mendapat hasil seperti gambar di bawah setelah menjalankannya.
Dengan semua pergantungan yang dipasang, kami kini bersedia untuk menulis kodnya.
Kod Python untuk Oscilloscope Raspberry Pi:
Kod python untuk Pi Oscilloscope ini agak mudah terutamanya jika anda sudah biasa dengan modul python matplotlib . Sebelum menunjukkan keseluruhan kod kepada kami, saya akan cuba membahagikannya dan menjelaskan apa yang dilakukan oleh setiap bahagian kod tersebut supaya anda mempunyai pengetahuan yang cukup untuk memperluas kod untuk melakukan lebih banyak perkara.
Pada tahap ini, adalah penting untuk beralih ke monitor atau menggunakan penampil VNC, apa sahaja yang dapat anda lihat di desktop Raspberry Pi anda, kerana grafik yang dipancangkan tidak akan muncul di terminal.
Dengan monitor sebagai antara muka buka fail python baru. Anda boleh memanggilnya dengan nama yang anda mahukan, tetapi saya akan memanggilnya sebagai lingkup.py.
sudo nano lingkup.py
Dengan fail yang dibuat, perkara pertama yang kita lakukan adalah mengimport modul yang akan kita gunakan;
import time import matplotlib.pyplot sebagai plt dari drawow import * import Adafruit_ADS1x15
Seterusnya, kami membuat contoh perpustakaan ADS1x15 yang menentukan ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
Seterusnya, kami menetapkan keuntungan ADC. Terdapat julat keuntungan yang berbeza dan harus dipilih berdasarkan voltan yang anda harapkan pada input ADC. Untuk tutorial ini, kami mengira 0 - 4.09v sehingga kami akan menggunakan keuntungan 1. Untuk maklumat lebih lanjut mengenai keuntungan, anda boleh melihat lembar data ADS1015 / ADS1115.
GAIN = 1
Seterusnya, kita perlu membuat pemboleh ubah array yang akan digunakan untuk menyimpan data yang akan diplot dan satu lagi untuk dijadikan hitungan.
Val = cnt = 0
Seterusnya, kami memaklumkan niat kami untuk menjadikan plot interaktif diketahui sehingga membolehkan kami memplot data secara langsung.
penjelasan ()
Seterusnya, kami memulakan penukaran ADC berterusan yang menentukan saluran ADC, dalam kes ini, saluran 0 dan kami juga menentukan keuntungan.
Perlu diingatkan bahawa keempat-empat saluran ADC pada ADS1115 dapat dibaca pada masa yang sama, tetapi 1 saluran cukup untuk demonstrasi ini.
adc.start_adc (0, keuntungan = GAIN)
Seterusnya kita membuat fungsi def makeFig , untuk membuat dan menetapkan atribut grafik yang akan memegang plot langsung kita. Mula-mula kami menetapkan had paksi-y menggunakan ylim , setelah itu kami memasukkan tajuk plot, dan nama label sebelum kami menentukan data yang akan diplot dan gaya plot dan warnanya menggunakan plt.plot (). Kita juga dapat menyatakan saluran (seperti saluran 0 dinyatakan) sehingga kita dapat mengenal pasti setiap isyarat ketika keempat saluran ADC sedang digunakan. plt.legend digunakan untuk menentukan di mana kita mahu maklumat mengenai isyarat itu (contohnya Saluran 0) yang dipaparkan pada gambar.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('output ADC') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'kanan bawah')
Seterusnya kita menulis loop sementara yang akan terus digunakan membaca data dari ADC dan mengemas kini plot dengan sewajarnya.
Perkara pertama yang kita lakukan ialah membaca nilai penukaran ADC
nilai = adc.get_last_result ()
Seterusnya kami mencetak nilai di terminal hanya untuk memberi kami cara lain untuk mengesahkan data yang dirancang. Kami menunggu beberapa saat selepas mencetak kemudian kami menambahkan data ke senarai (val) yang dibuat untuk menyimpan data untuk saluran tersebut.
cetak ('Saluran 0: {0}'. format (nilai)) waktu. tidur (0,5) val.append (int (nilai))
Kami kemudian memanggil drawow untuk mengemas kini plot.
drawow (makeFig)
Untuk memastikan data terkini adalah yang ada di plot, kami menghapus data di indeks 0 setelah setiap 50 data dikira.
cnt = cnt + 1 jika (cnt> 50): val.pop (0)
Itu sahaja!
The kod Python lengkap diberikan pada akhir tutorial ini.
Raspberry Pi Oscilloscope in Action:
Salin kod python yang lengkap dan tampal di fail python yang kita buat sebelumnya, ingat kita akan memerlukan monitor untuk melihat plotnya sehingga semua ini harus dilakukan oleh VNC atau dengan monitor atau skrin yang bersambung.
Simpan kod dan jalankan menggunakan;
sudo python lingkup.py
Sekiranya anda menggunakan nama lain selain lingkup.py, jangan lupa menukarnya agar sesuai.
Selepas beberapa minit, anda akan melihat data ADC dicetak di terminal. Kadang-kadang anda mungkin mendapat peringatan dari matplotlib (seperti yang ditunjukkan pada gambar di bawah) yang seharusnya ditekan tetapi tidak mempengaruhi data yang ditampilkan atau plotnya. Namun untuk menekan amaran, baris kod berikut dapat ditambahkan setelah baris import dalam kod kami.
Amaran import import matplotlib.cbook warnings.filterwarnings ("abaikan", kategori = matplotlib.cbook.mplDeprecation)
Itu sahaja untuk lelaki tutorial ini, untuk menguji osiloskop anda sepenuhnya, anda boleh menyambungkan peranti analog seperti potensiometer ke saluran di ADC dan anda akan melihat data berubah dengan setiap putaran potensiometer. Atau anda boleh memasukkan gelombang sinus atau gelombang persegi untuk menguji output.
Terima kasih kerana membaca, jika anda mempunyai pertanyaan atau sesuatu yang anda mahu saya tambahkan, tinggalkan saja komen saya.
Hingga lain kali, Terus buat!