Az-Delivery

http://sites.schaltungen.at/arduino-sketch/az-delivery

http://www.linksammlung.info/

http://www.schaltungen.at/

                                                                                         Wels, am 2019-12-06

BITTE nützen Sie doch rechts OBEN das Suchfeld  [                                                              ] [ Diese Site durchsuchen]

DIN A3 oder DIN A4 quer ausdrucken
*******************************************************************************I**
DIN A4  ausdrucken   (Heftrand 15mm / 5mm)     siehe     http://sites.schaltungen.at/drucker/sites-prenninger
********************************************************I*
~015_b_PrennIng-a_arduino.sketch-az-delivery (xx Seiten)_1a.pdf


                     https://www.az-delivery.de/

1)                        IR-Thermometer GY-906
2.1)  .2                ESP8266 Sensordaten auf Webseite ausgeben
3.1)  .2  .3  .4      Eine elegante automatische Treppenbeleuchtung

4) ESP8266-01 Relais mit Website steuern









5)                        200 kostenlose e-Books
6)                        Az-Delivery Sensoren





********************************************************I*

GY-906   MLX90614ESF   Infrarot-Temperatursensor | berührungsloses Thermometer für Arduino

1) IR-Thermometer GY-906

Contactless temperature sensor

Aihasd GY-906  € 9,99
GY-906 MLX90614


GY-906 Infrarot-Temperatursensor Chip MLX90614

Infrarot Thermo-Sensor

Aihasd GY-906  MLX90614ESF  MLX90614 

Berührungslose Temperatur Sensor Modul für Arduino

von Aihasd
  • Small size, low cost
  • Mounted on a breakout board with two types of pins
  • 10k Pull up resistors for the I2C interface with optional solder jumpers
  • Easy to integrate
     Geringe Größe, geringe Kosten
     Montiert auf einem Breakout Board mit zwei Arten von Stiften
     10k Pull-Up-Widerstände für die I2C-Schnittstelle mit optionalen Lötbrücken
     Einfach zu integrieren

https://www.aliexpress.com/popular/gy-906-mlx90614.html


  • Sensor                                    : MLX60614ESF-BAA  
  • Model                                      : GY-906
  • Betriebsspannung               : 3,3V .. 5V
  • Stromaufnahme                   : 1mA .. 2,5 mA
  • Messbereich Umgebung   : -40°C .. 125°C
  • Messbereich Objekt           : -70°C .. 370°C
  • PWM Output                         : 0,14 °C
  • TWI Output                           : 0,02 °C
  • Genauigkeit                         : 0,5°C     (bei 0°C .. 50°C)
  • Material                                 : Immersion Gold PCB


Ein minimales Breakoutboard, um berührungslos Temperaturen per Infrarot zu messen: mit dem GY-906 Infrarot-Thermometer ist es ganz einfach, bestimmte Temperaturen zu messen.
Der MLX90614ESF Sensor ist auf einen breiten Messbereich zwischen -40 °C bis 125 °C kalibriert.
-40 °C bis 125°C Temperaturbereich des Sensors
inkl. Stiftleiste

https://www.aliexpress.com/popular/gy-906-mlx90614.html
https://www.az-delivery.de/collections/alle-produkte/products/gy-906
https://learn.adafruit.com/using-melexis-mlx90614-non-contact-sensors/wiring-and-test
https://learn.adafruit.com/using-melexis-mlx90614-non-contact-sensors/wiring-and-test
https://learn.sparkfun.com/tutorials/mlx90614-ir-thermometer-hookup-guide/all
https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf
https://github.com/adafruit/Adafruit-MLX90614-Library
https://www.arduinolibraries.info/libraries/mlx90614
300_d_WILTRONICS-x_GY-906 Infrarot-Temperatursensor Chip MLX90614 - Datenblatt_1a.pdf
300_d_Melix-x_GY-906 Infrarot-Temperatursensor Chip MLX90614 TO-39 - Datenblatt_1a.pdf
300_d_adafruit-x_GY-906 Infrarot-Temperatursensor Melexis MLX90614 mit ARDUINO UNO_1a.pdf
https://cdn-learn.adafruit.com/downloads/pdf/using-melexis-mlx90614-non-contact-sensors.pdf


Die Sensoren kannst du parallel schalten und um die Adressen raus zu bekommen kannst du den
verwenden.
Jewels einzeln abfragen.
Und die Pullup-Widerstände 4,7k gegen +5Volt nicht vergessen.
Die Adresse kann man im EEPROM ändern! Und im Datenblatt ist auch ein Schaltbild für mehrere Sensoren

https://www.adafruit.com/datasheets/MLX90614.pdf

Eine Beschreibung habe ich jetzt auch gefunden: Giving an MLX90614 a New Address.
Da steht dann auch, wie eine Temperatur ohne Bibliothek ausgelesen werden kann, sollte diese bei mehreren Sensoren mucken.



Eine typische Pinbelegung bei einem Arduino sieht wie folgt aus:

  • Vcc                zu   3,3V bzw. 5,0V    External supply voltage
  • GND/Vss     zu GND                        Ground Connection
  • SDA/PWM   zu  A4                          Data
  • SCL              zu A5                          Serial Clock

You may download the MLX90614 Arduino Library & Example (1.15MB) or manually key-in:
#include <Wire.h>#include <Adafruit_MLX90614.h>Adafruit_MLX90614 mlx = Adafruit_MLX90614();void setup() {  Serial.begin(9600);  Serial.println("Adafruit MLX90614 test");    mlx.begin();  }void loop() {  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC());   Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF());   Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");  Serial.println();  delay(500);}
http://qqtrading.com.my/infrared-thermometer-module-gy-906-mlx90614




OLED 0,96" € 5,99

AZDelivery 128 x 64 Pixel 0,96 Zoll OLED I2C Display für Arduino mit gratis eBook!




  • ✔️ Starker Kontrast durch die Verwendung der innovativen OLED Technologie im großen 0,96 Zoll Display!
  • ✔️ Durch die hohe Auflösung von 128 mal 64 Pixeln bietet das Display viel Platz zum Anzeigen von Elementen!
  • ✔️ Leichte Verbindung des Displays mit Arduino, Raspberry Pi und Co. durch I2C Schnittstelle über nur vier Pins!
  • ✔️ Dank Standard-Controller (SSD 1306) bereits Bibliotheken für Arduino, Raspberry Pi und Co. vorhanden, was Programmierung kinderleicht macht!
Monochromes 0.96"OLED Display mit 128 x 64 Bildpunkten (weiss)
Dieses Display ist mit 3 cm Bildschirmdiagonale sehr klein und durch hohen Kontrast gut lesbar.
Das Display besteht aus 128x64 OLED Bildpunkten die durch den verbauten SSD1306 Chip einzeln gesteuert werden.
Da die Pixel leuchten wird keine Hintergrundbeleuchtung benötigt, was sich positiv auf den Stromverbrauch auswirkt und dem Display den hohen Kontrast verleiht.
Es ist ideal für einfache Verwendung mit Mikrocontrollern wie ARDUINO ATmega, STM32, 8051, AVR, PIC, DSP, ARM, MSP430, PLC,TTL-Logik.
Das Display wird über die I2C-Schnittstelle angesteuert und benötigt nur 4 Anschlüsse.

Eine typische Pinbelegung bei einem Arduino sieht wie folgt aus:
  • VCC -> 3.3V
  • GND -> GND
  • SDA -> A4
  • SCL -> A5

In Kombination mit den beiden Arduino Bibliotheken Adafruit GFX und Adafruit SSD1306, welche auch Beispiel-Sketches enthalten, lässt sich das Display schnell programmieren.

Details:

  • Chipsatz: SSD1306
  • Farbe: Weiss
  • Sichtbarer Winkel: > 160°
  • Auflösung: 128 x 64 Pixel
  • Betriebsspannung: 3.3V bis 5V
  • Betriebstemperatur: -30°C bis +80°C
  • Niedriger Stromverbrauch: 0,04W im normalen Betrieb
  • Ansteuerung: I2C / TWI
  • Pinbelegung: VCC, GND, SCL, SDA
  • Abmessungen: ca 27mm * 27mm * 4,1mm
  • Lieferumfang:
  • 1x Fertig aufgebautes OLED Display wie abgebildet

Quick-Start-Guide  0,96 Zoll OLED Display


Ganz einfach zum eigenen IR-Thermometer

Heut möchten wir Ihnen zeigen, wie Sie mit wenig Bauteilen und nur ein paar Zeilen Code Ihren eigenen IR-Thermometer bauen können.
Das fertige Projekt können Sie verwenden, um berührungslos Temperaturen zu messen, an Maschinen oder Ähnlichem.

Dezember 4, 2019 Moritz Spranger

IR-Thermometer

Wie man mit unserem GY-906-Modul, einem Nano V3 und einem OLED mit wenigen Zeilen Code ein IR-Thermometer umsetzten kann.
Der Aufbau eignet sich gut zum berührungslosen überwachen von Temperaturen, z.B. an Maschinen, an Heizkörper, an Herdplatten, an Kühlkörper usw.


Wir brauchen also:
1x Nano V3
1x OLED 0.96"
1x GY-906
1x mini-BreadBoard m. Jumper-Wire
1x 9V-Batteriehalter



Optional können Sie das Projekt gerne um eine Laserdiode oder ein Button-Modul erweitern.

KY-008 Laser Sensor Modul 650nm 5mW 5V für Arduino
https://www.az-delivery.de/products/laser-modul?_pos=4&_sid=268bb17cd&_ss=r

KY-004 Taster Modul Sensor Taste Kopf Schalter Schlüsselschalter für Arduino
https://www.az-delivery.de/products/button-modul?_pos=43&_sid=1a80cb7cc&_ss=r



Die Verdrahtung:

Nano    GY-906    OLED      Batterieclip
Vin                                           +
GND     GND         GND         -
5V         Vcc
3.3V                        Vcc
A4          SCL          SCL
A5          SDA          SDA


Die notwendigen Librarys:
Installieren Sie beide Librarys wie gewohnt über Ihren Bibliotheksverwalter in der Arduino-IDE.
Möchten Sie die aktuellste Version nutzen können Sie diese über GitHub beziehen und als *.zip einbinden, das hat jedoch den Nachteil, neue Version selbst pflegen zu müssen.
Nutzen Sie den Bibliotheksverwalter zur Installation werden Sie durch die IDE benachrichtigt sobald eine neue Version zur Verfügung gestellt wird und können diese durch einen Klick aktualisieren.
Im nachstehenden Screenshot sind die beiden Bibliotheken abgebildet:

- GY-906 - auf Github

https://github.com/adafruit/Adafruit-MLX90614-Library


Zur Ausgabe der Werte auf dem Display nutzen wir heute die Library von Adafruit:


This is a library for the MLX90614 temperature sensor
https://github.com/adafruit/Adafruit-MLX90614-Library



File > Examples > Adafruit_MLX90614 > mlxtest

https://learn.adafruit.com/using-melexis-mlx90614-non-contact-sensors



 Hier der Code:

#include <Wire.h>#include <Adafruit_MLX90614.h>#include <Adafruit_SSD1306.h>#define SCREEN_WIDTH 128 // OLED display width, in pixels#define SCREEN_HEIGHT 64 // OLED display height, in pixelsAdafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);Adafruit_MLX90614 mlx = Adafruit_MLX90614();void setup() {    Serial.begin(9600);  Serial.println("Adafruit MLX90614 test");   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {    Serial.println(F("SSD1306 init failed"));    for(;;);  }    display.clearDisplay();  display.setRotation(0);  display.setTextSize(1);  display.setTextColor(WHITE);  display.setCursor(0, 35);  display.println("Init...");  display.display();  delay(500);  display.clearDisplay();  mlx.begin();   }void loop() {    display.clearDisplay();    display.setTextSize(2);    display.setCursor(25, 10);    display.print(mlx.readAmbientTempC()); //Umgebungstemperatur    display.setCursor(95, 10);    display.print("C");    display.setTextSize(2);    display.setCursor(25, 36);    display.print(mlx.readObjectTempC()); //IR-Temperatur    display.setCursor(95, 36);    display.print("C");    display.display();  Serial.println();  delay(1000);}


Nach der Initialisierung der Hardware in void setup, wird im loop die Umgebungs- und im Anschluss die IR-Temperatur angezeigt.


https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/ir-thermometer?






********************************************************I*
2.1) ESP8266 Sensordaten auf Webseite ausgeben 1
Gestern haben wir gezeigt wie einfach unser ESP8266 mit dem MAX6675-Temperatorsensor zusammenarbeitet.
Heute möchten wir den Sketch ein wenig erweitern, um die WiFi-Fähigkeit des Moduls auszunutzen.
Dafür binden wir die Bibliothek "ESP8266WiFi" ein. Diese übernimmt die Anmeldung an ein bestehendes WLAN, und übernimmt das Senden und Empfangen der Daten an den Client.
Mittels "WiFiServer server(80);" starten wir einen Server der auf Port 80 läuft.


