WEBVTT

00:00:00.017 --> 00:00:05.267
<v Claus>Das ist ein Punkt, der mir an einigen Stellen bei MicroPython-Beschreibungen gefehlt hat.

00:00:05.267 --> 00:00:09.147
<v Claus>Deshalb ist das aufgenommen. Ich halte das für wichtig, vor allen Dingen,

00:00:09.147 --> 00:00:15.837
<v Claus>wenn man die ersten Grundlagen verinnerlicht hat, dann will man natürlich solche Features nutzen, weil,

00:00:16.555 --> 00:00:20.957
<v Claus>die sind einfach zu implementieren und bieten ungeheuer viel,

00:00:21.677 --> 00:00:25.077
<v Claus>gerade bei solchen nebenläufigen Prozessen, dass nicht ein Prozess den anderen

00:00:25.077 --> 00:00:28.327
<v Claus>blockiert und man sich wundert, dass hier sich nichts weiter dreht.

00:00:31.495 --> 00:00:36.039
<v Ali>Klüger als gestern mit Rheinwerk. Hallo und herzlich willkommen zu Klüger als

00:00:36.039 --> 00:00:38.166
<v Ali>gestern, einem Podcast des Rheinwerk Verlags.

00:00:38.741 --> 00:00:42.305
<v Ali>Mein Name ist Ali Hackalife und heute sprechen wir über MicroPython,

00:00:42.630 --> 00:00:48.209
<v Ali>ein Buch erschienen von Claus Kühnel über die Programmiersprache und über MicroPython

00:00:48.209 --> 00:00:53.184
<v Ali>als Konzept. Das Ganze ist erschienen als MicroPython, das Handbuch für Maker und IoT-Development.

00:00:53.305 --> 00:00:55.140
<v Ali>Und heute ist er mir zugeschaltet. Hallo Claus.

00:00:55.308 --> 00:00:55.759
<v Claus>Hallo Ali.

00:00:56.179 --> 00:01:00.709
<v Ali>Bevor man so ein Buch schreibt, wirst du vermutlich auch viel Zeit als Hobbyist

00:01:00.709 --> 00:01:02.158
<v Ali>mit Mikrocontrollern verbracht haben?

00:01:02.837 --> 00:01:07.939
<v Claus>Ja, aber nicht nur als Hobbyist. Mikrocontroller haben mich eigentlich fast

00:01:07.939 --> 00:01:10.093
<v Claus>mein ganzes Berufsleben begleitet.

00:01:10.355 --> 00:01:19.019
<v Claus>Das ging los mit dem legendären Z80 und hat sich dann weiter fortgesetzt über,

00:01:19.819 --> 00:01:22.839
<v Claus>Mikrocontroller von Atmel.

00:01:23.399 --> 00:01:27.596
<v Claus>Das ist ein ganz wesentlicher Punkt gewesen, diese AVR-Mikrocontroller,

00:01:28.559 --> 00:01:34.450
<v Claus>die heute immer noch die Basis sind für die Arduino-Familie.

00:01:36.819 --> 00:01:42.815
<v Claus>Anfangs habe ich dann in Basic programmiert. Es gab da einen interessanten Basic-Compiler.

00:01:43.361 --> 00:01:49.869
<v Claus>Später kam dann C hinzu, C-Programmierumgebung. Damit habe ich sehr viel gemacht.

00:01:49.869 --> 00:01:52.654
<v Claus>Auch beruflich habe ich damit gearbeitet.

00:01:53.368 --> 00:01:59.998
<v Claus>Wir haben in meinem Job Mikrocontroller eingesetzt zur Steuerung von Laborautomaten.

00:02:00.561 --> 00:02:07.379
<v Claus>Das heißt also, im Wesentlichen sind das Dinge gewesen, die in einem Laborautomaten

00:02:07.699 --> 00:02:11.899
<v Claus>Bewegungen gesteuert haben, Sensorik ausgelesen haben etc.

00:02:13.163 --> 00:02:19.294
<v Claus>Und bei dieser Arbeit, die sehr stark interdisziplinär geprägt war,

00:02:20.496 --> 00:02:27.049
<v Claus>bin ich mit Biologen zusammengekommen, mit Chemikern, die praktisch den Prozesshintergrund

00:02:27.049 --> 00:02:32.581
<v Claus>für das Ganze geliefert haben und natürlich mit Ingenieuren, Softwareentwicklern,

00:02:33.312 --> 00:02:37.927
<v Claus>Hardwareentwicklern, die das Ganze dann in Mechatroniksysteme umgesetzt haben.

00:02:38.101 --> 00:02:41.589
<v Ali>Das kommt mir sehr vertraut vor. Ich habe genau das auch schon mal gemacht für

00:02:41.589 --> 00:02:46.219
<v Ali>eine Frau, die ihre Bio-Doktorarbeit entwickelt hat. Sie hat ein Experiment

00:02:46.219 --> 00:02:49.199
<v Ali>gehabt und ich habe dann bei der Programmierung geholfen, dass entsprechend

00:02:49.199 --> 00:02:51.395
<v Ali>ein Konditionierungsversuch gemacht werden konnte.

00:02:51.703 --> 00:02:54.819
<v Ali>Das ist mir ein sehr vertrauter Bereich, dass jemand eine Idee hat,

00:02:54.819 --> 00:02:58.399
<v Ali>aber nicht das Technik-Know-how und dann die Frage an die Techniker,

00:02:58.779 --> 00:03:02.331
<v Ali>Macher, Bastler, Elektroingenieure kommt, wie setze ich das jetzt um?

00:03:02.552 --> 00:03:05.605
<v Claus>Richtig, genau das ist eigentlich der Punkt.

00:03:06.279 --> 00:03:10.644
<v Claus>Ich bin also mit einer breiten Wissensbasis dort konfrontiert worden.

00:03:11.207 --> 00:03:17.159
<v Claus>Wir haben manchmal Prototypen von Biologen oder Biochemikern gesehen,

00:03:17.499 --> 00:03:24.298
<v Claus>wo wir gesagt haben, ja, über die Umsetzung haben wir ehrlich gesagt manchmal geschmunzelt.

00:03:25.006 --> 00:03:32.104
<v Claus>Aber die Idee war gut und wir haben dann in der Regel diese ganze Idee industrialisiert.

00:03:32.777 --> 00:03:39.299
<v Claus>Das wäre aber uns ohne dieses biologische Hintergrundwissen nie möglich gewesen.

00:03:39.299 --> 00:03:43.313
<v Claus>Also das heißt, für mich war wichtig, diese breite Basis.

00:03:44.161 --> 00:03:49.016
<v Claus>Und damit schließt sich eigentlich ein Stück zu dem, was mich beruflich immer

00:03:49.016 --> 00:03:51.301
<v Claus>wieder begleitet hat, das ist diese Maker-Szene.

00:03:51.493 --> 00:03:57.745
<v Claus>Aus diesem anfänglichen manchmal Schmunzeln ist eigentlich eher eine gewisse

00:03:58.006 --> 00:03:59.771
<v Claus>Bewunderung entstanden,

00:04:00.543 --> 00:04:06.056
<v Claus>dass man sich mit nicht immer den geeigneten Mitteln an eine solche Sache herangetraut

00:04:06.056 --> 00:04:10.893
<v Claus>hat, die dann vorangetrieben hat und dann mithilfe anderer.

00:04:12.571 --> 00:04:18.766
<v Claus>Wie es in der Community üblich ist, mithilfe anderer in wirklich ernstzunehmende

00:04:18.766 --> 00:04:19.946
<v Claus>Produkte umgesetzt hat.

00:04:20.526 --> 00:04:25.236
<v Claus>Diese Breite, also diese Maker-Bewegung in dem Sinne, die hat mich eigentlich

00:04:25.236 --> 00:04:26.572
<v Claus>die ganze Zeit begleitet.

00:04:27.255 --> 00:04:34.320
<v Claus>Und das ist auch ein Stück, was für dieses MicroPython-Buch den Hintergrund geliefert hat.

00:04:35.243 --> 00:04:41.796
<v Claus>Die C-Programmierung, die natürlich heute immer noch für die Mikrocontroller

00:04:41.796 --> 00:04:45.726
<v Claus>oder überhaupt für industrielle Anwendungen im Vordergrund steht,

00:04:46.166 --> 00:04:47.625
<v Claus>weitgehend im Vordergrund steht,

00:04:48.478 --> 00:04:54.527
<v Claus>immer noch ziemlich unangefochten, wird ergänzt durch MicroPython beispielsweise.

00:04:55.688 --> 00:04:59.666
<v Claus>Was schon stellenweise in der Ausbildung gelehrt wird.

00:04:59.666 --> 00:05:06.236
<v Claus>Und meine Enkeltochter studiert Biologie an der Universität Zürich.

00:05:06.236 --> 00:05:09.132
<v Claus>Die hatte eine Python-Vorlesung.

00:05:09.922 --> 00:05:18.316
<v Claus>Also das heißt, selbst elektronikferne Leute lernen heute Programmieren in einer

00:05:18.316 --> 00:05:21.357
<v Claus>Hochsprache. Und das ist eben heute in der Regel Python.

00:05:21.485 --> 00:05:27.829
<v Claus>Die ist am verbreitetsten, setzt auf einer riesigen Menge von Bibliotheken auf.

00:05:28.652 --> 00:05:35.490
<v Claus>Und das ist mit MicroPython zugänglich gemacht worden, eben auch für Mikrocontroller.

00:05:35.839 --> 00:05:42.755
<v Claus>Und das hat mich gereizt, diese Mikrocontroller-Ebene in dem eben gezeigten

00:05:42.755 --> 00:05:50.769
<v Claus>Kontext so zu verbreitern, dass auch andere Nicht-Elektroniker, Nicht-Softwerker,

00:05:51.635 --> 00:05:55.235
<v Claus>mit diesen Controllern arbeiten können und ihre Ideen umsetzen können.

00:05:55.982 --> 00:06:00.893
<v Ali>Das, was du vorhin erwähnt hast mit der Community, das ist ja bei MicroPython schon in der Grund-DNA.

00:06:01.114 --> 00:06:05.705
<v Ali>Das ist aus einer Kickstarter-Kampagne heraus entstanden, weil Leute gesehen

00:06:05.705 --> 00:06:06.994
<v Ali>haben, es gibt da diesen Bedarf.

00:06:07.348 --> 00:06:11.655
<v Ali>Und auch das, was du sagst, ich habe MicroPython kennengelernt als Hobbybastler.

00:06:11.655 --> 00:06:16.685
<v Ali>Ich war genau in dem Alter, als man als Teenager mit Elektronik rumfrickelt

00:06:16.685 --> 00:06:19.707
<v Ali>und ich war, als es Kickstarter war, gerade 14.

00:06:20.755 --> 00:06:24.655
<v Ali>Dementsprechend hat mich das eigentlich immer begleitet, wenn ich an IoT gedacht

00:06:24.655 --> 00:06:28.309
<v Ali>habe und an so Breadboard- und Microcontroller-Programmierung.

00:06:28.611 --> 00:06:34.435
<v Ali>Aber dann zu sehen, wie aus die Maker-Szene und Hobby-Bastler hin zu jetzt echten

00:06:34.435 --> 00:06:38.334
<v Ali>Industrieanwendungen, wie sich das so nach und nach daraus professionalisiert hat

00:06:38.711 --> 00:06:42.025
<v Ali>und jetzt eben die Schnittstelle ist aus einer sehr zugänglichen Programmiersprache

