Wemos D1 R32 en formato UNO
FunduinoÚltima actualización el
Ein ESP32 in der Bauform des Arduino UNO – Pinbelegung, WiFi und Bluetooth
Was das Wemos D1 R32 kann
Board in der Arduino IDE installieren
1 / 2
Board und Port auswählen
1 / 2
I2C-Pins
SPI-Pins
Digitale Pins
1 / 2
Sketch: LED mit einem Taster schalten
int LED = 13;
int Taster = 12;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(Taster, INPUT_PULLUP);
}
void loop()
{
// Durch INPUT_PULLUP liegt der Pin im Ruhezustand auf HIGH.
// Gedrueckt wird er mit GND verbunden und damit LOW.
if (digitalRead(Taster) == LOW) digitalWrite(LED, HIGH);
else digitalWrite(LED, LOW);
}Touch-Pins
1 / 3
Sketch: Touch-Pin auslesen
void setup()
{
// Serielle Kommunikation starten
Serial.begin(9600);
delay(1000);
}
void loop()
{
// Messwert nur einmal pro Durchlauf lesen und zwischenspeichern
int Messwert = touchRead(14);
Serial.print("Wert: ");
Serial.print(Messwert);
// Kleiner Wert -> Pin wurde beruehrt
if (Messwert < 25) Serial.println(" -> Pin beruehrt");
// Bei groesseren Werten wurde der Pin nicht beruehrt
else Serial.println(" -> Pin nicht beruehrt");
delay(1000);
}Analoge Pins
1 / 3
Sketch: Potentiometer auslesen
// Potentiometer an GPIO 35
int Potentiometer = 35;
// Variable fuer den gelesenen Wert
int GelesenerWert = 0;
void setup()
{
Serial.begin(9600);
delay(1000);
}
void loop()
{
// Analogen Wert lesen (0 bis 4095)
GelesenerWert = analogRead(Potentiometer);
Serial.println(GelesenerWert);
delay(500);
}WiFi: einen kleinen Webserver bauen
1 / 2
Sketch: Webserver mit Zufallszahlen
#include "WiFi.h"
// SSID und Passwort des Routers
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
WiFiServer Server(80);
WiFiClient Client;
// Minimum und Maximum der Zufallszahlen
int Minimum = 1;
int Maximum = 49;
void setup()
{
Serial.begin(9600);
delay(1000);
// WiFi starten
WiFi.begin(Router, Passwort);
// Verbindung herstellen
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
Server.begin();
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.SSID());
// IP des Boards anzeigen - diese Adresse gibst du im Browser ein
Serial.println(WiFi.localIP());
// Zufallsgenerator mit dem Rauschen an einem offenen Analogpin starten
randomSeed(analogRead(35));
}
void loop()
{
Client = Server.available();
if (!Client) return;
// Solange der Client verbunden ist ...
while (Client.connected())
{
if (!Client.available()) continue;
// Anforderung vom Client lesen ...
char Zeichen = Client.read();
// ... und erst nach dem Zeilenumbruch antworten
if (Zeichen != '\n') continue;
/*
HTML-Seite aufbauen.
Die folgenden Anweisungen muessen mit print oder println
gesendet werden. println "verschoenert" den Quelltext,
es erzeugt einen Zeilenumbruch im Quelltext.
*/
Client.println("HTTP/1.1 200 OK");
Client.println("Content-type:text/html");
// Leerzeile zwingend erforderlich
Client.println();
Client.println("<!doctype html>");
Client.println("<html>");
Client.println("<body>");
// Alle 60 Sekunden aktualisieren
Client.println("<meta http-equiv=\"refresh\" content=\"60\">");
// Ueberschrift und horizontale Linie
Client.println("<h2>Zufallszahlen</h2>");
Client.println("<hr>");
// Sechs Zufallszahlen anzeigen.
// random() liefert Werte bis Maximum - 1, deshalb Maximum + 1.
for (int i = 0; i < 6; i++)
{
int Zahl = random(Minimum, Maximum + 1);
Client.print(Zahl);
Client.print(" ");
}
Client.println("<hr>");
// IP-Adressen anzeigen
Client.print("IP dieses Boards (Server): ");
Client.print(WiFi.localIP());
Client.print("<br>IP des aufrufenden Geraets: ");
Client.print(Client.remoteIP());
// Seite schliessen
Client.println("</body>");
Client.println("</html>");
// HTTP-Antwort endet mit einer neuen Zeile
Client.println();
break;
}
// Verbindung beenden
delay(1);
Client.stop();
}Bluetooth LE: die interne LED per App schalten
Sketch: interne LED per Bluetooth LE schalten
#include "ArduinoBLE.h"
/*
Eindeutige UUIDs bestimmen:
https://www.guidgenerator.com/online-guid-generator.aspx
https://www.uuidgenerator.net/
BLERead | BLEWrite | BLENotify -> lesen, schreiben, Info
Service und Characteristic brauchen jeweils eine eigene UUID.
*/
// Name des BLE-Service
BLEService LEDSchalten("19b10000-e8f2-537e-4f6c-d104768a1214");
BLEUnsignedCharCharacteristic Auswahl("19b10001-e8f2-537e-4f6c-d104768a1214", BLERead | BLEWrite | BLENotify);
// interne LED
int LED = 2;
void setup()
{
Serial.begin(9600);
// pinMode festlegen
pinMode(LED, OUTPUT);
// BLE starten
if (!BLE.begin()) Serial.println("Bluetooth-Modul konnte nicht gestartet werden!");
else Serial.println("Bluetooth-Modul erfolgreich gestartet!");
// Name festlegen (wird in der App angezeigt) und den Service zuweisen
BLE.setLocalName("LED schalten");
BLE.setAdvertisedService(LEDSchalten);
// Auswahl als Platzhalter fuer den in der App gewaehlten Wert
LEDSchalten.addCharacteristic(Auswahl);
// Service LEDSchalten hinzufuegen
BLE.addService(LEDSchalten);
// Startwert fuer die Kommunikation schreiben
Auswahl.writeValue(0);
// Sichtbar werden
BLE.advertise();
}
void loop()
{
// Auf die Verbindung zu Geraeten warten
BLEDevice Verbindung = BLE.central();
// Wenn der ESP32 mit einem Geraet verbunden ist ...
if (Verbindung)
{
Serial.println("Verbunden ... ");
// Solange der Controller mit einem Geraet verbunden ist ...
while (Verbindung.connected())
{
if (Auswahl.written())
{
// LED einschalten
if (Auswahl.value() == 1)
{
Serial.print(Auswahl.value());
Serial.println(" -> LED ein");
digitalWrite(LED, HIGH);
}
// LED ausschalten
if (Auswahl.value() == 0)
{
Serial.print(Auswahl.value());
Serial.println(" -> LED aus");
digitalWrite(LED, LOW);
}
}
}
}
}Calificar la guía