Seeeduino XIAO und das 16 in 1 Sensor Kit - Teil 2 - AZ-Delivery

Wir haben den Seeeduino XIAO-Mikrocontroller in Teil 1 dieser Reihe bereits konfiguriert und in Betrieb genommen. Es ist an der Zeit, ihn nun mit Sensoren zu verwenden. Für diese Tests werden wir das AZ-Delivery 16-in-1-Sensor-Kit nutzen, da es eine sehr große Vielfalt an Sensortypen enthält. Wir werden damit einige kleine und einfache Projekte aufbauen.

Zunächst werden wir jeden Sensor des Kits einzeln anschließen, um
herauszufinden, wie wir sie mit dem Seeeduino XIAO programmieren können. Anschließend bauen wir zwei Miniprojekte auf.

Ein sehr wichtiger Hinweis bevor wir beginnen: Die Betriebsspannung der Seeeduino XIAO-PINs beträgt maximal 3,3 VDC. Wir müssen also besonders vorsichtig sein, wenn wir die Sensormodule anschließen. Wenn wir eine Versorgungsspannung von 5 VDC an ein Modul anlegen, wird das Sensordatensignal zwischen 0 VDC und 5 VDC arbeiten und mit dieser Spannung wird der Seeeduino-PIN unbrauchbar. Es könnte sogar den Mikrocontroller selbst zerstören.

Wenn Sie bereit sind und das 16-in-1-Sensor-Kit zusammen mit dem Seeeduino Xiao-Mikrocontroller vor sich haben, beginnen wir mit unseren Projekten der ersten 8 Sensoren im Kit.

LED-Ampel Modul

Dieses Modul simuliert eine Ampel. Die Betriebsspannung liegt zwischen 3,3 VDC und 5 VDC, so dass wir es direkt und ohne Spannungsbegrenzungswiderstände an die PINs unseres Seeeduino-Mikrocontrollers anschließen können. Die Testschaltung ist in der Abbildung dargestellt.

Der Sketch ist sehr einfach. Wir deklarieren Variablen mit den Farben der drei LEDs und weisen ihnen die Pinnummer zu, an die sie angeschlossen sind. Die Pins sind Ausgänge. Wir programmieren die LEDs so, dass sie jeweils mit einer Zeitverzögerung ein- und ausschalten. Die rote und die grüne LED bleiben an und die gelbe LED blinkt viermal. Dieses Modul kann zum Beispiel für Modelleisenbahnen verwendet werden.

int red_led=0;
int yellow_led=1;
int green_led=2;

void setup() {
    pinMode(red_led, OUTPUT);
    pinMode(yellow_led, OUTPUT);
    pinMode(green_led, OUTPUT);

    digitalWrite(red_led, LOW);
    digitalWrite(yellow_led, LOW);
    digitalWrite(green_led, LOW);
}

void loop() {
 
    digitalWrite(red_led, HIGH);
    delay(4000);
    digitalWrite(red_led, LOW);
    delay(200);

    digitalWrite(yellow_led, HIGH);
    delay(500);
    digitalWrite(yellow_led, LOW);
    delay(500);

    digitalWrite(yellow_led, HIGH);
    delay(500);
    digitalWrite(yellow_led, LOW);
    delay(500);

    digitalWrite(yellow_led, HIGH);
    delay(500);
    digitalWrite(yellow_led, LOW);
    delay(500);

    digitalWrite(yellow_led, HIGH);
    delay(500);
    digitalWrite(yellow_led, LOW);
    delay(200);

    digitalWrite(green_led, HIGH);
    delay(4000);
    digitalWrite(green_led, LOW);
    delay(200);
}

Ultraschallsensor-Modul HC-SR04

Dieser Sensor verfügt über einen Ultraschallsender und -empfänger. Der Sender sendet eine Welle aus, die auf ein Objekt trifft und reflektiert wird. Der Empfänger erkennt die reflektierte Welle und der Mikrocontroller misst die Zeit, die zwischen der Aussendung und dem Empfang der Welle vergangen ist. Anschließend führt er die notwendigen Berechnungen durch, um die Entfernung zum erkannten Objekt zu ermitteln.

