- Projekta plūsma:
- Projekta prasības
- Ķēdes shēma:
- Instalējiet Raspberry Pi osciloskopa atkarības:
- Aveņu Pi osciloskopa Python kods:
- Aveņu Pi osciloskops darbībā:
Sveiki puiši, laipni lūdzam šodienas ziņojumā. Viena no aizraujošākajām lietām par to, ka esi veidotājs, ir zināt, kā izstrādāt improvizētus rīkus. Jūs nekad neuzķersieties pie jebkura projekta, ja jums ir šāda veida daudzpusība. Tāpēc šodien es dalīšos, kā izveidot Raspberry Pi balstītu improvizētu versiju vienam no svarīgākajiem elektrotehnikas / elektronikas inženierijas instrumentiem; Osciloskops.
Osciloskops ir elektronisks testa instruments, kas ļauj vizualizēt un novērot mainīgu signāla spriegumu, parasti kā divdimensiju diagrammu ar vienu vai vairākiem signāliem, kas attēloti pret laiku. Šodienas projektā tiks mēģināts atkārtot osciloskopa signālu vizualizācijas iespējas, izmantojot Raspberry Pi un analogā - digitālā pārveidotāja moduli.
Projekta plūsma:
Lai atkārtotu osciloskopa signāla vizualizāciju, izmantojot Raspberry Pi, būs jāveic šādas darbības;
1. Veiciet ieejas signāla pārveidošanu no digitālā uz analogo
2. Sagatavojiet iegūtos datus reprezentācijai
3. Uzzīmējiet datus reāllaika grafikā
Vienkāršota šī projekta blokshēma izskatās kā zemāk redzamā diagramma.
Projekta prasības
Prasību šim projektam var iedalīt divās daļās:
- Aparatūras prasības
- Prasības programmatūrai
Aparatūras prasības
Lai izveidotu šo projektu, ir nepieciešami šādi komponenti / daļa;
- Aveņu pi 2 (vai jebkurš cits modelis)
- 8 vai 16 GB SD karte
- LAN / Ethernet kabelis
- Barošanas avots vai USB kabelis
- ADS1115 ADC
- LDR (pēc izvēles, kā paredzēts testam)
- 10k vai 1k rezistors
- Džemperu vadi
- Maizes dēlis
- Monitoru vai jebkuru citu veidu, kā redzēt pi darbvirsmu (ieskaitot VNC)
Prasības programmatūrai
Programmatūras prasības šim projektam būtībā ir pitona moduļi ( matplotlib un drawow ), kas tiks izmantoti datu vizualizēšanai, un Adafruit modulis saskarnei ar ADS1115 ADC mikroshēmu. Es parādīšu, kā šos moduļus instalēt Raspberry Pi, turpinot darbu.
Lai gan šī apmācība darbosies neatkarīgi no izmantotās aveņu pi OS, es izmantošu Raspberry Pi stretch OS, un es pieņemu, ka jūs esat iepazinies ar Raspberry Pi iestatīšanu ar Raspbian stretch OS, un jūs zināt, kā SSH iekļaut avenē pi, izmantojot termināla programmatūru, piemēram, tepe. Ja jums ir kādas problēmas ar šo, šajā vietnē var atrast daudz Raspberry Pi apmācību.
Ievietojot visus aparatūras komponentus, izveidosim shēmas un savienosim komponentus kopā.
Ķēdes shēma:
Lai pārveidotu analogos ieejas signālus ciparu signālos, kurus var vizualizēt ar Raspberry Pi, mēs izmantosim ADS1115 ADC mikroshēmu. Šī mikroshēma kļūst svarīga, jo Raspberry Pi, atšķirībā no Arduino un lielākās daļas mikrokontrolieru, nav iebūvēta analogā cipara pārveidotāja (ADC). Lai gan mēs būtu varējuši izmantot jebkuru ar aveņu pi saderīgu ADC mikroshēmu, es dodu priekšroku šai mikroshēmai, pateicoties tās augstajai izšķirtspējai (16 biti) un labi dokumentētajai datu lapai un Adafruit lietošanas instrukcijām. Lai uzzinātu vairāk par to, varat arī pārbaudīt mūsu Raspberry Pi ADC apmācību.
ADC ir ierīce, kuras pamatā ir I2C, un tai jābūt savienotai ar Raspberry Pi, kā parādīts zemāk redzamajās shēmās.
Skaidrības labad tapu savienojums starp abiem komponentiem ir aprakstīts arī turpmāk.
ADS1115 un Raspberry Pi savienojumi:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Kad savienojumi ir pabeigti, ieslēdziet pi un turpiniet instalēt zemāk minētās atkarības.
Instalējiet Raspberry Pi osciloskopa atkarības:
Pirms sākam rakstīt pitona skriptu, lai iegūtu datus no ADC un uzzīmētu tos uz reāla grafika, mums jāiespējo aveņu pi I2C komunikācijas saskarne un jāinstalē iepriekš minētās programmatūras prasības. Tas tiks veikts zemāk norādītajās darbībās, lai to būtu viegli ievērot:
1. darbība: iespējojiet Raspberry Pi I2C saskarni
Lai iespējotu I2C, no termināļa palaidiet;
sudo raspi-config
Kad tiek atvērti konfigurācijas paneļi, atlasiet saskarnes opcijas, atlasiet I2C un noklikšķiniet uz iespējot.
2. darbība: atjauniniet aveņu pī
Pirmā lieta, ko daru pirms jebkura projekta uzsākšanas, ir Pi atjaunināšana. Tādējādi es esmu pārliecināts, ka visas operētājsistēmas lietas ir atjauninātas, un es nejutīšu saderības problēmas ar jaunāko programmatūru, kuru izvēlos instalēt Pi. Lai to izdarītu, palaidiet zem divām komandām:
sudo apt-get update sudo apt-get jauninājums
3. darbība. Instalējiet Adafruit ADS1115 bibliotēku ADC
Pēc atjaunināšanas pabeigšanas mēs tagad esam gatavi instalēt atkarības, sākot ar Adafruit python moduli ADS115 mikroshēmai. Pārliecinieties, ka esat Raspberry Pi mājas direktorijā, palaižot;
CD ~
pēc tam instalējiet būtiskāko versiju, palaižot;
sudo apt-get install build-essential python-dev python-smbus git
Pēc tam, darbojoties, klonējiet bibliotēkas mapi Adafruit git;
git klons https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Pārslēdzieties uz klonētā faila direktoriju un palaidiet iestatīšanas failu;
cd Adafruit_Python_ADS1x1z sudo python setup.py instalēt
Pēc instalēšanas ekrānam vajadzētu izskatīties kā zemāk redzamais attēls.
4. darbība: pārbaudiet bibliotēku un 12C komunikāciju.
Pirms mēs turpinām pārējo projektu, ir svarīgi pārbaudīt bibliotēku un nodrošināt, lai ADC varētu sazināties ar aveņu pi, izmantojot I2C. Lai to izdarītu, mēs izmantosim skripta paraugu, kas pievienots bibliotēkai.
Kamēr vēl atrodaties mapē Adafruit_Python_ADS1x15, palaidiet direktoriju uz piemēru direktoriju;
CD piemēri
Pēc tam palaidiet piemēru sampletest.py, kurā tabulu veidā tiek parādīta četru ADC kanālu vērtība.
Palaidiet piemēru, izmantojot:
python simpletest.py
Ja I2C modulis ir iespējots un savienojumi ir labi, jums vajadzētu redzēt datus, kā parādīts zemāk esošajā attēlā.
Ja rodas kļūda, pārbaudiet, vai ADC ir labi savienots ar PI un Pi ir iespējota I2C komunikācija.
5. darbība: instalējiet Matplotlib
Lai vizualizētu datus, mums jāinstalē matplotlib modulis, kas tiek izmantots, lai uzzīmētu visa veida grafus pitonā. To var izdarīt, skrienot;
sudo apt-get instalēt python-matplotlib
Jums vajadzētu redzēt rezultātu, piemēram, zemāk redzamo attēlu.
6. darbība: instalējiet modeli Drawnow python
Visbeidzot, mums jāinstalē izvilktais pitona modulis. Šis modulis palīdz mums nodrošināt tiešus datu diagrammas atjauninājumus.
Mēs instalēsim drawow, izmantojot python pakotņu instalēšanas programmu; pip , tāpēc mums jānodrošina, ka tas ir instalēts. To var izdarīt, skrienot;
sudo apt-get instalēt python-pip
Pēc tam mēs varam izmantot pip, lai instalētu izvilkto paketi, palaižot:
sudo pip instalēt ievilkto
Pēc tā palaišanas jums vajadzētu iegūt tādu rezultātu kā attēls zemāk.
Kad visas atkarības ir instalētas, tagad mēs esam gatavi rakstīt kodu.
Aveņu Pi osciloskopa Python kods:
Šī Pi osciloskopa pitona kods ir diezgan vienkāršs, it īpaši, ja esat iepazinies ar pitona matplotlib moduli. Pirms parādīsit mums visu kodu, es mēģināšu to sadalīt daļās un paskaidrot, ko dara katra koda daļa, lai jums būtu pietiekami daudz zināšanu, lai paplašinātu kodu, lai veiktu vairāk materiālu.
Šajā posmā ir svarīgi pāriet uz monitoru vai izmantot VNC skatītāju, jebko, caur kuru jūs varat redzēt sava Raspberry Pi darbvirsmu, jo grafikā redzamais grafiks netiks parādīts terminālā.
Izmantojot monitoru kā interfeisu, atveriet jaunu pitona failu. Jūs to varat nosaukt par jebkuru vēlamo vārdu, bet es to nosaucu scope.py.
sudo nano scope.py
Ar izveidoto failu vispirms mēs importējam moduļus, kurus izmantosim;
importa laiks importa matplotlib.pyplot kā plt no ievilkta importa * imports Adafruit_ADS1x15
Pēc tam mēs izveidojam ADS1x15 bibliotēkas gadījumu, norādot ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
Tālāk mēs iestatījām ADC pieaugumu. Pastāv dažādi pastiprināšanas diapazoni, un tie jāizvēlas, pamatojoties uz spriegumu, kuru jūs sagaidāt ADC ieejā. Šajā apmācībā mēs novērtējam 0 - 4,09v, tāpēc izmantosim pieaugumu 1. Lai iegūtu vairāk informācijas par ieguvumu, varat pārbaudīt ADS1015 / ADS1115 datu lapu.
LIELUMS = 1
Tālāk mums jāizveido masīva mainīgie, kas tiks izmantoti, lai uzglabātu attēlojamos datus, un vēl viens, kas kalpo kā skaits.
Val = cnt = 0
Pēc tam mēs darām zināmus savus nodomus padarīt sižetu interaktīvu, lai mēs varētu datus plānot tiešsaistē.
plt.ion ()
Pēc tam mēs sākam nepārtrauktu ADC pārveidošanu, norādot ADC kanālu, šajā gadījumā 0 kanālu, un mēs arī norādām ieguvumu.
Jāatzīmē, ka visus četrus ADC kanālus ADS1115 var nolasīt vienlaikus, taču šai demonstrācijai pietiek ar 1 kanālu.
adc.start_adc (0, pieaugums = GAIN)
Tālāk mēs izveidojam funkciju def makeFig , lai izveidotu un iestatītu grafika atribūtus, kas saglabās mūsu tiešo grafiku. Vispirms mēs iestatām y ass robežas, izmantojot ylim , pēc kura mēs ievadām diagrammas nosaukumu un etiķetes nosaukumu, pirms mēs norādām datus, kas tiks uzzīmēti, un tā diagrammas stilu un krāsu, izmantojot plt.plot (). Mēs varam arī norādīt kanālu (kā tika norādīts 0 kanāls), lai mēs varētu identificēt katru signālu, kad tiek izmantoti četri ADC kanāli. plt.legend tiek izmantots, lai norādītu, kur mēs vēlamies informāciju par šo signālu (piemēram, 0. kanālu), kas parādīta attēlā.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC izejas') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'apakšējā labajā pusē')
Tālāk mēs uzrakstām while ciklu, kas tiks izmantots, lai pastāvīgi nolasītu datus no ADC, un attiecīgi atjaunina diagrammu.
Pirmā lieta, ko mēs darām, ir ADC reklāmguvuma vērtības nolasīšana
vērtība = adc.get_last_result ()
Tālāk mēs drukājam vērtību terminālā, lai dotu mums vēl vienu veidu, kā apstiprināt uzzīmētos datus. Pēc drukāšanas mēs pagaidām dažas sekundes, pēc tam pievienojam datus sarakstam (val), kas izveidots, lai saglabātu šī kanāla datus.
drukāt ('Channel 0: {0}'. format (value)) time.sleep (0.5) val.append (int (value))
Pēc tam mēs saucam par viļņu, lai atjauninātu zemes gabalu.
vilkt (makeFig)
Lai pārliecinātos, ka grafikā ir pieejami jaunākie dati, pēc katriem 50 datu skaitīšanas mēs indeksā 0 dzēšam datus.
cnt = cnt + 1 if (cnt> 50): val.pop (0)
Tas ir viss!
Pilnīga Python kods tiek dota beigās šo pamācību.
Aveņu Pi osciloskops darbībā:
Kopējiet pilnu pitona kodu un ielīmējiet iepriekš izveidotajā pitona failā, atcerieties, ka zemes gabala apskatīšanai mums būs nepieciešams monitors, tāpēc tas viss jāveic vai nu VNC, vai arī ar pievienotu monitoru vai ekrānu.
Saglabājiet kodu un palaidiet, izmantojot;
sudo python scope.py
Ja izmantojāt citu nosaukumu, nevis scope.py, neaizmirstiet to mainīt, lai atbilstu.
Pēc dažām minūtēm jums vajadzētu redzēt, ka ADC dati tiek drukāti uz termināļa. Reizēm jūs varat saņemt brīdinājumu no matplotlib (kā parādīts zemāk esošajā attēlā), kas ir jānomāc, taču tas tik un tā neietekmē attēlotos datus vai diagrammu. Lai izslēgtu brīdinājumu, mūsu kodā aiz importēšanas rindām var pievienot šādas koda rindas.
Importa brīdinājumi importēt matplotlib.cbook warnings.filterwarnings (“ignorēt”, kategorija = matplotlib.cbook.mplDeprecation)
Tas ir šīs apmācības puiši, lai pilnībā pārbaudītu osciloskopu, analogo ierīci, piemēram, potenciometru, varat pievienot ADC kanālam, un jums vajadzētu redzēt datu izmaiņas ar katru potenciometra pagriezienu. Vai arī varat ievadīt sinusa vai kvadrātveida viļņu, lai pārbaudītu izvadi.
Paldies, ka izlasījāt, ja jums ir kādi jautājumi vai jautājumi, ko es vēlētos, lai es pievienotu, vienkārši atstājiet man komentāru.
Līdz nākamajai reizei turpini gatavot!