- Tok projekta:
- Projektne zahteve
- Shema vezja:
- Namestite odvisnosti za osciloskop Raspberry Pi:
- Koda Python za osciloskop Raspberry Pi:
- Osciloskop Raspberry Pi v akciji:
Pozdravljeni, dobrodošli v današnji objavi. Ena najbolj fascinantnih stvari pri izdelovanju je vedeti, kako razviti improvizirana orodja. Nikoli ne boste zataknili dela pri nobenem projektu, če imate takšno vsestranskost. Tako bom danes delil, kako zgraditi improvizirano različico enega najpomembnejših orodij v elektrotehniki / elektroniki na osnovi Raspberry Pi; Osciloskop.
Osciloskop je elektronski preskusni instrument, ki omogoča vizualizacijo in opazovanje različnih napetosti signala, običajno kot dvodimenzionalni grafikon z enim ali več signali, narisanimi glede na čas. Današnji projekt bo poskušal preslikati zmožnosti vizualizacije signala osciloskopa z uporabo Raspberry Pi in analogno-digitalnega pretvorniškega modula.
Tok projekta:
Za ponovitev vizualizacije signala osciloskopa z uporabo Raspberry Pi bodo potrebni naslednji koraki;
1. Izvedite digitalno v analogno pretvorbo vhodnega signala
2. Pripravite nastale podatke za predstavitev
3. Podatke narišite na graf časa v živo
Poenostavljeni blokovni diagram za ta projekt bi bil videti kot spodnji diagram.
Projektne zahteve
Zahteve za ta projekt lahko razdelimo na dve:
- Zahteve glede strojne opreme
- Zahteve za programsko opremo
Zahteve glede strojne opreme
Za izdelavo tega projekta so potrebne naslednje komponente / del;
- Raspberry pi 2 (ali kateri koli drug model)
- Kartica SD z 8 ali 16 GB
- LAN / Ethernet kabel
- Napajanje ali kabel USB
- ADS1115 ADC
- LDR (neobvezno, kot je namenjeno za test)
- 10k ali 1k upor
- Jumper žice
- Breadboard
- Monitor ali kateri koli drug način za ogled namizja pi (vključno z VNC)
Zahteve za programsko opremo
Programske zahteve za ta projekt so v bistvu moduli python ( matplotlib in drawnow ), ki se bodo uporabljali za vizualizacijo podatkov, in modul Adafruit za povezovanje s čipom ADS1115 ADC. Pokazal bom, kako te module namestiti na Raspberry Pi, ko nadaljujemo.
Čeprav bo ta vadnica delovala ne glede na uporabljeni OS Raspberry Pi, bom uporabljal raztezajoči sistem Raspberry Pi in domnevam, da ste seznanjeni z nastavitvijo Raspberry Pi z razteznim OS Raspbian in veste, kako SSH v malino pi z uporabo terminalske programske opreme, kot je kit. Če imate težave s katerim koli od tega, je na tej spletni strani na voljo veliko vadnic Raspberry Pi, ki vam lahko pomagajo.
Z vsemi nameščenimi komponentami strojne opreme ustvarimo sheme in komponente povežemo skupaj.
Shema vezja:
Za pretvorbo analognih vhodnih signalov v digitalne, ki jih lahko vizualiziramo z Raspberry Pi, bomo uporabili ADS1115 ADC čip. Ta čip postane pomemben, ker Raspberry Pi za razliko od Arduina in večine mikrokrmilnikov nima vgrajenega analogno-digitalnega pretvornika (ADC). Čeprav bi lahko uporabili kateri koli ADC čip, združljiv z raspberry pi, imam ta čip raje zaradi visoke ločljivosti (16 bitov) in dobro dokumentiranega podatkovnega lista in navodil za uporabo podjetja Adafruit. Če želite izvedeti več o tem, si lahko ogledate tudi našo vadnico Raspberry Pi ADC.
ADC je naprava, ki temelji na I2C, in jo je treba priključiti na Raspberry Pi, kot je prikazano v spodnjih shemah.
Zaradi jasnosti je spodaj opisana tudi pin povezava med obema komponentama.
Povezave ADS1115 in Raspberry Pi:
VDD - 3,3 v
GND - GND
SDA - SDA
SCL - SCL
Ko so vse povezave končane, vklopite pi in nadaljujte z namestitvijo spodaj omenjenih odvisnosti.
Namestite odvisnosti za osciloskop Raspberry Pi:
Preden začnemo pisati skript python, da potegnemo podatke iz ADC-ja in jih narišemo na graf v živo, moramo omogočiti komunikacijski vmesnik I2C maline pi in namestiti prej omenjene programske zahteve. To bo izvedeno v spodnjih korakih, tako da je enostavno slediti:
1. korak: omogočite vmesnik Raspberry Pi I2C
Če želite omogočiti I2C, s terminala zaženite;
sudo raspi-config
Ko se odprejo konfiguracijske plošče, izberite možnosti vmesnika, izberite I2C in kliknite omogoči.
2. korak: Posodobite Raspberry pi
Preden začnem s katerim koli projektom, najprej posodobim Pi. S tem sem prepričan, da so vse stvari v OS posodobljene, in ne bom imel težav z združljivostjo z nobeno najnovejšo programsko opremo, ki sem jo izbral za namestitev na Pi. Če želite to narediti, zaženite spodaj dva ukaza:
posodobitev sudo apt-get
3. korak: Namestite knjižnico Adafruit ADS1115 za ADC
Po končani posodobitvi smo zdaj pripravljeni namestiti odvisnosti, začenši z modulom Adafruit python za čip ADS115. Z zagonom se prepričajte, da ste v domačem imeniku Raspberry Pi;
cd ~
nato z zagonom namestite gradnike;
sudo apt-get namestite bistveno gradnjo python-dev python-smbus git
Nato klonirajte mapo Adafruit git za knjižnico tako, da zaženete;
klon git https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Preklopite v imenik klonirane datoteke in zaženite namestitveno datoteko;
cd Adafruit_Python_ADS1x1z sudo python setup.py namestitev
Po namestitvi mora biti vaš zaslon videti kot spodnja slika.
4. korak: Preizkusite knjižnico in komunikacijo 12C.
Preden nadaljujemo s preostalim delom projekta, je pomembno, da preizkusimo knjižnico in zagotovimo, da lahko ADC komunicira z malino pi prek I2C. Za to bomo uporabili primer skripta, ki je priložen knjižnici.
Ko ste še vedno v mapi Adafruit_Python_ADS1x15, z zagonom spremenite imenik v mapo z primeri;
cd primeri
Nato zaženite primer sampletest.py, ki v obliki tabele prikaže vrednost štirih kanalov na ADC.
Zaženite primer z uporabo:
python simpletest.py
Če je modul I2C omogočen in so povezave dobre, bi morali videti podatke, kot so prikazani na spodnji sliki.
Če pride do napake, preverite, ali je ADC dobro povezan s PI in je na Pi omogočena komunikacija I2C.
5. korak: Namestite Matplotlib
Za vizualizacijo podatkov moramo namestiti matplotlib modul, ki se uporablja za risanje vseh vrst grafov v pythonu. To lahko storite s tekom;
sudo apt-get namestite python-matplotlib
Videti bi morali izid, kot je spodnja slika.
6. korak : Namestite modul Drawnow python
Na koncu moramo namestiti modul drawnow python. Ta modul nam pomaga, da posodabljamo podatkovno ploskev v živo.
Drawnow bomo namestili prek namestitvenega paketa python; pip , zato moramo zagotoviti, da je nameščen. To lahko storite s tekom;
sudo apt-get namestite python-pip
Nato lahko s pipom namestimo paket drawnow tako, da zaženemo :
sudo pip namestite drawnow
Po zagonu bi morali dobiti rezultat, kot je spodnja slika.
Z vsemi nameščenimi odvisnostmi smo zdaj pripravljeni napisati kodo.
Koda Python za osciloskop Raspberry Pi:
Koda pythona za ta osciloskop Pi je dokaj preprosta, še posebej, če poznate modul python matplotlib . Preden nam bo pokazal celotno kodo, jo bom poskusil razstaviti na del in razložiti, kaj dela vsak del kode, tako da boste imeli dovolj znanja za razširitev kode na več stvari.
Na tej stopnji je pomembno, da preklopite na monitor ali uporabite pregledovalnik VNC, kar koli, skozi kar lahko vidite namizje vašega Raspberry Pi, saj graf, ki se izrisuje, ne bo prikazan na terminalu.
Z monitorjem kot vmesnikom odprite novo datoteko python. Lahko ga pokličete poljubno ime, jaz pa ga imenujem scope.py.
sudo nano scope.py
Z ustvarjeno datoteko najprej najprej uvozimo module, ki jih bomo uporabljali;
uvoz čas uvoza matplotlib.pyplot kot plt iz drawnow uvoz * uvoz Adafruit_ADS1x15
Nato izdelamo primerek knjižnice ADS1x15, ki določa ADC ADS1115
adc = Adafruit_ADS1x15.ADS1115 ()
Nato nastavimo dobiček ADC. Obstajajo različni razponi ojačanja in jih je treba izbrati glede na napetost, ki jo pričakujete na vhodu ADC. Za to vadnico ocenjujemo 0 - 4,09 v, zato bomo uporabili dobiček 1. Za več informacij o dobičku si lahko ogledate podatkovni list ADS1015 / ADS1115.
PRIDOBITEV = 1
Nato moramo ustvariti spremenljivke matrike, ki bodo uporabljene za shranjevanje podatkov, ki bodo narisani, in drugo, ki bo služila kot štetje.
Val = cnt = 0
Nato sporočimo svoje namene, da bomo ploskev naredili interaktivno, tako da bomo lahko načrtovali podatke v živo.
plt.ion ()
Nato začnemo neprekinjeno pretvorbo ADC z določitvijo kanala ADC, v tem primeru kanala 0 in določimo tudi ojačanje.
Treba je opozoriti, da je mogoče vse štiri kanale ADC na ADS1115 brati hkrati, vendar je za to predstavitev dovolj en kanal.
adc.start_adc (0, dobiček = PRIDOBITEV)
Nato ustvarimo funkcijo def makeFig , ki ustvari in nastavi atribute grafa, ki bo vseboval našo živo ploskev. Najprej nastavimo meje osi y z ylimom , nakar vnesemo naslov ploskve in ime oznake, preden s plt.plot () določimo podatke, ki bodo narisani, ter slog in barvo ploskve.. Kanal lahko navedemo tudi (kot je bil naveden kanal 0), tako da lahko vsak signal prepoznamo, ko se uporabljajo štirje kanali ADC. plt.legend se uporablja za določitev, kje želimo, da so informacije o tem signalu (npr. Kanal 0) prikazane na sliki.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputs') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'spodaj desno')
Nato napišemo zanko while, ki se bo uporabljala za neprestano branje podatkov iz ADC-ja in ustrezno posodabljanje ploskve.
Najprej preberemo vrednost pretvorbe ADC
vrednost = adc.get_last_result ()
Nato vrednost natisnemo na terminal samo zato, da dobimo še en način potrditve narisanih podatkov. Po tiskanju počakamo nekaj sekund, nato podatke dodamo na seznam (val), ustvarjen za shranjevanje podatkov za ta kanal.
print ('Channel 0: {0}'. format (value)) time.sleep (0.5) val.append (int (value))
Nato pokličemo drawnow za posodobitev ploskve.
drawnow (makeFig)
Da bi zagotovili najnovejše podatke, ki so na voljo na grafikonu, podatke po indeksu 0 izbrišemo po vsakih 50 štetjih podatkov.
cnt = cnt + 1 if (cnt> 50): val.pop (0)
To je vse!
Popolna Python koda je navedena na koncu tega učbenika.
Osciloskop Raspberry Pi v akciji:
Kopirajte celotno kodo pythona in prilepite v datoteko python, ki smo jo ustvarili prej, ne pozabite, da bomo za ogled ploskve potrebovali monitor, zato naj vse to stori VNC ali s povezanim monitorjem ali zaslonom.
Shranite kodo in zaženite z uporabo;
sudo python scope.py
Če ste uporabili drugo ime, ki ni obseg.py, ne pozabite spremeniti tega, da se ujema.
Po nekaj minutah bi morali videti, da se podatki ADC natisnejo na terminalu. Občasno lahko dobite opozorilo matplotlib (kot je prikazano na spodnji sliki), ki ga je treba onemogočiti, vendar vseeno ne vpliva na prikazane podatke ali ploskev. Za zatiranje opozorila pa lahko za uvoznimi vrsticami v naši kodi dodamo naslednje vrstice kode.
Opozorila o uvozu import matplotlib.cbook warnings.filterwarnings (“prezri”, kategorija = matplotlib.cbook.mplDeprecation)
To je to za te vadnice, da lahko v celoti preizkusite svoj osciloskop, lahko analogno napravo, kot je potenciometer, povežete s kanalom na ADC in videli bi, kako se podatki spreminjajo z vsakim obračanjem potenciometra. Lahko pa vnesete sinusni ali kvadratni val, da preizkusite izhod.
Hvala za branje, če imate kakšno vprašanje ali kaj, kar bi želeli, da dodam, mi pustite komentar.
Do naslednjega, nadaljujte!