Einsteig in die Welt der Mikrocontroller?

Status
Für weitere Antworten geschlossen.

Prof Leon

Banned
Registriert
Feb. 2021
Beiträge
12
Hi, ich studiere Elektrotechnik und bin, wer hätte das gedacht, an
Programmieren bzw. Mikrocontrollern interessiert :D


Besitzen tue ich aktuell einen Raspberry Pi 3 Model B und spiele mit dem
Gedanken, mir noch einen Pi 4 (bzw 400, mit der Tastatur) und einen
Raspberry Pi Pico zu kaufen.

Programmieren kann ich aktuell nur in C.

Habt ihr Tipps für mich, wie ich da am besten Anfange?
Wie weit komme ich mit C?
Habt ihr Ideen für kleine (aber nützliche) Projekte zum Start?

Habt ihr noch weitere Empfehlungen um einen guten Einstieg zu finden?
(und ja, ich bin irgendwie ein Raspberry Pi Fan und würde daher deren
Produkte auch erstmal kaufen bzw. nutzen)

Danke für eure Antworten :)
 
Auch wenn du das evtl nicht hören willst, würde ich auch mal einen Arduino in den Raum werfen.

Und C dürfte eigentlich die perfekte Sprache dafür sein.
 
  • Gefällt mir
Reaktionen: 0-8-15 User, BLACKDIAMONT und M4ttX
Mit C++ sehr weit.
Von dem Pi2040 würde ich erstmal abraten bis der eine Weile draußen ist, da einfach STM deutlich etablierter ist was Dokumentation und user base betrifft. Die meisten gängigen Arduinos sind einfach veraltet (AVR).
Ganz gut eignen sich die STM32 Nucleo (ARM), die auch direkt mit debugger/programmer kommen.
Sofern es eine aufsteigende Architektur sein soll in China nach RISC-V umsehen.
 
  • Gefällt mir
Reaktionen: M4ttX
Prof Leon schrieb:
und ja, ich bin irgendwie ein Raspberry Pi Fan und würde daher deren
Produkte auch erstmal kaufen bzw. nutzen
Na dann ist der Pico genau das richtige für dich.
https://www.raspberrypi.org/documentation/pico/getting-started/

Ich bin auch gerade dabei meine Designs zu migrieren und die Firmware für meine Geräte an den 2040 anzupassen.
Ich steuere damit hauptsächlich den PGA2310 Lautstärkeregler auf verschiedenen Geräten, bedient wird das mit Infrarotfernbedienung oder Drehimpulsgeber auf einem kleinen OLED.

Wie wäre es mit einer Handheld-Spielekonsole? Snake ist recht schnell programmiert und du brauchst dazu nur einen Bildschirm und zwei Taster.
Michael-Menten schrieb:
Von dem Pi2040 würde ich erstmal abraten bis der eine Weile draußen ist
Verstehe die Logik dahinter nicht. Das Ding ist jetzt schon besser dokumentiert als alles, was ich aus der Arduinowelt kenne. Und wer lernen will braucht auch keinen vorgekauten Git-Code. Der kommt ohnehin innerhalb kürzester Zeit. Mit irgendwelchen Spezialboards aus China sitzt man erst recht auf dem trockenen, wenn es um Dokumentation geht. Da hilft oft auch kein Kurs in Mandarin.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: jlnprssnr und Prof Leon
4. meinung hier :)
Das hier (wenn auch nicht mit dieser Anleitung) war damals mein 1. Bastelprojekt. Die Familie mochte es zu weihnachten sehr. Fuer den betrieb braucht es eine 1.5v batterie, die man gut an einem langen Kabel hinter dem hals verstecken kann.
Zum ueben ist wohl sowas cool
https://hackaday.io/project/28593-piggyback-led
 
Als E-Techniker fängt man am besten "ganz unten" an:

https://www.retro-programming.de/programming/assembler/

Im Studium hatten wir ein Board mit 8051-kompatiblem µC, und da war das Vorwissen aus C64-Zeiten sehr hilfreich.

Nebenbei ist das Lernen auf dem C64 wesentlich spaßiger wegen der vielen möglichen Grafikchip-Hacks. Und dem frei programmierbaren Analogsynthesizer.
 
