Inhaltsverzeichnis:
- Schritt 1: Für das Projekt benötigte Dinge
- Schritt 2: Arduino IDE in Raspberry Pi herunterladen und installieren
- Schritt 3: Code für Arduino
- Schritt 4: Raspberry Pi einrichten
- Schritt 5: Python-Skript
- Schritt 6: Schaltplan
- Schritt 7: Ergebnis
Video: Plotten von DHT11-Daten mit Raspberry Pi und Arduino UNO - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Dieses anweisbare erklärt, wie ich Temperatursensor-DHT11-Daten mit Arduino Uno und Raspberry Pi zeichne. In diesem ist der Temperatursensor mit Arduino Uno verbunden und Arduino Uno ist seriell mit Raspberry Pi verbunden. Auf Raspberry Pi Side werden Matplotlib-, Numpy- und Drawow-Bibliotheken verwendet, um Graphen zu zeichnen.
Schritt 1: Für das Projekt benötigte Dinge
1. Himbeer-Pi
2. Arduino Uno
3. DHT11 Temperatursensor
4. Überbrückungsdrähte
5. Steckbrett
Schritt 2: Arduino IDE in Raspberry Pi herunterladen und installieren
Hinweis: - Sie können die Arduino IDE von Windows, Linux oder Mac verwenden, um eine Skizze in Arduino UNO hochzuladen.
Der erste Schritt besteht darin, die Arduino IDE für diesen offenen Browser in Raspberry Pi zu installieren und den unten angegebenen Link zu öffnen
Arduino Vorherige IDE
Laden Sie dann die Linux ARM-Version herunter und extrahieren Sie sie mit dem Befehl
tar -xf Dateiname
Nach dem Entpacken sehen Sie ein neues Verzeichnis. Hier verwende ich arduino-1.8.2 IDE. Gehen Sie dann mit dem Befehl zum Verzeichnis.
cd arduino-1.8.1
Um Arduino IDE auszuführen, verwenden Sie diesen Befehl im Verzeichnis arduino-1.8.2
./arduino
So verwenden Sie Bibliotheken
Um Bibliotheken in Arduino zu installieren, laden Sie einfach die Bibliothek herunter und fügen Sie sie in arduino 1.8.2 ==> Bibliotheken ein.
HINWEIS:- Stellen Sie sicher, dass kein (-) im Bibliotheksordner für ex (DHT-Sensor) vorhanden ist. Wenn ein (-) vorhanden ist, benennen Sie es um.
Wir werden zwei Bibliotheken in diesem instructable verwenden, DHT_Sensor und Adafruit_Sensor
Schritt 3: Code für Arduino
Lassen Sie uns Python und Arduino miteinander sprechen. Zuerst brauchen wir ein einfaches Programm, um den Arduino zu empfangen, der Daten über den seriellen Port sendet. Das folgende Programm ist ein einfaches Programm, das die Arduino-Zählung hat und die Daten an den seriellen Port sendet.
Arduino-Code
#include "DHT.h" float tempC; // Variable oder Haltetemperatur in C float tempF; // Variable für Haltetemperatur in F float Feuchte; //Variable für Haltedruckmessung
#define DHTPIN 7 // mit welchem digitalen Pin wir verbunden sind
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT21 (AM2301)
// DHT-Sensor initialisieren.
DHT dht(DHTPIN, DHTTYPE);
Void setup () {Serial.begin (115200); // seriellen Monitor einschalten
dht.begin(); // dht initialisieren}
Void Schleife () {tempC = dht.readTemperature (); // Stellen Sie sicher, dass Sie Ihre Variablen deklarieren
Feuchtigkeit = dht.readHumidity(); // Luftfeuchtigkeit lesen
Serial.print (tempC);
Serial.print (", ");
Serial.print (Luftfeuchtigkeit);
Serial.print("\n"); // für neue Zeilenverzögerung (2000); // Pause zwischen den Lesungen. }
Sobald die Skizze kompiliert ist, wählen Sie Board und Port aus und laden Sie sie hoch.
Schritt 4: Raspberry Pi einrichten
Sobald der Code hochgeladen wurde, installieren Sie einige Bibliotheken, damit wir Datendiagramme zeichnen können, die seriell von Arduino Uno stammen.
1. PySerial ist eine Bibliothek, die serielle Verbindungen über eine Vielzahl verschiedener Geräte unterstützt. Um es zu installieren, verwenden Sie den Befehl.
Sudo apt-get install python-serial
2. Numpy ist ein Paket, das ein mehrdimensionales Array-Objekt und zugehörige schnelle mathematische Funktionen definiert, die darauf operieren. Es bietet auch einfache Routinen für lineare Algebra und FFT (Fast Fourier Transform) sowie eine ausgeklügelte Zufallszahlengenerierung. Sie können es auf viele Arten installieren, entweder mit dem apt-Paket oder mit pip. Hier installiere ich mit pip, dafür müssen wir zuerst pip installieren
sudo apt-get install python-pip python-dev build-essential
sudo pip install numpy
oder wenn Sie das apt-Paket verwenden möchten
sudo apt installiere python-numpy
3. Matplotlib ist eine 2D-Plotting-Bibliothek, die eine objektorientierte API zum Einbetten von Plots in Anwendungen mit universellen GUI-Toolkits wie Tkinter, wxPython, Qt oder GTK+ bietet. Um es zu installieren, verwenden Sie den Befehl
sudo pip install matplotlib
oder
sudo apt installiere python-matplotlib
4. Drawnow wird im Allgemeinen verwendet, um die Ergebnisse nach jeder Iteration anzuzeigen, da wir in MATLAB "imshow" verwenden. Um es zu installieren, verwenden Sie den Befehl
sudo pip install drawow
Schritt 5: Python-Skript
Der nächste Schritt besteht darin, ein Python-Skript zu schreiben, das Sie mit einem beliebigen Editor schreiben können.
1. Daten in einem Diagramm darstellen
Seriennummer importieren # Seriennummernbibliothek importieren
import numpy # Import numpy
import matplotlib.pyplot als plt #import matplotlib library
aus gezeichnetem Import *
tempC = #Empty arrayhumidity =
arduino = serial. Serial("/dev/ttyACM0", 115200)
plt.ion() # interaktiver Modus zum Zeichnen von Live-Datenanzahl = 0
def makeFig(): #Erstelle eine Funktion, die unseren gewünschten Plot erstellt
plt.ylim(20, 30) #Setze y Min- und Max-Werte
plt.title('Echtzeit-DHT11-Daten') #Plot the title
plt.grid(True) #Schalte das Raster ein
plt.ylabel('Temp C') #Setze ylabel
plt.plot(tempC, 'b^-', label='Grad C') #Zeige die Temperatur
plt.legend(loc='oben rechts') #plot the legend
plt2=plt.twinx() #Erzeuge eine zweite y-Achse
plt.ylim(50, 70) #Setze Grenzen der zweiten y-Achse
plt2.plot(humidity, 'g*-', label='Humidity') #Druckdaten auftragen
plt2.set_ylabel('Feuchtigkeit') #label zweite y-Achse
plt2.ticklabel_format(useOffset=False)
plt2.legend(loc='oben links')
while True: # While-Schleife, die ewig wiederholt wird
while (arduino.inWaiting()==0): #Warten Sie hier, bis Daten vorhanden sind
pass #nichts tun
arduinoString = arduino.readline()
dataArray = arduinoString.split(', ') #Split es in ein Array
temp = float(dataArray[0])
summen = float(dataArray[1])
tempC.append(temp)
feuchtigkeit.anhängen(brummen)
gezeichnet (machenFig)
plt.pause(.000001)
count=count+1 if(count>20): #Nur die letzten 20 Daten nehmen, wenn mehr Daten vorhanden sind, werden sie zuerst angezeigt
tempC.pop(0)
feuchtigkeit.pop(0)
2. Um Feuchtigkeit und Temperatur getrennt darzustellen
Seriennummer importieren # Seriennummernbibliothek importieren
import numpy # Import numpy
import matplotlib.pyplot als plt #import matplotlib library
aus gezeichnetem Import *
tempC = #Leeres Array
Luftfeuchtigkeit =
arduino = serial. Serial("/dev/ttyACM0", 115200) #Serieller Port, an den arduino angeschlossen ist und Baudrate
plt.ion() #Sagen Sie matplotlib, dass Sie den interaktiven Modus zum Zeichnen von Live-Daten wünschen
def CreatePlot(): #Erstelle eine Funktion, die unseren gewünschten Plot erstellt
plt.subplot(2, 1, 1) #Höhe, Breite, Erster Plot
plt.ylim(22, 34) #Setze y Min- und Max-Werte
plt.title('Echtzeit-DHT11-Daten') #Plot the title
plt.grid(True) #Schalte das Raster ein
plt.ylabel('Temp C') #Ylabels setzen
plt.plot(tempC, 'b^-', label='Grad C') #Zeige die Temperatur
plt.legend(loc='upper center') #plot the legend
plt.subplot(2, 1, 2) # Höhe, Breite, Zweiter Plot
plt.grid(Wahr)
plt.ylim(45, 70) #Setze Grenzen der zweiten y-Achse
plt.plot(humidity, 'g*-', label='Humidity (g/m^3)') #plot Luftfeuchtigkeitsdaten
plt.ylabel('Feuchtigkeit (g/m^3)') #label zweite y-Achse
plt.ticklabel_format(useOffset=False) #um die automatische Skalierung der y-Achse zu stoppen
plt.legend(loc='obere Mitte')
while True: # While-Schleife, die ewig wiederholt wird
while (arduino.inWaiting()==0): #Warten Sie hier, bis Daten passieren #nichts machen
arduinoString = arduino.readline() #lesen Sie die Daten vom seriellen Port
dataArray = arduinoString.split(', ') #Split es in ein Array
temp = float(dataArray[0]) #Konvertieren Sie das erste Element in eine Gleitzahl und geben Sie temp. ein
hum = float(dataArray[1]) #Konvertieren Sie das zweite Element in eine Gleitzahl und setzen Sie hum
tempC.append(temp) #Erstellen Sie unser tempC-Array, indem Sie den Temperaturwert anhängen
feucht.append(hum) #Aufbau unseres Feuchte-Arrays durch Anhängen des Brummwerts
drawow(CreatePlot)
plt.pause(.000001)
zählen=zählen+1
if(count>20): #Nur die letzten 20 Daten nehmen, wenn die Daten größer sind, werden sie zuerst angezeigt
tempC.pop(0) # erstes Element herausspringen
feuchtigkeit.pop(0)
Schritt 6: Schaltplan
Arduino ==> DHT11
3.3V ==> VCC
GND ==> GND
D7 ==> AUS
Empfohlen:
Löten von oberflächenmontierbaren Komponenten - Lötgrundlagen: 9 Schritte (mit Bildern)
Löten von oberflächenmontierbaren Komponenten | Lötgrundlagen: Bisher habe ich in meiner Lötgrundlagen-Serie genug Grundlagen zum Löten besprochen, damit Sie mit dem Üben beginnen können. In diesem Instructable, was ich besprechen werde, ist etwas fortgeschrittener, aber es sind einige der Grundlagen zum Löten von Surface Mount Compo
Durchlöten von Komponenten - Lötgrundlagen: 8 Schritte (mit Bildern)
Löten von Durchgangslochkomponenten | Lötgrundlagen: In diesem Instructable werde ich einige Grundlagen zum Löten von Durchgangslochkomponenten auf Leiterplatten diskutieren. Ich gehe davon aus, dass Sie bereits die ersten 2 Instructables für meine Lötgrundlagen-Serie ausgecheckt haben. Wenn Sie nicht in meinem In
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
MyPhotometrics - Gandalf: Leistungsmessgerät Zur Messung Von Lasern Im Sichtbaren Bereich Auf Basis Von "Sauron": 8 Schritte
MyPhotometrics - Gandalf: Leistungsmessgerät Zur Messung Von Lasern Im Sichtbaren Bereich Auf Basis Von "Sauron": Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz. Eine für Menschen lesbare Zusammenfassung dieser Lizenz findet sich hier.Was ist Gandalf?Gandalf ist eine Stand-A
Arduino ProtoShield von "Haushalt" Artikel (<5$): 9 Schritte (mit Bildern)
Arduino ProtoShield von "Haushalt" Artikel (<5$): Ich liebe mein Arduino. Es hat mich in die Mikrocontroller-Programmierung hineingezogen und daran gefesselt. Ich mag auch die Erweiterbarkeit, die Schilde bieten. Mein Arduino kann eine Minute lang ein GPS-Locator sein und in der nächsten mit dem Internet verbunden sein. Es gibt auch ein Kit, mit dem Sie m