
Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-23 14:38

Tento návod vysvětluje, jak vykresluji data snímače teploty DHT11 pomocí Arduino Uno a Raspberry Pi. V tomto teplotním senzoru je připojeno Arduino Uno a Arduino Uno je sériově spojeno s Raspberry Pi. Na Raspberry Pi Side se pro vykreslování grafů používají knihovny matplotlib, numpy a drawnow.
Krok 1: Věci potřebné pro projekt



1. Raspberry Pi
2. Arduino Uno
3. Snímač teploty DHT11
4. Propojovací vodiče
5. Breadboard
Krok 2: Stáhněte a nainstalujte Arduino IDE do Raspberry Pi



Poznámka:- Pro nahrání skici v Arduino UNO můžete použít Arduino IDE Windows, Linux nebo Mac.
Prvním krokem je instalace Arduino IDE pro tento otevřený prohlížeč v Raspberry Pi a otevření níže uvedeného odkazu
Arduino Předchozí IDE
Poté stáhněte verzi Linux ARM a extrahujte ji pomocí příkazu
název souboru tar -xf
Po rozbalení uvidíte nový adresář. Zde používám arduino-1.8.2 IDE. Poté přejděte do adresáře pomocí příkazu.
cd arduino-1.8.1
Chcete-li spustit Arduino IDE, použijte tento příkaz v adresáři arduino-1.8.2
./arduino
Jak používat knihovny
Chcete -li do Arduina nainstalovat libovolné knihovny, jednoduše si knihovnu stáhněte a vložte do složky knihoven arduino 1.8.2 ==>.
POZNÁMKA:-Ujistěte se, že ve složce knihovny není ((DHT-senzor) žádný (-). Pokud existuje (-), přejmenujte jej.
v tomto pokynu použijeme dvě knihovny, DHT_Sensor a Adafruit_Sensor
Krok 3: Kód pro Arduino

Pojďme si nyní promluvit mezi Pythonem a Arduinem. Za prvé potřebujeme jednoduchý program, který umožní Arduinu odesílat data přes sériový port. Následující program je jednoduchý program, který bude mít počet Arduino a odešle data na sériový port.
Arduino kód
#include "DHT.h" float tempC; // Proměnná nebo udržovací teplota v C float tempF; // Proměnná pro udržení teploty ve F float vlhkosti; // Proměnná pro udržení odečtu tlaku
#define DHTPIN 7 // ke kterému digitálnímu pinu jsme připojeni
#define DHTTYPE DHT11 // DHT 11
//#definovat DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#definovat DHTTYPE DHT21 // DHT 21 (AM2301)
// Inicializace snímače DHT.
DHT dht (DHTPIN, DHTTYPE);
neplatné nastavení () {Serial.begin (115200); // zapněte sériový monitor
dht.begin (); // inicializace dht}
void loop () {tempC = dht.readTemperature (); // Nezapomeňte deklarovat proměnné
vlhkost = dht.readHumidity (); // Přečtěte si Vlhkost
Serial.print (tempC);
Serial.print (",");
Sériový tisk (vlhkost);
Serial.print ("\ n"); // for new linedelay (2000); // Pauza mezi čteními. }
Jakmile je skica sestavena, vyberte desku a port a nahrajte ji.
Krok 4: Nastavení Raspberry Pi

Jakmile je kód nahrán, nainstalujte některé knihovny, abychom mohli vykreslit graf dat, která přicházejí sériově z Arduino Uno.
1. PySerial je knihovna, která poskytuje podporu pro sériová připojení přes řadu různých zařízení. Chcete -li jej nainstalovat, použijte příkaz.
Sudo apt-get install python-serial
2. Numpy je balíček, který definuje vícerozměrný objekt pole a související rychlé matematické funkce, které na něm fungují. Poskytuje také jednoduché rutiny pro lineární algebru a FFT (Fast Fourierova transformace) a propracované generování náhodných čísel. Můžete jej nainstalovat mnoha způsoby, buď pomocí balíčku apt nebo pip. Zde instaluji pomocí pipu, protože nejprve musíme nainstalovat pip
sudo apt-get install python-pip python-dev build-essential
sudo pip install numpy
nebo pokud chcete použít balíček apt
sudo apt install python-numpy
3. Matplotlib je 2D vykreslovací knihovna, která poskytuje objektově orientované API pro vkládání grafů do aplikací pomocí obecných nástrojů GUI, jako jsou Tkinter, wxPython, Qt nebo GTK+. Chcete -li jej nainstalovat, použijte příkaz
sudo pip install matplotlib
nebo
sudo apt install python-matplotlib
4. Drawnow se obecně používá k zobrazení výsledků po každé iteraci, protože v MATLABu používáme „imshow“. Chcete -li jej nainstalovat, použijte příkaz
sudo pip install drawnow
Krok 5: Python Scipt


Dalším krokem je napsat skript pythonu, k jehož napsání můžete použít jakýkoli editor.
1. Vykreslení dat do jednoho grafu
import serial # import Serial Library
import numpy # Import numpy
importovat matplotlib.pyplot jako plt #import matplotlib knihovnu
z drawnow import *
tempC = #Prázdná vlhkost pole =
arduino = serial. Serial ("/dev/ttyACM0", 115200)
plt.ion () # interaktivní režim pro vykreslení živého datacount = 0
def makeFig (): #Create a function that makes our desired plot
plt.ylim (20, 30) #Nastavte minimální a maximální hodnoty y
plt.title ('Data DHT11 v reálném čase') #Zadejte název
plt.grid (True) #Zapněte mřížku
plt.ylabel ('Temp C') #Nastavte ylabel
plt.plot (tempC, 'b^-', label = 'Degree C') #vykreslete teplotu
plt.legend (loc = 'vpravo nahoře') #vykreslete legendu
plt2 = plt.twinx () #Vytvořte druhou osu y
plt.ylim (50, 70) #Nastavte limity druhé osy y
plt2.plot (vlhkost, 'g*-', label = 'Vlhkost') #údaje o tlaku v grafu
plt2.set_ylabel ('Vlhkost') #label druhá osa y
plt2.ticklabel_format (useOffset = False)
plt2.legend (loc = 'vlevo nahoře')
while True: # Zatímco smyčka, která smyčky navždy
while (arduino.inWaiting () == 0): #Počkejte zde, dokud nebudou k dispozici data
projít #nedělat nic
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #Rozdělte to do pole
temp = float (dataArray [0])
hum = float (dataArray [1])
tempC.append (temp)
vlhkost. připojit (hukot)
drawnow (makeFig)
plt.pause (.000001)
count = count+1 if (count> 20): #onove take last 20 data if data is more it will pop first
tempC.pop (0)
vlhkost.pop (0)
2. Samostatně vykreslete vlhkost a teplotu
import serial # import Serial Library
import numpy # Import numpy
importovat matplotlib.pyplot jako plt #import matplotlib knihovnu
z drawnow import *
tempC = #Prázdné pole
vlhkost =
arduino = serial. Serial ("/dev/ttyACM0", 115200) #Sériový port, ke kterému je připojeno arduino a přenosová rychlost
plt.ion () #Tell matplotlib you want interactive mode to plot live data
def CreatePlot (): #Create a function that makes our desired plot
plt.subplot (2, 1, 1) #Height, Width, First plot
plt.ylim (22, 34) #Nastavte minimální a maximální hodnoty y
plt.title ('Data DHT11 v reálném čase') #Zadejte název
plt.grid (True) #Zapněte mřížku
plt.ylabel ('Temp C') #Nastavte ylabels
plt.plot (tempC, 'b^-', label = 'Degree C') #vykreslete teplotu
plt.legend (loc = 'horní střed') #vykreslete legendu
plt.subplot (2, 1, 2) # Výška, šířka, druhý graf
plt.grid (True)
plt.ylim (45, 70) #Nastavte limity druhé osy y
plt.plot (vlhkost, 'g*-', label = 'Vlhkost (g/m^3)') #údaje o vlhkosti vykreslení
plt.ylabel ('Vlhkost (g/m^3)') #label druhá osa y
plt.ticklabel_format (useOffset = False) #k zastavení osy y automatického škálování
plt.legend (loc = 'horní střed')
while True: # Zatímco smyčka, která smyčky navždy
while (arduino.inWaiting () == 0): #Wait here until there is data pass #do nothing
arduinoString = arduino.readline () #čtěte data ze sériového portu
dataArray = arduinoString.split (',') #Rozdělte to do pole
temp = float (dataArray [0]) #Převede první prvek na plovoucí číslo a vloží temp
hum = float (dataArray [1]) #Převede druhý prvek na plovoucí číslo a vloží hukot
tempC.append (temp) #Build our tempC array by appending temp reading
vlhkost.připojit (hukot) #Budování našeho pole vlhkosti přidáním čtení hukotu
drawnow (CreatePlot)
plt.pause (.000001)
count = count+1
if (count> 20): #onove take last 20 data if data is more it will pop first
tempC.pop (0) # vyskočí první prvek
vlhkost.pop (0)
Krok 6: Schéma zapojení



Arduino ==> DHT11
3,3 V ==> VCC
GND ==> GND
D7 ==> VENKU
Doporučuje:
Internetové hodiny: Zobrazení data a času pomocí OLED pomocí ESP8266 NodeMCU s protokolem NTP: 6 kroků

Internetové hodiny: Zobrazení data a času pomocí OLED pomocí ESP8266 NodeMCU s protokolem NTP: Ahoj kluci v tomto návodu, postavíme internetové hodiny, které získají čas z internetu, takže tento projekt ke spuštění nebude potřebovat žádný RTC, bude k tomu potřebovat pouze funkční připojení k internetu A pro tento projekt potřebujete esp8266, který bude mít
Jak odeslat data DHT11 na server MySQL pomocí NodeMCU: 6 kroků

Jak odeslat data DHT11 na server MySQL pomocí NodeMCU: V tomto projektu jsme propojili DHT11 s nodemcu a poté odesíláme data dht11, což je vlhkost a teplota, do databáze phpmyadmin
Arduino odesílá data Dht11 na server MySQL (PHPMYADMIN) pomocí Pythonu: 5 kroků

Arduino odesílá data Dht11 na server MySQL (PHPMYADMIN) pomocí Pythonu: V tomto projektu jsem propojil DHT11 s arduino a poté posílám data dht11, což je vlhkost a teplota, do databáze phpmyadmin. Na rozdíl od našeho předchozího projektu v tomto případě nepoužíváme žádný ethernetový štít, zde právě čteme t
Zaznamenávejte data a vykreslete graf online pomocí NodeMCU, MySQL, PHP a Chartjs.org: 4 kroky

Zaznamenávejte data a vykreslete graf online pomocí NodeMCU, MySQL, PHP a Chartjs.org: Tento návod popisuje, jak můžeme použít desku Node MCU ke sběru dat z více senzorů, odeslání těchto dat do hostovaného souboru PHP, který pak data přidá do databáze MySQL. Data lze poté zobrazit online jako graf pomocí chart.js.A ba
Vykreslete 3D obrázky svých desek plošných spojů pomocí Eagle3D a POV-Ray: 5 kroků (s obrázky)

Vykreslování 3D obrázků vašich desek plošných spojů pomocí Eagle3D a POV-Ray: Pomocí Eagle3D a POV-Ray můžete vytvářet realistické 3D vykreslování vašich desek plošných spojů. Eagle3D je skript pro EAGLE Layout Editor. Tím se vygeneruje soubor pro sledování paprsku, který bude odeslán na POV-Ray, který nakonec vyskočí finální im