#include <ESP8266WiFi.h>#include <max6675.h>const char* ssid = "Wlan Name (SSID)";const char* password = "Wlan Schlüssel";int thermoDO = 12;int thermoCS = 13;int thermoCLK = 14;WiFiServer server(80); // Wir richten den Webserver auf Port 80 einMAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); // Wir richten den Temperatursensor ein void setup(){  Serial.begin(115200);  Serial.println();  Serial.printf("Verbinde mit %s ", ssid);  WiFi.begin(ssid, password); // Versucht mit WLAN Name und Schlüssel zu verbinden  while (WiFi.status() != WL_CONNECTED)  {    delay(500);    Serial.print(".");  }  Serial.println(" verbunden");  server.begin();  Serial.printf("Webserver gestartet, öffnen Sie %s in einem Webbrowser\n", WiFi.localIP().toString().c_str());}// Inhalt der Weibseite generierenString prepareHtmlPage(){  String htmlPage =     String("HTTP/1.1 200 OK\r\n") +            "Content-Type: text/html\r\n" +            "Connection: close\r\n" +  // Die Verbindung wird nach der Übertragung geschlossen            "Refresh: 5\r\n" +  // Automatisch alle 5 Sekunden neu laden            "\r\n" +            "<!DOCTYPE HTML>" +            "<html>" +            "Temperatur in &deg;C:  " + String(thermocouple.readCelsius()) + //Ausgabe der Temperatur            "</html>" +            "\r\n";  return htmlPage;}void loop(){  WiFiClient client = server.available();  // warten auf Verbindung vom Client (Webbrowser)  if (client)  {    Serial.println("\n[Client hat sich verbunden]");    while (client.connected())    {      // zeilenweise einlesen was der Client (Webbrowser) anfragt      if (client.available())      {        String line = client.readStringUntil('\r');        Serial.print(line);        // bis zum Ende der Anfrage warten (=Leerzeile)        if (line.length() == 1 && line[0] == '\n')        {          client.println(prepareHtmlPage()); // Antwort ausgeben          break;        }      }    }    delay(1000); // dem Browser Zeit geben um die Antwort zu empfangen    // Die Verbindung schließen:    client.stop();    Serial.println("[Client getrennt]");    Serial.print("C = ");     Serial.println(thermocouple.readCelsius());    delay(10);  }}




Die Ausgabe der Temperatur im seriellen Monitor ist nur zur Fehlersuche. Auf dem Seriellen Monitor sehen wir nun:


Die Ausgabe im Browser sieht dann wie folgt aus:

Temperatur in °C: 25.25

Wer sich ein Wenig mit den Grundlagen von HTML beschäftigt (Ich empfehle einen Blick auf
https://selfhtml.org/
kann im Abschnitt prepareHtmlPage() das Aussehen und den Inhalt der Seite beliebig anpassen.
Dann können auch mehrere Sensordaten auf einer Seite ausgegeben werden.
Der ESP8266 kann sowohl als Webserver, aber auch aus Client fungieren.
Damit bietet der Mikrokontroller viele neue Lösungsansätze und ermöglicht konstengünstig spannende neue Projekte.


Kommentar

Weblint - Dezember 12, 2019

Gibt es eine reconnect Prozedur? Wenn ich den esp32 in einer anderen WiFi Umgebung einsetzen möchte soll sich der Bereich des neuen WLAN neu einrichten lassen. Gibt es schon so eine Routine?

Vielen Dank und frohes Fest

albin - Dezember 11, 2019

Sie schreiben “Gestern haben wir gezeigt wie einfach unser ESP8266 mit dem MAX6675-Temperatorsensor zusammenarbeitet.” Finde leider den ersten Teil von Gestern nicht auf Ihrer Page. Bitte um Link.

Ulrich Klaas - Dezember 11, 2019

Hallo,
das ist doch echt nett hier das in diesem Block Programmierbeispiele gezeigt werden.
Aber programmieren Lernen sollte man schon selber oder sich in einschlägigen
Foren Rat holen.

C oder C++ lernen ist wirklich keine Zauberei.
Heute muss immer alles vorgekocht werden.
Ulli

4711engel - Juli 8, 2019

Ich betreibe in Berlin eine von vielen Feinstaub-Sensor-Messstationene des “ESP-OK-LAB”.
Diese Station misst die Feinstaub-Belastung und liefert die Daten ins Internet, wo sie von einem Anbieter statistisch aufbereitet zur Verfügung gestellt wird.
Z.B. URL: http://www.madavi.de/sensor/graph.php?sensor=esp8266-306639-sds011

Da ich nicht immer mein Handy nutzen will, um mir die Auswertung zu laden, würde ich die Daten gerne mittels ESP8266 und einem ILI9341 TFT auf dem TFT automatisch alle Minute anzeigen lassen.
Z.B. die Grafik: http://www.madavi.de/sensor/images/sensor-esp8266-306639-sds011-1-day.png

Wie kann ich dieses realisieren? Ich bin leider kein großer Programmierer.

Bernd - Dezember 25, 2018

Hi,
habe den Quelltext unverändert in die Arduino IDE eingefügt und mit der ESP8266 Einstellung in den ESP geladen. Die Ausgaben im seriellen Monitor sind fast genauso wie oben gezeigt. Nur die Reihung ist verändert. Auch die Temperatur wird angezeigt. Rufe ich aber die im seriellen Monitor aufgeführte Adresse mit einem Explorer auf, erhalte ich eine Fehlermeldung. Die Adresse stimmt, denn im Router sehe ich den ESP genau unter dieser Adresse. Ich habe die Seite mit Firefox, Edge und dem alten Internetexplorer aufgerufen. Alle 3 können die Seite nicht aufbauen. Woran kann das liegen?

Hoschy - Juli 13, 2018

In Zeile 28 steht: " öffnen Sie %s in einem Webbrowser\n", WiFi.localIP "
das %s bezieht sich auf das Wifi.localIP, das ist die IP des webservers, des arduinos / mcu oder ähnliches wo die Webseite zum anzeigen drauf läuft.

Klaus - Juli 6, 2018

Moin,
ein Anfänger sucht in selfhtml.org den Abschnit prepareHtmlPage – wünsche ein wenig mehr Hilfe.

michael - Juli 6, 2018

Bin leider noch Anfänger:
Was bedeutet das Zeichen “%s” in der Zeile 28?

Mit was für einer Adresse rufe ich im Broser die Seite auf?


https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp8266-sensordaten-auf-webseite-ausgeben?







2.2)  ESP8266 Sensordaten auf Webseite ausgeben 2

Gestern haben wir gezeigt wie einfach unser ESP8266 mit dem MAX6675-Temperatorsensor zusammenarbeitet.
Heute möchten wir den Sketch ein wenig erweitern, um die WiFi-Fähigkeit des Moduls auszunutzen.
Dafür binden wir die Bibliothek "ESP8266WiFi" ein. Diese übernimmt die Anmeldung an ein bestehendes WLAN, und übernimmt das Senden und Empfangen der Daten an den Client.
Mittels "WiFiServer server(80);" starten wir einen Server der auf Port 80 läuft.




#include <ESP8266WiFi.h>#include <max6675.h>const char* ssid = "Wlan Name (SSID)";const char* password = "Wlan Schlüssel";int thermoDO = 12;int thermoCS = 13;int thermoCLK = 14;WiFiServer server(80); // Wir richten den Webserver auf Port 80 einMAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); // Wir richten den Temperatursensor ein void setup(){  Serial.begin(115200);  Serial.println();  Serial.printf("Verbinde mit %s ", ssid);  WiFi.begin(ssid, password); // Versucht mit WLAN Name und Schlüssel zu verbinden  while (WiFi.status() != WL_CONNECTED)  {    delay(500);    Serial.print(".");  }  Serial.println(" verbunden");  server.begin();  Serial.printf("Webserver gestartet, öffnen Sie %s in einem Webbrowser\n", WiFi.localIP().toString().c_str());}// Inhalt der Weibseite generierenString prepareHtmlPage(){  String htmlPage =     String("HTTP/1.1 200 OK\r\n") +            "Content-Type: text/html\r\n" +            "Connection: close\r\n" +  // Die Verbindung wird nach der Übertragung geschlossen            "Refresh: 5\r\n" +  // Automatisch alle 5 Sekunden neu laden            "\r\n" +            "<!DOCTYPE HTML>" +            "<html>" +            "Temperatur in &deg;C:  " + String(thermocouple.readCelsius()) + //Ausgabe der Temperatur            "</html>" +            "\r\n";  return htmlPage;}void loop(){  WiFiClient client = server.available();  // warten auf Verbindung vom Client (Webbrowser)  if (client)  {    Serial.println("\n[Client hat sich verbunden]");    while (client.connected())    {      // zeilenweise einlesen was der Client (Webbrowser) anfragt      if (client.available())      {        String line = client.readStringUntil('\r');        Serial.print(line);        // bis zum Ende der Anfrage warten (=Leerzeile)        if (line.length() == 1 && line[0] == '\n')        {          client.println(prepareHtmlPage()); // Antwort ausgeben          break;        }      }    }    delay(1000); // dem Browser Zeit geben um die Antwort zu empfangen    // Die Verbindung schließen:    client.stop();    Serial.println("[Client getrennt]");    Serial.print("C = ");     Serial.println(thermocouple.readCelsius());    delay(10);  }}



Die Ausgabe der Temperatur im seriellen Monitor ist nur zur Fehlersuche. Auf dem Seriellen Monitor sehen wir nun:






Die Ausgabe im Browser sieht dann wie folgt aus:

Temperatur in °C: 25.25


Wer sich ein Wenig mit den Grundlagen von HTML beschäftigt (Ich empfehle einen Blick auf https://selfhtml.org/) kann im Abschnitt prepareHtmlPage() das Aussehen und den Inhalt der Seite beliebig anpassen.
Dann können auch mehrere Sensordaten auf einer Seite ausgegeben werden.
Der ESP8266 kann sowohl als Webserver, aber auch aus Client fungieren. Damit bietet der Mikrokontroller viele neue Lösungsansätze und ermöglicht konstengünstig spannende neue Projekte.

Kommentar

Weblint - Dezember 12, 2019

Gibt es eine reconnect Prozedur? Wenn ich den esp32 in einer anderen WiFi Umgebung einsetzen möchte soll sich der Bereich des neuen WLAN neu einrichten lassen. Gibt es schon so eine Routine?

Vielen Dank und frohes Fest

albin - Dezember 11, 2019

Sie schreiben “Gestern haben wir gezeigt wie einfach unser ESP8266 mit dem MAX6675-Temperatorsensor zusammenarbeitet.” Finde leider den ersten Teil von Gestern nicht auf Ihrer Page. Bitte um Link.

Ulrich Klaas - Dezember 11, 2019

Hallo,
das ist doch echt nett hier das in diesem Block Programmierbeispiele gezeigt werden.
Aber programmieren Lernen sollte man schon selber oder sich in einschlägigen
Foren Rat holen.

C oder C++ lernen ist wirklich keine Zauberei.
Heute muss immer alles vorgekocht werden.
Ulli

4711engel - Juli 8, 2019

Ich betreibe in Berlin eine von vielen Feinstaub-Sensor-Messstationene des “ESP-OK-LAB”.
Diese Station misst die Feinstaub-Belastung und liefert die Daten ins Internet, wo sie von einem Anbieter statistisch aufbereitet zur Verfügung gestellt wird.
Z.B. URL: http://www.madavi.de/sensor/graph.php?sensor=esp8266-306639-sds011

Da ich nicht immer mein Handy nutzen will, um mir die Auswertung zu laden, würde ich die Daten gerne mittels ESP8266 und einem ILI9341 TFT auf dem TFT automatisch alle Minute anzeigen lassen.
Z.B. die Grafik: http://www.madavi.de/sensor/images/sensor-esp8266-306639-sds011-1-day.png

Wie kann ich dieses realisieren? Ich bin leider kein großer Programmierer.

Bernd - Dezember 25, 2018

Hi,
habe den Quelltext unverändert in die Arduino IDE eingefügt und mit der ESP8266 Einstellung in den ESP geladen. Die Ausgaben im seriellen Monitor sind fast genauso wie oben gezeigt. Nur die Reihung ist verändert. Auch die Temperatur wird angezeigt. Rufe ich aber die im seriellen Monitor aufgeführte Adresse mit einem Explorer auf, erhalte ich eine Fehlermeldung. Die Adresse stimmt, denn im Router sehe ich den ESP genau unter dieser Adresse. Ich habe die Seite mit Firefox, Edge und dem alten Internetexplorer aufgerufen. Alle 3 können die Seite nicht aufbauen. Woran kann das liegen?

Hoschy - Juli 13, 2018

In Zeile 28 steht: " öffnen Sie %s in einem Webbrowser\n", WiFi.localIP "
das %s bezieht sich auf das Wifi.localIP, das ist die IP des webservers, des arduinos / mcu oder ähnliches wo die Webseite zum anzeigen drauf läuft.

Klaus - Juli 6, 2018

Moin,
ein Anfänger sucht in selfhtml.org den Abschnit prepareHtmlPage – wünsche ein wenig mehr Hilfe.

michael - Juli 6, 2018

Bin leider noch Anfänger:
Was bedeutet das Zeichen “%s” in der Zeile 28?

Mit was für einer Adresse rufe ich im Broser die Seite auf?



https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp8266-sensordaten-auf-webseite-ausgeben?





********************************************************I*


3.1) Eine elegante automatische Treppenbeleuchtung (Teil1)

Im ersten Teil einer neuen spannenden Reihe eine elegante automatische Treppenbeleuchtung für bis zu maximal 16 Stufen auf, bei der jede einzelne Stufe der Treppe nacheinander als Lauflicht beleuchtet wird, sobald einer der beiden Infrarotmelder, die jeweils einzeln am oberen und am unteren Ende der Treppe angebracht sind, eine Bewegung melden.
Dabei wird jede einzelne Treppe dazu noch sanft per PWM Steuerung auf die maximale Helligkeit hochgedimmt und später bis um erlöschen wieder heruntergedimmt.
Der Zeiträume, in der die Treppe eingeschaltet bleibt, oder die eine Stufe herauf- oder herabdimmt ist dabei frei im Sketch nach eigenem Belieben einstellbar.
Eine solche Lösung gibt es bereits schon kommerziell (hier im Video im Betrieb zu sehen).

Heute zeige ich, wie man eine in der Funktion ähnliche Steuerung mithilfe des Arduinos und einiger externen Bauteilen selbst bauen kann.

