- Vereiste materialen
- Inleiding tot DS18B20 temperatuursensor
- Vereisten
- Schakelschema
- De Adafruit LCD-bibliotheek installeren op Raspberry P
- One-Wire Interface inschakelen in Pi
- Output / werken
Raspberry Pi staat bekend om zijn rekenkracht en zijn enorme toepassing op het gebied van IoT, Home Automation etc. Maar om elk elektronisch systeem te laten communiceren met de echte wereld en er informatie over te krijgen, moet het systeem sensoren gebruiken. Er worden veel soorten sensoren gebruikt voor dit proces en de vereiste sensor wordt geselecteerd op basis van de te meten parameter en de toepassing ervan. In deze tutorial leren we om een temperatuursensor DS18B20 te koppelen aan de Raspberry Pi.
De DS18B20 is een veel gebruikte temperatuursensor, voornamelijk op plaatsen waar veeleisende bedrijfsomgevingen betrokken zijn, zoals de chemische industrie, mijnfabrieken, enz. waarde op de 16x2 LCD.
Vereiste materialen
- DS18B20 temperatuursensor
- Raspberry Pi
- 16 * 2 LCD-scherm
- 10k sierpot
- 10k Weerstand optrekken
- Breadboard
- Draden aansluiten
Inleiding tot DS18B20 temperatuursensor
De DS18B20 is een temperatuursensor met drie aansluitingen die verkrijgbaar is in het TO-92-pakket (transistortype). Het is heel gemakkelijk te gebruiken en vereist slechts één extern onderdeel om te kunnen werken. Het vereist ook slechts één GPIO-pin van de MCU / MPU om ermee te communiceren. Een typische DS18B20-temperatuursensor met zijn pennaam wordt hieronder weergegeven.
Deze sensor is ook verkrijgbaar in een waterdichte uitvoering waarbij de sensor is afgedekt door een cilindrische metalen buis. In deze tutorial zullen we de normale sensor van het transistortype gebruiken die hierboven wordt weergegeven. De DS18B20 is een 1-draads programmeerbare temperatuursensor, wat betekent dat hij alleen de datapin nodig heeft om de informatie naar de microcontroller of microprocessorkaarten zoals de Raspberry Pi te sturen. Elke sensor heeft een uniek adres van 64-bit, dus het is ook mogelijk om meerdere sensoren op dezelfde MCU / MPU aan te sluiten, aangezien elke sensor afzonderlijk op dezelfde databus kan worden geadresseerd. De specificatie van de sensor wordt hieronder weergegeven.
- Bedrijfsspanning: 3-5V
- Meetbereik: -55 ° C tot + 125 ° C
- Nauwkeurigheid: ± 0,5 ° C
- Resolutie: 9-bits tot 12-bits
Nu we genoeg van de sensor weten, kunnen we hem koppelen aan Raspberry Pi.
Vereisten
Aangenomen wordt dat uw Raspberry Pi al is geflasht met een besturingssysteem en verbinding kan maken met internet. Als dit niet het geval is, volgt u de handleiding Aan de slag met Raspberry Pi voordat u verder gaat. Hier gebruiken we Rasbian Jessie geïnstalleerde Raspberry Pi 3.
Er wordt ook aangenomen dat je toegang hebt tot je pi via terminalvensters of via een andere applicatie waarmee je Python-programma's kunt schrijven en uitvoeren en het terminalvenster kunt gebruiken.
Schakelschema
Zoals we eerder in deze tutorial hebben verteld, zullen we de DS18B20-sensor verbinden met Pi en de temperatuurwaarde weergeven op een 16 * 2 LCD-scherm. Dus de sensor en het LCD-scherm moeten worden verbonden met Raspberry Pi, zoals hieronder wordt weergegeven.
Volg het schakelschema en breng de aansluiting dienovereenkomstig tot stand. Zowel het LCD- als de DS18B20- sensor werken met behulp van + 5V die wordt geleverd door de 5V-pin op de Raspberry Pi. De LCD is gemaakt om te werken in 4-bit modus met Raspberry pi, de GPIO-pinnen 18,23,24 en 25 worden gebruikt voor de datalijn en de GPIO-pinnen 7 en 8 worden gebruikt voor de besturingslijnen. Een potentiometer wordt ook gebruikt om het contrastniveau van het LCD-scherm te regelen. De datalijn van de DS18B20 is verbonden met GPIO-pin 4. Merk ook op dat een weerstand van 10K moet worden gebruikt om de gegevens zo hoog mogelijk te trekken, zoals blijkt uit het schakelschema.
U kunt het bovenstaande schakelschema volgen en de verbindingen maken of de pintabel gebruiken om de GPIO-pinnummers op te volgen.
Ik heb het circuit op een breadboard gebouwd met behulp van de enkeldraads draden en de mannelijke naar vrouwelijke draden om de verbindingen te maken. Zoals u kunt zien, heeft de sensor slechts één draad nodig om te communiceren en neemt hij dus minder ruimte en pinnen in beslag. Mijn hardware ziet er als volgt uit als alle verbindingen zijn gemaakt. Nu is het tijd om de pi aan te zetten en te beginnen met programmeren.
De Adafruit LCD-bibliotheek installeren op Raspberry P
De waarde van de temperatuur wordt weergegeven op een 16 * 2 LCD-scherm. Adafruit biedt ons een bibliotheek om dit LCD-scherm gemakkelijk in 4-bits modus te bedienen, dus laten we het aan onze Raspberry Pi toevoegen door het terminalvenster Pi te openen en de onderstaande stappen te volgen.
Stap 1: Installeer git op je Raspberry Pi met behulp van de onderstaande regel. Met Git kun je alle projectbestanden op Github klonen en deze op je Raspberry pi gebruiken. Onze bibliotheek staat op Github, dus we moeten git installeren om die bibliotheek naar pi te downloaden.
apt-get install git
Stap 2: De volgende regel linkt naar de GitHub-pagina waar de bibliotheek aanwezig is, voer gewoon de regel uit om het projectbestand in de Pi-homedirectory te klonen
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Stap 3: Gebruik de onderstaande opdracht om de directorylijn te wijzigen, om in het projectbestand te komen dat we zojuist hebben gedownload. De opdrachtregel wordt hieronder gegeven
cd Adafruit_Python_CharLCD
Stap 4: In de directory zal er een bestand zijn met de naam setup.py , we moeten het installeren om de bibliotheek te installeren. Gebruik de volgende code om de bibliotheek te installeren
sudo python setup.py installeren
Dat is het, de bibliotheek had met succes moeten zijn geïnstalleerd. Laten we nu op dezelfde manier doorgaan met het installeren van de DHT-bibliotheek die ook van Adafruit is.
One-Wire Interface inschakelen in Pi
Omdat de DS18B20-sensor communiceert via de One-Wire-methode, moeten we de one-wire-communicatie op Pi inschakelen door de onderstaande stappen te volgen.
Stap 1: - Open de opdrachtprompt en gebruik de onderstaande opdracht om het configuratiebestand te openen
sudo nano /boot/config.txt
Stap 2: - Voeg in het configuratiebestand de regel " dtoverlay = w1-gpio " toe (omcirkeld in onderstaande afbeelding) en sla het bestand op zoals hieronder weergegeven
Stap 3: - Gebruik Ctrl + X om het bestand af te sluiten en sla het op door op "Y" en vervolgens op Enter te drukken. Start de Pi ten slotte opnieuw op met behulp van de opdracht
sudo opnieuw opstarten
Stap 4: - Eenmaal opnieuw opgestart, opent u de terminal opnieuw en voert u de volgende opdrachten in.
sudo modprobe w1 - gpio sudo modprobe w1-therm. cd / sys / bus / w1 / devices ls
Uw terminalvensters zullen zoiets als dit weergeven
Stap 5: - Aan het einde van stap 4 wanneer je ls invoert, zal je pi een uniek nummer weergeven. Dit nummer zal voor elke gebruiker anders zijn, gebaseerd op de sensor, maar zal altijd beginnen met 28-. In mijn geval is het nummer 28-03172337caff .
Stap 6: - Nu kunnen we controleren of de sensor werkt door de volgende commando's in te voeren
cd 28-XXXXXXXXXXXX.find ('t =') #vind de "t =" in de regel if trimmed_data! = -1: temp_string = regels #trim de strig alleen naar de temperatuurwaarde temp_c = float (temp_string) / 1000.0 # deel de waarde van 1000 om de werkelijke waarde terug te krijgen temp_c #return de waarde die op het LCD-scherm moet worden afgedrukt
De variabele regels worden gebruikt om de regels in het bestand te lezen. Vervolgens worden deze regels vergeleken, gezocht op de letter "t =" en de waarde na die letter wordt opgeslagen in de variabele temp_string . Om de waarde van temperatuur te krijgen, gebruiken we tenslotte de variabele temp_c waarin we de tekenreekswaarde delen door 1000. Uiteindelijk retourneren we de variabele temp_c als resultaat van de functie.
Binnen de oneindige while- lus hoeven we alleen de hierboven gedefinieerde functie aan te roepen om de waarde van de temperatuur te krijgen en deze op het LCD-scherm weer te geven. We maken ook het LCD-scherm elke seconde leeg om de bijgewerkte waarde weer te geven.
while 1: #Infinite Loop lcd.clear () #Clear the LCD screen lcd .message ('Temp =%.1f C'% get_temp ()) # Geef de waarde van temperatuur time.sleep (1) #Wacht 1 seconde werk vervolgens de waarden bij
Output / werken
Zoals altijd staat de volledige python-code aan het einde van de pagina, gebruik de code en compileer deze op je Raspberry Pi. Maak de verbinding zoals weergegeven in het schakelschema en zorg ervoor dat u, voordat u het programma uitvoert, de bovenstaande stappen hebt gevolgd om LCD-headerbestanden te installeren en eendraadscommunicatie op pi mogelijk te maken. Zodra dat is gebeurd, voert u gewoon het programma uit, als alles werkt zoals verwacht, zou u de intro-tekst moeten kunnen opmerken. Pas anders de contrastpotentiometer aan totdat u iets ziet. Het uiteindelijke resultaat ziet er hieronder ongeveer zo uit.
Ik hoop dat je het project begreep en er geen probleem mee had om het te bouwen. Geef anders uw probleem aan in het commentaargedeelte of gebruik het forum voor meer technische hulp. Dit is slechts een interfaceproject, maar als dit eenmaal is gebeurd, kunt u vooruit denken door te werken aan een Raspberry Pi-weerstation, temperatuur-e-mailmelder en nog veel meer.
De volledige werking van het project wordt ook getoond in de onderstaande video, waar u kunt zien hoe de temperatuurwaarde in realtime wordt bijgewerkt.