- Tok projektu:
- Požiadavky na projekt
- Schéma zapojenia:
- Nainštalujte si závislosti pre osciloskop Raspberry Pi:
- Pythonský kód pre Raspberry Pi osciloskop:
- Osciloskop Raspberry Pi v akcii:
Ahoj chlapci, vitajte pri dnešnom príspevku. Jednou z najfascinujúcejších vecí na tom, ako byť výrobcom, je vedieť, ako vyvíjať improvizované nástroje, nikdy nebudete uviaznutí pri práci na žiadnom projekte, keď budete mať tento druh všestrannosti. Takže dnes budem zdieľať, ako vytvoriť provizórnu verziu jedného z najdôležitejších nástrojov v elektrotechnickom a elektronickom inžinierstve založenom na Raspberry Pi; Osciloskop.
Osciloskop je elektronický testovací prístroj, ktorý umožňuje vizualizáciu a pozorovanie rôznych signálnych napätí, zvyčajne ako dvojrozmerný graf s jedným alebo viacerými signálmi vynesenými proti času. Dnešný projekt sa bude snažiť replikovať možnosti vizualizácie signálu osciloskopu pomocou Raspberry Pi a analógovo-digitálneho prevodníka.
Tok projektu:
Replikácia vizualizácie signálu osciloskopu pomocou Raspberry Pi bude vyžadovať nasledujúce kroky;
1. Vykonajte digitálny na analógový prevod vstupného signálu
2. Pripravte výsledné údaje na znázornenie
3. Zostavte údaje do grafu živého času
Zjednodušená bloková schéma pre tento projekt by vyzerala ako schéma uvedená nižšie.
Požiadavky na projekt
Požiadavku na tento projekt možno rozdeliť na dve časti:
- Hardvérové požiadavky
- Softvérové požiadavky
Hardvérové požiadavky
Na zostavenie tohto projektu sú potrebné nasledujúce komponenty / súčasť;
- Raspberry pi 2 (alebo akýkoľvek iný model)
- 8 alebo 16 GB SD karta
- Kábel LAN / Ethernet
- Napájací zdroj alebo kábel USB
- ADS1115 ADC
- LDR (voliteľné, ako to znamená pre test)
- 10k alebo 1k rezistor
- Prepojovacie vodiče
- Nepál
- Monitor alebo akýkoľvek iný spôsob videnia plochy pí (vrátane VNC)
Softvérové požiadavky
Softvérové požiadavky pre tento projekt sú v zásade moduly pythonu ( matplotlib a drawnow ), ktoré sa použijú na vizualizáciu údajov, a modul Adafruit na prepojenie s čipom ADS1115 ADC. Ako budeme pokračovať, ukážem, ako nainštalovať tieto moduly na Raspberry Pi.
Aj keď tento tutoriál bude fungovať bez ohľadu na použitý Raspberry Pi OS, budem používať Raspberry Pi stretch OS a budem predpokladať, že ste oboznámení s nastavením Raspberry Pi s Raspbian stretch OS a viete, ako SSH do maliny pi pomocou terminálového softvéru, ako je tmel. Ak máte problémy s niečím z toho, na tomto webe nájdete množstvo návodov na Raspberry Pi, ktoré vám môžu pomôcť.
Keď sú všetky hardvérové komponenty na mieste, vytvorme schémy a spojme tieto komponenty dohromady.
Schéma zapojenia:
Na prevod analógových vstupných signálov na digitálne signály, ktoré je možné vizualizovať pomocou Raspberry Pi, budeme používať čip ADC ADS1115. Tento čip sa stáva dôležitým, pretože Raspberry Pi, na rozdiel od Arduina a väčšiny mikrokontrolérov, nemá zabudovaný analógovo-digitálny prevodník (ADC). Aj keď sme mohli použiť akýkoľvek ADC čip kompatibilný s malinou pí, uprednostňujem tento čip kvôli jeho vysokému rozlíšeniu (16 bitov) a dobre zdokumentovanému údajovému listu a pokynom spoločnosti Adafruit. Môžete sa tiež pozrieť na náš návod Raspberry Pi ADC, kde sa o ňom dozviete viac.
ADC je zariadenie založené na I2C a malo by byť pripojené k Raspberry Pi, ako je znázornené na nižšie uvedených schémach.
Kvôli prehľadnosti je ďalej popísané pinové spojenie medzi dvoma komponentmi.
Pripojenia ADS1115 a Raspberry Pi:
VDD - 3,3v
GND - GND
SDA - SDA
SCL - SCL
Po dokončení všetkých pripojení zapnite svoje pi a pokračujte v inštalácii závislostí uvedených nižšie.
Nainštalujte si závislosti pre osciloskop Raspberry Pi:
Predtým, ako začneme písať pythonovský skript na načítanie údajov z ADC a ich vykreslenie do živého grafu, musíme povoliť komunikačné rozhranie I2C maliny pi a nainštalovať softvérové požiadavky, ktoré sme už spomenuli. Toto sa uskutoční v nasledujúcich krokoch, takže je ľahké ho sledovať:
Krok 1: Povoľte rozhranie Raspberry Pi I2C
Ak chcete povoliť I2C z terminálu, spustite;
sudo raspi-config
Po otvorení konfiguračných panelov vyberte možnosti rozhrania, vyberte I2C a kliknite na povolenie.
Krok 2: Aktualizujte Raspberry pi
Prvá vec, ktorú urobím pred začatím ľubovoľného projektu, je aktualizácia Pi. Vďaka tomu som si istý, že každá vec v operačnom systéme je aktuálna a nebudem mať problémy s kompatibilitou so žiadnym najnovším softvérom, ktorý som sa rozhodol nainštalovať na Pi. Spustíte to dvoma príkazmi:
sudo apt-get aktualizácia sudo apt-get aktualizácia
Krok 3: Nainštalujte si knižnicu Adafruit ADS1115 pre ADC
Po dokončení aktualizácie sme teraz pripravení na inštaláciu závislostí počnúc pythonovým modulom Adafruit pre čip ADS115. Spustením sa ubezpečte, že sa nachádzate v domovskom adresári Raspberry Pi;
cd ~
potom nainštalujte základné prvky spustením;
sudo apt-get install build-essential python-dev python-smbus git
Ďalej klonujte priečinok Adafruit git pre knižnicu spustením;
git klon https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Prejdite do adresára klonovaného súboru a spustite inštalačný súbor;
cd Adafruit_Python_ADS1x1z sudo python setup.py nainštalovať
Po inštalácii by mala vaša obrazovka vyzerať ako na obrázku nižšie.
Krok 4: Vyskúšajte knižnicu a komunikáciu 12C.
Než začneme so zvyškom projektu, je dôležité otestovať knižnicu a zabezpečiť, aby ADC mohol komunikovať s malinovou pí cez I2C. Použijeme na to ukážkový skript dodávaný s knižnicou.
Keď ste ešte v priečinku Adafruit_Python_ADS1x15, zmeňte adresár na príklad s adresárom spustením;
príklady cd
Ďalej spustite príklad sampletest.py, ktorý zobrazuje hodnotu štyroch kanálov v ADC v tabuľkovej forme.
Spustite príklad pomocou:
python simpletest.py
Ak je modul I2C povolený a pripojenia sú v poriadku, mali by ste vidieť údaje tak, ako je to znázornené na obrázku nižšie.
Ak sa vyskytne chyba, skontrolujte, či je ADC dobre pripojený k PI a či je na Pi aktivovaná komunikácia I2C.
Krok 5: Nainštalujte Matplotlib
Na vizualizáciu údajov je potrebné nainštalovať modul matplotlib, ktorý sa používa na vykreslenie všetkých druhov grafov v jazyku python. To je možné vykonať spustením;
sudo apt-get nainštalovať python-matplotlib
Mali by ste vidieť výsledok ako na obrázku nižšie.
Krok 6: Nainštalujte si modul Python Drawnow
Nakoniec musíme nainštalovať modul python drawnow . Tento modul nám pomáha poskytovať živé aktualizácie údajového grafu.
Budeme inštalovať drawnow cez inštalátor balíkov python; pip , takže sa musíme ubezpečiť, že je nainštalovaný. To je možné vykonať spustením;
sudo apt-get nainštalovať python-pip
Potom môžeme použiť pip na inštaláciu balíka drawnow spustením:
sudo pip nainštalovať drawnow
Po spustení by ste mali dosiahnuť výsledok ako na obrázku nižšie.
Po nainštalovaní všetkých závislostí sme teraz pripravení na napísanie kódu.
Pythonský kód pre Raspberry Pi osciloskop:
Pythonový kód pre tento osciloskop Pi je pomerne jednoduchý, najmä ak poznáte modul python matplotlib . Predtým, ako nám ukážem celý kód, pokúsim sa ho rozdeliť na časti a vysvetliť, čo jednotlivé časti kódu robia, aby ste mali dostatok vedomostí na to, aby ste rozšírili kód a mohli tak robiť viac vecí.
V tejto fáze je dôležité prepnúť na monitor alebo použiť prehliadač VNC, teda všetko, cez čo vidíte pracovnú plochu vášho Raspberry Pi, pretože vykreslený graf sa na termináli nezobrazí.
S monitorom ako rozhraním otvorte nový súbor pythonu. Môžete to nazvať ľubovoľným menom, ale ja to nazvem scope.py.
sudo nano scope.py
Po vytvorení súboru prvá vec, ktorú urobíme, je importovanie modulov, ktoré budeme používať;
čas importu import matplotlib.pyplot ako plt z drawnow import * import Adafruit_ADS1x15
Ďalej vytvoríme inštanciu knižnice ADS1x15 so špecifikáciou ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
Ďalej nastavíme zisk ADC. Existujú rôzne rozsahy zosilnenia a mali by ste ich zvoliť na základe napätia, ktoré očakávate na vstupe ADC. Pre tento tutoriál odhadujeme 0 - 4,09 v, takže použijeme zisk 1. Ďalšie informácie o zisku získate v údajovom liste ADS1015 / ADS1115.
ZISK = 1
Ďalej musíme vytvoriť premenné poľa, ktoré sa použijú na ukladanie údajov, ktoré sa majú vykresliť, a ďalšiu, ktorá bude slúžiť ako počet.
Val = cnt = 0
Ďalej sa oboznámime s našimi zámermi interaktívneho poznania pozemku, aby sme mohli vykresliť údaje naživo.
plt.ion ()
Ďalej začneme nepretržitú konverziu ADC špecifikujúcu kanál ADC, v tomto prípade kanál 0 a tiež určíme zisk.
Je potrebné poznamenať, že všetky štyri kanály ADC na ADS1115 je možné načítať súčasne, na túto ukážku však stačí jeden kanál.
adc.start_adc (0, zisk = ZISK)
Ďalej vytvoríme funkciu def makeFig , aby sme vytvorili a nastavili atribúty grafu, ktorý bude obsahovať náš živý graf. Najskôr nastavíme limity osi y pomocou ylim , potom zadáme názov grafu a názov štítku predtým, ako zadáme údaje, ktoré sa budú vykresľovať, ich štýl a farbu vykreslenia pomocou plt.plot (). Môžeme tiež uviesť kanál (ako bol uvedený kanál 0), aby sme mohli identifikovať každý signál, keď sa používajú štyri kanály ADC. plt.legend sa používa na určenie toho, kde chceme, aby sa informácie o danom signáli (napr. kanál 0) zobrazovali na obrázku.
plt.ylim (-5000,5000) plt.title ('Osciloskop') plt.grid (True) plt.ylabel ('výstupy ADC') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'vpravo dole')
Ďalej napíšeme while slučku, ktorá bude použitá na neustále načítanie dát z ADC a podľa toho aktualizujeme graf.
Prvá vec, ktorú urobíme, je načítanie konverznej hodnoty ADC
hodnota = adc.get_last_result ()
Ďalej vytlačíme hodnotu na terminál, aby sme získali ďalší spôsob potvrdenia vynesených údajov. Po tlači počkáme niekoľko sekúnd, potom údaje pripojíme k vytvorenému zoznamu (hodnotám), do ktorého sa údaje pre tento kanál uložia.
print ('Kanál 0: {0}'. format (value)) time.sleep (0.5) val.append (int (value))
Potom zavoláme drawnow, aby sme aktualizovali dej.
drawnow (makeFig)
Aby sme sa ubezpečili, že na grafe sú k dispozícii najnovšie údaje, údaje po indexe 0 po každých 50 počítaniach údajov odstránime.
cnt = cnt + 1 if (cnt> 50): val.pop (0)
To je všetko!
Kompletný kód Python je uvedený na konci tohto návodu.
Osciloskop Raspberry Pi v akcii:
Skopírujte celý kód pythonu a vložte ho do súboru pythonu, ktorý sme vytvorili skôr. Pamätajte, že na prezeranie grafu budeme potrebovať monitor, takže všetko by to malo robiť buď VNC, alebo s pripojeným monitorom alebo obrazovkou.
Uložte kód a spustite pomocou;
sudo python scope.py
Ak ste použili iný názov ako scope.py, nezabudnite ho zmeniť, aby sa zhodoval.
Po niekoľkých minútach by ste mali vidieť údaje ADC vytlačené na termináli. Príležitostne môžete dostať varovanie od matplotlib (ako je znázornené na obrázku nižšie), ktoré by malo byť potlačené, ale nijako neovplyvňuje zobrazené údaje ani graf. Na potlačenie varovania je však možné za riadky importu v našom kóde pridať nasledujúce riadky kódu.
Import varovaní import matplotlib.cbook warnings.filterwarnings (“ignorovať”, category = matplotlib.cbook.mplDeprecation)
To je všetko pre tento tutoriál, aby ste mohli plne otestovať svoj osciloskop, môžete pripojiť analógové zariadenie ako potenciometer ku kanálu v ADC a pri každom otočení potenciometra by ste mali vidieť zmenu údajov. Alebo môžete na otestovanie výstupu zadať sínusovú alebo štvorcovú vlnu.
Ďakujeme za prečítanie, ak máte akékoľvek otázky alebo niečo, čo by ste chceli, aby som pridal, nechajte mi komentár.
Do budúcnosti, pokračujte v tvorbe!