Wir brauchen für unsere do-it-yourself Treppenbeleuchtung folgende Elektronik-Teile:
Anzahl         Beschreibung                                               Anmerkung
2                   PIR Modul HC-SR501 PIR                         Bewegungssensor
1                   PCA9685 16 Kanal 12 Bit PWM Driver
1                   Nano V3
1                   MB102 Netzteil Adapter                              für Breadboardaufbau
1 bis 16      IRF520 MOS Driver Modul 0-24V 5A         Anzahl je nach Treppenzahl
1                   Netzteil für LED/Lampen für die Stufen   max. 24 Volt

Im folgenden Schaltplan ist die Kernsteuerung zu sehen. Exemplarisch sind jedoch nur 2 Treiberstufen der maximal möglichen 16 Treiberstufen zu sehen.
Falls mehr Treiberstufen benötigt werden, werden diese sinngemäß wie die beiden eingezeichneten angeschlossen.
Zu beachten ist unbedingt eine sicherheitsgerechte Verwendung von Stromkabeln und Leitungen sowie ein ausreichend dimensioniertes Netzteil.
Das Netzteil muss Überlast geschützt sein und alle Treppenstufenlichter und den Arduino mit stabilisierter Gleichspannung versorgen können ohne überlastet zu werden!
Es besteht Brandgefahr bei nicht sachgerechtem Einbau und/oder Betrieb!

Wir bauen die Schaltung für unsere Treppe wie folgt auf einem Breadboard zum testen auf:

 





Im nächsten Schritt passen wir den Quellcode des Arduinos an die eigenen Bedürfnisse an. Interessant sind die folgenden 3 Zeilen im Code:

#define Num_Stages 15
#define Delay_Stages 10
#define Delay_ON_to_OFF 5


Num_Stages              Definiert die Anzahl der zu beleuchtenden Treppen (maximal 16, von 0 anzählend zu beginnen. Maximalwert: 15)
Delay_Stages             Fade Zeitraum für jede Treppenstufe -> je kleiner der Wert desto größer der Zeitraum, desto langsamer.
Delay_ON_to_OFF     Zeitraum der vergeht indem die Treppe im Status „an“ verbleibt.

Nachdem wir die werte den eigenen Vorlieben angepasst habe, kann der Code auf den Arduino hochgeladen werden :




// 2019-12-30 Tobias Kuch GPL 3.0#include <Wire.h>#define PWM_Module_Base_Addr 0x40 //10000000b  Das letzte Bit des Adressbytes definiert die auszuführende Operation. Bei Einstellung auf logisch 1  0x41 Modul 2//wird ein Lesevorgang auswählt, während eine logische 0 eine Schreiboperation auswählt.#define OE_Pin  8           // Pin für Output Enable#define PIRA_Pin 2#define PIRB_Pin 3#define Num_Stages  15#define Delay_Stages  10#define Delay_ON_to_OFF  30  // Minimum Delay_ON_to_OFF in Secondsbyte Pwm_Channel = 0;int Pwm_Channel_Brightness = 0;bool Motion_Trigger_Down_to_Up = false;bool On_Delay = false;// interrupt Controlbyte A60telSeconds24 = 0;byte Seconds24;ISR(TIMER1_COMPA_vect){  A60telSeconds24++;  if (A60telSeconds24 > 59)  {    A60telSeconds24 = 0;    Seconds24++;    if (Seconds24 > 150)    {      Seconds24 = 0;    }  }}void ISR_PIR_A(){  bool PinState = digitalRead(PIRA_Pin);  if (PinState)  {    Motion_Trigger_Down_to_Up = true; // PIR A ausgelöst  }}void ISR_PIR_B(){  bool PinState = digitalRead(PIRB_Pin);  if (PinState)  {    Motion_Trigger_Down_to_Up = true; // PIR B ausgelöst  }}void Init_PWM_Module(byte PWM_ModuleAddr){  pinMode(OE_Pin, OUTPUT);  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x01);                       // Wähle  Mode 2 Register (Command Register)  Wire.write(0x04);                       // Konfiguriere Chip: 0x04:  totem pole Ausgang 0x00: Open drain Ausgang.  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                      // Wähle Mode 1 Register (Command Register)  Wire.write(0x10);                      // Konfiguriere SleepMode  Wire.endTransmission();                // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0xFE);                       // Wähle PRE_SCALE register (Command Register)  Wire.write(0x03);                       // Set Prescaler. Die maximale PWM Frequent ist 1526 Hz wenn das PRE_SCALEer Regsiter auf "0x03h" gesetzt wird. Standard : 200 Hz  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                       // Wähle Mode 1 Register (Command Register)  Wire.write(0xA1);                       // Konfiguriere Chip:  ERrlaube All Call I2C Adressen, verwende interne Uhr,                                           // Erlaube Auto Increment Feature  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit}void Init_PWM_Outputs(byte PWM_ModuleAddr){  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  for ( int z = 0; z < 16 + 1; z++)  {    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 6);      // Wähle PWM_Channel_ON_L register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 7);      // Wähle PWM_Channel_ON_H register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 8);   // Wähle PWM_Channel_OFF_L register    Wire.write(0x00);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 9);  // Wähle PWM_Channel_OFF_H register    Wire.write(0x00);             // Wert für o.g. Register    Wire.endTransmission();  }  digitalWrite(OE_Pin, LOW); // Active LOW-Ausgangsaktivierungs-Pin (OE).}void setup(){  //Initalisierung  pinMode(PIRA_Pin, INPUT);  pinMode(PIRB_Pin, INPUT);  Serial.begin(9600);  Wire.begin(); // Initalisiere I2C Bus A4 (SDA), A5 (SCL)  Init_PWM_Module(PWM_Module_Base_Addr);  Init_PWM_Outputs(PWM_Module_Base_Addr);  noInterrupts();  attachInterrupt(0, ISR_PIR_A, CHANGE);  attachInterrupt(1, ISR_PIR_B, CHANGE);  TCCR1A = 0x00;  TCCR1B = 0x02;  TCNT1 = 0;      // Register mit 0 initialisieren  OCR1A =  33353;      // Output Compare Register vorbelegen  TIMSK1 |= (1 << OCIE1A);  // Timer Compare Interrupt aktivieren  interrupts();}void Down_to_Up_ON(){  Pwm_Channel = 0;  Pwm_Channel_Brightness = 0;  while (Pwm_Channel < Num_Stages + 1)  {    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register    Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register    Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register    Wire.endTransmission();    if (Pwm_Channel_Brightness < 4095)    {      Pwm_Channel_Brightness = Pwm_Channel_Brightness + Delay_Stages;      if (Pwm_Channel_Brightness > 4095) {        Pwm_Channel_Brightness = 4095;      }    } else if ( Pwm_Channel < Num_Stages + 1)    {      Pwm_Channel_Brightness = 0;      delay(200);      Pwm_Channel++;    }  }}void Down_to_Up_OFF(){  Pwm_Channel = 0;  Pwm_Channel_Brightness = 4095;  while (Pwm_Channel < Num_Stages + 1)  {    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register    Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register    Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register    Wire.endTransmission();    if (Pwm_Channel_Brightness > 0)    {      Pwm_Channel_Brightness = Pwm_Channel_Brightness - Delay_Stages;      if (Pwm_Channel_Brightness < 0) {        Pwm_Channel_Brightness = 0;      }    } else if ( Pwm_Channel < Num_Stages + 1)    {      Pwm_Channel_Brightness = 4095;      delay(200);      Pwm_Channel++;    }  }}void loop() {  if ((Motion_Trigger_Down_to_Up) and !(On_Delay))  {    Seconds24 = 0;    On_Delay = true;    Down_to_Up_ON();    Motion_Trigger_Down_to_Up = false;  }  if ((On_Delay) and  (Seconds24 > Delay_ON_to_OFF))  {    Motion_Trigger_Down_to_Up = false;    On_Delay = false;    Down_to_Up_OFF();  }}


Ich wünsche viel Spaß beim Nachbauen dieses Projektes und bis zum nächsten Teil.


https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/eine-elegante-automatische-treppenbeleuchtung-teil1



3.2 Eine elegante automatische Treppenbeleuchtung (Teil2)

Willkommen zum zweiten Teil unserer Reihe " elegante Treppenlichtsteuerung". Wie immer in den Projektreihen geht es in den Folgeteilen um eine Verbesserung oder Erweiterungen der Funktion. Im heutigen Teil verbessern wir zunächst die Funktion.

Grundsätzlich geht unsere Treppe schon jedes langsam von unten nach oben an, wenn man diese von oben nach unten oder umgekehrt, von unten nach oben betritt. Schöner wäre es jedoch, wenn unsere Treppe sich genau in der Richtung als Lauflicht einschaltet, in der wir die Treppe betreten und danach wieder langsam ausschaltet.

Genau um diese Erweiterung soll es im heutigen Teil der Reihe gehen. Das Treppenlicht folgt unseren Schritten, sobald wir die Treppe betreten, unabhängig von der Richtung.

Die Parameter und die Schaltung können aus dem ersten Teil der Reihe übernommen werden. Es handelt sich um eine reine Softwareerweiterung.


#define Num_Stages 15
#define Delay_Stages 10
#define Delay_ON_to_OFF 5


Num_Stages              Definiert die Anzahl der zu beleuchtenden Treppen (maximal 16, von 0 anzählend zu beginnen. Maximalwert: 15)



Delay_Stages            Fade Zeitraum für jede Treppenstufe -> je kleiner der Wert desto größer der Zeitraum, desto langsamer.


Delay_ON_to_OFF     Zeitraum der vergeht, indem die Treppe im Status „an“ verbleibt.

Nachdem die Werte den eigenen Vorlieben angepasst wurden, kann der erweiterte Code auf den Arduino hochgeladen werden:




// 2019 Tobias Kuch GPL 3.0include <Wire.h>#define PWM_Module_Base_Addr 0x40 //10000000b  Das letzte Bit des Adressbytes definiert die auszuführende Operation. Bei Einstellung auf logisch 1  0x41 Modul 2//wird ein Lesevorgang auswählt, während eine logische 0 eine Schreiboperation auswählt.#define OE_Pin  8           // Pin für Output Enable#define CPU_LED_Pin 13#define PIRA_Pin 2#define PIRB_Pin 3#define Num_Stages  15#define Delay_Stages  5#define Delay_ON_to_OFF  30  // Minimum Delay_ON_to_OFF in Seconds#define delay_per_Stage_in_ms 200int Pwm_Channel = 0;int Pwm_Channel_Brightness = 0;bool Motion_Trigger_Down_to_Up = false;bool Motion_Trigger_Up_to_Down = false;bool On_Delay = false;// interrupt Controlbyte A60telSeconds24 = 0;byte Seconds24;ISR(TIMER1_COMPA_vect){  A60telSeconds24++;  if (A60telSeconds24 > 59)  {    A60telSeconds24 = 0;    Seconds24++;    if (Seconds24 > 150)    {      Seconds24 = 0;    }  }}void ISR_PIR_A(){  bool PinState = digitalRead(PIRA_Pin);  if (PinState)  {    if (!(Motion_Trigger_Up_to_Down) and !(Motion_Trigger_Down_to_Up))    {      digitalWrite(CPU_LED_Pin, HIGH);      Motion_Trigger_Down_to_Up = true;    } // PIR A ausgelöst  } else  {    digitalWrite(CPU_LED_Pin, LOW);  }}void ISR_PIR_B(){  bool PinState = digitalRead(PIRB_Pin);  if (PinState)  {    if (!(Motion_Trigger_Down_to_Up) and !(Motion_Trigger_Up_to_Down))    {      digitalWrite(CPU_LED_Pin, HIGH);      Motion_Trigger_Up_to_Down = true;    } // PIR B ausgelöst  } else  {    digitalWrite(CPU_LED_Pin, LOW);  }}void Init_PWM_Module(byte PWM_ModuleAddr){  pinMode(OE_Pin, OUTPUT);  pinMode(CPU_LED_Pin, OUTPUT);  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                       //  Wire.write(0x06);                       // Software Reset  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  delay(400);  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x01);                       // Wähle  Mode 2 Register (Command Register)  Wire.write(0x04);                       // Konfiguriere Chip: 0x04:  totem pole Ausgang 0x00: Open drain Ausgang.  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                      // Wähle Mode 1 Register (Command Register)  Wire.write(0x10);                      // Konfiguriere SleepMode  Wire.endTransmission();                // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0xFE);                       // Wähle PRE_SCALE register (Command Register)  Wire.write(0x03);                       // Set Prescaler. Die maximale PWM Frequent ist 1526 Hz wenn das PRE_SCALEer Regsiter auf "0x03h" gesetzt wird. Standard : 200 Hz  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                       // Wähle Mode 1 Register (Command Register)  Wire.write(0xA1);                       // Konfiguriere Chip:  ERrlaube All Call I2C Adressen, verwende interne Uhr,                                           // Erlaube Auto Increment Feature  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit}void Init_PWM_Outputs(byte PWM_ModuleAddr){  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  for ( int z = 0; z < 16 + 1; z++)  {    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 6);      // Wähle PWM_Channel_ON_L register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 7);      // Wähle PWM_Channel_ON_H register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 8);   // Wähle PWM_Channel_OFF_L register    Wire.write(0x00);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 9);  // Wähle PWM_Channel_OFF_H register    Wire.write(0x00);             // Wert für o.g. Register    Wire.endTransmission();  }  digitalWrite(OE_Pin, LOW); // Active LOW-Ausgangsaktivierungs-Pin (OE).}void setup(){  //Initalisierung  Serial.begin(9600);  pinMode(PIRA_Pin, INPUT);  pinMode(PIRB_Pin, INPUT);  Serial.begin(9600);  Wire.begin(); // Initalisiere I2C Bus A4 (SDA), A5 (SCL)  Init_PWM_Module(PWM_Module_Base_Addr);  Init_PWM_Outputs(PWM_Module_Base_Addr);  noInterrupts();  attachInterrupt(0, ISR_PIR_A, CHANGE);  attachInterrupt(1, ISR_PIR_B, CHANGE);  TCCR1A = 0x00;  TCCR1B = 0x02;  TCNT1 = 0;      // Register mit 0 initialisieren  OCR1A =  33353;      // Output Compare Register vorbelegen  TIMSK1 |= (1 << OCIE1A);  // Timer Compare Interrupt aktivieren  interrupts();}void Down_to_Up_ON(){  Pwm_Channel = 0;  Pwm_Channel_Brightness = 0;  while (Pwm_Channel < Num_Stages + 1)  {    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register    Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register    Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register    Wire.endTransmission();    if (Pwm_Channel_Brightness < 4095)    {      Pwm_Channel_Brightness = Pwm_Channel_Brightness + Delay_Stages;      if (Pwm_Channel_Brightness > 4095) {        Pwm_Channel_Brightness = 4095;      }    } else if ( Pwm_Channel < Num_Stages + 1)    {      Pwm_Channel_Brightness = 0;      delay(delay_per_Stage_in_ms);      Pwm_Channel++;    }  }}void Down_to_Up_OFF(){  Pwm_Channel = 0;  Pwm_Channel_Brightness = 4095;  while (Pwm_Channel < Num_Stages + 1)  {    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register    Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register    Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register    Wire.endTransmission();    if (Pwm_Channel_Brightness > 0)    {      Pwm_Channel_Brightness = Pwm_Channel_Brightness - Delay_Stages;      if (Pwm_Channel_Brightness < 0) {        Pwm_Channel_Brightness = 0;      }    } else if ( Pwm_Channel < Num_Stages + 1)    {      Pwm_Channel_Brightness = 4095;      delay(delay_per_Stage_in_ms);      Pwm_Channel++;    }  }}void Up_to_DOWN_ON(){  Pwm_Channel = Num_Stages;  Pwm_Channel_Brightness = 0;  while (Pwm_Channel > -1)  {    Wire.beginTransmission( PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register    Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register    Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register    Wire.endTransmission();    if (Pwm_Channel_Brightness < 4095)    {      Pwm_Channel_Brightness = Pwm_Channel_Brightness + Delay_Stages;      if (Pwm_Channel_Brightness > 4095) {        Pwm_Channel_Brightness = 4095;      }    } else if ( Pwm_Channel >= 0)    {      Pwm_Channel_Brightness = 0;      delay(delay_per_Stage_in_ms);      Pwm_Channel--;      if ( Pwm_Channel < 0)      {        Pwm_Channel = 0;        break;      }    }  }}void Up_to_DOWN_OFF(){  Pwm_Channel = Num_Stages;  Pwm_Channel_Brightness = 4095;  while (Pwm_Channel > -1)  {    Wire.beginTransmission(PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register    Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_Module_Base_Addr);    Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register    Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register    Wire.endTransmission();    if (Pwm_Channel_Brightness > 0)    {      Pwm_Channel_Brightness = Pwm_Channel_Brightness - Delay_Stages;      if (Pwm_Channel_Brightness < 0) {        Pwm_Channel_Brightness = 0;      }    } else if ( Pwm_Channel >= 0)    {      Pwm_Channel_Brightness =  4095;      delay(delay_per_Stage_in_ms);      Pwm_Channel--;      if ( Pwm_Channel < 0)      {        Pwm_Channel = 0;        break;      }    }  }}void loop(){  if ((Motion_Trigger_Down_to_Up) and !(On_Delay) )  {    Seconds24 = 0;    On_Delay = true;    Down_to_Up_ON();  }  if ((On_Delay) and (Seconds24 > Delay_ON_to_OFF) and (Motion_Trigger_Down_to_Up) )  {    Down_to_Up_OFF();    Motion_Trigger_Down_to_Up = false;    On_Delay = false;    Seconds24 = 0;  }  if ((Motion_Trigger_Up_to_Down) and !(On_Delay) )  {    Seconds24 = 0;    On_Delay = true;    Up_to_DOWN_ON();  }  if ((On_Delay) and (Seconds24 > Delay_ON_to_OFF) and (Motion_Trigger_Up_to_Down))  {    Up_to_DOWN_OFF();    Motion_Trigger_Up_to_Down = false;    On_Delay = false;    Seconds24 = 0;  }}


