Lektion 4: Es geht in die Praxis

Erstellen der *.h-Datei

Wie in der letzten Lektion bereits erwähnt, können wir uns aus der XML-Datei direkt die benötigte Header-Datei erstellen lassen. Im Verzeichnis der Suite befindet sich dazu der KONNEKTING-CodeCreator. Dieser arbeitet ohne eine Bedienoberfläche. Einfach die XML-Datei in das Verzeichnis kopieren und danach auf den CodeCreator ziehen und fallen lassen. Die Header-Datei sollte dann im Ordner erscheinen.

Sollte das nicht der Fall sein, so kann es daran liegen, dass sich in die XML-Datei ein Fehler eingeschlichen hat. Einfach mit der Suite (evtl. im Debug-Modus) prüfen. Wenn die Suite nicht meckert, dann sollte die Datei in Ordnung sein.

ACHTUNG Käfer!
Die letzte Zeile in der Header-Datei sollte so aussehen:
const int KonnektingDevice::_numberOfParams = sizeof (_paramSizeList); // do not change this code

Wenn sie so aussieht:
const byte KonnektingDevice::_numberOfParams = sizeof (_paramSizeList); // do not change this code
dann ignoriere bitte die Bemerkung am Ende der Zeile und ändere „byte“ in „int“.

Das Testprojekt

Nun kommt die Hardware an die Reihe. Wir wollen ja einen kleinen Temperatursensor bauen. In dem Beispiel nutze ich einen TUL (Leonardo-kompatibel mit eingebauter BCU). Es kann natürlich auch z.B. ein Pro Micro mit einer MicroBCU sein. Hier das Anschlußbild:

Ein Leonardo oder Micro empfiehlt sich, da wir über den Monitor beobachten können, während der Arduino über die serielle Schnittstelle mit dem KNX-Bus kommuniziert. Dann solltet ihr aber die 3V3-Verbindung weglassen (Arduino wird über USB versorgt).

Denkt an die Pegel.
Die MicroBCU arbeitet mit 3,3V auf den digitalen Ein- und Ausgängen. Den Pro Micro oder alternativ Pro Mini gibt es in 5V/16MHz und 3,3V/8MHz. Bei den 5V-Versionen ist ein Levelshifter erforderlich.

Als Temperatursensor nutze ich in dem Beispiel einen LM75. Es kann natürlich jeder Andere genutzt werden, der gerade in der Bastelkiste greifbar ist. Der Sketch gibt alle 5 Sekunden die aktuelle Temperatur auf dem Monitor aus. Hier der Beispielsketch:

/**********************************************************************
 * Einfacher Temperatursensor als Beispiel für Konnekting
 * 
 * schickt alle 5 Sekunden die aktuelle Temperatur
 * 
 * Temperatursensor: LM 75
 * Benutzt die LM75-Library von Jeremy Cole aus der Bibliothekverwaltung
 * 
 * Prozessor ist ein 32U4 (Leonardo, Micro, TUL)
 * 
 **********************************************************************/
 
#define DEBUGSERIAL Serial   // USB port
 
#include <Temperature_LM75_Derived.h>

// The Generic_LM75 class will provide 9-bit (±0.5°C) temperature for any
// LM75-derived sensor. More specific classes may provide better resolution.
Generic_LM75 temperature;
 
unsigned long lastmillis = millis();
uint32_t sendDelay = 5000;
 
void setup()
{
  DEBUGSERIAL.begin(9600);
  Wire.begin();
  lastmillis = millis();
}
 
void loop()
{
   float aktTemp;
   unsigned long currentmillis = millis();

  if (currentmillis - lastmillis >= sendDelay)
  {
    aktTemp = temperature.readTemperatureC(); //aktuelle Temperatur einlesen
    DEBUGSERIAL.print("Aktuelle Temperatur ");
    DEBUGSERIAL.print(aktTemp);                  //und zum Monitor
    DEBUGSERIAL.println(" ºC");
    lastmillis = currentmillis;
  }
}

Wie geht es weiter?

Wenn der Temperatursensor einwandfrei arbeitet, können wir ihn in der nächsten Lektion in einen KONNEKTING-Temperatursensor verwandeln. Dazu benötigen wir als Hardware zusätzlich eine LED mit Vorwiderstand (OnBoard_LED, falls vorhanden), einen Taster, einen 10µF Kondensator und einen 10k Widerstand. Daraus bauen wir uns dann den Programmiertaster und die Programmier-LED (siehe Lektion 1).

Der verwendete Prozessor sollte nur für erste Experimente verwendet werden. Die Beta 5 wird um einiges größer sein als die Beta 4b. Es wird dann eng im Programmspeicher. Auch das Firmwareupdate über den Bus (FOTB) wird nicht funktionieren. Der Standardprozessor wird der SAMD21G18 sein (siehe auch Recommended Arduino Boards). Wer keinen Arduino in der Bastelkiste liegen hat, sollte also gleich zu einem SAMD-Board greifen.

<– Lektion 3: Aufbau von KONNEKTINGLektion 5: Nun mit Konnekting –>