12. Lektion: Standardmodule von Microphyton
Micropython Module Doku[Bearbeiten | Quelltext bearbeiten]
Python standard libraries und micro-libraries[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
>>> 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[Bearbeiten | Quelltext bearbeiten]
help('modules')
Inhalt von Modulen anzeigen[Bearbeiten | Quelltext bearbeiten]
dir(module_name)
Interessante Module[Bearbeiten | Quelltext bearbeiten]
Hier ist nur eine Auswahl der Funktionen aufgeführt.
gc[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
- Lasse Dir den freien Speicher anzeigen.
>>> from gc import mem_free >>> mem_free() 176672 >>>
- Importiere einige Module
- Lasse Dir den freien Speicher anzeigen.
- lösche ein Modul
- Lasse Dir den freien Speicher anzeigen.
- Lasse eine Garbage Collection ausführen
- Lasse Dir den freien Speicher anzeigen.
- Lösche die restlichen Module
- Lasse Dir den freien Speicher anzeigen.
- Lasse eine Garbage Collection ausführen
- Lasse Dir den freien Speicher anzeigen.
math[Bearbeiten | Quelltext bearbeiten]
- math.pi
- Die Zahl PI.
Ausserdem sind diverse Winkelfunktionen, Logarithmen und weitere mathematische Funktionen insbesondere für Float-Zahlen enthalten.
os[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
- Ruft os.uname() auf und seht Euch an, welche Informationen zurückgegeben werden.
random[Bearbeiten | Quelltext bearbeiten]
- random.randint(a, b)
- Gibt eine zufällige ganze Zahl im Bereich [a, b] zurück.
Übung[Bearbeiten | Quelltext bearbeiten]
- Erzeugt einige Zufallszahlen aus unterschiedlichen Bereichen
sys[Bearbeiten | Quelltext bearbeiten]
- 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[Bearbeiten | Quelltext bearbeiten]
- Testet die verschiedenen Konstanten/Variablen von sys aus.
- Beachte, das es keine Funktionen sind. Deshalb keine Klammern.
time[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
- Schreibt ein Programm, dass
- "Hallo, ich leg mich schlafen." ausgibt, dann
- 2 Sekunden wartet und dann
- "Hallo, ausgeschlafen!" ausgibt.
machine[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
Dieses Modul enthält Funktionen zur Steuerung von WD2812 LED's.
Näheres im 2. Teil.
network[Bearbeiten | Quelltext bearbeiten]
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.
[Bearbeiten | Quelltext bearbeiten]
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