Ich wünsche viel Spaß beim Nachbauen dieses Projektes und bis zum nächsten Teil.


https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/eine-elegante-automatische-treppenbeleuchtung-teil2


Eine elegante automatische Treppenbeleuchtung (Teil3)


Januar 27, 2020 Tobias Kuch

3.3 Eine elegante automatische Treppenbeleuchtung (Teil3)

Hallo und Willkommen zu einer Fortsetzung der Reihe elegante Treppenbeleuchtung. Heute erweitern wie die maximale Treppenstufenanzahl, die unser Controller ansteuern kann von gerade einmal 16 auf Fulminate 992 Treppenstufen!
Somit sollten auch Besitzer einer längeren Stufentreppe problemlos die Steuerung für Ihre Zwecke entsprechend Ihren Bedürfnissen und Wünschen anpassen können.

Diese Anpassung erfolgt dabei einfach und bequem durch die Anpassung der Programmvariablen "Overall_Stages" in die gewünschte Treppenzahl von 1 bis 992.

Nun, der eine oder andere mag sich fragen, wie ich diese große Anzahl an PWM Ausgängen bei gerade einmal 20 verfügbaren Ausgängen eines AZ-Delivery Nano V3 erreiche. Das Geheimnis liegt in den 6 Adressbits des PCA9685. Jeder PCA9685 kann 16 PWM Kanäle zur Verfügung stellen. Das Daisy-Chain-Layout des Boards verhindert zu dem Kabelchaos und ermöglicht die komfortable Verbindung der bis zu 62 Controller.

Durch die binäre Adressierung der Boards kann eine von insgesamt 62 Adressen im Bereich von 40h bis 7Eh einem Modul aufwärts zählend, zugeordnet werden. Dies ergibt dann bei 16 Ausgängen pro Modul die maximal möglichen 992 Ausgänge.

Der Code ist von mir so geschrieben worden, dass die Adressierung der Module vom Benutzer abstrahiert wird und automatisch berechnet wird. Es ist lediglich die Gesamtsumme der Treppen in einer Variablen angegeben werden und eine ansprechende Anzahl an Modulen als Daisy Chain an den I2C Bus angehängt werden. Dabei muss bei den Modulen auf eine aufsteigende Adressierung der Module geachtet werden.

Im nachfolgenden Bild ist erkennbar, wie die Module verschaltet und adressiert werden müssen:


Für unser heutiges Projekt benötigen wir:

Anzahl     Beschreibung                                                Anmerkung
2              PIR Modul HC-SR501 PIR                           Bewegungssensor
bis 62     PCA9685 16 Kanal 12 Bit PWM Driver      Anzahl je nach Treppenzahl /16
1              Nano V3                                                         Microkontroller
1               MB102 Netzteil Adapter                               für Breadboardaufbau
bis 992    IRF520 MOS Driver Modul 0-24V 5A         Anzahl je nach Treppenzahl
1              Netzteil für LED/Lampen für die Stufen     Max. 24 Volt

Bitte beachtet, dass die Schaltung nicht mit Vollbestückung getestet wurde, sondern nur mit 2 Modulen vom Typ PCA9685.
Eine Vollbestückung mit 62 Modulen ist daher hier nur theoretisch beschrieben. In der Praxis sind maximale I2C Buslängen, Störungssicherheit, saubere Signalübertragung, ausreichend dimensionierte Netzteile, Kabel, sichere Verbindungen und mehr zu berücksichtigen.
Alle Hinweise dazu aus den vorherigen Teilen gelten insbesondere auch im heutigen Teil.

Hier ist der aktualisierte Code für den heutigen Teil:

ARDUINO Sketch
// Code by Tobias Kuch 2019 mailto:[email protected]// Code under GPL 3.0#include <Wire.h>#define PWM_Module_Base_Addr 0x40 //10000000b  Das letzte Bit des Adressbytes definiert die auszuführende Operation. Bei Einstellung auf logisch 1  0x41 Modul 2 etc.. Adressbereich0x40 - 0x47 //wird ein Lesevorgang auswählt, während eine logische 0 eine Schreiboperation auswählt.#define OE_Pin  8           // Pin für Output Enable #define CPU_LED_Pin 13#define PIRA_Pin 2#define PIRB_Pin 3#define Num_Stages_per_Module 16#define Delay_Stages  5#define Delay_ON_to_OFF  2  // Minimum Delay_ON_to_OFF in Secondsint Overall_Stages =  16; // maximale Stufenanzahl: 62 x 16 = 992int delay_per_Stage_in_ms = 200;int Pwm_Channel = 0;int Pwm_Channel_Brightness = 0;bool Motion_Trigger_Down_to_Up = false;bool Motion_Trigger_Up_to_Down = false;bool On_Delay = false;byte PWMModules = 0;byte StagesLeft = 0;// interrupt Controlbyte A60telSeconds24 = 0;byte Seconds24;ISR(TIMER1_COMPA_vect){  A60telSeconds24++;  if (A60telSeconds24 > 59)  {    A60telSeconds24 = 0;    Seconds24++;    if (Seconds24 > 150)    {      Seconds24 = 0;    }  }}void ISR_PIR_A(){  bool PinState = digitalRead(PIRA_Pin);  if (PinState)  {    if (!(Motion_Trigger_Up_to_Down) and !(Motion_Trigger_Down_to_Up))    {      digitalWrite(CPU_LED_Pin, HIGH);      Motion_Trigger_Down_to_Up = true;    } // PIR A ausgelöst  } else  {    digitalWrite(CPU_LED_Pin, LOW);  }}void ISR_PIR_B(){  bool PinState = digitalRead(PIRB_Pin);  if (PinState)  {    if (!(Motion_Trigger_Down_to_Up) and !(Motion_Trigger_Up_to_Down))    {      digitalWrite(CPU_LED_Pin, HIGH);      Motion_Trigger_Up_to_Down = true;    } // PIR B ausgelöst  } else  {    digitalWrite(CPU_LED_Pin, LOW);  }}void Init_PWM_Module(byte PWM_ModuleAddr){  pinMode(OE_Pin, OUTPUT);  pinMode(CPU_LED_Pin, OUTPUT);  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                       //  Wire.write(0x06);                       // Software Reset  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  delay(400);  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x01);                       // Wähle  Mode 2 Register (Command Register)  Wire.write(0x04);                       // Konfiguriere Chip: 0x04:  totem pole Ausgang 0x00: Open drain Ausgang.  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                      // Wähle Mode 1 Register (Command Register)  Wire.write(0x10);                      // Konfiguriere SleepMode  Wire.endTransmission();                // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0xFE);                       // Wähle PRE_SCALE register (Command Register)  Wire.write(0x03);                       // Set Prescaler. Die maximale PWM Frequent ist 1526 Hz wenn das PRE_SCALEer Regsiter auf "0x03h" gesetzt wird. Standard : 200 Hz  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                       // Wähle Mode 1 Register (Command Register)  Wire.write(0xA1);                       // Konfiguriere Chip:  ERrlaube All Call I2C Adressen, verwende interne Uhr,                                           // Erlaube Auto Increment Feature  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit}void Init_PWM_Outputs(byte PWM_ModuleAddr){  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  for ( int z = 0; z < 16 + 1; z++)  {    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 6);      // Wähle PWM_Channel_ON_L register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 7);      // Wähle PWM_Channel_ON_H register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 8);   // Wähle PWM_Channel_OFF_L register    Wire.write(0x00);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 9);  // Wähle PWM_Channel_OFF_H register    Wire.write(0x00);             // Wert für o.g. Register    Wire.endTransmission();  }  digitalWrite(OE_Pin, LOW); // Active LOW-Ausgangsaktivierungs-Pin (OE).}void setup(){  //Initalisierung  Serial.begin(115200);  pinMode(PIRA_Pin, INPUT);  pinMode(PIRB_Pin, INPUT);  Serial.begin(9600);  while (!Serial) {    ; // wait for serial port to connect. Needed for native USB  }  PWMModules = Overall_Stages / 16;  StagesLeft = Overall_Stages % 16;  if (StagesLeft >= 1) {    PWMModules++;  }  Wire.begin(); // Initalisiere I2C Bus A4 (SDA), A5 (SCL)  for (byte ModuleCount = 0; ModuleCount < PWMModules; ModuleCount++)  {    Init_PWM_Module(PWM_Module_Base_Addr + ModuleCount);    Init_PWM_Outputs(PWM_Module_Base_Addr + ModuleCount);  }  noInterrupts();  attachInterrupt(0, ISR_PIR_A, CHANGE);  attachInterrupt(1, ISR_PIR_B, CHANGE);  TCCR1A = 0x00;  TCCR1B = 0x02;  TCNT1 = 0;      // Register mit 0 initialisieren  OCR1A =  33353;      // Output Compare Register vorbelegen  TIMSK1 |= (1 << OCIE1A);  // Timer Compare Interrupt aktivieren  interrupts();}void Down_to_Up_ON(){  Serial.println("Down_to_Up_ON");  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  for (byte ModuleCount = 0; ModuleCount < PWMModules; ModuleCount++)  {    Pwm_Channel = 0;    Pwm_Channel_Brightness = 4095;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module = StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    Pwm_Channel = 0;    Pwm_Channel_Brightness = 0;    while (Pwm_Channel < Calc_Num_Stages_per_Module + 1)    {      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness < 4095)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness + Delay_Stages;        if (Pwm_Channel_Brightness > 4095) {          Pwm_Channel_Brightness = 4095;        }      } else if ( Pwm_Channel < Num_Stages_per_Module + 1)      {        Pwm_Channel_Brightness = 0;        delay(delay_per_Stage_in_ms);        Pwm_Channel++;      }    }  }}void Up_to_DOWN_ON(){  Serial.println("Up_to_DOWN_ON ");  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  int ModuleCount = PWMModules - 1;  while (ModuleCount >= 0)  {    Pwm_Channel_Brightness = 0;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module =  StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    Pwm_Channel = Calc_Num_Stages_per_Module;    while (Pwm_Channel > -1)    {      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness < 4095)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness + Delay_Stages;        if (Pwm_Channel_Brightness > 4095) {          Pwm_Channel_Brightness = 4095;        }      } else if ( Pwm_Channel >= 0)      {        Pwm_Channel_Brightness = 0;        delay(delay_per_Stage_in_ms);        Pwm_Channel--;        if ( Pwm_Channel < 0)        {          Pwm_Channel = 0;          break;        }      }    }    ModuleCount = ModuleCount - 1;  }}void Down_to_Up_OFF(){  Serial.println("Down_to_Up_OFF");  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  for (byte ModuleCount = 0; ModuleCount < PWMModules; ModuleCount++)  {    Pwm_Channel = 0;    Pwm_Channel_Brightness = 4095;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module = StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    while (Pwm_Channel < Calc_Num_Stages_per_Module + 1)    {      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness > 0)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness - Delay_Stages;        if (Pwm_Channel_Brightness < 0) {          Pwm_Channel_Brightness = 0;        }      } else if ( Pwm_Channel < Num_Stages_per_Module + 1)      {        Pwm_Channel_Brightness = 4095;        delay(delay_per_Stage_in_ms);        Pwm_Channel++;      }    }  }}void Up_to_DOWN_OFF(){  Serial.println("Up_to_DOWN_OFF");  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  int ModuleCount = PWMModules - 1;  while (ModuleCount >= 0)  {    Pwm_Channel_Brightness = 4095;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module = StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    Pwm_Channel = Calc_Num_Stages_per_Module;    while (Pwm_Channel > -1)    {      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness > 0)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness - Delay_Stages;        if (Pwm_Channel_Brightness < 0) {          Pwm_Channel_Brightness = 0;        }      } else if ( Pwm_Channel >= 0)      {        Pwm_Channel_Brightness =  4095;        delay(delay_per_Stage_in_ms);        Pwm_Channel--;        if ( Pwm_Channel < 0)        {          Pwm_Channel = 0;          break;        }      }    }    ModuleCount = ModuleCount - 1;  }}void loop(){  if ((Motion_Trigger_Down_to_Up) and !(On_Delay) )  {    Seconds24 = 0;    On_Delay = true;    Down_to_Up_ON();  }  if ((On_Delay) and (Seconds24 > Delay_ON_to_OFF) and (Motion_Trigger_Down_to_Up) )  {    Down_to_Up_OFF();    Motion_Trigger_Down_to_Up = false;    On_Delay = false;    Seconds24 = 0;  }  if ((Motion_Trigger_Up_to_Down) and !(On_Delay) )  {    Seconds24 = 0;    On_Delay = true;    Up_to_DOWN_ON();  }  if ((On_Delay) and (Seconds24 > Delay_ON_to_OFF) and (Motion_Trigger_Up_to_Down))  {    Up_to_DOWN_OFF();    Motion_Trigger_Up_to_Down = false;    On_Delay = false;    Seconds24 = 0;  }}

 Ich wünsche viel Spaß beim Nachbau und bis zum nächsten Teil der Reihe.

