Microcontroller-Programmierung AVR oder Arduino?

Ich habe kein konkretes Projekt vor, ich möchte es aber einfach können und verstehen. Angefangen von einer blinkenden LED…


TomH22 schrieb:
Wenn man wirklich noch völlig unbedarft/unerfahren in diesem Bereich ist, und auch vielleicht noch garnicht so genau weiß, was man damit machen will, ist der „Ur-Arduino“ auf AVR Basis mit der Orginal Arduino IDE nach wie vor kein schlechter Einstieg.

Es funktioniert einfach „Out-of-the-Box“ ohne Probleme, für die ersten Schritte reicht auch der Abstraktions-Layer der Arduino Library. Wenn man etwas tiefer einsteigen und z.B. direkt auf I/O Register Ebene programmieren möchte, sind die AVRs auch noch relativ einfach zu verstehen.

Ja klar, die AVR basierten Arduino Boards haben nicht das beste Preis/Leistungsverhältnis, aber da wir da über eine Investition von 20 EUR reden, ist das erst mal egal.

Natürlich kann man auch andere Plattformen, wie STM32 oder ESP32 mit der Arduino IDE und -Library ansprechen, hier hakt es aber schnell mal im Detail. Wenn man Erfahrung hat, meist kein Ding, aber für die ersten Schritte kann es hinderlich sein.

Wenn man mehr Komfort beim Entwickeln möchte, bietet sich tatsächlich VSCode mit Platform.io an. Damit kann man, auf geeigneten Plattformen, wie STM32 auch debuggen, außerdem hat man eine wesentliche höhere Performance beim Compilieren. Das ist bei den AVRs egal, aber z.B. bei STM32 macht es einen großen Unterschied.



Auch wenn ich persönlich ein großer Fan von STM32 bin, würde ich schon sagen, das sie nicht so super Einsteiger freundlich sind. Wenn man STM32 richtig ausnutzen will, sollte man aber den STM32Cube Libraries benutzen, das erfordert aber schon etwas mehr Übung. Ich nutze für die Entwicklung die Nucleo Boards von STM auch sehr gerne, für das fertige Projekt kann man dann auf „China-Ware“ umsteigen. Nucleo Boards bekommt bei u.a. bei Conrad oder Reichelt, leider in sehr reduzierter Auswahl.
China STM32 Boards, wie die ganzen „Bluepill“ Nachbauten haben so ihre Tücken. Wenn man STM32 nutzt, sollte man in jedem Fall die paar Euro in einen STLink Nachbau von Amazon oder Ali investieren.

Klingt jetzt schon verwirrend und kompliziert -> dann zurück zu Punkt 1 - > Orginal Arduino



Raspberry PI hat, genau wie die Original Arduinos, den Vorteil, das es „offizielle“ Boards der Raspberry Foundation gibt. Und die sind noch nicht mal teuer, Auch die Dokumentation auf der Raspberry Website ist sehr gut. Wenn man WLAN möchte, ist der Pico W für mich der ESP32 Killer.

Das Original C SDK für den Pico ist anspruchsvoller als Arduino und läuft auch nur unter Linux (was dank WSL auch für Windows Nutzer heute kein wirkliches Problem mehr ist).

Aber mittlerweile kann man den Pico ja auch mit der Arduino IDE programmieren - habe ich aber noch nicht ausprobiert.

Die große Stärke des Pico ist die gute MicroPython Implementierung, sie unterstütz auch den Pico W.

MicroPython ist zwar nicht mehr “traditionelle“ Microcontroller Entwicklung, aber für viele Dinge ausreichend schnell auf dem Pico und man ist sehr produktiv.

Insofern wäre der Pico (W) mit Micropython für mich der zweite „blutige Anfänger“ Tipp.


Was meinst Du mit „professionell“. Planst Du in diesem Bereich Geld zu verdienen, oder meinst Du nur das Du einen „professionellen“ Qualitätsanspruch hast?

@TomH22, ich will das alles halbwegs professionell angehen, und nicht nur ein paar Sachen „zusammenklicken“.

Ich habe eben beim Wühlen noch ein „myAVR mySmartUSB MK2“ gefunden. Kann man damit für den Anfang irgendwas machen? Hatte das vor geraumer Zeit mal gekauft (muss über 10 Jahre her sein). Nur damals hatte ich kaum Programmiererfahrung.
Ergänzung ()

juwa schrieb:
Einen AVR-MC nimmt man, wenn man den auf einer selbst entworfenen Platine montieren will.
Das könnte irgendwann in Zukunft passieren. Also doch kein Arduino?
 
klecksii schrieb:
myAVR mySmartUSB MK2
Das ist nur ein ISP Programmer, braucht man für Arduinos normalerweise nicht, die haben einen Bootloader eingebaut. Es gibt Zwecke, wo sowas nützlich ist, aber die wirst Du am Anfang nicht haben.
 
  • Gefällt mir
Reaktionen: juwa
Op hat von den coolen Kids auf der Straße gehört, dass Arduino kinderkrams ist.
 
  • Gefällt mir
Reaktionen: Piktogramm
klecksii schrieb:
Das könnte irgendwann in Zukunft passieren. Also doch kein Arduino?
Grundlagen mit Arduino (mit Atmega µC, gibt ja mehr als eine Platine von Arduino). Danach kannst du ans Datenblatt vom Atmega µC gehen und mit der AVR-Toolchain arbeiten, ohne dass es neue Hardware braucht. Wenn du an dem Punkt bist, hast du dann hoffentlich genügend der Grundlagen verstanden, dass erste Platinendesigns und/oder die Entscheidung für bestimmte µC-Familien von dir ohne externe Hilfe möglich ist.
 
klecksii schrieb:
ich will das alles halbwegs professionell angehen, und nicht nur ein paar Sachen „zusammenklicken“.
"Professionell" also im Sinne von "ich will es verstehen" und substantiell eigenen Code schreiben.

Beides hängt nicht von der benutzen Hard/Software ab. Also auch mit einem Arduino Board, der Arduino IDE und der Arduino Library kann man "professionelle" Softwareentwicklung betreiben.

Arduino Code ist in Wirklichkeit C++, man hat also mehr oder weniger alle Möglichkeiten der Sprache. Die Arduino Library ist eine Hardware Abstraction Layer, der die Details der Hardware versteckt.

Sofern die Aufgabenstellung mit diesem Layer zufriedenstellend gelöst werden kann, kann man komplett damit arbeiten. Das Konzept der Arduino Library nennt man auch "Super-Loop": Das Hauptprogramm besteht aus einer Endlosschleife, in der zyklisch alle Aufgaben erledigt werden. Dabei muss man halt aufpassen, das man bei zeitkritischen Aufgaben noch "schnell genug" reagiert.

Man kann "High-Level" Arduino Code dann auch beliebig mit Hardware-nahem Code mischen wenn es erforderlich ist. Aber wenn ich Deine Beiträge hier so ansehe, bist Du noch lange nicht an diesem Punkt. Also tue Dir einfach selber einen Gefallen, und fang wirklich mit einem Arduino an. Kauf Dir am besten einen Original Arduino Uno oder eben einen der Nachbauten von Amazon.

Arduino hat mittlerweile auch lauter andere Boards, auch für IoT Anwendungen, etc. Die sind nur deutlich komplexer und teurer.

Piktogramm schrieb:
Wenn du an dem Punkt bist, hast du dann hoffentlich genügend der Grundlagen verstanden, dass erste Platinendesigns und/oder die Entscheidung für bestimmte µC-Familien von dir ohne externe Hilfe möglich ist.
Wenn man überhaupt jemals an diesen Punkt kommt. Es gibt heute so viele preiswerte MCU Boards, auch mit "Castellated Pins", das es sich nicht lohnt, ein voll custom Board zu bauen. Selbst in industriell gefertigten Produkten wird das häufig so gemacht, besonders wenn Funk dabei ist, weil man sich dann die Zertifizierung des Funkmoduls spart.
 
  • Gefällt mir