00:06:42.025 --> 00:06:45.835
<v Ali>mit einer Syntax, die Python weitestgehend ähnlich ist und eben

00:06:46.535 --> 00:06:49.578
<v Ali>der Community, die für quasi alles mittlerweile Libraries gebaut hat.

00:06:49.863 --> 00:06:53.155
<v Ali>Das ist schon wirklich sehr besonders und das macht diese Sprache auch aus.

00:06:53.155 --> 00:06:55.905
<v Claus>Beziehungsweise ich habe dann mehr mit CircuitPython gemacht.

00:06:55.905 --> 00:07:00.715
<v Ali>Das ist ja eine auf MicroPython basierende Erweiterung der Sprache,

00:07:00.715 --> 00:07:05.045
<v Ali>die sich konkret auf den ganzen Kosmos der Adafruit-Controller konzentriert.

00:07:05.045 --> 00:07:08.061
<v Ali>Aber wir können vielleicht mal größer einsteigen und sagen, was sind denn Mikrocontroller?

00:07:08.195 --> 00:07:16.765
<v Claus>Ja, Mikrocontroller sind kleine Chips, die einen Rechnerkern tragen und dieser

00:07:16.765 --> 00:07:22.785
<v Claus>Rechnerkern wird ergänzt durch heute recht umfangreiche Peripherie.

00:07:22.785 --> 00:07:29.480
<v Claus>Das heißt, ich habe digitale und analoge Ein-/Ausgänge, sodass ich direkt in einen,

00:07:29.968 --> 00:07:32.789
<v Claus>Prozess hinein lauschen oder steuern kann.

00:07:33.737 --> 00:07:40.232
<v Claus>Ich habe umfangreiche Timer, um zeitbasierte Anwendungen zu bringen.

00:07:40.232 --> 00:07:46.629
<v Claus>Ich habe ein Interrupt-System, um auf Echtzeitereignisse reagieren zu können.

00:07:47.413 --> 00:07:55.702
<v Claus>Ich habe Speicher, den Programmspeicher und RAM, also Speicher für Variablen

00:07:55.702 --> 00:07:57.740
<v Claus>etc., direkt auf dem Chip.

00:07:58.385 --> 00:08:04.822
<v Claus>Und sodass ich eigentlich sagen kann, ich habe einen kompletten Computer mit

00:08:05.202 --> 00:08:08.032
<v Claus>peripheren Einrichtungen auf einem Chip.

00:08:08.032 --> 00:08:13.142
<v Claus>Das unterscheidet einen Mikrocontroller von einem Mikroprozessor,

00:08:13.842 --> 00:08:23.931
<v Claus>der nur den Kern eigentlich beinhaltet und das andere durch zusätzliche Schaltungsteile ergänzen muss.

00:08:24.372 --> 00:08:31.436
<v Claus>Und bei einem Mikrocontroller ist das alles auf einem Chip vereint, weil die Zielrichtung,

00:08:32.062 --> 00:08:38.012
<v Claus>ist, diesen Mikrocontroller in ein Gerät einzubetten, wo er im Grunde genommen

00:08:38.012 --> 00:08:40.462
<v Claus>eigentlich nicht mehr sichtbar ist, wo er verschwindet.

00:08:40.462 --> 00:08:44.922
<v Claus>Deshalb auch der Begriff Embedded Systems.

00:08:45.962 --> 00:08:50.181
<v Claus>Wir sehen den Mikrocontroller im Kühlschrank nicht, wir sehen den in der Waschmaschine nicht.

00:08:50.953 --> 00:08:58.072
<v Claus>Im Auto sehen wir ihn eigentlich nur durch das GUI, also durch das Bedienteil.

00:08:58.072 --> 00:09:01.843
<v Claus>Dann können wir erahnen, dass dahinter Mikrocontroller stehen.

00:09:02.319 --> 00:09:06.922
<v Claus>Aber es ist ja auch vom Auto nicht nur einer, sondern es ist im Grunde genommen

00:09:06.922 --> 00:09:09.419
<v Claus>ein Netzwerk von Kontrollern, was sich dort befindet.

00:09:09.808 --> 00:09:13.872
<v Claus>Alles das erahnen wir nicht. Deshalb der Begriff des Embedded Systems,

00:09:13.872 --> 00:09:18.316
<v Claus>des eingebauten, verborgenen Systems. Ja.

00:09:18.971 --> 00:09:23.758
<v Ali>Und das macht es für die Hobby-Szene bei den Mikrocontrollern so interessant,

00:09:23.758 --> 00:09:26.320
<v Ali>dass wenn man jetzt zum Beispiel mit einem ESP32

00:09:26.715 --> 00:09:32.113
<v Ali>sich selbst ein smartes Gerät bauen möchte, ein IoT, ein Internet-of-Things-Gerät

00:09:32.421 --> 00:09:36.368
<v Ali>und sei es sowas wie, ich möchte eine Lampe an- oder ausmachen oder ein Freund

00:09:36.368 --> 00:09:38.118
<v Ali>hatte mir letztens gezeigt, er hat ein altes

00:09:38.940 --> 00:09:43.908
<v Ali>Tastentelefon mit Hörer und so weiter umgebaut, sodass, wenn er jetzt die verschiedenen

00:09:43.908 --> 00:09:48.112
<v Ali>Tasten drückt, er die Lichter in seinem Wohnzimmer heller und dunkler steuern kann.

00:09:48.425 --> 00:09:51.268
<v Ali>Und da hat er dann den Mikrocontroller in dem Telefon versteckt,

00:09:51.268 --> 00:09:54.528
<v Ali>das optisch erstmal aussieht wie einfache Deko und steht rum,

00:09:54.528 --> 00:09:58.318
<v Ali>aber damit kann er dann die Lampen heller und dunkler machen oder bestimmte Szenarios auswählen.

00:09:58.818 --> 00:10:02.444
<v Ali>Und da reden wir ja mittlerweile auch von Technik, so ein ESP32,

00:10:02.735 --> 00:10:06.288
<v Ali>der kostet so viel wie ein Coffee to go am Bahnhof zu trinken.

00:10:06.288 --> 00:10:10.248
<v Ali>Also die sind wirklich erschwinglich geworden und haben mit sich gebracht,

00:10:10.248 --> 00:10:13.491
<v Ali>dass viele Leute dem mal einen Versuch geben und mit MicroPython

00:10:13.787 --> 00:10:16.808
<v Ali>da dann auch eine Anlaufstelle haben, die sehr viel einfacher ist,

00:10:16.808 --> 00:10:21.437
<v Ali>als es zum Beispiel C oder andere hardwarenahe Programmiersprachen früher gewesen wären.

00:10:21.797 --> 00:10:25.675
<v Ali>Und da ist auch, würde ich sagen, eine der wichtigsten technischen Unterscheidungen

00:10:26.075 --> 00:10:29.908
<v Ali>mit MicroPython, nämlich wie es funktioniert, dass es Bytecode ist,

00:10:29.908 --> 00:10:33.578
<v Ali>der in seiner eigenen virtuellen Maschine läuft und extrem darauf optimiert

00:10:33.578 --> 00:10:36.948
<v Ali>ist, wenig Speicher zu verbrauchen und deswegen auf diesen sehr kleinen,

00:10:36.948 --> 00:10:39.508
<v Ali>wenig Energie verbrauchenden Controllern auch gut funktioniert.

00:10:39.508 --> 00:10:43.378
<v Ali>Also natürlich alles jetzt idealisiert. Es gibt auch Mikrocontroller,

00:10:43.378 --> 00:10:46.528
<v Ali>die sind extrem teuer, weil sie sehr spezifisch sind. Es gibt Mikrocontroller

00:10:46.528 --> 00:10:50.008
<v Ali>mit deutlich mehr Speicher für die Anwendung, aber das Gros der Mikrocontroller

00:10:50.008 --> 00:10:52.807
<v Ali>sind relativ preiswerte kleine Chipsätze.

00:10:53.213 --> 00:10:58.798
<v Claus>Ja, das wird natürlich auch dadurch möglich, dass diese Mikrocontroller in Geräten,

00:10:58.798 --> 00:11:03.744
<v Claus>wie ich es gerade erläutert habe, verschwinden und damit in riesigen Stückzahlen produziert werden.

00:11:04.459 --> 00:11:10.293
<v Claus>Und diese riesigen Stückzahlen lassen es natürlich zu, dass die Preise reduziert werden.

00:11:10.647 --> 00:11:16.477
<v Claus>Und davon kann unsere Community profitieren, dass die Controller in so großen

00:11:16.477 --> 00:11:20.297
<v Claus>Stückzahlen da sind, preiswert sind und mit dieser großen Stückzahl sich auch

00:11:20.297 --> 00:11:22.894
<v Claus>eine entsprechend große Community dann ausbildet.

00:11:23.208 --> 00:11:27.399
<v Claus>Also das ist so ein Kreislauf, der sich eigentlich, ich sage mal,

00:11:27.770 --> 00:11:29.274
<v Claus>ein Stück weit selbst befruchtet.

00:11:29.454 --> 00:11:33.262
<v Ali>Und dann hast du in deinem Buch, das ich in der Vorbereitung gelesen habe,

00:11:33.517 --> 00:11:37.437
<v Ali>sehr detailreich erklärt, was so Sachen wie Best Practice sind,

00:11:37.437 --> 00:11:43.027
<v Ali>wie man optimiert, denn Natur der Sache ist, wenn ich mit wenig Speicher operiere, dann muss ich

00:11:43.507 --> 00:11:45.387
<v Ali>darüber nachdenken, wie ich Ressourcen verwende.

00:11:45.387 --> 00:11:48.036
<v Ali>Das war früher noch ein größeres Problem als heute, wenn man sich anschaut,

00:11:48.372 --> 00:11:52.029
<v Ali>was Leute an komplexer Software in Disketten reingepresst bekommen haben.

00:11:52.238 --> 00:11:55.407
<v Ali>Und wenn ich mir anschaue, wie oft es mir noch passiert, dass ich eine Library

00:11:55.407 --> 00:11:58.137
<v Ali>im Projekt habe, die ich gar nicht mehr benutze, weil das noch irgendwo aus

00:11:58.137 --> 00:12:02.597
<v Ali>der Testphase drin liegt, was halt früher undenkbar gewesen wäre und heute mit

00:12:02.597 --> 00:12:06.072
<v Ali>verfügbarem RAM und verfügbarem Speicher etwas ist, wo man nicht so groß drüber nachdenkt.

00:12:06.403 --> 00:12:10.157
<v Ali>Bei Mikrocontrollern ist das wieder anders. Da geht es dann wieder mehr um Optimierung

00:12:10.157 --> 00:12:13.100
<v Ali>und da gibt es dann ja bei MicroPython auch so Sachen wie die

00:12:13.847 --> 00:12:19.347
<v Ali>.mpy, die Module in MicroPython, die schon bereits vorkompilierter Bytecode

00:12:19.347 --> 00:12:21.982
<v Ali>sind, die man einbinden kann, damit sie speichereffizienter sind.

00:12:22.371 --> 00:12:28.199
<v Claus>Ja, das ist ein ganz wesentlicher Punkt. Ich hätte ja grundsätzlich die Möglichkeit,

00:12:28.356 --> 00:12:30.057
<v Claus>mit MicroPython das noch alles

00:12:30.057 --> 00:12:34.143
<v Claus>selbst zu installieren. Bloß das geht dann sehr stark ins Eingemachte.

00:12:34.283 --> 00:12:39.298
<v Claus>Diesen Weg will man eigentlich nicht gehen und man möchte vorgefertigte Komponenten verwenden,

00:12:39.815 --> 00:12:44.997
<v Claus>die diesen Anspruch bereits haben, den du genannt hast, die optimiert sind hinsichtlich

00:12:44.997 --> 00:12:49.794
<v Claus>eines Embedded Systems, also einer Anwendung in einem kleinen System.

00:12:50.426 --> 00:12:57.073
<v Claus>Ich kann also Funktionen, die relativ komplex sind, in Libraries auslagern,

00:12:57.073 --> 00:13:00.974
<v Claus>entweder vorkompiliert oder als .py, also,

00:13:01.572 --> 00:13:07.423
<v Claus>als reines Python-Skript, kann diese ins System einbinden und kann es so ähnlich

00:13:07.423 --> 00:13:11.513
<v Claus>wie es bei C ist, wo ich bestimmte Libraries verwenden kann, kann ich,

00:13:12.273 --> 00:13:20.842
<v Claus>mein ganzes Projekt auf einer sicheren Schiene aufsetzen, die schon praktisch voroptimiert ist.

00:13:21.371 --> 00:13:27.146
<v Claus>Ich sollte dann einfach darauf achten, dass ich in meinem eigenen Stück Code,

00:13:27.309 --> 00:13:31.216
<v Claus>der in der Regel dann das Ganze organisieren soll, orchestrieren soll,

00:13:31.686 --> 00:13:34.728
<v Claus>dass ich dann nicht diese Vorteile wieder zunichte mache, indem ich das.

00:13:35.953 --> 00:13:37.056
<v Claus>Unmöglich programmiere.

00:13:37.357 --> 00:13:43.653
<v Claus>Aber auch dazu sind Dinge im Buch angegeben, wie ich dort vorgehen kann,

00:13:44.260 --> 00:13:48.132
<v Claus>eben in diesem von dir eben genannten Kapitel Best Practice.

00:13:48.700 --> 00:13:54.082
<v Claus>Das ist übrigens ein Punkt, der mich dazu geführt hat, dieses Buch zu schreiben.

00:13:54.273 --> 00:13:59.503
<v Claus>Ich habe eine ganze Reihe von MicroPython-Büchern gesehen, gelesen,

00:13:59.503 --> 00:14:05.233
<v Claus>überflogen und die sind oftmals an Anfänger für Anwender gedacht,

00:14:06.406 --> 00:14:10.828
<v Claus>aber dort, wo es interessant wird, hört das oftmals auf.

00:14:11.153 --> 00:14:15.813
<v Claus>Und das hat mich bewogen, mich dort eingehender damit zu befassen.

00:14:17.093 --> 00:14:22.033
<v Claus>Wir haben heute Mikrocontroller, die mehrere Kerne haben. Die versprechen natürlich

00:14:22.033 --> 00:14:25.601
<v Claus>dann, Sachen zu implementieren, die auf unterschiedlichen Kernen laufen.

00:14:26.019 --> 00:14:29.583
<v Claus>Wenn man dann die konkreten Implementierungen anschaut, merkt man,

00:14:29.583 --> 00:14:33.273
<v Claus>dass es auf einmal doch gar nicht so ohne weiteres möglich ist oder nur unter

00:14:33.273 --> 00:14:34.297
<v Claus>bestimmten Bedingungen.

00:14:34.826 --> 00:14:40.693
<v Claus>Auf solche Dinge gehe ich ein. Oder auf Multitasking und Interrupts,

00:14:40.693 --> 00:14:45.936
<v Claus>die für meine Begriffe gerade im Embedded-Bereich sehr wichtig sind.

00:14:46.093 --> 00:14:51.603
<v Claus>Dann hatten wir gesagt, dass wir versuchen wollen, für einen kleinen Controller

00:14:51.603 --> 00:14:53.483
<v Claus>möglichst optimierten Code zu schreiben.

00:14:54.145 --> 00:15:01.151
<v Claus>Dafür gibt es Tools, wo ich meinen Code, bevor er überhaupt auf den Controller

00:15:01.151 --> 00:15:02.721
<v Claus>kommt, kontrollieren kann.

00:15:02.721 --> 00:15:10.861
<v Claus>Also ich zeige, wie man mit Ruff einen sehr einfach anzuwendenden Tool Code optimieren kann.

00:15:10.861 --> 00:15:16.864
<v Claus>Oder Code erstmal lesbar gestalten kann, syntaktisch so auslegen kann,

00:15:17.323 --> 00:15:18.981
<v Claus>dass es ein pflegbarer Code ist.

00:15:18.981 --> 00:15:24.931
<v Claus>Denn man muss ja bedenken, es wird in der Regel eine bestimmte Version erzeugt,

00:15:24.931 --> 00:15:30.891
<v Claus>die erfüllt mehr oder weniger, ich hoffe mehr, die Anforderungen,

00:15:30.891 --> 00:15:32.195
<v Claus>die gestellt worden sind.

00:15:33.170 --> 00:15:36.862
<v Claus>Und dabei bleibt es aber in der Regel nicht. Man kommt zu neuen Erkenntnissen,

00:15:37.182 --> 00:15:40.211
<v Claus>man möchte Funktionen erweitern, also der Code wird weiterentwickelt,

00:15:40.711 --> 00:15:44.031
<v Claus>er muss gepflegt werden, er wird weiterentwickelt etc.

00:15:44.371 --> 00:15:51.331
<v Claus>Und dazu dienen solche Tools, die verwendet werden, um den Code eben in einer

00:15:51.331 --> 00:15:54.997
<v Claus>lesbaren und weiterverarbeitbaren Form zu halten.

00:15:55.456 --> 00:16:03.761
<v Claus>Auf solche Dinge gehe ich ein und nicht zuletzt sind ein großer Anteil,

00:16:03.761 --> 00:16:06.408
<v Claus>ich glaube etwa 100 Seiten, Anwendungen gewidmet,

00:16:07.093 --> 00:16:12.753
<v Claus>wo dem IoT-Gedanken sehr stark Rechnung getragen wird.

00:16:13.177 --> 00:16:17.142
<v Claus>Für mich ist heute, ich komme noch mal auf den Kühlschrank oder die Waschmaschine,

00:16:17.595 --> 00:16:20.596
<v Claus>das sind heute in der Regel noch isolierte Geräte.

00:16:21.246 --> 00:16:24.711
<v Claus>Also der Kühlschrank könnte zwar theoretisch, solche Beispiele hat es gegeben,

00:16:24.711 --> 00:16:28.631
<v Claus>Internetverbindungen haben und dann bevor die Milch alle wird,

00:16:28.631 --> 00:16:34.505
<v Claus>wird Neues bestellt, aber das ist ja in der Regel Wunschdenken geblieben bis heute.

00:16:35.231 --> 00:16:38.791
<v Claus>Vielleicht gibt es einige Exemplare, ich weiß das nicht genau,

00:16:38.791 --> 00:16:44.135
<v Claus>aber viel interessanter für Embedded Systems ist ja der Kontakt zum Internet.

00:16:45.411 --> 00:16:52.053
<v Claus>Dort habe ich versucht, Beispiele zu zeigen, wie einfach es sein kann, dass man mit,

00:16:52.587 --> 00:16:58.291
<v Claus>geeigneten Tools, also in dem Fall ist es der MicroDot-Webserver,

00:16:58.291 --> 00:17:00.651
<v Claus>den ich dort eingesetzt habe, wie ich dort.

00:17:02.113 --> 00:17:07.383
<v Claus>Mit wenig Aufwand eine ansprechende Oberfläche, zum Beispiel auf dem Smartphone,

00:17:08.411 --> 00:17:12.451
<v Claus>erzeugen kann, um einen Embedded System zu steuern.

00:17:13.271 --> 00:17:18.961
<v Claus>Ich habe das dort anhand von einer Raumüberwachung gemacht, wo Daten ausgegeben

00:17:18.961 --> 00:17:22.851
<v Claus>wurden und so ein Klimaindex ausgegeben wird, rot, grün, gelb.

00:17:25.631 --> 00:17:32.691
<v Claus>Der die Luftqualität kennzeichnet oder einen Schlafmonitor, der die Bedingungen

00:17:32.691 --> 00:17:39.489
<v Claus>im Schlafraum überwacht, die dann ausgewertet werden und bewertet werden.

00:17:40.691 --> 00:17:46.091
<v Claus>Ich habe dort Anwendungen hineingebracht, wo die künstliche Intelligenz eine Rolle spielt.

00:17:46.091 --> 00:17:51.843
<v Claus>Ich frage also einen KI-Agenten über eine API-Schnittstelle ab,

00:17:53.271 --> 00:17:57.291
<v Claus>wie die Wetterbedingungen sind, ob Regen zu erwarten ist, zum Beispiel durch

00:17:57.291 --> 00:18:00.761
<v Claus>so ein Forecast oder besser gesagt ein Now-Cast.

00:18:00.761 --> 00:18:02.900
<v Claus>Das musste ich erst lernen, dass es sowas auch gibt.

00:18:03.329 --> 00:18:08.054
<v Claus>Also ein Kurzzeit-Forecast wird als Now-Cast bezeichnet.

00:18:08.658 --> 00:18:13.641
<v Claus>Und diese Daten sind im Internet abrufbar, eben über so eine KI-Schnittstelle

00:18:13.641 --> 00:18:18.451
<v Claus>abrufbar und können dann zeigen, ob ich in der nächsten halben Stunde mit einem

00:18:18.451 --> 00:18:20.338
<v Claus>Starkregen zu rechnen habe oder nicht.

00:18:21.156 --> 00:18:26.678
<v Claus>In so Gewitterumgebungen ist das mitunter eine ganz interessante Mitteilung.

00:18:27.681 --> 00:18:31.378
<v Ali>Generell, Wetter ist ja für das optimierte Smart Home eine Sache,

00:18:31.378 --> 00:18:33.515
<v Ali>da habe ich letztens noch mit einem Freund drüber nachgedacht,

00:18:33.852 --> 00:18:36.307
<v Ali>weil wir für sein Smart Home was programmiert haben.

00:18:36.580 --> 00:18:40.588
<v Ali>Er hat eine Solaranlage auf dem Dach und jetzt, wo es im Moment ja immer mal

00:18:40.588 --> 00:18:42.513
<v Ali>wieder sehr heiße Wochen hat,

00:18:42.838 --> 00:18:45.068
<v Claus>Möchte er das optimal nutzen.

00:18:45.068 --> 00:18:48.997
<v Ali>Dass wenn die Solaranlage sagt, es ist gerade so und so hell,

00:18:49.345 --> 00:18:53.238
<v Ali>dass sich die Blenden vor seinen Fenstern einfach zuziehen, damit es in der

00:18:53.238 --> 00:18:56.478
<v Ali>Wohnung nicht so sehr aufheizt und das miteinander zu verbinden.

00:18:56.478 --> 00:19:01.398
<v Ali>Also die im Prinzip Now-Cast aktuelle Messung von wie hell ist es gerade auf

00:19:01.398 --> 00:19:04.488
<v Ali>dem Dach zu verwenden, um zu sagen, jetzt mach die Blenden mal zu,

00:19:04.488 --> 00:19:06.098
<v Ali>damit das Haus nicht so sehr aufheizt

