Inhalt
Was kann der Wemos D1 Mini
Aktuell gibt es zwei Version des Wemos D1.Die Pinbelegung ist identisch. Der D1 Mini Typ C wird mit einen Mini-USB-Anschluss, der D1 Mini V4.0 wird mit USB-C verbunden.
- digitale Ein- und Ausgänge
- analoger Eingang
- Bussysteme: I2C und SPI
- WiFi
Pinbelegung
I2C-Pins
Der I²C-Bus (Inter Integrated Circuit) wurde ursprünglich von Philips entwickelt. Ein Controller (hier der Wemos D1 Mini) sollte mit verschiedenen Peripheriegeräten kommunizieren können. Die Anschlüsse tragen die Bezeichnungen SDA und SCL.
Einige Bauteile werden mit I2C gesteuert:
SPI-Pins
Auch der SPI-Bus (Serial Peripheral Interface) dient der Kommunikation zwischen dem Controller und Peripheriegeräten. Der SPI-Bus benötigt zwei Datenleitungen und zwei Steuerleitungen:
- COPI (Controller Out Peripherie In) vom Controller ausgehende Kommunikation mit einem Peripeheriegerät
- CIPO (Controller In Peropherie Out) vom Peripherie-Gerät aisgehende Kommunikation mit dem Controller
- CS (Chip Select) der Controller aktiviert und startet die Kommunikation mit dem Peripheriegerät
- SCK (Serial Clock) vom Controller erzeugte Taktfrequenz für den SPI-Bus
Anmerkung:
Es gibt mehrere Initiativen die alten, aber immer noch weit verbreiteten Bezeichnungen MOSI (Master Out Slave In -> COPI) und MISO (Master In Slave Out -> CIPO) zu ersetzen:
https://www.sparkfun.com/spi_signal_names
https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/
https://docs.arduino.cc/learn/communication/spi
SPI-Pins
D7 -> COPI/SDO
D6 -> CIPO/SDI
D5 -> CLK
D8 -> CS
Digitale Pins
Digitale Pins
D0 Zustand HIGH beim Hochladen
D5
D6
D7
D8 darf beim Hochladen nicht HIGHsein
D1
D2
D3 aktiviert Firmware-Upload wenn der Zustand LOWist
D4 darf beim Hochladen nicht LOWsein
kann nach dem Hochladen als normaler Eingabe-/Ausgabepin verwendet werden.
interneLED
Das LED-Blinkprogramm an Pin D8
int LED = D8;void setup(){ pinMode(LED, OUTPUT);}void loop(){ digitalWrite(LED, HIGH); delay(1000); digitalWrite(LED, LOW); delay(1000);}
Wird der Anschluss D4 verwendet, leuchtet gleichzeitig die interne LED.
Analoger Pin
Das Wemos D1 Mini verfügt über einen analogen Pin mit der Bezeichnung A0. Die Auflösung beträgt 10 Bit, der maximale Wert ist 1023.
Beispiel:
Potentiometer am Pin A0
// Potentiometer an Pin A0int Potentiometer = A0;// Variable für den gelesenen Wertint GelesenerWert = 0;void setup() { Serial.begin(9600); delay(1000);}void loop() { // analogen Wert lesen GelesenerWert = analogRead(Potentiometer); Serial.println(GelesenerWert); delay(500);}
Ausgabe im Seriellen Plotter bei der Drehung des Potentiometers
WiFi
Beispiel: Das Programm zeigt im Browser 6 Zufallszahlen an.
Im Seriellen Monitor wird die mit DHCP ermittelte IP des Wemos D1 Mini angezeigt.
Diese Adresse musst du in einem Browser deiner Wahl eingeben.
Das dazugehörige Programm:
#include "ESP8266WiFi.h"// SSID und Passwort des Routerschar Router[] = "Router_SSID";char Passwort[] = "xxxxxxxx";WiFiServer Server(80);WiFiClient Client;// Minimum und Maximum der Zufallszahlenint Minimum = 1;int Maximum = 49;void setup(){ Serial.begin(9600); // auf serielle Verbindung warten while (!Serial); // 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 anzeigen Serial.println(WiFi.localIP()); // Zufallsgenerator mit dem Signal an A0 starten randomSeed(analogRead(0));}void loop(){ Client = Server.available(); if (Client) { // Seite aufbauen wenn SeiteAufbauen true ist boolean SeiteAufbauen = true; // solange der Client verbunden ist ... while (Client.connected()) { if (Client.available()) { // Anforderung vom Clienten lesen ... char Zeichen = Client.read(); // return (\n) gesendet if (Zeichen == '\n') { // wenn SeiteAufbauen den Wert true hat if (SeiteAufbauen) { /* HTML-Seite aufbauen die folgenden Anweisungen müssen mit print oder println gesendet werden println "verschönert" den Quelltext (erzeugt einen Zeilenumbruch im Quelltext) */ // HTML-Seite aufbauen Client.println("HTTP/1.1 200 OK"); Client.println("Content-type:text/html"); // Leerzeile zwingend erforderlich Client.println(); Client.println(""); Client.println(""); Client.println(""); // alle 60 Sekunden aktualisieren mit meta-Tag Client.println(""); // Überschrift H2 Client.println("Zufallszahlen
"); // horizontale Linie Client.println(""); // Zufallszahlen anzeigen for (int i = 0; i < 7; i++ ) { int Zahl = random(Minimum, Maximum); Client.println(Zahl); Client.println(" "); } Client.print(""); // IPs anzeigen Client.print("Eigene IP (Server): "); Client.print(Client.remoteIP()); //
break = neue Zeile Client.print("
IP Adresse Klient DHCP "); Client.print(WiFi.localIP()); // Seite schließen Client.println(""); Client.println(""); // HTTP-Antwort endet mit neuer Zeile Client.println(); // Seite vollständig geladen -> loop verlassen break; } // wenn new line (\n) gesendet wurde -> Seite aufbauen if (Zeichen == '\n') SeiteAufbauen = true; else if (Zeichen != '\r') SeiteAufbauen = false; delay(1); Client.stop(); } } } }}
Board installieren
Trage unter Datei -> Einstellungen eine zusätzliche Boardverwalter-URL ein:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
- Icon für den Boardverwalter anklicken oder Werkzeuge-> Board -> Boardverwalter
- nach esp8266 suchen
- Board installieren
Board auswählen
Wenn der Wemos D1 Mini nicht automatisch erkannt wurde, klicke auf „Wähle ein anderes Board und einen anderen Port“ und suche nach Wemos D1. Je nach Betriebssystem wird der USB-Port eine andere Bezeichnung haben.
Funduino - Dein Onlineshop für Mikroelektronik
Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
Mehr als 3.500 Artikel sofort verfügbar!
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE