Vykreslite údaje DHT11 pomocou Raspberry Pi a Arduino UNO: 7 krokov
Vykreslite údaje DHT11 pomocou Raspberry Pi a Arduino UNO: 7 krokov
Anonim
Vykreslite údaje DHT11 pomocou Raspberry Pi a Arduino UNO
Vykreslite údaje DHT11 pomocou Raspberry Pi a Arduino UNO

Tento návod vysvetľuje, ako vykreslím údaje snímača teploty DHT11 pomocou Arduino Uno a Raspberry Pi. V tomto je snímač teploty spojený s Arduino Uno a Arduino Uno je zapojený sériovo s Raspberry Pi. Na Raspberry Pi Side sa na vykresľovanie grafov používajú knižnice matplotlib, numpy a drawnow.

Krok 1: Veci potrebné pre projekt

Veci potrebné pre projekt
Veci potrebné pre projekt
Veci potrebné pre projekt
Veci potrebné pre projekt
Veci potrebné pre projekt
Veci potrebné pre projekt

1. Raspberry Pi

2. Arduino Uno

3. Snímač teploty DHT11

4. Prepojovacie vodiče

5. Breadboard

Krok 2: Stiahnite a nainštalujte Arduino IDE do Raspberry Pi

Stiahnite si a nainštalujte Arduino IDE do Raspberry Pi
Stiahnite si a nainštalujte Arduino IDE do Raspberry Pi
Stiahnite si a nainštalujte Arduino IDE do Raspberry Pi
Stiahnite si a nainštalujte Arduino IDE do Raspberry Pi
Stiahnite si a nainštalujte Arduino IDE do Raspberry Pi
Stiahnite si a nainštalujte Arduino IDE do Raspberry Pi

Poznámka:- Na nahrávanie skíc v Arduino UNO môžete použiť Arduino IDE Windows, Linux alebo Mac.

Prvým krokom je inštalácia Arduino IDE pre tento otvorený prehliadač v Raspberry Pi a otvorenie nižšie uvedeného odkazu

Arduino Predchádzajúce IDE

Potom si stiahnite verziu Linux ARM a extrahujte ju pomocou príkazu

názov súboru tar -xf

Po rozbalení uvidíte nový adresár. Tu používam arduino-1.8.2 IDE. Potom prejdite do adresára pomocou príkazu.

cd arduino-1.8.1

Na spustenie Arduino IDE použite tento príkaz v adresári arduino-1.8.2

./arduino

Ako používať knižnice

Ak chcete do Arduina nainštalovať akékoľvek knižnice, jednoducho si stiahnite knižnicu a vložte ju do priečinka arduino 1.8.2 ==> libraries.

POZNÁMKA:-Uistite sa, že v priečinku knižnice nie je ((snímač DHT)). Ak existuje (-), premenujte ho.

v tomto návode použijeme dve knižnice, DHT_Sensor a Adafruit_Sensor

Krok 3: Kód pre Arduino

Kód pre Arduino
Kód pre Arduino

Teraz nechajme hovoriť python a Arduino. Najprv potrebujeme jednoduchý program na prenos údajov Arduino cez sériový port. Nasledujúci program je jednoduchý program, ktorý bude počítať Arduino a odosielať údaje na sériový port.

Arduino kód

#include "DHT.h" float tempC; // Variabilná alebo udržiavacia teplota v C float tempF; // Premenná na udržanie teploty vo F plavákovej vlhkosti; // Premenná na udržanie čítania tlaku

#define DHTPIN 7 // k akému digitálnemu pinu sme pripojení

#define DHTTYPE DHT11 // DHT 11

//#definujte DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#definujte DHTTYPE DHT21 // DHT 21 (AM2301)

// Inicializácia snímača DHT.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // zapnite sériový monitor

dht.begin (); // inicializácia dht}

