12. Lektion: Standardmodule von Microphyton

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

Micropython Module Doku

[Doku der Micropython Module]

Python standard libraries und micro-libraries

Quelle: https://docs.micropython.org/en/latest/library/index.html übersetzt von DeepL.com.

Die folgenden Standard-Python-Bibliotheken wurden "mikroifiziert", um sich in die Philosophie von MicroPython einzufügen. Sie bieten die Kernfunktionalität dieses Moduls und sind als Ersatz für die Standard-Python-Bibliothek gedacht.

   array - Arrays mit numerischen Daten
   asyncio - asynchroner E/A-Scheduler
   binascii - Binär/ASCII-Konvertierungen
   builtins - eingebaute Funktionen und Ausnahmen
   cmath - Mathematische Funktionen für komplexe Zahlen
   collections - Sammlungs- und Containertypen
   errno - System-Fehlercodes
   gc - Steuerung des Garbage Collectors
   gzip - Komprimierung und Dekomprimierung mit gzip
   hashlib - Hash-Algorithmen
   heapq - Heap-Warteschlangen-Algorithmus
   io - Ein-/Ausgabeströme
   json - JSON-Kodierung und -Dekodierung
   math - Mathematische Funktionen
   os - grundlegende "Betriebssystem"-Dienste
   random - Erzeugen von Zufallszahlen
   re - einfache reguläre Ausdrücke
   select - Warten auf Ereignisse in einer Reihe von Streams
   socket - Socket-Modul
   ssl - SSL/TLS-Modul
   struct - Packen und Entpacken primitiver Datentypen
   sys - Systemspezifische Funktionen
   time - zeitbezogene Funktionen
   zlib - zlib-Komprimierung und Dekomprimierung
   _thread - Multithreading-Unterstützung

MicroPython-spezifische libraries

Die für die MicroPython-Implementierung spezifischen Funktionen sind in den folgenden Bibliotheken verfügbar.

   bluetooth - Bluetooth auf niedriger Ebene
   btree - einfache BTree-Datenbank
   cryptolib - kryptographische Chiffren
   deflate - Deflate-Komprimierung und Dekomprimierung
   framebuf - Manipulation von Bildpuffern
   machine - Funktionen im Zusammenhang mit der Hardware
   micropython - Zugriff auf und Steuerung von MicroPhyton-Interna
   neopixel - Steuerung von WS2812 / NeoPixel LEDs
   network - Netzwerk-Konfiguration
   uctypes - Zugriff auf Binärdaten in strukturierter Form

Port-spezifische libraries

In einigen Fällen haben die folgenden port-/plattenspezifischen Bibliotheken Funktionen oder Klassen, die denen der Maschinenbibliothek ähneln. Wenn dies der Fall ist, stellt der Eintrag in der portspezifischen Bibliothek die Hardwarefunktionalität zur Verfügung, die nur für diese Plattform gilt.

Um portierbaren Code zu schreiben, verwenden Sie Funktionen und Klassen aus dem Maschinenmodul. Um auf plattformspezifische Hardware zuzugreifen, verwenden Sie die entsprechende Bibliothek, z.B. pyb im Falle des Pyboards.

Spezielle Bibliotheken für ESP8266 und ESP32

Die folgenden Bibliotheken sind spezifisch für den ESP8266 und ESP32.

   esp — functions related to the ESP8266 and ESP32
       Functions
   esp32 — functionality specific to the ESP32
       Functions
       Flash partitions
       RMT
       Ultra-Low-Power co-processor
       Constants
       Non-Volatile Storage
   espnow — support for the ESP-NOW wireless protocol

Bibliotheken speziell für den RP2040

Die folgenden Bibliotheken sind spezifisch für den RP2040, wie er im Raspberry Pi Pico verwendet wird.

   rp2 — functionality specific to the RP2040
       PIO related functions
       PIO assembly language instructions
       Classes

M5Stack spezifische Bibliotheken