00:19:06.098 --> 00:19:09.139
<v Ali>und dann kontrolliere mit dem Sensor innen, ob es was gebracht hat.

00:19:09.528 --> 00:19:12.332
<v Ali>Das sind so kleine Spielereien, für die macht es einfach auch

00:19:12.610 --> 00:19:16.808
<v Ali>Spaß, sich die Umgebung intelligenter und vernetzter zu machen und dann vor

00:19:16.808 --> 00:19:20.508
<v Ali>allem das Ganze mit Tools, die man selbst gekauft und selbst gebaut hat,

00:19:20.508 --> 00:19:22.228
<v Ali>sodass man nicht abhängig ist von irgendeinem

00:19:22.228 --> 00:19:25.528
<v Ali>Aboservice oder irgendeinem Drittanbieter aus China oder den USA.

00:19:25.528 --> 00:19:28.658
<v Ali>Also halt die Autonomie über das eigene Smart Home zu gewinnen,

00:19:28.658 --> 00:19:30.977
<v Ali>dafür ist diese ganze IoT-Entwicklung großartig.

00:19:31.093 --> 00:19:35.540
<v Claus>Absolut. Solche Beispiele habe ich also auch verwendet.

00:19:36.126 --> 00:19:40.399
<v Claus>Und ich hatte mir jetzt gerade selbst das Stichwort KI gegeben.

00:19:41.008 --> 00:19:47.800
<v Claus>Das ist auch so ein Punkt, den man beim Programmieren heute mit berücksichtigen sollte.

00:19:48.207 --> 00:19:53.378
<v Claus>Die Programmerstellung könnte ich ja theoretisch komplett der KI überlassen.

00:19:53.378 --> 00:19:57.378
<v Claus>Ich schreibe mir ein Programm und dann gibt es eine Liste von Anforderungen,

00:19:57.378 --> 00:20:03.641
<v Claus>die ich abgebe und dann spuckt die KI irgendetwas aus. Im Falle von MicroPython,

00:20:04.337 --> 00:20:07.925
<v Claus>sind diese Ergebnisse recht interessant.

00:20:08.760 --> 00:20:09.662
<v Claus>Der Hintergrund ist,

00:20:12.082 --> 00:20:17.862
<v Claus>zu den Trainingsdaten, die für die KI verwendet wurden, sind unendlich viele

00:20:18.222 --> 00:20:20.753
<v Claus>MicroPython-Programme mitverwendet worden.

00:20:21.136 --> 00:20:27.612
<v Claus>Demzufolge ist auch das Ergebnis stellenweise interessant, aber man sollte mit

00:20:27.612 --> 00:20:31.492
<v Claus>einem klugen Blick dieses Ergebnis bewerten.

00:20:31.759 --> 00:20:36.132
<v Claus>Es gilt also nicht nur, Bilder auf Fakes hin zu untersuchen,

00:20:36.132 --> 00:20:41.382
<v Claus>ob jemand fünf Finger hat oder solche Dinge, die wir alle schon gesehen haben,

00:20:41.382 --> 00:20:43.659
<v Claus>sondern man sollte sich auch den Code genau anschauen.

00:20:44.302 --> 00:20:49.499
<v Claus>Und den Code, den die KI liefert, den sollte man verstehen.

00:20:50.300 --> 00:20:54.782
<v Claus>Und wenn man den nicht versteht, dann sollte man daran zweifeln, dass er richtig ist.

00:20:56.228 --> 00:21:00.302
<v Ali>Also auch das ist ja eben bei MicroPython für so einfache Sachen wie,

00:21:00.528 --> 00:21:04.445
<v Ali>ich möchte diesen Sensor auslesen und in diese Variable schreiben.

00:21:04.445 --> 00:21:09.213
<v Ali>Da habe ich gar keine Bedenken, dass die KI das 100 Prozent oder 99,9 Prozent akkurat machen wird.

00:21:09.573 --> 00:21:13.695
<v Ali>Aber wenn ich dann ein größeres Projekt habe, wo ich mehrere Dinge auch nebenläufig

00:21:13.695 --> 00:21:17.935
<v Ali>zueinander habe, da bin ich dann doch oft da reingelaufen, dass dem,

00:21:17.935 --> 00:21:21.711
<v Ali>was das LLM im Moment produziert, wie gesagt, wir nehmen 2026 auf,

00:21:21.897 --> 00:21:24.520
<v Ali>wenn das hier jemand in zehn Jahren hört und nicht versteht, wovon wir reden.

00:21:24.822 --> 00:21:28.259
<v Ali>Im Moment ist es so, dass bei größeren Projekten so Sachen wie Speicheroptimierung

00:21:28.700 --> 00:21:32.745
<v Ali>sehr mittelmäßig sind. Das liegt halt daran, dass es gelernt hat aus allen verfügbaren

00:21:32.745 --> 00:21:34.906
<v Ali>Projekten und die sind halt im Schnitt mittelmäßig.

00:21:35.353 --> 00:21:39.545
<v Ali>Und ich merke dann aber auch wieder, dass wenn man in die Debugging-Phase und

00:21:39.545 --> 00:21:44.595
<v Ali>ins Evaluieren des Code kommt, also du hast ja auch REPL als Methode in deinem

00:21:44.595 --> 00:21:49.755
<v Ali>Buch erwähnt, also dass ich read, evaluate, print, was war das L?

00:21:50.555 --> 00:21:54.305
<v Ali>Loop, genau. Genau, also dass ich in die Schleife komme, dass ich alles,

00:21:54.305 --> 00:22:00.352
<v Ali>was ich mache, debugge, indem ich es lese, evaluiere, ausgebe und das dann wieder von vorne.

00:22:00.759 --> 00:22:05.165
<v Ali>Und bei solchen Bewertungen von eben diesem REPL, da finde ich es KI dann

00:22:05.165 --> 00:22:07.887
<v Ali>auch wieder sehr gut, um mir zu helfen, zu verstehen, was ich vor mir habe.

00:22:08.061 --> 00:22:11.065
<v Ali>Aber dafür muss ich halt auch schon was mitbringen, um überhaupt einsteigen

00:22:11.065 --> 00:22:12.914
<v Ali>zu können in das, was da rausgekommen ist.

00:22:13.344 --> 00:22:16.915
<v Claus>Richtig. Deshalb kommt man nicht umhin, auch diesen,

00:22:19.195 --> 00:22:23.645
<v Claus>einführenden Abschnitt zu lesen und zu verstehen, wo ich eben über Listen,

00:22:23.645 --> 00:22:28.280
<v Claus>Tuples und Variablen und so weiter, also über die Grundlagen spreche.

00:22:28.727 --> 00:22:33.325
<v Claus>Das ist wichtig, dass ich den KI-Vorschlag, so möchte ich es mal nennen,

00:22:33.325 --> 00:22:35.229
<v Claus>den KI-Vorschlag bewerten kann.

00:22:35.368 --> 00:22:38.573
<v Claus>Wenn ich ihn verstanden habe, kann ich ihn ausprobieren.

00:22:39.199 --> 00:22:44.308
<v Claus>Und dann wird es oft Fehlerausschriften geben und die kann ich wieder der KI

00:22:44.308 --> 00:22:49.904
<v Claus>zurückschicken, kann sagen, das ist das Resultat und es kann eine Verbesserung geben.

00:22:50.508 --> 00:22:55.208
<v Claus>Ich habe es aber auch erlebt, dass die KI sich dann im Kreis dreht.

00:22:55.208 --> 00:23:00.748
<v Claus>Also das heißt, sie halluziniert und baut das nächste Ergebnis auf dem vorher

00:23:00.748 --> 00:23:03.488
<v Claus>falschen auf und damit kommt sie nie zum Schluss.

00:23:04.008 --> 00:23:10.838
<v Claus>Also es hat Dinge gegeben, wo ich dann abends geschlossen habe und meine letzte

00:23:10.838 --> 00:23:12.676
<v Claus>Meldung an die KI war, ich gehe jetzt ins Bett.

00:23:13.688 --> 00:23:16.577
<v Claus>Also es gibt Punkte, dort versagt es komplett.

00:23:17.261 --> 00:23:20.424
<v Claus>Eben, es befindet sich dann in so einem Endlos-Loop.

00:23:20.894 --> 00:23:26.218
<v Claus>Deshalb sollte man für meine Begriffe KI nutzen, unbedingt, aber kritisch nutzen.

00:23:27.077 --> 00:23:31.519
<v Ali>KI sehe ich da auch hilfreich im Bereich des allgemeinen Rapid Prototyping und

00:23:31.519 --> 00:23:34.496
<v Ali>das ist ja, wo Mikrocontroller ihre große Stärke haben, dass ich von

00:23:34.977 --> 00:23:40.039
<v Ali>der Idee etwas zu machen hin zu, ich stecke mal ein paar Sensoren auf das Breadboard

00:23:40.039 --> 00:23:43.399
<v Ali>und ich habe, also immer wenn ich mit Jumperkabeln arbeite, fühle ich mich,

00:23:43.399 --> 00:23:45.670
<v Ali>als würde ich gerade etwas wirklich Hochtechnisches bauen.

00:23:45.827 --> 00:23:48.569
<v Ali>Dabei sind das ja mittlerweile alles sehr genormte Steckverbindungen.

00:23:48.569 --> 00:23:51.629
<v Ali>Leute, die davon keine Ahnung haben, haben dann auch immer großen Respekt,

00:23:51.629 --> 00:23:55.909
<v Ali>wenn man auf dem Tisch vor sich jede Menge Kabel von hier nach da gesteckt hat und so weiter.

00:23:56.292 --> 00:24:01.667
<v Ali>Und das ist ja der Weg, dass man, also jetzt wieder meine Referenz aus den Biologie-Projekten,

00:24:01.859 --> 00:24:06.359
<v Ali>man entwirft einmal so ein Board mit Sensoren und schreibt den Code dafür.

00:24:06.359 --> 00:24:09.359
<v Ali>Und wenn das dann funktioniert, dann kann man es nochmal in schön machen,

00:24:09.359 --> 00:24:13.169
<v Ali>dass man das Board dann entsprechend auch ätzen lässt und die Sensoren fest

00:24:13.169 --> 00:24:16.079
<v Ali>verlötet und nicht steckt, sodass es dann in der Anwendung auch sehr viel robuster

00:24:16.079 --> 00:24:19.111
<v Ali>ist, wenn es irgendwo montiert wird oder überhaupt kleiner.

00:24:19.419 --> 00:24:23.829
<v Ali>Und um diese Prototypen herzustellen, bevor man dann die fertigen Systeme,

00:24:23.829 --> 00:24:26.971
<v Ali>die fertigen elektrischen Scan-Einheiten und so weiter gebaut hat,

00:24:27.291 --> 00:24:30.079
<v Ali>dafür sind Mikrocontroller einfach mittlerweile nicht wegzudenken.

00:24:30.079 --> 00:24:32.707
<v Ali>Und dieses Rapid Prototyping ist jetzt um ein weiteres Tool,

00:24:33.032 --> 00:24:36.099
<v Ali>Provisorium, durch KI erweitert worden. Und wir alle wissen,

00:24:36.099 --> 00:24:38.779
<v Ali>es gilt die alte Weisheit, nichts hält so lange wie das Provisorium,

00:24:39.063 --> 00:24:42.006
<v Ali>aber man sollte schon auch am Ende des Tages wissen, wie es richtig geht.