Reaktionen: klecksii
Wenn Du Deine Bude mit sinnlosen Elektoschrott füllen willst, den Du nie benutzen wirst, kannst Du es nehmen.
Du wolltest ja nicht „Sachen zusammenklicken“. Aber genau das machst Du, wenn Du die 46 Beispielprojekte in dem Kit durcharbeitest.
 
  • Gefällt mir
Reaktionen: Piktogramm
Naja es ist ein zweischneidiges Schwert. Man kann mit einem nackigem Arduino anfangen, dessen Dokumentation und die Dokumentation vom Atmega 328p lesen und versuchen irgendwas sinnvolles zu programmieren. Das ist ein holpriger Start und die Chance, das man aus Unwissen Mist baut und irgendwann frustriert abbricht ist hoch.
So ein Kit oder Beispielprojekte aus dem Netz sind da Imho nicht verkehrt, um die ersten (erfolgreichen) Schritte zu gehen. Man muss nur aufpassen, dass man nach dem Zusammenkopieren von Codeschnipseln das nicht als erfolgreiches Lernen verbucht. Es fängt an der Stelle ja erst an, dass man ergründet WAS dieser Code WIESO macht und was im Hintergrund im µC passiert.
 
So ein Kit finde ich ganz gut. Das Zeug kann man zum Basteln gebrauchen. Ich würde das erste nehmen.
 
  • Gefällt mir
Reaktionen: KitKat::new()
Ich habe mit so einem Kit angefangen. 3/4 davon nicht gebraucht. Gut, schwierig abzuschätzen. Ist eh nur Bastelkram.
Problematisch finde ich die Qualität des Breadboards. Das was ich bekam war eine absolute Katastrophe. Gleichzeitig habe ich von berrybase ein gleich aussehendes für 1€ geholt, was qualitativ erstklassig ist.
Ich würde auf die Kits verzichten und mir Widerstand- und Kondensatorensets, paar Taster, etc. von Ali holen. Das Set so in Komplett gibt es da für die Hälfte.

Meine Meinung zu Arduinos und den Falschinformationen in Tutorials habe ich schon geteilt.
 
  • Gefällt mir
Reaktionen: KitKat::new() und TomH22
Piktogramm schrieb:
Man muss nur aufpassen, dass man nach dem Zusammenkopieren von Codeschnipseln das nicht als erfolgreiches Lernen verbucht. Es fängt an der Stelle ja erst an, dass man ergründet WAS dieser Code WIESO macht und was im Hintergrund im µC passiert.
Das wird bei so einem Sammelsurium an “Projekten“ in diesen Kits zwangsläufig passieren. Vor allem, weil ja für Dinge wie Displays recht komplexe Bibliotheken eingebunden werden, die jetzt nicht zum Lernen für Einsteiger gedacht sind. Das ist in etwa so wie Tiefkühlpizza in den Ofen schieben. Davon lernt man auch nicht, wie man Hefeteig macht.

Ich denke als Anfänger sollte man sich schon ein Ziel setzen und sich irgendwas ausdenken, was man gerne machen möchte. Dann holt man sich das Zubehör was man dafür braucht. Ein junger Mann der sich bei uns für einen Ausbildungsplatz beworben hat, hat z.B. ein Codeschloss für eine Schublade gebaut, mit einem Servo, dass den Schliessmechanismus bewegt, und einer 10er Tastatur.
 
Ich nutze ach Visual Studio Code mit Platform IO

Für mich ist das eine echt gut Kombination vor allem weil libs und Co projektbezogen verwaltet werden, massig Systeme unterstützt werden und das auf Linux wie Win läuft

Ich kenne aber nur den C++ Teil - weiss gar nicht ob das auch mit Python geht ....

Bibliotheken nutzen finde ich ist doch normal und nichts schlechtes - 99% der Entwickler machen das in 99,99% der Projekte - egal ob das Funktionen des Betriebssystem sind, APIs zu Treibern, Bibs der Programmiersprache oder für irgendwas anders - das macht keinen Unterschied.

