Aufbau der Schaltung

Nachdem Sie nun alles Wichtige über die zur Verfügung stehenden Bauteile wissen, können Sie die Schaltung für den Mikrocontroller aufbauen. Dabei sind die Schaltung für die verschiedenen Akustikmelder identisch, lediglich das zugehörige Programm unterscheidet sich. 


Benötigte Materialien

  • Mikrocontroller (z.B. ESP32, Arduino)
  • Breadboard
  • Jumper Kabel
  • 10 kΩ Widerstand
  • Taster
  • Aktiver Summer
  • Passiver Summer
  • Micro-USB Kabel zur Spannungsversorgung und Programmierung des Mikrocontrollers

    Zu sehen sind alle benötigten Materialien

Abbildung: Ansteuerung der Akustikmelders
Quelle: BBS2 Wolfsburg

Verdrahtung der Schaltung

Im Ordner "Schaltpläne" ist der passende Schaltplan für den Anschluss an einen ESP32 als Fritzing-Datei enthalten. Weiter unten können Sie sich den Schaltplan auch als Bild ansehen. Analog hierzu kann der Schaltplan für andere Mikrocontroller aufgebaut werden. Dabei müssen Sie dann auf die veränderte Pin-Belegung achten. 

Zu sehen ist der Schaltplan  Zu sehen ist der Schaltplan

Abbildungen: Ansteuerung der Akustikmelders Steckplatine und Schaltplan
Quelle: BBS2 Wolfsburg

Der 10k Ohm Widerstand dient dazu, dass im nicht geschalteten Zustand des Tasters die rechte Seite auf Masse gezogen wird, sodass nur im geschalteten Zustand der Signal-Pin des Mikrocontrollers ein HIGH-Signal bekommt.

Ab hier ist es Ihnen überlassen, ob Sie es selber versuchen, sich eine Schaltung auszudenken und diese im Anschluss mit der vorhandenen Beispielschaltung zu vergleichen oder von Anfang an sich an dieser orientieren. 


Wichtige Hinweise

  • Die Schaltung sollte im spannungsfreien Zustand aufgebaut werden
  • Wenn Veränderungen durchgeführt werden, sollte die Schaltung auch spannungsfrei, also nicht über das USB-Kabel mit dem PC verbunden sein


Programmieren des Mikrocontrollers

Es ist hier wieder Ihnen überlassen, ob Sie selber versuchen das Programm zu erstellen oder das Beispiel-Programm probieren nachzuvollziehen. Alle Programme sind in dem Ordner "Programme" abgelegt. Sie basieren auf einem ESP32.


Allgemeine Hinweise

Bei der Programmierung können verschiedene Programme verwendet werden. In diesem Kurs beschränken wir uns auf Ardublockly und die Arduino IDE. Ardublockly arbeitet bausteinorientiert. Es gibt dabei vorgefertigte Programmzeilen, die in Blöcken dargestellt werden und von dem Programmierer nur per drag & drop in das Programm eingefügt werden müssen. Anschließend kann man sich das erstellte Programm in richtigen Programmzeilen, wie es bei Arduino IDE programmiert werden würde, anzeigen lassen. Es eignet sich also sehr gut für Anfänger. 

Ist das Programm fertig erstellt, kann es über eine interne Funktion der Software Ardublockly automatisch in ein neues Projekt in Arduino IDE importiert oder per Copy/Paste vom Anwender in das neu erstellte Projekt in Arduino IDE eingefügt werden. Von dort aus kann das Projekt bzw. das Programm nun auf den Mikrocontroller per USB-Verbindung übertragen und getestet werden. 

Wenn Sie allerdings schon Erfahrungen in der Mikrocontroller Programmierung haben, können Sie auch direkt in Arduino IDE programmieren.


Funktionsbeschreibung des Programms

Die Programme, welche Sie selber erstellen oder im Ordner "Programme" finden können, sind sehr analog. In den Programmen für den aktiven und den passiven Summer sind jeweils einer von beiden, ein Taster und der Mikrocontroller vorhanden. Der Taster ist mit der einen Seite an die Versorgungsspannung von 3,3 V und mit der anderen Seite an einen Pin des Mikrocontrollers (im Beispiel G23) angeschlossen. Wird der Taster betätigt, so entsteht eine leitende Verbindung zwischen beiden Seiten und der Mikrocontroller erkennt an seinem Pin (im Beispiel G23) ein HIGH-Signal. Durch das Erkennen dieses HIGH-Signales wird der Pin des aktiven bzw. passiven Buzzers auf HIGH gesetzt, was dazu führt, dass er einen Ton erzeugt. Beim passiven Summer kommt noch hinzu, dass die erzeugte Tonhöhe über eine separate Funktion variiert und somit z.B. auch eine Sirene erzeugt werden kann.
Wird der Taster wieder losgelassen, erhält der Pin des Mikrocontrollers (im Beispiel G23) wieder ein LOW-Signal und der Akustikmelder hört auf, einen Ton zu erzeugen. 



Programmieren mit Ardublockly - Aktiver Summer