ghecko schrieb:
Verstehe die Logik dahinter nicht. Das Ding ist jetzt schon besser dokumentiert als alles, was ich aus der Arduinowelt kenne.
Arduino ist jetzt auch nicht das Maß aller Dinge was Dokumentation angeht.
Den RP2040 wählt man aktuell primär weil man Raspberry fan ist und Raspberry will. Der IC ist jetzt Wochen nach dem start immer noch nicht bei Octopart gelistet.
Bin mir auch nicht sicher ob es bereits Dokumentation gibt wie man auf dem Assambler schreibt. ARM ist eine komplett Katastrophe von der Komplexizität bis zum Hello world um Assambler zu probieren jedoch gibt es dafür genügend Tutorials.

Mit dem Nucleo bekommt man deutlich runderes Gesammtkonzept und von z.B. einem STM32F103x auf einem andern umzustellen ist deutlich einfacher als von einem RP2040 auf einen anderen Hersteller zuwechseln.
 
Für den Einstieg: Arduino (oder ESP8266), mit Arduino IDE. Da findest du jede Menge Beispielprojekte an denen du dich orientieren kannst. Einfacher (und günstiger) geht es fast nicht mehr. Alles weitere dann später.
 
  • Gefällt mir
Reaktionen: Piktogramm
Ein Raspberry Pi ist allerdings kein klassischer µController. Da läuft ein komplettes Betriebssystem und kümmert sich im Hintergrund um alles wichtige.
Gerade um zu lernen sind AVR Microcontroller sehr gut geeignet. Ansteuerung verschiedener Komponenten, IO Genauigkeit anpassen (z.B. 8bit zu 12bit), Programmieren mit begrenzten Ressourcen im allgemeinen, arbeiten mit externem Debugger, usw.

Das sind alles Sachen, auf die man bei einem Pi nicht sonderlich achten muss. Und wenn man will kann man einen Controller mit Batterien sehr lange betreiben (wichtig z.B. für Projekte mit Sensoren am Körper), bei einem Pi geht dir da schnell die Puste aus :)
 
ghecko schrieb:
Den Pico nicht mit anderen Raspberries verwechseln. Der Pico ist kein Zero.
Du hast Recht, habe irgendwie gedacht es geht um den Zero. Den Pico kannte ich nicht. Habe mich da vertan, da es anfangs um die „großen“ 3 und 4 (bzw. 400) ging.

Alternativ würde ich noch FPGAs in den Raum werfen. Als ETechniker dürften die auch interessant sein. Mir persönlich hat Programmierung mit HDL aber nie gefallen.
 
Es ist eigentlich egal womit man anfängt.
Arduino ist einsteigerfreundlich und bietet div. Plattformen vom kleinen 8bit AVR bis hin zu größeren ARM Modellen. Genauso kann die STM Plattform genutzt werden, oder auch die ESP32.

Arduino ist einsteigerfreundlich, dafür fehlt der Dokumentation gern mal Tiefe. Es empfiehlt sich bei Zeiten mal direkt die Datenbanken der verbauten Chips zu konsolidieren. Durchaus auch mit dem Ziel zu verstehen was die Arduino Bibliotheken an Interna der µCs abstrahieren.

STM ist vom Einstieg meiner Meinung nach etwas komplizierter. Naja und Teile vom Code den STM bereitstellt ist Imho gruslig, viele Redundanzen und ein bisschen mehr Dokumentation wäre auch wünschenswert.

ESP32 lohnen sich vor allem dadurch, dass da µPython mittlerweile gut etabliert ist. Wobei der Raspi 2040 da wohl auch ganz gut dabei ist.

Was aber beachtet werden sollte. Bei all diesen Plattformen ist es nie gesichert, dass der Code der als Beispiel dienen soll, oder von Dritten geschrieben wurde irgendwas taugt. Ganz im Gegenteil ist ein Großteil des Codes da draußen eher schlecht. Also immer den einen Kopf benutzen.

Und weil Assembler lernen empfohlen wird, dass ist reichlich sinnlos. Selbst im embeded Bereich nutzt kaum noch jemand Assembler. C und µPython sind da sinnvoller. Wichtige Spezifikat für µC sind eher das direkte Ansprechen von Registern, Bitmanipulation und Shifts sowie allgemein sauberes, strukturiertes Programmieren. unstrukturierter Spaghetti Code mit zig Redundanzen von anderen Etechniker gibt es schon zu viel :)
 
  • Gefällt mir
Reaktionen: 0-8-15 User, tollertyp, Renegade334 und 2 andere
Grundkenntnisse von Assembler sind hilfreich fürs Verständnis. Großteil der Anwendungen braucht es nicht, jedoch braucht man für einen noch größeren Teil kein uPython.
Sehr viele Libbarys enthalten Assambler Code in den man durchaus reinschauen muss und generell sieht man beim Debugging noch viel Maschinencode, selbst wenn alles in C-Sprachen geschrieben ist.