Wie immer findet Ihr auch alle vorherigen Projekte unter der GitHub Seite

https://github.com/kuchto


https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/eine-elegante-automatische-treppenbeleuchtung-teil3





Februar 3, 2020 Tobias Kuch

3.4 Eine elegante automatische Treppenbeleuchtung (Teil4)

Hallo und Willkommen zu dem vorletzten Teil der Reihe „elegante automatische Treppenbeleuchtung“.

 

Heute erweitern wir unsere Steuerung um einen lichtempfindlichen Widerstand, der als Helligkeitssensor fungieren soll. Ab einem im Code mit dem Parameter „DayLight_Brightness_Border“ einstellbaren Helligkeitswert, wobei eine höhere Zahl eine höhere Helligkeit symbolisiert, wird die Treppenautomatik ab diesem Wert deaktiviert, sodass nur, wenn es dunkel ist, die Treppe beleuchtet wird. Durch die Verwendung eines LDRs anstatt eines I2C Sensors, wird das ganze etwas unempfindlicher gegen externe Störungen.

Als weitere kleine in Verbesserung kann in dieser Version, die Fadingzeit zwischen zwei Stufen beim Ein und ausschalten durch die Parameter „Delay_Stages_ON“ und „Delay_Stages_OFF“ nun getrennt voneinander eingestellt werden. Respektable Ergebnisse lassen sich zum Beispiel dadurch erzielen, indem der Parameter für Ausschalten der einzelnen Treppenstufen größer gewählt wird als der für das einschalten.


Im nachfolgenden Bild ist erkennbar, wie der LDR und der Vorwiederstand verschaltet werden müssen:


Anzahl 1 bis 4 (2 Dargestellt)

Für unseren heutigen Teil des Projektes benötigen wir:

Anzahl     Beschreibung                                                   Anmerkung
2              PIR Modul HC-SR501 PIR                             Bewegungssensor
bis 62     PCA9685 16 Kanal 12 Bit PWM Driver        Anzahl je nach Treppenzahl /16
1               Nano V3
1               MB102 Netzteil Adapter                                  Für Breadboardaufbau
bis 992    IRF520 MOS Driver Modul 0-24V 5A           Anzahl je nach Treppenzahl
1              Netzteil für LED/Lampen für die Stufen        Maximal 24 Volt
1              10k Ohm Widerstand
1             LDR 03                                                                 Fotowiederstand

Alle Hinweise aus den vorherigen Teilen gelten auch im heutigen Teil.

Nach eigenen Anpassungen und des Hinzufügens der LDR‘s kann der Code hochgeladen werden:


Treppenbeleuchtungs-Sketch

 wer den Code so übernimmt:
- auf 8 Stufen eingestellt
- Ausschaltzeit beträgt 10 sec.
- die Überblendungen sind sehr schnell
- es wird  einen LDR von 3,9k Ohm eingesetzt


#include <Wire.h>#define PWM_Module_Base_Addr 0x40 // 10000000b  Das letzte Bit des Adressbytes definiert die auszuführende Operation. Bei Einstellung auf logisch 1  0x41 Modul 2 etc.. Adressbereich0x40 - 0x47 // wird ein Lesevorgang auswählt, während eine logische 0 eine Schreiboperation auswählt.#define OE_Pin  8                 // Pin für Output Enable #define CPU_LED_Pin 13            // Interne Board LED an Pin 13 (zu Debuggingzwecken)#define PIRA_Pin 2#define PIRB_Pin 3#define Num_Stages_per_Module 16#define LDR_Pin A2                // Analog Pin, über den die Helligkeit gemessen werden soll. (LDR Wiederstand)#define DEBUG#define L_Sens_Scope 50// Anpassbare Betriebsparameter (Konstanten)int Delay_ON_to_OFF = 10;          // Minimum Wartezeit bis zur "Aus Sequenz" in Sekundenint Overall_Stages =  8;         // maximale Stufenanzahl: 62 x 16 = 992int delay_per_Stage_in_ms = 100;int DayLight_Brightness_Border = 600; // Helligkeitsgrenze Automatik - Höherer Wert - Höhere Helligkeitbyte Delay_Stages_ON = 20;byte Delay_Stages_OFF = 20;// Globale Variablenint Pwm_Channel = 0;int Pwm_Channel_Brightness = 0;bool Motion_Trigger_Down_to_Up = false;bool Motion_Trigger_Up_to_Down = false;bool On_Delay = false;bool DayLight_Status = true;bool DLightCntrl = true;byte PWMModules = 0;byte StagesLeft = 0;// interrupt Controlvolatile byte A60telSeconds24 = 0;volatile byte Seconds24;ISR(TIMER1_COMPA_vect){  A60telSeconds24++;  if (A60telSeconds24 > 59)  {    A60telSeconds24 = 0;    Seconds24++;    if (Seconds24 > 150)    {      Seconds24 = 0;    }  }}void ISR_PIR_A(){  bool PinState = digitalRead(PIRA_Pin);  if (PinState)  {    if (!(Motion_Trigger_Up_to_Down) and !(Motion_Trigger_Down_to_Up))    {      digitalWrite(CPU_LED_Pin, HIGH);      Motion_Trigger_Down_to_Up = true;    } // PIR A ausgelöst  } else  {    digitalWrite(CPU_LED_Pin, LOW);  }}void ISR_PIR_B(){  bool PinState = digitalRead(PIRB_Pin);  if (PinState)  {    if (!(Motion_Trigger_Down_to_Up) and !(Motion_Trigger_Up_to_Down))    {      digitalWrite(CPU_LED_Pin, HIGH);      Motion_Trigger_Up_to_Down = true;    } // PIR B ausgelöst  } else  {    digitalWrite(CPU_LED_Pin, LOW);  }}void Init_PWM_Module(byte PWM_ModuleAddr){  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                       //  Wire.write(0x06);                       // Software Reset  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  delay(400);  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x01);                       // Wähle  Mode 2 Register (Command Register)  Wire.write(0x04);                       // Konfiguriere Chip: 0x04:  totem pole Ausgang 0x00: Open drain Ausgang.  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                      // Wähle Mode 1 Register (Command Register)  Wire.write(0x10);                      // Konfiguriere SleepMode  Wire.endTransmission();                // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0xFE);                       // Wähle PRE_SCALE register (Command Register)  Wire.write(0x03);                       // Set Prescaler. Die maximale PWM Frequent ist 1526 Hz wenn das PRE_SCALEer Regsiter auf "0x03h" gesetzt wird. Standard : 200 Hz  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit  Wire.beginTransmission(PWM_ModuleAddr); // Datentransfer initiieren  Wire.write(0x00);                       // Wähle Mode 1 Register (Command Register)  Wire.write(0xA1);                       // Konfiguriere Chip:  ERrlaube All Call I2C Adressen, verwende interne Uhr,                                           // Erlaube Auto Increment Feature  Wire.endTransmission();                 // Stoppe Kommunikation - Sende Stop Bit}void Init_PWM_Outputs(byte PWM_ModuleAddr){  digitalWrite(OE_Pin, HIGH); // Active LOW-Ausgangsaktivierungs-Pin (OE).  for ( int z = 0; z < 16 + 1; z++)  {    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 6);      // Wähle PWM_Channel_ON_L register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 7);      // Wähle PWM_Channel_ON_H register    Wire.write(0x00);                     // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 8);   // Wähle PWM_Channel_OFF_L register    Wire.write(0x00);        // Wert für o.g. Register    Wire.endTransmission();    Wire.beginTransmission(PWM_ModuleAddr);    Wire.write(z * 4 + 9);  // Wähle PWM_Channel_OFF_H register    Wire.write(0x00);             // Wert für o.g. Register    Wire.endTransmission();  }  digitalWrite(OE_Pin, LOW); // Active LOW-Ausgangsaktivierungs-Pin (OE).}void setup(){  //Initalisierung  Serial.begin(9600);  pinMode(PIRA_Pin, INPUT);  pinMode(PIRB_Pin, INPUT);  pinMode(OE_Pin, OUTPUT);  pinMode(CPU_LED_Pin, OUTPUT);  pinMode(LDR_Pin, INPUT);  PWMModules = Overall_Stages / 16;  StagesLeft = (Overall_Stages % 16) - 1;  if (StagesLeft >= 1) {    PWMModules++;  }  Wire.begin(); // Initalisiere I2C Bus A4 (SDA), A5 (SCL)  for (byte ModuleCount = 0; ModuleCount < PWMModules; ModuleCount++)  {    Init_PWM_Module(PWM_Module_Base_Addr + ModuleCount);    Init_PWM_Outputs(PWM_Module_Base_Addr + ModuleCount);  }  noInterrupts();  attachInterrupt(0, ISR_PIR_A, CHANGE);  attachInterrupt(1, ISR_PIR_B, CHANGE);  TCCR1A = 0x00;  TCCR1B = 0x02;  TCNT1 = 0;      // Register mit 0 initialisieren  OCR1A =  33353;      // Output Compare Register vorbelegen  TIMSK1 |= (1 << OCIE1A);  // Timer Compare Interrupt aktivieren  interrupts();  Serial.println(F("Init_Complete"));}bool DayLightStatus (){  int SensorValue = 0;  bool ReturnValue = true;  SensorValue = analogRead(LDR_Pin);#ifdef DEBUG  Serial.print(F("DayLightStatus: "));  Serial.print(SensorValue);#endif  if (SensorValue > DayLight_Brightness_Border)  {    if ((DayLight_Status) and (SensorValue > DayLight_Brightness_Border + L_Sens_Scope))    {      ReturnValue = false;      DayLight_Status = false;    } else if (!(DayLight_Status))    {      ReturnValue = false;      DayLight_Status = false;    }#ifdef DEBUG    Serial.println(F(" OFF"));#endif  } else  {    if ((DayLight_Status) and (SensorValue > DayLight_Brightness_Border - L_Sens_Scope))    {      ReturnValue = true;      DayLight_Status = true;    } else if (!(DayLight_Status))    {      ReturnValue = true;      DayLight_Status = true;    }#ifdef DEBUG    Serial.println(F(" ON"));#endif  }  return ReturnValue;}void Down_to_Up_ON(){#ifdef DEBUG  Serial.println(F("Down_to_Up_ON"));#endif  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  for (byte ModuleCount = 0; ModuleCount < PWMModules; ModuleCount++)  {    Pwm_Channel = 0;    Pwm_Channel_Brightness = 4095;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module = StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    Pwm_Channel = 0;    Pwm_Channel_Brightness = 0;    while (Pwm_Channel < Calc_Num_Stages_per_Module + 1)    {      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness < 4095)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness + Delay_Stages_ON;        if (Pwm_Channel_Brightness > 4095) {          Pwm_Channel_Brightness = 4095;        }      } else if ( Pwm_Channel < Num_Stages_per_Module + 1)      {        Pwm_Channel_Brightness = 0;        delay(delay_per_Stage_in_ms);        Pwm_Channel++;      }    }  }}void Up_to_DOWN_ON(){#ifdef DEBUG  Serial.println(F("Up_to_DOWN_ON "));#endif  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  int ModuleCount = PWMModules - 1;  while (ModuleCount >= 0)  {    Pwm_Channel_Brightness = 0;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module =  StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    Pwm_Channel = Calc_Num_Stages_per_Module;    while (Pwm_Channel > -1)    {      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness < 4095)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness + Delay_Stages_ON;        if (Pwm_Channel_Brightness > 4095) {          Pwm_Channel_Brightness = 4095;        }      } else if ( Pwm_Channel >= 0)      {        Pwm_Channel_Brightness = 0;        delay(delay_per_Stage_in_ms);        Pwm_Channel--;        if ( Pwm_Channel < 0)        {          Pwm_Channel = 0;          break;        }      }    }    ModuleCount = ModuleCount - 1;  }}void Down_to_Up_OFF(){#ifdef DEBUG  Serial.println(F("Down_to_Up_OFF"));#endif  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  for (byte ModuleCount = 0; ModuleCount < PWMModules; ModuleCount++)  {    Pwm_Channel = 0;    Pwm_Channel_Brightness = 4095;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module = StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    while (Pwm_Channel < Calc_Num_Stages_per_Module + 1)    {      Wire.beginTransmission( PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness > 0)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness - Delay_Stages_OFF;        if (Pwm_Channel_Brightness < 0) {          Pwm_Channel_Brightness = 0;        }      } else if ( Pwm_Channel < Num_Stages_per_Module + 1)      {        Pwm_Channel_Brightness = 4095;        delay(delay_per_Stage_in_ms);        Pwm_Channel++;      }    }  }}void Up_to_DOWN_OFF(){#ifdef DEBUG  Serial.println(F("Up_to_DOWN_OFF"));#endif  byte Calc_Num_Stages_per_Module = Num_Stages_per_Module;  int ModuleCount = PWMModules - 1;  while (ModuleCount >= 0)  {    Pwm_Channel_Brightness = 4095;    if ((StagesLeft >= 1) and (ModuleCount == PWMModules - 1))    {      Calc_Num_Stages_per_Module = StagesLeft;    }    else    {      Calc_Num_Stages_per_Module = Num_Stages_per_Module;    }    Pwm_Channel = Calc_Num_Stages_per_Module;    while (Pwm_Channel > -1)    {      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 8);   // Wähle PWM_Channel_0_OFF_L register      Wire.write((byte)Pwm_Channel_Brightness & 0xFF);        // Wert für o.g. Register      Wire.endTransmission();      Wire.beginTransmission(PWM_Module_Base_Addr + ModuleCount);      Wire.write(Pwm_Channel * 4 + 9);  // Wähle PWM_Channel_0_OFF_H register      Wire.write((Pwm_Channel_Brightness >> 8));             // Wert für o.g. Register      Wire.endTransmission();      if (Pwm_Channel_Brightness > 0)      {        Pwm_Channel_Brightness = Pwm_Channel_Brightness - Delay_Stages_OFF;        if (Pwm_Channel_Brightness < 0) {          Pwm_Channel_Brightness = 0;        }      } else if ( Pwm_Channel >= 0)      {        Pwm_Channel_Brightness =  4095;        delay(delay_per_Stage_in_ms);        Pwm_Channel--;        if ( Pwm_Channel < 0)        {          Pwm_Channel = 0;          break;        }      }    }    ModuleCount = ModuleCount - 1;  }}void Stages_Light_Control (){  if ((Motion_Trigger_Down_to_Up) and !(On_Delay))  {    DLightCntrl = DayLightStatus();    if (DLightCntrl)    {      Seconds24 = 0;      On_Delay = true;      Down_to_Up_ON();    } else {      Motion_Trigger_Down_to_Up = false;    }  }  if ((On_Delay) and (Seconds24 > Delay_ON_to_OFF) and (Motion_Trigger_Down_to_Up) )  {    Down_to_Up_OFF();    Motion_Trigger_Down_to_Up = false;    On_Delay = false;    Seconds24 = 0;  }  if ((Motion_Trigger_Up_to_Down) and !(On_Delay))  {    DLightCntrl = DayLightStatus();    if (DLightCntrl)    {      Seconds24 = 0;      On_Delay = true;      Up_to_DOWN_ON();    } else {      Motion_Trigger_Up_to_Down = false;    }  }  if ((On_Delay) and (Seconds24 > Delay_ON_to_OFF) and (Motion_Trigger_Up_to_Down))  {    Up_to_DOWN_OFF();    Motion_Trigger_Up_to_Down = false;    On_Delay = false;    Seconds24 = 0;  }}void loop(){  Stages_Light_Control ();}

 

