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.
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.
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.
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
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.