Forum: Mikrocontroller und Digitale Elektronik PiPico Micropython


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von chris_ (Gast)


Bewertung
2 lesenswert
nicht lesenswert
In diesem Thread will ich einige Code-Beispiele für den PiPico sammeln.
Der ESP32 unterstützt Micropython auch

Beitrag "ESP32 Micropython"

und es stellt sich die interessante Frage, ob der PiPico gegenüber dem 
ESP32 Vorzüge besitzt.

Welche GUI nutzt ihr für MicroPython?

Es wird Thonny vorgeschlagen

https://thonny.org/

Dessen Installation bei mir nicht geklappt hat und deshalb darauf 
verzichten möchte.

von chris_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Für den ersten Erfolg: Blinky
1
import machine
2
l=machine.Pin(25,machine.Pin.OUT)
3
4
import utime as u
5
for i in range(100):
6
     l.value(1)
7
     u.sleep(1)
8
     l.value(0)
9
     u.sleep(1)

Als Programmierschnittstelle kann man bei Ubuntu auch einfach "minicom" 
verwenden. Aufruf mit
1
minicom -D /dev/ttyACM0

mit CTRL-E kommt man in den "paste mode" in den man den obigen LED-Code 
einfach kopieren kann. Dieser wird dann mit CTRL-D beendet und Voila .. 
die LED blinkt.

von Jack V. (jackv)


Bewertung
1 lesenswert
nicht lesenswert
chris_ schrieb:
> und es stellt sich die interessante Frage, ob der PiPico gegenüber dem
> ESP32 Vorzüge besitzt.

Insgesamt ist MicroPython so ausgelegt, dass es auf jeder Plattform 
möglichst gleich zu nutzen ist. Wenn deine Programme also nicht zu 
hardwarenah sind, solltest™ du keinen Unterschied zwischen den beiden 
Plattformen feststellen. Wenn’s allerdings näher an die Hardware geht, 
lassen sich mit Einem Dinge machen, die mit dem Anderen nicht gehen. Im 
Falle des Pico wären das etwa Statemachines/PIO¹ und die einfache 
Nutzung des zweiten Kerns, welche es beim ESP32 nicht geben dürfte. Da 
ich ESP32 nicht weiter kenne, kann ich kein Beispiel für die andere 
Richtung geben – aber da gibt’s ganz sicher auch Sachen, die nur dort zu 
nutzen sind, weil beim Pico nicht vorhanden.

Wenn du allerdings „nur“ Taster, Potis und irgendwelche z.B. 
I²C-Standardsensoren auslesen, und Informationen über LEDs oder 
irgendwelche Standarddisplays ausgeben willst, ist’s gehüpft wie 
gesprungen, welches Board du wählst.

chris_ schrieb:
> Es wird Thonny vorgeschlagen
> https://thonny.org/
> Dessen Installation bei mir nicht geklappt hat und deshalb darauf
> verzichten möchte.

Geht im Grunde mit allem: PyCharm, Eclipse, Atom, VS Code, Vim, Emacs, 
nano, ed, etc. – der Vorteil bei Thonny ist, dass ohne zusätzliche 
Konfiguration alles mit einem Klick geht: MicroPython auf die Platine 
packen, verschiedene Programme direkt vom Speicher des Pico in den 
Editor laden und andersrum, und solche Sachen. Die Installation war 
zumindest bei mir auch ganz einfach: ›yay thonny‹ (bei Debian und 
RaspberryOS ist’s im Repo zu finden, so dass es sich auch dort einfach 
via ›apt install thonny‹ installieren lassen sollte. Von diesen 
eingeschränkten Betriebssystemen, wie man sie manchmal auf fertigen 
Rechnern findet („Windows“ wird wohl viel verwendet), habe ich hingegen 
keine Ahnung.

---

¹) ein verhältnismäßig einfaches Beispiel findet sich unter 
https://core-electronics.com.au/tutorials/how-to-use-ws2812b-rgb-leds-with-raspberry-pi-pico.html 
– da wird die Ansteuerung von WS2812B darüber realisiert.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
chris_ schrieb:
> und es stellt sich die interessante Frage,
> ob der PiPico gegenüber dem ESP32 Vorzüge besitzt.

Hat ein Trekker gegenüber einem Laster Vorzüge?

Da es sich um zwei völlig unterschiedliche Produkte handelt, kommt es 
doch sehr darauf an, was du damit machen willst.

OK, du will MicroPython ausführen. Das ist aber keine Anwendung, sondern 
eine Programmiersprache. Du musst musst schon konkreter werden.

von Jack V. (jackv)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> OK, du will MicroPython ausführen. Das ist aber keine Anwendung, sondern
> eine Programmiersprache.

Das allerdings ist ’ne Definitionssache: das MicroPython auf dem μC ist 
sehr wohl ein Programm, welches die Scripte ausführt.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Jack V. schrieb:
> Das allerdings ist ’ne Definitionssache: das MicroPython auf dem μC ist
> sehr wohl ein Programm, welches die Scripte ausführt.

Man kauft sich aber weder einen ESP32 noch einen Raspberry Pi, um Python 
Scripte auszuführen. Sondern man führt Python Scripte aus, um etwas 
bestimmtes zu erreichen. Auf dieses "etwas" kommt es an.

von Jack V. (jackv)


Bewertung
2 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Man kauft sich aber weder einen ESP32 noch einen Raspberry Pi, um Python
> Scripte auszuführen. Sondern man führt Python Scripte aus, um etwas
> bestimmtes zu erreichen. Auf dieses "etwas" kommt es an.

Hm. Wortklaubereien. Für mich kommt es auf das „wie“ genauso an: man 
nutzt die meisten Programme ja auch nicht, um Programme zu benutzen, 
sondern um etwas Bestimmtes zu erreichen. MicroPython ist ein Programm, 
das auf dem Pico oder ESP-Board (oder einer anderen Plattform) läuft, 
dort RAM und Rechenzeit beansprucht, und dafür sorgt, dass die Eingaben 
(Scripte) entsprechend umgesetzt werden.

BTT?

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Die Frage, ob darauf Python läuft ist natürlich ebenso zentral, wenn man 
in Python programmieren will. Diese hast du ja schon umfangreich 
beantwortet. Dafür habe ich dir ein +1 gegeben.

: Bearbeitet durch User
von chris_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. (stefanus)
21.02.2021 09:19
>chris_ schrieb:
>> und es stellt sich die interessante Frage,
>> ob der PiPico gegenüber dem ESP32 Vorzüge besitzt.
>Hat ein Trekker gegenüber einem Laster Vorzüge?
>Da es sich um zwei völlig unterschiedliche Produkte handelt, kommt es
>doch sehr darauf an, was du damit machen willst.
>OK, du will MicroPython ausführen. Das ist aber keine Anwendung, sondern
>eine Programmiersprache. Du musst musst schon konkreter werden.

Deine Klugscheisserei geht mir langsam ernsthaft auf die Nerven.
Tu mir doch mal den Gefallen und nimm dir ein Beispiel an Jack V: Er 
gibt vernünftige Antworten und nützliche Links.

von Martin (Gast)


Bewertung
1 lesenswert
nicht lesenswert
chris_ schrieb:

> Deine Klugscheisserei ...

Ganz ruhig bleiben. Der labert nur. Der will/kann anderen nicht helfen. 
Wenn man ihn ignoriert hört er von ganz allein auf.

von chris_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mittlerweil läuft bei mir Thonny:
Das Problem war meine Python Installation.
Ich hatte es mehrfach mit

pip3 install thonny

versucht. Aber scheinbar liegt da eine zu alte Python Version dahinter.

Mit

pip3.7 install thonny

hat es funktioniert.

In "thonny" selbst muss man dann noch bei "run" "select interpreter" 
auswählen und dort den PiPico Microphython Interpreter selektieren.

Hier gibt es ein interessantes Repository mit dem PiPico als 
Waveform-Generator:

https://github.com/romilly/pico-code/tree/master/src/pico_code/pico/experiments

( den ich noch nicht ausprobiert habe )

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
chris_ schrieb:
> Deine Klugscheisserei geht mir langsam ernsthaft auf die Nerven.

Ich habe diesen Beitrag geschrieben, weil ich dir eine zur Anwendung 
passende Antwort geben wollte.

Wenn du keine konkrete Anwendung im Sinn hast, sondern einfach nur ein 
bisschen Python ausprobieren willst, dann kannst du das einfach 
mitteilen und gut ist.

Wer hier die Helfer beschimpft, muss damit rechnen, bald keine Hilfe 
mehr zu bekommen. Oder gar verarscht zu werden - hatten wir alles schon 
oft genug.

: Bearbeitet durch User
von chris_ (Gast)


Bewertung
-4 lesenswert
nicht lesenswert
>Wer hier die Helfer beschimpft, muss damit rechnen,
Tu mir mal den Gefallen und halte jetzt deine Klappe.

von chris_ (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier habe ich mal den Funktionsgenerator
https://github.com/romilly/pico-code/blob/master/docs/fungen.md
ausprobiert.
Das Signal auf dem Oszi ist nicht ganz so schön wie im Beispiel.
Interessanter wäre eventuell eine DDS.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Will ihm niemand mehr helfen?

von Alex P. (ra_p)


Bewertung
0 lesenswert
nicht lesenswert
jaaaaa, sein "Oszi" hat aber nur 1 Aufnahme gemacht und deinem Oszi ein 
paar mehr die übereinander liegen. Guck dir die PWM signal an ob es 
evtl. "sauber" aussieht. Leider habe ich jede Menge Platinen aber keine 
PiPicos :/.
Aber uPython geht auch mit dem ESP32... wäre ein versuch Wert...

von Jack V. (jackv)


Bewertung
2 lesenswert
nicht lesenswert
Alex P. schrieb:
> Aber uPython geht auch mit dem ESP32... wäre ein versuch Wert...

MicroPython generell wohl ja. Das „Funktionsgenerator“-Beispiel hingegen 
dürfte Pico-Pi-exklusiv sein: es nutzt die PIO, und nutzt beide Kerne.


Stefan ⛄ F. schrieb:
> Will ihm niemand mehr helfen?

Naja, es fehlt eine Frage.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Jack V. schrieb:
> Naja, es fehlt eine Frage.

chris_ schrieb:
> und es stellt sich die interessante Frage, ob der PiPico gegenüber dem
> ESP32 Vorzüge besitzt.

von Jack V. (jackv)


Bewertung
1 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Jack V. schrieb:
>> Naja, es fehlt eine Frage.
>
> chris_ schrieb:
>> und es stellt sich die interessante Frage, ob der PiPico gegenüber dem
>> ESP32 Vorzüge besitzt.

Ich denke, dazu bereits etwas geschrieben zu haben.

Ansonsten hat so’n netter Schweizer das Thema mal aufgegriffen (und dazu 
noch den STM32 von den BlackPill-Boards in den Vergleich aufgenommen): 
https://www.youtube.com/watch?v=cVHCllbN3bQ

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Jack V. schrieb:
> Ich denke, dazu bereits etwas geschrieben zu haben.

Oh sorry, ich habe dich mit jemand anderem verwechselt.

von chris_ (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
chris_
>und es stellt sich die interessante Frage, ob der PiPico gegenüber dem
>ESP32 Vorzüge besitzt.
Jack V. (jackv)
>Ansonsten hat so’n netter Schweizer das Thema mal aufgegriffen (und dazu
>noch den STM32 von den BlackPill-Boards in den Vergleich aufgenommen):
>https://www.youtube.com/watch?v=cVHCllbN3bQ

Eine sehr schöne Analyse meiner Eingangsfrage, welche das ganze auf den 
Punkt bringt. Das Video sollte man vielleicht im Hautpthread posten:

Beitrag "Raspberry Pi Pico: Mikrocontroller-Board mit Cortex M0+"

Die Ansichten von Andreas Spiess ( "the guy with the swiss accent" ) 
sind aber ein wenig "biased".
Ich weiß, er hat den ULP des ESP32 ziemlich genau analysiert und die PIO 
des RP2040 damit verglichen. Die PIO ist, was den Befehlssatz angeht, 
weniger leistungsfähig. Allerdings wird man mit dem ULP kein DVI-Signal 
erzeugen können.
Im Vergleich wird auch gezeigt, dass der RP2040 keine I2S Schnittstelle 
hat. Aber genau die dürfte man mit der PIO gut realisieren können.
Von Pimoroni gibt's bereits ein Shield dazu:

https://shop.pimoroni.com/products/pico-audio-pack

Insofern: In einigen Aspekten ist der RP2040 deutlich weniger 
leistungsfähig als der ESP32, aber bei bestimmten Anwendungen wird der 
ESP32 nicht mithalten können, wenn die speziellen Hardwareeinheiten SIO 
und PIO benötigt werden.

von chris_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich möchte einen I2C Peripherie Baustein an den PiPico anschließen.
Um den Baustein einfach testen zu können, will ich die Register auslesen 
und über Tastatureingaben direkt verändern können.

Es wird also eine Hexadezimal Aus- und Eingabe gebraucht.

Der Python Syntax scheint stark bezüglich der Versionsn 2.x und 3.x sehr 
unterschiedlich zu sein.

Eine HEX-Ausgabe habe ich auf diese Weise geschafft:
1
ar=[1,2,10,127,255,0xB,0xAA]
2
3
for b in ar:
4
    print("0x%02x"%b)
1
>>> %Run -c $EDITOR_CONTENT
2
0x01
3
0x02
4
0x0a
5
0x7f
6
0xff
7
0x0b
8
0xaa
3 Zeilen Code und eine halbe Stunde rumprobieren, deshalb poste ich die 
Zeilen hier.

Hat jemand einen einfachen Editor für HEX-Eingaben?

von chris_ (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das Board mit der MPU6050 scheint die I2C-PullUps schon integriert zu 
haben.

Ein I2C-Scan mit
1
import machine
2
sda=machine.Pin(0)
3
scl=machine.Pin(1)
4
i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
5
print(i2c.scan())

ergibt die Adresse 104:
1
MicroPython v1.14 on 2021-02-05; Raspberry Pi Pico with RP2040
2
Type "help()" for more information.
3
>>> %Run -c $EDITOR_CONTENT
4
[104]

von chris_ (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Hier eine Funktion für ein Registerdump einer MPU6050 über die 
I2C-Schnittstelle:
1
# read chip registers of a MPU6050
2
# and display contents as hex values
3
4
import machine
5
6
sda=machine.Pin(0)
7
scl=machine.Pin(1)
8
i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
9
10
i2cAdr=104
11
12
# write power managment register
13
i2c.writeto(i2cAdr, bytearray([107, 0]))
14
15
for chipRegister in range(0,118):
16
17
    ar = i2c.readfrom_mem(i2cAdr, chipRegister, 1)
18
    for b in ar:
19
        print("register %2d : 0x%02x"%(chipRegister,b)),

Output:
1
>>> %Run -c $EDITOR_CONTENT
2
register  0 : 0x81
3
register  1 : 0x01
4
register  2 : 0x7e
5
register  3 : 0xb0
6
register  4 : 0xd2
7
register  5 : 0xce
8
register  6 : 0xf6
9
register  7 : 0xc0
10
...

von Uwe D. (monkye)


Bewertung
0 lesenswert
nicht lesenswert
chris_ schrieb:
> Hier habe ich mal den Funktionsgenerator
> https://github.com/romilly/pico-code/blob/master/docs/fungen.md
> ausprobiert.
> Das Signal auf dem Oszi ist nicht ganz so schön wie im Beispiel.
> Interessanter wäre eventuell eine DDS.

Hier noch eine ähnliche Lösung: 
https://www.instructables.com/Arbitrary-Wave-Generator-With-the-Raspberry-Pi-Pic/

von Rainer V. (a_zip)


Bewertung
0 lesenswert
nicht lesenswert
chris_ schrieb:
> Der Python Syntax scheint stark bezüglich der Versionsn 2.x und 3.x sehr
> unterschiedlich zu sein.

Ist nicht vornehmlich die Syntax und man kann es kaum übersehen, da 
(fast) alle Tutorien streng zwischen den Versionen unterscheiden. 
Trotzdem gibt es für den Anfänger viele unerwartete Fallstricke. So habe 
ich z.B. nicht geschnallt, dass die Vers. 3.6 kein Upgrade von 3.4 ist! 
Da hilft nur hartnäckiges Forschen. Ich wünsche viel Erfolg.
Gruß Rainer

von chris_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Uwe D. (monkye)
28.02.2021 13:30
>Hier noch eine ähnliche Lösung:
>https://www.instructables.com/Arbitrary-Wave-Generator-With-the-Raspberry-Pi-Pic/

Nicht schlecht ... 125MSPs mit Python.
OK, es wird nur die DMA zusammmen mit der PIO konfiguriert, aber das 
Projekt ist ziemlich gut gemacht.
Wahrscheinlich lässt sich der Transistortester mit dem RP2040 auf eine 
ganz neue Stufe stellen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.