Zur Fehlerdiagnose steht eine serielle Schnittstelle mit 9600 Baud zur Verfügung an der einige Informationen zum aktuellen Status ausgegeben werden:





Ich wünsche viel Spaß beim Nachbau und bis zum letzten Teil der Reihe.
Wie immer findet Ihr auch alle vorherigen Projekte unter der GitHub Seite 

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/eine-elegante-automatische-treppenbeleuchtung-teil4?








4) ESP8266-01 Relais mit Website steuern

In unserem eBook für den ESP8266-01 mit Relais haben wir euch erklärt, wie ihr mit den AT befehlen und einem Serial Terminal Programm das Relais schalten könnt. Heute möchten wir euch hier zeigen, wie das mit einer Website funktioniert. Am Ende haben wir 2 Buttons mit Ein und Aus.

Legen wir los:

Wir benötigen für dieses Projekt ein ESP8266-01 mit Relais und einen entsprechenden Programmieradapter.

Damit das Relais schalten wird, müssen wir 2 Befehle an das Relais (bzw. an den Steuer-IC des Relais) senden.

A00100A1                AUS

          byte open[] = {0xA0, 0x01, 0x00, 0xA1};          Serial.write(open, sizeof(open));

 

A00101A2                EIN

          byte close[] = {0xA0, 0x01, 0x01, 0xA2};          Serial.write(close, sizeof(close));


Das bauen wir nun in ein Arduino-Sketch:

 

#include <ESP8266WiFi.h>const char* ssid     = "SSID";const char* password = "PASSWORT";WiFiServer server(80);void setup(){  Serial.begin(9600);  Serial.println("Starten");    delay(10);    WiFi.begin(ssid, password);    while (WiFi.status() != WL_CONNECTED) {        delay(500);    }    server.begin();    Serial.println("IP: ");    Serial.println(WiFi.localIP());}int value = 0;void loop(){ WiFiClient client = server.available();  if (client) {    String currentLine = "";    while (client.connected()) {      if (client.available()) {        char c = client.read();        Serial.write(c);        if (c == '\n') {          if (currentLine.length() == 0) {            client.println("HTTP/1.1 200 OK");            client.println("Content-type:text/html");            client.println();            client.print("Relais <a href=\"/H\">Einschalten</a><br>");            client.print("Relais <a href=\"/L\">Ausschalten</a><br>");            client.println();            break;          } else {            currentLine = "";          }        } else if (c != '\r') {           currentLine += c;        }        if (currentLine.endsWith("GET /H")) {          Serial.println("EIN");          delay(10);          byte close[] = {0xA0, 0x01, 0x01, 0xA2};          Serial.write(close, sizeof(close));        }        if (currentLine.endsWith("GET /L")) {          Serial.println("AUS");          delay(10);          byte open[] = {0xA0, 0x01, 0x00, 0xA1};          Serial.write(open, sizeof(open));        }      }    }    client.stop();  }}

Wenn wir diesen Sketch nun mit richtigen WLAN-Informationen abändern und auf den ESP übertragen, kann die Website gestartet werden und das Relais geschalten werden.

Viel Spass beim Nachbauen und entwickeln eigener Projekte.

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp8266-01-relais-mit-website-steuern?


ESP8266-01 Relais mit Website steuern

In unserem eBook für den ESP8266-01 mit Relais haben wir euch erklärt, wie ihr mit den AT befehlen und einem Serial Terminal Programm das Relais schalten könnt. Heute möchten wir euch hier zeigen, wie das mit einer Website funktioniert. Am Ende haben wir 2 Buttons mit Ein und Aus.

Legen wir los:

Wir benötigen für dieses Projekt ein ESP8266-01 mit Relais und einen entsprechenden Programmieradapter.

Damit das Relais schalten wird, müssen wir 2 Befehle an das Relais (bzw. an den Steuer-IC des Relais) senden.

A00100A1                AUS

          byte open[] = {0xA0, 0x01, 0x00, 0xA1};          Serial.write(open, sizeof(open));

 

A00101A2                EIN

          byte close[] = {0xA0, 0x01, 0x01, 0xA2};          Serial.write(close, sizeof(close));


Das bauen wir nun in ein Arduino-Sketch:

 

#include <ESP8266WiFi.h>const char* ssid     = "SSID";const char* password = "PASSWORT";WiFiServer server(80);void setup(){  Serial.begin(9600);  Serial.println("Starten");    delay(10);    WiFi.begin(ssid, password);    while (WiFi.status() != WL_CONNECTED) {        delay(500);    }    server.begin();    Serial.println("IP: ");    Serial.println(WiFi.localIP());}int value = 0;void loop(){ WiFiClient client = server.available();  if (client) {    String currentLine = "";    while (client.connected()) {      if (client.available()) {        char c = client.read();        Serial.write(c);        if (c == '\n') {          if (currentLine.length() == 0) {            client.println("HTTP/1.1 200 OK");            client.println("Content-type:text/html");            client.println();            client.print("Relais <a href=\"/H\">Einschalten</a><br>");            client.print("Relais <a href=\"/L\">Ausschalten</a><br>");            client.println();            break;          } else {            currentLine = "";          }        } else if (c != '\r') {           currentLine += c;        }        if (currentLine.endsWith("GET /H")) {          Serial.println("EIN");          delay(10);          byte close[] = {0xA0, 0x01, 0x01, 0xA2};          Serial.write(close, sizeof(close));        }        if (currentLine.endsWith("GET /L")) {          Serial.println("AUS");          delay(10);          byte open[] = {0xA0, 0x01, 0x00, 0xA1};          Serial.write(open, sizeof(open));        }      }    }    client.stop();  }}

Wenn wir diesen Sketch nun mit richtigen WLAN-Informationen abändern und auf den ESP übertragen, kann die Website gestartet werden und das Relais geschalten werden.

Viel Spass beim Nachbauen und entwickeln eigener Projekte.

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp8266-01-relais-mit-website-steuern?page=2


ESP8266-01 Relais mit Website steuern

In unserem eBook für den ESP8266-01 mit Relais haben wir euch erklärt, wie ihr mit den AT befehlen und einem Serial Terminal Programm das Relais schalten könnt. Heute möchten wir euch hier zeigen, wie das mit einer Website funktioniert. Am Ende haben wir 2 Buttons mit Ein und Aus.

Legen wir los:

Wir benötigen für dieses Projekt ein ESP8266-01 mit Relais und einen entsprechenden Programmieradapter.

Damit das Relais schalten wird, müssen wir 2 Befehle an das Relais (bzw. an den Steuer-IC des Relais) senden.

A00100A1                AUS

          byte open[] = {0xA0, 0x01, 0x00, 0xA1};          Serial.write(open, sizeof(open));

 

A00101A2                EIN

          byte close[] = {0xA0, 0x01, 0x01, 0xA2};          Serial.write(close, sizeof(close));


Das bauen wir nun in ein Arduino-Sketch:

 

#include <ESP8266WiFi.h>const char* ssid     = "SSID";const char* password = "PASSWORT";WiFiServer server(80);void setup(){  Serial.begin(9600);  Serial.println("Starten");    delay(10);    WiFi.begin(ssid, password);    while (WiFi.status() != WL_CONNECTED) {        delay(500);    }    server.begin();    Serial.println("IP: ");    Serial.println(WiFi.localIP());}int value = 0;void loop(){ WiFiClient client = server.available();  if (client) {    String currentLine = "";    while (client.connected()) {      if (client.available()) {        char c = client.read();        Serial.write(c);        if (c == '\n') {          if (currentLine.length() == 0) {            client.println("HTTP/1.1 200 OK");            client.println("Content-type:text/html");            client.println();            client.print("Relais <a href=\"/H\">Einschalten</a><br>");            client.print("Relais <a href=\"/L\">Ausschalten</a><br>");            client.println();            break;          } else {            currentLine = "";          }        } else if (c != '\r') {           currentLine += c;        }        if (currentLine.endsWith("GET /H")) {          Serial.println("EIN");          delay(10);          byte close[] = {0xA0, 0x01, 0x01, 0xA2};          Serial.write(close, sizeof(close));        }        if (currentLine.endsWith("GET /L")) {          Serial.println("AUS");          delay(10);          byte open[] = {0xA0, 0x01, 0x00, 0xA1};          Serial.write(open, sizeof(open));        }      }    }    client.stop();  }}

Wenn wir diesen Sketch nun mit richtigen WLAN-Informationen abändern und auf den ESP übertragen, kann die Website gestartet werden und das Relais geschalten werden.

Viel Spass beim Nachbauen und entwickeln eigener Projekte.

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp8266-01-relais-mit-website-steuern?page=3









********************************************************I*
5)    200 kostenlose e-Books früher je € 0,99

Az-Delivery Quick-Start-Guide
Az-Delivery  alle fehlenden e-Books downloaden
https://www.az-delivery.de/collections/kostenlose-e-books




 *  in Arbeit - noch nicht vorhanden

303_b_Az-Delivery-x_Quick-Start-Guide - Inhaltsverzeichnis - ARDUINO UNO_4c.xls


1

2
303_b_Az-Delivery-x_Quick-Start-Guide - Inhaltsverzeichnis - ARDUINO UNO_4c.xls
3
http://sites.schaltungen.at/arduino-sketch/az-delivery
4

