12. Lektion: Standardmodule von Microphyton: Difference between revisions
| Line 324: | Line 324: | ||
Hier sind die Funktionen enthalten, die wir benötigen um den Pico W mit dem Wlan zu verbinden. | 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. | Auch diesen Bereich werden wir uns im 2. Teil näher ansehen. | ||
== Navigation == | == Navigation == | ||
Latest revision as of 15:59, 27 September 2023
Micropython Module Doku
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
- 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
- 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.
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