 Also willkommen, es geht jetzt zum MicroPython ESP32, vielleicht haben man hier von euch ja vorhin den Vortrag schon gehört über ESP8266, also das sind gerade zwei so der üblichen Mikro-Kontroller, die es relativ günstig gibt, aber die trotzdem recht leistungsfähig sind. Und MicroPython ermöglicht halt, dass man die auch sehr komfortabel programmieren kann. Erstmal bis jetzt zur Einordnung. Ihr arbeitet alle mit irgendwelchen PCs, Servern und so weiter. Ihr habt wahrscheinlich ein Raspberry Pi, vielleicht auch schon mit Arduino gebastelt. Und ich sehe den ESP32 so ein bisschen zwischen dem Arduino und dem Raspberry Pi. Also er hat deutlich mehr Leistung wie ein Arduino, aber natürlich nicht so viel Ressourcen wie ein Raspberry Pi. Aber er braucht dafür auch nicht so viel Strom, der kann also in einem sehr stromsparmen Modus betrieben werden. Und beim Basteln ist natürlich so, man will irgendwelche IO-Pins und so haben. Und da sind natürlich diese kleinen Dinger besser geeignet wie jetzt irgendwie ein PC, wo man also jetzt nichts direkt ranlöten kann oder so. Also ein gut ausgebauter Mikro-Kontroller. Das links ist das übliche Modul-Package, so ein bisschen Silber mit Pins an der Seite dran. Das ist also das, was man auch hier auf diesem Teil hier sieht. Das ist das alte Package, wenn man so will, das große. Und der schwarze Bereich hier oben, was man nicht so richtig sieht, da ist eine aufgedruckte WLAN-Antenne. Also nur so eine Leiterbahn-Zickzack. Wenn man den silberen Deckel runter macht, sieht es dann so aus. Hier ist der Mikro-Kontroller. Hier unten wahrscheinlich so ein Flash-Chip, hier irgendwie Quartz oder so was. Und noch so ein paar Widerstände und so weiter. Die Daten sieht man rechts. Das Ding ist so als Nachfolger vom 8266 gedacht. Der Stromverbrauch gibt es eine sehr weite Spanne. Also diese 5 Mikro-Ampere hier ist natürlich im Sleep-Modus, wenn allenfalls dieser Ultralow-Power-Prozesse arbeitet. Und wenn man halt WLAN und Bluetooth und alles anmacht, dann kann er auch durchaus 60mAh brauchen. Witzig ist, das ist ein Dual-Core-Prozessor. Der Vorgänger war ja nur ein Single-Core und er hat auch mehr Taktrade wie der Vorgänger. Dual-Core stimmt nur, wenn man die leistungsfähigen CPUs betrachtet. Eigentlich sind es sogar 3-Cores, weil er hat noch so einen Ultralow-Power-Prozessor. Und der dient einfach dazu, dass man im Sleep-Modus halt noch so ein bisschen was machen kann. Einfach mal ab und zu ein Messwert, Sample und merken, ohne dass man jetzt den etwas mehr Stromverbrauchenden Hauptprozessor anschalten muss. 520 Kilobyte RAM ist jetzt natürlich nicht viel, wenn man es mit PCs vergleicht, aber wenn man es mit älteren Mikro-Kontrollen vergleicht, ist es schon wahnsinnig viel, weil die haben oft nur so ein paar hundert Bytes gehabt. Und der hat also immerhin 500 Kilobyte. Die Angabe bezieht sich auf das Vroom-Modul. Man hat es eine Folie vorher gesehen, da steht irgendwo Vroom drauf. Es gibt auch ein Modul noch, das heißt V Rover. Und es hat sogar noch mal einen externen RAM-Chip dabei, wo irgendwie seriell angeschlossen ist, der nochmal 4 MB RAM obendrauf legt. Das RAM ist allerdings nicht ganz so schnell wie das Internet, weil es halt seriell angeschlossen ist, aber immerhin besser mehr RAM mit langsam als gar kein zusätzliches RAM. Wenn man größere Python-Programme machen will, ist es vielleicht auch ganz geschickt, wenn man dieses Rover-Modul kauft, weil sonst kann es halt sein, dass einem irgendwann das RAM ausgeht. Und die meisten von den Dingen haben also 4 MB Flash, so für Dataisystem und für Code und so weiter. Die IO-Möglichkeiten sind also auch deutlich besser wie beim Vorgänger. Also wir haben so ganz normale Genere Purpose IO, Eingänge, Ausgänge. Man kann Pulsweitenmodulationen in Hardware bekommen. Also man muss dann quasi nur noch sagen, welche Frequenz, welche Duty-Seikel, dann wackelt das Ding von alleine in Hardware. Man kann Touchpads machen, das man einfach nur ein Metallleiter berührt und das der entsprechenden Wert dann zurückliefert. Und da braucht man keine externe Beschaltung dazu. Also man kann da einfach ein Draht anschließen und das ist alles. Die üblichen Sachen, I2C, I2S, SPI, normale serielle Schnittstellen, also U-Arts, RMT soll so viel wie Remote bedeuten. Das ist eigentlich für Infrarotfernsteuerungen gedacht, dass man einfach ein Bitmuster auf eine LED rausschieben kann, dass die halt einfach eine bestimmte Bit Sequenz dann überträgt. Man kann ja damit auch andere Sachen machen. Wenn man da mit LEDs ansteuern will, kann man das auch tun. Das Ding kann kein Bus, habe ich allerdings jetzt noch nichts damit gemacht. Man kann auch SD-Karten anschließen. Wobei es bei den SDs gibt es irgendwie so mehrere Modi, Digital-Analog-Wandel, Analog-Digital, und zwar mehr als einen. Die Vorgänger hatten glaube ich da eher wenige und der hat doch ziemlich viel. Einen Preamplifier gibt es auch noch für den AD-Wandel. Er hat ein Hallsensor drauf, also für Magnet-Feld-Messungen. Er kann seine Interne-Temperatur messen. Also wenn man wissen will, wie warm dem Chip grad ist, kann man den nehmen. Dann Wi-Fi bis zum Standard N. Also immerhin, ich weiß nicht, ob er 150 oder 300 macht, müssen wir vielleicht noch mal gucken, aber schnell genug. Und er kann WPA2, also aktueller Standard, halbwegs sicher mit Verschlüsselung und allem. Bluetooth kann er auch, konnte der Vorgänger noch nicht. Und zwar auch BLE-Wall. Geht allerdings, soweit ich weiß, in Micro-Python noch nicht, der fällt noch die entsprechende Software-Layer. Und Ethernet kann er auch, muss man aber halt extra noch vielleicht irgendwie ein Transi-Wurne-Buchse halt dran bauen, aber so die prinzipielle Logik ist also auch auf dem Chip mit drauf. So, das sieht es dann alles in allem aus. Also diese ganzen Ios, wo hier links sind, die sind wir gerade durchgegangen. Dieser Ultralow-Power Prozessor ist hier in der RTC Power Domain. Also das ist praktisch was mit separater Stromversorgung. Und das ist das Einzige, was er dann anlässt, wenn er im Sleep Mode ist. Da hat er also diesen kleinen Prozessor, hat ein bisschen Speicher, eine Power Management Unit und die Real-Time Clock ist da auch dabei. Deshalb heißt das Ding so auch erstaunlich hier. Das Ding kann Ios in Hardware, findet man auch nicht so oft auf Mikro-Kontrollern. Es hat ein Zufallszahlen-Generator drauf, es kann SHA2, uns kann auch RSA, Langzahlen, Arithmetik. Also die haben sogar so ein bisschen einen Crypto-Bereich gedacht, dass man da auch mehr Sicherheit bekommen kann. Das ist so der eigentliche Kern, also mit einem oder mit zwei Cores. Üblicherweise sind es zwei, es gibt aber einen anderen Chip, wo halt einer weggelassen wurde, Bye-bye Bluetooth und Hochfrequenzzeug und so weiter. Zu den Development Boards, man muss ein bisschen aufpassen, von dem Chip gab es verschiedene Revisionen. Also die Revision Null hatte wohl so ein paar kleine Bucks noch, also man will vielleicht eher die Revision 1 haben. Dann gibt es verschiedene Module, also ich habe hier mal zum Beispiel 1, man sieht, das ist ein relativ kleines Modul, da ist dieser Pico-Chip drauf. Das Modul hier ist ein bisschen größer. Wenn ihr mit so Bredboards arbeiten will, dann müsst ihr ein bisschen drauf gucken, dass das Ding halt auch Bredboard geeignet ist, weil nicht jedes Modul kann man da scheinig draufstecken. Also das hier ist sehr gut Bredboard geeignet, das dann ein bisschen weniger. Und es gibt auch manche, die man gar nicht wirklich vom Bredboard draufstecken kann, weil sie einfach irgendwie Bauteile auf der Rückseite haben oder sowas. Die übliche Ausstattung ist, dass ein Micro-USB Anschluss dran ist, dass ein USB nach Seriellwandler drauf ist und dass ein Spannungswandler drauf ist, weil das Ding braucht 3,3 Volt und aus dem USB kommen halt 5 raus. Und die Spannungen sind auch nach außen geführt, also man kann die auf der zusätzliche Elektronik dann benutzen, je nachdem, ob man die eine oder die andere braucht. Oft auch eine Lithium-Ionen-Akuladeschaltung, was leider oft nicht spezifiziert ist für was für Lithium-Batterien. Also ich habe manchmal so zwischen den Zählen gelesen, dass sie vielleicht lipo meinen, aber so wirklich dabei gestanden ist meistens nicht. Von daher darf er vielleicht ein bisschen vorsichtig sein. Es gibt auch mindestens einen so einen Development-Bord, wo so eine Standart Lithium-Zelle direkt hinten drauf eingeklipst werden kann in eine Batteriefassung. OLED-Displays sind auch recht günstig zu haben. Ich habe mir gerade einen auf diesem kleinen Board. Allerdings sind es in der Regel in Monochrom, was es auch gibt, Long-Range-Funkmodule. Wenn ihr also irgendwie so ein Kilometer überbrücken müsst per Funk, aber wenn ihr nicht viel Daten zu übertragen habt, also nur so ein paar Temperaturwerte oder sowas, könnt ihr das also mit Lora tun. Braucht dann allerdings auf beiden Seiten halt Lora oder Gateway. Und es gibt auch so diverse Modulsysteme, wo man so Hucke-Pack-Controller plus diverses andere Hucke-Pack stecken kann. Kann man also auf AliExpress oder so mal gucken, was da so alles gibt. Ein paar Beispiele habe ich jetzt auch. Das ist Lolin32 Pro. Der heißt deshalb Pro, weil er dieses Rover-Modul drauf hat. Das ist also so ein Ding mit Mehrrahmen. Der hat diese 4 MB zusätzlich. Also wenn ihr Pfeifen machen wollt und so der Eindruck habt, dass euer Code vielleicht ein bisschen größer werden könnte, ist das vielleicht ein ganz nettes Board. Man sieht auch, der hat links und rechts wohl eine Reihe frei hier auf dem Board. Ist ja echt richtig, ja doch. Und er hat ein SD-Card-Slot für diese LiPo oder Lithium-Ionen-Ladeschaltung, Micro-USB, also ist ein ganz nettes Modul. Das ist das mit dem Funkzusatz und man sieht dieser schwarz-blau schimmernde Bereich. Hier ist das OLED-Display. Was man natürlich beachten muss, je mehr Hardware das Ding schon mitbringt, desto mehr Pins sind dadurch auch schon irgendwie belegt, also die ganzen, wo hier ein Gelb auftauchen. Da hängt halt das Lora-Ding dran. Also die könnt ihr dann, wenn ihr Lora machen wollt, nichts anderes benutzen. Meistens sind auch zwei Schalter drauf. Ich habe allerdings komischerweise immer nur einen bisher gebraucht. Das ist also der Riesetaster quasi. Der andere ist irgendwie fürs Flaschen, aber ich habe das Ding immer geflasht, ohne einen Taster zu drücken. Das geht wohl auch. Das ist der mit Lithium-Ionen-Standard-Zellen-Fassung. Man sieht hier unten so ein bisschen, das ist diese Plastikfassung für so eine 18650-Zelle. Da kann man also eine Zelle direkt hockgepackt draufmachen. Hier Micro-USB-Strom rein. Und das Ding ist zum Beispiel überhaupt nicht breadboard geeignet. Weil auf der Unterseite kann man nichts stecken, weil da halt die Batterie sitzt. Und wenn man es auf der Oberseite hier stecken würde, würde man das Display nicht mehr sehen. Also von daher vielleicht ein bisschen ungeschickt. Das ist vielleicht eher für fliegende Vertragungen gedacht. Hat ein Schalter dran, findet man nicht so arg oft. Hat auch ein OLED-Display hier. Also ja, hat vor Nachteile. Das ist dieses kleine schnuckeliche Ding hier. Gibt es bei ElectroDragon.com. Und da ist dieser Pico-Chip drauf. Das ist dieser hier. Und da ist alles drin, was in diesem silbernen, größeren Modul-Package auch drin war. Die haben das extrem geschrumpft. Und dadurch ist das von der Breite hier ein sehr schmales Board. Hat den Vorteil, wenn ihr so auf den breadboard drauf packt, ihr habt auf beiden Seiten noch zwei extra pins frei. Bei dem, was ich hier habe, wäre eigentlich nur auf einer Seite eine Reihe frei. Und die andere Seite kommt man gar nicht mehr ran. Also das müsst ihr halt beachten, wenn ihr mit breadboards basteln wollt. Oder ihr macht so, wie ich hier, ihr packt zwei breadboards direkt eineinander und tut es quasi über den Strom drüber stecken, nicht über diesen Mittelkanal. Dann kommt man natürlich auch besser ran. Da brauchen wir aber dann halt zwei breadboards. Ansonsten sieht hier auch schön beschriftete die Standartausstattung, ein Spannungsregler und diese USB nach Seriell-Bridge hier. Und die üblichen IO-Pins. Das hier ist die WLAN-Antenne, ein bisschen eine andere Konstruktion. Das ist so eine Metall-3D-Antenne. Also nicht diese aufgedruckte Leiterbahn. Und auf dem breadboard sieht es dann halt so aus, zwei Reihen auf beiden Seiten. Das Ding ist von irgendeinem Nerd, wenn ich es recht verstanden habe. Ich weiß nicht, ob das irgendwo zu kaufen gibt. Fand ich aber beeindruckend, wie hübsch der das beschriftet hat hier. Weil wenn man das Ding in Originalgröße halt vor sich hat, kann man oft diese neben die Lötztelle hingedruckte Bezeichnung nicht so wirklich gut lesen. Und von daher ist das halt super, wenn man das hier so schön farbig groß draufgedruckt hat. Ich weiß jetzt aber nicht, ob man das Ding irgendwo kaufen kann, aber wäre vielleicht mal nacharmenswert. Und der hat auch irgendwie eine komische Antenne drauf. Das ist glaube ich eine Keramik-Antenne oder sowas, was der hier hat. Und auch dieser Pico ESP. Zur Software, man kann das Ding natürlich in C programmieren. Ihr kriegt vom Hersteller ein sogenanntes IoT Development Framework oder kurz IDF. Da könnt ihr dann halt in C oder Assembler oder was auch immer programmieren. Die haben auch für Arduino die Anpassung gemacht. Also ihr könnt es in die Arduino IDE integrieren. Das ist allerdings ein bisschen gebastelt. Und das Ganze basiert also auf einer GCC Toolchain mit zu den üblichen Tools. Und gibt es Linux, MacOS und für Windows. Lua gibt es auch, Javascript gibt es auch, aber vor allem eine wirkliche Micropython. Das ist ja der Titel des Vortrags. Python allgemein würde ich nur kurz ansprechen. Die meisten können es wahrscheinlich sowieso. Aber es ist halt eine relativ high-level Language, sehr mächtige Datentypen-Kontrollstrukturen. Also sehr viel Komfort, ist nicht so low-level, wenn ihr jetzt irgendwas in C oder Assembler programmieren müsst. Aber Nachteil natürlich, das hat alles seinen Preis. Es braucht mehr Ressourcen. Also ein normales Python könnt ihr nicht da drauf laufen lassen. Das würde viel mehr RAM beanspruchen. Daher wurde Micropython entwickelt. Und es ist halt optimiert, dass es mit weniger klar kommt. Und hat so diverse Libraries oder liegt dabei für Hardware, Zugriff oder irgendwelche zeitkritischen Dinge. Und wenn euch Python nicht reicht, könnt ihr euch selber auch Erweiterungen schreiben in C und könnt die als C extension in Python ankoppeln. Und dann könnt ihr so den banalen Code in Python schreiben und da wo es zeitkritisch wird, das könnt ihr dann halt in C machen. Man kann Micropython auf zwei Arten benutzen. Man kann interaktiv damit arbeiten. Dann hat man also diese sogenannte Rappelgeschichte. Also heißt read evaluate print loop. Also er liest euren Befehl. Dann drückt er Enter, dann evaluiert er den Befehl. Dann drückt euch das Ergebnis auf dem Bildschirm und dann liest du den nächsten Befehl. Also das ist, wenn man auf der Konsole mit dem Terminal direkt mit den Micropython arbeitet. Und das andere ist natürlich, dass ihr einfach Dateien auf das Mikrocontroller-Datei-System drauf kopieren könnt. Und wenn ihr die dann halt Mainpy nennt, dann startet er halt das beim Guten. Die Tools, die man braucht, sind auch oft in Python geschrieben. Das ESP-Tool Py ist halt so zum Flash löschen und Flash programmieren. Das braucht ihr halt einmalig, um das Micropython-Image auf das Ding drauf zu flaschen. Danach geht es einfacher, da braucht ihr dann eigentlich nur noch kopieren. Und eure Dateien drauf kopieren gehen halt entweder mit dem Fuse-Datei-System, dann könnt ihr den Controller-Mounten drauf kopieren, runter kopieren, löschen und wieder anmounten. Oder ihr nehmt so ein Art FDP-artiges Ding, das heißt hier Micropython-Upload. Damit könnt ihr also wie FDP halt eine Datei kurz hoch schieben. Terminal einfach auf 115.200 Einstellen auf die USB-Schnittstelle. Und wenn ihr das Screen benutzt, wie hier gezeigt, müsst ihr halt am Schlusssteuerung AK drücken, um den Screen zu killen, damit er wieder rauskommt. Das ist deshalb wichtig, ihr könnt nicht zwei Sachen auf der Seriellen gleichzeitig machen. Also ihr könnt entweder das Terminal drauf geschaltet haben oder das Fuse benutzen, aber nicht beides gleichzeitig. Die Doku ist noch ein bisschen in Entstehung begriffen, also für den ESP32 Micropython gibt es noch nicht arg viel. Daher ist es weil einfach in den 8266 reingucken. Sehr viel ist eigentlich gleichartig implementiert. Dass ihr mal einen Eindruck habt, wie einfach das dann aussieht. Also weiß ich nicht, muss ich nicht erklären, denke ich mal. Das schwierigste ist vielleicht für Leute, die nicht peifen können, das hier oben. Aber das bedeutet halt einfach, dass man aus einem Standardbibliotheksmodul in dem Fall sich halt eine Funktion importiert, also zur Verfügung stellt. Und hier halt eine LED-Initialisieren auf dem Pin 12 und das soll natürlich ein Ausgang sein. Und dann halt vier Schleifendurchläufe an, aus, an, aus und so weiter. Man sieht es also auch von der Sündachshair deutlich angenehmer, wie so ein typisches C-Programm. Man braucht keine geschweiften Glamour, man braucht keine Strichpunkte. Einfach ordentlich einrücken und es tut. So, jetzt zeige ich noch ein bisschen was interaktiv. Jetzt kommt der heikle Teil. Du siehst hier, läuft gerade so ein Ping-Pong und links säde jetzt praktisch ein Teil von dem Terminal, was ich gerade laufen habe hier. Und ich drücke jetzt einfach mal auf die Reset-Taste und dann sieht man, das spuckt euch da vom Buden so diverse Meldungen aus, wie es WLAN initialisiert wird und der Prozessoren alles. Und dann startet hier praktisch schon ein Stück Python-Code. Das ist also die Mainpy, wo halt hier so ein bisschen Ping-Pong auf dem OLED-Display spielt. Und man kann da so ähnlich dann arbeiten, wie normal mit Python auch. Ich drücke einfach mal Steuerung C und dann kriege ich halt nichts Betriebssystem, weil der hat kein Betriebssystem, also da ist kein Linux drauf. Da ist in Prinzip nur Python und so ein Miniatur-Real-Time-Operating-System vom Hersteller drauf. Und ich habe jetzt hier unten die typischen drei Eingabezeichen. Also die Eingabe prompt von Micro-Python und ich kann jetzt da interaktiv damit arbeiten. Und ich mache jetzt einfach mal was Einfaches. Da gibt es so ein Maschinenmodul, weil es jetzt ein bisschen klein ist, oder? Das ist besser. Ja, man muss jetzt ein bisschen kleiner machen. So. Und in Maschinen ist zum Beispiel halt die ganze Hardware-Zeugtrennen unter anderem auch Pin. Und jetzt kann ich halt einfach sagen, ich habe irgendeine LED und die hängt am Pin 26 drin und es soll ein bisschen Ausgang sein, weil ich will eine LED ansteuern. Und man sieht, nicht wundern, dass die jetzt gleich an ist. Ich habe das ein bisschen speziell beschaltet, also es macht jetzt gerade das Gegenteil von dem, was ihr vielleicht erwarten würdet, weil es einfach invertiert beschaltet ist. Und man kann dann einfach LED-Punkt schreiben und wenn man dann die Tab-Taste drückt, dann kommt schon die Completion hier und die zeigt euch, was das LED-Objekt alles für Methoden hat. Und eine Methode ist halt, dass es hier ein Value-Aufruf gibt. Und da kann ich jetzt zum Beispiel halt sagen, true, dann geht das Ding aus, weil es invertiert ist. Oder ich kann sagen, false, dann geht das Ding auch an, weil es invertiert ist. Also so kann man normal, dick, ah, ja, so. Also nochmal, aus, an. Wobei, die war doch hell genug, oder? Ja, also so viel zu den ganz banalen Sachen, jetzt machen wir mal ein bisschen was spannenderes in dem Maschinenmodul. Gibt es auch noch ein Ding, das heißt PWM, also Pulse Width Modulation, Pulse Width Modulation. Und da kann ich mir jetzt ein Objekt machen. Ich ruf einfach das PWM auf. Ich habe ja vorhin schon diesen Pin LED reingeschrieben. Und ich sage jetzt einfach gerne, ich hätte gerne auf diesem Pin, wo die LED dran hängt, Pulse Width Modulation. Das ist jetzt mal irgendein Wert von vorhin, wo ich es ausprobiert hab. Aber ich mach das jetzt gleich mal ein bisschen niederfrequenter, dass es nicht so nervt. Also lieber 50 Hertz als 1000. So. Und ich habe also die LED und ein Lautsprecher hier in Serie geschaltet. Also man sieht sowohl optisch als auch akustisch hört man was. Und das sind jetzt also 50 Hertz Rechtecksignal. Und mit der Pulse Width Modulation kann ich jetzt Braschen-Duty-Seikel einstellen. Und ich glaube die Scala war irgendwie von 0 bis 1023. Also wenn ich irgendwie so 512 oder so eingeb, ist so ungefähr die Hälfte. Und wenn ich irgendwie 50 eingeb, das gehörte Tonlage hat sich ein bisschen geändert, mit der Hälfte Impulse. Und wenn ich irgendwo in die Nähe von 1000 gehe, hat man gesehen, die LED ist dunkler geworden. Ja, vielleicht auch nicht. Moment, machen wir ein bisschen mehr. Also so kann man sowohl Helligkeiten von LEDs ganz gut regulieren, oder auch so die Tonlage von so einem Speakersignal. Und das nette ist, ich brauche da überhaupt kein Code laufen haben. Ich bin ja jetzt gerade in einem Eiffencode, wo da läuft. Das macht das Ding alles alleine durch Hardware. Ich kann also während diesem auch was anderes tun. Was es auch gibt, ist eine Touchpad Funktion. Ich muss gerade mal gucken. Ich glaube, das war der Pin 12 von Maschinen Impart Touchpad. So, und dann sah ich einfach, TP ist gleich komplett tot, muss man nicht so viel tippen. Und dann übergebe ich halt den Pin. Und da gibt es auch so eine Riedmethode. Und da sieht man, der sagt jetzt irgendwie 1100. Ich hoffe, ich habe jetzt gerade einen richtigen Pin genommen. War nicht der richtige. Also, man kriegt da einen Analogwert raus und wenn ich einen richtigen Pin genommen hätte, wäre es jetzt weniger gewesen, wenn ich da ran grabsch. Aber, muss ich nochmal gucken. Standardmäßig Input. In dem Fall brauche ich auch ein Input. Ich glaube, es war Pin 2, nicht 12. Man sieht, man kann auch mit Körser hoch sich die Befehle wieder her holen. Und jetzt tut es auch. Also, wenn ich nicht ran grabsch, ist es irgendwo bei 1000 oder so. Und wenn ich ran fasse, ist es bei 100. Das ist halt einfach ein Analogwert. Und das ganze Sonntsticke, was man braucht für so ein Touchpad, macht alles der Controller. Also, ich habe da keine externe Beschaltung dran. Es gibt einen Widerstand, dass ich besser ran langen kann. Aber selbst der Widerstand ist eigentlich nur zum Anfassen. Also, mir würde ja auch so ein Stück Draht reichen. Und man kann sogar einen Unterschied merken. Wenn man nur die Isolation ran fasst, geht es auch schon hundert runter. Und es kann 10 solche Touchpads eingehen. Also, ihr könnt da sogar nur bis 9 Taschen draus machen. Also, sehr komfortabel. Ohne großen Hardwareaufwand. Also, das ist jetzt diese interaktive Bedienung. Das ist so zum Rumspielen ganz nett. Aber wenn man natürlich so in Produktion was damit machen will, ist das nicht die Methode der Wahl. Da will man dadurch irgendwas drauf kopieren und das soll dann von alleine laufen. Und das machen wir jetzt mal. Wie gesagt, ich muss jetzt erst das Terminal killen, dass es die Serielle frei gibt. Weil sonst kriege ich die Serielle nicht für Views verfügbar. Also, Steuerung AK. Aus dem Screen raus. Und ich habe jetzt so ein kleines Bild mit mir gemacht, wo im Prinzip der Befehl von der Folie drinsteht. Und wo mir das Fallsystem mounted. Man muss da ein bisschen Geduld haben. Der Mount dauert so ungefähr 2-3 Sekunden. Weil das ist halt alles über Serielle. Und nicht so wahnsinnig schnell. Aber ihr seht jetzt hier links in dem blauen Fallmanager. Das sind die Dateien auf diese Mikrocontroller. Ich habe da jetzt also direkten Zugriff mit Dateisystemfunktionen. Und wenn wir zum Beispiel einen Gain mal reingucken. Das ist dieses Ping-Pong, was man vorhin gesehen hat. Das ist so ein Stückchen Python-Code. Und da können wir jetzt einfach mal auch was anderes drauf kopieren. Zum Beispiel, ich hätte hier noch einen Lichtsensor zu bieten. Der sieht vom Code so aus. Also ich tu da einfach so ein Standardmodul BH1750 importieren. Machen wir mal den E2C-Bus. Sag halt in dieser Standard-Klasse für diesen Sensor, bitte an diesem E2C-Bus arbeiten. Und dann lese ich einfach die Helligkeits-Werte aus mit Sensor.Luminance. Und gibts so ein Serielle aus und warte eine halbe Sekunde und mach wieder das gleiche. Und das ist also in dieser Main-Py drin. Die kopiere ich jetzt einfach mal drauf. Bei Midnight-Commander kommt am Schluss immer eine Fehlermeldung. Die kann keine Attribute können. Und der versucht halt am Schluss immer Attribute zu setzen, wenn man das Häkchen nicht rausmacht. Also diese Fehlermeldung einfach ignorieren. Die hat nichts zu sagen. Jetzt habe ich es drauf kopiert. Und jetzt ist wichtig, das Ding wieder an mounten. Und erst danach auf Reset drücken. Wenn man vorher auf Reset drückt, kann es sein, dass eure komplette Rechner hängt, weil er mit dem Fuse ein Problem hat. Ich drücke jetzt mal drauf. Ich habe mir das Display ausgegeben. Das war kein normaler Print. Ich wollte jetzt gerade mal das Video wieder nach vorne. Man sieht also hier Luminense-Sensor und zwei so raute Symbole. Und ich halte jetzt einfach mal mal Hand drüber. Man sieht also dieser Balken für Arme ist jetzt etwas dunkler geworden. Da ich jetzt nichts anderes habe, zum Leuchten nehme ich mal den Laser. Also man sieht, so mit Laser wird es noch deutlich heller. Und das ist so ein ganz normaler I2C-Sensor. Ich habe gesehen, Partsälen-Code und das Ding rennt, kein großer Aufwand. Und nach dem Schema geht es im Prinzip mit allen I2C-Sensoren. Was manchmal noch ein bisschen kompliziert ist, wenn ihr halt noch zusätzliche Berechnungen irgendwie machen müsst. Weil nicht jeder Sensor spuckt jetzt fertige Werte irgendwie raus. Manchmal muss man dann ein bisschen rumrechnen. Aber so im Prinzip sehr einfach von der Ansprache. Wir können nochmal einen WLAN-Scan machen, dass man einmal das WLAN gesehen hat, dass es genauso einfach geht. Also hier, da holte ich einfach aus dem Network-Modul halt das WLAN-Objekt. Und StarIF heißt halt, dass das Interface im Station-Modus betrieben werden soll. Es gibt zwei Modi, Accesspoint oder Station. Und in dem Fall wollen wir halt normaler WLAN klein haben, keinen Accesspoint. Dann halt noch das Leap. In dem Station-Modus, dann aktiviert man das WLAN. Dann tut man mal scannen, was es hier alles für Netzwerke gibt. Und dann halt über alle Netzwerke drüber iterieren, sortieren noch zusätzlich und das Ding praktisch auf der Seriellen rausbrinden. Zwei Sekunden warten uns gleiche nochmal. Jetzt muss ich es wieder monten, dass ich das drauf kopieren kann. Also den Mount wieder aufrufen, kurz warten. Wenn ich zuführe, reingehe, ist einfach eine Sekunde später nochmal probieren. Ist auf einmal voll. Rauf kopieren, Fehlermeldung und wieder an-mounten. Und dann terminiert sich auch im linken Fenster dieser ESP Mount Befehl. Daran sieht man dann auch, dass der an-mount geklappt hat. Dann Terminal starten und auf Reset drücken. Das waren jetzt die Brutmeldungen. Und siehe da, hier gibt es ein paar WLANs, EH18, EH18 Ansecure, Loll und so weiter. Das Zweite, was ein bisschen komisch aussieht, ist vermutlich die Megadresse in Binaire-Darstellung, deshalb sieht es ein bisschen wild aus. Und in diesen hinteren Parametern steht halt noch drin, ob es ein Verschlüssel des WLAN ist, wie stark das WLAN reinkommt. Also ihr könnt euch dann praktisch aufgrund von dem für irgendeins dieser WLANs entscheiden. Also ist es der reine Scan, ihr könnt euch genauso einfach damit connecten. Einfach der Name ins Passwort angeben, super einfach. Wenn man Steuerung C drückt, kommt man wieder auf den interaktiven Prompt und könnt jetzt irgendwas anderes machen. OLED haben wir im Prinzip schon gesehen. Ach so ja, die OLED-Ansteuerung ist vielleicht noch interessant. Wie liegt man denn so in der Zeit? Haben wir gerade Halbzeit, oder? Also das ist ja das OLED-Ping-Pong. Da hat man gesehen, ist also super einfach. Das Schwierigste ist eigentlich den Ball entsprechend auszugeben, wo der hin und her geflitzt ist. Da wird halt einfach mit Blanks die entsprechende Zeile konstruiert. Und dann das Ding rüber und rübergejagt. Und das Interessantere ist eigentlich oben dieses Form-Screen-Import Text. Das habe ich selber programmiert. Und das zeige ich euch kurz. Das war auch ziemlich einfach. Das ist das ganze Screen-Modul. Und da sieht man halt dieses SSD-1306-Display-Modul. Das hängt am I2C dran. Und da gibt es ein fertiges Modul. Das braucht er nur importieren. Da ist der ganze komplizierte Code drin, wo das Initialisierungslicht anmacht und so weiter. Und dann können wir im Prinzip mit Display.fil 0 können wir das Ding Display einfach leer putzen. Dann ist alles schwarz. Diese Text-Routine kriegt einfach den kompletten Bildschirm-Inhalt von mir übergeben. Dann tue ich deinen Zeilen-Splitten. Dann fange ich bei y gleich 0 an und gebe eine Zeile nach der anderen Display-Text aus. Halt das y immer ein paar Pixel weiterzählen. Und am Schluss halt Display.show aufrufen. Dann habe ich so ein Bildschirm. Also super einfach. Ist allerdings kein Scrollen, kein Nichts implementiert. Ihr müsst immer den kompletten Bildschirm liefern. Weil der halt so primitiv arbeitet. Wenn man ein bisschen mehr Ofen reinstecken würde, könnte man auch quasi ein Terminal implementieren. Habe ich jetzt aber nichts machen wollen. Bei dem Display-Modul hier oben Das ist übrigens die wenn ich recht weiß, die Breite in Pixel und die Höhe in Pixel und halt dieses i2c-Objekt, wo es dran hängt. Da müsst ihr halt die passenden Pins für SDA, also für die Datenleitung und für die Clockleitung angeben. Und der Rest macht es dann von alleine. Guck mal noch, haben wir noch was. Die Leuchtungssensor hat man Ach so ja, was es auch noch gibt. Ich habe jetzt immer die MainPy rüber kopiert. Wenn ihr bei vor allem beim interaktiven Arbeiten ein bisschen Komfort haben wollt, dass ihr nicht immer sagen müsst Import Maschinen und Import ESP2-Adresing und Import sonst was. Ihr könnt euch in BootPy so ein paar Sachen reinschreiben und die tut er als allererstes abarbeiten. Und im gleichen Python-Kontext wird dann auch praktisch eure Eingabe brummt abgearbeitet oder eure MainPy. Also da könnt ihr quasi so ein paar Sachen importieren, die ihr immer haben wollt oder eure WLAN initialisieren oder was auch immer. Erst für die Boot ausgeführt an die Main. Das Flaschen mache ich jetzt mal nicht praktisch. Ich zeige es euch nochmal. Also sehr einfach. Das ist übrigens auch auf der Download-Seite bei MicroPython.org beschrieben. Also da wo euch die Firmenware runterladen könntest, diese eine oder diese zwei Zeilen beschrieben. Ihr müsst halt erst sagen, Flasch bitte löschen. Und dann Reisflash und dann Reitflash dieser Parameter 0x1000 das ist irgendwie die Ladeadresse die ist so vorgegeben und dann halt die Firmenware-Datei angeben und dann habt ihr praktisch das MicroPython selber drauf. Beachten der Datei-System-Inhalt geht da verloren weil der halt das komplette Ding Platt macht, also natürlich vor allem wenn man Reisflash macht. Ich bin mir nicht ganz sicher, ob man jedes mal Reisflash machen muss oder ob man vielleicht ab den zweiten mal auch drüberflaschen kann habe ich jetzt noch nicht ausprobiert. Geht es? Mit MicroPython? Ja ich habe hier zwischen MicroPython ohne da mal Reisflash zu machen. Also wenn es Probleme gibt dann halt ihr Reisen und wenn es auch ohne geht dann hat es auch so gepasst. Was interessant wäre, wenn man nicht das Reisflash macht. Also da will ich vorsichtig sein, dass wir halt nichts darauf lagern wollen. Das ESP2 Reis in MicroPython ist auch noch ziemlich stark in Entwicklung. Da gibt es ziemlich viele Pull-Request und die werden auch ab und zu mal gemerged also es lohnt sich da ab und zu mal neueres zu flaschen. Es wird hoffentlich auch bald Unterstützung für diesen Ultralow-Power-Prozesse kommen. Also den Pull-Request gibt es schon es hat nur noch keiner auf Merch geklickt und das ist auch das Thema von dieser Folie. Wir haben ja diesen dritten kleinen Prozessor der eigentlich ganz interessant ist, wenn man was auf Batteriebetrieb laufen lassen will. Problem ist, das Ding muss man Assembler programmieren, ist aber nicht besonders schwierig, weil der Assembler hat nur sehr wenige Befehle und die sind auch teilweise sehr komfortabel und intuitiv. Es gibt eine Toolchain vom Hersteller es gibt es als Binotils ESP2 30 ULP und es ist halt diese normale Knu-Geschichte mit GAS also diesen Knu-Assembler den die angepasst haben hat halt die Eigenschaft dass man das halt auch vom PC laufen lässt, den Assembler dann übersetzt und dann halt das Binary quasi auf den ESP darauf kopiert. Das ist ein Projekt von mir, das hat mich kürzlich mal so der Rappel gepackt und ich habe einfach ein Assembler in hier und zwar in Micro-Python und der tut auch schon und das einzige was noch fehlt sind von Micro-Python-Aushalt die Funktionen um diesen Code halt auf den ULP drauf zu laden und der Vorteil ist halt, man hat dann die gleiche Interaktivität, im Prinzip wie man mit Python hat, man muss nicht auf dem Haus erst was übersetzen und dann drauf laden und ihr könnt im Prinzip in der Python-Datei so ein paar Assemblercode-Sailen in einem String drin haben, übersetzen und könnt dann das was rauskommt einfach direkt auf den ULP drauf laden und wenn ihr was ändern wollt, müsst ihr nur in dieser einen Datei was ändern und beim nächsten mal buden übersetzt ihr das neue Letz wieder drauf, also es ist viel interaktiver, wenn man da so ein Extra-Tool braucht. Hat auch seine Limits dadurch, dass das Ding natürlich nur sehr begrenzter Ram hat, könnt jetzt keine riesen großen Assembler- Programme machen, aber will man vielleicht eh nicht und der ULP-Prozessor hat also insgesamt nur 4 Kilobyte Ram da geht aber ein Teil schon für andere Zwecke weg, also am Arbeiten da eh im Bereich so 1-2 Kilobyte irgendwo mehr wird es eh nicht und der sourcecode den mein Assembler gerade schafft ist so ungefähr 4, 5, 6 Kilobyte sourcecode kann er also auf Maschinencode übersetzen, da kommen also ein paar 100 bytes Maschinencode raus ist noch ziemlich wenig getestet allerdings wir haben Kompatibilitätstests wo praktisch den normalen Assembler vom Hersteller nimmt und meinen Assembler den sourcecode durchjagten einfach guckt, ob es gleich hier rauskommt also die sind erfolgreich und auch so ein paar andere Tests funktionieren ich hab es aber noch nicht wirklich mit CodeArt auftesten können, weil halt wie gesagt diese Funktionen noch fehlen falls ihr was mit ULP machen wollt, geht doch mal zu GitHub und klickt auf diesen Pull-Request drauf und macht da einfach mal diesen hier mal jemand aufwacht, dass man das vielleicht mal merken müsste das Problem ein bisschen bei MicroPython habe ich so den Eindruck ist, da gibt es halt irgendwie so ein paar Leute die da merken können und die haben irgendwie ziemlich viel zu tun und von daher wäre es halt wichtig dass man mal so die interessanten Sachen mal vielleicht ein bisschen anschiebt und da geht es also um das Laden und das Starten von solchen Code und diese Code werden halt im Sleep-Modus aktiv, würde mit ein paar Micro-Ampere laufen und man müsste halt nur so alle paar Stunden mal den Hauptprozess uns WLAN anmachen um die Daten zu verschicken ja, ich bin jetzt so ziemlich durch auch so, vielleicht noch ein Hinweis für die Leute die in der Stuttgarter Gegend sind wir machen im Shack Space so einmal im Monat diese Micro-Python-Veranstaltung also wenn ihr vorbeikommen wollt hier im Wiki sind die Termine ist so ein lockerer Treff manchmal überlegt man es vor schon ein bisschen, welche Hardware-Teile immer besprechen wollen und versuchen dann halt auch mit was zu machen ansonsten ja, Fragen keine, alle Wunder kann man von dem ULP-Assembler dann auch irgendwie Pin-Zustände auslesen? ja, das ist der Sinn von dem Ding also wenn man normal ein Sleep-Modus hatte das singe einfach schlafen und nix tun so war das bei dem alten ESP dem 8266, den konnte man auch schlafen schicken aber dann hat er halt auch nix mehr gemacht außer vielleicht ein Timer zu haben um ihn dann später wieder irgendwie aufzuwecken bei dem ist es so der ULP kann also IO-Pins abfragen oder auch Ausgaben tätigen also sowohl Input als auch Output er kann I2C abfragen er kann auch nach einer bestimmten Zeit wieder aufwachen oder er kann per Assembler-Befeld von dem ULP auf Befell wieder aufwachen also das ist so gedacht, dass der so ein bisschen so Kleinigkeiten selber erledigen kann und die Resultate wird er dann halt in das Ram von dem RTC reinspeichern da gibt es insgesamt 4 Kilobytes praktisch nützbar, im Endeffekt dann wahrscheinlich so 1-2 Kilobytes und da könnt man also in den Puffer halt was weiß ich, Temperatur werde oder was man auch immer gemessen hat eine Weile ansammeln oder auch Prozesse aufwecken und der würde das dann halt über WLAN irgendwo hinschicken und quasi hochladen und sich direkt wieder schlafen legen und den kleinen wieder weitermachen lassen und dann hätte man quasi stundenlang extrem niedrigen Stromverbrauch und zwischen drin halt mal 30 Sekunden lang mal ein bisschen mehr wenn er die Werte verschicken muss wie lange dauert das Aufwachen von dem ULP das ist so ähnlich wie ein Bootvorgang oder so dass man jetzt drücke ich drauf 1 Sekunde, 2 Sekunden also das dauert nicht arg lange wo liegen die Teile preislich die sind günstiger also das Ding liegt so bei 9 Dollar das ist dieser Pico von Elektro Dragon das mit OLED Display hat glaube ich so 13 Dollar oder so was gekostet keine Chip ist glaube ich so bei 3 bis 5 Dollar der mit Mehrrahmen kostet ein bisschen mehr aber es hält sich alles doch sehr in Grenzen und so einfache Boards sind halt etwas günstiger und wenn es halt noch OLED Display und Akkufassung und alles was man hier drauf hat und ein paar Sens draufregnen aber generell also wenn man es in China bezieht ist alles eigentlich sehr günstig man muss nur ein bisschen Geduld haben weil das dauert halt immer so 4 Wochen, 6 Wochen, 3 Wochen je nachdem wie Glück man hat also die ganzen Sensoren wo da so beim Basteln so üblich sind kriegt man da teilweise auch alles so für 50 Cent bis 2,50 Euro also alles sehr preiswert eigentlich die realtime die realtime clock die da drauf ist ist das jetzt eine richtige realtime clock die auch sehr genau geht die Genauigkeit weiß ich jetzt nicht aber wenn du das ins W-Laden ab und zu mal einbindest kannst du dich selber NTP die genaue Zeit holen die NTP-Zeit dann in die RTC übertragen das tut auch schon, das kann man von Micro-Pisen aus schon machen und das würde ich halt so ab und zu vielleicht mal machen und zwischendrin würde ich halt dann die RTC quasi als Systemzeit haben aber ich denke mal so mit Langzeit Abwächungen hätte ich da dann wahrscheinlich eh nie ein Problem ist eigentlich das Ding läuft komplett offline und ich muss da da rein gucken ich habe eine Idee dass ich mir halt ein paar Temperaturen und Feuchtigkeitssensoren baue die halt mit Batterie irgendwo hin lege und dass sie dann halt einfach mal einigermaßen synchron laufen und ich dann ein Timestamp hab der auch vergleichbar ist unter den Uhren also genauigkeit weiß ich jetzt nicht nicht auswendig also was auch zu beachten ist man muss nur durch eine Batterie dann haben also der ESP selber hat noch durch keine Batterie eingebaut nur mit einem Akkusinn weil sonst wenn ich irgendwie Strom rausziehe geht auch die RTC nicht durch verloren ja, könnte man auch mal so DCF oder sowas ja auch denkbar Guck zu der Real-Time-Clock das sind Quarze die rennen verschieden schnell nach Temperatur das heißt wenn man das Ding unter die Kriegenrinne hängt dann läuft es im Sommer zu schnell und im Winter zu langsam so sollte man einfach dran denken bei diesem Chip oder? generell bei allen Quarzuhren oh ja, okay wie ist das mit dem RAM also kann man irgendwo sehen wie viel RAM man schon verbraucht hat mit seinem Programm ja habe ich erst gestern gemacht weil ich da diese Memory Errors mit meinem Assembler hatte also man kann sagen Import GEC also ist der Garbage Collector von Python und er hat so ein paar Methoden zum Beispiel Mem Free und wenn ich der Euphor jetzt Mem Free aufrufe dann sieht man halt jetzt im Moment hat er 85 KB RAM noch zur Verfügung und wenn ich jetzt mal diesen Garbage Collector wirklich anschmeiß mit Collect wenn wir etwas Glück haben vielleicht ändert sich es dann schon ja, jetzt sind es wieder 100 KB und ich habe gemerkt in meinem Code, das schadet nix wenn man das ab und zu mal aufruft er müsste das zwar eigentlich auch machen wenn er irgendwann so kurz vor Ende ist aber ich hatte so ein bisschen das Gefühl dass es vielleicht in eine Situation reinkommt wo irgendwie zu starke Fragmentierung da ist oder irgendwie sowas wo es dann nicht mehr gebacken kriegt und das es vielleicht Sinn macht wenn man also weiß, dass es eine Software sehr viel macht dass man es dann vielleicht zwischendrin einfach mal selber aufruft dann kommt man weniger schnell in die Prädolie noch fragen Wie potent ist das Ganze so für Multimedia ist es in der Lage zum Beispiel eine Waffdatei von der SD-Karte abzuspielen und übern Auszugeben irgendwie gute Frage also prinzipiell irgendwie die Dateien reinlesen geht, weil das hat ja dieses Fallsystem, das tut ja auch die Python-Module mal importieren man kann auch Daten in das Datei-System reinschreiben ob jetzt diese Waffdatei in Echtzeit irgendwie mit Python rauszukriegen ist, bin ich überfragt ich könnte mir vorstellen dass es vielleicht mit I2S oder sowas da was halbwegs effizientes gibt dass man also praktisch ein Audioteil der digital arbeitet hat und dem Euphor über I2S die Daten raus schiebt und die Daten halten, anschmeißt auf dem Chip muss die Software dann oft nicht mehr so arg viel machen dann liegen halt die Daten irgendwo im Rahmen die Hardware schiebt das von alleine per DMR raus aber ich hab's jetzt selber noch nicht ausprobiert irgendwie von daher weiß ich das nicht ich hab schon vorhin mal ein bisschen reingeschaut hier in diesen ESP32 und ich hab einen Wert gefunden von 600 DMI-PS das ist ein Benchmark für solche Sachen DMIPS 240 MHz mal 2 gut die MHz sagen nicht arg viel aber wenn ihr beim Arduino guckt was hat das Ding 8 MHz oder 16 oder so also ist doch eine Größenordnung höher und 2 cores also sollte eigentlich genug Power sein für die meisten Sachen man kann natürlich wenn man was heigt das hat auch dann in C programmieren wie ist das eigentlich mit den 2 echten Cores wie lässt man da Code drauflaufen also ich glaube beim MicroPython wenn du nichts Besonderes machst läuft das alles eigentlich immer nur auf einem Core und ich bin mir jetzt gerade auch nicht sicher ich hab mir 2 verschiedene MicroPythons angeguckt es gibt einmal das normale Projekt MicroPython Org und dann gibt's noch so ein Fork von dem Entwickler der da so für sich was mögliche noch zusätzlich eingebaut hat der kann teilweise ein bisschen mehr und ich meine auch an einer Stelle irgendwas so mit Multifredding gelesen zu haben, da bin ich mir jetzt nicht ganz sicher ob das jetzt im einen oder im anderen war und wie man da jetzt die Cores selektiert oder so es wäre interessant, da hätten wir immer sie 2 Eventloops also die Grundidee vom Hersteller ist natürlich so, dass man auf dem einen zeitkritische Protokollsachen macht Netzwerk, Bluetooth das auch immer und dass man den anderen quasi für seine Applikation dann alleine hat was ist davon eigentlich Open Source und was sind Blobs? Ist der Wildes Land Treiber Open Source oder debilgt der glaube ich einen der CPUs oder? das ist eine gute Frage also ich weiß der Chip Hersteller macht da irgendwie so ein Mini RTOS drauf, so ein realtime Operating System und ich vermute mal das ist ein Blob und Espressiv hat gesagt, dass sie das nicht Open Source machen werden das hat auch etwas mit der FCC zu tun ja keine Fragen mehr, wollt ihr noch irgendwas sehen? Interaktiv Micropipen können wir gucken Ach so, die Blinkenlites haben wir noch gar nicht gehabt die könnten wir noch kurz machen doch noch eine Frage geht im Standard Micropipen inzwischen Update über Wildes Land manche so Over the Air war im Schaar die Version des Patches vom letzten Jahr war ja auch Micropipen also ich weiß dass es coolrequest gibt für OTA aber da hat auch noch keiner auf Merch geklickt vielleicht auch mal zu Github gehen und diesen hier machen dass da mal ein bisschen was in die Gänge kommt also das OTA-Zeug und das ULP-Zeug war glaube ich sogar vom gleichen Entwickler und sah nicht irgendwie gut aus aber gut, es müssen die natürlich von Micropizenprojekt entscheiden aber es gibt da ziemlich viele coolrequest aber müssen halt alle erst mal reviewed und gemerged werden überlegt euch noch Fragen, ich gucke dir welche mal nach dem LED-Ding mal mal gucken, irgendwo hat ich was wie sieht es mit threading aus in Micropipen hier, kann ich 2 threads starten oder 3? ja, das hatte er gerade schon so ähnlich also ich glaube ich habe schon mal irgendwo was gesehen, ich bin mal aber nicht mehr sicher in welchem diese 2 Micropipens das war also ich glaube der alte ESP kommt gar nicht aber ich glaube im neuen geht irgendwie was mit Multifredding, aber ich bin mir nicht sicher wie weit man da jetzt Kontrolle hat dass man es auf einem Korridor auf dem anderen macht also habe ich bisher noch nicht selber benutzt und ich habe es auch ja gut, ich habe es nicht wirklich gebraucht sobald man durch mehrere Dinge parallel machen will mit Eventloops und so könnte man es vielleicht gebrauchen so, hier habe ich NeoPix, können wir mal schauen also diese WS2812 LEDs hier oder auch NeoPixel genannt ich habe hier so ein Kreis ja, kann man also auch irgendwie für wenige Euros kriegen und das nette ist, man sieht da gehen also nur 3 Strippen ran so 5 Volt Ground und eine Datenleitung und alles andere läuft seriell intern ab und die eine LED macht quasi die Datenaufbereitung für die nächste dann und so könnte dann der Code aussehen da gibt es ein fertiges NeoPixel Modul das brauchen wir nur importieren und da habe ich einfach so ein paar Testroutinen geschrieben, wo da halt so verschiedene Lichtmuster dann produzieren das ist jetzt ein bisschen längeres Stück Code aber das liegt halt in den verschiedenen Muster und mit rüber und rüber mit Zufall und mit heller, dunkler und so weiter und das Initialisieren von dem NeoPixel geht einfach halt sagen welcher Pin das ist und wieviel LEDs das sind dann gibt es einen komischen Timing-Parameter und dann kann man einfach seine Demos laufen lassen und jetzt probiert es mal so hier müssen wir wieder raus das muss Fuse frei kriegen ich tue das mal jetzt nicht umbenennen auf Main, ich tue das einfach mal nur so rüberschieben ach halte mal, ich habe es sogar schon drüber brauche ich gar nicht also liegt schon ein Datei-System drauf hatte ich beim Ausprobieren schon gemacht also NeoPixel heißt das Ding dann mache ich den Umount und jetzt mache ich wieder mal ein Terminal so und jetzt muss ich neu boten weil man sich nichts einthippen lässt man kann auch so einfach Code anstarten indem man importiert und sie sehen, sie sehen nichts ach so, Moment ich habe das Saft runtergenommen weil das Ding so scheiße hell ist also das blaue geht jetzt noch aber wenn das Ding weiß leuchtet dann ist das echt etwas unengenehm wenn man zu nahe dran ist also man sieht, man kann da nette Gags machen aber falls übrigens bei NeoPixel ihr mal damit rumspielt und die Dinger machen nicht das, was ihr wollt und ihr habt zu der Eiduck die ersten 3 Viertel funktionieren und das letzte Viertel funktioniert nicht das muss nicht an eurem Code liegen es kann auch einfach sein, dass eine von den LED ein bisschen kaputt ist also ich habe mal stundenlang ein Wolf gesucht um dann Fehler in meinem Timing irgendwas zu finden und irgendwann habe ich gemerkt, wenn ich das andere den anderen Ring genommen habe, dann hat es funktioniert also da gibt es wohl auch manche wo da nicht so besonders gut getestet die Datenleitung pegelt ja mit 3,3 Volt und wenn die Referenz 5 Volt ist dann sind die 3,3 Volt so knapp eigentlich außerhalb des Back wenn man das so ganz primitiv anschließt und wenn dann eben 80 LEDs leuchten dann geht diese Datenspannung wahrscheinlich gerade so in die Knie dass dann das manchmal falsch ist das ist das was ich mit ein paar Stunden lang umgefrickelt gemeint habe die erste Idee war natürlich meine Spannung ist zu wackelig dann habe ich irgendwie so 1000 Mikroverrat direkt parallel gelödet die zweite Idee war, dass der Pegel nicht passt weil er so ein paar 100mV eigentlich zu wenig ist man bräuchte irgendwie 3,7 hat aber nur 3,3 das war es aber alles nicht das war wirklich einfach nur kaputt das andere hat getan dass man einfach über Dioden so weit reduziert dass man in den Valiten-Bereich gekommen ist das hat aber trotzdem nicht funktioniert aber sind halt so die verschiedenen Fehlerquellen wo man abklappern muss bis man dann halt irgendwann sich sicher sein kann dass einfach das Ding kaputt ist und das ansonsten eigentlich alles schon funktioniert hätte also die Dinger gibt es so in rund und in langen habe ich auch draußen gesehen und sind eigentlich sehr einfach anzusteuern man kann übrigens auch noch aus dem Ding rausfahren also es hat noch einen vierten Anschluss wo man praktisch die nächste dahinter kaskatieren kann habe ich jetzt aber hier nicht angeschlossen so noch fragen alle wünschlos glücklich ja gut sind wir fertig, oder? dann, danke für die Aufmerksamkeit