micrOSDevToolKit 2.1.5__py3-none-any.whl → 2.26.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- env/driver_cp210x/.DS_Store +0 -0
- env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +17 -1
- micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +191 -151
- micrOS/source/Auth.py +37 -0
- micrOS/source/Common.py +376 -102
- micrOS/source/Config.py +55 -25
- micrOS/source/Debug.py +54 -193
- micrOS/source/Espnow.py +404 -0
- micrOS/source/Files.py +207 -0
- micrOS/source/Hooks.py +88 -16
- micrOS/source/InterConnect.py +130 -46
- micrOS/source/Interrupts.py +8 -8
- micrOS/source/Logger.py +131 -0
- micrOS/source/Network.py +41 -21
- micrOS/source/Notify.py +74 -198
- micrOS/source/Pacman.py +326 -0
- micrOS/source/Scheduler.py +18 -55
- micrOS/source/Server.py +84 -217
- micrOS/source/Shell.py +103 -93
- micrOS/source/Tasks.py +239 -173
- micrOS/source/Time.py +21 -22
- micrOS/source/Types.py +89 -54
- micrOS/source/Web.py +485 -0
- micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- micrOS/source/helpers.py +132 -0
- micrOS/source/micrOS.py +25 -21
- micrOS/source/micrOSloader.py +14 -23
- micrOS/source/microIO.py +94 -57
- toolkit/simulator_lib/LP_darwin.py → micrOS/source/modules/IO_esp32.py +22 -11
- micrOS/source/{IO_esp32c3.py → modules/IO_esp32c3.py} +6 -1
- micrOS/source/modules/IO_esp32c6.py +38 -0
- micrOS/source/{IO_esp32s2.py → modules/IO_esp32s2.py} +6 -1
- micrOS/source/{IO_esp32s3.py → modules/IO_esp32s3.py} +43 -2
- micrOS/source/modules/IO_m5stamp.py +86 -0
- micrOS/source/{IO_qtpy.py → modules/IO_qtpy.py} +28 -18
- micrOS/source/{IO_tinypico.py → modules/IO_tinypico.py} +48 -3
- micrOS/source/modules/LM_L298N.py +161 -0
- {toolkit/workspace/precompiled → micrOS/source/modules}/LM_L9110_DCmotor.py +4 -4
- micrOS/source/{LM_OV2640.py → modules/LM_OV2640.py} +53 -42
- micrOS/source/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
- micrOS/source/{LM_aht10.py → modules/LM_aht10.py} +12 -4
- micrOS/source/{LM_bme280.py → modules/LM_bme280.py} +13 -25
- micrOS/source/{LM_buzzer.py → modules/LM_buzzer.py} +42 -40
- micrOS/source/{LM_cct.py → modules/LM_cct.py} +22 -27
- micrOS/source/modules/LM_cluster.py +255 -0
- micrOS/source/{LM_co2.py → modules/LM_co2.py} +13 -6
- micrOS/source/{LM_dht11.py → modules/LM_dht11.py} +13 -29
- micrOS/source/{LM_dht22.py → modules/LM_dht22.py} +13 -28
- micrOS/source/{LM_dimmer.py → modules/LM_dimmer.py} +19 -16
- micrOS/source/modules/LM_distance.py +135 -0
- micrOS/source/{LM_ds18.py → modules/LM_ds18.py} +12 -4
- micrOS/source/{LM_esp32.py → modules/LM_esp32.py} +16 -4
- micrOS/source/modules/LM_espnow.py +53 -0
- micrOS/source/modules/LM_fileserver.py +265 -0
- micrOS/source/{LM_gameOfLife.py → modules/LM_gameOfLife.py} +5 -5
- micrOS/source/{LM_genIO.py → modules/LM_genIO.py} +49 -35
- micrOS/source/modules/LM_haptic.py +111 -0
- micrOS/source/modules/LM_i2c.py +61 -0
- micrOS/source/{LM_i2s_mic.py → modules/LM_i2s_mic.py} +20 -23
- micrOS/source/{LM_ld2410.py → modules/LM_ld2410.py} +3 -3
- micrOS/source/{LM_light_sensor.py → modules/LM_light_sensor.py} +22 -26
- micrOS/source/modules/LM_mh_z19c.py +198 -0
- micrOS/source/modules/LM_neoeffects.py +284 -0
- micrOS/source/{LM_neopixel.py → modules/LM_neopixel.py} +26 -31
- micrOS/source/{LM_oled.py → modules/LM_oled.py} +28 -20
- micrOS/source/{LM_oled_sh1106.py → modules/LM_oled_sh1106.py} +28 -24
- micrOS/source/{LM_oled_ui.py → modules/LM_oled_ui.py} +132 -174
- micrOS/source/modules/LM_pacman.py +320 -0
- micrOS/source/{LM_presence.py → modules/LM_presence.py} +24 -36
- micrOS/source/modules/LM_qmi8658.py +204 -0
- micrOS/source/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
- micrOS/source/modules/LM_rest.py +81 -0
- micrOS/source/{LM_rgb.py → modules/LM_rgb.py} +25 -34
- micrOS/source/{LM_rgbcct.py → modules/LM_rgbcct.py} +5 -5
- micrOS/source/{LM_roboarm.py → modules/LM_roboarm.py} +37 -45
- micrOS/source/modules/LM_robustness.py +137 -0
- micrOS/source/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
- micrOS/source/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
- micrOS/source/{LM_servo.py → modules/LM_servo.py} +4 -4
- micrOS/source/modules/LM_sound_event.py +751 -0
- micrOS/source/{LM_stepper.py → modules/LM_stepper.py} +8 -8
- micrOS/source/{LM_switch.py → modules/LM_switch.py} +21 -18
- micrOS/source/{LM_system.py → modules/LM_system.py} +96 -59
- micrOS/source/modules/LM_tcs3472.py +187 -0
- micrOS/source/modules/LM_telegram.py +388 -0
- micrOS/source/modules/LM_trackball.py +287 -0
- micrOS/source/modules/LM_veml7700.py +159 -0
- micrOS/source/modules/LM_web.py +38 -0
- micrOS/source/urequests.py +204 -91
- {toolkit/workspace/precompiled → micrOS/source/web}/dashboard.html +9 -4
- micrOS/source/web/editor.js +440 -0
- micrOS/source/web/filesui.html +178 -0
- micrOS/source/web/filesui.js +338 -0
- micrOS/source/{index.html → web/index.html} +44 -2
- micrOS/source/web/uapi.js +103 -0
- micrOS/source/web/udashboard.js +129 -0
- micrOS/source/web/ustyle.css +55 -0
- micrOS/source/web/uwidgets.js +172 -0
- micrOS/source/web/uwidgets_pro.js +99 -0
- micrOS/utests/__init__.py +0 -0
- micrOS/utests/test_scheduler.py +435 -0
- {micrOSDevToolKit-2.1.5.data → microsdevtoolkit-2.26.1.data}/scripts/devToolKit.py +47 -4
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/METADATA +392 -279
- microsdevtoolkit-2.26.1.dist-info/RECORD +396 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/WHEEL +1 -1
- toolkit/DevEnvCompile.py +63 -33
- toolkit/DevEnvOTA.py +72 -22
- toolkit/DevEnvUSB.py +147 -77
- toolkit/Gateway.py +9 -9
- toolkit/LM_to_compile.dat +12 -4
- toolkit/MicrOSDevEnv.py +129 -51
- toolkit/WebRepl.py +73 -0
- toolkit/dashboard_apps/BackupRestore.py +171 -0
- toolkit/dashboard_apps/CCTDemo.py +12 -17
- toolkit/dashboard_apps/CCTTest.py +20 -24
- toolkit/dashboard_apps/CamStream.py +2 -6
- toolkit/dashboard_apps/CatGame.py +14 -16
- toolkit/dashboard_apps/Dimmer.py +11 -21
- toolkit/dashboard_apps/GetVersion.py +11 -19
- toolkit/dashboard_apps/MicrophoneTest.py +2 -7
- toolkit/dashboard_apps/NeoEffectsDemo.py +22 -35
- toolkit/dashboard_apps/NeopixelTest.py +20 -25
- toolkit/dashboard_apps/PresenceTest.py +2 -8
- toolkit/dashboard_apps/QMI8685_GYRO.py +68 -0
- toolkit/dashboard_apps/RGBTest.py +20 -24
- toolkit/dashboard_apps/RoboArm.py +24 -32
- toolkit/dashboard_apps/SED_test.py +10 -14
- toolkit/dashboard_apps/SensorsTest.py +61 -0
- toolkit/dashboard_apps/SystemTest.py +219 -117
- toolkit/dashboard_apps/Template_app.py +12 -19
- toolkit/dashboard_apps/_app_base.py +34 -0
- toolkit/dashboard_apps/_gyro_visualizer.py +78 -0
- toolkit/dashboard_apps/uLightDemo.py +15 -24
- toolkit/index.html +6 -5
- toolkit/lib/LocalMachine.py +6 -1
- toolkit/lib/MicrosFiles.py +46 -0
- toolkit/lib/Repository.py +64 -0
- toolkit/lib/TerminalColors.py +4 -0
- toolkit/lib/macroScript.py +371 -0
- toolkit/lib/micrOSClient.py +124 -51
- toolkit/lib/micrOSClientHistory.py +156 -0
- toolkit/lib/pip_package_installer.py +31 -4
- toolkit/micrOSdashboard.py +16 -21
- toolkit/micrOSlint.py +28 -10
- toolkit/simulator_lib/.DS_Store +0 -0
- micrOS/source/IO_esp32.py → toolkit/simulator_lib/IO_darwin.py +3 -0
- toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- toolkit/simulator_lib/aioespnow.py +28 -0
- toolkit/simulator_lib/camera.py +84 -0
- toolkit/simulator_lib/dht.py +1 -1
- toolkit/simulator_lib/framebuf.py +49 -1
- toolkit/simulator_lib/machine.py +32 -2
- toolkit/simulator_lib/micropython.py +3 -3
- toolkit/simulator_lib/mip.py +165 -0
- toolkit/simulator_lib/neopixel.py +3 -2
- toolkit/simulator_lib/network.py +2 -1
- toolkit/simulator_lib/node_config.json +2 -3
- toolkit/simulator_lib/ntptime.py +1 -1
- toolkit/simulator_lib/{sim_console.py → sim_common.py} +2 -3
- toolkit/simulator_lib/simgc.py +6 -2
- toolkit/simulator_lib/simulator.py +138 -46
- toolkit/simulator_lib/uasyncio.py +34 -3
- toolkit/simulator_lib/uos.py +147 -0
- toolkit/simulator_lib/urandom.py +4 -0
- toolkit/simulator_lib/usocket.py +5 -1
- toolkit/simulator_lib/view01.jpg +0 -0
- toolkit/simulator_lib/view02.jpg +0 -0
- toolkit/socketClient.py +43 -23
- toolkit/user_data/webhooks/generic.py +1 -1
- toolkit/user_data/webhooks/macro.py +44 -0
- toolkit/user_data/webhooks/template.macro +20 -0
- toolkit/user_data/webhooks/template.py +1 -1
- toolkit/workspace/precompiled/Auth.mpy +0 -0
- toolkit/workspace/precompiled/Common.mpy +0 -0
- toolkit/workspace/precompiled/Config.mpy +0 -0
- toolkit/workspace/precompiled/Debug.mpy +0 -0
- toolkit/workspace/precompiled/Espnow.mpy +0 -0
- toolkit/workspace/precompiled/Files.mpy +0 -0
- toolkit/workspace/precompiled/Hooks.mpy +0 -0
- toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- toolkit/workspace/precompiled/Logger.mpy +0 -0
- toolkit/workspace/precompiled/Network.mpy +0 -0
- toolkit/workspace/precompiled/Notify.mpy +0 -0
- toolkit/workspace/precompiled/Pacman.mpy +0 -0
- toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- toolkit/workspace/precompiled/Server.mpy +0 -0
- toolkit/workspace/precompiled/Shell.mpy +0 -0
- toolkit/workspace/precompiled/Tasks.mpy +0 -0
- toolkit/workspace/precompiled/Time.mpy +0 -0
- toolkit/workspace/precompiled/Types.mpy +0 -0
- toolkit/workspace/precompiled/Web.mpy +0 -0
- toolkit/workspace/precompiled/_mpy.version +1 -1
- toolkit/workspace/precompiled/config/_git.keep +0 -0
- toolkit/workspace/precompiled/helpers.mpy +0 -0
- toolkit/workspace/precompiled/micrOS.mpy +0 -0
- toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- toolkit/workspace/precompiled/microIO.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
- {micrOS/source → toolkit/workspace/precompiled/modules}/LM_L9110_DCmotor.py +4 -4
- toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
- toolkit/workspace/precompiled/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
- toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- toolkit/workspace/precompiled/{LM_buzzer.mpy → modules/LM_buzzer.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- toolkit/workspace/precompiled/{LM_esp32.py → modules/LM_esp32.py} +16 -4
- toolkit/workspace/precompiled/modules/LM_espnow.py +53 -0
- toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- toolkit/workspace/precompiled/{LM_gameOfLife.mpy → modules/LM_gameOfLife.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_i2c.py +61 -0
- toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- toolkit/workspace/precompiled/{LM_ld2410.mpy → modules/LM_ld2410.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_mh_z19c.py +198 -0
- toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_qmi8658.py +204 -0
- toolkit/workspace/precompiled/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
- toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- toolkit/workspace/precompiled/{LM_rgbcct.mpy → modules/LM_rgbcct.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_robustness.py +137 -0
- toolkit/workspace/precompiled/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
- toolkit/workspace/precompiled/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
- toolkit/workspace/precompiled/{LM_servo.mpy → modules/LM_servo.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
- toolkit/workspace/precompiled/{LM_stepper.mpy → modules/LM_stepper.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_tcs3472.py +187 -0
- toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/{LM_tinyrgb.mpy → modules/LM_tinyrgb.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- toolkit/workspace/precompiled/urequests.mpy +0 -0
- {micrOS/source → toolkit/workspace/precompiled/web}/dashboard.html +9 -4
- toolkit/workspace/precompiled/web/editor.js +440 -0
- toolkit/workspace/precompiled/web/filesui.html +178 -0
- toolkit/workspace/precompiled/web/filesui.js +338 -0
- toolkit/workspace/precompiled/{index.html → web/index.html} +44 -2
- toolkit/workspace/precompiled/web/uapi.js +103 -0
- toolkit/workspace/precompiled/web/udashboard.js +129 -0
- toolkit/workspace/precompiled/web/ustyle.css +55 -0
- toolkit/workspace/precompiled/web/uwidgets.js +172 -0
- toolkit/workspace/precompiled/web/uwidgets_pro.js +99 -0
- env/driver_cp210x/CH34XSER_MAC/CH34X_DRV_INSTALL_INSTRUCTIONS.pdf +0 -0
- env/driver_cp210x/CH34XSER_MAC/CH34xVCPDriver.pkg +0 -0
- micrOS/micropython/esp32-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/esp32c3-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32c3-GENERIC-20240222-v1.22.2.bin +0 -0
- micrOS/micropython/esp32s2-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
- micrOS/micropython/esp32s3-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/rpi-pico-w-20231005-v1.21.0.uf2 +0 -0
- micrOS/micropython/tinypico-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/tinypico-usbc-UM-20240105-v1.22.1.bin +0 -0
- micrOS/source/LM_L298N_DCmotor.py +0 -86
- micrOS/source/LM_catgame.py +0 -74
- micrOS/source/LM_dashboard_be.py +0 -37
- micrOS/source/LM_demo.py +0 -85
- micrOS/source/LM_distance.py +0 -88
- micrOS/source/LM_i2c.py +0 -44
- micrOS/source/LM_intercon.py +0 -57
- micrOS/source/LM_keychain.py +0 -318
- micrOS/source/LM_lmpacman.py +0 -126
- micrOS/source/LM_neoeffects.py +0 -327
- micrOS/source/LM_pet_feeder.py +0 -76
- micrOS/source/LM_ph_sensor.py +0 -51
- micrOS/source/LM_rest.py +0 -40
- micrOS/source/LM_robustness.py +0 -73
- micrOS/source/LM_telegram.py +0 -96
- micrOS/source/reset.py +0 -11
- micrOS/source/uapi.js +0 -76
- micrOS/source/udashboard.js +0 -137
- micrOS/source/ustyle.css +0 -28
- micrOS/source/uwidgets.js +0 -179
- micrOSDevToolKit-2.1.5.dist-info/RECORD +0 -337
- toolkit/dashboard_apps/AirQualityBME280.py +0 -36
- toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -36
- toolkit/lib/file_extensions.py +0 -16
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-38.pyc +0 -0
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-39.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
- toolkit/workspace/precompiled/IO_esp32.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32c3.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32s2.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
- toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
- toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
- toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
- toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
- toolkit/workspace/precompiled/LM_aht10.mpy +0 -0
- toolkit/workspace/precompiled/LM_bme280.mpy +0 -0
- toolkit/workspace/precompiled/LM_catgame.py +0 -74
- toolkit/workspace/precompiled/LM_cct.mpy +0 -0
- toolkit/workspace/precompiled/LM_co2.mpy +0 -0
- toolkit/workspace/precompiled/LM_dashboard_be.py +0 -37
- toolkit/workspace/precompiled/LM_demo.py +0 -85
- toolkit/workspace/precompiled/LM_dht11.mpy +0 -0
- toolkit/workspace/precompiled/LM_dht22.mpy +0 -0
- toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
- toolkit/workspace/precompiled/LM_distance.py +0 -88
- toolkit/workspace/precompiled/LM_ds18.mpy +0 -0
- toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
- toolkit/workspace/precompiled/LM_i2c.py +0 -44
- toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
- toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
- toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
- toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
- toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
- toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_sh1106.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/LM_pet_feeder.py +0 -76
- toolkit/workspace/precompiled/LM_ph_sensor.py +0 -51
- toolkit/workspace/precompiled/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/LM_rest.mpy +0 -0
- toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
- toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
- toolkit/workspace/precompiled/LM_robustness.py +0 -73
- toolkit/workspace/precompiled/LM_switch.mpy +0 -0
- toolkit/workspace/precompiled/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/reset.mpy +0 -0
- toolkit/workspace/precompiled/uapi.js +0 -76
- toolkit/workspace/precompiled/udashboard.js +0 -137
- toolkit/workspace/precompiled/ustyle.css +0 -28
- toolkit/workspace/precompiled/uwidgets.js +0 -179
- /toolkit/user_data/node_config_archive/.include → /micrOS/source/config/_git.keep +0 -0
- /micrOS/source/{IO_rp2.py → modules/IO_rp2.py} +0 -0
- /micrOS/source/{LM_tinyrgb.py → modules/LM_tinyrgb.py} +0 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info/licenses}/LICENSE +0 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from machine import Pin, PWM
|
|
2
|
-
from microIO import
|
|
2
|
+
from microIO import bind_pin, PinMap
|
|
3
3
|
from Common import SmartADC
|
|
4
4
|
from random import randint
|
|
5
5
|
|
|
@@ -10,22 +10,24 @@ from random import randint
|
|
|
10
10
|
|
|
11
11
|
class IObjects:
|
|
12
12
|
PIN_OBJS = {}
|
|
13
|
+
DENY_TAG_INPUT = True
|
|
13
14
|
|
|
14
15
|
@staticmethod
|
|
15
|
-
def
|
|
16
|
-
|
|
17
|
-
return False # Obj not exists
|
|
18
|
-
elif IObjects.PIN_OBJS.get(pin)[0] != tag:
|
|
19
|
-
return False # Obj not exists
|
|
20
|
-
return True # Obj exists
|
|
16
|
+
def store_obj(pin:int, obj:object) -> None:
|
|
17
|
+
IObjects.PIN_OBJS[pin] = obj
|
|
21
18
|
|
|
22
19
|
@staticmethod
|
|
23
|
-
def
|
|
24
|
-
IObjects.PIN_OBJS[pin]
|
|
20
|
+
def get_obj(pin:int) -> object:
|
|
21
|
+
return IObjects.PIN_OBJS[pin]
|
|
25
22
|
|
|
26
23
|
@staticmethod
|
|
27
|
-
def
|
|
28
|
-
return IObjects.PIN_OBJS
|
|
24
|
+
def is_unassigned(pin_number):
|
|
25
|
+
return IObjects.PIN_OBJS.get(pin_number, None) is None
|
|
26
|
+
|
|
27
|
+
@staticmethod
|
|
28
|
+
def protect_builtins(pin_num, tag):
|
|
29
|
+
if pin_num is None and IObjects.DENY_TAG_INPUT:
|
|
30
|
+
raise Exception(f"pin must be integer not {type(tag)}: {tag}")
|
|
29
31
|
|
|
30
32
|
|
|
31
33
|
##################################
|
|
@@ -36,37 +38,39 @@ def __digital_out_init(pin):
|
|
|
36
38
|
"""
|
|
37
39
|
Init Digital output
|
|
38
40
|
"""
|
|
39
|
-
if
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"OUT{pin}", pin)
|
|
42
|
+
IObjects.protect_builtins(pin, pin_tag)
|
|
43
|
+
pin_num = bind_pin(pin_tag, pin)
|
|
44
|
+
if IObjects.is_unassigned(pin_number=pin_num):
|
|
45
|
+
pin_obj = Pin(pin_num, Pin.OUT)
|
|
46
|
+
IObjects.store_obj(pin_num, pin_obj)
|
|
47
|
+
return IObjects.get_obj(pin_num)
|
|
45
48
|
|
|
46
49
|
|
|
47
50
|
def __digital_in_init(pin):
|
|
48
51
|
"""
|
|
49
52
|
Init Digital output
|
|
50
53
|
"""
|
|
51
|
-
if
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"IN{pin}", pin)
|
|
55
|
+
IObjects.protect_builtins(pin, pin_tag)
|
|
56
|
+
pin_num = bind_pin(pin_tag, pin)
|
|
57
|
+
if IObjects.is_unassigned(pin_number=pin_num):
|
|
58
|
+
pin_obj = Pin(pin_num, Pin.IN, Pin.PULL_UP)
|
|
59
|
+
IObjects.store_obj(pin_num, pin_obj)
|
|
60
|
+
return IObjects.get_obj(pin_num)
|
|
57
61
|
|
|
58
62
|
|
|
59
63
|
def __pwm_init(pin, freq):
|
|
60
64
|
"""
|
|
61
65
|
Init PWM signal
|
|
62
66
|
"""
|
|
63
|
-
if
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if
|
|
67
|
-
pin_obj = PWM(Pin(
|
|
68
|
-
IObjects.
|
|
69
|
-
return IObjects.
|
|
67
|
+
pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"PWM{pin}", pin)
|
|
68
|
+
IObjects.protect_builtins(pin, pin_tag)
|
|
69
|
+
pin_num = bind_pin(pin_tag, pin)
|
|
70
|
+
if IObjects.is_unassigned(pin_number=pin_num):
|
|
71
|
+
pin_obj = PWM(Pin(pin_num), freq=freq)
|
|
72
|
+
IObjects.store_obj(pin_num, pin_obj)
|
|
73
|
+
return IObjects.get_obj(pin_num)
|
|
70
74
|
|
|
71
75
|
|
|
72
76
|
##################################
|
|
@@ -118,7 +122,10 @@ def get_adc(pin, key=None):
|
|
|
118
122
|
:param key: select adc parameter by key
|
|
119
123
|
:return dict: adc volt, percent, raw
|
|
120
124
|
"""
|
|
121
|
-
|
|
125
|
+
pin_tag, pin = (pin, None) if isinstance(pin, str) else (f"ADC{pin}", pin)
|
|
126
|
+
IObjects.protect_builtins(pin, pin_tag)
|
|
127
|
+
pin = bind_pin(pin_tag, pin)
|
|
128
|
+
data = SmartADC.get_instance(pin).get()
|
|
122
129
|
data["pin"] = pin
|
|
123
130
|
if key is None:
|
|
124
131
|
return data
|
|
@@ -134,11 +141,17 @@ def get_in(pin):
|
|
|
134
141
|
return {'pin': pin, 'state': __digital_in_init(pin).value()}
|
|
135
142
|
|
|
136
143
|
|
|
137
|
-
def
|
|
144
|
+
def load(allow_tags=False):
|
|
138
145
|
"""
|
|
139
|
-
|
|
146
|
+
Optional load function to set
|
|
147
|
+
tag input besides pin numbers.
|
|
148
|
+
[WARNING] allow_tag=True can be dangerous
|
|
149
|
+
- it can overwrite existing I/O based on
|
|
150
|
+
the provided tag
|
|
151
|
+
:param allow_tag: default False
|
|
140
152
|
"""
|
|
141
|
-
|
|
153
|
+
IObjects.DENY_TAG_INPUT = not allow_tags
|
|
154
|
+
return "[WARNING] allow_tag=True can be dangerous, use it consciously!!!" if allow_tags else "Loaded"
|
|
142
155
|
|
|
143
156
|
|
|
144
157
|
#######################
|
|
@@ -156,4 +169,5 @@ def help(widgets=False):
|
|
|
156
169
|
'set_random_pwm pin min_duty max_duty freq=20480)',\
|
|
157
170
|
'set_out pin=<int> state=<None/True/False>',\
|
|
158
171
|
'get_adc pin key=None',\
|
|
159
|
-
'get_in pin'
|
|
172
|
+
'get_in pin',\
|
|
173
|
+
'load allow_tags=False'
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
from microIO import bind_pin, pinmap_search
|
|
2
|
+
from Types import resolve
|
|
3
|
+
from machine import Pin, PWM
|
|
4
|
+
from utime import sleep_ms
|
|
5
|
+
|
|
6
|
+
class Haptic:
|
|
7
|
+
HAPTIC_OBJ = None
|
|
8
|
+
# Haptic vibration motor settings
|
|
9
|
+
LOW = 700
|
|
10
|
+
HIGH = 1000
|
|
11
|
+
STOP = 0
|
|
12
|
+
WAIT_TO_STOP_MS = 100
|
|
13
|
+
INTENSITY = "low"
|
|
14
|
+
|
|
15
|
+
def load(intensity=None):
|
|
16
|
+
"""
|
|
17
|
+
Init haptic engine
|
|
18
|
+
:param intensity: low / high / None haptic feedback intensity
|
|
19
|
+
"""
|
|
20
|
+
if Haptic.HAPTIC_OBJ is None:
|
|
21
|
+
dimmer_pin = Pin(bind_pin('haptic'))
|
|
22
|
+
Haptic.HAPTIC_OBJ = PWM(dimmer_pin, freq=20480)
|
|
23
|
+
Haptic.HAPTIC_OBJ.duty(0)
|
|
24
|
+
if intensity in ("high", "low"):
|
|
25
|
+
Haptic.INTENSITY = intensity
|
|
26
|
+
return Haptic.HAPTIC_OBJ
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def tap():
|
|
30
|
+
"""
|
|
31
|
+
Tap - buzz effect
|
|
32
|
+
"""
|
|
33
|
+
haptic = load()
|
|
34
|
+
if Haptic.INTENSITY == "low":
|
|
35
|
+
haptic.duty(Haptic.LOW)
|
|
36
|
+
sleep_ms(150)
|
|
37
|
+
haptic.duty(Haptic.STOP)
|
|
38
|
+
return "Tap: low"
|
|
39
|
+
if Haptic.INTENSITY == "high":
|
|
40
|
+
haptic.duty(Haptic.HIGH)
|
|
41
|
+
sleep_ms(150)
|
|
42
|
+
haptic.duty(Haptic.STOP)
|
|
43
|
+
return "Tap: high"
|
|
44
|
+
|
|
45
|
+
def gen(intensity=Haptic.LOW, wait=200, stop_wait=100, repeat=2):
|
|
46
|
+
"""
|
|
47
|
+
Generate effect
|
|
48
|
+
:param intensity: 600-1000
|
|
49
|
+
:param wait: wait after intensity was set [ms]
|
|
50
|
+
:param stop_wait: wait for top the motor [ms]
|
|
51
|
+
:param repeat: repeat cycle
|
|
52
|
+
"""
|
|
53
|
+
haptic = load()
|
|
54
|
+
for _ in range(repeat):
|
|
55
|
+
# Wait to run
|
|
56
|
+
haptic.duty(intensity)
|
|
57
|
+
sleep_ms(wait)
|
|
58
|
+
# Wait to stop
|
|
59
|
+
haptic.duty(0)
|
|
60
|
+
sleep_ms(stop_wait)
|
|
61
|
+
haptic.duty(0)
|
|
62
|
+
return f"finished: {(wait+stop_wait)*repeat}ms:{intensity}:{wait}:{repeat}"
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def effect1():
|
|
66
|
+
haptic = load()
|
|
67
|
+
haptic.duty(Haptic.HIGH)
|
|
68
|
+
sleep_ms(150)
|
|
69
|
+
haptic.duty(Haptic.LOW)
|
|
70
|
+
sleep_ms(100)
|
|
71
|
+
haptic.duty(Haptic.HIGH)
|
|
72
|
+
sleep_ms(100)
|
|
73
|
+
haptic.duty(Haptic.STOP)
|
|
74
|
+
return "finished: 350ms"
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def effect2():
|
|
78
|
+
haptic = load()
|
|
79
|
+
haptic.duty(Haptic.HIGH)
|
|
80
|
+
sleep_ms(150)
|
|
81
|
+
for i in range(Haptic.HIGH, 300, -100):
|
|
82
|
+
haptic.duty(i)
|
|
83
|
+
sleep_ms(50)
|
|
84
|
+
haptic.duty(Haptic.STOP)
|
|
85
|
+
return "finished: 400ms"
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def deinit():
|
|
89
|
+
Haptic.HAPTIC_OBJ.deinit()
|
|
90
|
+
Haptic.HAPTIC_OBJ = None
|
|
91
|
+
return "Deinited"
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def pinmap():
|
|
95
|
+
"""
|
|
96
|
+
[i] micrOS LM naming convention
|
|
97
|
+
Shows logical pins - pin number(s) used by this Load module
|
|
98
|
+
- info which pins to use for this application
|
|
99
|
+
:return dict: pin name (str) - pin value (int) pairs
|
|
100
|
+
"""
|
|
101
|
+
return pinmap_search('haptic')
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def help(widgets=False):
|
|
105
|
+
return resolve(("load intensity='low/high'/None",
|
|
106
|
+
"BUTTON tap",
|
|
107
|
+
"BUTTON effect1",
|
|
108
|
+
"BUTTON effect2",
|
|
109
|
+
"gen max=<600-1000> wait=200 stop_wait=100 repeat=2",
|
|
110
|
+
"deinit",
|
|
111
|
+
"pinmap"), widgets=widgets)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
from microIO import bind_pin, pinmap_search
|
|
2
|
+
|
|
3
|
+
__I2C = None
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def __init():
|
|
7
|
+
global __I2C
|
|
8
|
+
if __I2C is None:
|
|
9
|
+
from machine import Pin, I2C
|
|
10
|
+
__I2C = I2C(-1, Pin(bind_pin('i2c_scl')), Pin(bind_pin('i2c_sda')))
|
|
11
|
+
return __I2C
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def scan():
|
|
15
|
+
"""
|
|
16
|
+
I2C scan function - experimental
|
|
17
|
+
:return list: list of devices
|
|
18
|
+
"""
|
|
19
|
+
devices = [ hex(device) for device in __init().scan() ]
|
|
20
|
+
return devices
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def discover():
|
|
24
|
+
"""
|
|
25
|
+
Discover devices
|
|
26
|
+
"""
|
|
27
|
+
known_addresses = {hex(0x0A): "TRACKBALL", hex(0x3c): "OLED",
|
|
28
|
+
hex(0x76): "BME280", hex(0x10): 'VEML7700',
|
|
29
|
+
hex(0x6b): "QMI8658", hex(0x29): 'TCS3472'}
|
|
30
|
+
devices = scan()
|
|
31
|
+
output = {"unknown": []}
|
|
32
|
+
for k in devices:
|
|
33
|
+
if k in known_addresses:
|
|
34
|
+
device_name = known_addresses[k]
|
|
35
|
+
output[device_name] = k
|
|
36
|
+
else:
|
|
37
|
+
output["unknown"].append(k)
|
|
38
|
+
return output
|
|
39
|
+
|
|
40
|
+
#######################
|
|
41
|
+
# LM helper functions #
|
|
42
|
+
#######################
|
|
43
|
+
|
|
44
|
+
def pinmap():
|
|
45
|
+
"""
|
|
46
|
+
[i] micrOS LM naming convention
|
|
47
|
+
Shows logical pins - pin number(s) used by this Load module
|
|
48
|
+
- info which pins to use for this application
|
|
49
|
+
:return dict: pin name (str) - pin value (int) pairs
|
|
50
|
+
"""
|
|
51
|
+
return pinmap_search(['i2c_scl', 'i2c_sda'])
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def help(widgets=False):
|
|
55
|
+
"""
|
|
56
|
+
[BETA][i] micrOS LM naming convention - built-in help message
|
|
57
|
+
:return tuple:
|
|
58
|
+
(widgets=False) list of functions implemented by this application
|
|
59
|
+
(widgets=True) list of widget json for UI generation
|
|
60
|
+
"""
|
|
61
|
+
return 'scan', 'discover', 'pinmap'
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
from ustruct import unpack
|
|
2
|
-
from microIO import
|
|
3
|
-
from Common import micro_task,
|
|
2
|
+
from microIO import bind_pin, pinmap_search
|
|
3
|
+
from Common import micro_task, web_endpoint, manage_task
|
|
4
4
|
from machine import I2S, Pin
|
|
5
|
-
from Debug import console_write
|
|
6
|
-
from Tasks import TaskBase
|
|
7
5
|
import uasyncio as asyncio
|
|
8
6
|
|
|
9
7
|
|
|
10
8
|
class Data:
|
|
11
|
-
SCK_PIN = Pin(
|
|
12
|
-
WS_PIN = Pin(
|
|
13
|
-
SD_PIN = Pin(
|
|
9
|
+
SCK_PIN = Pin(bind_pin('i2s_sck')) # Serial clock
|
|
10
|
+
WS_PIN = Pin(bind_pin('i2s_ws')) # Word select
|
|
11
|
+
SD_PIN = Pin(bind_pin('i2s_sd')) # Serial data
|
|
14
12
|
I2S_CHANNEL = 1
|
|
15
13
|
FORMAT = I2S.STEREO
|
|
16
14
|
SAMPLING_RATE = 8000
|
|
@@ -26,7 +24,7 @@ class Data:
|
|
|
26
24
|
CONTROL_TASK_TAG = 'i2s._mic_control'
|
|
27
25
|
CONTROL_BUTTON_PIN = None
|
|
28
26
|
|
|
29
|
-
# To be initialized by
|
|
27
|
+
# To be initialized by load
|
|
30
28
|
I2S_AUDIO_IN = None
|
|
31
29
|
SREADER = None
|
|
32
30
|
|
|
@@ -51,18 +49,18 @@ async def __control_task(ms_period=50):
|
|
|
51
49
|
querying samples. Pushing the button again reinitializes the
|
|
52
50
|
microphone without having to restart dependent load modules.
|
|
53
51
|
"""
|
|
54
|
-
with micro_task(tag=Data.CONTROL_TASK_TAG):
|
|
52
|
+
with micro_task(tag=Data.CONTROL_TASK_TAG) as my_task:
|
|
55
53
|
while True:
|
|
56
54
|
if Data.CONTROL_BUTTON_PIN.value():
|
|
57
55
|
Data.MIC_ENABLED = not Data.MIC_ENABLED
|
|
58
|
-
|
|
56
|
+
print(f'Microphone enabled: {Data.MIC_ENABLED}')
|
|
59
57
|
|
|
60
58
|
if Data.MIC_ENABLED:
|
|
61
|
-
|
|
59
|
+
load()
|
|
62
60
|
|
|
63
61
|
# Debounce
|
|
64
|
-
await
|
|
65
|
-
await
|
|
62
|
+
await my_task.feed(sleep_ms=500)
|
|
63
|
+
await my_task.feed(sleep_ms=ms_period)
|
|
66
64
|
|
|
67
65
|
|
|
68
66
|
###########################
|
|
@@ -78,7 +76,7 @@ async def __task(ms_period):
|
|
|
78
76
|
recording_task.out = 'Capturing'
|
|
79
77
|
while Data.MIC_ENABLED:
|
|
80
78
|
await Data.SREADER.readinto(sample_mv)
|
|
81
|
-
await
|
|
79
|
+
await recording_task.feed(sleep_ms=ms_period)
|
|
82
80
|
recording_task.out = 'Finished'
|
|
83
81
|
|
|
84
82
|
except Exception as e:
|
|
@@ -96,8 +94,7 @@ def background_capture():
|
|
|
96
94
|
if not Data.MIC_ENABLED:
|
|
97
95
|
return "Microphone is disabled"
|
|
98
96
|
|
|
99
|
-
|
|
100
|
-
return "Starting" if state else "Already running"
|
|
97
|
+
return micro_task(tag=Data.TASK_TAG, task=__task(ms_period=1))
|
|
101
98
|
|
|
102
99
|
|
|
103
100
|
def get_from_buffer(capture_duration=Data.CAPTURE_DURATION,
|
|
@@ -139,8 +136,8 @@ async def _capture(capture_duration = Data.CAPTURE_DURATION,
|
|
|
139
136
|
if not Data.MIC_ENABLED:
|
|
140
137
|
return bytearray()
|
|
141
138
|
|
|
142
|
-
if
|
|
143
|
-
|
|
139
|
+
if manage_task(Data.TASK_TAG, 'isbusy'):
|
|
140
|
+
print('[i2s_mic] Warning: micro task is already running, capturing directly is not possible. '\
|
|
144
141
|
'Use get_from_buffer() instead.')
|
|
145
142
|
return bytearray()
|
|
146
143
|
|
|
@@ -247,7 +244,7 @@ def set_volume(shift_size=0):
|
|
|
247
244
|
Data.SHIFT_SIZE = shift_size
|
|
248
245
|
|
|
249
246
|
|
|
250
|
-
def
|
|
247
|
+
def load(buf_length=Data.BUF_LENGTH, sampling_rate=Data.SAMPLING_RATE,
|
|
251
248
|
capture_duration=Data.CAPTURE_DURATION, shift_size = Data.SHIFT_SIZE,
|
|
252
249
|
sample_size = Data.SAMPLE_SIZE, i2s_channel = Data.I2S_CHANNEL,
|
|
253
250
|
default_channel = Data.DEFAULT_CHANNEL, sound_format = Data.FORMAT,
|
|
@@ -278,7 +275,7 @@ def load_n_init(buf_length=Data.BUF_LENGTH, sampling_rate=Data.SAMPLING_RATE,
|
|
|
278
275
|
|
|
279
276
|
if control_button:
|
|
280
277
|
micro_task(tag=Data.CONTROL_TASK_TAG, task=__control_task())
|
|
281
|
-
Data.CONTROL_BUTTON_PIN = Pin(
|
|
278
|
+
Data.CONTROL_BUTTON_PIN = Pin(bind_pin(control_button), Pin.IN)
|
|
282
279
|
|
|
283
280
|
Data.BUF_LENGTH = buf_length
|
|
284
281
|
Data.SAMPLING_RATE = sampling_rate
|
|
@@ -296,7 +293,7 @@ def load_n_init(buf_length=Data.BUF_LENGTH, sampling_rate=Data.SAMPLING_RATE,
|
|
|
296
293
|
Data.SREADER = asyncio.StreamReader(Data.I2S_AUDIO_IN)
|
|
297
294
|
|
|
298
295
|
if enable_endpoint:
|
|
299
|
-
|
|
296
|
+
web_endpoint('mic/stream', _record_clb)
|
|
300
297
|
|
|
301
298
|
if Data.RECORD_TASK_ENABLED:
|
|
302
299
|
background_capture()
|
|
@@ -315,7 +312,7 @@ def pinmap():
|
|
|
315
312
|
- info which pins to use for this application
|
|
316
313
|
:return dict: pin name (str) - pin value (int) pairs
|
|
317
314
|
"""
|
|
318
|
-
return
|
|
315
|
+
return pinmap_search(['i2s_sck', 'i2s_ws', 'i2s_sd'])
|
|
319
316
|
|
|
320
317
|
|
|
321
318
|
def help(widgets=False):
|
|
@@ -325,7 +322,7 @@ def help(widgets=False):
|
|
|
325
322
|
(widgets=False) list of functions implemented by this application
|
|
326
323
|
(widgets=True) list of widget json for UI generation
|
|
327
324
|
"""
|
|
328
|
-
return '
|
|
325
|
+
return 'load buf_length=16000 '\
|
|
329
326
|
'sampling_rate=8000 capture_duration=0.25 shift_size=6 '\
|
|
330
327
|
'sample_size=16 i2s_channel=1 default_channel=\'right\' '\
|
|
331
328
|
'sound_format=I2S.STEREO downsampling=1 control_button='' enable_endpoint=True',\
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
from machine import Pin, UART
|
|
19
19
|
import utime
|
|
20
|
-
from microIO import
|
|
20
|
+
from microIO import bind_pin, pinmap_search
|
|
21
21
|
|
|
22
|
-
ser = UART(1, baudrate = 256000, tx=Pin(
|
|
22
|
+
ser = UART(1, baudrate = 256000, tx=Pin(bind_pin('tx')), rx=Pin(bind_pin('rx')), timeout = 1)
|
|
23
23
|
HEADER = bytes([0xfd, 0xfc, 0xfb, 0xfa])
|
|
24
24
|
TERMINATOR = bytes([0x04, 0x03, 0x02, 0x01])
|
|
25
25
|
NULLDATA = bytes([])
|
|
@@ -190,7 +190,7 @@ def pinmap():
|
|
|
190
190
|
- info which pins to use for this application
|
|
191
191
|
:return dict: pin name (str) - pin value (int) pairs
|
|
192
192
|
"""
|
|
193
|
-
return
|
|
193
|
+
return pinmap_search(['tx', 'rx'])
|
|
194
194
|
|
|
195
195
|
|
|
196
196
|
def help(widgets=False):
|
|
@@ -5,14 +5,9 @@ ADC.ATTN_2_5DB — the full range voltage: 1.5V
|
|
|
5
5
|
ADC.ATTN_6DB — the full range voltage: 2.0V
|
|
6
6
|
ADC.ATTN_11DB — the full range voltage: 3.3V
|
|
7
7
|
"""
|
|
8
|
-
import
|
|
9
|
-
from Common import SmartADC, micro_task
|
|
8
|
+
from Common import SmartADC, micro_task, exec_cmd
|
|
10
9
|
from Types import resolve
|
|
11
|
-
|
|
12
|
-
import LM_intercon as InterCon
|
|
13
|
-
except:
|
|
14
|
-
InterCon = None
|
|
15
|
-
from microIO import physical_pin, pinmap_dump
|
|
10
|
+
from microIO import bind_pin, pinmap_search
|
|
16
11
|
|
|
17
12
|
|
|
18
13
|
ADC = None
|
|
@@ -24,10 +19,18 @@ def __init_tempt6000():
|
|
|
24
19
|
"""
|
|
25
20
|
global ADC
|
|
26
21
|
if ADC is None:
|
|
27
|
-
ADC = SmartADC(
|
|
22
|
+
ADC = SmartADC(bind_pin('temp6000'))
|
|
28
23
|
return ADC
|
|
29
24
|
|
|
30
25
|
|
|
26
|
+
def load():
|
|
27
|
+
"""
|
|
28
|
+
Initialize TEMPT6000 light sensor module
|
|
29
|
+
"""
|
|
30
|
+
__init_tempt6000()
|
|
31
|
+
return "TEMPT6000 light sensor module - loaded"
|
|
32
|
+
|
|
33
|
+
|
|
31
34
|
def intensity():
|
|
32
35
|
"""
|
|
33
36
|
Measure light intensity in %
|
|
@@ -69,21 +72,17 @@ async def _task(on, off, threshold, tolerance=2, check_ms=5000):
|
|
|
69
72
|
# TURN ON
|
|
70
73
|
if percent <= threshold:
|
|
71
74
|
if on != last_ev:
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
InterCon.send_cmd(host, cmd)
|
|
76
|
-
my_task.out = f"{percent}% <= threshold: {threshold}% - ON"
|
|
75
|
+
host = on[0]
|
|
76
|
+
state, _ = exec_cmd(on[1:] + [f">>{host}"], jsonify=True)
|
|
77
|
+
my_task.out = f"{percent}% <= threshold: {threshold}% - ON [{'OK' if state else 'NOK'}]"
|
|
77
78
|
last_ev = on
|
|
78
79
|
elif percent > threshold+tolerance: # +tolerance to avoid "on/off/on/off" on threshold limit
|
|
79
80
|
if off != last_ev:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
InterCon.send_cmd(host, cmd)
|
|
84
|
-
my_task.out = f"{percent}% > threshold: {threshold+tolerance}% - OFF"
|
|
81
|
+
host = off[0]
|
|
82
|
+
state, _ = exec_cmd(off[1:] + [f">>{host}"], jsonify=True)
|
|
83
|
+
my_task.out = f"{percent}% > threshold: {threshold+tolerance}% - OFF [{'OK' if state else 'NOK'}]"
|
|
85
84
|
last_ev = off
|
|
86
|
-
await
|
|
85
|
+
await my_task.feed(sleep_ms=check_ms) # Sample every <check_ms> sec
|
|
87
86
|
|
|
88
87
|
|
|
89
88
|
def subscribe_intercon(on, off, threshold=4, tolerance=2, sample_sec=60):
|
|
@@ -97,11 +96,8 @@ def subscribe_intercon(on, off, threshold=4, tolerance=2, sample_sec=60):
|
|
|
97
96
|
"""
|
|
98
97
|
# Start play - servo XY in async task
|
|
99
98
|
# [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
|
|
100
|
-
|
|
99
|
+
return micro_task(tag="light_sensor.intercon", task=_task(on, off, threshold, tolerance=tolerance,
|
|
101
100
|
check_ms=sample_sec*1000))
|
|
102
|
-
if state:
|
|
103
|
-
return 'Light sensor remote trigger starts'
|
|
104
|
-
return 'Light sensor remote trigger - already running'
|
|
105
101
|
|
|
106
102
|
|
|
107
103
|
#######################
|
|
@@ -115,7 +111,7 @@ def pinmap():
|
|
|
115
111
|
- info which pins to use for this application
|
|
116
112
|
:return dict: pin name (str) - pin value (int) pairs
|
|
117
113
|
"""
|
|
118
|
-
return
|
|
114
|
+
return pinmap_search('temp6000')
|
|
119
115
|
|
|
120
116
|
|
|
121
117
|
def help(widgets=False):
|
|
@@ -126,6 +122,6 @@ def help(widgets=False):
|
|
|
126
122
|
(widgets=True) list of widget json for UI generation
|
|
127
123
|
"""
|
|
128
124
|
return resolve(('TEXTBOX intensity', 'TEXTBOX illuminance',
|
|
129
|
-
'subscribe_intercon on off threshold=1 tolerance=2 sample_sec=60'
|
|
130
|
-
'pinmap', '
|
|
125
|
+
'subscribe_intercon on off threshold=1 tolerance=2 sample_sec=60',
|
|
126
|
+
'pinmap', 'load', '[Info] sensor:TEMP600'), widgets=widgets)
|
|
131
127
|
|