ESP32: Wetterdaten wie Temperatur, Luftfeuchte, Luftdruck und Kursdaten in Dollar (Euro auch möglich) von BTC, ETC, SOL, DOGE, NANO und DUINO mit User-Wallet und auch die Zeit anzeigen. Auch gibt es Benachrichtigungen per WhatsApp, Code siehe hier. „ESP32 Ticker mit WhatsApp Benachrichtigung“ weiterlesen
ESP32: Wetterdaten wie Temperatur, Luftfeuchte, Luftdruck und Kursdaten von BTC, ETC, SOL, DOGE, NANO und DUINO mit User-Wallet anzeigen
Vor 8 Jahren hatte ich schon mal über das OLED Display „Don’t give up! berichtet. Und während der Pandemie diente es als CO2 Anzeige. Das habe ich nun abgebaut und durch ein paar Abfragen per REST-Api von OpenWeatherMap und Coingecko umprogrammiert. Das Ergebnis sieht man in diesem Video:
Es werden mit dem ESP32: Wetterdaten wie Temperatur, Luftfeuchte, Luftdruck und Kursdaten von BTC, ETC, SOL, DOGE, NANO mit DUINO User-Wallet angezeigt. Das Programm sieht ungefähr so aus: „ESP32: Wetterdaten wie Temperatur, Luftfeuchte, Luftdruck und Kursdaten von BTC, ETC, SOL, DOGE, NANO und DUINO mit User-Wallet anzeigen“ weiterlesen
Die Arduino IDE 2.2.1: Ein Werkzeug für Innovation und Kreativität in neuer Version mal was anderes als iPhone 17 plus
In einer Welt, in der Technologie und Elektronik einen immer größeren Stellenwert einnehmen, ist die Arduino IDE (Integrated Development Environment) zu einem unschätzbar wertvollen Werkzeug geworden. Arduino ist weithin bekannt für seine Benutzerfreundlichkeit und seine Fähigkeit, Menschen jeden Alters in die Welt der Elektronik und Programmierung einzuführen.
Die Arduino IDE hat sich als unschätzbares Werkzeug für Entwickler, Hobbyisten und Bildungseinrichtungen etabliert. Mit ihrer Benutzerfreundlichkeit, ihrer lebendigen Community und ihren umfangreichen Ressourcen bietet sie eine ideale Plattform, um in die Welt der Elektronik und Programmierung einzutauchen. Ob Sie ein Anfänger sind, der gerade erst anfängt, oder ein erfahrener Entwickler, der komplexe Projekte erstellen möchte, die Arduino IDE bietet die Werkzeuge und Unterstützung, die Sie benötigen, um Ihre Ideen in die Realität umzusetzen.
Hier ein paar allgemeine Vorteile auch zur neuen Version: „Die Arduino IDE 2.2.1: Ein Werkzeug für Innovation und Kreativität in neuer Version mal was anderes als iPhone 17 plus“ weiterlesen
Für den Urlaub: Free WLAN Wifi-Scanner mit LED anzeige mit Wemo (ESP8266)
Wer noch für den Urlaub einen freien Wifi-Finder braucht, kann einen Wemo (ESP8266) verwenden, es muss ja nicht immer ein Raspberry Pi sein. Einfach dieses kleinen c Programm mit der Arduino IDO in den Wemo flashen, und mit 5 Volt an einem USB Port mit Strom versorgen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
/* * Wifi Finder der alle fünf Sekunden die Wifis scannt und für jedes freie WLan einmal kurz die LED anschaltet. * * Thomas Wenzlaff (c) 2019 www.wenzlaff.info */ #include "ESP8266WiFi.h" void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); pinMode(LED_BUILTIN, OUTPUT); Serial.println("Setup durchgeführt"); printMacAddress(); } void loop() { Serial.println("Starte den Scann nach WIFI ..."); digitalWrite(LED_BUILTIN, LOW); const int n = WiFi.scanNetworks(); Serial.println("OK, Scann durchgeführt"); if (n == 0) Serial.println("Keine Netzwerke gefunden"); else { Serial.print(n); Serial.println(" Netzwerk gefunden"); for (int i = 0; i < n; ++i) { Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(" dBm)"); Serial.print(" Verschlüsselung: "); printEncryptionType(WiFi.encryptionType(i)); delay(10); } } Serial.println(""); digitalWrite(LED_BUILTIN, HIGH); delay(5000); } void printEncryptionType(int thisType) { switch (thisType) { case ENC_TYPE_WEP: Serial.println("WEP"); break; case ENC_TYPE_TKIP: Serial.println("WPA"); break; case ENC_TYPE_CCMP: Serial.println("WPA2"); break; case ENC_TYPE_NONE: Serial.println("Keine"); digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); break; case ENC_TYPE_AUTO: Serial.println("Auto"); break; } } void printMacAddress() { byte mac[6]; WiFi.macAddress(mac); Serial.print("MAC: "); Serial.print(mac[5], HEX); Serial.print(":"); Serial.print(mac[4], HEX); Serial.print(":"); Serial.print(mac[3], HEX); Serial.print(":"); Serial.print(mac[2], HEX); Serial.print(":"); Serial.print(mac[1], HEX); Serial.print(":"); Serial.println(mac[0], HEX); } |
Der Sketch verwendet nur 266424 Bytes (25%) des Programmspeicherplatzes. Das Maximum sind 1044464 Bytes. Globale Variablen verwenden 27124 Bytes (33%) des dynamischen Speichers, 54796 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.
Hier noch ein kleines 26 Sekunden Video um zu sehen wie der Scanner mit dem obigen Programm läuft:
Auf der Seriellen Konsolen werden übrigens die Daten auch ausgegeben, z.B.
Quick-HowTo: Aktuellste cmake Version 3.13.4 auf dem Raspberry Pi selbst compilieren und linken
Im Debian Repo liegt für cmake nicht die neueste Version. Für ein Projekt brauche ich aber cmake mind. 3.13. Deshalb hier eine Anleitung wie die neueste Version von cmake selbst erstellt und installiert werden kann.
Deshalb erst mal die evl. installierte Version von cmake ausgeben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
cmake --version # Ergebnis cmake version 3.7.2 # Ok, wir müssen uns die aktuelle Version holen und selbest compilieren. # Das dauert auf dem Pi aber ca. eine Stunde. mkdir Download-cmake cd Download-cmake # Gewünschte Version von https://cmake.org/files/ holen, in diesem Beispiel 3.13.4 wget https://cmake.org/files/v3.4/cmake-3.13.4.tar.gz # Archive entpacken tar -xvzf cmake-3.13.4.tar.gz # In das Verz. wechseln cd cmake-3.13.4/ # Konfigurieren sudo ./bootstrap # make und install ... eine Stunde später ... sudo make sudo make install # Nun checken wir die Intallation cmake --version # Ergebnis # cmake version 3.13.4 |
Jubiläum: 20 Jahre Homepage wenzlaff.de!
Heute vor 20 Jahren, am 1.12.1998 ging die Domain wenzlaff.de zum ersten mal ans Netz. Wie die Zeit vergeht.
Es war eine statische Webseite mit Freeware und Sprüche Datenbank mit Newsletter und einigen C++ und Java Programmen zum kostenlosen Download aus meiner Hand. Hier ein etwas unvollständiges Bildschirmfoto, mehr habe ich leider nicht mehr gefunden:
Aber auch schon lange vor dieser Zeit, hatte ich eine Homepage, die aber dann auf den Servern der UNI-Bremen kostenlos gehostet wurde. Da hatte ich als Informatiker einen Zugang mit Akustikkoppler mit 300 Baud und Lochkarten hatten wir da auch noch. Das war wenigstens etwas zum anfassen, batches mit Lochkarten schreiben, cool!
Und es gab keine Werbung im Internet.
Die schöne alte Zeit. Und in der Zwischenzeit gab es immer mal neue Technologie. Vom statischen html zum xhtml und JavaScript über einen eigenen Java html Generator mit Templates bis heute zu den Content-Management-System mit eigener Datenbank.
Bis heute konnte ich auch auf dieser Webseite immer auf Werbung verzichten. Juhu …
Wie soll es weiter gehen? Gibt es noch Themen nach über 1000 Beiträgen? Ideen habe ich noch genug, was fehlt ist die Zeit!
In diesem Sinne, vielen Dank an alle Leser und für das viele Feedback (die über 1000 Kommentare mit Kommentarfunktion habe ich ja abgeschaltet…DSGVO läßt grüßen) das auch nach wie vor erwünscht ist, aber eben über E-Mail 😉