>>> help('modules')
IoTcloud/AWS      libs/ethernet/wiznet5k_mqtt         stamps/_timer_power                 units/_fader
IoTcloud/Ali      libs/ethernet/wiznet5k_ntp          sys               units/_fader8
IoTcloud/Azure    libs/ethernet/wiznet5k_socket       uarray            units/_fan
IoTcloud/Tencent  libs/ethernet/wiznet5k_wsgiserver   ubinascii         units/_finger
IoTcloud/__init__ libs/image_plus   ubluetooth        units/_flash_light
IoTcloud/blynk    libs/imu          ucollections      units/_gesture
MediaTrans/Mqtt_Printer             libs/ir/ir_rx/__init__              ucryptolib        units/_glass_oled
MediaTrans/TimerCam                 libs/ir/ir_rx/nec uctypes           units/_gps
MediaTrans/__init__                 libs/ir/ir_rx/print_error           uerrno            units/_grove2grove
MicroWebSrv/__init__                libs/ir/ir_tx/__init__              uhashlib          units/_hall
MicroWebSrv/microWebSocket          libs/ir/ir_tx/nec uhashlib          units/_hbridge
MicroWebSrv/microWebSrv             libs/label_plus   uheapq            units/_heart
MicroWebSrv/microWebTemplate        libs/lorabus      uiflow            units/_imu6886
ThirdParty/toio/__init__            libs/m5_espnow    uio               units/_ir
ThirdParty/toio/ble_const           libs/m5mqtt       ujson             units/_joystick
ThirdParty/toio/toio_message        libs/mcp2515/__init__               umqtt/__init__    units/_joystick_led
__main__          libs/mcp2515/can_frame              umqtt/robust      units/_key
_boot             libs/mcp2515/mcp2515_param          umqtt/simple      units/_kmeter
_flow             libs/mcp2515/mcp2515_spi            unit              units/_kmeter_iso
_onewire          libs/microcoapy/__init__            unitcam           units/_laserrx
_thread           libs/microcoapy/coap_macros         units/VFunction/__init__            units/_lasertx
_uasyncio         libs/microcoapy/coap_option         units/VFunction/_apriltag_code      units/_lcd
_webrepl          libs/microcoapy/coap_packet         units/VFunction/_bar_code           units/_light
apa106            libs/microcoapy/coap_reader         units/VFunction/_color_track        units/_limit
base/CAN          libs/microcoapy/coap_writer         units/VFunction/_dm_code            units/_makey
base/DTU_CAT1     libs/microcoapy/microcoapy          units/VFunction/_face_detect        units/_microphone_AD
base/DTU_LoRaWAN  libs/micropyGPS   units/VFunction/_jpeg_transfer      units/_microphone_I2S
base/DTU_NB       libs/mlx90640     units/VFunction/_line_tracker       units/_mqtt_eth
base/GPS          libs/modbus/__init__                units/VFunction/_motion             units/_ncir
base/HDriver      libs/modbus/master/__init__         units/VFunction/_qr_code            units/_ncir2
base/Motion       libs/modbus/master/uModBusConst     units/VFunction/_tag_reader         units/_neco
base/PoE          libs/modbus/master/uModBusFunctions units/VFunction/_target_track       units/_oled
base/QRCode       libs/modbus/master/uModBusSerial    units/VFunction/_v2_code_detector   units/_op
base/Socket_Kit   libs/modbus/master/uModBusTCP       units/VFunction/_v2_color_tracker   units/_pahub
base/Speaker      libs/modbus/slave/__init__          units/VFunction/_v2_face_detector   units/_pbhub
base/Stepmotor    libs/modbus/slave/exceptions        units/VFunction/_v2_face_recognition                  units/_pir
base/TF_Card      libs/modbus/slave/functions         units/VFunction/_v2_lane_line_tracker                 units/_relay
base/__init__     libs/modbus/slave/redundancy_check  units/VFunction/_v2_motion_tracker  units/_relay2
base64            libs/modbus/slave/route             units/VFunction/_v2_object_recognition                units/_relay4
ble/ble_advertising                 libs/modbus/slave/rtu               units/VFunction/_v2_online_classifier                 units/_rf433rx
btree             libs/modbus/slave/utils             units/VFunction/_v2_shape_detector  units/_rf433tx
builtins          libs/mpu6050      units/VFunction/_v2_target_tracker  units/_rfid
cmath             libs/mstate       units/_ID         units/_rgb
collections/__init__                libs/numbers      units/_IR_NEC     units/_rgb_multi
collections/defaultdict             libs/nvs          units/_ISORS485   units/_rotary_encoder
collections/deque libs/paj7620u2    units/_LoRaWAN    units/_scales
comx/LoRaWAN      libs/pca9685      units/_NBIoT      units/_servo
comx/__init__     libs/pid          units/_RS485      units/_sonic_io
comx/cat1         libs/qmp6988      units/_RTC8563    units/_ssr
cvbs              libs/servo        units/_ac_measure units/_tcp_eth
deviceCfg         libs/sh1107       units/_ac_ssr     units/_thermal
display           libs/sh200q       units/_accel      units/_thermal_cam2
dmx512            libs/sht30        units/_acsocket   units/_tof
esp               libs/simcom/__init__                units/_adc        units/_tracker
esp32             libs/simcom/common                  units/_ain_420ma  units/_tube_pressure
espnow            libs/simcom/gps   units/_ameter     units/_tvoc
flashbdev         libs/simcom/gsm   units/_angle      units/_uhf_rfid
flow/__init__     libs/simcom/lte   units/_angle8     units/_ultrasonic
flow/adaptation   libs/simcom/nb    units/_atom_motion                  units/_unitcam
flow/ezdata       libs/speak        units/_bps        units/_uwb
flow/ezdata_queue libs/timeSchedule units/_bps_qmp    units/_v_function
flow/flowDeinit   libs/time_ex      units/_button     units/_vibrator
flow/m5cloud      libs/urequests    units/_buzzer     units/_vmeter
flow/m5ucloud     libs/vl53l0x      units/_can        units/_watering
flow/protocol     m5stack           units/_cardKB     units/_weight
framebuf          m5uart            units/_catch      units/_zigbee
gc                m5ui              units/_catm       uos
hardware/__init__ machine           units/_catm_gnss  urandom
hardware/button   math              units/_co2_scd40  ure
hardware/microphone                 max30100          units/_co2_scd41  urllib/parse
hmac              menu/__init__     units/_color      urllib/urequest
i2c_bus           menu/cloud        units/_dac        uselect
i2stools          menu/wifi         units/_dc_ssr     usocket
inisetup          micropython       units/_dds        ussl
libs/__init__     modules/_catm_iot units/_digi_clock ustruct
libs/bmm150       modules/_nb_iot   units/_dlight     utils
libs/bmp280       neopixel          units/_dual_button                  utime
libs/config       network           units/_earth      utimeq
libs/dht12        ntptime           units/_encoder8   uwebsocket
libs/easyIO       ntptime           units/_encoder_led                  uzlib
libs/echo         rf433             units/_env        warnings
libs/emoji        simpleOTA         units/_env2       wav/chunk
libs/ethernet/__init__              smartconfig       units/_env3       wav/wav_player
libs/ethernet/wiznet5k              stamp             units/_ext_encoder                  wav/wave
libs/ethernet/wiznet5k_dhcp         stamps/_catm      units/_ext_io     wifiCfg
libs/ethernet/wiznet5k_dns          stamps/_ext_io    units/_ext_io2    wifiWebCfg
Plus any modules on the filesystem

Vorhandene Module anzeigen

help('modules')

Inhalt von Modulen anzeigen

dir(module_name)

Interessante Module

Hier ist nur eine Auswahl der Funktionen aufgeführt.

gc

Garbage collector = Müllsammler. Nicht mehr benötigter Speicherplatz von Daten oder Objekten wird wieder freigegeben.

gc.collect()
Führt eine Aufräumaktion im Speicher durch.
gc.mem_free()
Gibt den freien Speicherplatz zurück.
Übung
  1. Lasse Dir den freien Speicher anzeigen.
>>> from gc import mem_free
>>> mem_free()
    176672
>>> 
  1. Importiere einige Module
  2. Lasse Dir den freien Speicher anzeigen.
  3. lösche ein Modul
  4. Lasse Dir den freien Speicher anzeigen.
  5. Lasse eine Garbage Collection ausführen
  6. Lasse Dir den freien Speicher anzeigen.
  7. Lösche die restlichen Module
  8. Lasse Dir den freien Speicher anzeigen.
  9. Lasse eine Garbage Collection ausführen
  10. Lasse Dir den freien Speicher anzeigen.

math

math.pi
Die Zahl PI.

Ausserdem sind diverse Winkelfunktionen, Logarithmen und weitere mathematische Funktionen insbesondere für Float-Zahlen enthalten.

os

Enthält grundlegende Betriebssystem Funktionen.
Insbesondere für das Filesystem. Diese Funktionen werden wir später näher betrachten, wenn wir uns das Filesystem ansehen.

Es gibt aber auch andere interessante Funktionen:

os.urandom(n)
Gibt ein Bytes-Objekt mit n Zufallsbytes zurück. Wann immer möglich, wird es durch den Hardware-Zufallszahlengenerator erzeugt.
os.uname()
Gibt ein Tupel (möglicherweise ein benanntes Tupel) zurück, das Informationen über den zugrunde liegenden Rechner und/oder sein Betriebssystem enthält. Das Tupel besteht aus fünf Feldern in der folgenden Reihenfolge, wobei jedes Feld eine Zeichenkette ist:
  • sysname - der Name des zugrunde liegenden Systems
  • nodename - der Netzwerkname (kann mit sysname identisch sein)
  • release - die Version des zugrunde liegenden Systems
  • version - die MicroPhyton-Version und das Erstellungsdatum
  • machine - eine Kennung für die zugrunde liegende Hardware (z.B. Board, CPU)
Übung
  • Ruft os.uname() auf und seht Euch an, welche Informationen zurückgegeben werden.

random

random.randint(a, b)
Gibt eine zufällige ganze Zahl im Bereich [a, b] zurück.
Übung
  • Erzeugt einige Zufallszahlen aus unterschiedlichen Bereichen

sys

sys.implementation
Objekt mit Informationen über die aktuelle Phyton-Implementierung. Für MicroPhyton hat es folgende Attribute:
  • name - Zeichenkette "microphyton"
  • Version - Tupel (major, minor, micro), z.B. (1, 7, 0)
  • _machine - Zeichenkette zur Beschreibung des zugrunde liegenden Rechners
  • _mpy - unterstützte Version des mpy-Dateiformats (optionales Attribut)
    Dieses Objekt ist der empfohlene Weg, MicroPhyton von anderen Phyton-Implementierungen zu unterscheiden (beachten Sie, dass es in den minimalsten Ports möglicherweise noch nicht existiert).
sys.maxsize
Maximaler Wert, den ein nativer Integer-Typ auf der aktuellen Plattform halten kann, oder maximaler Wert, der von einem MicroPhyton-Integer-Typ dargestellt werden kann, wenn er kleiner als der maximale Wert der Plattform ist (das ist der Fall für MicroPhyton-Ports ohne long int-Unterstützung).
sys.modules
Wörterbuch der geladenen Module. Auf einigen Ports enthält es möglicherweise keine eingebauten Module.
sys.path
Eine veränderbare Liste von Verzeichnissen für die Suche nach importierten Modulen.
sys.platform
Die Plattform, auf der MicroPython läuft. Bei OS/RTOS-Ports ist dies normalerweise eine Kennung des Betriebssystems, z.B. "linux". Bei Baremetal-Ports ist es die Kennung eines Boards, z.B. "pyboard" für das ursprüngliche MicroPython-Referenzboard. Er kann also verwendet werden, um ein Board von einem anderen zu unterscheiden. Wenn Sie prüfen wollen, ob Ihr Programm auf MicroPython (oder einer anderen Python-Implementierung) läuft, verwenden Sie stattdessen sys.implementation.
sys.version
Python-Sprachversion, der diese Implementierung entspricht, in Form einer Zeichenkette.
sys.version_info
Python-Sprachversion, mit der diese Implementierung konform ist, als Tupel von Ints.
Übung
  • Testet die verschiedenen Konstanten/Variablen von sys aus.
  • Beachte, das es keine Funktionen sind. Deshalb keine Klammern.

time

Enthält Funktionen die etwas mit Zeit zu tun haben.

sleep(t)
Wartet t Sekunden.
sleep_ms(t)
Wartet t ms.
sleep_us(t)
Wartet t µs.
ticks_ms()
Zählt Ticks in ms.
ticks_us()
Zählt Ticks in µs.
ticks_cpu()
Zählt mit dem CPU-Takt.

Weiter Funktionen werden wir erkunden wenn wir uns mit Datum und Uhrzeit beschäftigen.

Übung
  • Schreibt ein Programm, dass
    • "Hallo, ich leg mich schlafen." ausgibt, dann
    • 2 Sekunden wartet und dann
    • "Hallo, ausgeschlafen!" ausgibt.

machine

Hier sind Funktionen für die periphere Hardware unseres Microcontrollers.
Deshalb ist dieses Modul für jeden Microcontroller anders.

  • Hier z.B. der Inhalt vom Raspberry Pi Pico W:
>>> dir(machine)
['__class__', '__name__', '__dict__', 'ADC', 'I2C', 'I2S', 'PWM', 'PWRON_RESET', 
'Pin', 'RTC', 'SPI', 'Signal', 'SoftI2C', 'SoftSPI', 'Timer', 'UART', 'WDT', 'WDT_RESET', 
'bitstream', 'bootloader', 'deepsleep', 'dht_readinto', 'disable_irq', 'enable_irq', 'freq', 
'idle', 'lightsleep', 'mem16', 'mem32', 'mem8', 'reset', 'reset_cause', 'soft_reset', 
'time_pulse_us', 'unique_id']
>>> 

Bereiche (aus der Micropython Dokumentation):

  • Funktionen für direkten Speicherzugriff.
  • Reset bezogene Funktionen.
  • Interruptbezogene Funktionen.
  • Leistungsbezogene Funktionen.
  • Klassen zur Steuerung der peripheren Hardware:
    • class Pin – control I/O pins
    • class Signal – control and sense external I/O devices
    • class ADC – analog to digital conversion
    • class ADCBlock – control ADC peripherals
    • class PWM – pulse width modulation
    • class UART – duplex serial communication bus
    • class SPI – a Serial Peripheral Interface bus protocol (controller side)
    • class I2C – a two-wire serial protocol
    • class I2S – Inter-IC Sound bus protocol
    • class RTC – real time clock
    • class Timer – control hardware timers
    • class WDT – watchdog timer
    • class SD – secure digital memory card (cc3200 port only)
    • class SDCard – secure digital memory card

Einige dieser Bereiche werden wir uns im 2. Teil näher ansehen.

neopixel

Dieses Modul enthält Funktionen zur Steuerung von WD2812 LED's.
Näheres im 2. Teil.

network

Hier sind die Funktionen enthalten, die wir benötigen um den Pico W mit dem Wlan zu verbinden. Auch diesen Bereich werden wir uns im 2. Teil näher ansehen.

Navigation

Zurück zu Micropython Kurs 2023 - Teil 1
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite

Diese Seite wurde zuletzt am 27. September 2023 um 14:59 Uhr geändert. Diese Seite wurde bisher 2.066 mal abgerufen.