00:24:42.506 --> 00:24:48.583
<v Claus>Ja, das ist richtig. Ich nutze, um diese Provisorien ein bisschen zu umgehen,

00:24:49.100 --> 00:24:54.944
<v Claus>versuche ich oft Komponenten zu nutzen, die schon ein Gehäuse haben,

00:24:55.235 --> 00:24:57.309
<v Claus>die standardisierte Stecker haben.

00:24:57.309 --> 00:25:00.953
<v Claus>Ich habe also im Buch da auch einiges erwähnt, die vielleicht ein Display haben.

00:25:01.534 --> 00:25:06.513
<v Claus>Das Display steht bei solchen Embedded Systems nicht immer ganz im Vordergrund,

00:25:06.513 --> 00:25:14.595
<v Claus>aber es gibt eben Dinge, wo ich eine gewisse Bedienfunktion habe und wo ich es gerne vor Ort habe.

00:25:14.909 --> 00:25:20.302
<v Claus>Zum Beispiel ein Außensensor, der im Grunde genommen in einem Netzwerk arbeitet,

00:25:20.888 --> 00:25:23.163
<v Claus>dort bräuchte ich kein Display.

00:25:23.543 --> 00:25:30.503
<v Claus>Aber diese kleinen OLEDs, die heute an vielen Stellen eingesetzt werden und,

00:25:31.283 --> 00:25:37.508
<v Claus>von der Software-Seite her keinen Aufwand bedeuten, wenn man das noch anschließt und ansteuert,

00:25:38.140 --> 00:25:41.333
<v Claus>die sind im Grunde genommen hilfreich, wenn ich dann mal,

00:25:42.546 --> 00:25:48.076
<v Claus>im Außenbereich meinen Sensor anschaue und er zeigt mir vernünftige Daten an

00:25:48.076 --> 00:25:54.336
<v Claus>diesem Display an, dann kann ich davon ausgehen, dass auch die drahtlose Funkstrecke

00:25:54.336 --> 00:25:57.046
<v Claus>dann funktioniert und meine Daten ankommen.

00:25:57.046 --> 00:26:05.156
<v Claus>Also das heißt, die Vor-Ort-Batterie ist noch entsprechend geladen und das Ding arbeitet zuverlässig.

00:26:06.146 --> 00:26:09.701
<v Claus>In solchen Fällen kann ein Display wirklich hilfreich sein.

00:26:10.276 --> 00:26:13.276
<v Ali>Ich kann dir aus eigener Erfahrung sagen, es gibt nichts Ärgerlicheres,

00:26:13.276 --> 00:26:17.246
<v Ali>als wenn deine Status-LED einen Kurzschluss hat und du dich die ganze Zeit fragst,

00:26:17.246 --> 00:26:19.386
<v Ali>was in diesem Board kaputt gegangen ist, bis du rausfindest,

00:26:19.386 --> 00:26:23.383
<v Ali>ah, die LED, die ich benutze, um den Status zu überprüfen, die hat den Hau.

00:26:23.801 --> 00:26:27.506
<v Ali>Also ja, das ist etwas, man möchte mehr als einen Weg haben,

00:26:27.506 --> 00:26:30.169
<v Ali>um zu sehen, was gerade in diesem Sensor passiert.

00:26:30.477 --> 00:26:33.506
<v Ali>Aber da sind wir auch wieder bei etwas, dass MicroPython bzw.

00:26:33.506 --> 00:26:38.186
<v Ali>Diese Entwicklung mit Mikrocontrollern sehr eigen ist, dass sie sehr darauf

00:26:38.186 --> 00:26:41.746
<v Ali>optimiert sind, sie live zu debuggen, sie angeschlossen zu haben und direkt

00:26:42.206 --> 00:26:44.036
<v Ali>Werte auszulesen, die da rein und raus gehen.

00:26:44.036 --> 00:26:47.476
<v Ali>Also dass ich sehr viel, ich möchte jetzt nicht sagen am offenen Herzen,

00:26:47.476 --> 00:26:50.646
<v Ali>das klingt so drastisch, aber ich kann sehr viel in meiner Entwicklung live

00:26:50.646 --> 00:26:53.317
<v Ali>nachvollziehen und mein Code kompiliert live vor mir,

00:26:53.695 --> 00:26:58.095
<v Ali>während ich hingegen bei Hochsprachen wie C, wenn ich da hardwarenah entwickle,

00:26:58.344 --> 00:27:01.891
<v Ali>da brauche ich viel mehr als das, was schon bei MicroPython mitgebracht wird,

00:27:02.216 --> 00:27:04.546
<v Ali>um nachvollziehen zu können, was die Maschine vor mir macht.

00:27:04.546 --> 00:27:09.664
<v Claus>Das ist absolut richtig. Ich muss beim C-Programm dafür sorgen,

00:27:09.983 --> 00:27:15.283
<v Claus>dass an der Konsole das ausgegeben wird, was ich als Debug-Mitteilung sehen möchte.

00:27:15.637 --> 00:27:20.276
<v Claus>Und im Grunde genommen bringt MicroPython mit einem einfachen Ausgabebefehl das

00:27:20.276 --> 00:27:25.046
<v Claus>bereits mit. Also das ist für die Fehlersuche ganz essentiell.

00:27:27.474 --> 00:27:33.109
<v Claus>Das kann man ja anfangs über die Serialschnittstelle gut machen,

00:27:33.109 --> 00:27:35.652
<v Claus>so wie es ursprünglich auch gedacht ist.

00:27:36.179 --> 00:27:42.749
<v Claus>Aber die meisten, du hattest vorhin ESP32 erwähnt, die meisten Controller bringen

00:27:42.749 --> 00:27:49.879
<v Claus>auch Bluetooth mit, sodass ich am Anfang das drahtgebunden machen kann und später über Bluetooth,

00:27:51.319 --> 00:27:56.349
<v Claus>also vor allen Dingen über BLE, Bluetooth Low Energy, dann Mitteilungen ausgeben kann.

00:27:56.349 --> 00:28:00.358
<v Claus>Und dann praktisch über das Handy die Debug-Mitteilungen sehe.

00:28:00.509 --> 00:28:04.950
<v Claus>Also solche Dinge habe ich hier im Buch auch betrachtet.

00:28:05.140 --> 00:28:11.079
<v Claus>Unter anderem ein ganzes BLE-Netzwerk. Ich habe verschiedene Temperatursensoren,

00:28:11.739 --> 00:28:13.175
<v Claus>im Internet zusammengekauft.

00:28:13.790 --> 00:28:18.765
<v Claus>Dort muss man bloß schauen, nicht alle haben offengelegte Protokolle.

00:28:18.765 --> 00:28:25.005
<v Claus>Gerade in China gibt es interessante Sensoren, aber dort wird im Grunde genommen

00:28:25.005 --> 00:28:28.250
<v Claus>das Protokoll verschlüsselt. Damit habe ich danach keinen Zugang.

00:28:28.505 --> 00:28:34.827
<v Claus>Aber es gibt Sensoren, die das sehr gut ermöglichen, wo die Protokolle offengelegt sind.

00:28:35.245 --> 00:28:40.040
<v Claus>Und dort zeige ich, wie ich solche Sensoren in dem Netzwerk zusammenfügen kann.

00:28:40.359 --> 00:28:44.515
<v Claus>Und das könnte ich natürlich auch für einen Einzelsensor nutzen über so eine

00:28:44.515 --> 00:28:47.196
<v Claus>BLE-Kontaktkommunikationsstrecke.

00:28:47.388 --> 00:28:51.715
<v Ali>Und auch das BLE, also Bluetooth Low Energy, als Standard bringt schon sehr,

00:28:51.715 --> 00:28:56.490
<v Ali>sehr viele vorkonfigurierte Sachen mit, auch so Sachen wie mögliche Gesundheitsdaten

00:28:56.716 --> 00:28:58.395
<v Ali>dann geschickt werden können und so weiter.

00:28:58.395 --> 00:29:03.815
<v Ali>Das ist wirklich hochkomplex und dass ich das als Library in MicroPython einbinden

00:29:03.815 --> 00:29:06.775
<v Ali>kann, Bluetooth Low Energy, das ist wirklich beeindruckend.

00:29:06.775 --> 00:29:10.045
<v Ali>Und da gibt es die modifizierten Versionen, wie zum Beispiel,

00:29:10.045 --> 00:29:12.651
<v Ali>wir hatten ja jetzt hier schon mehrfach Nebenläufigkeit und Multitasking,

00:29:13.069 --> 00:29:15.321
<v Ali>so Sachen wie uasyncio.

00:29:15.495 --> 00:29:21.465
<v Ali>Das war mir vertraut, aber dein Buch hat da doch nochmal einen ziemlichen Grundlagen

00:29:21.465 --> 00:29:24.675
<v Ali>tiefen Einstieg gegeben, dass ich jetzt deutlich mehr verstanden habe von dem,

00:29:24.675 --> 00:29:27.475
<v Ali>was man da macht, weil man es sonst einfach nur aus Repositories übernommen

00:29:27.475 --> 00:29:29.224
<v Ali>hat, ohne wirklich mal durchzusteigen.

00:29:29.439 --> 00:29:33.575
<v Ali>Warum setze ich das so und so an? Denn wir befinden uns ja immer noch in Umgebungen,

00:29:33.575 --> 00:29:36.039
<v Ali>wo Speicher ein limitierender Faktor sein kann.

00:29:36.324 --> 00:29:41.125
<v Ali>Und besonders dann, wenn ich mehrere Dinge parallel habe, wie das Display ansteuern,

00:29:41.125 --> 00:29:44.875
<v Ali>eine GUI ausgeben, einen Sensor auslesen und so weiter, dann sind so Sachen

00:29:44.875 --> 00:29:48.943
<v Ali>wie Zeiten und das asynchrone Zeitmanagement halt wirklich relevant.

00:29:50.539 --> 00:29:55.752
<v Claus>Das ist ein Punkt, der mir an einigen Stellen bei MicroPython-Beschreibungen gefehlt hat.

00:29:56.274 --> 00:29:59.989
<v Claus>Deshalb ist das aufgenommen. Ich halte das für wichtig, vor allen Dingen,

00:30:01.060 --> 00:30:08.470
<v Claus>wenn man die ersten Grundlagen verinnerlicht hat, dann will man natürlich solche Features nutzen.

00:30:08.470 --> 00:30:12.180
<v Claus>Weil die sind einfach zu implementieren,

00:30:13.020 --> 00:30:17.280
<v Claus>wenn man mal das Grundprinzip verstanden hat und bieten ungeheuer viel,

00:30:18.000 --> 00:30:21.400
<v Claus>gerade bei solchen nebenläufigen Prozessen, dass nicht ein Prozess den anderen

00:30:21.400 --> 00:30:24.650
<v Claus>blockiert und man sich wundert, dass hier sich nichts weiter dreht.

00:30:24.650 --> 00:30:31.394
<v Claus>Gerade bei IoT-Sachen, wo ich nach außen eine Anfrage stelle,

00:30:32.137 --> 00:30:35.835
<v Claus>die Antwort kann kommen, die wird in der Regel kommen, aber sie muss nicht kommen.

00:30:36.125 --> 00:30:41.986
<v Claus>Und wenn dann mein ganzes Programm blockiert, dann ist das wenig wert.

00:30:43.165 --> 00:30:47.164
<v Ali>Und da kommen wir dann auch bei so Sachen wie Abtastraten an den Punkt.