Wir verwenden die Bibliothek SR04.h, um den Code zu vereinfachen. Wir müssen nur Variablen definieren, um die Pins für das Senden und Empfangen des Ultraschallsignals festzulegen und die berechnete Entfernung zu speichern, die auch im seriellen Monitor angezeigt wird. Ein Beispiel für die Verwendung dieses Sensors ist im Projekt für Halloween 2022 zu sehen.

/*****  Required libraries  *****/
#include "SR04.h"

/*****  Implementation of the ultrasonic sensors  *****/
#define trig_pin 0
#define echo_pin 1
SR04 ultrasonics_sensor = SR04(echo_pin, trig_pin);
long distance;

void setup() {
      Serial.begin(9600);
}

void loop() {
      distance_object();
}

void distance_object() {
      distance = ultrasonics_sensor.Distance();
      Serial.print("Distance to obstacles : ");
      Serial.print(distance);
      Serial.println(" cm");
      delay(100);
}

PIR-Sensor Modul

Der Passiv-Infrarot-Sensor dient dazu, Bewegungen in einem bestimmten Bereich zu erkennen. Er wird häufig in Spielzeugen, in der Hausautomatisierung oder in Sicherheitssystemen eingesetzt, zum Beispiel im Eingangsbereich eines Hauses.

Alle Körper geben eine bestimmte Menge an Infrarotenergie ab, die umso größer ist, je höher die Temperatur des Körpers ist. Diese PIR-Sensoren haben Sensoren, die die Strahlung auffangen und in ein elektrisches Signal umwandeln. Diese Sensoren nehmen Messungen von zwei verschiedenen Punkten aus vor und die elektronische Schaltung gleicht die beiden Messungen aus. Wenn die beiden Messpunkte die gleiche Energiemenge empfangen, ist die Differenz gleich Null und es gibt keine Änderung des Ausgangssignals. Wenn es einen Unterschied zwischen den Messungen der beiden Punkte gibt, wird eine Änderung des Ausgangssignals erzeugt. Auf diese Weise lässt sich das Vorhandensein eines Objekts anhand der Differenz der Messwerte feststellen.

Wenn der Sensor eine Bewegung erkennt, ändert der "SIGNAL"-Pin seinen Zustand, um den Mikrocontroller zu informieren, dass eine Bewegung erkannt wurde. Die Empfindlichkeit und die Zeit der Änderung des Ausgangssignalstatus können eingestellt werden. Ein Beispiel finden Sie im Hausalarm Projekt.

Hinweis: Die Bauform dieser Module kann variieren. Um sicherzustellen, wie die Pins angeordnet sind, entfernen Sie die weiße Kappe. Dort sehen sie die Beschriftung der Pins.

#define OUT_PIN 2

uint8_t output_value = 0;
bool motion_detected = false;

void setup() {
      Serial.begin(9600);
      pinMode(OUT_PIN, INPUT);
      delay(60000);
}

void loop() {
      output_value = digitalRead(OUT_PIN);
      
      if (output_value) {
            Serial.println("Object detected!");
            motion_detected = true;
            delay(3000);
      } else {
            Serial.println("No object!");
      }
      
      if (motion_detected) {
            Serial.println("Wait!");
            delay(6000);
            Serial.println("Ready...");
            motion_detected = false;
      }
}

LDR-Sensormodul (Lichtabhängiger Widerstand)

Das LDR-Sensormodul ist ein Modul mit einem Widerstand, der seinen Wert je nach Lichteinfall ändert. Mit dem Potentiometer auf dem Modul wird die Empfindlichkeitsstufe reguliert. Dieses Modul kann zum Beispiel verwendet werden, um eine Lampe einzuschalten, wenn die Menge des Umgebungslichts abnimmt. Ein Beispiel ist das Projekt Sunlight Tracker, in dem Lichtmessungen mit vier LDRs und Berechnungen durchgeführt werden, um eine mechanische Baugruppe mit Schrittmotoren so zu bewegen, dass ein Photovoltaik-Panel in die optimale Position für das Einfangen des Lichts gebracht wird. Decken Sie den LDR-Widerstand mit der Hand ab, damit er das Licht nicht erfasst und Sie werden im Serial Monitor sehen, wie sich die Meldungen ändern.

#define DO_PIN 2