Die meisten Display Bibs sind im Arduino Framework doch super einfach -
Code:
Bildschirm.clear();   
Bildschirm.malSuperCoolesPicWasIchHabenWill();

Fertich xD

Ich nutze meistens esp32 esp32s2 und 8266 mit dem arduino framework - das macht portieren einfach und es gibt extrem viele fertige Bibliotheken.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: TomH22
Was sagt ihr hierzu?
https://www.amazon.de/Elegoo-Vollständige-Ultimate-Tutorial-Mikrocontroller/dp/B01IHCCKKK/ref=cm_cr_arp_d_product_top?ie=UTF8
Dort sind viele Teile mit dabei, und es scheint für den Einsteig machbar zu sein (keine Überforderung).

Folgendes Zitat stammt aus einem der Kundenrezensionen: " Steuerung über Bibliotheken ist an sich OK, wenn man allerdings auch die tiefergehende Steuerung lernen will, dann ist es nicht mehr OK."

Meine Frage: Ist man auf die Bibliothek angewiesen, oder kann man auch einfach "frei programmieren" wie man will? Denn irgendwann möchte man ja auch eigenen Code schreiben, ohne auf irgendwelche Bibliotheken angewiesen zu sein.
 
Hmmm 45 Euro finde ich eigentlich ok weil schon vieles dabei ist das ich mir auch nach und nach geholt habe.

Mit tiefgehend meint der evtl Signalerzeugung und Co ich denke aber das machen 95% der "Microcontroller Programmierer" auch nicht, weil man so tief eigentlich auch nicht mehr ranmuss.

Das tief ist dann einfach so extrem tief dass man das vielleicht mal für ein Projekt macht bei dem es keine Bibliotheken gibt, aber dann ist man auch schon ganz schnell im Bereichen in denen man ein Oszilloskop etc braucht - und das bekommt man dann zeitlich auch eher nur für eine Sache hin.

Ich mache halt mit Microcontrollern denke das was die meisten machen, steuern messen, Heimautomation usw - und bisher habe ich glaube noch nie was gehabt in dem nicht schon jemand ein gute Bibliothek gebaut hatte. Ich habe manchmal ein Bib mit einem kleinen Fehler gehabt aber nie was das grundsätzlich problematisch war.

Das schöne an Arduino und Co ist doch dass man in C++ oder Python programmieren kann, und trotzdem extrem viel an Messung und Steuerung etc erreichen kann. Auch wenn sicher manche zu recht sagen ja aber das ist ja nicht mehr das optimale Nutzen von Microcontrollern - das ist sicher wahr - aber 99,....% nahe am theoretischen Optimum ist halt nah genug wenn dafür der Source Code lesbar wird.

Bei praktisch allen Projekten die ich nutze ist einer der erste Schritte die CPU Leistung des Microcontrollers runterzusetzen beim EP32 von theoretisch 240 Mhz auf 80 Mhz einfach weil die so extrem leistungsfähig geworden sind.

Super ist der Youtube Kanal von Andreas Spiess bei Microcontrollern - finde einer der Besten in dem Bereich.

Wer Games programmiert wird auch nicht Basis Funktionen der Shader programmieren sondern die Libraries halt nutzen.
 
Zuletzt bearbeitet:
Um generell das Programmieren zu erlernen und rumzuspielen ist ein Arduino ideal. Die Toolchain ist einfach zum laufen zu bringen und du kannst dich auf das Programmieren konzentrieren.

Wenn dir 50€ egal sind kannst du dir so ein Kit bestellen. Ich würde dir Empfehlen ein anfängerfreundliches Projekt zu suchen auf das du Bock hast und nur dafür benötigen Teile anzuschaffen. Beispielsweise sowas wie eine Anzeige aus 7-Segment-Elementen oder ähnliches.

Die Frage, die auch schon hier heiß Diskutiert wurde, welcher Mikrocontroller der richtige ist, ist eine leidige und kann meiner Meinung nach nur korrekt beantwortet werden wenn nahezu alle Anforderungen bekannt sind.

Im privaten Bereich würde ich Dir empfehlen nicht bis auf letzte zu optimieren das ist mühsam und nimmt viel Zeit in Anspruch und teilweise auch den Spaß.
 
naja denke die ESP32 Serie ist inzwischen sicher nicht verkehrt - super leistungsstark sehr günstig und inzwischen gibt es die auch mit native USB.

:O ist doch verrückt für einen "klassischen" Microcontroller der emuliert ja nicht nur die X86er CPU sondern erzeugt auch VGA-Signale manuell - finde das zeigt schon die verrückte Performance.... und ist trotzdem recht sparsam wenn man sleep / deepsleep etc nutzt.
 
klecksii schrieb:
Meine Frage: Ist man auf die Bibliothek angewiesen, oder kann man auch einfach "frei programmieren" wie man will? Denn irgendwann möchte man ja auch eigenen Code schreiben, ohne auf irgendwelche Bibliotheken angewiesen zu sein.
Grundsätzlich kann man immer ohne Bibliotheken arbeiten, man kann z.B. auch auf alle Register des AVR Microcontrollers direkt zugreifen. Viele Funktionen (wie z.B. A/D Wander per Interrupt und nicht per Polling benutzen) kann man auch nur auf diese Weise realisieren.
Allerdings ist das auch komplexer, vor allem wenn man noch nie hardwarenahe Programmierung gemacht hat.

Das schöne an Arduino ist, man kann fast ohne Vorwissen einsteigen und bei Bedarf dann punktuell direkt auf die Hardware zugreifen und dabei schrittweise Erfahrung sammeln. Bevor es sowas wie Arduino gab, musste man Tools wie AVR Studio benutzen, und das hat wirklich einer supersteile Lernkurve, zumindest für Leute ohne entsprechenden Hintergrund.

Für totale Anfänger finde ich die "Orginal" AVR Arduino Boards immer noch eine sehr gute Sache, denn es funktioniert ohne Probleme "out-of-the-box".

Wenn man irgendwann mehr Erfahrung hat, und komplexere Dinge macht, dann ist sowohl die Ardunio IDE, als auch die AVRs ein "Pain in the Ass" und es gibt bessere Lösungen.

Ich nutze mittlerweile entweder Raspberry Pico (bzw. Pico W wenn WLAN benötigt) mit Micropython,
für C Projekte nutze ich hingegen eher STM32 Boards.
Letzteres erfordern mehr Erfahrung, sind dann aber gut zu benutzen und auch easy zu debuggen.

Raspi Pico besticht vor allem mit sehr guter und ausführlicher Doku (im Gegensatz ESP32).
 
  • Gefällt mir
Reaktionen: Bohnenhans
Bohnenhans schrieb:
Ich mache halt mit Microcontrollern denke das was die meisten machen, steuern messen, Heimautomation usw - und bisher habe ich glaube noch nie was gehabt in dem nicht schon jemand ein gute Bibliothek gebaut hatte. Ich habe manchmal ein Bib mit einem kleinen Fehler gehabt aber nie was das grundsätzlich problematisch war.
Gibt es eine Möglichkeit den Code der Bibliotheken zu ändern, z.B. um Fehler zu beseitigen oder etwas zu verbessern? Oder sind die Bibliotheken "fest" und nicht editierbar?
 
Die sind frei änderbar und auch automatisch im Sourcecode vorhanden und werden (PlatformIO/VSCode) dann auch automatisch neu kompiliert wenn man was anpasst - ist aber selten notwendig.

Man kann ja eh keine Binaries ausliefern - man weiss doch nicht auf welcher Plattform die später genutzt werden.

Die sind dann auch oft voller #ifdef für die einzelnen Microcontroller weil die sich halt in manchen Dingen unterscheiden.

Als Binary müsste man sicher hunderte Versionen haben.
 
Zurück
Oben