- Materiale necesare
- Introducere în senzorul de temperatură DS18B20
- Precondiții
- Diagrama circuitului
- Instalarea bibliotecii LCD Adafruit pe Raspberry P
- Activarea interfeței One-Wire în Pi
- Ieșire / funcționare
Raspberry Pi este cunoscut pentru puterea sa de calcul și vasta sa aplicație în domeniul IoT, Home Automation etc. Cu toate acestea, pentru ca orice sistem electronic să interacționeze cu lumea reală și să obțină informații despre aceasta, sistemul trebuie să utilizeze senzori. Există multe tipuri de senzori utilizați pentru acest proces, iar senzorul necesar este selectat pe baza parametrului care trebuie măsurat și a aplicării acestuia. În acest tutorial învățăm să interfațăm un senzor de temperatură DS18B20 cu Raspberry Pi.
DS18B20 este utilizat pe scară largă senzor de temperatură, în special în locurile unde medii dure de operare sunt implicate cum ar fi industria chimică, plante miniere etc. Acest articol va spune despre senzor și modul în care alte senzor de temperatură remarcă și în cele din urmă interfață cu zmeură Pi și a vizualiza temperatura valoare pe ecranul LCD 16x2.
Materiale necesare
- Senzor de temperatură DS18B20
- Raspberry Pi
- Afisaj LCD 16 * 2
- Oală de 10k
- 10k Trageți rezistorul în sus
- Breadboard
- Conectarea firelor
Introducere în senzorul de temperatură DS18B20
DS18B20 este un senzor de temperatură cu trei terminale disponibil în pachetul TO-92 (tip tranzistor). Este foarte ușor de utilizat și necesită o singură componentă externă pentru a începe să funcționeze. De asemenea, necesită doar un pin GPIO de la MCU / MPU pentru a comunica cu acesta. Un senzor de temperatură tipic DS18B20 cu numele pinului este prezentat mai jos.
Acest senzor este, de asemenea, disponibil ca o versiune impermeabilă în care senzorul este acoperit de un tub cilindric din metal. În acest tutorial vom folosi senzorul de tip tranzistor normal care este prezentat mai sus. DS18B20 este un senzor de temperatură de 1 fire programabilă ceea ce înseamnă că necesită doar PIN - ul de date pentru a trimite informații la microcontroler sau microprocesor scândurile, cum ar fi zmeură Pi. Fiecare senzor are o adresă unică de 64 de biți, astfel încât este posibil să aveți mai mulți senzori conectați la același MCU / MPU, deoarece fiecare senzor poate fi adresat individual pe aceeași magistrală de date. Specificațiile senzorului sunt prezentate mai jos.
- Tensiune de funcționare: 3-5V
- Domeniu de măsurare: -55 ° C până la + 125 ° C
- Precizie: ± 0,5 ° C
- Rezoluție: de la 9 biți la 12 biți
Acum, că știm suficient despre senzor, permiteți-ne să îl interfațăm cu Raspberry Pi.
Precondiții
Se presupune că Raspberry Pi este deja intermitent cu un sistem de operare și se poate conecta la internet. Dacă nu, urmați tutorialul Noțiuni introductive despre Raspberry Pi înainte de a continua. Aici folosim Rasbian Jessie instalat Raspberry Pi 3.
Se presupune, de asemenea, că aveți acces la pi-ul dvs. fie prin ferestrele terminalului, fie prin alte aplicații prin care puteți scrie și executa programe python și utiliza fereastra terminalului.
Diagrama circuitului
După cum am spus mai devreme în acest tutorial, vom interfața senzorul DS18B20 cu Pi și vom afișa valoarea temperaturii pe un ecran LCD de 16 * 2. Deci, senzorul și ecranul LCD ar trebui să fie conectate cu Raspberry Pi așa cum se arată mai jos.
Urmați schema circuitului și efectuați conexiunea în consecință. Atât senzorul LCD, cât și senzorul DS18B20 funcționează cu ajutorul + 5V, care este furnizat de pinul de 5V de pe Raspberry pi. Ecranul LCD funcționează în modul 4 biți cu Raspberry pi, pinii GPIO 18,23,24 și 25 sunt utilizați pentru linia de date, iar pinii GPIO 7 și 8 sunt folosiți pentru liniile de control. Un potențiometru este, de asemenea, utilizat pentru a controla nivelul de contrast al ecranului LCD. Linia de date a DS18B20 este conectată la pinul GPIO 4. De asemenea, rețineți că trebuie utilizat un rezistor de 10K, trageți datele la fel de sus, așa cum se arată în diagrama circuitului.
Puteți fie să urmăriți schema de circuit de mai sus și să realizați conexiunile, fie să utilizați tabelul de pin pentru a urmări numerele de pin GPIO.
Am construit circuitul pe o placă de măsurare folosind firele cu un singur fir și firele de la tată la tată pentru a face conexiunile. După cum puteți vedea, senzorul necesită un singur fir pentru interfață și, prin urmare, ocupă mai puțin spațiu și pini. Hardware-ul meu arată așa mai jos atunci când toate conexiunile sunt realizate. Acum este timpul să porniți pi-ul și să începeți programarea.
Instalarea bibliotecii LCD Adafruit pe Raspberry P
Valoarea temperaturii va fi afișată pe un ecran LCD de 16 * 2. Adafruit ne oferă o bibliotecă pentru a opera cu ușurință acest LCD în modul pe 4 biți, așa că permiteți-ne să îl adăugăm la Raspberry Pi deschizând fereastra terminalului Pi și urmând pașii de mai jos.
Pasul 1: Instalați git pe Raspberry Pi utilizând linia de mai jos. Git vă permite să clonați orice fișiere de proiect de pe Github și să le utilizați pe Raspberry pi. Biblioteca noastră este pe Github, deci trebuie să instalăm git pentru a descărca acea bibliotecă în pi.
apt-get install git
Pasul 2: Următoarea linie se leagă de pagina GitHub în care biblioteca este prezentă, pur și simplu executați linia pentru a clona fișierul de proiect în directorul principal Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Pasul 3: Utilizați comanda de mai jos pentru a schimba linia de director, pentru a intra în fișierul de proiect pe care tocmai l-am descărcat. Linia de comandă este dată mai jos
cd Adafruit_Python_CharLCD
Pasul 4: În interiorul directorului va exista un fișier numit setup.py , trebuie să-l instalăm, pentru a instala biblioteca. Utilizați următorul cod pentru a instala biblioteca
sudo python setup.py instalare
Aceasta este biblioteca ar fi trebuit să fie instalată cu succes. Acum, în mod similar, să continuăm cu instalarea bibliotecii DHT, care este, de asemenea, de la Adafruit.
Activarea interfeței One-Wire în Pi
Deoarece senzorul DS18B20 comunică prin metoda One-Wire, trebuie să activăm comunicația cu un singur fir pe Pi urmând pașii de mai jos.
Pasul 1: - Deschideți promptul Comenzi și utilizați comanda de mai jos pentru a deschide fișierul de configurare
sudo nano /boot/config.txt
Pasul 2: - În interiorul fișierului de configurare adăugați linia „ dtoverlay = w1-gpio ” (înconjurată în imaginea de mai jos) și salvați fișierul așa cum se arată mai jos
Pasul 3: - Utilizați Ctrl + X pentru a părăsi fișierul și salvați-l apăsând „Y” și apoi tasta Enter. În cele din urmă, reporniți Pi utilizând comanda
sudo reboot
Pasul 4: - După repornire, deschideți din nou terminalul și introduceți următoarele comenzi.
sudo modprobe w1– gpio sudo modprobe w1-therm. cd / sys / bus / w1 / dispozitive ls
Ferestrele terminalului dvs. vor afișa așa ceva
Pasul 5: - La sfârșitul pasului 4 când introduceți ls , pi-ul dvs. va afișa un număr unic, acest număr va fi diferit pentru fiecare utilizator, pe baza senzorului, dar va începe întotdeauna cu 28-. În cazul meu numărul este 28-03172337caff .
Pasul 6: - Acum putem verifica dacă senzorul funcționează introducând următoarele comenzi
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 # împărțiți valoarea de 1000 pentru a obține valoarea reală returnează temp_c #întoarceți valoarea pentru a imprima pe ecranul LCD
Variabila linii este folosit pentru a citi liniile în interiorul fișierului. Apoi, aceste linii sunt comparate căutate pentru litera „t =” și valoarea după litera respectivă este salvată în variabila temp_string . În cele din urmă pentru a obține valoarea temperaturii folosim variabila temp_c în care împărțim valoarea șirului la 1000. În cele din urmă returnăm variabila temp_c ca rezultat al funcției.
În interiorul buclei infinite while , trebuie doar să apelăm funcția definită mai sus pentru a obține valoarea temperaturii și a o afișa pe ecranul LCD. De asemenea, ștergem ecranul LCD pentru fiecare 1 secunde pentru a afișa valoarea actualizată.
în timp ce 1: #Infinite Loop lcd.clear () # Ștergeți ecranul LCD lcd .message ('Temp =%.1f C'% get_temp ()) # Afișați valoarea timpului de temperatură. sleep (1) # Așteptați 1 sec. apoi actualizați valorile
Ieșire / funcționare
Ca întotdeauna, codul complet Python este dat la sfârșitul paginii, utilizați codul și compilați-l pe Raspberry Pi. Realizați conexiunea așa cum se arată în schema de circuit și înainte de a executa programul, asigurați-vă că ați urmat pașii de mai sus pentru a instala fișierele de antet LCD și pentru a activa comunicația cu un singur fir pe pi. Odată ce ați terminat, pur și simplu executați programul, dacă totul funcționează conform așteptărilor, ar trebui să puteți observa textul introductiv. Dacă nu, reglați potențiometrul de contrast până când vedeți ceva. Rezultatul final va arăta cam așa mai jos.
Sper că ați înțeles proiectul și nu ați avut probleme în construirea acestuia. În caz contrar, specificați problema dvs. în secțiunea de comentarii sau utilizați forumul pentru mai mult ajutor tehnic. Acesta este doar un proiect de interfață, dar odată ce ați făcut acest lucru, puteți gândi mai departe lucrând la o stație meteo Raspberry Pi, notificator de e-mail de temperatură și multe altele.
Funcționarea completă a proiectului este, de asemenea, prezentată în videoclipul de mai jos, unde puteți vedea valoarea temperaturii actualizată în timp real.