- Daloy ng Proyekto:
- Mga Kinakailangan sa Proyekto
- Diagram ng Circuit:
- Mag-install ng Mga Depende para sa Raspberry Pi Oscilloscope:
- Python Code para sa Raspberry Pi Oscilloscope:
- Ang Raspberry Pi Oscilloscope sa Aksyon:
Kumusta mga tao, maligayang pagdating sa post ngayon. Ang isa sa mga pinaka kamangha-manghang bagay tungkol sa pagiging isang tagagawa ay alam kung paano bumuo ng mga pansamantalang tool, hindi ka kailanman mai-stuck sa pagtatrabaho sa anumang proyekto kapag mayroon kang ganoong kagalingan sa maraming kaalaman. Kaya Ngayon, magbabahagi ako kung paano bumuo ng isang bersyon ng pansamantalang pansamantalang batay sa Raspberry ng isa sa pinakamahalagang tool sa Electrical / Electronics engineering; Ang Oscilloscope.
Ang oscilloscope ay isang elektronikong instrumento sa pagsubok na nagbibigay-daan sa pagpapakita at pagmamasid ng iba't ibang mga boltahe ng signal, kadalasan bilang isang dalawang dimensional na balangkas na may isa o higit pang mga senyas na nakaakma laban sa oras. Hahanapin ng proyekto ngayon na magtiklop ng mga kakayahan sa visualization ng signal ng oscilloscope gamit ang Raspberry Pi at isang analog sa digital converter module.
Daloy ng Proyekto:
Ang pagkopya ng visualization ng signal ng oscilloscope gamit ang Raspberry Pi ay mangangailangan ng mga sumusunod na hakbang;
1. Gawin ang Digital sa analog na conversion ng signal ng Input
2. Ihanda ang mga nagresultang data para sa representasyon
3. I-plot ang data sa isang live time graph
Ang isang pinasimple na diagram ng block para sa proyektong ito ay magiging hitsura ng diagram sa ibaba.
Mga Kinakailangan sa Proyekto
Ang kinakailangan para sa proyektong ito ay maaaring maiuri sa dalawa:
- Mga Kinakailangan sa Hardware
- Mga Kinakailangan sa Software
Mga kinakailangan sa hardware
Upang maitayo ang proyektong ito, kinakailangan ang mga sumusunod na bahagi / bahagi;
- Raspberry pi 2 (o anumang iba pang modelo)
- 8 o 16GB SD Card
- LAN / Ethernet Cable
- Power Supply o USB cable
- ADS1115 ADC
- LDR (Opsyonal bilang nilalayon nito para sa pagsubok)
- 10k o 1k risistor
- Jumper wires
- Breadboard
- Subaybayan o anumang iba pang paraan ng pagtingin sa Desktop ng pi (kasama ang VNC)
Mga Kinakailangan sa Software
Ang mga kinakailangan ng software para sa proyektong ito ay karaniwang mga module ng python ( matplotlib at drawnow ) na gagamitin para sa visualization ng data at ang module ng Adafruit para sa pakikialam sa ADS1115 ADC chip. Ipapakita ko kung paano i-install ang mga modyul na ito sa Raspberry Pi habang nagpapatuloy kami.
Habang ang tutorial na ito ay gagana nang walang pagsasaalang-alang sa raspberry pi OS na ginamit, gagamitin ko ang Raspberry Pi stretch OS at ipagpapalagay ko na pamilyar ka sa pag-set up ng Raspberry Pi kasama ang Raspbian stretch OS, at alam mo kung paano SSH sa raspberry pi gamit ang isang terminal software tulad ng masilya. Kung mayroon kang mga isyu sa anuman sa mga ito, maraming tonelada ng Mga Tutorial sa Raspberry Pi sa website na ito na makakatulong.
Sa lahat ng mga bahagi ng hardware na nasa lugar, lumikha tayo ng mga eskematiko at ikonekta ang mga sangkap nang magkasama.
Diagram ng Circuit:
Upang mai-convert ang mga signal ng pag-input ng analog sa mga digital signal na maaaring ma-visualize gamit ang Raspberry Pi, gagamitin namin ang ADS1115 ADC chip. Ang chip na ito ay naging mahalaga dahil ang Raspberry Pi, hindi katulad ng Arduino at karamihan sa mga micro-Controller, ay walang isang on-board analog sa digital converter (ADC). Habang maaaring nagamit namin ang anumang raspberry pi na katugmang ADC chip, mas gusto ko ang chip na ito dahil sa mataas na resolusyon (16bits) at ang mahusay nitong dokumentadong datasheet at ginagamit ang mga tagubilin ng Adafruit. Maaari mo ring suriin ang aming tutorial sa Raspberry Pi ADC upang malaman ang tungkol dito.
Ang ADC ay isang aparato na nakabatay sa I2C at dapat na konektado sa Raspberry Pi tulad ng ipinakita sa mga iskema sa ibaba.
Para sa kalinawan, ang koneksyon ng pin sa pagitan ng dalawang bahagi ay inilarawan din sa ibaba.
Mga Koneksyon sa ADS1115 at Raspberry Pi:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Sa tapos na ang mga koneksyon, paganahin ang iyong pi at magpatuloy upang mai-install ang mga dependency na nabanggit sa ibaba.
Mag-install ng Mga Depende para sa Raspberry Pi Oscilloscope:
Bago namin simulang isulat ang script ng sawa upang makuha ang data mula sa ADC at isalin ito sa isang live na grap, kailangan naming paganahin ang interface ng komunikasyon ng I2C ng raspberry pi at i-install ang mga kinakailangan sa software na nabanggit nang mas maaga. Gagawin ito sa mga hakbang sa ibaba upang madali itong sundin:
Hakbang 1: Paganahin ang interface ng Raspberry Pi I2C
Upang paganahin ang I2C, mula sa terminal, tumakbo;
sudo raspi-config
Kapag bumukas ang mga panel ng pagsasaayos, piliin ang mga pagpipilian sa interface, piliin ang I2C at i-click ang paganahin.
Hakbang 2: I-update ang Raspberry pi
Ang unang bagay na ginagawa ko bago simulan ang anumang proyekto ay ang pag-update ng Pi. Sa pamamagitan nito, sigurado ako na ang bawat bagay sa OS ay napapanahon at hindi ako makakaranas ng isyu sa pagiging tugma sa anumang pinakabagong software na pinili kong mai-install sa Pi. Upang magawa ito, tumakbo sa ibaba ng dalawang mga utos:
sudo apt-get update sudo apt-get upgrade
Hakbang 3: I-install ang Adafruit ADS1115 library para sa ADC
Sa tapos na ang pag-update, handa na kaming i-install ang mga dependency na nagsisimula sa module ng Adafruit python para sa ADS115 chip. Tiyaking ikaw ay nasa direktoryo ng bahay ng Raspberry Pi sa pamamagitan ng pagpapatakbo;
cd ~
pagkatapos i-install ang mga mahahalagang build-sa pamamagitan ng pagpapatakbo;
sudo apt-get install build-importanteng python-dev python-smbus git
Susunod, i-clone ang folder ng Adafruit git para sa library sa pamamagitan ng pagpapatakbo;
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Baguhin sa direktoryo ng cloned file at patakbuhin ang setup file;
cd Adafruit_Python_ADS1x1z sudo python setup.py install
Pagkatapos ng pag-install, ang iyong screen ay dapat magmukhang imahe sa ibaba.
Hakbang 4: Subukan ang library at komunikasyon sa 12C.
Bago namin magpatuloy sa natitirang proyekto, mahalaga na subukan ang library at matiyak na ang ADC ay maaaring makipag-usap sa raspberry pi sa I2C. Upang magawa ito, gagamitin namin ang isang halimbawa ng script na kasama ng silid-aklatan.
Habang nasa folder pa rin ng Adafruit_Python_ADS1x15, baguhin ang direktoryo sa direktoryo ng mga halimbawa sa pamamagitan ng pagpapatakbo;
mga halimbawa ng cd
Susunod, patakbuhin ang halimbawa ng sampletest.py na nagpapakita ng halaga ng apat na mga channel sa ADC sa isang form na tabular.
Patakbuhin ang halimbawa gamit ang:
pinakasimpleng python.py
Kung ang module na I2C ay pinagana at mahusay ang mga koneksyon, dapat mong makita ang data tulad ng ipinakita sa imahe sa ibaba.
Kung may naganap na error, suriin upang matiyak na ang ADC ay konektado nang maayos sa PI at ang komunikasyon ng I2C ay pinagana sa Pi.
Hakbang 5: I-install ang Matplotlib
Upang mailarawan ang data na kailangan namin upang mai-install ang matplotlib module na ginagamit upang magbalangkas ng lahat ng uri ng mga graph sa sawa. Maaari itong magawa sa pamamagitan ng pagtakbo;
sudo apt-get install python-matplotlib
Dapat mong makita ang isang kinalabasan tulad ng imahe sa ibaba.
Hakbang6: I-install ang Drawnow python module
Panghuli, kailangan nating i-install ang drawnow python module. Tinutulungan kami ng modyul na ito na magbigay ng mga live na pag-update sa plot ng data.
Mag-i-install kami ng drawnow sa pamamagitan ng installer ng python package; pip , kaya kailangan nating tiyakin na naka-install ito. Maaari itong magawa sa pamamagitan ng pagtakbo;
sudo apt-get install python-pip
Maaari naming magamit ang pip upang mai-install ang drawnow package sa pamamagitan ng pagpapatakbo:
sudo pip install drawnow
Dapat kang makakuha ng isang kinalabasan tulad ng imahe sa ibaba pagkatapos na patakbuhin ito.
Sa lahat ng naka-install na mga dependency, handa na kaming isulat ang code.
Python Code para sa Raspberry Pi Oscilloscope:
Ang python code para sa Pi Oscilloscope na ito ay medyo simple lalo na kung pamilyar ka sa module ng python matplotlib . Bago ipakita sa amin ang buong code, susubukan kong hatiin ito sa bahagi at ipaliwanag kung ano ang ginagawa ng bawat bahagi ng code upang magkaroon ka ng sapat na kaalaman upang mapalawak ang code upang makagawa ng higit pang mga bagay-bagay.
Sa yugtong ito mahalaga na lumipat sa isang monitor o gamitin ang manonood ng VNC, anumang bagay na maaari mong makita ang desktop ng iyong Raspberry Pi, dahil ang grap na binabalak ay hindi ipapakita sa terminal.
Gamit ang monitor bilang interface buksan ang isang bagong file sawa. Maaari mo itong tawagan sa anumang pangalan na gusto mo, ngunit tatawagin ko ito na range.py.
sudo nano saklaw.py
Gamit ang file na nilikha, ang unang bagay na ginagawa namin ay i-import ang mga module na gagamitin namin;
i-import ang oras sa pag- import matplotlib.pyplot bilang plt mula sa drawnow import * import Adafruit_ADS1x15
Susunod, gumawa kami ng isang halimbawa ng ADS1x15 library na tumutukoy sa ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
Susunod, itinakda namin ang kita ng ADC. Mayroong iba't ibang mga saklaw ng pagkuha at dapat mapili batay sa boltahe na iyong inaasahan sa input ng ADC. Para sa tutorial na ito, tinatantya namin ang isang 0 - 4.09v kaya gagamit kami ng isang nakakakuha ng 1. Para sa karagdagang impormasyon sa makakuha maaari mong suriin ang ADS1015 / ADS1115 datasheet.
MAKIN = 1
Susunod, kailangan naming lumikha ng mga variable ng array na gagamitin upang maiimbak ang data na mailalagay at isa pang magsisilbing bilang.
Val = cnt = 0
Susunod, ipinaalam namin sa aming hangarin na gawing interactive ang balangkas upang paganahin kaming mabuo ang data nang live.
plt.ion ()
Susunod, sinisimulan namin ang tuluy-tuloy na conversion ng ADC na tumutukoy sa ADC channel, sa kasong ito, ang channel 0 at tinukoy din namin ang nakuha.
Dapat pansinin na ang lahat ng apat na mga channel ng ADC sa ADS1115 ay maaaring mabasa nang sabay, ngunit sapat ang 1 channel para sa demonstrasyong ito.
adc.start_adc (0, makakuha = GAIN)
Susunod na nilikha namin ang isang function def makeFig , upang lumikha at itakda ang mga katangian ng grap na hahawak sa aming live na balangkas. Una sa lahat itinakda namin ang mga limitasyon ng y-axis gamit ang ylim , pagkatapos ay inilalagay namin ang pamagat ng balangkas, at ang pangalan ng label bago namin tukuyin ang data na lalagyan at ang istilo ng plot at kulay nito gamit ang plt.plot (). Maaari din nating sabihin ang channel (tulad ng nakasaad sa channel 0) upang makilala natin ang bawat signal kapag ginagamit ang apat na channel ng ADC. Ginagamit ang plt.legend upang tukuyin kung saan namin nais ang impormasyon tungkol sa signal na iyon (hal. Channel 0) na ipinakita sa figure.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputs') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'ibabang kanan')
Susunod na isinusulat namin ang habang loop na kung saan ay gagamitin na patuloy na basahin ang data mula sa ADC at i-update ang balangkas nang naaayon.
Ang unang bagay na ginagawa namin ay basahin ang halaga ng conversion ng ADC
halaga = adc.get_last_result ()
Susunod na nai-print namin ang halaga sa terminal upang mabigyan kami ng isa pang paraan ng pagkumpirma ng naka-plot na data. Naghihintay kami ng ilang segundo pagkatapos ng pag-print pagkatapos ay idinagdag namin ang data sa listahan (val) na nilikha upang iimbak ang data para sa channel na iyon.
i-print ('Channel 0: {0}'. format (halaga)) oras. pagtulog (0.5) val.append (int (halaga))
Tumawag kami pagkatapos ng drawnow upang i-update ang balangkas.
drawnow (makeFig)
Upang matiyak na ang pinakabagong data ay kung ano ang magagamit sa isang lagay ng lupa, tinatanggal namin ang data sa index 0 pagkatapos ng bawat 50 bilang ng data.
cnt = cnt + 1 kung (cnt> 50): val.pop (0)
Yun lang!
Ang kumpletong Python code ay ibinibigay sa pagtatapos ng tutorial na ito.
Ang Raspberry Pi Oscilloscope sa Aksyon:
Kopyahin ang kumpletong python code at i-paste sa python file na nilikha namin nang mas maaga, tandaan na kakailanganin namin ang isang monitor upang matingnan ang balangkas sa gayon ang lahat ng ito ay dapat gawin ng alinman sa VNC o sa isang konektadong monitor o screen.
I-save ang code at patakbuhin ang paggamit;
sudo python saklaw.py
Kung gumamit ka ng ibang pangalan maliban sa range.py, huwag kalimutang baguhin ito upang tumugma.
Pagkatapos ng ilang minuto, dapat mong makita ang data ng ADC na nakalimbag sa terminal. Paminsan-minsan maaari kang makakuha ng isang babala mula sa matplotlib (tulad ng ipinakita sa imahe sa ibaba) na dapat na pigilan ngunit hindi ito nakakaapekto sa ipinakitang data o ang balak pa rin. Gayunpaman, upang sugpuin ang babala, ang mga sumusunod na linya ng code ay maaaring idagdag pagkatapos ng mga linya ng pag-import sa aming code.
Mag-import ng mga babala mag- import ng matplotlib.cbook babala.filterwarnings ("huwag pansinin", kategorya = matplotlib.cbook.mplDeprecation)
Iyon lang para sa mga tutorial na ito, upang ganap na masubukan ang iyong oscilloscope, maaari mong ikonekta ang isang analog na aparato tulad ng isang potentiometer sa isang channel sa ADC at dapat mong makita ang pagbabago ng data sa bawat pagliko ng potensyomiter. O maaari mong mai-input ang Sine wave o square wave upang subukan ang output.
Salamat sa pagbabasa, kung mayroon kang anumang mga (mga) katanungan o isang bagay na nais mong idagdag ko, mag-iwan lamang ako ng isang puna.
Hanggang sa susunod, Patuloy na gumawa!