Schöner C/C++ Code mit clang-format in 10 Minuten
Wie kann C/C++/Java … Quellcode auf dem Raspberry Pi headless formatiert und hübscher gemacht werden. Mit dem clang-format Programm das auch in Visual Studio, Emacs, Vim ua. Programme integriert werden kann. Das ist auch in Projekten sehr wichtig, um gleiche formatierungen für alle Projektmitglieder zu nutzen. Auch klappt es dann besser mit dem compare!
Das ist schnell installiert mit:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sudo apt-get install clang-format # Test ob es läuft und in welcher Version clang-format -version # Ergebnis: # clang-format version 3.8.1-24+rpi1 (tags/RELEASE_381/final) # Aufruf mit Ausgabe über Konsole, wir formatieren im Google Style möglich währe aber auch noc # LLVM, Chromium, Mozilla, WebKit: clang-format -style=Google programm-4.cpp # Aufruf mit Ausgbe in neue Datei: clang-format -style=Google programm-4.cpp > programm-4-format.cpp # Aufruf mit Ausgbe in der gleichen Datei, der wohl häufigste Anwendungsfall: clang-format -style=Google -i programm-4.cpp |
Ok, dann noch hier die ganze Anleitung: „Schöner C/C++ Code mit clang-format in 10 Minuten“ weiterlesen
GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3
Mit der wiringpi kann man leicht auf die GPIO Ports des Raspberry Pi zugreifen. Mit den Pins kann man dann leicht Hardware steuern. Auf dem Blog gibt es eine gute ausführliche Anleitung. Das will ich nicht wiederholen, sondern hier geht es darum wie man mit C++ auf die GPIO zugreifen kann. Obwohl man auch in 15 Minuten nach Installation der wiringpi Api die GPIO über Bash Scripte oder Python ansprechen kann.
Hier nun die nötigen Vorarbeiten um C++ mit wiringpi machen zu können. Es sind dort auch einige C Beispiele im Repo. Dazu aber später mehr.
Entweder man installiert das Package mit
1 |
sudo apt-get install wiringpi |
oder wie hier nun beschrieben über Git die neueste Version und compiliert es selber mit dem Ausführen des build Scriptes. Das ist hier beschrieben da wir das als API für die C++ Programmierung brauchen.
„GPIO Schnittstelle: Mit WiringPi in 15 Minuten auf die GPIO Ports des Raspberry Pi zugreifen – Teil 3“ weiterlesen
In 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W – Teil 2
In der ersten Lektion haben wir in 15 Minuten gesehen wie wir checken können ob C++ auf dem Raspberry Pi installiert ist und haben unser 1. eigenes C++ Programm auf dem Pi mit der Kommandozeile erstellt, compiliert und ausgeführt.
Nun wollen wir auf dem Pi, in 15 Minuten die erste Klasse erstellen, da wir ja Objektorientiert programmieren wollen. Dazu erstellen wir mit dem vi ein einfache Klasse zum ausgeben der Temperatur des Pi.
Wir nennen die Klasse Temperatur
. Damit wir nicht alles in einer Datei haben, erstellen wir für jedes Objekt eine eigene Datei. Also zuerst die Deklaration in der Temperatur.h
:
„In 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W – Teil 2“ weiterlesen
In 15 Minuten zum eigenen C++ Programm auf dem Raspberry Pi Zero W – Teil 1
C++ läuft auf dem Raspberry Pi 🙂
Hier mal eine Anleitung um in 15 Minuten das 1. C++ Programm zu schreiben. Das geht auch gut auf einen Raspberry Pi Zero W für 10 Euro. Es muss ja nicht immer Java und Desktop sein. So kommen Erinnerungen an die guten alten Zeiten hoch.
Also, wir checken auf der Konsole, ob und welcher C++ Compiler installiert ist mit
1 2 3 4 5 6 7 |
g++ --version # Ergebnis # g++ (Raspbian 6.3.0-18+rpi1) 6.3.0 20170516 # Copyright (C) 2016 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
Ok, dann kann es ja los gehen.
1 2 3 4 5 6 7 8 |
# Wir legen ein neues Verzeichnis an und wechseln da hin cd ~ mkdir cpp-programmieren cd cpp-programmieren # Wir legen eine neue Datei an mit dem vi das muss sein vi programm-1.cpp # mit diesem Inhalt: |
und speichern die Datei mit „esc: wq„.
Wir können mal eben checken ob die Datei richtig angelegt wurde mit
1 2 3 4 5 6 7 8 9 10 11 12 |
cat programm-1.cpp # Ergebnis: #include <iostream> using namespace std; // (c) 2018 Thomas Wenzlaff // programm-1.cpp int main() { cout << "www.wenzlaff.de\n"; return 0; } |
Jetzt können wir die erste C++ Datei schon compilieren mit
1 2 3 4 5 6 7 8 9 10 11 12 |
g++ -o start-prg-1 programm-1.cpp # mit der Option -o geben wir den Zielprogrammnamen an # nach 10 Sekunden wird kein Fehler angezeigt # Nun checken wir ob das Programm mit namen start-prg-1 vorhanden ist mit ls -la # Ergenbis: # -rwxr-xr-x 1 pi pi 8940 Jan 8 03:03 start-prg-1 # Nun können wir unser erstes C++ Programm starten mit ./start-prg-1 # Ergebnis: www.wenzlaff.de |
Wir haben nun in 15 Minuten getestet, ob der C++ compiler vorhanden ist und Dateien compilieren kann.
Im Teil 2 werden wir richtig OO!