- Mga Materyal na Kinakailangan
- Panimula sa DS18B20 Temperature Sensor
- Mga Paunang Kinakailangan
- Diagram ng Circuit
- Pag-install ng Adafruit LCD library sa Raspberry P
- Pagpapagana ng One-Wire Interface sa Pi
- Output / Paggawa
Ang Raspberry Pi ay kilala sa computational power at malawak na aplikasyon nito sa larangan ng IoT, Home Automation atbp Gayunpaman para sa anumang elektronikong sistema upang makipag-ugnay sa totoong mundo at makakuha ng impormasyon tungkol dito, kailangang gumamit ng system ang system. Maraming uri ng mga sensor na ginamit para sa prosesong ito at ang kinakailangang sensor ay napili batay sa parameter na susukat at ang aplikasyon nito. Sa tutorial na ito natututunan namin na mag- interface ng isang sensor ng temperatura DS18B20 sa Raspberry Pi.
Ang DS18B20 ay malawakang ginagamit na sensor ng temperatura, higit sa lahat sa mga lugar kung saan nasasangkot ang malupit na mga kapaligiran sa pagpapatakbo tulad ng mga industriya ng kemikal, mga halaman ng minahan atbp. Sasabihin sa artikulong ito ang tungkol sa sensor at kung paano ito lumalabas sa iba pang sensor ng temperatura at sa wakas ay isinama ito sa Raspberry Pi at tingnan ang temperatura halaga sa 16x2 LCD.
Mga Materyal na Kinakailangan
- DS18B20 Temperatura Sensor
- Raspberry Pi
- 16 * 2 LCD display
- 10k trim pot
- 10k Hilahin ang risistor
- Breadboard
- Mga kumokonekta na mga wire
Panimula sa DS18B20 Temperature Sensor
Ang DS18B20 ay isang tatlong terminal temperatura sensor na magagamit sa TO-92 (uri ng transistor) na pakete. Napakadaling gamitin at nangangailangan ng isang panlabas na sangkap lamang upang magsimulang magtrabaho. Gayundin nangangailangan ito ng isang GPIO pin lamang mula sa MCU / MPU upang makipag-usap dito. Ang isang karaniwang sensor ng temperatura ng DS18B20 na may pin na pangalan ay ipinapakita sa ibaba.
Magagamit din ang sensor na ito bilang isang hindi tinatagusan ng tubig na bersyon kung saan ang sensor ay natatakpan ng isang cylindrical metal tube. Sa tutorial na ito gagamitin namin ang normal na sensor ng uri ng transistor na ipinakita sa itaas. Ang DS18B20 ay isang 1-wire na mai-program na temperatura sensor na nangangahulugang nangangailangan lamang ito ng data pin upang maipadala ang impormasyon sa microcontroller o microprocessor boards tulad ng Raspberry Pi. Ang bawat sensor ay may natatanging address ng 64-bit para dito kaya posible ring magkaroon ng maraming sensor na nakakonekta sa parehong MCU / MPU dahil ang bawat sensor ay maaaring direktang mapag-address sa parehong data bus. Ang detalye ng sensor ay ipinapakita sa ibaba.
- Operating boltahe: 3-5V
- Saklaw ng Pagsukat: -55 ° C hanggang + 125 ° C
- Katumpakan: ± 0.5 ° C
- Resolusyon: 9-bit hanggang 12-bit
Ngayong alam na natin ang sapat na ng sensor, ipaalam sa amin ang stat na ihinahatid ito sa Raspberry Pi.
Mga Paunang Kinakailangan
Ipinapalagay na ang iyong Raspberry Pi ay na-flash na gamit ang isang operating system at nakakonekta sa internet. Kung hindi, sundin ang Pagsisimula sa tutorial ng Raspberry Pi bago magpatuloy. Narito ginagamit namin ang Rasbian Jessie na naka-install na Raspberry Pi 3.
Ipinapalagay din na mayroon kang access sa iyong pi alinman sa pamamagitan ng mga windows windows o sa pamamagitan ng iba pang application kung saan maaari kang magsulat at magpatupad ng mga programang sawa at gamitin ang window ng terminal.
Diagram ng Circuit
Tulad ng sinabi namin nang mas maaga sa tutorial na ito mai- interface namin ang sensor ng DS18B20 sa Pi at ipapakita ang halaga ng temperatura sa isang 16 * 2 LCD screen. Kaya't ang sensor at ang LCD ay dapat na konektado sa Raspberry Pi tulad ng palabas sa ibaba.
Sundin ang circuit diagram at gawin ang koneksyon nang naaayon. Parehong gumagana ang LCD at ang sensor ng DS18B20 sa tulong ng + 5V na ibinibigay ng 5V pin sa Raspberry pi. Ang LCD ay ginawa upang gumana sa 4-bit mode na may Raspberry pi, ang mga GPIO pin 18,23,24 at 25 ay ginagamit para sa linya ng data at ang mga GPIO pin 7 at 8 ay ginagamit para sa mga linya ng kontrol. Ginagamit din ang isang potentiometer upang makontrol ang antas ng kaibahan ng LCD. Ang linya ng data ng DS18B20 ay konektado sa GPIO pin 4. Tandaan din na dapat gamitin ang isang 10K risistor hilahin ang data tulad ng mataas na ipakita sa circuit diagram.
Maaari mong sundin ang diagram ng circuit sa itaas at gawin ang mga koneksyon o gamitin ang talahanayan ng pin upang sundin ang mga numero ng GPIO pin.
Itinayo ko ang circuit sa isang breadboard gamit ang solong mga strand wires at lalaki sa mga babaeng wires upang makakonekta. Tulad ng nakikita mo ang sensor ay nangangailangan lamang ng isang wire sa interface at samakatuwid ay sumasakop ng mas kaunting espasyo at mga pin. Ganito ang aking hardware sa ibaba kapag nagawa ang lahat ng mga koneksyon. Ngayon ay oras na upang paandarin ang pi at simulan ang programa.
Pag-install ng Adafruit LCD library sa Raspberry P
Ang halaga ng temperatura ay ipapakita sa isang 16 * 2 LCD display. Nagbibigay sa amin ang Adafruit ng isang library upang madaling mapatakbo ang LCD na ito sa 4-bit mode, kaya idagdag namin ito sa aming Raspberry Pi sa pamamagitan ng pagbubukas sa terminal window Pi at pagsunod sa mga hakbang sa ibaba.
Hakbang 1: I-install ang git sa iyong Raspberry Pi sa pamamagitan ng paggamit sa linya sa ibaba. Pinapayagan ka ng Git na i-clone ang anumang mga file ng proyekto sa Github at gamitin ito sa iyong Raspberry pi. Ang aming library ay nasa Github kaya kailangan naming mag-install ng git upang i-download ang library na iyon sa pi.
apt-get install git
Hakbang 2: Ang mga sumusunod na linya ay nagli-link sa pahina ng GitHub kung saan naroroon ang silid-aklatan isagawa lamang ang linya upang ma-clone ang file ng proyekto sa Pi direktoryo ng bahay
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Hakbang 3: Gamitin ang utos sa ibaba upang baguhin ang linya ng direktoryo, upang makapasok sa file ng proyekto na na-download lamang namin. Ang linya ng utos ay ibinibigay sa ibaba
cd Adafruit_Python_CharLCD
Hakbang 4: Sa loob ng direktoryo magkakaroon ng isang file na tinatawag na setup.py , kailangan naming i-install ito, upang mai-install ang library. Gamitin ang sumusunod na code upang mai-install ang library
sudo python setup.py install
Iyon lamang ang aklatan ay dapat na matagumpay na na-install. Ngayon din na magpatuloy sa pag-install ng library ng DHT na nagmula rin sa Adafruit.
Pagpapagana ng One-Wire Interface sa Pi
Dahil ang sensor ng DS18B20 ay nakikipag-usap sa pamamagitan ng pamamaraang One-Wire, kailangan naming paganahin ang isang komunikasyon sa wire sa Pi sa pamamagitan ng pagsunod sa mga hakbang sa ibaba.
Hakbang 1: - Buksan ang prompt ng Mga Utos at gamitin ang utos sa ibaba upang buksan ang config file
sudo nano /boot/config.txt
Hakbang 2: - Sa loob ng config file idagdag ang linya na " dtoverlay = w1-gpio " (na nakapaloob sa larawan sa ibaba) at i-save ang file tulad ng ipinakita sa ibaba
Hakbang 3: - Gumamit ng Ctrl + X upang lumabas sa file at mai-save ito sa pamamagitan ng pagpindot sa "Y" at pagkatapos ay Enter key. Sa wakas ay muling simulan ang Pi sa pamamagitan ng paggamit ng utos
sudo reboot
Hakbang 4: - Kapag na-reboot, buksan muli ang terminal at ipasok ang mga sumusunod na utos.
sudo modprobe w1– gpio sudo modprobe w1-therm. cd / sys / bus / w1 / mga aparato ls
Magpapakita ang iyong mga windows windows ng katulad nito
Hakbang 5: - Sa pagtatapos ng hakbang 4 kapag nagpasok ka ng ls , magpapakita ang iyong pi ng isang natatanging numero na magkakaiba ang bilang na ito para sa bawat gumagamit, batay sa sensor, ngunit palaging magsisimula sa 28-. Sa aking kaso ang bilang ay 28-03172337caff .
Hakbang 6: - Ngayon maaari naming suriin kung gumagana ang sensor sa pamamagitan ng pagpasok ng mga sumusunod na utos
cd 28-XXXXXXXXXXXX.find ('t =') #find the "t =" in the line if trimmed_data! = -1: temp_string = lines #trim the strig only to the temoerature value temp_c = float (temp_string) / 1000.0 # hatiin ang halagang 1000 upang makakuha ng aktwal na pagbalik ng halaga na temp_c # ibalik ang halaga upang mai-print sa LCD
Ang mga variable na linya ay ginagamit upang basahin ang mga linya sa loob ng file. Pagkatapos ang mga linyang ito ay inihambing na hinanap para sa letrang "t =" at ang halaga pagkatapos ng sulat na iyon ay nai-save sa variable na temp_string . Panghuli upang makuha ang halaga ng temperatura ginagamit namin ang variable temp_c kung saan hinahati namin ang halaga ng string ng 1000. Sa huli ibalik ang temp_c variable bilang isang resulta ng pag-andar.
Sa loob ng walang hanggan habang loop, kailangan lamang nating tawagan ang tinukoy sa itaas na pag-andar upang makuha ang halaga ng temperatura at ipakita ito sa LCD screen. Nilinaw din namin ang LCD para sa bawat 1 sec upang maipakita ang na-update na halaga.
habang 1: #Infinite Loop lcd.clear () #Clear ang LCD screen lcd .message ('Temp =%.1f C'% get_temp ()) # Ipakita ang halaga ng oras ng temperatura. pagtulog (1) # Maghintay para sa 1 sec pagkatapos ay i-update ang mga halaga
Output / Paggawa
Tulad ng dati ang kumpletong code ng sawa ay ibinibigay sa dulo ng pahina, gamitin ang code at ipunin ito sa iyong Raspberry Pi. Gawin ang koneksyon tulad ng ipinakita sa circuit diagram at bago ipatupad ang programa siguraduhing nasundan mo ang mga hakbang sa itaas upang mai-install ang mga LCD header file at paganahin ang isang-wire na komunikasyon sa pi. Kapag tapos na iyon ay ipatupad lamang ang programa, kung ang lahat ay gumagana tulad ng inaasahan na maaari mong mapansin ang intro text. Kung hindi ayusin ang kaibahan potentiometer hanggang sa makita mo ang isang bagay. Ang pangwakas na resulta ay magmukhang ganito sa ibaba.
Inaasahan kong naintindihan mo ang proyekto at walang problema sa pagbuo nito. Kung hindi man ay ipahayag ang iyong problema sa seksyon ng komento o gamitin ang forum para sa higit pang tulong na panteknikal. Ito ay isang proyekto lamang sa pagitan, ngunit kapag tapos na ito maaari kang mag-isip nang maaga sa pamamagitan ng pagtatrabaho sa isang istasyon ng panahon ng Raspberry Pi, tagapagbigay ng temperatura sa E-mail at marami pa.
Ang kumpletong pagtatrabaho ng proyekto ay ipinapakita rin sa video sa ibaba kung saan maaari mong makita ang halaga ng pag-update ng temperatura sa real time.