- Tok projektu:
- Požadavky na projekt
- Kruhový diagram:
- Nainstalujte závislosti pro Raspberry Pi osciloskop:
- Pythonský kód pro Raspberry Pi osciloskop:
- Osciloskop Raspberry Pi v akci:
Ahoj kluci, vítejte na dnešním příspěvku. Jednou z nejvíce fascinujících věcí na tom, že jste výrobcem, je vědět, jak vyvíjet provizorní nástroje, nikdy nebudete zaseknuti při práci na jakémkoli projektu, pokud máte takový druh všestrannosti. Takže dnes budu sdílet, jak postavit provizorní verzi jednoho z nejdůležitějších nástrojů v elektrotechnickém / elektronickém inženýrství založeném na Raspberry Pi; Osciloskop.
Osciloskop je elektronický testovací přístroj, který umožňuje vizualizaci a pozorování různých signálních napětí, obvykle jako dvourozměrný graf s jedním nebo více signály vynesenými proti času. Dnešní projekt se bude snažit replikovat možnosti vizualizace signálu osciloskopu pomocí Raspberry Pi a analogově-digitálního převodníku.
Tok projektu:
Replikace vizualizace signálu osciloskopu pomocí Raspberry Pi bude vyžadovat následující kroky;
1. Proveďte převod digitálního na analogový vstupního signálu
2. Připravte výsledná data pro reprezentaci
3. Vyneste data do grafu živého času
Zjednodušený blokový diagram pro tento projekt bude vypadat jako diagram níže.
Požadavky na projekt
Požadavek na tento projekt lze rozdělit na dva:
- Hardwarové požadavky
- Softwarové požadavky
Hardwarové požadavky
K sestavení tohoto projektu jsou vyžadovány následující součásti / součást;
- Raspberry pi 2 (nebo jakýkoli jiný model)
- 8 nebo 16 GB SD karta
- Kabel LAN / Ethernet
- Napájecí zdroj nebo kabel USB
- ADS1115 ADC
- LDR (volitelné, protože je určeno pro test)
- 10k nebo 1k rezistor
- Propojovací vodiče
- Nepájivá deska
- Monitor nebo jakýkoli jiný způsob vidění plochy pí (včetně VNC)
Softwarové požadavky
Softwarové požadavky pro tento projekt jsou v zásadě pythonové moduly ( matplotlib a drawnow ), které budou použity pro vizualizaci dat, a modul Adafruit pro propojení s ADC čipem ADS1115. Jak budeme postupovat, ukážu, jak nainstalovat tyto moduly na Raspberry Pi.
I když tento tutoriál bude fungovat bez ohledu na použitý Raspberry Pi OS, budu používat Raspberry Pi stretch OS a předpokládám, že jste obeznámeni s nastavením Raspberry Pi s Raspbian stretch OS a víte, jak SSH do maliny pi pomocí terminálového softwaru, jako je tmel. Pokud máte problémy s něčím z toho, na tomto webu najdete spoustu návodů pro Raspberry Pi, které vám mohou pomoci.
Se všemi hardwarovými komponentami na místě vytvořme schémata a propojte komponenty dohromady.
Kruhový diagram:
K převodu analogových vstupních signálů na digitální signály, které lze vizualizovat pomocí Raspberry Pi, použijeme ADC čip ADS1115. Tento čip se stává důležitým, protože Raspberry Pi, na rozdíl od Arduina a většiny mikrořadičů, nemá integrovaný analogově-digitální převodník (ADC). I když jsme mohli použít jakýkoli čip ADC kompatibilní s malinami pi, dávám přednost tomuto čipu kvůli jeho vysokému rozlišení (16 bitů) a dobře zdokumentovanému datovému listu a použití pokynů Adafruit. Můžete se také podívat na náš návod Raspberry Pi ADC, kde se o něm dozvíte více.
ADC je zařízení založené na I2C a mělo by být připojeno k Raspberry Pi, jak je znázorněno na níže uvedených schématech.
Pro přehlednost je dále popsáno pinové spojení mezi dvěma komponentami.
Připojení ADS1115 a Raspberry Pi:
VDD - 3,3 V
GND - GND
SDA - SDA
SCL - SCL
Po dokončení připojení připojte napájení pi a pokračujte v instalaci závislostí uvedených níže.
Nainstalujte závislosti pro Raspberry Pi osciloskop:
Než začneme psát skript pythonu, abychom vytáhli data z ADC a vykreslili je na živém grafu, musíme povolit komunikační rozhraní I2C maliny pi a nainstalovat softwarové požadavky, které byly zmíněny dříve. To bude provedeno v následujících krocích, takže je snadné jej sledovat:
Krok 1: Povolte rozhraní Raspberry Pi I2C
Chcete-li povolit I2C, spusťte z terminálu;
sudo raspi-config
Po otevření konfiguračních panelů vyberte možnosti rozhraní, vyberte I2C a klikněte na aktivovat.
Krok 2: Aktualizujte Raspberry pi
První věc, kterou dělám před zahájením jakéhokoli projektu, je aktualizace Pi. Díky tomu jsem si jist, že každá věc v operačním systému je aktuální a nebudu mít problémy s kompatibilitou s jakýmkoli nejnovějším softwarem, který jsem se rozhodl nainstalovat na Pi. Chcete-li to provést, spusťte pod dvěma příkazy:
sudo apt-get aktualizace sudo apt-get aktualizace
Krok 3: Nainstalujte knihovnu Adafruit ADS1115 pro ADC
Po dokončení aktualizace jsme nyní připraveni nainstalovat závislosti počínaje modulem python modulu Adafruit pro čip ADS115. Spuštěním se ujistěte, že jste v domovském adresáři Raspberry Pi;
cd ~
poté nainstalujte build-essentials spuštěním;
sudo apt-get install build-essential python-dev python-smbus git
Dále klonujte složku Adafruit git pro knihovnu spuštěním;
git klon https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Přejděte do adresáře klonovaného souboru a spusťte instalační soubor;
cd Adafruit_Python_ADS1x1z sudo python setup.py install
Po instalaci by měla obrazovka vypadat jako na obrázku níže.
Krok 4: Vyzkoušejte komunikaci knihovny a 12C.
Než budeme pokračovat se zbytkem projektu, je důležité otestovat knihovnu a zajistit, aby ADC mohl komunikovat s malinovou pí přes I2C. K tomu použijeme ukázkový skript, který je dodáván s knihovnou.
Zatímco jste stále ve složce Adafruit_Python_ADS1x15, změňte adresář na adresář příkladů spuštěním;
příklady cd
Dále spusťte příklad sampletest.py, který zobrazuje hodnotu čtyř kanálů v ADC ve formě tabulky.
Spusťte příklad pomocí:
python simpletest.py
Pokud je modul I2C povolen a připojení dobré, měli byste vidět data, jak je znázorněno na obrázku níže.
Pokud dojde k chybě, zkontrolujte, zda je ADC dobře připojen k PI a zda je na Pi povolena komunikace I2C.
Krok 5: Nainstalujte Matplotlib
Pro vizualizaci dat musíme nainstalovat modul matplotlib, který se používá k vykreslení všech druhů grafů v pythonu. To lze provést spuštěním;
sudo apt-get install python-matplotlib
Měli byste vidět výsledek jako na obrázku níže.
Krok 6: Nainstalujte modul Drawnow python
Nakonec musíme nainstalovat pythonovský modul drawnow . Tento modul nám pomáhá poskytovat aktuální aktualizace datového grafu.
Budeme instalovat drawnow prostřednictvím instalačního balíčku pythonu; pip , takže musíme zajistit, aby byl nainstalován. To lze provést spuštěním;
sudo apt-get install python-pip
Pak můžeme použít pip k instalaci balíčku drawnow spuštěním:
sudo pip install drawnow
Po spuštění byste měli získat výsledek jako na obrázku níže.
Se všemi nainstalovanými závislostmi jsme nyní připraveni napsat kód.
Pythonský kód pro Raspberry Pi osciloskop:
Pythonový kód pro tento osciloskop Pi je poměrně jednoduchý, zejména pokud znáte modul python matplotlib . Než nám ukážeme celý kód, pokusím se jej rozdělit na část a vysvětlit, co každá část kódu dělá, takže můžete mít dostatek znalostí k rozšíření kódu, abyste mohli dělat více věcí.
V této fázi je důležité přepnout na monitor nebo použít prohlížeč VNC, cokoli, přes co můžete vidět plochu vašeho Raspberry Pi, protože vykreslený graf se na terminálu nezobrazí.
S monitorem jako rozhraním otevřete nový soubor pythonu. Můžete jej nazvat libovolným jménem, ale já jej nazvu scope.py.
sudo nano scope.py
S vytvořeným souborem první věc, kterou uděláme, je import modulů, které budeme používat;
čas importu import matplotlib.pyplot jako plt z drawnow import * import Adafruit_ADS1x15
Dále vytvoříme instanci knihovny ADS1x15 určující ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
Dále nastavíme zisk ADC. Existují různé rozsahy zesílení a měly by být vybrány na základě napětí, které očekáváte na vstupu ADC. Pro tento tutoriál odhadujeme 0 - 4,09v, takže budeme používat zisk 1. Další informace o zisku najdete v datovém listu ADS1015 / ADS1115.
ZISK = 1
Dále musíme vytvořit proměnné pole, které se použijí k uložení dat, která se mají vykreslit, a další, která bude sloužit jako počet.
Val = cnt = 0
Dále dáme vědět o našich záměrech zviditelnění spiknutí, abychom mohli data vykreslit živě.
plt.ion ()
Dále začneme kontinuální převod ADC se specifikací kanálu ADC, v tomto případě kanál 0 a také zadáme zisk.
Je třeba poznamenat, že všechny čtyři kanály ADC na ADS1115 lze číst současně, ale pro tuto demonstraci stačí 1 kanál.
adc.start_adc (0, zisk = ZISK)
Dále vytvoříme funkci def makeFig , abychom vytvořili a nastavili atributy grafu, který bude obsahovat náš živý graf. Nejprve nastavíme limity osy y pomocí ylim , poté zadáme název grafu a název štítku, než určíme data, která budou vykreslena, a jejich styl a barvu vykreslení pomocí plt.plot (). Můžeme také uvést kanál (jak byl uveden kanál 0), abychom mohli identifikovat každý signál, když se používají čtyři kanály ADC. plt.legend se používá k určení, kde chceme, aby se informace o tomto signálu (např. kanál 0) zobrazovala na obrázku.
plt.ylim (-5000,5000) plt.title ('Osciloskop') plt.grid (True) plt.ylabel ('ADC výstupy') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'vpravo dole')
Dále napíšeme smyčku while, která bude použita k neustálému načítání dat z ADC a odpovídajícím způsobem aktualizujeme graf.
První věc, kterou uděláme, je přečíst hodnotu převodu ADC
value = adc.get_last_result ()
Dále vytiskneme hodnotu na terminálu, abychom získali další způsob potvrzení vynesených dat. Po tisku počkáme několik sekund, poté data přidáme do seznamu (val) vytvořeného pro uložení dat pro daný kanál.
print ('Channel 0: {0}'. format (value)) time.sleep (0.5) val.append (int (value))
Poté zavoláme drawnow, abychom aktualizovali graf.
drawnow (makeFig)
Abychom zajistili, že na grafu jsou k dispozici nejnovější data, odstraníme data v indexu 0 po každých 50 počtech dat.
cnt = cnt + 1 if (cnt> 50): val.pop (0)
To je vše!
Celý kód Pythonu je uveden na konci tohoto kurzu.
Osciloskop Raspberry Pi v akci:
Zkopírujte celý kód pythonu a vložte jej do souboru pythonu, který jsme vytvořili dříve, pamatujte, že k zobrazení grafu budeme potřebovat monitor, takže toto vše by mělo být provedeno buď VNC, nebo připojeným monitorem nebo obrazovkou.
Uložte kód a spusťte pomocí;
sudo python scope.py
Pokud jste použili jiný název než scope.py, nezapomeňte jej změnit, aby odpovídal.
Po několika minutách byste měli vidět data ADC vytištěná na terminálu. Příležitostně můžete obdržet varování od matplotlib (jak je znázorněno na obrázku níže), které by mělo být potlačeno, ale stejně to neovlivní zobrazovaná data ani graf. Chcete-li však potlačit varování, lze za řádky importu v našem kódu přidat následující řádky kódu.
Import warnings import matplotlib.cbook warnings.filterwarnings (“ignore”, category = matplotlib.cbook.mplDeprecation)
To je pro tento tutoriál, abyste plně otestovali svůj osciloskop, můžete připojit analogové zařízení jako potenciometr ke kanálu na ADC a měli byste vidět změnu dat s každým otočením potenciometru. Nebo můžete k testování výstupu zadat sinusovou nebo obdélníkovou vlnu.
Děkujeme za přečtení, pokud máte jakékoli dotazy nebo něco, co byste chtěli přidat, nechte mi komentář.
Do příště, pokračujte!