- Projekt folyamat:
- Projekt követelmények
- Kördiagramm:
- Telepítse a Raspberry Pi oszcilloszkóp függőségeit:
- Python kód a Raspberry Pi oszcilloszkóphoz:
- Málna Pi oszcilloszkóp működés közben:
Helló srácok, üdvözlöm a mai bejegyzést. Az egyik legérdekesebb dolog a készítő létében az, hogy tudja, hogyan fejlesszen ki rögtönzött eszközöket, soha nem fog elakadni egyetlen projekten sem, amikor ilyen sokoldalúsága van. Tehát ma megosztom, hogyan készítsünk egy Raspberry Pi alapú rögtönzött verziót az elektromos / elektronikai tervezés egyik legfontosabb eszközéről; Az oszcilloszkóp.
Az oszcilloszkóp olyan elektronikus teszteszköz, amely lehetővé teszi a változó jelfeszültségek vizualizálását és megfigyelését, általában kétdimenziós diagramként, egy vagy több jel ábrázolásával az idő függvényében. A mai projekt célja az oszcilloszkóp jelmegjelenítési képességeinek megismétlése a Raspberry Pi és egy analóg-digitális átalakító modul használatával.
Projekt folyamat:
Az oszcilloszkóp jelmegjelenítésének a Raspberry Pi használatával történő megismétléséhez a következő lépéseket kell megtenni;
1. Végezze el a bemeneti jel digitális-analóg átalakítását
2. Készítse elő a kapott adatokat az ábrázoláshoz
3. Ábrázolja az adatokat egy élő idő grafikonon
Ennek a projektnek az egyszerűsített blokkvázlata az alábbi diagramnak tűnik.
Projekt követelmények
A projektre vonatkozó követelményeket két csoportba lehet sorolni:
- Hardverkövetelmények
- Szoftverkövetelmények
Hardverkövetelmények
A projekt felépítéséhez a következő összetevőkre / részekre van szükség:
- Raspberry pi 2 (vagy bármely más modell)
- 8 vagy 16 GB-os SD kártya
- LAN / Ethernet kábel
- Tápegység vagy USB-kábel
- ADS1115 ADC
- LDR (opcionális, mivel a teszt célja)
- 10k vagy 1k ellenállás
- Jumper huzalok
- Kenyérlemez
- Monitor vagy bármilyen más mód a pi asztalának megtekintésére (VNC beleértve)
Szoftverkövetelmények
A projekt szoftverkövetelményei alapvetően a python modulok ( matplotlib és drawow ), amelyeket az adatok vizualizálásához használnak, és az Adafruit modul az ADS1115 ADC chiphez való kapcsolódáshoz. Megmutatom, hogyan telepítsük ezeket a modulokat a Raspberry Pi-re, ahogy folytatjuk.
Bár ez az oktatóanyag a használt málna pi operációs rendszertől függetlenül működik, én a Raspberry Pi stretch operációs rendszert fogom használni, és feltételezem, hogy Ön ismeri a Raspberry Pi telepítését a Raspbian stretch operációs rendszerrel, és tudja, hogyan kell SSH-t használni a málnába pi egy olyan terminál szoftver segítségével, mint a gitt. Ha bármilyen problémája merül fel, ezen a weboldalon rengeteg Raspberry Pi oktatóanyag segíthet.
Ha az összes hardverkomponens a helyén van, hozzuk létre a vázlatot, és kössük össze az összetevőket.
Kördiagramm:
Az analóg bemeneti jelek átalakításához digitális jelekké, amelyeket a Raspberry Pi segítségével lehet megjeleníteni, az ADS1115 ADC chipet fogjuk használni. Ez a chip azért válik fontossá, mert a Raspberry Pi, ellentétben az Arduinóval és a legtöbb mikrovezérlővel, nem rendelkezik fedélzeti analóg-digitális átalakítóval (ADC). Bár használhattunk volna bármilyen málna pi kompatibilis ADC chipet, én inkább ezt a chipet részesítem előnyben nagy felbontása (16bit), valamint az Adafruit által jól dokumentált adatlap és használati utasítás miatt. Megtekintheti a Raspberry Pi ADC oktatóanyagunkat is, hogy többet tudjon meg róla.
Az ADC egy I2C alapú eszköz, amelyet az alábbi vázlatoknak megfelelően kell csatlakoztatni a Raspberry Pi-hez.
Az érthetőség kedvéért az alábbiakban a két alkatrész közötti érintkezést is leírjuk.
ADS1115 és Raspberry Pi csatlakozások:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Miután minden kapcsolat elkészült, kapcsolja be a pi-t, és telepítse az alább említett függőségeket.
Telepítse a Raspberry Pi oszcilloszkóp függőségeit:
Mielőtt elkezdenénk írni a python szkriptet, hogy adatokat gyűjtsünk az ADC-ből és egy élő grafikonon ábrázoljuk, engedélyeznünk kell a málna pi I2C kommunikációs felületét, és telepítenünk kell a korábban említett szoftverkövetelményeket. Ez az alábbi lépésekben történik, így könnyen követhető:
1. lépés: Engedélyezze a Raspberry Pi I2C interfészt
Az I2C engedélyezéséhez futtassa a terminálról;
sudo raspi-config
Amikor a konfigurációs panelek megnyílnak, válassza ki az interfészbeállításokat, válassza az I2C lehetőséget, majd kattintson az Engedélyezés gombra.
2. lépés: Frissítse a Raspberry pi programot
A projekt megkezdése előtt az első dolog, hogy frissítem a Pi-t. Ezzel biztos vagyok abban, hogy az operációs rendszer minden dolga naprakész, és nem fogok tapasztalni kompatibilitási problémát a legújabb szoftverekkel, amelyeket a Pi-re telepítek. Ehhez futtasson két parancsot:
sudo apt-get update sudo apt-get upgrade
3. lépés: Telepítse az Adafruit ADS1115 könyvtárat az ADC-hez
A frissítés elkészültével készen állunk az ADS115 chip Adafruit python moduljával kezdődő függőségek telepítésére. Futtatással győződjön meg arról, hogy a Raspberry Pi otthoni könyvtárában van;
cd ~
majd futtatással telepítse a build-essentials-t;
sudo apt-get install build-essential python-dev python-smbus git
Ezután klónozással klónozza a könyvtár Adafruit git mappáját;
git klón https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Váltson át a klónozott fájl könyvtárába, és futtassa a telepítő fájlt;
cd Adafruit_Python_ADS1x1z sudo python setup.py telepítés
A telepítés után a képernyőnek úgy kell kinéznie, mint az alábbi kép.
4. lépés: Tesztelje a könyvtár és a 12C kommunikációt.
Mielőtt folytatnánk a projekt többi részét, fontos a könyvtár tesztelése és annak biztosítása, hogy az ADC kommunikálni tudjon a málna pi-val az I2C-n keresztül. Ehhez a könyvtárhoz mellékelt példaszkriptet használjuk.
Még mindig az Adafruit_Python_ADS1x15 mappában változtassa meg a könyvtárat a példák könyvtárába a futtatással;
cd példák
Ezután futtassa a sampletest.py példát, amely táblázatos formában jeleníti meg az ADC négy csatornájának értékét.
Futtassa a példát:
python simpletest.py
Ha az I2C modul engedélyezett és a kapcsolatok megfelelőek, akkor az alábbi képen látható adatokat kell látnia.
Hiba esetén ellenőrizze, hogy az ADC jól csatlakozik-e a PI-hez, és az I2C kommunikáció engedélyezve van-e a Pi-n.
5. lépés: Telepítse a Matplotlib programot
Az adatok megjelenítéséhez telepítenünk kell a matplotlib modult, amelyet a python mindenféle grafikonjának ábrázolására használunk. Ez futással érhető el;
sudo apt-get install python-matplotlib
Olyan eredményt kell látnia, mint az alábbi kép.
6. lépés: Telepítse a Drawnow python modult
Végül telepítenünk kell a húzott python modult. Ez a modul segít nekünk élő frissítéseket nyújtani az adatdiagramon.
A Drawow- t a python csomag telepítőjén keresztül telepítjük; pip , ezért biztosítanunk kell a telepítését. Ez futással érhető el;
sudo apt-get install python-pip
Ezután a pip segítségével futtathatjuk a húzott csomagot:
sudo pip install drawow
Futtatása után olyan eredményt kell kapnia, mint az alábbi kép.
Az összes telepített függőséggel készen állunk a kód megírására.
Python kód a Raspberry Pi oszcilloszkóphoz:
Ennek a Pi Oscilloszkópnak a python kódja meglehetősen egyszerű, különösen, ha ismeri a python matplotlib modult. Mielőtt megmutatná nekünk a teljes kódot, megpróbálom részekre bontani, és elmagyarázom, hogy a kód egyes részei mit csinálnak, hogy elegendő tudással rendelkezzen ahhoz, hogy kibővítse a kódot további dolgok készítéséhez.
Ebben a szakaszban fontos a monitorra váltás vagy a VNC megjelenítő használata, bármi, amin keresztül láthatja a Raspberry Pi asztalát, mivel az ábrázolt grafikon nem jelenik meg a terminálon.
Ha a monitor az interfész, nyisson meg egy új python fájlt. Bármelyik névnek hívhatja, amit akar, de én ezt hatókörnek hívom.
sudo nano hatókör.py
A létrehozott fájllal először meg kell importálnunk a használni kívánt modulokat;
importálás ideje import matplotlib.pyplot mint plt a húzott importból * import Adafruit_ADS1x15
Ezután létrehozunk egy példányt az ADS1x15 könyvtárból, amely meghatározza az ADS1115 ADC-t
adc = Adafruit_ADS1x15.ADS1115 ()
Ezután beállítjuk az ADC erősítését. Különböző erősítési tartományok léteznek, és az ADC bemeneténél várt feszültség alapján kell megválasztani. Ehhez az oktatóanyaghoz 0 - 4.09v-t becsülünk, így 1-es erősítést fogunk használni. Az erősítésről további információkért tekintse meg az ADS1015 / ADS1115 adatlapot.
GAIN = 1
Ezután létre kell hoznunk a tömbváltozókat, amelyek felhasználásra kerülnek az ábrázolandó adatok tárolására, és egy másikra, amelyek számlálásként szolgálnak.
Val = cnt = 0
Ezután megismertetjük a cselekmény interaktívvá tételének szándékát, hogy lehetővé tegyük az adatok élőben történő ábrázolását.
plt.ion ()
Ezután elkezdjük a folyamatos ADC konverziót, meghatározva az ADC csatornát, jelen esetben a 0 csatornát, és megadjuk az erősítést is.
Meg kell jegyezni, hogy az ADS1115 mind a négy ADC csatornája olvasható egyszerre, de 1 csatorna elegendő ehhez a bemutatóhoz.
adc.start_adc (0, nyereség = GAIN)
Ezután létrehozunk egy def makeFig függvényt, hogy létrehozzuk és beállítsuk a grafikon attribútumait, amelyek megtartják az élő ábránkat . Először az yim tengely határait állítottuk be az ylim használatával, amely után megadjuk a diagram címét és a címke nevét, mielőtt a plt.plot () használatával meghatároznánk az ábrázolni kívánt adatokat, valamint annak plot stílusát és színét .. Megadhatjuk a csatornát is (ahogy a 0. csatornát megadtuk), így minden jelet azonosítani tudunk, amikor az ADC négy csatornáját használjuk. A plt.legend segítségével megadhatjuk, hol szeretnénk az ábrán megjeleníteni az adott jelre vonatkozó információkat (pl. 0. csatorna).
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputok') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'jobb alsó rész')
Ezután megírjuk a while ciklust, amelyet folyamatosan használunk az ADC adatainak olvasására, és ennek megfelelően frissítjük a plot-ot.
Első lépésként elolvassuk az ADC konverziós értéket
érték = adc.get_last_result ()
Ezután kinyomtatjuk az értéket a terminálra, hogy egy másik módot nyújtsunk az ábrázolt adatok megerősítésére. Várunk néhány másodpercet a nyomtatás után, majd hozzáfűzzük az adatokat a létrehozott listához (val), amely az adott csatorna adatait tárolja.
nyomtatás ('0. csatorna: {0}'. formátum (érték)) time.sleep (0.5) val.append (int (érték))
Ezután felhívjuk a drawow- t a telek frissítéséhez.
húzott (makeFig)
Annak biztosítása érdekében, hogy a legújabb adatok rendelkezésre álljanak a grafikonon, minden 50 adatszámlálás után töröljük az adatokat a 0 indexben.
cnt = cnt + 1 if (cnt> 50): val.pop (0)
Ez minden!
A teljes Python-kód az oktatóanyag végén található.
Málna Pi oszcilloszkóp működés közben:
Másolja a teljes python kódot, és illessze be a korábban létrehozott python fájlba, ne felejtse el, hogy a diagram megtekintéséhez monitorra lesz szükségünk, így mindezt a VNC-nek, vagy csatlakoztatott monitorral vagy képernyővel kell elvégeznie.
Mentse el a kódot, és futtassa a;
sudo python hatókör.py
Ha a scope.py-től eltérő nevet használt, ne felejtse el ezt módosítani, hogy megfeleljen.
Néhány perc múlva látnia kell az ADC-adatok nyomtatását a terminálon. Esetenként figyelmeztetést kaphat a matplotlib-től (amint az az alábbi képen látható), amelyet le kell tiltani, de ez egyébként sem befolyásolja a megjelenített adatokat vagy a diagramot. A figyelmeztetés elnyomásához azonban a következő kódsorokat lehet hozzáadni az import sorok után a kódunkban.
Figyelmeztetések importálása importáljon matplotlib.cbook warnings.filterwarnings („ignore”, kategória = matplotlib.cbook.mplDeprecation)
Ez az oktató srácok számára, az oszcilloszkóp teljes teszteléséhez csatlakoztathat egy analóg eszközt, mint egy potenciométert az ADC csatornájához, és látnia kell az adatok változását a potenciométer minden egyes fordulatánál. Vagy megadhatja a szinusz vagy négyzet hullámot a kimenet teszteléséhez.
Köszönjük, hogy elolvastad, ha bármilyen kérdésed van, vagy valami olyasmit szeretnél, amit hozzáfűznék, csak hagyj megjegyzést.
Legközelebb, csináld tovább!