 Gut. Willkommen zum ersten Talk, zum ersten richtigen Talk in diesem Saal. Ja, die GPN, ihr kennt sie, sie ist bis jetzt eine wunderschöne Veranstaltung gewesen, aber der fehlte etwas, was manche andere Veranstaltungen tatsächlich schon haben. Ein Badge, ein elektronisches Badge. Letztes Jahr im Hackerspace in Frankfurt, es ist passiert, dass Niklas und Jan-Henrik zusammengesessen hat noch mit ein paar anderen und da kam die Idee, die GPN braucht ein Badge. Und eine Stunde später gab es ein Badge, zumindest die Idee dafür. Und ich habe das selber gesehen, während wir da GPN-Orgasitzungen hatten, hatten die halt eben am Rechner gesessen, hatten wir ein bisschen gehackt, geplant, gemacht, schalpläne gezeichnet, Konzeption gemacht und so und sind da relativ schnell vorwärts gekommen. Und sie haben es, ich finde das total spannend, nicht nur fünf davon gemacht oder zehn davon gemacht, sondern sie haben einen ganzen Produktionslauf von um die 450 gemacht, was ich also großartig finde. Gut, wer sind die? Niklas vom Entropia, Jan-Henriks, sein Herz aller Liebster aus Münster. Und es gibt noch zwei weitere im Bunde, das ist Anton und einen Namen, den ich vergessen habe, Janis. Gut, einen herzlichen Applaus. Willkommen zu dem schönen Talk. Ja, wir versuchen jetzt mal so was wie ein Talk zu halten. Das Problem ist, dass wir bis heute Morgen damit beschäftigt waren, eure Wäsche zum Laufen zu kriegen, dazu später mehr. Aber wir werden jetzt einfach mal so die Punkte abgehen. Sarah hat ja schon gesagt, wie die Idee überhaupt entstanden ist. Das war so ein Unfall. Wir werden erklären, weshalb wir die Badges so designed haben, wie wir sie designed haben, weshalb es nur 400 gibt, wie wir die Badges dann am Ende hergestellt haben. Dann werden wir irgendwie was zu der Software sagen, die auf den Badges läuft. Das wird Janis übernehmen, der da sehr viel entwickelt hat, um beispielsweise das Standardraum geschrieben hat, das euch über Gulasch informiert. Und am Ende, also nicht am Ende des Vortrags, aber am Ende unseres Teils, wird euch Anton noch zeigen, wie ihr ein Hello World auf euer Badge bekommt, so als Getting Started, damit ihr direkt nach dem Vortrag anfangen könnt, damit zu entwickeln. Und am Ende haben wir noch viel Zeit für Fragen, damit wir wirklich auf das eingehen können, was euch interessiert und hier nicht nur irgendwelches Zeug reden. Ja, den Anfang wird Jan Henrik machen, der erzählt euch so ein bisschen, weshalb es Badges gibt, wie wir sie so designed haben, wie wir sie so designed haben, wie wir sie designed haben. Und ja, das überlasse ich. So, wie es Badges gibt, ganz einfach, weil es Pizza gab. Vor einiger Zeit, im Januar, in der ersten Januarwoche, waren wir zu Besuch im CCC-FFM. Und irgendwie ist da die blöde Idee aufgekommen, was wäre, wenn es eltonischen Namensbadges für die GPN geben? Das war erst mal nur eine blöde Idee, aber nach einer Stunde gab es dann schon das erste Design. Und eine Woche später war dann auch schon die erste Hardware fertig und so schnell kann es gehen, so schnell hat man Badges. Dann haben wir uns natürlich direkt am Abend überlegt, was ist ein Badge, wie macht man ein Badge, weil von uns hat noch keiner ein Badge gemacht und geschweige denn bei irgendeinem Badge mitgeholfen. Ganz einfach, Badge hat eine Aussage, soll sagen, hallo, mein Name ist und ich war auf diesem Event. Bei der GPN ist das recht easy, wenn mein Motto Works as Intended mit der Lego Drohne oder dem Lego Spielzeug, je nachdem, das wollten wir halt recht schön bzw. recht genau darstellen in unserem Badge. Deswegen ist dann auch ziemlich schnell das Badge in Form einer Drohne mit dem Lego entstanden. Wenn jemand dieses Badge trägt, damit man ganz klar sieht, hallo, mein Name ist, ich war auf der GPN 17. Das ist so die Idee dahinter. Warum es nur 400 gab, da gibt es einen, kein Laptop nicht bedient. Warum es nur 400 gab, weil wir ungefähr hier angefangen haben zu planen und weil es kein Budget gibt. Bisschenweise noch ein bisschen früher haben wir angefangen. Das heißt, wir müssen alles oder mussten an von Anfang an alles selber zahlen, selber bauen und so gering wie möglich bei den Kosten pro Badge bleiben oder die Kosten pro Badge so gering wie möglich halten, damit wir es überhaupt stemmen können. Weil wir haben 400 Badges gemacht, 400 Badges, da kommt schon jede Menge Geld zusammen und Aufwand, den man betreiben muss, deswegen gibt es auch leider nur 400 von. Hätten wir natürlich gewusst, dass das hier so explodiert, hätten wir vielleicht auch versucht mehr zu machen. Wäre aber schwierig geworden. Die Dokumentenkameras sind leider nicht mehr in den Tor geschaut. recht schnell ist dann natürlich die Hardware entstanden und da haben wir es auch überlegt, was ist denn so sinnvoll auf einem Badge? Was kommt man denn gebrauchen? Da haben wir uns dann natürlich recht schnell dafür entschieden, dass wir von der Firma Espressiv einen sogenannten Extensor oder einen ESP8266 Wi-Fi Sock nehmen mit einer Extensor CPU drinnen. Sprich, wir haben recht flotte CPU mit Wi-Fi im gleichen Chip, was natürlich ziemlich praktisch ist für verschiedene Funktionen, die auch später noch alschert werden. So ein Chip alleine ist natürlich recht langweilig, haben wir uns auf eBay und Aliexpress begeben und mal geschaut, was gibt es denn so schönes, was das, was dieser Chip denn gebrauchen könnte oder was das Badge denn gebrauchen könnte? So ein recht schnell bei diesem Display gelandet, ein Elie 9316C, wenn ich mich irre, ein 12828 Pixel RGB LCD Display, bzw. TFT. Dazu dann natürlich der Alpekante Joystick, welcher auch auf Vorhering-Batches schon zu sehen war, mit 4SWS2813 LEDs. Welche den schönen Vorteil haben zu ihren Vorgängern, dass die PWM-Frequenz deutlich erhöht ist, somit flackert die LED im Vorbeigehen nicht. Zusätzlich haben wir dann noch von der Firma Bosch den BNO055, das ist der in der Mitte, gesponsert bekommen. Das ist ein neuen Acks-Bewegungssensor, 3-Axen-Gyruskop, 3-Axen-Axelometer und 3-Axen-Magnetometer plus ein Temperaturkanal. Ist natürlich schon eine schöne Sache so auf dem Badge, mit dem kann man dann recht schöne Bewegung oder hat man einen sehr schönen Input für das Badge über Bewegungen. Zusätzlich haben wir dann noch ein LDR auf jedes Badge oder mit jedem Badge beigegelegt. Darüber könnt ihr dann das Lichtlevel um euch herum messen und das bietet auch in der eigentlichen App schöne Funktionen, so wie automatische Tag-Nacht-Umschaltung. Da so ein Badge natürlich auch noch mehr Output als LEDs braucht, haben wir uns überlegt, was könnte so ein Badge denn gebrauchen, um sich bemerkbar zu machen? Pieper, kann man machen, aber irgendwann geht es auch auf die Nerven. Deswegen hat jedes Badge so einen schönen kleinen Vibrationsmotor, mit dem es sich im Notfall auch bemerkbar machen kann, wenn es Gulasch gibt. Zusätzlich haben wir oben dann noch Info-Rot-Kommunikation auf dem Badge, mit welcher man z.B. sich mit anderen Badges Perron kann oder Datenaustausch vornehmen kann, welches nicht über das Netzwerk gehen soll oder mit welchem das Netzwerk eingestellt werden soll. Das Badge lässt sich über den USB-Konnektor unten entweder programmieren oder auch über den Software USB-Stack von Cien Lore, bestimmt schon mal ein oder andere gesehener gehört, lässt sich das Badge dann auch als USB-Device bzw. als Maus und Tastatur benutzen, der Spaß daran hat. Ja, das ist erstmal so, alles größere zur Hardware, es sind natürlich noch ein paar Komponenten mehr drauf. In der Mitte hier, der ganz kleine Chip ist zum Beispiel ein Port-Expander, da der ESP nur sehr wenige GPIOs hat, viel zu wenig. Daneben haben wir noch einen analogen Mux, um deutlich mehr zu einer analogen Spannung einzulesen, da der ESP nur einen ADC-Eingang hat, auch nur einen ADC und natürlich hier unten ein Flash für die Programme vom ESP. Da sucht aber noch mehr, was uns da ausgedacht haben. Ja, vielen Dank in den kurzen Einblick der Hardware. Ich bin der Mensch, der diese ganze Hardware verbrochen hat, der das Design dahinter gebastelt hat und ich habe gehört, es gibt WLAN. Also auch das richtige WLAN, eure Batches funktionieren jetzt noch besser. Ich würde euch jetzt gerne mal begleiten in unserer Entwicklung, wie es zu diesem Fertigen Batch kam. Jan-Henrik hat ja schon erwähnt, weshalb wir die Teile genommen haben, die wir genommen haben. Gut, jetzt hat man so einen Design, man hat irgendwie fünf von diesen Prototypen auf den Schreibtisch liegen, aber fünf sind irgendwie noch nicht 500. Damit das Batch wirklich so günstig ist, wie es ist, mussten wir fast alle Teile aus China importieren. Ebay ist da eine Option, wobei Ebay inzwischen auch nicht mehr das ist, was es mal war. Es ist ziemlich teuer geworden. Deshalb sind wir auf AliExpress Shoppen gegangen für insgesamt, ich glaube, sieben oder achttausend Euro. Das ist ja lustig. Hätten wir vor dem Talk mehr Zeit gehabt, hätte ich noch so ein paar Screenshots rausgesucht. Wer dieses AliExpress Shopping Experience kennt, der hatte bestimmt auch schon die eine oder andere nette Kommunikation mit dem einem oder anderen Chinesen, TLDR. Ich kriege gerade täglich Werbung, ob ich nicht noch mehr ESPs kaufen will und ob ich nicht noch mehr Displays brauche und noch mehr Alkohol Sensoren. Also ich glaube, ich muss mir demnächst mal einen neuen Account anlegen. Auf jeden Fall seht ihr vielleicht an den Batches, wenn ihr euch die genauer anguckt, da ist mal irgendwie so, dass ein oder andere gebotcht, irgendwo sind Flussmittelreste. Ihr seht, die Batches sehen nicht aus wie zum Beispiel das Radio vom Camp. Das liegt daran, dass wir jedes dieser Batches durchschnittlich zehn Minuten in der Hand hatten, weil wir die richtig hart verkackt haben, um es genau zu nehmen. Auf dem Batches sind auch jetzt noch einige Hardwarefehler. Vermutlich habt ihr sie noch gar nicht gefunden, aber ich habe ein paar Bilder mitgebracht, auf denen man das ganz gut sieht. Das Besondere oder der Grund, weshalb die Entwicklung von diesem Batch gar nicht mal so trivial war, liegt daran, dass dieser tolle ESP zwar irgendwie ein super Sock ist, aber ein paar echt hässlige Pins hat. Wenn man sich das mal anguckt, gibt es hier irgendwo im Schaltplan so eine ganze Liste. All diese Widerstände sind notwendig, damit der ESP überhaupt bootet. Da sind irgendwelche Widerstände, die zum Beispiel GPIO0, GPIO2, TX beim Einschalten in den richtigen State, also High oder Low ziehen, um dem ESP zu sagen, du booten mal bitte vom Flash, booten mal überhaupt, schaltet ein WLAN ein. Manche der Widerstände hier sind um irgendwie die Sende leistet, um das WLANs einzustellen und so weiter und so fort. Und bis man das mal alles in einem Design berücksichtigt hat, ist gar nicht so leicht, weil all diese Pins hier wollen wir ja nicht nur irgendwie zur Konfiguration nutzen, sondern tatsächlich auch als GPIOs. Also zum Beispiel hier der enorm kritische Pin GPIO2, der dem ESP sagt, ob er vom Flash oder von der SD-Karte booten soll, ist bei uns gleichzeitig auch noch USB und Infrared Receive. Dazu eine kurze Anekdote, weshalb der ein oder andere, der auf Twitter unsere Tweets liest, als er das Batch eingeschalten hat, vielleicht zu leicht zögerlich die Hand vor den Infrarotempfänger gehalten hat. Wir haben hier in uns, oops, das war nicht beabsichtigt, wir haben, danke, wir haben hier in unserem Design, weil Jan-Henrik schon erwähnt hat, dass wir zu wenig GPIOs haben, so einen tollen Portexpander. Dieser Portexpander von NXP, dessen Power-On-Reset-Verhalten ist, dass alle Ausgänge heiß sind. Wir teilen Infrarot mit USB-Positive und USB-Negative, also diese Pins hier unten, USB-Negative und Positive, wenn der obere Schalter in der oberen Stellung ist, könnt ihr da auch die Infrarot-Signale abgreifen, wenn es denn eingeschalten ist. Und damit das geht, haben wir hier so ein Tree-State-Buffer. Also diese Chips hier sind quasi Dingsies, die den Eingang auf den Ausgang durchschalten, wenn dann ein High-Signal anlegt. Wenn das nicht der Fall ist, haben die am Ausgang eine hohe Impedanz. Und jetzt sieht der eine oder andere, oh, der Ausgang von diesem Buffer hier geht an USB-Negative. Jetzt habe ich gerade erwähnt, USB-Infrarot-Enable kommt vom GPIO-Portexpander und ist beim Einschalten High. High sagt dem Gattadu, gibt mal den Eingang, strickt auf den Ausgang durch, was effektiv das Signal vom Infrarot-Receiver ist. Und dieser Pin ja muss beim Einschalten High sein, ist der Low-Boot das Batch nicht. Es ist das Problem, dass dieser Infrarot-Receiver zwar interne Filter gegen Sonnelicht hat, die sind aber nicht so geil. Wenn man das direkt in Sonnelicht haltet, gibt der ein Low-Signal statt ein High-Signal aus. Was kombiniert mit diesem Gatter hier dazu führt, dass USB nicht bootet. Jetzt dachten wir uns irgendwann mitten in der Produktion, das muss ich doch irgendwie fixen lassen. Und siehe da, von diesem Chip hier von dem 126er gibt es auch eine andere Version, die 125er, die hat diesen Enable-Eingang invertiert. Das heißt, da wäre im Einschalten Moment das hier auf Low gezogen worden. Haben wir natürlich getestet, ist ja kein Problem, neue Chips zu kaufen und die in die Pick-in-Place zu werfen. So, jetzt wird es lustig. Wir haben hier unten so ein Pull-up mit 1,2K. Der sorgt dafür, dass, wenn das Trees-Date-Buffer im High-Impedency-Mode ist, dieser Pin zuverlässig auf High gezogen wird. Zusätzlich ist dieser Pin ja aber der USB-Pin. Und wie man irgendwo hier auf dem PowerSheet zieht, ist dieser Power-Pin über diese ESD-Protection abgesichert, damit, wenn hier an die Kontakte langt, nicht durch ESD Dinge kaputt gehen. Diese USB-Protection wird eigentlich von einem USB-Pin versorgt, also den 5V, die über den Port reinkommen und an dem hängt auch der Ladi-IC. Jetzt sieht diese Protection, ich habe leider kein Bild da, von innen so aus, dass quasi von jedem diese Eingänge eine Diode gegen Ground und eine Diode gegen VCC laufen. TLDR, was passiert, wenn man das andere Gatter nimmt, es fließt Strom von den 3V durch diesen Widerstand auf USB-Negative, von USB-Negative durch eine Diode von diesem Buffer auf VUSB und lädt durch VUSB quasi euer Batch über den Ladi-IC. Das heißt, aktiv fließt Strom von dem Pull-up in eine Ladi-IC, lädt euer Batch und sorgt dafür, dass dieser Pin auf Low ist. Das ist aber nicht immer so, sondern das ist so ganz cutting edge. Bei manchen Batches tut es, bei manchen tut es nicht. Manchmal tut es, wenn USB eingesteckt ist, manchmal nicht. Jetzt denkt man sich, ja gut, wenn das sowieso so ganz knapp funktioniert, macht man halt irgendwie diesen Einwiderstand hier kleiner, damit da halt stärker auf Heil gezogen wird. Jetzt ist das Problem, dass das hier nicht irgendein Pull-up ist, sondern dummerweise der Pull-up von USB-Negative, der dem Host-Controller, wenn ihr das Batch als USB-Device verwendet, sagt, dass das ein Low-Speed-Device ist und dieser Widerstand hat laut USB-Spec 1,2 Kilo umzuhaben. Ihr seht schon, weshalb wir uns am Ende darauf geeinigt haben, doch den Chip zu nehmen, der dafür sorgt, dass das Batch per Infrarot nicht bootet, ist halt so, aber dafür tut USB. Jetzt kann man sagen, ja, dann nimmt man halt einen anderen GPIO. Manche kennen es von den SCM32, da kann man die Pins irgendwie verwenden, wie man lustig ist. Ja, der ESP ist halt echt, echt billig. Das heißt, er hat keine Muxes am Eingang. Man kann GPIO 2 tatsächlich nur für USB benutzen und kein anderen. Ist halt so. Deshalb ihr seht, es gibt ja irgendwie ganz viele lustige, tolle Sachen. Jetzt der Grund, weshalb das trotz alledem so aussieht, als hätte das jemand zu Hause gelötet, ja, weil die Batches tatsächlich irgendwie nach zu Hause gelötet wurden. Viele dieser Projekte werden üblicherweise die Platine in China gefertigt und danach irgendwie bestückt. PCB-Way oder andere chinesische Anbieter haben einen Service, du schickst uns die Designs, du schickst uns irgendwie die Teile und wir bestücken das für dich. Hätten wir das gemacht, hätten wir jetzt irgendwie 500 kaputte Batches, weil wir irgendwie noch in der Produktion gemerkt haben, weil die Zeit echt knapp war gegen Ende. Oh shit, wir haben da echt noch Fehler, die nicht immer Probleme versuchten, aber manchmal beziehungsweise in bestimmten Konstellationen. Glücklicherweise hat uns ein Mensch aus Münster recht früh angeboten, hey, ihr könnt doch für die Batches meine Pick and Place Maschine benutzen. Das ist der René, der üblicherweise Motor Controller designt und so eine Pick and Place Maschine zu Hause hat, der ist Mitglied in der Warp Zone und ich habe ihn kennengelernt durch Jan Hendrik, der auch Mitglied in der Warp Zone ist und uns da eben recht schnell diese Unterstützung angeboten hat, was eben dazu geführt hat, dass wir diese Batches hauptsächlich auf dieser Pick and Place in Münster bestückt haben. Ich weiß nicht, ob Leute wissen, was eine Pick and Place ist, das ist so eine lustige Maschine, die nimmt ein Bauteil und platziert es dann auf der Platine, die nimmt ein Bauteil, platziert das auf der Platine mit verschiedenen Nozzles und so weiter und so fort. Also im Idealfall platziert sie es auf der Platine, weil effektiv, ich habe da so ein paar Bilder, dumm die dumm die dumm, ich will das glaube ich nicht mit Chrome öffnen. Besser. Ich gehe jetzt einfach mal die Bilder durch, die sind von meinem Handy und passenderweise in der richtigen Reihenfolge. Das hier sind die Platinen, als sie kamen, irgendwie drittere Wischen, war dann soweit okay, dass alles gepasst hat. Das hier ist ein Stencil, das könnt ihr auch bei unserem Stand bewundern, das ist quasi so eine aus Edelsteig edzte Maske, mit der man Lötpaste auf die Platinen aufbringt. Diese Pick and Place sieht so aus, es ist ein uraltes Ding, Baujahr, ich glaube, vor 2000, es läuft auf MS-DOS. Man hat hier die Fieder, wo man die Bauteile einhängt. Tipp fürs nächste Mal, wenn ihr mal vor habt ein Batch zu designen, schreibt im Chinesen, er soll die Bauteile auf Hiel liefern. Ansonsten kriegt ihr die nämlich so einzeln in so einem Zippbeutel und dürft ihr dann von Hand auf die Platine werfen. Glücklicherweise waren die meisten Bauteile in einem Riel, so manche Sachen mussten wir von Hand bestücken. So sehen diese Riels aus mit den Fiedern. Ihr seht, da sind die Bauteile drin, zum Beispiel die LEDs und von oben kommt dann so ein Arm und nimmt die. Hier sieht man auch die Lötpaste, das heißt, man legt da irgendwie so ein Stencil drauf, macht dann die Lötpaste darauf, hat dann Lötpaste, platziert dann die Bauteile und schiebt das in den Ofen und im Idealfall kommen dann funktionierende Batches raus. Das Problem ist, dass man dazu die Bauteile richtig auf die Platine platzieren sollte und wir haben die ganzen Pfeils dazu aus Alchem exportiert, das ist das Layout-Programm, mit dem wir das Batch designt haben und hatten dann irgendwelche komischen Pfeifenskrips, die diese Pick-and-Place-Daten in ein MS-DOS-Format verwandelt haben, was die Pick-and-Place verstanden hat. Wir haben dann irgendwann ganz am Ende so bei dem letzten Panel-Fist gestellt, dass zum Beispiel die Place-Rotation, also wie das Bauteil gedreht wird, nicht nur in die Place-Rotation geschrieben wird, sondern wegen dem fehlenden Tapp, war es glaube ich, auch in die Pick-Rotation geschrieben wird. Das heißt irgendwie am Anfang waren auf allen Platinen die Bauteile doppelt gedreht. Das haben wir dann von Hand korrigiert, weil wir nicht wussten, woran es lag, aber solche Sachen. Oder auch toll, die Pick-and-Place-Maschine hat zwei Kameras, mit denen man quasi die ganzen Bauteile erleint. Wir haben irgendwie danach so, als wir fertig waren und irgendwie die Maschinen nochmal kalibrieren wollten, festgestellt, dass die eine Kamera falsch rumrotiert war um 180 Grad und deshalb alle Bauteile, also etwa die Hälfte, die mit der linken Kamera gepickt wurden, halt um 180 Grad gedreht waren. Das haben wir, das haben wir dann alles von Hand in dieser Datenbank eingetragen, weil wir keine Zeit hatten, da irgendwie groß Fehler zu suchen. Wir wollten einfach nur, dass das möglich schnell funktioniert. Also jetzt wäre der richtige Zeitpunkt, auf dieser Pick-and-Place-Maschine Batches zu bestücken. Man sieht auch irgendwie hier am Anfang die Bauteile waren mehr so kreuz und quer darauf platziert. Wir hatten irgendwie das Problem, dass es zu hoch war, irgendwie Bauteile abgebrochen sind. Ich glaube irgendwie das Beste war, wir haben die Bauteile vor zwei Wochen bestückt und da lief mir doch so ein bisschen Schau über den Rücken. Diese Maschine hat so Nozzles, das sind quasi so Alu-Blöcke mit so kleinen Kanülen drin, die die Bauteile nehmen in verschiedenen Größen und von denen hatten wir sowieso schon wenig. Unter anderem Nozzle 3 ist halt dafür da, diese ganz kleinen Bauteile hier zu bestücken. Die ist irgendwann abgebrochen. Ich habe leider kein Bild davon, wie wir die Platine befestigt haben. Ah doch, man sieht es. Also wir haben das mit Lego auf so einen XY-Tisch geschraubt und hatten dann so eine Schraube raus stehen, die das quasi hingedrückt hat. Diese Schraube stand relativ weit draußen, aber es war ja kein Problem. Es hat ja funktioniert. Bis irgendwann mal die Maschine gepiezt hat, nie nie nie, irgendwas stimmt nicht. Ich gucke es die Nozzle an, Nozzle abgebrochen. Kein Problem. Wir hatten ja nochmal eine Nozzle, neue Nozzle rein, wieder abgebrochen. Die letzte übrigens. Oh shit, mal geschaut, die Maschine fährt gegen diese Schraube, mit der wir die Platine festgeschraubt haben und bricht zuverlässig sämtliche Nozzles ab. Das spannende ist, dass wir mit genau diesem Setup davor 20 dieser Penals hier bestückt haben. Stellt sich raus, irgendwie hat im richtigen Moment ein Fieder geklemmt, wodurch ein Bauteil noch mal geholt werden musste. Die Maschine hat den Parf minimal anders berechnet und dabei irgendwie so die Schraube überfahren. Total super, wir keine Nozzle mehr. Die 1er Nozzle ist zu klein, die 5er Nozzle ist zu groß. Haben wir Herrn Henrik ins Krankenhaus geschickt, irgendwie Kanülen geholt, Kanüle auf die Drehbank, Kanüle abgedreht, Alublock aufgebohrt, neue Kanüle rein, Epoxy, Maschine neu kalibriert, Vakuumwert neu kalibriert, läuft. Läuft immer noch. Also wir hatten dann tatsächlich das Problem, wenn ich so das größte Problem bei der Bestückung in einem Satz zusammenfassen würde, würde ich sagen, das ist das Stenzel, also diese Maske, die ihr gesehen habt. Normalerweise macht man die kleiner als die Pets, damit die Lötpaste wirklich nicht überläuft oder irgendwie Brücken entstehen. Das war bei uns leider nicht so. Wir hatten bei fast allen, also bei den ganzen QFNs, diese vieräckigen vertratischen Dinge, hatten wir irgendwie Brücken, die wir von Hand beseitigen mussten. Zum Glück hatten wir relativ gutes Setup mit diversen JBCs, mit denen wir das rewirken konnten. Wie ich schon mal sagte, wir hatten etwa jedes eurer Batches irgendwie zehn Minuten in der Hand, inklusive Flaschen, Display draufkleben und so weiter. Ihr könnt euch da so grob die Arbeitszeit für fast 450 Batches ausrechnen. Ja, wir haben das Ganze dann hier getestet. Wir hatten eigentlich so das Setup. Wir haben die Batches gerackelt, bestückt, dann im Reflowofen gelötet. Das ist auch noch eine tolle Sache. Ich kaufe da kommen noch Bilder. Das war unser Reflowofen. Wir hatten nämlich das Problem, also wir hatten uns extra auf eBay für diesen Zweck, für 300 Euro so einen richtig schicken Infrared Teter IC Reflowofen gekauft, der irgendwie hier programmierbare Profile hatte und was weiß ich was. Das Ding kommt an, stellt sich raus, unsere Batches passen nicht rein. Oder sie passen rein, aber werden am Rand nicht gelötet. Shit, oh shit, wir haben noch so ein Reflow Controller hier rumfliegen, mit dem wir im Entropia bisher Panels gelötet haben. Hatten auch noch einen passenden Backofen, bei dem war das Problem. Ja, der Backofen war auch zu klein. Wir haben dann einfach ein paar mal mit dem Hammer gegen die Rückseite gehauen. Dann haben da auch die Panels reingepasst, um das Ganze dann wieder so isolieren. Also man glaubt nicht, aber mit diesem Ofen haben wir 50 Panels gelötet, problemlos. Irgendwann war dann das Problem, dass vorne halt die eine Platine, die an der Glasscheibe war, nicht immer zuverlässig gelötet hat, weil zur Fensterscheibe hin die Isolation shit war und die Temperatur runtergefallen ist. Das ließ ich aber fixen. Wir haben ein einzelnes Dänsel, was wir von dem Batch übrig hatten, daran geklebt. Das ist Edelstahl, Edelstahl reflektiert Infrarot und sorgt dafür, dass auch das letzte Batch noch sauber gelötet wird. Wenn man die Klappe zumacht, ist das genau auf der richtigen Höhe, dass die ganze Infrarotwärme von der Decke auf das Batch reflektiert wird. Das hat auch wunderbar funktioniert. Also abgedichtet und isoliert ist das irgendwie mit Pappe und Wolldecken, die sind danach irgendwie zerbröselt, aber es hat nichts Feuer gefangen. Also der Reflow war irgendwie so Panels Rackeln von Hand, Panels in die Picken Plays von Hand, dann die ganzen Bauteile drauf werfen, die die Picken Plays verkackt hat, dann diese Panels in dem Ofen löten und danach halt reworken. Wir hatten eigentlich den Plan, dass wir die dann auch direkt alle mit Testförmwerflaschen, damit man direkt sieht, was ist kaputt, wollten dann so schicke QC-Pastika draufkleben. Die sind leider irgendwann ausgegangen. Also wenn euer Batch funktioniert und dir ein QC-Pastika wollt, könnt ihr bei unserem Stand noch ein QC-Pastika abholen. Aber nur wenn es funktioniert. Ja, also deshalb nicht wundern, wenn auf euren Batch kein QC-Pastika ist. Das liegt nicht daran, dass es nicht funktioniert. Das liegt daran, dass wir keine QC-Pastika mehr hatten. Genau, wir haben dann irgendwie die Displays noch von Hand anlöten müssen. Wir haben uns extra so eine breite Löhlspitze für gekauft. Das hat auch ganz gut funktioniert. Das muss so. Also wenn bei euch irgendwie, also wir hatten irgendwie so tolle Fails ab, also kann ja mal so ein paar Fehler zeigen, die bei der Produktion entstanden sind. Ich glaube, die sind hier drin. Also wenn euer Display so aussieht, dann kommt noch mal zu uns, dann ist nämlich genau in dem Moment, in dem die Rotation initialisiert wurde, ein Kontakt abgegangen. Das fixen wir dann. Ja, keine Ahnung, was gab es noch? Ja, das ist ein Quarz. Dann hatten wir so tolle Platinen, die von Beta-Layout, die von PCB-Ray eigentlich irgendwie so E-Tested sein sollten. Also üblicherweise ist es auf so einem Panel, ein bis zwei Platinen kaputt, damit man halt nicht das ganze Panel neu machen muss, markieren die Chinesen, welche der Platinen denn kaputt ist und dann lässt man die aus. Das hier sind Platinen, die nicht als defekt markiert wurden und nicht funktioniert haben. Wir haben dann mal so ein bisschen debagt. Diese Verbindung hier sollte eigentlich nicht sein. Genauso wenig wie diese durchgebrannte Leiterbahn. Nein, die Leiterbahn haben nicht wir durchgebrannt, die haben die Chinesen beim E-Test durchgebrannt. Hier ist irgendwie ein Quarz schloss. Also traut ihr nicht, hier hat irgendwie ein Pad gefehlt. Ja, genau, das passiert, wenn es irgendwie nicht sauber gelötet ist. Ist ganz lustig. Wir haben auch umgeküppte ESPs und so. Also wir haben tatsächlich bei uns am Stand auch noch irgendwie so eine ganze Kiste mit etwa 20 Badges, die entweder völlig misst sind, weil irgendwie Bauteile ausgegangen sind oder keine Ahnung, wir versehentlich doch mal eins bestückt haben, das eigentlich kaputt war, weil wir einfach die Datei nochmal kopiert haben. Aber wir haben auch Badges, die bei der Produktion irgendwie gefällt haben, weil displan nicht tut, weil BNU nicht tut, aber die grundsätzlich Flaschen und Buten. Wer von euch keinen Badge hat, aber irgendwie Ahnung von E-Technik hat, die würden wir irgendwie für ein Fünfer oder so hergeben. Also wenn ihr noch unbedingt ein Badge wollt, wir haben da noch eine Kiste. Wahrscheinlich ist es nur irgendwo eine Lötbrücke, aber wir hatten einfach nicht die Zeit, das zu debaggen. Also das noch als Angebot an euch, wenn ihr noch ein Badge wollt. Ja. Und fürs nächste Mal plant mehr Zeit an, wenn ihr sowas vor habt und berechnet euer Stenzel richtig, dann habt ihr deutlich deutlich weniger Hass. Ich weiß nicht, gibt es sonst noch irgendwas zu sagen? Ich glaube nicht. Also das ist jetzt irgendwie so die dritte Hardware-Vision. Manche von euch werden sicher auch schon das Liko getestet haben, das ist so ein bisschen crap. Bei manchen hält es richtig gut, bei manchen geht es nicht rein und bei manchen fällt es raus. Das liegt an den Fertigungstoleranzen und einem Prinzip, wie Lego funktioniert. Lego basiert nämlich nicht, wie viele denken auf Presse, also basiert auf Pressepassung, aber nicht auf Grund des Durchmessers dieser Nupsees. Verzeihung, Knoppenbausteine basieren nicht auf dem Durchmesser der Nupsees, sondern auf dem Abstand dieser Nupsees. Und den kann man halt in Platinen recht schlecht rekonstruieren, weil Platinen relativ star sind, während Lego sich eben dehnt. Und deshalb haben wir auch den, das Offset bei diesen Löchern so gering gehalten, dass wir auf jeden Fall sicher gehen können, dass alles Lego reingeht, weil wir dachten uns, lieber macht man Tropfen Sekundenkleber an die Platine, als dass das Lego nicht in die Platine geht. Also wenn euer Lego ein bisschen lose ist, klebt es einfach oder ja, das ist so eine Sache, die man vermutlich gar nicht hätte besser machen können. Eine andere Sache, die ich euch zeigen kann, so als Tipp für eure Batches. Wenn ihr euch die mal anguckt, ich glaube, ich muss meine Kamera hier wieder einschalten. Der Vibrationsmotor, vielleicht hatten einige das Bett schon an und waren etwas enttäuscht, weil der Vibrationsmotor nicht vibriert. Wir haben beim QC Person auf jeden Fall sichergestellt, dass jeder der Vibrationsmotoren grundsätzlich elektrisch funktioniert und sich grundsätzlich elektrisch dreht. Jetzt seht ihr nur, diese Vibrationsmotoren, man denkt, die könnte man flach auflöten. In der ersten Prototyp-Revision haben wir die auch flach aufgelötet und uns gewundert, weshalb die Vibrationsmotoren nicht drehen. Wenn man sich die aber ganz genau anguckt, sieht man, dass diese Unwucht ganz, ganz leicht in die Platine reingeht, weshalb auf der Rückseite so Ausfräsungen sind. Wenn sich euer Vibrationsmotor nur sehr unmotiviert oder gar nicht dreht, schaut doch mal, ob diese Unwucht einfach irgendwo an der Platine kratzt oder anschlägt und kratzt das mit einem Taschenmesser oder irgendwie einer Pinzette ab, dann funktioniert das deutlich besser. Leider sind die halt beim Reflown bei ein paar Batches verrutscht, aber im Großen und Ganzen funktioniert es und auch sonst, wenn irgendwie eine LED kaputt ist, da sind halt einfach so Sachen, die bei der Produktion entstanden sind und es ist halt Ausschuss. Wenn ihr damit unglücklich seid, könnt ihr zu uns an den Stand kommen und dann fixen wir das für euch. Wir haben das die letzten zwei Monate gemacht, dann können wir das jetzt auch noch vier Tage länger machen. Ja, das war es so von Hardware-Seite. Wenn ihr jetzt noch spezifische Fragen zu dem Design oder so habt, könnt ihr das nachher noch stellen. Aber dann würde ich jetzt erstmal an Anton und Janis, ich glaube Janis als erstes. Janis übergeben, der erzählt euch dann noch so ein bisschen was zu dem Netzwerk. Oder wollen wir erst das mit dem Bootloader erzählen? Das ist vielleicht ein bisschen low-level. Okay, dann sage ich noch kurz was zum Bootloader, den habt nämlich auch hauptsächlich Sebastian und ich gebastelt und zwar der ESP, da habe ich leider keine Folien zu, aber ich kann euch vielleicht diese Memory-Map von dem Flyer zeigen, die ist noch so halbwegs informativ, muss ich das hier wieder umschalten. Das Problem an dem ESP ist, wie ich schon erwähnt habe, ist er enorm billig und eigentlich ziemlich scheiße für das, was wir vorhatten. Wir hatten nämlich von Anfang an den Ansatz, dass man auf sein Batch mehrere Roms buten kann. Jetzt ist es so, dass der ESP von sich aus zwar bis zu 16 Megabyte extern Flash unterstützt. Das Problem ist, dass die CPU aber nur das erste Megabyte vom Flash in den Cache-Map kann und ausführen kann. Das heißt, man kann zwar irgendwie beliebig viele Daten auf seinem Batch haben, aber ausführen oder auf seinem ESP ausführbare Dateien allerdings nur bis zum ersten Megabyte. Jetzt ist es so, dass die ganze Entwicklungsumgebung von Espressive Close-Sources, es gibt so eine Open SDK, das sind pre-compiled C-Funktionen mit SDK drum herum und unter anderem gibt es in dieser SDK auch eine Cache-Read-Funktion, die eben vom SPI-Flash Memory oder Instructions in den Cache liest und glücklicherweise hat sich ein sehr schlauer Mensch, der schon vor ein, zwei Jahren zu Gedanken gemacht und Airboot geschrieben. Eure Batches basieren alle auf Airboot, das ist ein Bootloader, der genau diese ein Megabyte-Hürde umgeht, indem man mit Object Copy in der Lip Main diese Cache-Read-Funktion auf Weeksets und seine eigene implementiert, die auch hinter einem Megabyte noch Flash wesen kann. Das klingt total hacky, aber es wird noch schlimmer, keine Sorge, und das Faszinierende ist, dass das funktioniert. Also damit, damit, damit kann man tatsächlich auch von Flash-Booten, der hinter einem Megabyte liegt. Das ist so die eine Sache, die man beachten muss, das ist auch der Grund, weshalb wenn ihr irgendwie Software dafür schreibt, immer dieses Airboot-Punktaar inkluden müsst, was das effektiv macht, ist eben diese Cache-Read- Funktion re-implementieren. Das war echt ein Hass, das zum Laufen zu kriegen. Das ist mehr oder weniger plain Assembler-Code und irgendwo hat das ständig gecrasht. Ich weiß nicht, ob Sebastian dazu noch was sagen will. Andere Sache, wenn man sich jetzt mal die Memory-Map anguckt, okay, das sind insgesamt irgendwie acht Megabyte, aber irgendwie ist das inkonsistent. Zuerst hat man irgendwie sechs einzelne Slots mit 512 Kilobytes, dann ein Megabyte Fallsystem und dann irgendwie vier einzelne Slots mit ein Megabyte. Wieso macht man das nicht einheitlich und macht irgendwie hier 14 Slots mit 512 Kilobytes und das Fallsystem ans Ende? Ja, das liegt daran, dass der ESP hier noch eine weitere Hürde hat, und zwar kann der Bootloader nur, also der ESP hat einen ins Rom eingebrannten Bootloader, mit der er sich über Serial-Flaschen lässt. Das funktioniert auch, wenn ihr euer Batch noch so sehr brickt. Das ist nämlich wirklich im ASIC eingebrannt. Und dieser Bootloader kann über Serial-Nur-Speicher-Bereiche bis vier Megabyte im Flash anschreiben. Das heißt, wir kommen über USB nur bis hierhin. Deshalb dachten wir uns, ja, okay, dann füllen wir halt hier das alles mit Rom-Slots und machen dann am Ende irgendwie so ein Fallsystem. Die anderen Slots, also die auf eurem Display seht, von irgendwie, ich kann es mal zeigen, man hat ja hier irgendwie auch noch... Hoch. Man hat ja hier auch irgendwie noch weitere Slots. Man hat ja hier auch irgendwie noch Slot 6789. Die können nicht über USB geflasht werden. Die können über den Rom-Storeover, die er geflasht werden, weil mit etwas Tricks kann man in diesen Bereichen zumindest mit dem ESP schreiben. Noch so eine tolle Sache an dieser SDK, die ist zwar irgendwie designed für bis zu 16 Megabyte Flash. Die ganze SDK kann aber bis zur Version 2.1.0 nur mit 4 Megabyte Flash klarkommen, weil die Funktion, die die Flashgröße ermittelt, irgendwie nur bis 4 Megabyte implementiert wurde. Also im Header von dem Flash steht irgendwie so eine magische Zahl, die einem sagt, wie groß ist der Flash? Das funktioniert für 500 Kilobyte, für 1 Megabyte, für 2, für 4, für 8 und 16 wurde es einfach nicht implementiert. Weiß ich, Espresse vielleicht nie gedacht hat, dass jemals irgendjemand so einen großen Flash an ein ESP hängt, keine Ahnung. Wir haben das dadurch gefixt, dass wir auch die SPI Read und Write Funktionen gewiegt haben und durch unsere eigene Funktion ersetzt haben. Außerdem ziehen wir beim Booten in Airboot einen Pointer auf diese SDK Funktionen, die diese Flashgröße angibt und overritten, die einfach hart mit unserer Flashgröße, das funktioniert meistens. Für manche Funktionen wie zum Beispiel Wi-Fi muss man es zurücksetzen, sonst crashed es. Glücklicherweise wurde all diese in SDK Version 2.1.0 gefixt. Dies großartig diese SDK Version Wi-Fi ist deutlich schneller. Der ESP unterstützt nativ von sich aus bis zu 16 Megabyte Flash. Alles ist viel besser. Der Bootloader ist schneller und so weiter und so fort. Diese SDK Version kam vor vier Tagen raus. Und noch besser. Noch besser. Wir benutzen ja nicht die plain SDK, sondern benutzen dieses Voodoo Arduino Framework drumrum, was da irgendwie nochmal Funktionen selber implementiert und anders abruft. Ich glaube, der erste Komet dazu war vorgestern. Jetzt ratet mal, welche SDK Version euer Batch benutzt, 2.1.0. Ich glaube, alle anderen Komets danach waren irgendwie von mir, Jan-Henrik und sonst wem. Wir haben es tatsächlich geschafft, bis heute Morgen diese SDK zu porten, damit das Batch irgendwie besser funktioniert, schneller funktioniert. Wir hatten insbesondere, was war so der Hauptgrund? Ah, der Hauptgrund, weshalb wir das machen mussten und nicht einfach gesagt haben, fuck it, wir benutzen diese zwei Jahre alte SDK war. Der ESP denkt, er hätte 4 Megabyte Flash, schreibt aber jedes Mal, wenn er sich mit dem Wi-Fi connectet, eine Datei ans Ende des Flashes, in der die SSID und das Passwort vom Wi-Fi steht, damit er sich beim nächsten Mal schneller connecten kann. Das Problem ist, unser ESP denkt, wir hätten nur 4 Megabyte Flash und er schreibt das irgendwie ins Ende des Flashes, minus irgendwie 0x4000, also irgendwie so 8 Kilobyte. Das Problem ist, wenn man sich jetzt noch mal diese Memory-Map anguckt, dumm die, dumm die, dumm. Hier ist das Ende vom Flash, hier denkt der ESP, es wäre das Ende vom Flash und hier, minus ein bisschen, schreibt er die Wi-Fi-Konfig rein. Wir haben uns gewundert, wieso immer mal wieder, wenn man sich mit dem WLAN verbindet, irgendwelche Bitmaps kaputt gehen und anders drum, wenn man Bitmaps irgendwie in das Filesystem ablegt, WLAN nicht mehr tut, bis wir irgendwie auf die Idee kamen. Also, da kann auch was nicht stimmen. Naja, irgendwie mal Entwickler von Espressiv angeschrieben, ja, das wird da reingeschrieben. Da kann man das deaktivieren, ne, geht nicht. So, gut. Das war der Grund, weshalb wir dann tatsächlich noch Last-Minute auf die 2.1.0 geupdatet haben, weil jetzt wird diese Konfig tatsächlich hier irgendwie ans Ende geschrieben und da wird realistischerweise von uns nie irgendwas hingekotzt, von dem ja, sollte euer Budget stabiler laufen. Aber ihr seht, das ist irgendwie alles unglaublich hacky und ich finde es nach wie vor ein Wunder, dass der ESP überhaupt funktioniert. Also, das Problem ist ja auch, man kann dieses Ding in keinster Weise debarken. Das hat kein J-Tag, das hat nur so ein UART-Bootloader, der irgendwie, wenn er crashed in Stack ausgibt, der mal mehr, mal weniger informativ ist, meistens weniger, weil man halt nicht die Source-Code zu der SDK hat. Da steht dann, ja, es hat gecrashed in SPI-Read, aber danke. Also, ja, alles ganz furchtbar. Deshalb seid froh, dass euer Badge funktioniert. Er würdig das. Wenn es euch interessiert, guckt euch mal das Repo an, wenn ihr selber schon mal was mit dem ESP gemacht hat und das jetzt total geil findet, bitte nutzt es. Es war echt viel Arbeit, dass das so tut. Und ich finde das auch ein echt coole Setup, auch für zukünftige Badges oder für zukünftige Projekte. Ja, das ist so effektiv die Memory-Map. Deshalb ist die so zerbröselt, weil wir halt die Badges zuverlässig über UART-Fleschen wollten. Deshalb sind jetzt auch die Beispiel-Anwendungen nur bis Slot 6 drin. Ihr könnt natürlich in Slot über 6 selber Roms reinladen, aber das geht halt nur over die R und das wollten wir nicht vorher machen. Das ist euch überlassen. Aber es funktioniert immerhin und das ist so die Hauptsache. Und jetzt komme ich zu einem etwas höheren Level, nämlich wie das überhaupt mit dem Wi-Fi funktioniert. Weshalb die Badges eigentlich Gulasch-Pull-Notifier genannt werden müssten und wieso Krypto-Total-Scheiße ist? Janis. Ja, ich habe so ein bisschen die versucht, das Default-Rom zusammen mit dem Anton zu schreiben und haben dabei natürlich versucht, es irgendwie halbwegs sicher zu machen. Internet of Shit lässt grüßen. Haben also überlegt, ja, wenn man das schon macht, muss man ja irgendwie versuchen, dass man signieren kann oder erkennen kann, dass oder verletzieren kann, dass Notifications, die wir bekommen haben, korrekt sind. Der ESP bietet dazu, auch diese Auto-Inno-Librerie bietet dazu eine halbwegs brauchbare Krypto-Implimentation, wo man tatsächlich auch HTP-S mitsprechen kann. Dazu vielleicht gleich noch mal was. Wir haben uns aber davor dann entschieden, dass wir anstatt Push-Notifications lieber Pull-Notifications nehmen, weil wir etwas Sorge haben, dass das weder in die Knie geht, wenn wir an 400 noch was Spatches gleichzeitig eine Nachricht schicken. Daher ist aktuell stand so, dass das Dispatch alle fünf Minuten derzeit ein Pull-Server anfragt nach 900 Vacations und diese Notifications haben einen Zeitstempel drin, ab wann sie ausgelöst werden. Das heißt, wenn irgendwie eine Notification geplant wird, dann holt sich das Spatch ab und zeigt zu euch dann an, wenn der Timestempel stimmt. Das hat so einen leichten Jitter von ein bis zwei Sekunden. Manchmal noch mehr, manchmal weniger, je nachdem, wie man gerade Glück hatte über einen Pullen. Aber das tut so weit. Wir haben dazu auch schon einen Beispiel Server geschrieben, dem wir auch benutzen werden hier auf der Gpn für die ganzen Notifications. Ansonsten ist es auch so, ihr könnt auch selber Notification-Server hinzufügen und URLs. Hast du ihn da? Du bist im Edorom, ne? Nee, kann ich nicht zeigen. Edorom ist das Einzelne, in dem es nicht tut. Das hat KIT Routing Gründe. Auf jeden Fall kann man diesen Web-Interface bereiten, an dem man Channels anlegen kann. Wir haben beschlossen, pro Server gibt es mehrere Channels für verschiedene Notification-Arten. Das heißt, wenn man zum Beispiel Goulash wissen will oder über Talks informiert werden will, gibt es dafür eigene Channels. Diese kann man über das Configurations-Web-Interface, was man aufrufen kann, wenn man im Configuration-Menü auf Wi-Fi-Config geht. Dort öffnet der ISP ein Wi-Fi-Access-Point und man kann sich zu dem verbinden. Da wird erst die SSID angezeigt und wenn man noch mal eine Tasse drückt, dann das Passwort. Und danach die IP, wo man sich verbinden kann. Wird sie das? Das ist interessant. Eigentlich wird im Access-Point die IP gesetzt, sollte auch entsprechend IPs verteilen. Ich glaube, ich muss ein bisschen geschwindigkeitsmäßig auf die Tube drücken. Wenn wir noch wollen, dass Anton noch ein bisschen live demus Zeit, wie man das patch programmiert. Auf jeden Fall, wenn wir haben diesen 12-Woch auf GitHub gestellt, das heißt, wenn ihr selber ein Notification-Channels anbieten wollt, könnt ihr das damit machen. Das braucht ein Postgres, könnt ihr das Schema importieren in die Postgres-Datenbank und könnt dann mit diesem Pfeifen in Fluss geschrieben, das Web-Interface, selbst Notifications erzeugen. Bei der Krypto muss ihr aufpassen, wir können nur TLS, also wir haben uns grundsätzlich entschieden, keine unsicheren Anfragen zu machen an die Pool-Server. Hat sich herausgestellt, dass der ESP exakt zwei Cipher kann. Und zwar TLS-RSA-IS128-CBCSHA und TLS-RSA-IS256-CBCSHA. Ihr müsst in den Server gucken, wenn ihr den einrichtet, dass ihr exakt alle dieser beiden Cipher drin habt, sonst tut's nicht. Wir haben dann auch für ... zur Verifikation ... Leider keine Launch-Musik hier, find ich schade. Haben wir entsprechend eine eigene CA-Infrastruktur aufgesetzt, die ... wir machen das nicht so, dass auf dem Batch-CA interlegt sind, sondern dass pro Channel der Fingerprint der Certificats gepinnt wird. Das heißt, ihr müsst dann einmal bestätigen und verifizieren, dass der richtig ist, wenn ihr das Batch-Notification-Server redet. Und wir haben jetzt für die GPN, für unseren Notification-Server, eine CA angelegt, die zehn Jahre hält. Und auch Zertifikate dafür, die zehn Jahre halten. Nicht wundern, das sieht ein bisschen komisch aus, wenn man das anguckt. Das muss so, das haben wir einfach gemacht, damit's möglichst lang funktioniert, genauso für den Store. Wie ist es mit der Zeit? Soll ich jetzt vielleicht mal ein bisschen abkürzen, damit noch Anton ein bisschen zeigen kann, wie man's entwickelt? Ja, dann machen wir. Dann übergehe ich mal kurz an Anton. Jo, hoffe ich mal, dass... Wo ist der Adapter? Wo wurde ein Adapter versprochen? Wo ist denn der Displayport-Adapter? Ah, dahinten. Bist was inklusive Q&A? Doof! Gut, also, willst du noch Q&A machen? Wir haben noch zehn Minuten. Das große Displayport, das ist mir das Displayport. Kann das auch VGA hier? Was ist dazwischen drin? Wir brauchen normales Displayport. Oder VGA? Stefan hat was. Gut, ich kann doch noch ein bisschen weitererzählen. Jetzt habe ich ja wieder Zeit. Genau, wo waren wir? Richtig, wir haben dann letzte Nacht, haben wir noch festgestellt, dass das Batch nicht mit dem Notifications-Aber und auch nicht mit dem Rom-Store reden konnte. Wo wir dann festgestellt haben, dass dort diese Kryptolibrerie offensichtlich noch nicht vollständig auf die neue SDK portiert ist. Mir ist das erwähnt, hat die halt eben schon frisch gekommen ist. Da muss man schauen, dass man die Zertifikate, also das Rout-Zertifikat, mit dem man diese anderen Zertifikate signiert, dass das nicht mit einer größeren Check-Summe als Schaar 256 in Krypto ist. Sonst stürzt das Batch zufällig ab. Ab und zu. Manchmal, meistens. Genau. Dann kann ich vielleicht noch kurz was sagen zu dem Web-Sover, der draufläuft. Das ist auch so ein minimaler Web-Sover, den wir selber geschrieben haben. Es kommt ein Web-Sover mit, der auch in dieser ESP Arduino-Librerie funktioniert. Dieser ist aber relativ ineffizient und braucht relativ viel Speicher. Deswegen haben wir da einen eigenen kleinen Web-Sover geschrieben. Das heißt, wenn euch mal ... Das heißt, falls ihr euch den Code anschaut, das ist einfach ein minimaler eigene Web-Sover, der nichts großartig kann, nur relativ effizient arbeitet. Haben wir es jetzt? Ich hoffe. Ach, ich möchte das vielleicht gleichzeitig sehen. Das weiß ich jetzt nicht genau, wie das. Ja, toll. Ja, dann machen wir das irgendwie vielleicht ... So, nee. So, ja, das könnte ungefähr passen. Ja. Ja, genau. Also, das läuft ja alles über die Arduino-IDI, die irgendwie jetzt komisch aussieht. Das tut die Arduino-IDI übrigens häufig. Genau. Ich sollte schauen, dass ihr die halbwegs aktuelle Version habt, die Paketquellen, zumindest bei Debian, ist das aus den Paketquellen oft nicht aktuell genug. Genau. Niklas hat da was eingerichtet, dass man sich hier direkt ... steht, auch in der Readme, in unserem Repository. Man kann hier diese JSON-URL einfügen in den Preferences. Dann kriegt man so einen Board, was man hier über den Boardmanager installieren kann. Also, wenn man hier nach GPN-Batch sucht, ja, dann findet man das hier und dann kann man hier auf Install drücken und dann hat man dieses Board. Genau, und dann kann man hier unten GPN-Batch 2017 Multirom auswählen und dann hat man hier die ... ja, die Konfigurationen, die man braucht. Man kann den Slot auswählen, für den man das kompilieren und hochladen möchte. Genau, ich habe jetzt ... mal schauen, wenn man nicht so viel Zeit haben, dann code ich jetzt nicht direkt noch live was runter, sondern zeig einfach, wie das so grob funktioniert. Also ... wir haben hier diese ... diese GPN-Batch-Librerie, die man inkluden kann. Da sind so die Hardwarefunktionen des Batches drin. Also, es gibt hier, was man anfangs immer machen sollte, und dann Batch Backlight True, dass das Display angeht. Und dann hat man hier halt Funktionen für GPIO, Analog, Input, Werte lesen oder hier die ... die LEDs setzen. Ja, genau, man muss immer noch hier, dass das Airboot inkluden, wie Niklas gesagt hat. Und man kann auch den Namen seines ROMs setzen. Also, wenn das Rom das erste Mal gestartet wird, das ist dann ein Pfeil einer bestimmten Stelle ablegt, wo sein Name drin steht, und dann kann der Bootmanager das auch anzeigen, welches Rom da drin ist. Ja, es gibt noch so ein kleines UI-System. Da kann man ... ja, hier so Fenster anlegen, mit die dann ein Bitmap anzeigen und so Sachen. Ja, schaut euch das im Repo an, wie das genau funktioniert. Aber das hier hatte jedenfalls nicht funktioniert vorhin, deshalb lösche ich das gerade mal. Und dann kann ich das vielleicht noch mal ausprobieren, wie das mit dem Hochladen funktioniert. Genau, muss man schauen, dass ... ne, nicht das hier, dass der obere Schalter unten ist, der Welt aus, ob man das Bitbanging-USB des ESPs verwendet oder unten ist halt das normale USB zum Flaschen. Und dann sollte man das ... flaschen können. Ja, wie das so bei Arduino funktioniert hier. Ne, ah. Ja, okay, das ... Naja, das ist noch recht normal. Genau, das ... genau, und dann hat man das jetzt da drauf. Und es leuchtet. Und man sieht jetzt noch den ROM-Manager da, weil ich das Display nicht überschrieben habe. Aber ja, genau. Ja, machen wir ... irgendwie Fragen, oder? Nämlich an. Ja, sonst ist das so knapp, ne? Ja, fangen wir ... genau, fangen wir hier gleich an, oder? Ah, ja, das ... Hast du Internet? Probier's gerade mal. Nicht darum. Nein, nicht darum, fast nicht darum. Wie da geht, auch das nicht. Ja, ihr habt immer von diesem Store-System geredet. Wollt ihr das nochmal demo'n oder ein bisschen erklären? Ja, das wäre eigentlich ganz cool. Vielleicht komme ich ja auch in das WLAN, wenn ihr das hier abonniert. Das ist, glaube ich ... eigentlich ... Ja, der WLAN auf meinem Laptop ist fürchterlich. Ich meine, ich kann das ja in der Zeit mal hier an den Batch vorführen. Vielleicht tut ja da das WLAN besser. Also, was ihr machen müsst, ist, es gibt so eine Webseite, auf der es dieser Store unter batch.entropia.de, da könnt ihr euch die ROMs anschauen und ich würde euch eine ID angezeigt. Wenn ihr diese ID dann runterladen wollt, drückt ihr beim Einschalten den Knopf gedrückt, dann butet das hier in diesem Manager, dann kann man hier unten in den Store gehen, dann connectet sich das Batch mit dem WLAN, was jetzt hoffentlich funktioniert. Mal schauen. Ich mach mal hier das Licht aus und blende das nicht so. Und ... Ja, echt, okay. Ja, so prinzipiell kommt dann so ein Menü, wo ihr die ID eingebt, dann drückt ihr Enter, dann fragt euch das Batch, an welchen Slot ihr dieses ROM spielen wollt, dann wählt ihr den Slot aus, dann drückt ihr noch mal Enter, dann lädt das das ROM an den entsprechenden Slot runter, dann rebutet das Batch, dann wählt ihr das aus und dann seid ihr in dem Rom drin. Total easy. Also ihr könnt vollkommen ohne Laptop euch neue ROMs aus dem Store installieren. Ah, es hat getimoutet. Und ja, genau, so funktioniert das effektiv. Die ganze Konfig kann ich vielleicht auch noch zeigen. Es gibt hier unter Utilities so ein SPI-Filesystem Uploader. Dann macht das Batch auch ein Access Point auf und ihr könnt euch da einloggen. Ihr habt dann im Browser ein JavaScript-Editor, mit dem ihr alle Dateien im Filesystem bearbeiten und hochladen könnt. Das heißt, ihr könnt ja irgendwie die Konfig für zukünfte Events anpassen. Oder falls ihr das Batch zu Hause in eurem WLAN bearbeiten wollt, könnt ihr da die WLAN-Config entsprechend ändern. Also wenn ihr auf die Seite geht, gibt es eine Anleitung zu dem Editor, wie man den benutzt. Man kann das Batch eigentlich sehr, sehr gut komplett werden. Aber wenn man diese Toolchain nur mit einem Handy oder einem Laptop benutzen, das war uns irgendwie auch wichtig. Also wenn man es nicht will, keine Toolchain für braucht. Ja, weitere Fragen? Ich hätte die Frage, was dieser Mandelbrot senden soll. Ist das einfach nur ein Witz oder bakt hier jemanden Mandelbrot? Nee, ich weiß nicht. Mandelbrot ist ein bekanntes Faktal. Wenn man das öffnet, kann man das irgendwie reinzoomen. Jan-Henrik hat das geschrieben. Eierzoomt. Das ist einfach nur eine Demo. Ach, keine Ahnung. Spielt damit rum. Ja. Wie sieht das aus? Macht die Firmware, die draufläuft, das ganze Wifi-Handling? Oder ist das ein separater Core, der erst mal das Wifi unabhängig von der Firmware macht, die ihr draufladet? Dass das ESP-Zeug funktioniert so, dass da unten Ertos läuft. Dieses Ertos hat zwei Threads, einmal den Usercode und einmal den Wifi-Stack. Dieser Wifi-Stack läuft quasi im Hintergrund und macht immer wieder Callbacks auf den Usercode. Das ist quasi das, was diese SDK und das Arduino-Zeug nutzt. Das ist total erstaunlich, dass das funktioniert, wie ich schon erwähnt hab. Man erkennt das unter anderem daran, dass wenn ihr euch zum Wifi connectet, die LEDs ja so verhehten und manchmal bleiben die hängen. In dem Moment passiert irgendwie Krypto oder so und der Usercode wird nicht weiter ausgeführt. So funktioniert das. Beim ESP32, also im Nachfolger von dem, gibt es dafür extra zwei Cores. Dann gibt es einen für IP, anderen für Usercode. Beim ESP ist das halt gemultifredded. Habt ihr denn eine Empfehlung, was eine bessere Entwicklungsumhebung als die Arduino-IDI wäre? Habt ihr Unterstützung für Plattform-IO oder sowas? Nee, der ist nicht direkt, aber es gibt in der Arduino-Idee eine ganze Tat Einstellung. Man kann in einer Präferenz sagen, external Editor, dann aktiviert sich wenigstens der Internet-Editor mit Wim irgendwie das Editieren und nur noch mit Arduino-IDI uploaden. Das ist dann ganz angenehm zu benutzen. Aber ansonsten aber da kein exquisiten Unterstützung für andere Sachen. Aber falls jemand was basteln will, gerne. Also ich würde mich auch sehr drüber freuen. Ja. Also würde schon deutlich mehr Spaß machen ohne Arduino-IDI. Aber man kriegt es wenigstens halbwegs so runter reduziert, dass man das wenigstens mit Wim eine Tat benutzen kann. Gut. Wir haben noch Zeit für eine letzte Frage. Ihr hattet erwähnt, dass das Ding kein J-Tag hat. Ist es, weil es nicht rausgeführt ist oder weil der Chip tatsächlich keines hat? Das ist eine gute Frage. Es ist auf jeden Fall kein J-Tag rausgeführt. Die Architektur ist ja extenser. Das ist halt auch einfach nur zugekauft von Expressive. Das heißt, der Core, der da drin ist, hat sicher prinzipiell J-Tag. Aber wahrscheinlich ist es halt nicht rausgeführt oder es hat kein J-Tag. Wir sagen, du kannst da irgendwie Decapping machen und ein Bondwire setzen. Also das ist schon ziemlich scheiße. Na ja, aber vielen Dank. Ich glaube, die Zeit ist da noch rum. Habt viel Spaß mit dem Badge. Wenn irgendwas nicht ist, bitte keine negative Bewertung hinterlassen, sondern erst mal uns anschreiben. Kein Dispute aufmachen, sondern erst mal uns kontaktieren. Good prizes. You get coupon for your next buy. Ansonsten nimm bitte an unserem Wettbewerbteil. Wir haben da jetzt zwei Monate Arbeit reingesteckt und es wäre wirklich, wirklich schade, wenn die jetzt so vorbei wäre. Wir würden uns unglaublich freuen, euren Code zu debacken und euch bei euren Problemen zu helfen. Die entstehen, während ihr am Wettbewerbteil nehmt. Es gibt echt coole Preise. Wir haben irgendwie von Trends im dreistelligen Bereich. Es lohnt sich, also wirklich. Ich sag nochmal, die drei Kategorien waren irgendwie kreativstes, lustigstes Projekt, technisch anspruchsvollstes Projekt und das nützlichste Projekt. Ihr könnt die einreichen und, oops, hat das Internet? So grundsätzlich? Nee, anscheinend, grade. Das Edorom ist jedenfalls da. Ja, mal schauen. Es gibt da entropia.de und da gibt es einen Hecte-Batch. Ich glaube, es tut nicht, aber ihr könnt es euch vorstellen. Da ist ein Wikia-Artikel, da sind die Teilnahmebedingungen. Ah ja, hier. Wenn ihr da draufklickt, sind die Teilnahmebedingungen, was ihr machen könnt, was ihr machen müsst und dann könnt ihr da am Ende von dem Wikia-Artikel einfach euer eigenes Projekt hinzufügen. Ich weiß gar nicht, was es bisher gibt, aber bisher gibt es diverse Einreichungen. Ich glaube, jemand wollte Lasertag implementieren mit dem Infrarot-Sender, dass man quasi Lasertag spielen kann. Die Dinge haben ja Infrarot-Senden und Empfang, womit ihr auch irgendwie eure Notifikation scheren könnt. Ich weiß gar nicht, was gibt es noch? Wie sucht man da? Ah, genau, es gibt das Lasertag. Jemand hat einen Hi-Fi-Bodge gemacht. Ich glaube, das ist irgendwie ein Versuch, da i²S einen Dack anzuschließen, bei dem ihr in eurem Badge MP3 streamen könnt. Wenn ihr irgendwie eine Idee in die Richtung habt, bitte, ihr habt jetzt vier Tage Zeit, da cooles Zeug fürzuschreiben und es lohnt sich. Ja, eine letzte Frage. Ja, genau. Ihr habt gesehen, in eurem Tütchen waren 3 Sensoren, die drauflötbar sind. Das ist der Infrarot-Sender, der Pinheader für den Alkohol-Sensor und den LDR. Dann könnt ihr bei uns ein Assembly das war uns zu blöd, die für euch drauf zu löten. Ansonsten bei weiteren Fragen sind wir auch am Bedsch stand. Und ihr erreicht uns unterdekt, unter Bedsch. Bedsch, noch nicht, aber dennächst. Oder Twitter, oder was auch immer. Ja, dankeschön. Danke euch. Vielen Dank.