Hi Von ein paar Freunden & Bekannten bin ich angesprochen worden, ob ich nicht Lust hätte, eine kleine µC-Einführung zu geben. Ich bin zwar kein Profi, aber habe doch schon ein paar Schaltungen mit AVRs realisiert, die deutlich über blinkende LEDs hinausgehen und hervorragend Steuerungsaufgaben übernehmen. Da ich auch Lust dazu habe, habe ich angeboten, so einen kleinen "Kurs" bzw. eine kleine Einführung in die Welt der µCs zu geben, speziell die AVRs, denn nur mit denen kenne ich mich vernünftig aus. Nein, ich mache keinen VHS-Kurs oder stelle sonstige hohe fachliche Qualifikationen an das ganze, ich will einfach nur ein paar Freunden die Welt der µCs bei einem Bierchen an ein paar Abenden näher bringen. Als ich in die Welt der AVRs eingestiegen bin, gab es noch keine Arduinos und ich habe bisher auch nie einen Arduino genutzt. Aktuell stellt sich mir aber die Frage: Welchen Vorteil hat es, wenn ich Einsteigern wirklich Dinge an nativen AVRs erkläre? Oder sollte man Einsteigern heute lieber erst einmal fertige Arduino-Platinen vorsetzen? Die Jungs können alle sehr gut Programmieren, im Bereich Elektrotechnik gibt es aber nur Grundkenntnisse und eben im Bereich der µCs ist Feierabend. Ich brauche und will also keinen Programmierkurs geben und auf dem Level der ersten C-Experimente bewegen wir uns definitiv nicht. Das soll ja auch kein großer Kurs werden, sondern nur ein paar Basics, damit die Jungs danach eventuell mal selbst basteln können. Lange Rede, kurzer Sinn: Setzt man solchen Einsteigern lieber Arduinos oder AVRs vor? Was sind die Vor- und Nachteile?
Also ich hab ja selber nicht viel erfahrung, aber ich würd den Arduino dafür verwenden. Anhand der Elektronik die auf den Arduinos ist kannst du ihnen diese ein bischen näher bringen und ihr könnt trotzdem gleich los legen mit Experimentieren weil ja schon alles vertig ist. Ich meine du kannst ihnen ja z.B. die stromversorgung die sich auf dem Arduino befindet näher erklären usw...
Hallo ich bin zwar selbst immer noch Einsteiger, aber mit den umgekehrten Voraussetzungen wie deine Freunde: Relativ viel Ahnung über die Elektrotechnik und schon sehr viel Praxiserfahrung in vielen Bereichen der Elektronik, dafür aber nur gewisse Grundkenntnisse in der Programmierung. Während Grundfunktionen der Programmierung ganz allgemein bei "jeder" Programmiersprache nicht schwer zu verstehen sind so ist doch die Anwendung und das Gefühl für ein Programm zu erstellen eine ganz andere Nummer wo man wohl nur mit guten Beispielen und viel Übung so langsam ein Gefühl und können entwickeln kann. Da das Programmieren können bei deinen Freunden wohl schon vorhanden ist, würde ich auf jeden Fall mit den "nackten" AVRs und avr-gcc oder sogar Assembler(?) einsteigen. Arduino als Gesamtsystem macht es den Einsteiger zwar einfach und Projekte sind schnell verwirklicht - aber leider wird dabei, schon fast zwangsweise, viel ausgeblendet da für "alles" schöne fertige Bibliotheken und Funktionen vorhanden sind und auch der wichtige Timerbereich stark in eine "Black Box" verschoben ist. Um einen µC richtig zu verstehen und alle Möglichkeiten herauszuholen sollte meiner Meinung stark mit den Datenblatt und Hardwarenah programmiert werden - nur so versteht man was wirklich passiert und kann auch nicht direkt Unterstützte Hardware nutzen (irgendwann nach vielen Monaten...). Es spricht aber wenig dagegen die Arduino Hardware (einen Clone) zu nutzen -nur mit den externen Quarzen ist man dann eingeschränkt. Soweit meine Meinung - die nicht die absolute Wahrheit für jeden sein muss. Bdruini
Also ich würde eher vom Arduino abraten. Die Grundschaltung wie man son kleinen Chip letztendlich zum laufen bringt, finde ich als Softwareentwickler viel interessanter. Ist die Frage wieviel Hardware soll es sein? Arduino ist fast eher verwirrend, weil der Begriff für sovieles verwendet wird (Das Board, den Uno, die Programmiersprache, Das Ökosystem drum, usw.) und gerade für Anfänger sind klare Begrifflichkeiten wichtig meine ich. Bei der Grundschaltung ist es klar was jedes Teil tut. Das ist der uC namens AtmegaXYZ, das sind Stützkondensatoren, das ist ein ISP und so wird er angeschlossen.
Ist es nicht auch möglich am Arduino zu Programieren, ohne die vertigen Biblioteken zu benutzen? So so könnte man zuerst direkt an der Hardware Programieren und später, wenn die grundlagen sitzen, die biblioteken verwenden. Ist nur so ein Gedanke.
Mit dem namen hatt Robin R wohl recht. Das ist verwirrend. Du must hald entscheiden ob du mit deinen kumpels zuerst mal löten willst und ihnen dabei die schaltung erklährst, oder ob du das löten (oder stecken im falle eines steckbrettes) weck lassen willst und ihnen die Elektronik anhand des vertigen Arduino näher bringen willst. Auch am Arduino sind Stüzkondensatoren usw.
Tobias schrieb: > Lange Rede, kurzer Sinn: Setzt man solchen Einsteigern lieber Arduinos > oder AVRs vor? Was sind die Vor- und Nachteile? Kommt darauf an welche Grund(aus-) bildung die Leute haben und wohin sie sich entwickeln wollen. Elektronikferne mit Grundintention "Spielerische Technik" zum Zeitvertreib -> Arduino. Elektronikbastler, bastler generall, techniche/Handwerks - ausbildung -> AVR. Zwischen den beiden Gruppen stehen Programmierer und Skriptkiddies, steht der Wunsch als Einzelkrieger Technik zu beherrschen im Vordergrund -> AVR;dominiert eher der Wunsch sich einer Gruppe anzuschliessen -> Arduino ;-) MfG
Robin R. schrieb: > Arduino ist fast eher verwirrend, weil der Begriff für sovieles > verwendet wird (Das Board, den Uno, die Programmiersprache, Das > Ökosystem drum, usw.) und gerade für Anfänger sind klare > Begrifflichkeiten wichtig meine ich. Ich wollte noch anmerken: Es gibt natürlich für all diese Dinge auch in der Arduino-Welt getrennte Begriffe. Aber gerade Anfänger, die das ganze Gebiet noch nicht so übersehen, bringen die Begriffe durcheinander. Und gerade so tolle Namen wie "Arduino Duemilanove", die man (im deutschsprachigen oder englischsprachigen Raum) kaum ausgesprochen bekommt, machen es nicht einfacher. Um eine relativ einfache Materie so eine neue Begriffswelt aufzubauen, das erinnert mich stark an BWL. Zudem: Wenn du mit einem Arduino Uno-Board anfängst, musst du auch erklären, wie das Programm auf den Chip kommt. Also über einen extra-Chip, der eine USB-UART-Schnittstelle für den PC ist, über welche dann an den Bootloader, welcher Werksseitig auf den Chip gespielt wurde, der üblicherweise nicht mit einem Bootloader ausgestattet ist, das Programm übertragen wird. Und dass der Bootloader dann das Programm in den Flash schreibt. Und dann geht die Reset-Leitung auf High, und der Chip fängt das Programm im Flash an abzuarbeiten. Das finde ich im Vergleich von einer übersichtlichen AVR-Minimal-Schaltung mit ISP relativ kompliziert für einen Anfänger der was verstehen will. Da ist alles ganz klar: Das ist der AVR-Chip, das ist der ISP, der hat 3 Leitungen für Daten, 1 Reset um den Chip in den Programmiermodus zu bringen, und dazu GND und VCC. Fertig ist die Laube.
Hi - finde ich sehr cool, dass ihr so was macht. Was hält's du davon das Ganze auf zwei Abende aufzuteilen? Am ersten Abend könntest du die beiden Plattformen grundsätzlich vorstellen und vergleichen und am Ende fragen, was deine Jungs am liebsten machen würden. Am zweiten Abend dann entweder AVR oder Arduino erläutern... Gruß, Bronko
Hi Danke schon mal für eure Überlegungen! Die helfen mir schon mal viel weiter! (Danke auch an den/die Mod(s) fürs Durchwischen bei den sinnfreien Antworten). Zur Zeitplanung: Das ganze ist nicht auf "ich mache einen Abend eine Einführung und dann war es das" beschränkt. Ich dachte auch eher so an 1-2 Abende, bei denen man mit mehr oder weniger "Frontalunterricht" beginnt und ein paar absolute Basics am µC erklärt, Beispiele zeigt und vielleicht nochmal Bitoperatoren in C wiederholt, und danach basteln lässt und auf konkrete Probleme eingeht, die sich dann ergeben. Da wir uns sowieso regelmäßig treffen (Freifunk), kann ich dann auch relativ spontan immer mal wieder bei kleineren Problemen helfen, die sich dann ergeben und die anderen können basteln, wenn sie Lust und Zeit haben. Ich würde Zeit also wirklich eher untergeordnet ansehen. Es geht hier schließlich um Hobby und Neugierde, nicht um Ausbildung oder Kursus. Ansonsten sehe ich schon, beide Arten haben ihre großen Vor- und Nachteile und die Frage ist in diesem Fall eher: Wollen die Jungs so schnell es geht kleine Bastelprojekte starten und sich wenig damit auseinandersetzen, was WIRKLICH passiert? Oder wollen sie etwas mehr darüber lernen und dann noch "hardwarenäher" arbeiten? Das werde ich, wenn wir uns das nächste Mal wiedersehen, mal ansprechen und schauen, was deren Meinung dazu ist. :) Viele Grüße
Tobias schrieb: > Setzt man solchen Einsteigern lieber Arduinos oder AVRs vor? Arduinos basieren auf AVRs (bis auf den Arduino Due). Insofern stellt sich nur die Frage, auf welcher Ebene man mit der Programmierung ansetzt. Vom µC-Verständnis wäre man beim Einstieg mit Assembler. Wenn es darum geht, oberflächlich schnell was zum Laufen zu kriegen, ohne tiefer einsteigen zu müssen und ohne in irgendeine Programmierhardware investieren zu müssen, ist man mit Arduino gut bedient. Die Hardware wird man sowieso kaum günstiger kriegen.
Man kann sogar mit dem Arduino Nano anfangen und diesen dann später als ISP für einen ATMEGAxx nutzen.
Ein Sonderfall, wenn sich die Hörer schon in C oder dgl.auskennen. Für sie wäre es wichtig, die Eigenheiten eines Kontrollers kennen zu lernen, die von C garnicht erfasst werden. Wer z.B. C bisher auf einem PC benutzt hat, hat keine Ahnung wie katastrophal delay(1ms) auf einem Kontroller abläuft. Oder z.B. Belastbarkeit der Signalausgänge, Aufgabe von Registern wie DDR, PORT, PIN (schlimmste Falle: Unterschied zwischen in portb,... und in pinb,...) den verschiedensten Registern und flags, Aufgabe von timern, und den dazugehörigen Registern, Abläufe von ints... Ein Arduino,etwa ein Nano für 3€...5€, erspart das Erstellen einer Hardware, ist also eine fertige Plattform und deshalb empfehlenswert. Für mich ist zum Beispiel ein Arduino Nano kein Arduino sondern eine Platine mit einem Atmega328, den ich per Assembler programmiere.( C, mit der idiotischen Syntax vieler Befehle hasse ich einfach) Das Ziel in diesem Falle wäre aber: klären, dass es die Arbeit mit C auf dem Arduino wesentlich erleichtert, wenn man die Hardware einigermaßen kennt, und wie man für zeitkritische Vorgänge Programmteile in Assembler einfügt.
:
Bearbeitet durch User
Ich hätte noch den Vorschlag: -einen esp8266 Breakoutboard wie z.B. NodeMCU*(incl. augedruckten Schaltplan) -ein GLCD oder TFT zur Anzeige -einen Temperatur/Feuchtigkeitssensor -und statt Steckbrett ein mit 3D-Drucker erstelltes Gehäuse mit "fliegender Verdrahtung" Dann kann jeder nach zwei Tagen eine selbstgebaute Wetterstation mit WLAN mitnehmen die eine prima Bastelplattform ist. Da Programmierer wohl eher abgeschreckt sein werden von -Elektronische Schaltungen entwickeln, -Platinen herstellen -und SMD Bauteile löten können sie dank der Arduino "Shields" auch alles mögliche an Sensoren und Aktoren durch anlöten von 4-6 Drähten benutzen. Wenn die Zielpersonen programmieren schon können werden sie schon selbst entscheiden ob und welche Library sie verwenden, ist schliesslich auf dem PC nichts anderes. Durch den esp muss man auch nicht so knausrig mit Speicher sein und warum sollte man jetzt noch anfangen mit einem AVR wo es doch Chips gibt die in allen Belangen besser sind(ausser der Einfachheit die das Einlernen erleichtert) EDIT:*die NodeMCU natürlich nicht mit der Lua FW sondern mit dem SDK oder dem Arduino Port programmiert.
:
Bearbeitet durch User
Wenn Deine Jungs nicht unbedingt scharf auf's Hardware-Basteln sind dann würde ich auf jeden Fall auf die Arduino-Plattform gehen. Wie weiter oben schon gesagt wurde: So'n Nano ist nicht viel mehr als ein fertig aufgelöteter ATMega. Man kann ihn mit nem stinknormalen ISP-Programmer beschreiben und glücklich damit werden. Womit sie dann die Programme schreiben ist die interessantere Frage, aber da wurden schon alle Seiten beleuchtet imo. Ich hab' früher immer die µC direkt in C programmiert. Irgendwann fiel mir ein Arduino in die Hände und seitdem bin ich faul geworden und schreibe Sketches. Für die allermeisten Dinge sind die mehr als ausreichend, also warum sich nicht das Leben leicht machen? :D
Hallo, wenn Du einen Kompromiß zwischen Harwarekentnissen, Lötfähigkeiten und Schaltungskram machen willst und dabei Zeit sparen: Arduino ProMini vom netten Chinesen - die mitgelieferten Stiftleisten lassen sich recht schlecht löten, besser gute dazu kaufen. USB-seriell-Adpter mit CP2102 oder auch CH340 oder FTDI232. Darauf achten, daß DTR auf der Stiftleiste ist, macht das Programmieren aus der ArduinoIED einfacher. "Dupont"-Kabel vom Chinesen Stecker/Stecker, Stecker7Buchse, Buchse/Buchse, dann kann man das auch einfach so zusammenstecken. Steckbrett, LEDs, Taster, Sensoren nach Bedarf dazu beschaffen. Die ArduinoIDE nehmen und direkt in C programmieren, dann kann man I/O, Bits Timer usw. nach Datenblatt des Meag328 durchgehen. Die ist schnell installiert und läuft dann eben. Wenn man will, noch ESP8266-01 besorgen und den direkt unter der ArduinoIDE programmieren. Da auf die 3,3V achten! Der CP2102 schafft es den ESP zu versorgen und hat passende 3,3V-Pegel. Mach Dir ein einfaches Konzept, fange klein an und wenn die Leute Lust haben, müssen Sie eben die nächsten Zutaten für sich beschaffen. So würde ich es zumindest anfangen. Wenig Installationskram, kaum Lötarbeiten nötig und alle Wege bleiben offen. Kosten sind auch bescheiden, ich habe mit den Chinasachen bisher keine wirklichn Probleme gehabt. Da der Tip hier aus dem Forum kam: schau Dich mal bei http://www.banggood.com/ um, etwas chaotisch dort, EU-Warehouse auswählen und die Sachen hast Du innerhalb einer Woche für weniger als 1 Euro Versand. Bisher nur gute Erfahrungen dort gemacht, da gibt es auch einige Kits, die könnten nützlich sein. Gruß aus Berlin Michael
Michael U. schrieb: > Wenn man will, noch ESP8266-01 besorgen Warum ausgerechnet den -01er? Das ist die Version mit den wenigsten Möglichkeiten. Ich würde mindestens den empfehlen: http://www.dx.com/de/p/esp-12-esp8266-serial-wifi-wireless-module-w-pcb-antenna-adapter-board-for-arduino-raspberry-pi-379296 oder eben NodeMCU, da ist USB, nötige Widerstände und Reset/Flash-Taster schon drauf.(incl. benutzbarem Rastermaß)
Hallo, weil der -01 billg ist und man auch damit nette Sachen programmtechnisch machen kann und weil man eben sozusagen "dicht an dieser Hardware" ist. Man muß sich Gedanken um Betriebsspannung, Pegel usw. machen. NodeMCU ist bequem (nutze ich hier durchaus auch), endet aber vorerst dann in der Software. Eine LED kann ich auch mit dem -01 blinken lassen, ein Relais ansteuern (Funkschalter), einen Taster abfragen. Da brauche ich real dann den "Rest" von NodeMCU garnicht. Gruß aus Berlin Michael
ich sehe nicht mal den Unterschied, ausser das ich dem AVR oft noch einen ISP und quarz samt Vogelfutter anbauen muss. wenn es eine lockere Runde werden soll, Arduino entweder mit der Arduino IDE oder mit dem AVR Studio (ich bevorzuge 4.18 Sp3) + ISP Prommer Geht beides, auf dem Steckbrett hat der Arduino den Vorteil das er weniger wackelt und seinen Quarz nicht verliert. Mein letztes "Projekt" hängt noch an der Wand auf dem Steckbrett, nano328p + Nokia 5110 LCD + 433 China Funke um morgens die Rolläden hochzufahren und abends runter. Auf dem großen mighty 1284p Arduino clone kann ich mich derweil um ESP wlan Anbindung, Sonnen -aufgang und -untergang holen, NTP Beschaffung kümmern. Ob der 1284p benötigt wird später oder nicht ist ja egal, eine schöne Plattform zum Entwickeln ist er alle Male.
Wenn ich in dieser Situation wäre, würde ich den nackten Controller nehmen. So sieht man sofort was alles im µC drin steckt und was ich alles benötige um ihn ans laufen zu bekommen. (Im Minimalfall nur die Angst-Kondis) Problem dabei: Man benötigt einen Programmer. Positiv: Man kann auch auf die Fuses eingehen, interner Takt, Brown Out, EEPROM-Save usw. Abhilfe zum Problem könnte pro "Teilnehmer" ein AVR mit geflashtem Bootloader und USB/UART Kabel sein. Am Bequemsten wäre ein Arduino als Basis (einer mit USB/Seriell Wandler). Die Software würde ich auf jeden fall mit AVR-Studio schreiben. Fällt mir noch ein: Wenn die wirklich wissen wollen was da drin passiert, wäre ein größrer ATMega mit Debugging per JTAG das Highlight.
Hallo gerne würde ich hier auch noch meinen Senf abgeben ;) Erstmal muss ich dir sagen, dass es generell eine dumme Idee ist hier Fragen um den Vergleich mit Arduino zu stellen, da dieser hier gehated wie wohl sonst in keinem Forum wird. Das sieht man auch schon an den Antworten. Wenn ich deine Frage richtig verstanden habe soll das ja auch eine Einführung und nicht ein Studium werden. Leute die hier vorschlagen mit Datenblättern zu arbeiten und den Chip am besten nackt zu kaufen, haben einfach den Drang, sich in diesem Forum zu profilieren, was weiss ich wieso sie's nötig haben... Ich habe selbser noch nie direkt mit AVR's gearbeitet, habe aber den Umstieg von Arduino auf ARM gemacht. Meiner Meinung nach müsst ihr euch entscheiden was ihr wollt. Ergebnisse in ermesslicher Zeit. Eben n paar Abende mit nem Bierchen. oder.... Ihr schiesst euch voll ein. In dem Fall würde ich echt empfehlen zuesrt anzuschauen wie ein uController überhaupt funktioniert. Das erwähnt hier nie ein Schwein, obwohl Assembler grossgeschrieben wird, aber das macht nur Sinn, wenn du weisst wie der gebaut ist. Register, Memory(Flash,Ram,Rom), Bus, CPu, der ganze Kram... grüsse Felix
Hallo, das schließt sich doch nicht aus. Für das schnelle Anfüttern Blinken mit Arduino ProMini + USB-Seriell-Adapter o.ä., erspart erstmal die Schulg im Löten... Hat den Vorteil, daß nichts am AVR hängt, was stört, weil man den USB-Wandler einfach abziehen kann. Einen ISP-Prgrammer bei Interesse nachkaufen und eben in ASM auf dem Mega328 des ProMini die LED blinken lassen. Die Investition bleibt im Rahmen und kann bei Bedarf beliebig erweitert werden. Gruß aus Berlin Michael
Tobias schrieb: > Lange Rede, kurzer Sinn: Setzt man solchen Einsteigern lieber Arduinos > oder AVRs vor? Was sind die Vor- und Nachteile? Das wird hier ständig durchgekaut. Also bitte Suchfunktion benutzen!
ich schrieb: > Tobias schrieb: >> Lange Rede, kurzer Sinn: Setzt man solchen Einsteigern lieber Arduinos >> oder AVRs vor? Was sind die Vor- und Nachteile? > > Das wird hier ständig durchgekaut. Also bitte Suchfunktion benutzen! Die Antwort ist falsch. Die gängigsten Arduino SIND AVR, nur eben schon zusammengelötet... Gruß aus Berlin Michael
Tobias schrieb: > Aktuell stellt sich mir aber die Frage: Welchen Vorteil hat es, wenn ich > Einsteigern wirklich Dinge an nativen AVRs erkläre? Oder sollte man > Einsteigern heute lieber erst einmal fertige Arduino-Platinen vorsetzen? Warum nicht beides? Kein Mensch sagt, dass man AVR-Arduinos nicht auch mit dem "normalen" gcc programmieren kann. Dann bleibt immer noch der Vorteil, dass die Hardware fertig zusammengelötet ist und einen Bootloader drauf hat. Als Gegenstück dann eben dazu, einen rohen AVR nehmen und den auf einem Steckbrett mit dem üblichen Hühnerfutter versehen und per ISP programmieren. Wenn deine Leute alle programmieren können, dann sollten sie das abstrahieren können, dass es einzig und alleine um die Fragestellung geht: fertig aufgebaut und einsatzfähig bzw. was brauche ich alles, damit der nackte IC einsatzfähig wird. Ab dann gibt es dann keinen Unterschied mehr.
Tobias schrieb: > Nein, ich mache keinen VHS-Kurs oder stelle sonstige hohe fachliche > Qualifikationen an das ganze, ich will einfach nur ein paar Freunden die > Welt der µCs bei einem Bierchen an ein paar Abenden näher bringen. Dann solltest du überhaupt nicht auf irgend eine spezielle Architektur eingehen. Erkläre deinen Freunden lieber, wie so ein Mikrocontroller im Prinzip funktioniert (CPU, Befehl holen und ausführen, Speicher, I/O) - aber mach DAS so saukurz wie möglich. Anschließend ein Diskurs darüber, daß sowas ne Menge Pins hat, mit denen man irgend was Sinnvolles anstellen kann, daß sowas auf ne Leiterplatte gelötet wird und irgendwo eingebaut wird, z.B. Plastikschachtel. Anschließend vielleicht ein paar deiner letzten Bastelobjekte (sofern funktionabel und vorzeigbar) herumreichen, für die meisten ist Anfassen und ggf. reingucken in die Schachtel viel interessanter als alles andere. Der Rest des Abends gehört dann dem x-ten Bierchen... Merke: den allermeisten Leuten außerhalb des Programmierer-Dunstkreises ist es am wichtigsten, eine sinnvolle Verwendung sehen und begreifen zu können. Jegliche Diskussionen ob Arm oder Avr oder XYZ sind da erstmal absolut sinnlos. Also beeindrucke deine Leute am besten mit nützlichen Anwendungen. W.S.
Ich würde vermutlich ein Breadboard mit AVR, Quarz, 2 LEDs und einem ISP hinstellen, anschließen, vorführen. "Das ist die Minimalbeschaltung." Dann den Rest mit Arduinos machen. "Und das hier ist schon fertig, funktioniert, und man kann fertige Module kaufen." Dann sieht man am ersten Abend schon, wo die Reise hingehen soll und kann das erzählen, was den Kumpels am wichtigsten ist. edit: Oh, Karl-Heinz hatte das schon geschrieben.
:
Bearbeitet durch User
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.