5

6

7
1
8 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - ADS1115 Analog - Digitalwandler mit I2C-Schnittstelle_1a.png
9
303_b_Az-Delivery-x_Quick-Start-Guide - MB102 Netzteil Adapter 3,3V - 5V ARDUINO UNO_1a.pdf
10
303_b_Az-Delivery-x_Quick-Start-Guide - 3x BreadBoard + 3x Jumper-Wire_1a.pdf
11
303_b_Az-Delivery-x_Quick-Start-Guide - GY-BME280_1a.pdf
12
303_b_Az-Delivery-x_Quick-Start-Guide - ENC28J60 Netzwerkmodul_1a.pdf
13
303_b_Az-Delivery-x_Quick-Start-Guide - KY-012 Buzzer Modul (aktiv)_1a.pdf
14
303_b_Az-Delivery-x_Quick-Start-Guide - GY-68 BMP180 Barometrischer Sensor_1a.pdf
15
303_b_Az-Delivery-x_Quick-Start-Guide - HC-05 6-pin Wireless Bluetooth Transceiver Modul für ARDUINO_1a.pdf
16
303_b_Az-Delivery-x_Quick-Start-Guide - MT3608 Step up DC-DC Spannungswandler Modul_1a.pdf
17
303_b_Az-Delivery-x_Quick-Start-Guide - Bodenfeuchte Sensor Modul V1.2 (Hygrometer)_1a.pdf
18
303_b_Az-Delivery-x_Quick-Start-Guide - MQ-135 Gas Sensor Modul_1a.pdf
19
303_b_Az-Delivery-x_Quick-Start-Guide - PIR Bewegungsmelder Modul_1a.pdf
20
303_b_Az-Delivery-x_Quick-Start-Guide - DS18B20 mit 3m Kabel Set_1a.pdf
21
303_b_Az-Delivery-x_Quick-Start-Guide - 2-Relais Modul_1a.pdf
22
303_b_Az-Delivery-x_Quick-Start-Guide - 1,30 Zoll I2C OLED Display SH1106 128x64pixe l U8g2lib.h_1a.pdf
23 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide -3er Set DC-DC Wandler 3Vdc zu 5Vdc_1a.png
24
303_b_Az-Delivery-x_Quick-Start-Guide - 4-Relais Modul_1a.pdf
25 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - 5x DHT11 Temperatursensor_1a.png
26
303_b_Az-Delivery-x_Quick-Start-Guide - 230V zu 3,3V mini Netzteil_1a.pdf
27
303_b_Az-Delivery-x_Quick-Start-Guide - 230V zu 5V mini Netzteil_1a.pdf
28
303_b_Az-Delivery-x_Quick-Start-Guide - 230V zu 12V mini Netzteil_1a.pd
29 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - 433MHz HC-12 Funkmodul_1a.png
30
303_b_Az-Delivery-x_Quick-Start-Guide - A4988 Schrittmotor-Treiber Modul mit Kühlkörper_1a.pdf
31
303_b_Az-Delivery-x_Quick-Start-Guide - ACS712 Stromsensor mit 5 Amp._1a.pdf
32
303_b_Az-Delivery-x_Quick-Start-Guide - ACS712 Stromsensor mit 20 Amp._1a.pdf
33
303_b_Az-Delivery-x_Quick-Start-Guide - ACS712 Stromsensor mit 30 Amp._1a.pdf
34 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Adapterplatte für ESP32 (Breakout) _1a.png
35
303_b_Az-Delivery-x_Quick-Start-Guide - Adapterplatte für ESP8266 (Breakout)_1a.pdf
36 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - ArduiBox - Hutschienen Montage- und Anschluss Set_1a.png
37 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - ArduiBox NodeMCU - Hutschienen Montage- und Anschluss Set_1a.png
38

39

40

41
2
42 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - blaues USB Kabel für USB-A auf USB-micro-B mit USB 2.0_1a.pdf
43
303_b_Az-Delivery-x_Quick-Start-Guide - BreadBoard_1a.pdf
44 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - BreadBoard Adapter für ESP8266-01_1a.pdf
45 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - DHT11 Temperatursensor Modul_1a.pdf
46
303_b_Az-Delivery-x_Quick-Start-Guide - DHT22 Temperatursensor Modul_1a.pdf
47
303_b_Az-Delivery-x_Quick-Start-Guide - Digitales Multimeter Kit - Bausatz_1a.pdf
48 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - DIY Radio Kit_1a.pdf
49
303_b_Az-Delivery-x_Quick-Start-Guide - DIY Weihnachtsbaum Kit_1a.pdf
50 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - DIY Circuit Pen - leitfähiger Stift_1a.pdf
51 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - DRV8825 Schrittmotor-Treiber-Modul mit Kühlkörper_1a.pdf
52
303_b_Az-Delivery-x_Quick-Start-Guide - DS18B20 mit 1m Kabel Set_1a.pdf
53 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - KY-001 Temperatur Sensor Modul DS18B20 _1a.pdf
54 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - DSN-VC288 Volt-Amperemeter_1a.pdf
55 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266-01S mit BreadBoard Adapter_1a.pdf
56 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266-02_1a.pdf
57 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266-07_1a.pdf
58
303_b_Az-Delivery-x_Quick-Start-Guide - Ethernet Shield für ARDUINO Nano_1a.pdf
59 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - USB-Breakout - female USB-A to male Header-pin Adapter_1a.pdf
60 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Gleichrichter MB6S_1a.pdf
61
303_b_Az-Delivery-x_Quick-Start-Guide - OV7670 Kamera-Modul für ARDUINO UNO_1a.pdf
62
303_b_Az-Delivery-x_Quick-Start-Guide – 1.000 Keramik Kondensatoren_1a.pdf
63 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Lötzubehör-Set_1a.pdf
64
303_b_Az-Delivery-x_Quick-Start-Guide - MB102 BreadBoard Kit_1a.pdf
65 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Musik Kit Bausatz - 16 Töne_1a.pdf
66
303_b_Az-Delivery-x_Quick-Start-Guide - Nano V3.0 mit FTDI_1a.pdf
67
303_b_Az-Delivery-x_Quick-Start-Guide - PCA9685 Servo-Treiber_1a.pdf
68 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Photosensitiver Rauchmelder_1a.pdf
69 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Pinzetten-Set_1a.pdf
70
303_b_Az-Delivery-x_Quick-Start-Guide - Prototyping Shield für ARDUINO Uno R3 inklusive Breadboard_1a.pdf
71

72

73

74
3
75
303_b_Az-Delivery-x_Quick-Start-Guide - FC-113 serielle Schnittstelle I2C für LCD16x2 Displays_1a.pdf
76 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Smart-Home Starter Set_1a.pdf
77 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Spannungswandler 5A 8..36V zu 1,25..32V, XL4015_1a.pdf
78 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide – Temperatur Sensoren Kit_1a.pdf
79
303_b_Az-Delivery-x_Quick-Start-Guide - USB Charger Doctor_1a.pdf
80 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - Bodenfeuchte Sensor Modul V1.2 (Hygrometer)_1a.pdf
81 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - MQ-2 Gas Sensor Modul_1a.pdf
82
303_b_Az-Delivery-x_Quick-Start-Guide - KY-023 Keypad Gamepad Shield PS2_1a.pdf
83
303_b_Az-Delivery-x_Quick-Start-Guide - 8-Relais Modul_1a.pdf
84 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - SIM800L GSM GPRS Modul mit Antenne_1a.pdf
85
303_b_Az-Delivery-x_Quick-Start-Guide - 4-Kanal L293D Motortreiber Shield – Schrittmotortreiber_1a.pdf
86
303_b_Az-Delivery-x_Quick-Start-Guide - 4x4 Matrix Tastatur_1a.pdf
87 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - AMS1117 Stromversorgungsmodul 3,3V_1a.pdf
88
303_b_Az-Delivery-x_Quick-Start-Guide - ARDUINO Spielekonsole Bundle_1a.pdf
89 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - CNC Shield V3_1a.pdf
90 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Keypad TTP224 1x4 Matrix Tasten (kapazitiv)_1a.pdf
91 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Laderegler TP4056 micro-USB_1a.pdf
92
303_b_Az-Delivery-x_Quick-Start-Guide - TP 4056 Laderegler mini USB 5V-1A_1a.pdf
93 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Micro Servo SG90_1a.pdf
94 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Servo MG995_1a.pdf
95 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Servo MG996R_1a.pdf
96 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - MAX7219 LED Modul 8-bit 7-Seg. Anzeige_1a.pdf
97 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Drehzahlregler PWM-Modul für DC Motor 1203BK_1a.pdf
98

99
303_b_Az-Delivery-x_Quick-Start-Guide - Ethernet Shield W5100_1a.pdf
100 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Flammen-Sensor Modul_1a.pdf
101
303_b_Az-Delivery-x_Quick-Start-Guide - KY-002 Schock Sensor Modul_1a.pdf
102
303_b_Az-Delivery-x_Quick-Start-Guide - KY-003 Hall Sensor Modul (magnetisch – digital)_1a.pdf
103 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - KY-004 Button Modul_1a.pdf
104
303_b_Az-Delivery-x_Quick-Start-Guide - KY-005 IR-Sende Modul_1a.pdf
105
303_b_Az-Delivery-x_Quick-Start-Guide - KY-006 Buzzer Modul (passiv)_1a.pdf
106

107

108

109
4
110
303_b_Az-Delivery-x_Quick-Start-Guide - KY-011 Bi-Color LED Modul 5mm_1a.pdf
111
303_b_Az-Delivery-x_Quick-Start-Guide - KY-015 Luftfeuchtigkeit- & Temperatur-Sensor DHT11 _1a.pdf
112
303_b_Az-Delivery-x_Quick-Start-Guide - KY-016 LED RGB Modul_1a.pdf
113
303_b_Az-Delivery-x_Quick-Start-Guide - KY-019 Relais Modul mit High-Level Trigger_1a.pdf
114
303_b_Az-Delivery-x_Quick-Start-Guide - KY-024 Hall Sensor Modul_1a.pdf
115
303_b_Az-Delivery-x_Quick-Start-Guide - KY-025 Reed Sensor - Magnet Schalter_1a.pdf
116
303_b_Az-Delivery-x_Quick-Start-Guide - KY-026 Flammen Sensor Modul_1a.pdf
117
303_b_Az-Delivery-x_Quick-Start-Guide - KY-029 Bi-Color LED (2-farben LED) 3mm_1a.pdf
118
303_b_Az-Delivery-x_Quick-Start-Guide - KY-032 Hindernis Sensor (Abstands Sensor)_1a.pdf
119
303_b_Az-Delivery-x_Quick-Start-Guide - KY-035 Hall Sensor - Magnetfeld Modul (analog)_1a.pdf
120
303_b_Az-Delivery-x_Quick-Start-Guide - KY-036 Touch Sensor (Berührungs Sensor)_1a.pdf
121
303_b_Az-Delivery-x_Quick-Start-Guide - KY-040 Drehimpulsgeber Modul_1a.pdf
122
303_b_Az-Delivery-x_Quick-Start-Guide - KY-033 Linienfolger (Linienverfolger)_1a.pdf
123 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - LCD 2x16 Keypad_1a.pdf
124
303_b_Az-Delivery-x_Quick-Start-Guide - Nokia 5110 LCD-Display 84x48 Pixel_1a.pdf
125 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - MAX6675 Temperatur-Sensor mit Sonde_1a.pdf
126 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - mini BreadBoard_1a.pdf
127 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - PCM2704 USB Sound Karte DAC_1a.pdf
128 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Pro Mini_1a.pdf
129
303_b_Az-Delivery-x_Quick-Start-Guide - Regen Sensor Modul_1a.pdf
130 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - RS422 / RS485 Shield für ARDUINO UNO mit galvanischer Trennung_1a.pdf
131 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - RTC Modul DS1302_1a.pdf
132
303_b_Az-Delivery-x_Quick-Start-Guide - KY-031 Tape- Schwingungs-Sensor Modul_1a.pdf
133
303_b_Az-Delivery-x_Quick-Start-Guide - KY-020 Shake- Shock-Sensor (Schüttel- Erschütterunfgs-Senor)_1a.pdf
134 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Simplibox IO - USB Relay Set_1a.pdf
135 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - SW420 Vibrations- Schüttel- Erschütterung-Sensor Modul_1a.pdf
136 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - TCS3200 Farbsensor_1a.pdf
137
303_b_Az-Delivery-x_Quick-Start-Guide - KY-028 Thermistor - Temperatur- Sensor Modul_1a.pdf
138 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Tracker Sensor TCRT5000 - Linienfolger Modul_1a.pdf
139 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - USB auf Seriell Adapter mit CH340_1a.pdf
140 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - HW-598 USB auf seriell Adapter mit CP2102 Chip und Kabel_1a.pdf
141
303_b_Az-Delivery-x_Quick-Start-Guide - LCD Display 128x64 blau_1a.pdf
142 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - 64er LED Matrix Display_1a.pdf
143 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - 16x2 LCD I2C blaues Display_1a.pdf
144
303_b_Az-Delivery-x_Quick-Start-Guide - DS18B20 digitaler Temperatursensoren_1a.pdf
145

146

147

