Inhaltsverzeichnis:

Lichtintensitäts-Plotting mit Arduino und Pythons Arduino Master Library - Gunook
Lichtintensitäts-Plotting mit Arduino und Pythons Arduino Master Library - Gunook

Video: Lichtintensitäts-Plotting mit Arduino und Pythons Arduino Master Library - Gunook

Video: Lichtintensitäts-Plotting mit Arduino und Pythons Arduino Master Library - Gunook
Video: Как спрятать данные в ячейках Excel? 2024, November
Anonim
Lichtintensitäts-Plotting mit Arduino und Pythons Arduino Master Library
Lichtintensitäts-Plotting mit Arduino und Pythons Arduino Master Library

Arduino ist ein wirtschaftliches, aber hocheffizientes und funktionales Werkzeug. Die Programmierung in Embedded C macht den Prozess der Erstellung von Projekten mühsam! Das Arduino_Master-Modul von Python vereinfacht dies und ermöglicht es uns, Berechnungen durchzuführen, Müllwerte zu entfernen und ein Diagramm für eine visuelle Darstellung von Daten zu zeichnen.

Wenn Sie dieses Modul noch nicht kennen, installieren Sie es mit dem Befehl pip install Arduino_Master

Machen Sie sich keine Sorgen, wenn Sie nicht wissen, wie man dieses Modul verwendet, besuchen Sie diesen Link => Arduino_Master

Der Code für dieses Projekt wird jedoch immer in diesem instructable verfügbar sein.

Lieferungen

Für dieses Projekt benötigen Sie Folgendes:

  1. Ein Arduino
  2. Ein lichtabhängiger Widerstand (LDR) und
  3. Python 3 auf Ihrem Computer installiert.

Schritt 1: Aufbau Ihrer Schaltung:

Bauen Sie Ihre Schaltung auf
Bauen Sie Ihre Schaltung auf

Wir verwenden Pin A1 von Arduino, um Eingangsdaten zu erhalten. Sie können anstelle der Batterie auch die 5V- und GND-Pins von Arduino verwenden. Stellen Sie die Verbindung wie folgt her:

  1. Verbinden Sie ein Ende des LDR mit dem Pluspol einer 5V-Batterie oder mit dem 5V-Pin des Arduino.
  2. Verbinden Sie das andere Ende des LDR parallel mit Pin A1 und dem Minuspol der Batterie oder dem GND-Pin von Arduino.
  3. Verwenden Sie einen Widerstand, um sicherzustellen, dass nicht der gesamte Strom zum GND fließt, was dazu führen würde, dass Sie kein stark genug Signal erhalten, um am A1-Anschluss des Arduino zu erkennen. (Verwende einen Widerstand von 10k Ohm).

Schritt 2: Programmierung Ihres Arduino:

Das Arduino_Master-Modul verwendet den seriellen Monitor des Arduino, um Daten zu senden und zu empfangen. Der Vorteil bei der Verwendung dieses Moduls besteht darin, dass Sie nach der Programmierung Ihres Arduino das Python-Programm allein für verschiedene Projekte ändern können, da die Programmierung in Python vergleichsweise einfacher ist!

Code:

// Die Variable LDR_1 wird verwendet, um Pin A1 von Arduino zu bezeichnen.

int LDR_1 = A1;

// Von A1 empfangene Daten werden in LDR_Value_1 gespeichert.

float LDR_Value_1;

String-Eingabe;

Void-Setup ()

{ PinMode (LDR_1, EINGANG); // LDR_1 ist als INPUT-Pin eingestellt. Serial.begin (9600); // Kommunikationsbaudrate ist auf 9600 eingestellt. }

Leere Schleife ()

{ if(Serial.available()>0) // Wenn eine Eingabe im seriellen Monitor verfügbar ist, fahren Sie fort. { input=Seriell.readString(); // Lesen Sie die Eingabe als String. if(input=="DATA") { LDR_Value_1=analogRead(LDR_1) * (5.0 / 1023.0); // (5 / 1023) ist der Umrechnungsfaktor, um den Wert in Volt zu erhalten. Serial.println (LDR_Value_1); // Wenn die Eingabe gleich "DATA" ist, dann lesen Sie die Eingabe von LDR_1 und drucken Sie sie auf dem Serial Monitor. } sonst int i=0; // wenn Eingabe nicht gleich "DATA" ist, nichts tun! }

}

Schritt 3: Programmieren von Python zur grafischen Darstellung von Daten von Arduino:

Jeder einzelne LDR hätte seine eigenen Widerstandswerte und wir müssen bedenken, dass keine elektronischen Komponenten jemals exakt gleich in der Funktion sind. Daher müssen wir zunächst die Spannung bei verschiedenen Lichtintensitäten ermitteln.

Laden Sie das folgende Programm in Ihre Python-IDE hoch und führen Sie es aus:

Tun Sie dies für verschiedene Lichtintensitäten und ziehen Sie anhand des Diagramms eine Schlussfolgerung, beispielsweise wenn die Intensität kleiner als 1 ist, ist der Raum zu dunkel. Bei Intensitäten zwischen 1 und 2 ist der Raum ziemlich dunkel. Bei einer Intensität größer 2 wird das Licht eingeschaltet.

# Importieren des Arduino_Master-Moduls

aus Arduino_Master-Import *

# Daten sammeln

data=filter(ardata(8, Squeeze=False, dynamic=True, msg="DATA", lines=30), Expected_type='num', limit=[0, 5])

# limit ist auf 5 gesetzt, da wir eine 5-V-Batterie verwenden.

# Plotten der Werte

Graph(data, stl='dark_background', label='Lichtintensität')

Schritt 4: Abschließendes Programm zur Überprüfung der Lichtintensität in einem Raum

Nachdem Sie aus den erhaltenen Daten eine Schlussfolgerung gezogen haben, laden Sie das folgende Programm hoch und stellen Sie sicher, dass Sie die Limits gemäß Ihrer Schlussfolgerung ändern.

# Importieren des Arduino_Master-Moduls

aus Arduino_Master importieren # Daten sammeln data=filter(ardata(8, Squeeze=False, dynamic=True, msg="DATA", lines=50), Expected_type='num', limit=[0, 5]) #Daten klassifizieren basierend auf der Schlussfolgerung info= für i in range(len(data)): Intensität=data wenn Intensität 1 und Intensität=2: info.append('Light ON') # Plotten des Graphen. compGraph(data, info, stl='dark_background', label1='Light Intensity', label2='State')

Schritt 5: Ergebnis:

Ergebnis
Ergebnis

Das Programm würde ein oder zwei Minuten dauern, da Sie 50 Momentanwerte von Arduino lesen.

Wenn Sie den Vorgang beschleunigen möchten, versuchen Sie, den Zeilenparameter der ardata-Funktion zu ändern. Denken Sie jedoch daran, dass die Qualität der Daten umso geringer ist, je geringer die Beobachtungen sind.

Hinweis: Wenn die vollständige Grafik im obigen Bild nicht sichtbar ist, beziehen Sie sich auf die Grafik über dem Abschnitt Einführung.

Empfohlen: