Microcontroller

  • Hallo OMs,

    mit Microcontroller lassen sich viele Aufgaben lösen. Ob in TRX, Antennentunern, Antennenanalyzer, Akkuldegreräte - überall sind sie drin.

    Arduino

    Typen: Nano, Mega, Maker-xxx mit WLAN, Bluetooth, GSM

    • + Einsteigerfreundlich
    • + IDE für ein (angepaßtes) C
    • Andere IDEs möglich (PlatformIO, MS Visual Studio u.a.)
    • + Viele Librarys
    • + Viel Zubehör
    • + Große Community (englisch, teils deutsch)
    • - RAM klein, das ist oft die Grenze, Flash ausreichend (Mega)
    • - Takt 16MHz

    Teensy (3.2, 4.0 4.1)

    • + (Einsteigerfreunlich) fast wie Arduino
    • + IDE-Arduino + Plugin für ein (angepaßtes) C
    • Andere IDEs möglich (PlatformIO, MS Visual Studio u.a.)
    • + Viele Librarys
    • + Viel Zubehör (bis zu 'Soundkarten')
    • + Große Community (nur englisch, Firmeninhaber Paul Stoffregen selbst aktiv, )
    • + RAM 1MB, Flash 8MB
    • +Takt 600MHz (läßt sich herabsetzen bis 24Hz, spart Strom)
    • + Sehr viele GPIOs, I2C, SPI, sogar LAN mit kleinem Modul
    • + Rechenleistung 5x über ESP32
    • + Preis / Leistung OK, ArduinoMega nicht günstiger

    ESP32, ESP8266

    • + Sehr preisgünstig
    • + Viele Librarys
    • + Große Community (englisch, teils deutsch)
    • + Eingebautens WLAN
    • - Wenn man LAN benötigt nur über externes Modul an SPI. Dann lieber gleich Teensy, da gehts einfacher.

    Kennt jemand Raspberry Pico bzw den Arduino Pico?

    • + Sehr kostengüstig
    • * Programmierung:
    • - Die Toolchain für MicroPython ist klar. Für C?
    • ! MicroPython / C
    • Weniger Programmieraufwand, 5-10x langsamer als C / Mehr Aufwand, (fast) so schnell wie Assembler


    Allles zu kennen, der Teufel steck im Detail, schaffe ich nicht. Ich brauche eine sinnvolle Eingrenzung.

    Raspberry Pico bzw den Arduino Pico, MicroPython ? Eine Mode?


    Was sagt ihr?


    73

    Hans-Jürgen

  • Moin,


    ich ergänze mal etwas:

    Hallo OMs,

    mit Microcontroller lassen sich viele Aufgaben lösen. Ob in TRX, Antennentunern, Antennenanalyzer, Akkuldegreräte - überall sind sie drin.

    Arduino

    Typen: Nano, Mega, Maker-xxx mit WLAN, Bluetooth, GSM

    • + Einsteigerfreundlich
    • + IDE für ein (angepaßtes) C
    • Andere IDEs möglich (PlatformIO, MS Visual Studio u.a.)
    • + Viele Librarys
    • + Viel Zubehör
    • + Große Community (englisch, teils deutsch)
    • - RAM klein, das ist oft die Grenze, Flash ausreichend (Mega)
    • - Takt 16MHz


    Microchip AVR (ATMega) Controller - Takt bis 20MHz ohne die gesamten Arduino Libs -> weniger Balast, mehr RAM, schnellerer Code und nicht zu vergessen die Microchip PIC Controller, die ST32M, MSP430, LPC usw. usf. Und aktuell ganz wichtig ist auch die Verfügbarkeit.


    Normalerweise wählt man einen Microcontroller nach Anzahl der Ports, nach den Funktionen und Schnittstellen, nach Strombedarf, nach Leistung aus und nicht nach Entwicklungsumgebung und viel fertigen Code.


    Wenn Du Dich natürlich von vornherein auf die Arduino Welt festlegst, egal ob AVR, Teensy, ESP dann nimm einfach, was Dir gefällt, ist doch völlig egal, denn den Controller mit seiner Architektur lernst Du versteckt hinter der Arduino Umgebung nicht kennen.


    73, Tom

    Ich bin dann mal weg ...

  • denn den Controller mit seiner Architektur lernst Du versteckt hinter der Arduino Umgebung nicht kennen.

    Moin Tom,


    da stellt sich mir die m.M.n. wichtigste Frage, die nur Hans-Jürgen DL3HJG beantworten kann:


    Möchtest Du relativ schnell funktionierende Geräte / Projekte haben oder möchtest Du in die Tiefen der Thematik einsteigen?

    73 Michael, DF2OK.

    ~ AFU seit 1975 ~ DARC ~ G-QRP-Club ~ DL-QRP-AG GM ~ AGCW ~ FISTS ~ QRPARCI ~ SKCC ~

    "Lege keinen Wert auf diejenigen, die dich nicht zu schätzen wissen."

  • Normalerweise wählt man einen Microcontroller nach Anzahl der Ports, nach den Funktionen und Schnittstellen, nach Strombedarf, nach Leistung aus und nicht nach Entwicklungsumgebung und viel fertigen Code.

    Normalerweise mag das für einen ambitionierten, erfahrenen Programmierer oder für einen Profi so sein.


    Für jemand, der mit wenig Aufwand und mit flacher Lernkurve den Einstieg sucht, sind einfache Entwicklugns-Plattformen, IDEs und Libs wie z.B. Arduino oder Micro-Python ein Segen und ein Weg, schnell Erfolgserlebnisse zu haben und Frust zu vermeiden. Das objektorientierte Programmieren in C++ oder Assembler und der Umgang mit komplexen IDEs und Debuggern wie Eclipse überlasse ich gerne den Fach-NERDs oder den Profis, die damit täglich arbeiten und damit ihr Geld verdienen.


    73

    Günter

    "For every complex problem there is an answer that is clear, simple, and wrong" (H.L. Mencken)

  • Moin,

    Normalerweise mag das für einen ambitionierten, erfahrenen Programmierer oder für einen Profi so sein.

    es gab mal Zeiten, da blieb einem gar nichts anderes übrig, weil man nur ne' nackte 6800 CPU hatte. Aber die sind ja schon seit Jahrzehnten vorbei und heute hat man auch bei Microcontrollern praktische und manchmal auch unpraktische Baukästen. Nur damals hat man mit ein paar Schaltern und ein paar LEDs angefangen.

    Für jemand, der mit wenig Aufwand und mit flacher Lernkurve den Einstieg sucht, sind einfache Entwicklugns-Plattformen, IDEs und Libs wie z.B. Arduino oder Micro-Python ein Segen und ein Weg, schnell Erfolgserlebnisse zu haben und Frust zu vermeiden.

    die Frage steht dazu dann halt im Raum, wie Michael das auch festgestellt hat. Was genau soll das Ziel sein? Wenn das Ziel Deiner Beschreibung entspricht, dann ist es letztendlich völlig egal, welches System der aufgeführten verwendet wird. Kann man sogar relativ simpel mal mischen. Der ganze Kram kostet fast nichts.

    Python ein Segen und ein Weg, schnell Erfolgserlebnisse zu haben und Frust zu vermeiden. Das objektorientierte Programmieren in C++ oder Assembler und der Umgang mit komplexen IDEs und Debuggern wie Eclipse überlasse ich gerne den Fach-NERDs oder den Profis, die damit täglich arbeiten und damit ihr Geld verdienen.

    Eclipse überlasse ich der jüngeren Generation. vim und tmux - das langt.


    73, Tom

    Ich bin dann mal weg ...

  • Ich persönlich mag den Teensy 4.1. Hab vor einer Woche ein neues Projekt angefangen und alle Bausteine laufen schon. "Nur" die Hauptanwendung muß ich noch schreiben.


    Warum Teensy:

    • Weil (fast) alle Arduino libraries gehen und sind auf Github - man sieht also die Issues und den Pflegezustand direkt
    • Zusätzlich zum Arduino bietet PJRC guten Support / Webseite
    • Gleiche IDE wie Arduino
    • Egtl. alle wichtigen HF Bausteine als Library vorhanden

    Teensy 4.1:

    • Performance im Vgl. zu Arduino
    • Preis / Leistungsverhältnis
    • Sehr viele eingebaute Funktionen. Für egtl. alle Anwendungen überdimensioniert
    • Optimierte Libraries für Grafik-TFT etc. für Teensy 4.1

    Ich programmiere mit Mikroprozessoren in Assembler & C seit 1985, mit C++ seit 1990. Trotzdem freue ich mich, wie leicht einem die Nutzung neuer Libraries und Bausteine gemacht wird. Flache LErnkurve ist nicht nur ein Argument für Neulinge. Ich mache das ja "nebenher" in meiner Freizeit.


    Der Preis des uP Moduls ist für mich zweitrangig - ich kaufe die als Einzelstücke und 20.- mehr aber viel (Programmier)-Zeit gespart.

    Deshalb waren die "kleinen" Teensy Pico etc. für mich irrelevant. Und zwischen Python und C++ bevorzuge ich C/C++, meine persönliche Präferenz.

    Wenn ich kostenoptimiert entwickeln müßte würde ich eh keine Module sondern nackte Prozessoren nehmen.


    Für mich ist der Teensy 4.1 ein guter Kompromiss und ich habe meine Freude damit.


    Die Teensyduino IDE hat ggü dem, was ich gewohnt bin, Abstriche - tut aber was man braucht.


    73


    Gerd DF9TS

  • Moin Gerd,

    Ich programmiere mit Mikroprozessoren in Assembler & C seit 1985, mit C++ seit 1990. Trotzdem freue ich mich, wie leicht einem die Nutzung neuer Libraries und Bausteine gemacht wird. Flache LErnkurve ist nicht nur ein Argument für Neulinge. Ich mache das ja "nebenher" in meiner Freizeit.


    Die Teensyduino IDE hat ggü dem, was ich gewohnt bin, Abstriche - tut aber was man braucht.

    ich habe auch gerade so ein Projekt, das eigentlich auf der Arduino Umgebung läuft, mit dem ATMega2560. Das funktioniert auch alles tadellos im Testaufbau auf dem Tisch. Aber es kann da schon mal Probleme geben, wenn es zeitkritisch wird (und in dem Projekt werden alle 3 UARTS, Ethernet/W-LAN, LCD und die Ansteuerung einer H-Bridge gemacht, die nicht "wackeln" sollte) und wenn man sich dann z.B. den Code für digitalWrite() anschaut, nur um einen Port zu schalten, das geht halt auch schneller und mit viel weniger Code.


    Die ganze Arduino Umgebung ist schon ok, mit der neuen V2.0 IDE kann man auch arbeiten, für Einsteiger oder Leute, die schnell ein Ergebnis haben wollen. Vor allem eine IDE für mehrere Plattformen ist da praktisch aber eben auch ein Nachteil - es wird im ganzen Code soviel abgehandelt und abgefragt, was man für einen einzelnen Controller gar nicht benötigt. Statt den kleinen 8-Bitter dann mal ein wenig direkt zu quälen, wird auf ESP oder Teensy gewechselt, da hat man dann die Leistung (die man eigentlich gar nicht benötigt). Dieses effektive Nutzen eines Controllers, wie wir das so mal gelernt haben, das geht dabei irgendwie etwas unter. Aber ist eben die Frage, was man will, einfach nur schnell ein Blinklicht oder die ganzen Timer-Register auch verstehen.


    73, Tom

    Ich bin dann mal weg ...

  • Hallo OMs,

    @ DF2OK:

    µCs sind ein Mittel zum Zweck und weder meine Ausbildung (bin Werkzeugmechaniker) noch mein einziger Lebensinhalt. Außer zum QSO soll Zeit für die Mitmenschen bleiben.

    @ DL7BJ:

    Richtig, diese Arduino-IDE bringt im Code eine Menge Ballast mit. Ev. reduziert die Otimierung das etwas. MicroPython ist noch 5x langsamer ist, weil der Code interpretiert wird.

    Das AVR-Studio und Eclipse kenne ich von vor vielen Jahren. Mit den netten kleinen 'Breakouts' ist der mechanische Aufbau wesentlich erleichtert. So kam ich zu Arduino.

    Assembler ist 'Hardcore' !

    Bibliotheken:

    Man muß das Fahhrad nicht 2x erfinden. Dafür ist man dem Code ausgeliefert. Sonst eben selbst entwickeln.

    Ein professioneler Entwickler muß schon auf die Kosten achten: Entwicklung 1x, Gerät Millionen mal. Beim Hobby ist der Kauf der Hardware 1x.

    @ DF9TS:

    So etwa sehe ich das auch. Ich wollte nur fragen, um mich nicht in einer Sackgasse zu verrennen.


    Danke für Eure Antworten!

    73

    Hans-Jürgen

  • µCs sind ein Mittel zum Zweck (...) noch mein einziger Lebensinhalt. Außer zum QSO soll Zeit für die Mitmenschen bleiben.

    Moin Hans-Jürgen,


    so auch bei mir, Mittel zum Zweck und um etwas Einblick in die Materie zu bekommen. PIC, ATMEL mit Bascom sowie Arduino mit der IDE habe ich mal ausprobiert.


    In jungen Jahren habe ich mit Basic auf dem ZX81 und später auf dem C64 hantiert. Meistens vorhandene Programme angepasst. Später auf dem PC unter DOS mal ein wenig mit Turbo-Pascal das eine oder andere Tool fürs Fotohobby programmiert.


    Danke für die Info und möge der Code feherlfrei sein.

    73 Michael, DF2OK.

    ~ AFU seit 1975 ~ DARC ~ G-QRP-Club ~ DL-QRP-AG GM ~ AGCW ~ FISTS ~ QRPARCI ~ SKCC ~

    "Lege keinen Wert auf diejenigen, die dich nicht zu schätzen wissen."

  • Moin Hans-Jürgen,

    µCs sind ein Mittel zum Zweck und weder meine Ausbildung (bin Werkzeugmechaniker) noch mein einziger Lebensinhalt.

    So etwa sehe ich das auch. Ich wollte nur fragen, um mich nicht in einer Sackgasse zu verrennen.

    dann sind die alle ok und auch Arduino passt. Da solltest Du die neue IDE 2.x verwenden, wenn es die Teensy Erweiterungen dafür gibt. Ansonsten schaue einfach auf Verfügbarkeit und Hardware-Aufbau. Kann man Arduino-Shields einfach aufstecken, sind die Module verfügbar usw. Auch die Anzahl der benötigten Ports kann ein Auswahlkriterium sein, so ein Teensy oder Arduino Nano hat nur den Bruchteil der Ports eines Arduino Mega 2560.


    73, Tom

    Ich bin dann mal weg ...

  • Moin,

    ich habe auch gerade so ein Projekt, das eigentlich auf der Arduino Umgebung läuft, mit dem ATMega2560. Das funktioniert auch alles tadellos im Testaufbau auf dem Tisch. Aber es kann da schon mal Probleme geben, wenn es zeitkritisch wird (und in dem Projekt werden alle 3 UARTS, Ethernet/W-LAN, LCD und die Ansteuerung einer H-Bridge gemacht

    ich zitiere mich mal selbst ...


    Jetzt im Winter bin ich wieder mit diesem Projekt beschäftigt und nach dem ich mir die ganzen Quellen (Open Source) mal angeschaut habe, ist das schon eine Menge, was da im 8 Bit ATMega2560 abgeht. Ethernet und/oder W-LAN Interface, 3 andere Bussysteme und noch die vom Timing her kritische H-Bridge. So habe ich einfach mal auf den Markt geschaut und bin bei STM gelandet, ich hatte da noch das Board von dem Antennenanalyzer (EU1KY) rumliegen, dieses Disco Board, dazu gibt es hier einen Mega-Thread im Forum. Mit dem habe ich mal ein wenig gespielt.


    Diese Woche ist dann aber das für den Zweck geplante Board gekommen, ein ST Microelectronics Nucleo 144 mit einem STM32F746 Controller. Das ist ein ARM Controller mit Cortex M7 Kern. Gegenüber den 8 Bit Controllern von Microchip (PIC und AVR) ist man da echt geflasht! :saint:


    • 32Bit bis zu 216Mhz
    • 1MByte Flash
    • 320kByte SRAM
    • 2x CAN
    • 6x SPI
    • 4x I²C
    • 4x UART
    • 2x USB
    • 1x 10/100MBit/s Ethernet
    • 1x RTC
    • 1x LCD Interface
    • 3x 12Bit ADC
    • 2x 12Bit D/A
    • 18 Timer

    Die komplette Toolchain gibt es bei ST kostenlos. Aber, für den der es möchte, es geht auch mit der Arduino IDE. Für die STM32 Controller gibt es fertige Boards. Alle Boards haben das Programmierinterface mit dabei, kann man vom Board auch abtrennen. Damit ist ein direktes Online Debugging möglich. Die Doku auf den Seiten von ST ist sehr umfangreich, es gibt eine große Community und die Boards sind z.B. bei Reichelt, Digikey oder Mouser leicht zu bekommen. Die Boards kosten nicht viel mehr, als die üblichen Arduino Boards, haben Arduino Uno kompatible Buchsenleisten, es lassen sich die aufsteckbaren Erweiterungen für díe UNO Boards verwenden, wenn man beachtet, dass die STM32 mit 3.3V arbeiten. Da muss man ein wenig nach den Ports schauen, welche 5V Tolerant sind. Das sind nicht alle und es hängt auch vom Controller ab. Die Nucleo Boards gibt es mit kleinen STM32 Controllern bis hin zu den größeren Controllern wie dem STM32F746, den ich wegen dem Ethernet Interface ausgewählt habe.


    Das noch als Ergänzung zu den bisher aufgeführten Controllern.


    73, Tom


    PS: Und wer wie ich noch das Board vom Antennenanalyzer hat und das wegen der Anschaffung eines NanoVNA gar nicht mehr benötigt, kann gleich damit einsteigen :)

    Ich bin dann mal weg ...

    Edited 2 times, last by DL7BJ ().

  • Moin,


    ich habe da noch eine Ergänzung zu Arduino. Ich hatte mit der STM32CubeIDE angefangen, die basiert auf Eclipse. Das ist schon sehr umfangreich. Bei meinen ganzen Versuchen habe ich dann STM32duino entdeckt. Das würde auch in der Arduino IDE gehen, durch Einbindung von STM32duino stehen die STM32 Boards wie Discovery und Nucleo zur Verfügung. Eine Alternative, die ich persönlich besser finde, ist Visual Code mit PlatformIO. PlatformIO unterstützt eine umfangreiche Liste an Controllern.


    Die STM32 Controller sind wirklich nett, die skalieren von 8 Pin 32Bit ARM Controllern bis zu 204 oder mehr Pins. Die Boards sind kaum teurer als Arduino Boards mit 8 Bit AVR Controllern. Insbesondere bei den großen Controllern hat man auch für den Funkbereich eine tolle Hardware-Plattform. Was man ja auch hier im Forum an dem langen Thread zum Antennenanalyzer nach EU1KY gesehen hat.


    Wer also mit einem Arduino Umfeld in die 32 Bit Welt mit günstigen Controllern einsteigen möchte, es geht und genauso einfach wie mit den üblichen Arduino Boards. Es gibt viele Bibliotheken für die STM32, viele andere laufen auch auf den STM32. Man kann also ohne Umstellung der gewohnten Entwicklungsumgebung in die 32 Bit ARM Welt eintauchen. Wer mehr möchte, geht über zu Visual Studio Code mit PlatformIO und dort mit eingebundenen Arduino Bibliotheken (das geht auch mit 8 Bit, die werden von PlatformIO ebenso unterstützt).


    73, Tom

    Ich bin dann mal weg ...