00:30:48.000 --> 00:30:51.164
<v Ali>Eigentlich für die meisten Sensoren, die man so im Alltag verwendet,

00:30:51.594 --> 00:30:53.680
<v Ali>ist MicroPython schnell genug.

00:30:54.020 --> 00:30:56.580
<v Ali>Aber dann gibt es ja auch den Bereich, der sich jetzt mehr und mehr entwickelt.

00:30:56.580 --> 00:30:59.860
<v Ali>Also als ich mit MicroPython selbst angefangen habe, würde ich sagen,

00:30:59.860 --> 00:31:06.298
<v Ali>war IoT generell und Sensoren in Netzwerke hängen das, was das Aushängeschild war.

00:31:06.512 --> 00:31:09.640
<v Ali>Mittlerweile erlebe ich, dass es sich mehr und mehr zum Edge-Computing entwickelt,

00:31:09.640 --> 00:31:13.327
<v Ali>also dass ich bereits Sensoren und Sensorik mit an Bord habe,

00:31:13.606 --> 00:31:15.380
<v Ali>die selbstständig Prozesse

00:31:16.020 --> 00:31:19.034
<v Ali>durchlaufen kann, sodass das, was dann der Mikrocontroller verarbeitet,

00:31:19.347 --> 00:31:23.930
<v Ali>für ihn einfacher zu interpretieren ist und nicht mehr große Ressourcen im Mikrocontroller

00:31:23.930 --> 00:31:26.487
<v Ali>geblockt werden, weil ein Sensor gerade sehr hochfrequent misst.

00:31:26.934 --> 00:31:30.970
<v Ali>Und das sind dann so Sachen, da hat sich mittlerweile einfach die Community

00:31:30.970 --> 00:31:33.830
<v Ali>hin entwickelt, da hat sich die ganze Szenen entwickelt und das zeigt ja auch

00:31:33.830 --> 00:31:38.032
<v Ali>die Professionalisierung, dass es jetzt immer besser auch Richtung Industrieanwendung funktioniert.

00:31:38.642 --> 00:31:43.506
<v Claus>Absolut, absolut. Mir fällt gerade noch ein, weil du das mit dem Edge Computing sagst.

00:31:43.750 --> 00:31:49.729
<v Claus>Ich habe ja parallel dazu viel im Arduino-Umfeld gearbeitet.

00:31:50.482 --> 00:31:55.959
<v Claus>Beim Arduino ist jetzt durch die Übernahme von Qualcomm,

00:31:56.997 --> 00:32:01.896
<v Claus>Es sind ja Hochleistungs-Linux-Devices hinzugekommen.

00:32:01.896 --> 00:32:09.832
<v Claus>Also der Arduino Uno Q ist ein Device mit einem Mikrocontroller und einem,

00:32:10.018 --> 00:32:15.283
<v Claus>ich kann es gar nicht aus dem Stegreif sagen, irgendeine Nummer, kann ich nicht sagen.

00:32:15.399 --> 00:32:17.816
<v Ali>Und so ein mobilen Handychip, der da mit drauf ist.

00:32:17.816 --> 00:32:23.973
<v Claus>Ja, ja. Und die beiden bilden praktisch ein Duo.

00:32:24.414 --> 00:32:28.988
<v Claus>Der Mikrocontroller ist für die Sachen zuständig, die wir gerade besprochen haben.

00:32:29.639 --> 00:32:33.702
<v Claus>Wird dort ganz normal in C++ im Arduino-Umfeld programmiert.

00:32:34.207 --> 00:32:40.766
<v Claus>Und die andere Seite, die Linux-Seite, die wird in Standard-Python programmiert.

00:32:41.146 --> 00:32:46.106
<v Claus>Also dort ist wieder so genau der Punkt mit dem Edge Computing zu sehen.

00:32:46.576 --> 00:32:52.764
<v Claus>Der eine Teil macht die Echtzeitverarbeitung, also eben das Sampling von irgendwelchen Sensoren.

00:32:53.846 --> 00:32:59.846
<v Claus>Es gibt eine Bridge, die zwischen beiden Systemen liegt, die für die Datenübergabe zuständig ist.

00:33:00.357 --> 00:33:05.350
<v Claus>Und dann habe ich ein Linux-System, wie gesagt, in Python programmierbar oder,

00:33:05.843 --> 00:33:12.031
<v Claus>generell programmierbar in jeder Hochsprache, aber dort wird hauptsächlich Python eingesetzt.

00:33:12.165 --> 00:33:18.036
<v Claus>Das kann die ganze Verbindung dann ins Netz machen und aber auch bereits die

00:33:18.036 --> 00:33:24.738
<v Claus>Vorverarbeitung im Edge für leistungsstärkere.

00:33:26.446 --> 00:33:28.877
<v Claus>Programme, also die entsprechende Ressourcen anfordern.

00:33:29.226 --> 00:33:32.786
<v Claus>Das ist ein Punkt, der sich dann weiter erschließt.

00:33:33.186 --> 00:33:38.535
<v Claus>Es ist also die eine Schiene MicroPython auf kleinen Controllern selbst,

00:33:39.435 --> 00:33:44.758
<v Claus>oder aber die Verbindung von Controller bis hin zum Linux-Device,

00:33:45.252 --> 00:33:51.533
<v Claus>wo ich mit Python 3 dann konkret auf dem Linux-Device arbeiten kann.

00:33:52.647 --> 00:33:59.364
<v Claus>Dieser letzte Punkt ist im Buch nicht ausgeführt, es geht ja hier um MicroPython, aber,

00:34:00.169 --> 00:34:05.256
<v Claus>ich will nur sagen, wenn man sich mit MicroPython auf dem kleinen Controller,

00:34:05.726 --> 00:34:10.504
<v Claus>in einer abgegrenzten Umgebung erstmal auskennt, die Wege,

00:34:11.270 --> 00:34:16.053
<v Claus>hin zum umfangreicheren System, die bleiben natürlich offen.

00:34:17.092 --> 00:34:21.309
<v Ali>Und das sind dann so Sachen, da könnte man zum Beispiel lokale Bildauswertung

00:34:21.309 --> 00:34:24.662
<v Ali>von Kameras über den entsprechend leistungsstärkeren Prozessor machen und so.

00:34:25.678 --> 00:34:30.669
<v Claus>Ich habe ja hier im Buch auch Kamerabeispiele mit einem.

00:34:33.269 --> 00:34:38.849
<v Claus>OpenMV und mit einem RISC-Prozessor noch mit dem MaixPy.

00:34:39.609 --> 00:34:42.186
<v Claus>Also zwei relativ ähnliche Systeme.

00:34:42.964 --> 00:34:47.022
<v Claus>Die können schon eine ganze Menge. Aber dort bin ich natürlich wirklich an der

00:34:47.364 --> 00:34:51.660
<v Claus>Grenze dieser recht leistungsfähigen Controller, die dort eingesetzt werden.

00:34:52.217 --> 00:34:57.401
<v Claus>Dort würde sich das, was du gerade genannt hast, anbieten, dann die Bildverarbeitung,

00:34:58.189 --> 00:35:02.376
<v Claus>komplexere Bildverarbeitung in so ein Linux-System hinaus auszulagern.

00:35:03.089 --> 00:35:07.609
<v Claus>Aber viele Dinge kann ich heute schon mit leistungsfähigen Controllern machen.

00:35:07.609 --> 00:35:16.009
<v Claus>Da ist ein STM32 dahinter, hinter den OpenMV-Controllern und die ermöglichen

00:35:16.009 --> 00:35:20.649
<v Claus>schon eine ganze Menge. Ich habe dort ein ganz einfaches Beispiel gemacht.

00:35:20.969 --> 00:35:31.739
<v Claus>Ich habe eine Wetterkamera, die das Umgebungsbild aufnimmt und zusätzlich werden

00:35:31.739 --> 00:35:34.049
<v Claus>dort Messwerte eingeblendet ins Bild.

00:35:34.049 --> 00:35:36.954
<v Claus>Also das ist sowas relativ Einfaches, da bedarf es keiner

00:35:37.576 --> 00:35:45.147
<v Claus>großartigen Bildverarbeitung, da bedarf es nur dem Einblenden der Messdaten in den Bildspeicher.

00:35:45.430 --> 00:35:51.090
<v Claus>Das ist recht einfach zu lösen. Aber sobald es eben anspruchsvoll wird,

00:35:51.090 --> 00:35:54.149
<v Claus>Kantendetektionen oder Gesichtserkennung,

00:35:54.567 --> 00:35:57.285
<v Claus>dann bin ich dort natürlich auch relativ schnell am Ende.

00:35:57.523 --> 00:36:02.090
<v Ali>Ja, jetzt hattest du vorhin zu Beginn unseres Gesprächs schon mal gesagt,

00:36:02.090 --> 00:36:06.980
<v Ali>dass du Wert darauf gelegt hast, aus anderen Büchern hier Dinge zusammenzutragen,

00:36:06.980 --> 00:36:10.700
<v Ali>die dir zu kurz gekommen sind oder die du nicht so in dem Umfang gefunden hast.

00:36:10.700 --> 00:36:13.590
<v Ali>Das ist eine der Sachen, die bei dir sehr im Detail beschrieben wird,

00:36:13.590 --> 00:36:17.242
<v Ali>wo ich erst gedacht habe, das weiß ich doch und dann nochmal wirklich ein paar Aha-Momente hatte.

00:36:17.649 --> 00:36:20.929
<v Ali>Das war zum ganzen Thema der Kontrollstrukturen.

00:36:21.340 --> 00:36:24.382
<v Ali>Also vor allem bei Break, Continue und Pass.

00:36:25.240 --> 00:36:29.744
<v Ali>Ich habe natürlich mit try und Go to Fail und so weiter schon rumgespielt.

00:36:30.960 --> 00:36:35.230
<v Ali>Also try und except ist das ja bei MicroPython. Aber das war so etwas,

00:36:35.230 --> 00:36:38.080
<v Ali>wo ich, also das hat man halt reingeschrieben, damit es sich nicht endlos an

00:36:38.080 --> 00:36:38.970
<v Ali>einem Prozess auffängt.

00:36:38.970 --> 00:36:43.250
<v Ali>Aber dass man auch das so sehr benutzen kann, um bewusst Prozesse zu optimieren

00:36:43.250 --> 00:36:47.170
<v Ali>und effizienter zu machen, das habe ich, sind wir ehrlich, das habe ich bisher

00:36:47.170 --> 00:36:50.033
<v Ali>schmerzlich vernachlässigt, weil es nie so kritisch war.

00:36:50.427 --> 00:36:52.923
<v Ali>Und da gibt dein Buch wirklich nochmal einen tiefen Einblick,

00:36:53.324 --> 00:36:57.060
<v Ali>warum das so relevant ist. Kannst du das in wenigen Worten für die Leute zusammenfassen,

00:36:57.060 --> 00:36:59.048
<v Ali>was das an Effizienzgewinn bringt?

00:36:59.431 --> 00:37:05.398
<v Claus>Ja, der normale Weg ist ja der, dass ich Ausnahmen benenne in diesem Konstrukt

00:37:05.700 --> 00:37:09.839
<v Claus>und auf diese dann reagiere. Also das Standardbeispiel ist immer die Division durch Null.

00:37:10.660 --> 00:37:14.930
<v Claus>Dass mir die nicht passiert, das fange ich mit so einem Konzept ab.

00:37:15.801 --> 00:37:23.380
<v Claus>Ich kann aber andersherum das auch nutzen, indem ich sage, ich schreibe einen

00:37:23.380 --> 00:37:28.020
<v Claus>Konstrukt, gerade bei solchen Brute-Force-Attacken ist das ja so, dann,

00:37:31.380 --> 00:37:33.714
<v Claus>erzwinge ich eine Ausnahme.

00:37:35.136 --> 00:37:39.879
<v Claus>Also das heißt, im Umkehrschluss, ich ziele darauf, dass ein Fehler geworfen wird.

00:37:40.773 --> 00:37:43.941
<v Claus>Und den kann ich dann separat auswerten. Das ist eigentlich,

00:37:44.501 --> 00:37:46.769
<v Claus>ich sage mal, der umgekehrte Prozess.

00:37:47.396 --> 00:37:55.281
<v Claus>Und wenn ich diesen gehe, kann ich Dinge abfangen, die nicht einfach vordefiniert

00:37:55.281 --> 00:37:59.781
<v Claus>sind, sondern, wie soll ich das sagen, die nicht definiert sind.

00:37:59.781 --> 00:38:05.049
<v Claus>Das klingt blöd, aber ich habe praktisch eine zusätzliche Ebene,

00:38:06.413 --> 00:38:10.551
<v Claus>um nicht Fehler abzufangen, sondern um bestimmte Situationen abzufangen,

00:38:10.551 --> 00:38:11.851
<v Claus>die im Programm entstehen können.

00:38:11.851 --> 00:38:16.521
<v Ali>Beim Katastrophenschutz spricht man von den Known-Unknowns, also dass ich weiß,

00:38:16.521 --> 00:38:20.121
<v Ali>dass hier etwas kommen kann, von dem ich nicht weiß, wie es aussieht und dass

00:38:20.121 --> 00:38:22.725
<v Ali>ich das dann mit in meine Entwicklung einbeziehe.

00:38:23.039 --> 00:38:25.714
<v Claus>Das habe ich jetzt umständlich mit ‚nicht nicht‘ gemacht.

00:38:27.881 --> 00:38:29.324
<v Claus>Dein Begriff gefällt mir besser.

00:38:29.800 --> 00:38:33.141
<v Ali>Es gibt auch die Unknowns, aber da wissen wir noch nicht genau, was sie sind.

00:38:33.441 --> 00:38:34.717
<v Claus>Ja, ja, ja.

00:38:35.246 --> 00:38:39.581
<v Ali>Auf jeden Fall, genau dafür möchte ich meinen Code ja optimieren,

00:38:39.581 --> 00:38:43.711
<v Ali>dass ich einerseits keine Attacken habe und andererseits keine Fehler,

00:38:43.711 --> 00:38:47.271
<v Ali>die passieren, wenn zum Beispiel ein Sensor keinen Wert mehr liefert,

00:38:47.271 --> 00:38:49.003
<v Ali>aber ich mich auf den Sensor verlassen habe,

00:38:49.352 --> 00:38:53.181
<v Ali>dass ich dann eine sichere Konstruktion habe, die sagt, das Programm muss jetzt

00:38:53.181 --> 00:38:56.201
<v Ali>hier einen Fehler werfen und kann nicht die ganze Zeit einen Sensor messen,

00:38:56.201 --> 00:38:57.142
<v Ali>der nicht mehr antwortet.

00:38:57.293 --> 00:39:02.900
<v Claus>Richtig, richtig. Ich könnte ja dann einen Ausweichzweig definieren,

00:39:03.237 --> 00:39:11.821
<v Claus>der entweder den Sensor als Out-of-Order kennzeichnet oder aber wahrscheinliche Werte annimmt.

00:39:12.561 --> 00:39:16.327
<v Claus>Das könnte man ja jetzt wieder aus der Vergangenheit dann sagen,

00:39:16.618 --> 00:39:22.156
<v Claus>mein Sensor ist defekt, aber ein gültiger Wert wäre der und der,

00:39:22.353 --> 00:39:24.441
<v Claus>sodass praktisch mein Algorithmus weiterläuft.

00:39:25.161 --> 00:39:29.212
<v Claus>Aber ich könnte das Ergebnis als unsicher markieren.

00:39:30.327 --> 00:39:34.177
<v Ali>Und ich merke, dass generell, wenn ich mich mit Mikroelektronik befasse...

00:39:35.227 --> 00:39:38.675
<v Ali>Das mache ich jetzt als größeren Bogen raus, weg von den Kontrollkonstrukten.

00:39:38.982 --> 00:39:43.151
<v Ali>Es verändert meine Art, über Probleme nachzudenken, wenn ich Sensorik kenne.

00:39:43.151 --> 00:39:46.134
<v Ali>Und da finde ich sehr gut, dass du in deinem Buch auch viele Sensoren aufzählst.

00:39:46.575 --> 00:39:48.821
<v Ali>Ich brauche dann meistens auch noch eine praktische Anwendung,

00:39:48.821 --> 00:39:52.879
<v Ali>aber dann fängt man an darin zu denken, wie kann ich diesem Problem mit den Sensoren begegnen.

00:39:53.129 --> 00:39:56.331
<v Ali>Und um nochmal zum Anfang von unserem Gespräch zu kommen, ich hatte mit einer

00:39:56.331 --> 00:40:00.111
<v Ali>Biologin eine Unterhaltung darüber, dass sie einen Lernversuch haben,

00:40:00.111 --> 00:40:04.588
<v Ali>wo Fische auf einen Reiz reagieren sollen, also ein Lichtsignal reagieren sollen.

00:40:04.774 --> 00:40:09.151
<v Ali>Und wenn der Fisch sich falsch verhält, dann soll es einen Negativreiz geben.

00:40:09.151 --> 00:40:11.511
<v Ali>Also wir reden jetzt nicht davon, dass der Fisch gequält wird,

00:40:11.511 --> 00:40:15.461
<v Ali>sondern der Professor hatte damals vorgeschlagen, ja dann klopfen sie doch einfach

00:40:15.461 --> 00:40:19.581
<v Ali>mit einem Lineal von außen ans Aquarium, dass es halt einen Reiz gibt,

00:40:19.581 --> 00:40:20.529
<v Ali>auf den der Fisch reagiert.

00:40:20.779 --> 00:40:23.851
<v Ali>Und da meinte sie, aber da muss ich ja für jedes Training und der Fisch sollte

00:40:23.851 --> 00:40:26.564
<v Ali>viermal täglich trainieren, viermal täglich in die Uni kommen.

00:40:26.843 --> 00:40:29.491
<v Ali>Dann hat sie mir das ganz traurig erzählt und ich meinte, ja,

00:40:29.491 --> 00:40:33.201
<v Ali>wir können ja mal gucken, einfach einen Vibrationsmotor, der dann leicht gegen

00:40:33.201 --> 00:40:36.041
<v Ali>die Scheibe klopft, ob es das auch tut und stellt sich raus,

00:40:36.041 --> 00:40:38.491
<v Ali>ja, mit einer Kamera kann man sehen, wie sich der Fisch verhält und man kann

00:40:38.491 --> 00:40:41.326
<v Ali>das jetzt aus der Ferne machen. Aber genau das sind halt so Szenarien.

00:40:41.646 --> 00:40:46.201
<v Ali>Der Professor, der denkt in, wie entwickeln sich diese neuronalen Zellen in

00:40:46.201 --> 00:40:48.095
<v Ali>dem Fisch. Der denkt jetzt nicht konkret darüber nach.

00:40:48.368 --> 00:40:52.221
<v Ali>Und wie baue ich das Experiment dafür? Sagt ihr, ja, also zu meiner Zeit,

00:40:52.221 --> 00:40:55.421
<v Ali>da sind wir noch viermal am Tag in die Uni gekommen, um unseren Versuch zu betreuen.

00:40:55.583 --> 00:40:58.265
<v Ali>Ab dem Moment, wo man über die Möglichkeiten von Sensoren weiß,

00:40:58.573 --> 00:41:01.534
<v Ali>fängt man an, anders zu denken, wie man sich einem Problem nähern kann.

00:41:01.835 --> 00:41:05.071
<v Ali>Dementsprechend mag ich solche Beispielkataloge, wie du sie auch gemacht hast

00:41:05.071 --> 00:41:05.971
<v Ali>in deinem Buch immer sehr.

00:41:05.971 --> 00:41:13.625
<v Claus>Ja, das ist absolut richtig. Ich kenne das aus meiner eigenen Ausbildung.

00:41:14.061 --> 00:41:19.181
<v Claus>Ich habe also auch nicht-lineare Gleichung mit einem Tischrechner vor 100 Jahren

00:41:19.510 --> 00:41:26.384
<v Claus>gemacht und der brauchte für die Berechnung des Gleichungssystems anderthalb Stunden.

00:41:27.422 --> 00:41:31.897
<v Claus>Und da, ich bin dann alle anderthalb Stunden nach Hause gefahren,

00:41:32.426 --> 00:41:35.711
<v Claus>habe das Ergebnis notiert, den nächsten Job angestoßen und bin wieder weg.

00:41:36.228 --> 00:41:37.493
<v Claus>Also ich kenne das sehr gut.

00:41:38.579 --> 00:41:42.326
<v Ali>Ja, und wie gesagt, da gibt Technik einem einfach Möglichkeiten,

00:41:42.326 --> 00:41:45.504
<v Ali>Dinge anders zu denken und Dinge auch weiterzudenken.

00:41:45.789 --> 00:41:49.486
<v Ali>Und vielleicht das mal als Schlussakkord. Du hast jetzt dieses Buch geschrieben

00:41:49.946 --> 00:41:53.289
<v Ali>darüber, was es für die Maker-Szene und IoT-Development bedeutet.

00:41:53.649 --> 00:41:56.456
<v Ali>Welche Trends zeichnen sich gerade ab? Du hast schon erwähnt,

00:41:56.456 --> 00:41:59.448
<v Ali>dass du einen KI-Request über die API machst.

00:41:59.709 --> 00:42:03.096
<v Ali>Das würde ich sagen, ist gerade das große Thema, das ganz viel im Bereich Mikrocontroller

00:42:03.096 --> 00:42:08.643
<v Ali>dominiert. Aber siehst du etwas, wo gerade der Trend hingeht oder was dich neu interessiert?

00:42:09.506 --> 00:42:15.626
<v Claus>Was mich neu interessiert, sind vernetzte Systeme, also so Mesh-Netzwerke.

00:42:16.146 --> 00:42:19.892
<v Claus>Das Stichwort ist dazu Meshtastic. Ich weiß nicht, ob du das kennst.

00:42:20.403 --> 00:42:25.626
<v Ali>Kurz erklärt, das ist ein Funknetzwerk, das dadurch, dass man mit vielen Sendern

00:42:25.626 --> 00:42:28.926
<v Ali>und Empfängern verbunden ist, zum Beispiel Nachrichtenübermittlung ermöglicht.

00:42:28.926 --> 00:42:33.506
<v Ali>Und Leute bauen sich so kleine Walkie-Talkie-artige Geräte, um Nachrichten in

00:42:33.506 --> 00:42:37.185
<v Ali>SMS-Größe über dieses Netzwerk zu verschicken. Aber halt nicht über GSM,

00:42:37.382 --> 00:42:39.913
<v Ali>nicht über WLAN, sondern eben über diesen Funkstandard.

00:42:40.337 --> 00:42:41.866
<v Claus>Ja, das ist absolut richtig.