148
5
149 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - GSM/GPS Modul 808 - SIM808_1a.pdf
150
303_b_Az-Delivery-x_Quick-Start-Guide - NodeMCU Lua V2 Amica Modul mit ESP8266 12E_1a.pdf
151
303_b_Az-Delivery-x_Quick-Start-Guide - D1 mini V1.2 - Betriebsanleitung_1a.pdf
152
303_b_Az-Delivery-x_Quick-Start-Guide - SIM-900 GPRS/GSM Shield für ARDUINO Uno_1a.pdf
153
303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266-12E mit Adapter Board_1a.pdf
154
303_b_Az-Delivery-x_Quick-Start-Guide - KY-023 Joystick Modul_1a.pdf
155
303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266-01S mit USB Adapter_1a.pdf
156
303_b_Az-Delivery-x_Quick-Start-Guide - STM32F103C8T6 Mikrocontroller_1a.pdf
157
303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266-01S mit Relais_1a.pdf
158
303_b_Az-Delivery-x_Quick-Start-Guide - SPI Reader Micro Speicherkarten Modul_1a.pdf
159
303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266 Mikrocontroller mit integriertem 0.91 Zoll OLED Display_1a.pdf
160
303_b_Az-Delivery-x_Quick-Start-Guide - U-64 LED-Panel mit 8x8=64 RGB LEDs WS2812b_1a.pdf
161
303_b_Az-Delivery-x_Quick-Start-Guide - DatenLogger Modul - ARDUINO - Logging Shield_1a.pdf
162
303_b_Az-Delivery-x_Quick-Start-Guide - BMP280 Barometrischer Sensor_1a.pdf
163
303_b_Az-Delivery-x_Quick-Start-Guide - 4x4 Matrix Tastatur_1a.pdf
164
303_b_Az-Delivery-x_Quick-Start-Guide - LM2596S Step-Down DC-DC Spannungsregler_1a.pdf
165
303_b_Az-Delivery-x_Quick-Start-Guide - LCD 2x16 + FC-1131 grünes Display_1a.pdf
166
303_b_Az-Delivery-x_Quick-Start-Guide - Nano V3.0 PRO, gelötete Version mit USB Kabel_1a.pdf
167 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - NodeMCU ESP32 mit OLED Display 433Mhz LoRa_1a.pdf
168
303_b_Az-Delivery-x_Quick-Start-Guide - NRF24L01 mit 2,4 GHz_1a.pdf
169 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Pinzetten und Lötzubehör Set_1a.pdf
170 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - RFID Chips mit 13,56 MHz Transponder_1a.pdf
171 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - RFID Chips mit 125 kHz Transponder_1a.pdf
172 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - RFID Karten, 125 KHz, weiß_1a.pdf
173
303_b_Az-Delivery-x_Quick-Start-Guide - ARDUINO UNO R3 (Typ2) Board mit ATmega328P und USB-Kabel_1a.pdf
174 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Laserdiode 5Vdc 15x6mm verkabelt (Kupfergehäuse)_1a.pdf
175
303_b_Az-Delivery-x_Quick-Start-Guide - 16-Relais Modul_1a.pdf
176
303_b_Az-Delivery-x_Quick-Start-Guide - Assembly Instruction ArduiTouch ESP Rev C manual for PCB Version 3 - 01-02_1a.pdf
177
303_b_Az-Delivery-x_Quick-Start-Guide -TTP229 Keypad 4x4 (kapazitiv)_1a.pdf
178
303_b_Az-Delivery-x_Quick-Start-Guide - HD44780 2004 LCD I2C Display 4x20 Zeichen mit FC-113 Treiber_1a.pdf
179
303_b_Az-Delivery-x_Quick-Start-Guide - KY-008 Laser Transmitter Modul_1a.pdf
180

181

182

183
6
184
303_b_Az-Delivery-x_Quick-Start-Guide - KY-009 SMD RGB Modul_1a.pdf
185
303_b_Az-Delivery-x_Quick-Start-Guide - KY-013 Thermistor - Temperaturabhängiger Widerstand_1a.pdf
186
303_b_Az-Delivery-x_Quick-Start-Guide - KY-018 LDR - Lichtabhängiger Widerstand_1a.pdf
187
303_b_Az-Delivery-x_Quick-Start-Guide - KY-021 mini Reed Schalter - Magnetschalter_1a.pdf
188
303_b_Az-Delivery-x_Quick-Start-Guide - KY-022 IR-Empfänger Modul_1a.pdf
189
303_b_Az-Delivery-x_Quick-Start-Guide - KY-034 7 Color LED - Farbwechsel-LED-Modul_1a.pdf
190
303_b_Az-Delivery-x_Quick-Start-Guide - KY-037 ECM - Mikrofon Modul groß_1a.pdf
191
303_b_Az-Delivery-x_Quick-Start-Guide - KY-038 ECM - Mikrofon Modul klein_1a.pdf
192
303_b_Az-Delivery-x_Quick-Start-Guide - Logiklevel Wandler 3,3V <-> 5V, TXS0108E_1a.pdf
193 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - MP3 Player Modul_1a.pdf
194 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - RFID Karten, 13,56 MHz, weiß_1a.pdf
195 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - Touch Sensor Modul_1a.pdf
196
303_b_Az-Delivery-x_Quick-Start-Guide - GY-521 6-Achsen Gyroskop und Beschleunigungssensor MPU6050 (6-DOF Sensoren)_1a.pdf
197 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - LCD Display 16x2 mit blauem Hintergrund und I2C Converter Bundle_1a.pdf
198
303_b_Az-Delivery-x_Quick-Start-Guide - HD44780 2004 LCD Display Bundle FC-113 4x20 Zeichen mit I2C Schnittstelle Blau_1a.pdf
199 * im Aufbau (0) 303_b_Az-Delivery-x_Quick-Start-Guide - HD44780 2004 LCD Display 4x20 Zeichen Blau_1a.pdf
200
303_b_Az-Delivery-x_Quick-Start-Guide - DHT22 / AM2302 Temperatur- und Luftfeuchtigkeitssensor_1a.pdf
201
303_b_Az-Delivery-x_Quick-Start-Guide - UNO R3 mit USB-Kabel (100% kompatibel mit ARDUINO UNO R3)_1a.pdf
202
303_b_Az-Delivery-x_Quick-Start-Guide - ARDUINO MEGA 2560 R3_1a.pdf
203
303_b_Az-Delivery-x_Quick-Start-Guide - ESP-32 Development-Board V2 - Kit C (mit ESP8266 Chip)_1a.pdf
204
303_b_Az-Delivery-x_Quick-Start-Guide - 1,77 Zoll SPI TFT-Display_1a.pdf
205
303_b_Az-Delivery-x_Quick-Start-Guide - 1,8 Zoll SPI TFT-Display_1a.pdf
206
303_b_Az-Delivery-x_Quick-Start-Guide - 0,91 Zoll I2C OLED Display_1a.pdf
207
303_b_Az-Delivery-x_Quick-Start-Guide - 0,96 Zoll I2C OLED Display_1a.pdf
208
303_b_Az-Delivery-x_Quick-Start-Guide - Nano V3.0 mit CH340_1a.pdf
209
303_b_Az-Delivery-x_Quick-Start-Guide - NodeMCU Lua Lolin V3 Modul mit ESP8266 12E_1a.pdf
210
303_b_Az-Delivery-x_Quick-Start-Guide – LCD 2x16 Display & I2C-Adapter-Set FC-113_1a.pdf
211
303_b_Az-Delivery-x_Quick-Start-Guide - RFID RC522 Set mit Reader, Chip und Card (13,56MHz)_1a.pdf
212
303_b_Az-Delivery-x_Quick-Start-Guide - 16-in-1 Kit - Zubehörset für ARDUINO UNO_1a.pdf
213
303_b_Az-Delivery-x_Quick-Start-Guide - FT232RL FTDI Adapter_1a.pdf
214
303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266-01S - WLAN 802.11 b-g-n_1a.pdf
215
303_b_Az-Delivery-x_Quick-Start-Guide - Logic Analyzer Modul 24MHz 8-Kanäle_1a.pdf
216
303_b_Az-Delivery-x_Quick-Start-Guide - DS3231 RTC (Real Time Clock) ZS-042_1a.pdf
217
303_b_Az-Delivery-x_Quick-Start-Guide - 433MHz Funk - Sende und Empfänger Modul_1a.pdf
218
303_b_Az-Delivery-x_Quick-Start-Guide - ATTiny85 - Digispark Rev.3 Kickstarter_1a.pdf
219
303_b_Az-Delivery-x_Quick-Start-Guide - ESP-32 Development-Board mit Adapterkarte (mit EPS32 Chip)_1a.pdf
220

221

222

223
7
224
303_b_Az-Delivery-x_Quick-Start-Guide - NEO-6M GPS-Modul mit EEPROM und Built-in Aktiv-Antenne_1a.pdf
225
303_b_Az-Delivery-x_Quick-Start-Guide - 35-in-1 Sensor-Kit für ARDUINO_1a.pdf
226
303_b_Az-Delivery-x_Quick-Start-Guide - LED Matrix Display 4mal 8x8=64er V3.0_1a.pdf
227
303_b_Az-Delivery-x_Quick-Start-Guide - HC-SR04 Ultraschall Sensor Modul_1a.pdf
228
303_b_Az-Delivery-x_Quick-Start-Guide - NodeMCU ESP32 mit OLED Display 433Mhz LoRa_1a.pdf
229
303_b_Az-Delivery-x_Quick-Start-Guide - 7-Segment Display - 4 Digit, 3642BH Display Modul, TM1637_1a.pdf
230

231

232

233 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - ARDUINO UNO R3 – Startertutorial_1a.pdf
234 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - ARDUINO UNO R3_Startertutorial_1a.pdf
235 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - SPI Reader Datenlogger Modul für microSD-Karten FAT32 +++ Tutorial_1a.pdf
236 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - SIM-808 Board GSM-GPS StarterTutorial_1a.pdf
237 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - RFID RC522 Kit mit Lesegerät Startertutorial_1a.pdf
238 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - Real Time Clock RTC-ZS-042 Startertutorial_1a.pdf
239 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - Nano V3 Startertutorial_1a.pdf
240 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - Mega2560-R3 Startertutorial_1a.pdf
241 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - Logic-Analyzer Startertutorial_1a.pdf
242 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - HC-SR04 Ultraschall Modul Startertutorial_1a.pdf
243 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - GPRS-Shield Startertutorial_1a.pdf
244 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - FT232RL FTDI Adapter Startertutorial_1a.pdf
245 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - DS18B20 Temperatur-Sensor_1a.pdf
246 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - DHT22 Startertutorial_1a.pdf
247 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - DatenLogger Modul für SD-Karten FAT32 +++ StarterTutorial_1a.pdf
248 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - ATTiny85 - Digispark Rev.3 Startertutorial_1a.pdf
249 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 433MHz Funk Sender und Empfänger - Startertutorial_1a.pdf
250 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 4-digit 7-Segm. LED-Display – Startertutorial_1a.pdf
251 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 4x 8x8LEDs =256 LED Matrix Display – Startertutorial_1a.pdf
252 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - WiFi - D1-Mini-NodeMCU StarterTutorial_1a.pdf
253 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - WLAN ESP8266-01S mit Relais StarterTutorial_1a.pdf
254 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 35-in-1 ARDUINO Sensor-Kit (84 Seiten)_1a.pdf
255 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 16x2 LCD I2C Display – Startertutorial_1a.pdf
256 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 16x2 LCD I2C Display - Tutorial_1a.pdf
257 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 128x64 LCD Display _1a.pdf
258 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - MB102 ebook_1a.pdf
259 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - 0,96 Zoll I2C OLED Display_1a.pdf
260 doppelt 303_b_Az-Delivery-x_Quick-Start-Guide - ESP8266 0,91 OLED Display Startertutorial_1a.pdf
261
303_b_Az-Delivery-x_Quick-Start-Guide - KY-007
262
303_b_Az-Delivery-x_Quick-Start-Guide - KY-010
263
303_b_Az-Delivery-x_Quick-Start-Guide - KY-014
264
303_b_Az-Delivery-x_Quick-Start-Guide - KY-017
265
303_b_Az-Delivery-x_Quick-Start-Guide - KY-027
266
303_b_Az-Delivery-x_Quick-Start-Guide - KY-030
267
303_b_Az-Delivery-x_Quick-Start-Guide - KY-039




Az-Delivery Vertriebs GmbH
Bräugasse 9
D-94469 Deggendorf
mailto:[email protected]
https://www.az-delivery.com









6)                  Az-Delivery Sensoren






AZDelivery 3 x MQ-2 Gas Sensor Rauch Sensor Luftqualität Modul...
Preis: EUR 8,99




AZDelivery Farbsensor TCS230 TCS3200 Farben Sensor Modul für...
Preis: EUR 5,99





AZDelivery 3 x GY-BME280 Barometrischer Sensor für Temperatur,...
Preis: EUR 14,99





AZDelivery 3 x ADS1115 ADC Modul 16bit 4 Kanäle für Arduino...
Preis: EUR 11,99




AZDelivery GY-68 BMP180 Barometrischer Luftdruck und...
Preis: EUR 3,99





AZDelivery 3 x HC-SR501 PIR Bewegungssensor Bewegungsmelde...
Preis: EUR 5,99





AZDelivery 128 x 64 Pixel 0,96 Zoll OLED I2C Display für...
Statt EUR 6,49 Preis: EUR 5,99




AZDelivery 3 x MQ-135 Gas Sensor Luftqualität Modul für...
Preis: EUR 7,99




AZDelivery NEO-6M GPS Modul baugleich zu Ublox mit GRATIS EBOOK!
Preis: EUR 9,99




AZDelivery Real Time Clock RTC DS3231 I2C Echtzeituhr für...
Preis: EUR 6,29




AZDelivery 3 x Bodenfeuchtesensor Hygrometer Boden...
Preis: EUR 5,99





AZDelivery MAX6675 Temperatur Sensor mit Sonde K-Typ und...
Preis: EUR 6,49




AZDelivery ADS1115 ADC Modul 16bit 4 Kanäle für Arduino und...
Preis: EUR 5,49



Aihasd GY-906 MLX90614ESF MLX90614 Berührungslose Temperatur...
Preis: EUR 8,99




AZDelivery 3 x GY-521 MPU-6050 3-Achsen-Gyroskop und...
Preis: EUR 6,99






DIN A4  ausdrucken
********************************************************I*
Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected]
ENDE