Liebe Community, ich bin Physiklehrer und möchte ein unkompliziertes System zur Verwendung von Arduinos für Schülerexperimente einrichten, das für alle KollegInnen unkompliziert umzusetzen ist. Hierbei wäre es sehr hilfreich, wenn von einem PC auf mehrere Arduinos gleichzeitig der gleiche Sketch geladen werden könnte. Im Idealfall wäre das ganze auch noch kabellos (Bluetooth/Wlan etc.) möglich. Falls jemand hierzu gute Tipps hat bzw. weiß, ob dies grundsätzlich möglich ist, würde es mich sehr freuen. Beste Grüße Moritz
Schau mal in die Application Note AN2468 http://ww1.microchip.com/downloads/en/AppNotes/Production-Programming-of-Microchip-AVR-SAM-MCU-00002468D.pdf Oder auch dort mit billiger Consumer Hardware: https://www.sparkfun.com/tutorials/233
Moritz F. schrieb: > Hierbei wäre es sehr hilfreich, wenn von einem PC auf mehrere Arduinos > gleichzeitig der gleiche Sketch geladen werden könnte. Im Idealfall wäre > das ganze auch noch kabellos (Bluetooth/Wlan etc.) möglich. Grundsätzlich ist fast alles möglich, meist hängt es nur vom Aufwand und damit vom Geld ab. Aber um hier Tipps zu bekommen solltest du noch ein paar Worte zu Aufbau bzw. Umgebung verlieren. - Um welchen Arduino geht es? Arduino umfasst ja verschiedene Familienmitglieder, die sich alle etwas unterscheiden. - Wo befinden sich die Arduinos bei den Experimenten? Auf den Schülertischen? - An welche weitere Hardware sind sie angeschlossen? PCs? Es braucht ja wenigstens ein Display zur Visualisierung von Ergebnissen. - Wer schreibt den Sketch? Nur der Lehrer und/oder auch die Schüler? - Ist es bei euch in der Schule möglich, neue WLAN Geräte einfach aufzusetzen? Sind die Lehrer dann für deren Sicherheit verantwortlich?
Wenn da ein bootloader drauf ist, kannst Du davon einige Dutzend an einen USB hub anschließen und per Batch / Script programmieren.
Ich habe etwas in diese Richtung gebaut: Ein ATmega 328p sitzt auf einer Platine Huckepack auf einem Raspberry Zero W. Darüber wird er mit Strom versorgt (Powerbank) und auch programmiert: Das Compilat von der Arduino IDE wird per SSH über WLAN an den Raspberry geschickt. Dort wird der ATmega über SPI mit avrdude programmiert. Auf der Platine sind Motortreiber und diverse IO Ports, realisiert habe ich damit einen kleinen (leider noch recht dummmen) Robot. Aber das Setup ist so flexibel, dass man ihn sogar während der Fahrt umprogrammieren könnte. Die Visualisierung von Daten übernimmt der Raspberry per Webserver, aufzurufen per Handy-Browser. Funktioniert recht gut, wäre aber sehr aufwändig herzustellen für einen Klassensatz und ist für böswillige oder ungeschickte Schülerhände vielleicht zu anfällig. Andererseits gilt das für fast jede Schaltung, die ich mir so vorstellen kann. Sag Bescheid, wenn diese Richtung für Dich interessant ist.
@Stefan: Danke für die Links. Ich bin auf den ersten Blick noch nicht schlau daraus geworden, aber werde es mir in ner ruhigen Minute nochmals genauer ansehen.
HTML Fragender schrieb: > Wenn da ein bootloader drauf ist, kannst Du davon einige Dutzend an > einen USB hub anschließen und per Batch / Script programmieren. Beachte die Zielgruppe: Moritz F. schrieb: > Verwendung von Arduinos für Schülerexperimente einrichten, > das für alle KollegInnen unkompliziert umzusetzen ist. Ich gehe also davon aus, dass er die Arduino-IDE benutzen will. Wenn man jetzt mehrere Arduinos downloaden will, wird jeder eine eigene COM-Port-Nummer erzeugen, die vor jedem Upload neu auszuwählen, ist höchst lästig. Abhängig davon, was sonst noch am PC war, können die Portnummern auch noch variieren. Wie willst Du das Laiensicher (Lehrerkollegen) umsetzen? Schreibe bitte mal etwas konkreter, wie Du Dir das als Batch oder Script vorstellst. Etwas besser dran ist man, wenn man Clone mit dem CH340 einsetzt, die haben keine USB-Seriennummer und belegen immer die gleiche Portnummer, wenn man sie nacheinander am selben Port anklemmt.
@Hanno: Also prinzipiell geht es um einen Arduino Mega 2560 mit optional Grove Shield. In diesem Fall geht es tatsächlich einfach darum, dass wir (LehrerInnen) zu bestimmten Experimenten/Sensoren die Sketches schon vorbereiten und auch KollegInnen, die gar nichts mit Arduino am Hut haben, diese idiotensicher verwenden können, indem sie zuvor die abgespeicherten Sketches zu dem Versuch auf die Arduinos laden und die Sensoren/Displays (mit Anschlussgrafiken) dann an die SchülerInnen ausgegeben werden. Die Ergebnisse/Messwerte werden dann zum Beispiel über ein Display oder anderes Ausgabemedium angezeigt. Die Arduinos sind während dem Experimentieren auf den Schülertischen oder bei Messungen in der Umwelt eben draußen und werden mit einer Powerbank über den USB-C-Ausgang betrieben (siehe https://macandegg.de/2020/09/powerbank-ohne-automatisches-abschalten/). Meiner Erfahrung nach schreckt viele KollegInnen es schon ab, dass die Anfangshürden manchmal etwas schwierig sind und die Situation, dass man soviele PCs/Laptops braucht ist auch nicht an jeder Schule umsetzbar. Ich finde es schade, dass gerade in Physik mit den ganzen Sensoren hier das Potenzial verschenkt wird und deshalb würde ich gerne diese Variante ohne Schülerpcs und Programmieren ausprobieren. Wobei ich selbst es schon auch gut finde, wenn die Kreativität der SchülerInnen durch das Programmieren gefördert wird. Bezüglich der Aufsetzung neuer WLAN-Geräte habe ich mich jetzt noch nicht schlau gemacht, aber da findet man denke ich eine Lösung gerade auch wenn das WLAN nur für die kurze Zeit des Uploads in der Physiksammlung gebraucht wird.
Moritz F. schrieb: > Meiner Erfahrung nach schreckt viele KollegInnen es schon ab, diese beschissene Schreibweise KollegInnen ertragen zu müssen.
Manfred schrieb: > Ich gehe also davon aus, dass er die Arduino-IDE benutzen will. Nein er möchte einfach mehrere Arduinos flashen > > Wenn man jetzt mehrere Arduinos downloaden will, wird jeder eine eigene > COM-Port-Nummer erzeugen, die vor jedem Upload neu auszuwählen, ist > höchst lästig. Abhängig davon, was sonst noch am PC war, können die > Portnummern auch noch variieren. > Na und? Das lässt sich leicht abfangen. > Wie willst Du das Laiensicher (Lehrerkollegen) umsetzen? > > Schreibe bitte mal etwas konkreter, wie Du Dir das als Batch oder Script > vorstellst. Sicher nicht, ein Physiklehrer wird das hinbekommen!
@Felix: Hi Felix, das hört sich auf jeden Fall spannend an. Auch die Daten über den Handy-Browser aufzurufen hat natürlich Charme. Kannst du beim Hochladen theoretisch einen komplett neuen Sketch (mit Packages) übertragen oder nur teilweise abändern? Die ursprüngliche Kommunikation (Möglichkeit zum Umprogrammieren) will man ja natürlich dauerhaft beibehalten. Ich habe zwar noch nie mit Rasperry/avrdude gearbeitet, aber wenn das alles funktioniert wärs eventuell nen Versuch wert. Wahrscheinlich müsste ich mal einen Prototypen bauen, um es abzuschätzen wie viel Aufwand es dann tatsächlich für einen Klassensatz ist :). Die Anfälligkeit kann man bei fast keinem Schülerversuch verhindern. VG
Moritz F. schrieb: > Kannst du beim Hochladen theoretisch einen komplett neuen Sketch (mit > Packages) übertragen oder nur teilweise abändern? Die ursprüngliche > Kommunikation (Möglichkeit zum Umprogrammieren) will man ja natürlich > dauerhaft beibehalten. Habe ich nicht ganz verstanden. Meinst Du mit Packages Libraries und Includes? Wie auch immer, die komplette Compilation findet auf dem PC statt, am Ende purzelt ein Binary im AVR-Format mit dem gesamten Code heraus und nur dieses wird per SCP/SSH übertragen. Bei mir momentan nur an einen Raspberry Pi, aber es sind natürlich beliebig viele möglich. Das Binary wird dann per Skript über avrdude auf den ATmega geladen. Das geht jederzeit, beliebig oft und braucht noch nicht mal einen Bootloader. Die Leitungen zum Programmieren des Chips sind bei mir dauerhaft verbunden. Das heißt natürlich auch, dass für jeden ATmega ein eigener Raspberry notwendig ist.
Ich denke Du suchst "arduino-cli": https://arduino.github.io/arduino-cli/latest/getting-started/ Damit kannst quasi alle Schritte über die Befehlszeile ausführen. Mit ein bisl Skript bekommt man dann den Download komplett automatisiert. Dann reicht es einfach die Arduinos nacheinander oder auch gleichzeitig mehrere an einen PC anzustecken und das Skript laufen zu lassen. Man könnte sicher auch ein Raspi so vorbereiten, das der das per Knopfdruck macht. Den in eine Schachtel gepackt mit einem kleinen Display und ein paar Knöpfen... Damit kommen aber nur LehrerAußen, Kollegaußen und SchülerAußen zurecht die nicht nur Klickibunti kennen. Offtopic: Der Geschlechterquatsch geht mir echt auf den Sack. (Ja es heißt auf deutsch Geschlecht und nicht "Gender") Als ob es Frauen, Schwulen, Lesben und den Übrigen irgendwas bringen würde wenn man sie jetzt mit einem '*' bedenkt. Es wäre sinnvoller endlich mal mit der Unterschwelligen Abwertung aufzuhören und vor allem die Bezahlung der typischen Berufe mal anständig nach oben zu korrigieren. (Und zwar unabhängig vom Geschlecht) Der * ist genauso sinnfrei wie das dämliche Geklatsche vor gut einem Jahr. Davon kann die Pflegekraft auch nicht ihre Familie ernähren. Die ganzen Sozialberufe sind vollkommen unterbewertet, keine Wunder das man dafür kaum noch Personal findet. Bei uns ist gerade Kommunalwahl, normalerweise bin ich ja eher so Grün/Links. Aber das Wahlprogramm der Linken war wegen der vielen '*' nicht mal lesbar, die haben das 'Innen' ganz weggelassen, sah so aus als gäbs überall Fußnoten. Haben se halt Pech, meine Stimme hat jedenfalls wer anders bekommen...
Hallo, Beitrag "Re: Kann ich einen Arduino Sketch gleichzeitig auf mehrere Arduinos laden?" Genau das war auch mein Gedanke. Alle angesteckten Boards bekommen eine COM Port Nummer. Die musst du entweder in der IDE ablesen oder im Gerätemanager anzeigen lassen. In der IDE alle Ausgaben einschalten. Datei > Voreinstellungen > - Ausführliche Ausgabe während > beide Haken rein - Compilerwarnungen > "ALLE" Zeilennummern und Codefaltung sind auch hilfreich. Ebenso 'use accessibility features' nach dem flashen guckste dir die letzte weiße Zeile an mit avrdude und den Optionen. Damit bauste dir eine Batch die alle COM Ports durchackert. Dann beschriftest du alle Boards und alle USB Port damit immer das gleiche Board am gleichen USB hängt, ansonsten ändern sich womöglich die Com Port Nummern. Meine persönliche Meinung ist, lass den Mist sein wenn das nur ca. 10 Boards sind, zeige allen Kollegen wo man in der IDE den Com Port ändert und gut ist. Wenn man jedes Board einzeln ansteckt kann da auch gar nichts schief gehen. Zeit sparst du sicherlich auch nicht. Anstecken und abstecken musste eh alle Boards. Und falls sich die Com Ports ändern, dann ist eh der Ofen aus.
Man könnte für jeden Arduino einen Raspberry Pi einsetzen, auf dem ein kleiner Webserver (php) läuft, der Datei-Uploads annimmt und mit avrdude auf den Mikrocontroller überträgt. Bildschirm und Tastatur werden nicht gebraucht, nur die kleine Blackbox und ein Netzteil (oder Powerbank). Im Gegensatz zu den wechselnden COM Ports wäre es leicht, jedem Raspberry Pi eine eigene feste IP Adresse zuzuweisen. Neben der zentralen Ansteuerung durch den Lehrer bestände so auch für die Schüler die Möglichkeit, Dateien selbst mittels Web-Browser auf ihrem Smartphone/Tablet hochzuladen. Dann brauchst du nur noch an zentraler Stelle (Lehrer-Laptop) einen Massen-Upload auf alle Raspberry Pi zu machen. Das lässt sich mit einem Shell/Bash Script und curl leicht automatisieren. curl -F data=@upload.hex 192.168.2.101 curl -F data=@upload.hex 192.168.2.102 curl -F data=@upload.hex 192.168.2.103 curl -F data=@upload.hex 192.168.2.104 curl -F data=@upload.hex 192.168.2.105 ... Das ist sicher nicht die billigste Lösung, aber einfach zu realisieren, flexibel an sich ändernde Bedürfnisse anpassbar und außerdem kann man die Raspis noch für andere Zwecke verwenden.
Man kann auch beispielweise viele USB Seriell Wandler für “einen Euro” fest an den PC USB ( Hub) anschließen. Dann ändert sich kein Comport mehr. Dann die Arduinos direkt dahinterhängen, fertig. Wechselnde Com Ports sehe ich auch nicht als Problem. Das bekommt man mit Bordmitteln von Linux/Windows in den Griff, aber es ist auch völlig egal ob nun ein Arduino an com5 oder com99 hängt. Mit Bootloader nahezu trivial. Das ginge auch über Bluetooth, oder via TCPIP mit terminalprogramm oder commandline ( Windows oder Linux) über Ser2net ! Ja, das habe ich vor ein paar Jahren auch genau so einmal gelöst, bei einer Arduino Basisschulung.
Veit D. schrieb: > Alle angesteckten Boards bekommen eine COM Port Nummer. > Die musst du entweder in der IDE ablesen oder im Gerätemanager anzeigen > lassen. Ein vernünftiges Übertragungsprogramm würde selbst die COM Port Nummern der Arduinos über das Windows-Interface abfragen, so dass der Anwender nicht mehr selber gucken muss. Nur falls ein Arduino dran steckt, der nicht mit dem Code gefüttert werden soll, muss man sich darum speziell kümmern.
Stefan ⛄ F. schrieb: > Man könnte für jeden Arduino einen Raspberry Pi einsetzen, auf dem ein > kleiner Webserver (php) läuft, der Datei-Uploads annimmt und mit avrdude > auf den Mikrocontroller überträgt. Bildschirm und Tastatur werden nicht > gebraucht, nur die kleine Blackbox und ein Netzteil (oder Powerbank). Das ist der Ansatz, den ich weiter oben beschrieben habe. Funktioniert, bringt mich aber im Nachhinein auf 2 Sinnfragen: A) Warum nicht gleich den Raspberry nutzen für die Sensoren? Bei meinem Roboter geht es nicht, da der ATmega Echtzeitaufgaben übernimmt (Hallsensor auswerten). Bei einfachen Temperatur- oder Lichtsensoren wäre das aber kein Problem. B) Was ist der didaktische Nutzen? Der Lehrer beamt ein vorbereitetes Programm an die Wand. Per Knopfdruck kriegt es jeder Schüler auf sein Gerät. Die Schüler müssen dann nur doch die Sensoren richtig anschließen und das Ergebnis notieren. Etwas mager... Die Schüler haben seit Corona doch Laptops, die Arduino IDE ist kostenlos. Bei Ebay gibt es billigste Arduino-Clones. Warum nicht einen Klassensatz bestellen und die Schüler einfach machen lassen? Den Code könnte man über Git teilen.
Wenn's auch der gute alte Turnschuh-Adiministrator tut: https://www.fischl.de/ispnub/#gallery Der ISPnub ist von Thomas Fischl, vielleicht besser bekannt, durch seinen USBasp Programmer. Der ISPnub enthält einen ATMEGA1284. Dieser wird mit einem Image für einen beliebig anderen ATMEGA oder Tiny gefüttert, sofern dessen Flash ausreicht. Den ISPnub steckt man nur auf den ISP Header auf (hat der Arduino auch) drückt zum Programmieren eine Taste und fertig. Man kann sogar die Anzahl der möglichen Kopiervorgänge begrenzen.
Felix schrieb: > Warum nicht gleich den Raspberry nutzen für die Sensoren? Weil es wohl letztendlich darum geht, den Umgang mit Arduino Modulen kennen zu lernen. Er will nur die Einstiegshürden durch ein fertiges Beispielprogramm minimieren. > Was ist der didaktische Nutzen? Etwas mager... Vielleicht möchte er herausfinden, welche der Schüler von sich aus darum bitten, selbst programmieren zu dürfen. Die anderen wollen vielleicht eher den Umgang mit der Hardware vertiefen. Das ist ideal, um Teamarbeit zu erleben.
@Felix, Stefan: Die Frage, warum man dann nicht gleich einen Rasperry verwendet ist natürlich berechtigt, wenn man die Lösung mit dem Rasperry wählt (hier spielen wahrscheinlich mehrere Faktoren eine Rolle)... Didaktisch macht es insofern Sinn, da es bei vielen Versuchen ausreichen könnte den Arduino zur Messwerterfassung zu verwenden und den Fokus auf physikalische Zusammenhänge/Messungen zu konzentrieren. Im Vergleich zu herkömmlichen Lehrmittelherstellern wären die "Messgeräte" wahrscheinlich besser und wesentlich preisgünstiger. Zudem kann man die Arduinos (flexibel) auch noch so einsetzen wie Felix es beschreibt, wobei das mit dem Laptopproblem auch durch Corona nicht vollständig gelöst ist, da viele Geräte von den Eltern verwenden und selbst wenn es ihres ist, das Gerät wahrscheinlich auch nicht immer zur Schule schleppen wollen nur weil sie es in Physik brauchen. @Andreas, Veit, Fragender Die Lösung über Usb-Hub muss ich mir mal anschauen. Ich sehe mich zwar nicht als "Klickibunti" :), aber dafür braucht man offensichtlich schon ein bisschen mehr Ahnung als ich aktuell habe. Habe gehofft es würde auch eine etwas trivialere Lösung geben. @Gerald Was genau macht man mit dem ISBnub?
Ich würde einfach einen Raspberry Pi nehmen, an diesen eine handvoll USB-Hubs anschließen (möglichst mit eigener Stromversorgung) und an die Hubs wiederum sämtliche Arduinos. Dann flasht man mittels einem Shell- oder Python-Script per avrdude die .hex auf einen Arduino nach dem anderen, d.h. zuerst ttyACM0 (bzw. ttyUSB0), dann ttyACM1, etc. bis alle Arduinos durch sind. Um das ganze so einfach wie möglich zu machen, kannst du auch für jedes Experiment die .hex auf einen einzelnen USB-Stick packen. Per Cron-Job wird dann alle paar Sekunden das Skript gestartet, was nach einem vorhandenen USB-Stick und einer dortigen .hex-Datei schaut. Ist der Stick nicht vorhanden, passiert nichts, ist er vorhanden werden alle zu diesem Zeitpunkt angeschlossenen Arduinos geflasht. Für deine Kollegen sieht dann die Anweisung zum flashen so aus: 1. Alle Arduinos anstecken 2. USB-Stick für das jeweilige Experiment anstecken 3. Kaffee trinken gehen 4. Arduinos abstecken, fertig Ich denke da sollte kein Physiklehrer mit überfordert sein.
Moritz F. schrieb: > @Gerald > Was genau macht man mit dem ISBnub? Du brauchst keinen Rechner, um einen ATMEGA oder Tiny zu flashen. Das hat schon seinen Vorteil, wenn man irgendwo in der Pampa z.B. ne Wetterstation o.ä. flashen will. Der ISPnub ist wie ein USB-Stick für den ISP Anschluss zu verwenden. Anstecken und Knopf drücken, langt. Außerdem, wenn du die HEX-Datei nicht aus den Händen geben willst, aber z.B. im Service einem Kunden eine neue Softwareversion zukommen lassen willst, schickst du ihm den Nub und begrenzt die Anzahl der Kopien auf Eine. Das ist nur eins, von etlichen denkbaren Szenarien.
Gerald B. schrieb: > ISP Anschluss Da musst du bei Arduinos ein bisschen aufpassen um den Bootloader nicht zu zerschießen. Wahrscheinlich müsste man die Toolchain anpassen, damit immer eine .hex gebaut wird die neben dem Programm am Ende den Bootloader enthält. Beim ISP Chip Erase ist nämlich immer alles weg.
Andre schrieb: > Wahrscheinlich müsste man die Toolchain anpassen, damit immer eine .hex > gebaut wird die neben dem Programm am Ende den Bootloader enthält. Für AVRs erzeugt der Arduino Builder automatisch eine Hex ohne und eine mit Bootloader. Das Thema ist also schon halb erledigt! Man muss nur die richtige Hex auswählen und übertragen.
Beitrag #6613670 wurde von einem Moderator gelöscht.
Beitrag #6613674 wurde von einem Moderator gelöscht.
Beitrag #6613678 wurde von einem Moderator gelöscht.
Mit: Magie! Dich interessiert die Antwort doch gar nicht! Oder? 1: Irgendein original AVR Board in der IDE einstellen 2: Irgendein funktionsfähiges Programm laden 3: Hauptmenü->Sketch->"Sketch-Ordner anzeigen" Ein Dateimanager hat sich geöffnet? Ja! Du siehst eine *.ino Datei? Ja! Du siehst eine *.hex Datei? Nein! 3: Hauptmenü->Sketch->"Kompilierte Binärdatei exportieren" Das Programm wird übersetzt? Ja! Du siehst 2 neue *.hex Dateien im Dateimanager? Ja! Fertig! So geht Magie.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.