00:42:44.052 --> 00:42:49.526
<v Claus>Der Funkstandard ist LoRa. Es braucht keine Infrastruktur. Die Nachrichten springen

00:42:49.526 --> 00:42:51.386
<v Claus>praktisch von Knoten zu Knoten.

00:42:51.706 --> 00:42:58.526
<v Claus>Und das Netzwerk ist ein Mesh-Netzwerk. Das heißt, wenn ein Knoten ausfällt,

00:42:59.266 --> 00:43:02.738
<v Claus>heilt sich das selber. Es gibt andere Kommunikationswege.

00:43:03.145 --> 00:43:04.586
<v Claus>Eine Nachricht wird nicht nur

00:43:04.586 --> 00:43:08.766
<v Claus>über einen Weg verschickt, sodass es also ein redundantes System ist. Gerade.

00:43:13.046 --> 00:43:18.006
<v Claus>Für den Katastrophenschutz ist es sehr interessant, weil es dort leicht passieren

00:43:18.006 --> 00:43:21.486
<v Claus>kann, dass die kommerziellen Systeme ausfallen.

00:43:21.966 --> 00:43:27.047
<v Claus>Das heißt, ein reiner Stromausfall reicht schon zu, dann ist alles andere vorbei.

00:43:27.536 --> 00:43:33.167
<v Claus>Und dieses System arbeitet im Wesentlichen mit batteriegestützten Knoten,

00:43:34.252 --> 00:43:39.119
<v Claus>gepuffert durch Solar und solche Dinge. Das kann ich mir vorstellen.

00:43:40.599 --> 00:43:44.849
<v Claus>Das ist in der Anfangsphase noch, das wird sich entwickeln.

00:43:44.849 --> 00:43:49.479
<v Claus>Es gibt also nicht nur das Meshtastic, es gibt MeshCore, es gibt einige Systeme,

00:43:49.479 --> 00:43:52.049
<v Claus>die da parallel entstehen.

00:43:52.283 --> 00:43:56.798
<v Claus>Was sich dann durchsetzen wird oder ob alles so bleiben wird, das steht noch aus.

00:43:57.663 --> 00:44:03.363
<v Claus>Das ist eine Sache. Bei der Sensorik wird es natürlich auch Entwicklungen geben,

00:44:03.810 --> 00:44:05.909
<v Claus>die batteriebetrieben sein können.

00:44:05.909 --> 00:44:10.969
<v Claus>Also es gibt teilweise Sensorik heute, die kann ich nicht mit der Batterie betreiben,

00:44:10.969 --> 00:44:16.185
<v Claus>weil sie selber noch zu viel Strom verbrauchen. Also dort wird es auch Änderungen geben.

00:44:16.627 --> 00:44:22.211
<v Claus>Bei der Aktorik, also du hattest das mit dem Vibrationsmotor genannt,

00:44:22.759 --> 00:44:27.329
<v Claus>gibt es schon solche Entwicklungen, die vor allen Dingen durch die Wearables,

00:44:27.329 --> 00:44:29.829
<v Claus>also durch Uhren und so weiter getragen werden.

00:44:29.829 --> 00:44:34.599
<v Claus>Dieser Mikromotor ist ja so ein Beispiel. Wir haben alle einen Vibrationsalarm,

00:44:35.519 --> 00:44:39.272
<v Claus>in der Armbanduhr, wenn man so eine Smartwatch hat.

00:44:39.841 --> 00:44:46.119
<v Claus>Und dort wird es also Dinge hingeben, die in Richtung Verkleinerung sind.

00:44:46.929 --> 00:44:49.378
<v Claus>Bei Mikrofonen, die MEMS-Entwicklung.

00:44:51.499 --> 00:44:54.789
<v Claus>Elektromechanische Systeme auf dem Chip, das sind Dinge.

00:44:55.578 --> 00:45:01.359
<v Claus>Und wo ich denke, wo wir jetzt noch am Anfang stehen, das ist,

00:45:02.341 --> 00:45:08.479
<v Claus>der Punkt dieser kombinierten Rechner, was ich vorhin mit dem Uno Q genannt

00:45:08.479 --> 00:45:10.929
<v Claus>hatte, das wird auch zunehmen.

00:45:10.929 --> 00:45:16.277
<v Claus>Es ist von Qualcomm oder von Arduino ist schon der nächste angekündigt,

00:45:16.881 --> 00:45:20.679
<v Claus>der, ich denke mal, eher in die professionelle Ecke schielt,

00:45:20.679 --> 00:45:27.299
<v Claus>weil der Linux-Teil sehr komplex ist und sehr leistungsfähig ist.

00:45:27.299 --> 00:45:29.362
<v Claus>Das wird wahrscheinlich so das Arduino-Umfeld

00:45:30.174 --> 00:45:33.466
<v Claus>nur noch bedingt tangieren, aber das wird die Zeit zeigen.

00:45:34.261 --> 00:45:39.544
<v Claus>Und natürlich Mikrocontroller, auch dort wird es Änderungen geben.

00:45:39.886 --> 00:45:46.516
<v Claus>Der Raspberry Pi Pico ist auch schon so ein Beispiel, habe ich im Buch auch beschrieben.

00:45:46.771 --> 00:45:50.010
<v Claus>Der hat erstens mal zwei Kerne.

00:45:50.544 --> 00:45:56.701
<v Claus>Das ist der einzige Controller, wo ich wirklich den zweiten Kern für Parallel,

00:45:56.701 --> 00:45:58.700
<v Claus>also für Nebenläufigkeit nutzen kann.

00:45:58.950 --> 00:46:05.941
<v Claus>Und er hat zusätzlich noch State-Machines, State-Machine-Ausgänge,

00:46:05.941 --> 00:46:09.149
<v Claus>die separat programmiert werden können,

00:46:10.101 --> 00:46:13.401
<v Claus>die dann Kommunikation zum Beispiel.

00:46:14.481 --> 00:46:18.465
<v Claus>Über ein serielles Interface zu einem Sensor übernehmen können,

00:46:18.866 --> 00:46:21.141
<v Claus>wo ich wirklich taktgenau,

00:46:22.041 --> 00:46:29.661
<v Claus>oder mikrosekundengenau die Takte programmieren kann und so für bestimmte,

00:46:30.581 --> 00:46:34.255
<v Claus>proprietäre Interfaces gut vorbereitet bin. Aber,

00:46:34.923 --> 00:46:39.991
<v Claus>Es werden auch für die Standard-Interfaces bereits Libraries oder Code-Segmente,

00:46:40.537 --> 00:46:46.719
<v Claus>bereitgestellt, wo ich das also ohne tiefes Eindringen dann diese State-Machines nutzen kann.

00:46:47.073 --> 00:46:52.176
<v Claus>Also eine komplexer werdende Mikrocontroller-Struktur, du hattest das vorhin

00:46:52.176 --> 00:46:58.503
<v Claus>mal genannt, wo durch die intelligente Peripherie der Core selbst entlastet wird.

00:46:59.025 --> 00:47:03.356
<v Claus>Also ich könnte zum Beispiel dieses ganze Bitbanging oder sowas,

00:47:03.356 --> 00:47:08.376
<v Claus>was ich stellenweise für ein SPI-less Interface brauche, lagere ich aus in so

00:47:08.376 --> 00:47:12.966
<v Claus>eine State-Machine und die CPU ist komplett frei davon.

00:47:13.960 --> 00:47:18.246
<v Ali>Das ist, was auch so meine Beobachtung ist. Wie gesagt, ich habe das als Teenager

00:47:18.246 --> 00:47:21.611
<v Ali>im Hobby-Bastel-Bereich entdeckt, wie Mikrocontroller aufgekommen sind.

00:47:22.018 --> 00:47:25.436
<v Ali>Und wir erleben, dass sie einerseits so günstig sind wie noch nie,

00:47:25.436 --> 00:47:28.996
<v Ali>so zugänglich wie noch nie. Es gibt jetzt mit deinem Buch noch ein Buch mehr.

00:47:28.996 --> 00:47:33.198
<v Ali>Also es gibt viel Wissen darüber, wie man mit auch wirklich Grundlagen einsteigen kann.

00:47:33.570 --> 00:47:38.326
<v Ali>Und es wird immer professioneller. Also das ist weit weg von dem verrückten

00:47:38.326 --> 00:47:41.446
<v Ali>Bastelprojekt, mit dem man nur die eigene Modelleisenbahn steuert, hin zu,

00:47:41.886 --> 00:47:45.522
<v Ali>du lernst da Dinge, die dann auch an echten Industrieanlagen oder,

00:47:45.824 --> 00:47:49.816
<v Ali>also bei LoRa muss ich immer daran denken, ich kenne das ganz viel aus Uniprojekten

00:47:49.816 --> 00:47:53.466
<v Ali>zum Thema Umweltmessung, wo man dann Wetterstationen

00:47:53.866 --> 00:47:57.916
<v Ali>in der Natur verteilt, die mittlerweile auch, also wenn ich mich daran erinnere,

00:47:57.916 --> 00:48:01.366
<v Ali>als ich angefangen habe, hatte ich, so 2014 wird es gewesen sein,

00:48:01.366 --> 00:48:03.088
<v Ali>mal einen Gasspektrometer gesehen.

00:48:03.419 --> 00:48:07.316
<v Ali>Das stand auf dem Tisch, das war fast so groß wie ein Schuhkarton und es war

00:48:07.316 --> 00:48:08.356
<v Ali>einfach sehr, sehr teuer.

00:48:08.356 --> 00:48:11.796
<v Ali>Und mittlerweile gibt es vergleichbare Messgeräte, die passen zusammen mit dem

00:48:11.796 --> 00:48:16.286
<v Ali>Mikrocontroller und der Antenne in eine leere Cola-Dose und können im Wald platziert

00:48:16.286 --> 00:48:18.707
<v Ali>werden. Also da ist einfach wirklich viel passiert.

00:48:19.113 --> 00:48:23.862
<v Claus>Ja, ich habe so eine Wetterstation seit mehreren Jahren autonom laufen.

00:48:24.320 --> 00:48:30.050
<v Claus>Die wird solar gepuffert, also mit Batterie betrieben, mit einem Solarschirm dran.

00:48:30.946 --> 00:48:34.050
<v Claus>Und das zeigt jetzt schon zuverlässig seit,

00:48:34.781 --> 00:48:41.151
<v Claus>vier oder fünf Jahren bei mir über LoRa die Wetterdaten an. Also ganz genau

00:48:41.151 --> 00:48:42.444
<v Claus>das, was du gerade gesagt hast.

00:48:42.618 --> 00:48:45.581
<v Ali>Und das ist eigentlich ein sehr schönes Einsteigerprojekt, dem du dich ja auch

00:48:45.581 --> 00:48:47.302
<v Ali>in deinem Buch unter anderem widmest.

00:48:48.111 --> 00:48:52.261
<v Ali>Ich glaube, wir haben relativ gut besprochen, warum man in dieses Buch reinschauen

00:48:52.261 --> 00:48:56.031
<v Ali>sollte und warum man MicroPython für die eigenen Bastelprojekte,

00:48:56.031 --> 00:48:58.582
<v Ali>aber auch für die professionellen Projekte in Angriff nehmen sollte.

00:48:58.988 --> 00:49:02.681
<v Ali>Danke, Claus, für deine Zeit. Claus Kühnels Buch heißt MicroPython und ist bei

00:49:02.691 --> 00:49:04.073
<v Ali>Rheinwerk erschienen. Danke und bis bald.