void setup() {
      Serial.begin(9600);
      pinMode(DO_PIN, INPUT);
}

void loop() {
      int lightState = digitalRead(DO_PIN);
      if (lightState == HIGH) {
            Serial.println("The light is NOT present");
      } else {
            Serial.println("The light is present");
      }
}

KY-037 Mikrofonmodul

Das KY-037 Mikrofonmodul verfügt über ein passives Mikrofon, einen Verstärker und eine integrierte Schaltung für den Vergleich des Geräuschpegels. Der Frequenzbereich liegt reicht von 20Hz bis 20kHz. Mit dem Potentiometer des Moduls stellen wir die Verstärkung für die Geräuscherkennung ein. Es verfügt über einen analogen Signal-Pin, mit dem der Geräuschpegel als Spannung gemessen werden kann, sowie über einen digitalen Signal-Pin, mit dem ein hoher oder niedriger Ausgangspegel verwendet werden kann. Eine mögliche Anwendung wäre das Ein- und Ausschalten der Beleuchtung in einem Raum durch Klatschen in die Hände. In den beiden Beispielsketches sehen wir, wie die Meldung auf dem seriellen Monitor den Ausgang des digitalen Pins und das Signal auf dem seriellen Plotter das Signal des analogen Pins ausgibt.

Digital-Pin

const int mic =  2;

void setup() {
      Serial.begin(9600);
      pinMode(mic, INPUT);
}

void loop() {
      if (digitalRead(mic) == HIGH) {
            Serial.println("hearing something");
      }
}

Analog-Pin

void setup() {
      Serial.begin(9600);
}

void loop() {
      int sensorValue = analogRead(A2);
      Serial.println(sensorValue);
}

Schwingungssensor

Dieses Modul hat einen digitalen Ausgang und besteht aus einer Kapsel mit zwei Metallstäben im Inneren, von denen einer fixiert ist und an den anderen eine Feder befestigt ist. Diese kann auf plötzliche Bewegungen, Stöße oder Vibrationen reagieren.

int vibration_sensor = 1;
int val;

void setup() { 
      pinMode(vibration_sensor,INPUT);
      Serial.begin(9600);
}

void loop() { 

      val=digitalRead(vibration_sensor);
      if(val==HIGH) {
            Serial.println("Detected vibration!");
      } else { 
            Serial.println(".......");
      } 
}

Neigungssensor-Modul

Dieses Modul hat wie das vorherige ebenfalls eine Kapsel, aber in diesem Fall befindet sich im Inneren eine Metallkugel, die bei ausreichender Neigung die Kugel in Bewegung setzt und zwei Metallkontakte schließt. Daraufhin ändert der digitale Ausgangsstift seinen Zustand.

int tilt_sensor = 1;
int val;

void setup() { 
      pinMode(tilt_sensor,INPUT);
      Serial.begin(9600);
}

void loop() { 

      val=digitalRead(tilt_sensor);

      if(val==HIGH) {
            Serial.println("HIGH!");
      } else { 
            Serial.println("LOW!");
      } 
} 

 

Linienfolgesensor

Dieser Sensor verfügt über einen Infrarotsender und einen -empfänger. Er erkennt eine Linie, die auf dem Boden in schwarzer Farbe auf einem vorzugsweise weißen Hintergrund gemalt ist. Schwarze Farbe hat die Eigenschaft, Licht zu absorbieren. Das ausgesendete Licht des Sensormoduls wird nicht zum Empfänger zurück reflektiert. Die weiße Farbe hingegen reflektiert das Licht vollständig. So kann der Sensor zwischen Schwarz und Weiß unterscheiden. Die maximale Entfernung, in der das Modul arbeiten kann, beträgt 15 mm. Mit dem Potentiometer dieses Moduls wird die Empfindlichkeit eingestellt. Mit diesen Eigenschaften kann der Sensor z.B. in einem Spielzeugauto verwendet werden, um automatisch einer Linie zu folgen. Ein Beispiel für dieses Projekt finden Sie in dem Artikel Linienverfolgendes Roboterauto.

int line_tracker_sensor = 1;
int val;

void setup() { 
      pinMode(line_tracker_sensor,INPUT);
      Serial.begin(9600);
}