Vorteil vom STM gegenüber den ESP32 und RP2040 ist, dass eine Hardware zum lernen von allem Ausreicht, hohe Relevanz in echten Anwendungen und mit den blue/red pills günstig für Projekte. Beim ESP32 stößt man irgendwann auf die mittelmäßige Dokumentation und der Pi ist noch weit weg von Relevanz.
 
Ich habe mir vor kurzem auch ein paar ESP8266er und ESP32er zugelegt. Zwar hauptsächlich für Smart Home Spielereien, aber ohne Code läuft das ja auch nicht. Die Programmierung beschränkt sich dabei aber auf High-Level Funktionsaufrufe - macht also keine wirklichen Unterschied gegenüber handelsüblicher C-Programmierung unter Windows oder Linux.
Schön finde ich bisher, dass es wirklich für alles erdenkliche eine Bibliothek im Netz gibt, die sich einfach einbinden lässt - reinschauen und lernen wie sie aufgebaut sind und funktionieren geht natürlich auch. Die Teile sind mit 3 Zeilen Code im WLAN und man kann sie untereinander kommunizieren lassen. Und selbstverständlich gibt es unzählige Tutorials, vielleicht sogar zu viele.

Das hat dann natürlich wenig mit hardwarenaher Low-Level Programmierung zu tun, aber wäre vielleicht was für den Einstieg, weil man schnell und einfach sichtbare Erfolge erzielen kann. Weiter in die Tiefe kann man dann immer noch.
Kommt halt auch darauf an, wohin die Reise führen soll.

Im Prinzip kannst du dir auch jedes der hier genannten Geräte kaufen und selbst herausfinden was dir zusagt. Die Teile kriegt man ja für eine Hand voll Dollar.
 
Arduino finde ich da einen ganz guten Einstieg, wobei dort auch schon einiges weggecovert ist (Timer, Interrupts etc.). Man kann aber das komplette Framework auch weglassen und vollständig selbst compilieren (AVRdude, avr-gcc). Ich weiß garnicht ob es noch welche gibt wo der MC gesockelt und somit austauschbar ist, würde ich dann bevorzugen. Man kann sich da halt entscheiden: Will man schnell zum Ziel, dann nimmt man das Framework. Will man was lernen, lässt man es weg und beginnt fast bei 0. Und irgendwann kannst du dich von den Arduino-Boards entfernen indem du dir ein paar lose AVR's + ein wenig drumherum kaufst, zusammenlötest und diese dann bspw. mit dem Arduino mit deinen Programmen flashst. Aus meiner Sicht daher sehr geeignet zum lernen.

Auf dem Raspberry kann man natürlich auch direkt programmieren, jedoch ist das schon ein wenig higher level da bspw. die GPIO vom Betriebssystem gemanaged werden und man halt Bibliotheken verwenden muss. Dümmstenfalls muss man sich noch mit DeviceTree's und sowas herumschlagen :kotz:
 
Zuletzt bearbeitet:
Würde dir auch zu einem STM32 raten. Der Programmer (ST-Link v2) ist für 2-3 € zu haben und ist witzigerweise selbst ein STM32.
Damit lernt man wirklich viele Basics und die werden viel in IoT-Geräten verbaut.
Als nächstes würde ich mir dann, wie bereits hier vorgeschlagen, einen ESP8266 bzw. den sparsameren 8255 mal ansehen. Die bringen WLAN mit und sind damit gut für Smart-Home Projekte geeignet.
Bei mir im Studium gab es dann einen ATtiny / ATmega zu programmieren und später ein bisschen FPGA, aber mit dem Grundwissen um den STM bist du erstmal sehr gut aufgehoben
Edit: von Arduino und Raspberry würde ich erstmal die Finger lassen, da wird dir zu viel von Bibliotheken abgenommen und du lernst nicht wirklich worauf es (beim Studium) ankommt
 
Kann mich nur anschließen. Für hohe Leistung bei Mikrocontroller mit anständiger Dokumentation des SOCs würde ich noch den Teensy 4.1 (native 64bit fpu, falls du Genauigkeit brauchst), bzw. 3.6 (bietet analog ref) einwerfen. Falls du Mal extrem viele Daten mit einem Controller in Echtzeit auswerten möchtest und eine schnelle Anbindung an eine sd Karte suchst oder einen Bildschirm gepuffert per DMA anschließen möchtest und noch genug RAM für anderes haben willst.

Den Raspberry kann man auch gut mit Python betreiben.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben