ספריות OpenMV MicroPython¶
אזהרה
תקציר חשוב של חלק זה
MicroPython מספקת מודולים מובנים המשקפים את הפונקציונליות של ספריית התקן של Python (למשל
os,time), וכן מודולים ייחודיים ל-MicroPython (למשלbluetooth,machine).רוב מודולי ספריית התקן של Python מממשים תת-קבוצה של הפונקציונליות של מודול Python המקביל, ובמקרים מעטים מספקים הרחבות ייחודיות ל-MicroPython (למשל
array,os)בשל מגבלות משאבים או מגבלות אחרות, ייתכן שגרסאות port או קושחה מסוימות לא יכללו את כל הפונקציונליות המתועדת כאן.
כדי לאפשר הרחבה, ניתן להרחיב מקוד Python חלק מהמודולים המובנים, באמצעות טעינתו למערכת הקבצים של ההתקן.
פרק זה מתאר מודולים (ספריות פונקציות ומחלקות) המובנים בתוך MicroPython. תיעוד זה שואף באופן כללי לתאר את כל המודולים והפונקציות/מחלקות המיושמים בפרויקט MicroPython. עם זאת, MicroPython ניתנת להגדרה גמישה במידה רבה, וכל port ללוח/מערכת משובצת מסוימת עשוי לכלול רק תת-קבוצה של ספריות MicroPython הזמינות.
מתוך מחשבה זו, שימו לב כי חלק מהפונקציות/מחלקות במודול (או אפילו המודול כולו) המתוארות בתיעוד זה עשויות להיות לא זמינות בבנייה מסוימת של MicroPython על מערכת מסוימת. המקום הטוב ביותר למצוא מידע כללי על הזמינות/אי-הזמינות של תכונה מסוימת הוא הסעיף ”General Information“ המכיל מידע הנוגע ל-MicroPython port ספציפי.
בחלק מה-ports ניתן לגלות את הספריות הזמינות המובנות שניתן לייבא על ידי הזנת הפקודה הבאה ב-REPL
help('modules')
מעבר לספריות המובנות המתוארות בתיעוד זה, ניתן למצוא מודולים רבים נוספים מספריית התקן של Python, וכן הרחבות נוספות של MicroPython לה, ב-micropython-lib.
ספריות התקן ומיקרו-ספריות של Python¶
ספריות התקן הבאות של Python עברו ”מיקרו-יזציה“ כדי להשתלב בפילוסופיה של MicroPython. הן מספקות את הפונקציונליות המרכזית של אותו מודול ומיועדות לשמש כתחליף ישיר לספריית התקן של Python.
array— מערכים של נתונים מספרייםasyncio— מתזמן קלט/פלט אסינכרוניbinascii— המרות בינארי/ASCIIbuiltins— פונקציות וחריגות מובנותcmath— פונקציות מתמטיות למספרים מרוכביםcollections— טיפוסי אוספים ומכליםerrno— קודי שגיאת מערכתgc— שליטה באוסף האשפהgzip— דחיסה ופריסה של gziphashlib— אלגוריתמי גיבובheapq— אלגוריתם תור ערימהio— זרמי קלט/פלטjson— קידוד ופענוח JSONmarshal— סריאליזציה של אובייקטים ב-Pythonmath— פונקציות מתמטיותos— שירותי ”מערכת הפעלה“ בסיסייםplatform— גישה לנתוני הזיהוי של הפלטפורמה הבסיסיתrandom— יצירת מספרים אקראייםre— ביטויים רגולריים פשוטיםselect— המתנה לאירועים על קבוצת זרמיםsocket— מודול socketssl— מודול SSL/TLSstring.templatelib— תמיכה ב-Template Stringstruct— אריזה ופריקה של סוגי נתונים פרימיטיבייםsys— פונקציות ספציפיות למערכתtime— פונקציות הקשורות לזמןtypes— שמות עבור טיפוסים מובניםzlib— דחיסה ופריסה של zlib
ספריות OpenMV Cam¶
הסעיפים הבאים מתארים את הספריות הזמינות בכל לוח הנתמך על ידי OpenMV, כולל הן את המודולים המובנים הייחודיים ל-MicroPython והן את ההרחבות של OpenMV עצמה.
מודולים נפוצים¶
מובנים בקושחה בכל לוח מצלמה של OpenMV.
bluetooth— Bluetooth ברמה נמוכהcryptolib— צופני הצפנהdeflate— דחיסה ופענוח deflateframebuf— ניהול חוצץ פריימים (frame buffer)machine— פונקציות הקשורות לחומרהmicropython— גישה ושליטה ברכיבים הפנימיים של MicroPythonnetwork— הגדרת רשתopenamp— מספק תמיכה סטנדרטית ב-Asymmetric Multiprocessing (AMP)uctypes— גישה לנתונים בינאריים בצורה מובניתvfs— בקרת מערכת קבצים וירטואליתcsi— חיישני מצלמהsensor— חיישן מצלמהimage— ראייה ממוחשבתgif— הקלטת gifmjpeg— הקלטת mjpegaudio— מודול אודיוdisplay— מנהל התקן תצוגהfir— מנהל התקן לחיישן תרמי (fir == far infrared)tof— מנהל התקן חיישן time-of-flightimu— חיישן imuomv— מידע על OpenMV Camcrc— חישוב CRCml— למידת מכונהulab— ספריית מערכים תואמת-numpyprotocol— ערוצי פרוטוקול OpenMVlogging— רישום אירועיםsenml— שפת סימון לחיישנים (Sensor Markup Language)
מסייעי Python מוקפאים המסופקים ברוב לוחות המצלמה של OpenMV (מנהלי התקן, רישות וכלי עזר):
מסייעי רישות (דורשים ממשק רשת תקין):
מסגרת אינטרנט¶
מודולי מסגרת שרת אינטרנט. ראו את הסעיפים לפי לוח בהמשך לגבי אילו לוחות כוללים כל אחד מהם.
מודולים ספציפיים ל-port¶
מודולים הקשורים למשפחת MCU מסוימת. ראו את הסעיפים לפי לוח בהמשך לגבי אילו לוחות כוללים כל אחד מהם.
מנהלי התקן חומרה¶
מנהלי התקן עבור חיישנים, צגים והתקנים היקפיים אחרים המסופקים בלוח אחד או יותר הנתמכים על ידי OpenMV. ראו את הסעיפים לפי לוח בהמשך לגבי אילו לוחות כוללים כל אחד מהם.
dht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן לחיישן טמפרטורה DS18x20neopixel— שליטה בנוריות WS2812 / NeoPixellsm6dsox— LSM6DSOX IMU בעל 6 ציריםbmi270— BMI270 יחידת מדידה אינרציאלית 6 ציריםbmm150— BMM150 מגנטומטר 3 ציריםlsm9ds1— LSM9DS1 IMU בעל 9 ציריםhts221— חיישן לחות/טמפרטורה HTS221lps22h— חיישן לחץ LPS22HB/HHhs3003— חיישן לחות/טמפרטורה HS3003espflash— צורב קושחת ROM bootloader של ESP32imu— מסייע IMU עבור Arduino Nano 33 BLE Sensessd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612pca9674a— מנהל התקן מרחיב I2Ctfp410— בקר DVI/HDMIft5x06— מנהל התקן למסך מגעgt911— בקר מגע קיבולי בעל 5 נקודות GT911lora— מנהל התקן מודם LoRaapds9960— מנהל התקן לחיישן קרבה, מחוות וצבעromfs— כלי עזר ל-ROMFS
זמינות לפי לוח¶
הרשימות שלהלן מציגות אילו מודולים ספציפיים ל-port ומנהלי התקן מסופקים בכל לוח. כל המודולים שב-Common, ב-מסייעי Python מוקפאים וב-מסייעי רישות (לעיל) זמינים בכל לוח מצלמה אלא אם צוין אחרת.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) עם NPU על-שבבי בתדר 1 GHz המדורג ל-600 GOPS INT8. משלב את ה-NPU עם חיישן הצמצם הגלובלי PAG7936 בעל 1 MP.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32ssd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612jwt— JSON Web Tokensmicrodot— מסגרת HTTP מינימלית
OpenMV AE3
SoC דו-ליבתי Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) בתוספת Cortex-M55 @ 160 MHz (HE), עם שני NPU על-שבביים (NPU HP בתדר 400 MHz / 400 GOPS + NPU HE בתדר 160 MHz / 46 GOPS).
alif— פונקציות SoC של Alif Ensembleromfs— כלי עזר של ROMFSpca9674a— מנהל התקן מרחיב I2C מסוג PCA9674Ajwt— JSON Web Tokensmicrodot— מסגרת HTTP מינימלית
OpenMV Cam RT1062
לוח ראייה ממוחשבת חסכוני בחשמל המבוסס על NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). משלב רישות USB-C במהירות גבוהה, Wi-Fi / Bluetooth ו-Ethernet 10/100.
mimxrt— פונקציונליות ייחודית ל-NXP i.MX RTdht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixelssd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612pca9674a— מנהל התקן מרחיב I2C מסוג PCA9674Ajwt— JSON Web Tokensmicrodot— מסגרת HTTP מינימלית
OpenMV Pure Thermal
לוח דימות תרמי מערכתי מלא המבוסס על STM32H743 (Cortex-M7 @ 480 MHz) עם 64 MB של SDRAM חיצוני, 32 MB של זיכרון פלאש (flash) מסוג QSPI, מקודד JPEG חומרתי ופלט DVI/HDMI.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32tfp410— מסדר DVI/HDMIft5x06— מנהל התקן מסך מגע קיבוליdht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixelssd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) עם 32 MB של SDRAM חיצוני, 32 MB של זיכרון פלאש (flash) מסוג QSPI, מקודד JPEG חומרתי ומודול המצלמה OV5640 בעל 5MP.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32dht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixelssd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) עם 1 MB של SRAM פנימי, 2 MB של זיכרון פלאש (flash) פנימי ומקודד JPEG חומרתי.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32dht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixelssd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) עם 512 KB של SRAM פנימי ו-2 MB של זיכרון פלאש (flash) פנימי. מצורף עם חיישן OV7725.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32dht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixelssd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) עם 256 KB של SRAM פנימי ו-1 MB של זיכרון פלאש (flash) פנימי. מצורף עם חיישן OV7725.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32dht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixelssd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612
Arduino Nicla Vision
לוח ראייה ממוחשבת בגודל 22.86 × 22.86 מ“מ המבוסס על SoC דו-ליבתי STM32H747AII6: Cortex-M7 @ 400 MHz בתוספת Cortex-M4 @ 200 MHz.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32lsm6dsox— IMU בעל 6 צירים מסוג LSM6DSOXdht— חיישני טמפרטורה/לחות DHT11 ו-DHT22ds18x20— מנהל התקן חיישן טמפרטורה DS18x20onewire— פרוטוקול אפיק 1-Wireneopixel— בקרת נוריות WS2812 / NeoPixel
Arduino Portenta H7
לוח פיתוח תעשייתי בגודל 66 × 25 מ“מ המבוסס על SoC דו-ליבתי STM32H747XI: Cortex-M7 @ 400 MHz בתוספת Cortex-M4 @ 200 MHz.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32dht— חיישני טמפרטורה/לחות DHT11 ו-DHT22ds18x20— מנהל התקן חיישן טמפרטורה DS18x20onewire— פרוטוקול אפיק 1-Wireneopixel— בקרת נוריות WS2812 / NeoPixellora— מנהל התקן מודם LoRassd1306— מנהל התקן OLEDtb6612— מנהל התקן מנוע TB6612
Arduino Giga R1 WiFi
לוח בגודל 101 × 53 מ“מ בפורמט Mega המבוסס על SoC דו-ליבתי STM32H747XI: Cortex-M7 @ 480 MHz בתוספת Cortex-M4 @ 240 MHz, עם מסך מגע מובנה ברזולוציה 800x480.
pyb— פונקציות הקשורות ללוחstm— פונקציונליות ייחודית למיקרו-בקרי STM32dht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireneopixel— בקרת נוריות WS2812 / NeoPixelgt911— בקר מגע קיבולי בעל 5 נקודות מסוג GT911ft5x06— מנהל התקן מסך מגע קיבולי
Arduino Nano RP2040 Connect
לוח בפורמט Nano המבוסס על RP2040 עם מודול ה-Wi-Fi/Bluetooth מסוג U-blox NINA-W102. אינו נתמך עוד באופן פעיל; גרסת הקושחה האחרונה של OpenMV עבור לוח זה נשמרת לשימוש ארכיוני.
rp2— מסייעי PIO / DMA / זיכרון פלאש (flash) ייחודיים ל-RP2040espflash— כלי לצריבת קושחת מאתחל (bootloader) ROM של ESP32lsm6dsox— IMU בעל 6 צירים מסוג LSM6DSOXdht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
לוח בפורמט Nano המבוסס על Nordic nRF52840 עם חבילת חיישני Arduino המובנית. אינו נתמך עוד באופן פעיל; גרסת הקושחה האחרונה של OpenMV עבור לוח זה נשמרת לשימוש ארכיוני.
ubluepy— API של התקן היקפי ומרכז Bluetooth LE על Nordic SoftDevicebmi270— IMU בעל 6 צירים מסוג BMI270bmm150— מגנטומטר בעל 3 צירים מסוג BMM150lsm9ds1— IMU בעל 9 צירים מסוג LSM9DS1hts221— חיישן לחות/טמפרטורה HTS221lps22h— חיישן לחץ LPS22HB/HHhs3003— חיישן לחות/טמפרטורה HS3003apds9960— מנהל התקן חיישן קרבה, מחוות וצבעdht— חיישני טמפרטורה/לחות DHT11 ו-DHT22onewire— פרוטוקול אפיק 1-Wireds18x20— מנהל התקן חיישן טמפרטורה DS18x20neopixel— בקרת נוריות WS2812 / NeoPixel
הרחבת ספריות מובנות מ-Python¶
ניתן להרחיב תת-קבוצה של המודולים המובנים באמצעות קוד Python על ידי אספקת מודול בעל אותו שם במערכת הקבצים. הרחבה זו חלה על מודולי ספריית התקן הבאים של Python המובנים בקושחה: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, וכן המודול machine הייחודי ל-MicroPython. כל שאר המודולים המובנים אינם ניתנים להרחבה ממערכת הקבצים.
הדבר מאפשר למשתמש לספק מימוש מורחב של ספרייה מובנית (אולי כדי לספק תאימות CPython נוספת או פונקציונליות חסרה). שיטה זו נמצאת בשימוש נרחב ב-micropython-lib, ראו ניהול חבילות למידע נוסף. מודול מערכת הקבצים יבצע בדרך כלל ייבוא כללי (wildcard) של המודול המובנה כדי לרשת ממנו את כל המשתנים הגלובליים (מחלקות, פונקציות ומשתנים).
ב-MicroPython גרסה v1.21.0 ומעלה, כדי למנוע ממודול מערכת הקבצים לייבא את עצמו, הוא יכול לכפות ייבוא של המודול המובנה על ידי ניקוי זמני של sys.path במהלך הייבוא. לדוגמה, כדי להרחיב את המודול time מ-Python, קובץ בשם time.py במערכת הקבצים יבצע את הפעולות הבאות:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
התוצאה היא ש-time.py מכיל את כל המשתנים הגלובליים של המודול המובנה time, אך מוסיף את extra_method.
בגרסאות מוקדמות יותר של MicroPython, ניתן לכפות ייבוא של מודול מובנה על ידי הוספת u לתחילת שמו. לדוגמה, import utime במקום import time. לדוגמה, time.py במערכת הקבצים יכול להיראות כך:
from utime import *
def extra_method():
pass
שיטה זו עדיין נתמכת, אך שיטת ה-sys.path המתוארת לעיל מועדפת כעת מכיוון שהקידומת u תוסר משמות המודולים המובנים בגרסה עתידית של MicroPython.
למעט כאשר נדרש באופן ספציפי לכפות שימוש במודול המובנה, קוד צריך תמיד להשתמש ב- import module ולא ב- import umodule.