void loop() {
      if(val==HIGH) {
            Serial.println("HIGH!");
      } else { 
            Serial.println("LOW!");
      } 
} 

 

Miniprojekte mit Modulen aus dem AZ-Lieferprogramm 16 in 1

Wir werden nun zwei Projekte mit einigen der Module, die ich gerade beschrieben habe, erstellen. Eines davon wird ein Parkwarnsystem sein, wie es die meisten Fahrzeuge derzeit nutzen und das andere ist ein System zum Einschalten der Beleuchtung, wenn eine Bewegung erkannt wird, oder das Umgebungslicht zu dunkel ist.

Parkwarnsystem

Sketch Download

Heutzutage verfügen viele Fahrzeuge über ein Einparkwarnsystem, bei dem sowohl ein akustisches Signal, als auch Lichtsignale auf dem Innenbildschirm vor der Entfernung zu Hindernissen warnen. Das System ist sehr einfach: eine bestimmte Anzahl von Ultraschallsensoren, die an der vorderen und hinteren Stoßstange verteilt sind, detektieren die Entfernung. Wenn das Fahrzeug das Einparkmanöver beginnt, zeigt der Bildschirm normalerweise eine Zeichnung des Fahrzeugs und einige farbige Balken (normalerweise grün, gelb und rot) im Umriss des Fahrzeugs, die uns sagen, wie weit das Objekt entfernt ist. Je nachdem ertönt ein akustisches Signal, das umso intensiver ist, je mehr sich das Fahrzeug einem Hindernis nähert.

In unserem Miniprojekt verwenden wir den Ultraschallsensor HC-SR04, das Ampelmodul und das passive Summermodul KY-006, das nicht im 16 in 1 Kit enthalten ist. Die Funktionsweise dieser Schaltung ist sehr einfach: Wenn das Objekt mehr als 30 cm entfernt ist, leuchten die LEDs nicht auf und der Summer ertönt nicht. Wenn wir uns dem Objekt nähern und der Abstand zwischen 30 cm und 15 cm beträgt, leuchtet die grüne LED auf und der Summer ertönt mit einer Frequenz von 400 Hz. Wenn der Abstand zwischen 15 cm und 5 cm beträgt, leuchtet die gelbe LED auf, die grüne LED erlischt und der Summer ertönt mit einer Frequenz von 500 Hz. Wenn der Abstand noch weiter verringert wird und und nur noch 5 cm oder weniger beträgt, leuchtet die rote LED auf, die beiden anderen bleiben aus und der Summer ertönt mit einer Frequenz von 600 Hz. Der Sketch ist leicht nachzuvollziehen und mit erklärenden Kommentaren versehen. In diesem kurzen Video können Sie sehen, wie sie funktioniert.

 

Anwesenheitsbeleuchtung

Sketch Download

Das folgende kleine Projekt schaltet das Licht bei erkannter Bewegung oder bei zu geringer Außenbeleuchtung ein. Es kann als Energiesparsystem verwendet werden.

Für diese Schaltung werden wir das PIR-Modul für die Bewegungserkennung und das LDR-Modul für die Erkennung einer geringen Beleuchtungsstärke verwenden. Wir werden eine LED-Diode nutzen, um die Beleuchtung zu simulieren.

Der Signal-Pin des PIR-Sensors ändert sich, wenn eine Bewegung erkannt wurde. Der Mikrocontroller schaltet in diesem Fall die LED ein, ansonsten wird sie ausgeschaltet.

Der Signal-Pin des LDR-Moduls ändert sich von LOW nach HIGH, wenn die Beleuchtung zu gering wird. Auch dann wird die LED durch den Mikrocontroller eingeschaltet.

Dieser Sketch ist auch kommentiert, so dass er leicht verstehen ist. In dem Video können Sie sehen, wie es funktioniert.

 

Wenn die Videos nicht angezeigt werden, überprüfen Sie bitte die Cookie-Einstellungen Ihres Browsers!

Wir hoffen, dass Ihnen die Analyse dieser ersten 8 Module des Baukastens gefallen hat und dass Sie Ihre Projekte damit realisieren können. Im nächsten Teil widmen wir uns den anderen Sensormodulen und setzen einige weitere Miniprojekte damit um.

Für arduinoProjekte für anfängerSensoren

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery