====== Freifach Programmieren für Fortgeschrittene ====== Folgende Punkte sind vorgesehen: * Programmierung des ESP32 in C++ oder Python, Grundlagen von Mikroelektronik * Vorbereitung auf die [[https://soi.ch|Informatik-Olympiade]]. Wer schon üben möchte: [[https://soi.ch/contests/2020/round1/overview/|Aufgaben der ersten Runde vom letzten Jahr]] * Weitere Wünsche der Teilnehmer. ===== Projektideen ===== * LED-Display, steuerbar über WiFi, z.B. so was: https://hackaday.com/2019/08/24/led-triangle-looks-cool-someone-tell-alt-j/ * Weitere kleine Anzeigen, die Live-Daten anzeigen, bzw. Knöpfe, um bestimmte Aktionen auszulösen. * Mess-Station, die über WiFi Daten übermittelt (z.B. Temperatur, Luftfeuchtigkeit, Lärmpegel, Helligkeit, Wifi-Qualität, CO2-Gehalt, TVOC, Windgeschwindigkeit und -richtung,...) * WiFi zu IR Übersetzer ===== Fernunterricht 8./15. Januar ===== [[lehrkraefte:blc:informatik:ffprg2-2020:webdev|Einstieg in die Web-Entwicklung]] ===== Auftrag für Freitag 4. Dezember (Unterrichtsausfall) ===== Programmieren Sie ein [[lehrkraefte:blc:informatik:ffprg2-2020:dobble|Dobble-Kartenset]] ===== SOI ===== * https://soi.ch/contests/2021/round1/ * [[lehrkraefte:blc:informatik:ffprg2-2020:soi|Vorbereitung auf die SOI]] ===== MQTT ===== IoT-Kommunikations-Protokoll. * [[lehrkraefte:blc:informatik:ffprg2-2020:mqtt|MQTT auf dem ESP32]] ===== Elektronik-Grundlagen ===== * [[lehrkraefte:blc:informatik:ffprg2-2020:electronic-basics|$U=R \cdot I$, Dioden, Spannungsteiler, Taster]] * [[lehrkraefte:blc:informatik:ffprg2-2020:7segment-display|7-Segment Anzeige, "from scratch"]] * [[lehrkraefte:blc:informatik:ffprg2-2020:weitere-anzeigen|Weitere Anzeigen 4-digit 7-Segment und 16x2 Buchstaben LCD]] ===== ESP32 in C++ ===== * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-basics|Das erste Programm]] * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-basics-onboard-led|Die onboard-LED blinken lassen]] * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-io-and-vars|Variablen, Typen und Ausgabe]] * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-for-and-if|Schlaufen und Selektion]] * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-functions|Funktionen]] * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-arrays|Arrays]] * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-strings|Strings]] * [[lehrkraefte:blc:informatik:ffprg2-2020:esp32-gpios|GPIOs, LEDs, Schalter]] ===== NTP ====== * [[https://lastminuteengineers.com/esp32-ntp-server-date-time-tutorial/|NTP Erklärung]] ===== API ====== * [[lehrkraefte:blc:informatik:ffprg2-2020:api|API]] ===== OTA ====== * [[https://randomnerdtutorials.com/esp32-over-the-air-ota-programming/|OTA]] * Zusatzaufgabe zum obigen Beispiel: Warum ist die Login-Seite auf dem ESP32 komplett nutzlos (und gefährlich)? ===== Webserver auf dem ESP32 ===== * Siehe z.B. https://randomnerdtutorials.com/esp32-web-server-spiffs-spi-flash-file-system/ Upload der SPIFFS-Dateien: https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/tag/1.0 In den Ordner /home/techlab/Arudino/tools/. entpacken (den Ordner tools anlegen, falls nötig). ==== mDNS ==== Siehe auch https://techtutorialsx.com/2020/04/18/esp32-advertise-service-with-mdns/ #include // Im setup(), wenn die WiFi-Verbindung steht: if(!MDNS.begin("hanslisIOT")) { Serial.println("Error starting mDNS"); return; } // nicht sicher, ob die folgende Zeile nötig ist, macht aber Sinn... MDNS.addService("http", "tcp", 80); // Starten des Webservers... Jetzt sollte im lokalen Netzwerk der ESP32 mit http://hanslisIOT/ erreichbar sein.