Zuerst wird hier ein neues Projekt erstellt. Anschließend müssen Sie unter Edit -> Preferences den verwendeten Mikrocontroller auswählen. Bei unserm Beispiel wäre das der ESP32. Das würde dann folgender Maßen aussehen:

Zu sehen ist das Fenster, wo man den Mikrocontroller auswählen kann

Abbildung: Ardublockly Einstellungen
Quelle: BBS2 Wolfsburg

Nun können Sie über die Reiter auf der linken Seite die gewünschten Blöcke auswählen und rechts im Fenster den dazugehörigen Quelltext sehen. Das fertige Programm für den aktiven Summer können Sie unten nochmal sehen. Das Programm ist zusätzlich im Ordner "Programme" hinterlegt.

Ardublockly_aktiv

Abbildung: Ardublockly Aktiver Summer
Quelle: BBS2 Wolfsburg

Programmieren mit Ardublockly - Passiver Summer

Die Konfiguration Ihres neuen Projektes läuft analog zum aktiven Summer. Hier kann nun jedoch die Frequenz des Summers und somit die Tonhöhe, wie in der Informationsphase beschrieben, variiert werden. Daher ist der Programmieraufwand ein wenig höher. Um die Tonhöhe einzustellen wird der Reiter "Audio" verwendet. Für die Übersichtlichkeit wurde der Teil zum Einstellen der Frequenz, also des Tones, in einer separaten Funktion ausgelagert, die dann nur aufgerufen wird. Diese Funktion trägt im Beispiel den Titel "Hupe".

Das Ergebnis kann dann wie folgt aussehen:

Ardublockly_aktiv_2
Abbildung: Ardublockly Passiver Summer
Quelle: BBS2 Wolfsburg

Programmierung mit Arduino IDE - Aktiver Summer

Wenn Sie direkt in Arduino IDE programmieren wollen, müssen Sie zuerst wieder den richtigen Mikrocontroller auswählen. Hierzu müssen Sie unter dem Reiter "Werkzeuge" das richtige Board auswählen. Gegebenenfalls müssen Sie eine neue Bibliothek herunterladen.

Anschließend können Sie mit der Programmierung beginnen. Zuerst sollten Sie wieder die richtigen Pins deklarieren, sprich die Pins an denen Ihr aktiver Summer und Ihr Taster angeschlossen sind. Nun können Sie die einzelnen Funktionen nach der Funktionsbeschreibung programmieren. Das Ergebnis kann dann wie folgt aussehen:

//Pin-Deklaration

int tasterPin = 4;
int aktivSummerPin = 2;

int statusTaster;

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

  //Definition für die Pins
  pinMode(tasterPin, INPUT);
  pinMode(aktivSummerPin, OUTPUT);

}

void loop() 
{
  statusTaster = digitalRead(tasterPin);
  if(statusTaster == HIGH)
  {
    Serial.println("Hupe aktiv");
    digitalWrite(aktivSummerPin, HIGH);       //Die Hupe wird aktiviert, also ein Dauerton gespielt.
  }
  else
  {
    Serial.println("Hupe inaktiv");
    digitalWrite(aktivSummerPin, LOW);        //Die Hupe is deaktiviert.
  }
}


Programmierung mit Arduino IDE - Passiver Summer

Bei dem Programmieren des passiven Summers mit der Arduino IDE unterscheidet sich das Programm ein wenig stärker von dem, welches mit Ardublockly erstellt werden würde. Das liegt daran, dass beim direkten Programmieren in Arduino IDE nicht der Umweg über zwei neu geschriebene Funktionen ("tone" und "notone") gegangen werden muss, sondern man den Befehl "ledcWriteTone()" direkt verwenden kann. Das verkürzt das Programm ein wenig. Ansonsten ist die Funktionsweise identisch und die Programmierung verläuft analog dazu. Das fertige Programm kann dann wie folgt aussehen:

#include <SPI.h>

//Pin-Deklaration
int tasterPin = 4;
int passivSummerPin = 2;

int waitTime = 200;                   //Wartezeit in ms
int statusTaster;

void setup() {
  Serial.begin(9600);
  ledcSetup(0, 5000, 8);
  ledcAttachPin(passivSummerPin, 0);

  //Definition für die Pins
  pinMode(tasterPin, INPUT);
  pinMode(passivSummerPin, OUTPUT);
}
//Hier wird die Melodie festgelegt, in diesem Fall wird immer ein
//bestimmter Ton gespielt und dazwischen eine Pause von 200 ms gemacht.
//Der Teil kann beliebig variiert werden.
void hupe(float note)
{
  ledcWriteTone(0, note);
  delay(waitTime);
  ledcWriteTone(0, 0);
  delay(waitTime);
}

void loop() {
  statusTaster = digitalRead(tasterPin);
  if(statusTaster == HIGH)
  {
    Serial.println("Hupe aktiv");
    hupe(293.0);                          //Die Hupe wird aktiviert und die entsprechende Funktion aufgerufen.
  }
  else
  {
    Serial.println("Hupe inaktiv");
    digitalWrite(passivSummerPin, LOW);   //Die Hupe wird deaktiviert.
  }
}

Last modified: Monday, 3 January 2022, 11:21 AM