void loop () {tempC = dht.readTemperature (); // Nezabudnite deklarovať svoje premenné

vlhkosť = dht.readHumidity (); // Prečítajte si Vlhkosť

Serial.print (tempC);

Serial.print (",");

Sériový tlač (vlhkosť);

Serial.print ("\ n"); // for new linedelay (2000); // Pauza medzi čítaniami. }

Akonáhle je skica zostavená, vyberte nástenku a port a nahrajte ju.

Krok 4: Nastavte Raspberry Pi

Nastavte Raspberry Pi
Nastavte Raspberry Pi

Po nahraní kódu nainštalujte niektoré knižnice, aby sme mohli vykresliť graf údajov, ktoré prichádzajú sériovo z Arduino Uno.

1. PySerial je knižnica, ktorá poskytuje podporu pre sériové pripojenia cez množstvo rôznych zariadení. Ak ho chcete nainštalovať, použite príkaz.

Sudo apt-get install python-serial

2. Numpy je balík, ktorý definuje viacrozmerný objekt poľa a súvisiace rýchle matematické funkcie, ktoré na ňom pôsobia. Poskytuje tiež jednoduché rutiny pre lineárnu algebru a FFT (Fast Fourierova transformácia) a sofistikované generovanie náhodných čísel. Môžete ho nainštalovať mnohými spôsobmi, buď pomocou balíka apt alebo pip. Tu inštalujem pomocou pipu, pretože najskôr musíme nainštalovať pip

sudo apt-get install python-pip python-dev build-essential

sudo pip install numpy

alebo ak chcete použiť balík apt

sudo apt install python-numpy

3. Matplotlib je 2D grafická knižnica, ktorá poskytuje objektovo orientované API na vkladanie grafov do aplikácií pomocou univerzálnych nástrojov GUI ako Tkinter, wxPython, Qt alebo GTK+. Ak ho chcete nainštalovať, použite príkaz

sudo pip install matplotlib

alebo

sudo apt install python-matplotlib

4. Drawnow sa spravidla používa na zobrazenie výsledkov po každej iterácii, pretože v programe MATLAB používame „imshow“. Ak ho chcete nainštalovať, použite príkaz

sudo pip install drawnow

Krok 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Ďalším krokom je napísať skript pythonu, na ktorého napísanie môžete použiť ľubovoľný editor.

1. Vykreslite údaje do jedného grafu

import serial # import Serial Library

import numpy # Import numpy

importujte matplotlib.pyplot ako plt #import knižnicu matplotlib

z drawnow importu *

tempC = #Prázdna vlhkosť poľa =

arduino = serial. Serial ("/dev/ttyACM0", 115200)

plt.ion () # interaktívny režim na vykreslenie aktuálneho počtu údajov = 0

def makeFig (): #Vytvorte funkciu, ktorá vytvorí požadovaný graf

plt.ylim (20, 30) #Nastavte min. a max. hodnoty

plt.title ('Údaje DHT11 v reálnom čase') #Uveďte názov

plt.grid (True) #Zapnite mriežku

plt.ylabel ('Teplota C') #Nastavte ylabel

plt.plot (tempC, 'b^-', label = 'Degree C') #plot the temperature

plt.legend (loc = 'vpravo hore') #vykreslite legendu

plt2 = plt.twinx () #Vytvorte druhú os y

plt.ylim (50, 70) #Nastavte limity druhej osi y

plt2.plot (vlhkosť, 'g*-', štítok = 'Vlhkosť') #údaje o tlaku v grafe

plt2.set_ylabel ('Vlhkosť') #štítok druhá os y

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'vľavo hore')

while True: # Slučka, ktorá sa opakuje navždy

while (arduino.inWaiting () == 0): #Počkajte tu, kým nebudú k dispozícii údaje

odovzdať #nič

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Rozdeľte ho do poľa

temp = float (dataArray [0])

brum = float (dataArray [1])

tempC.append (temp)

vlhkosť. pridať (hukot)

drawnow (makeFig)

plt.pause (.000001)

count = count+1 if (count> 20): #only take last 20 data if data is more it will pop first

tempC.pop (0)

vlhkosť.pop (0)

2. Na vykreslenie vlhkosti a teploty oddelene

import serial # import Serial Library

import numpy # Import numpy

importujte matplotlib.pyplot ako plt #import knižnicu matplotlib

z drawnow importu *

tempC = #Prázdne pole

vlhkosť =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #Sériový port, ku ktorému je pripojené arduino a prenosová rýchlosť

plt.ion () #Povedzte matplotlib, že chcete, aby interaktívny režim vykresľoval živé údaje

def CreatePlot (): #Create a function that makes our desired plot

plt.subplot (2, 1, 1) #Hight, Width, First plot

plt.ylim (22, 34) #Nastavte min. a max. hodnoty

plt.title ('Údaje DHT11 v reálnom čase') #Uveďte názov

plt.grid (True) #Zapnite mriežku

plt.ylabel ('Teplota C') #Nastavte ylabels

plt.plot (tempC, 'b^-', label = 'Degree C') #plot the temperature

plt.legend (loc = 'horný stred') #vykreslite legendu

plt.subplot (2, 1, 2) # Výška, šírka, druhý graf

plt.grid (pravda)

plt.ylim (45, 70) #Nastavte limity druhej osi y

plt.plot (vlhkosť, 'g*-', label = 'Vlhkosť (g/m^3)') #údaje o vlhkosti grafu

plt.ylabel ('Vlhkosť (g/m^3)') #štítok druhá os y

plt.ticklabel_format (useOffset = False) #zastavenie automatickej mierky osi y

plt.legend (loc = 'horný stred')

while True: # Zatiaľ čo slučka, ktorá sa opakuje navždy

while (arduino.inWaiting () == 0): #Wait here until there is data pass #do nothing

arduinoString = arduino.readline () #prečítajte si údaje zo sériového portu

dataArray = arduinoString.split (',') #Rozdeľte ho do poľa

temp = float (dataArray [0]) #Previesť prvý prvok na plávajúce číslo a vložiť do temp

hum = float (dataArray [1]) #Previesť druhý prvok na plávajúce číslo a vložiť hukot

tempC.append (temp) #Build our tempC array by appending temp reading

vlhkost.prijať (hukot) #Budovanie nášho poľa vlhkosti pridaním čítania hukotu

drawnow (CreatePlot)

plt.pause (.000001)

count = count+1

if (count> 20): #only take last 20 data if data is more that will pop first

tempC.pop (0) # vysunie prvý prvok

vlhkosť.pop (0)

Krok 6: Schéma zapojenia

Schéma zapojenia
Schéma zapojenia
Schéma zapojenia
Schéma zapojenia
Schéma zapojenia
Schéma zapojenia

Arduino ==> DHT11

3,3 V ==> VCC

GND ==> GND

D7 ==> OUT

Odporúča: