Commit Graph

623 Commits

Author SHA1 Message Date
Thomas Farstrike 7367dac6c1 Merge pull request #45 from pavelmachek/m_3_imu
imu: Allow access to iio on Linux
2026-02-21 07:53:31 +01:00
Jens Diemer 84d3f83966 Odroid-Go: Unmute+Mute buzzer before/after Playback (#52)
On ODROID-GO the buzzer makes noises when it is on and nothing is being played. Don't know if this
is common on ESP32 devices...
2026-02-21 07:44:45 +01:00
Richard d3e009966d Fix EEXIST errors in zipfile.py during extraction (#54)
When extracting zip archives, os.mkdir() could raise [Errno 17] EEXIST
in two places:

1. makedirs() - A directory might already exist between the path_exists
   check and the os.mkdir() call, or be created by a prior extraction step.

2. _extract_member() - makedirs() may have already created a directory
   when building parent paths for a file entry, and then a separate
   directory entry for the same path triggers os.mkdir() again.

Wrap both os.mkdir() calls in try/except OSError to handle this
gracefully.

Co-authored-by: Richard Taylor <RT@MacBookPro.lan>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 07:43:39 +01:00
Richard a1478080b1 Clean up existing install before extracting .mpk (#55)
install_mpk() would fail with EEXIST if the destination folder already
existed from a previous (possibly partial) install, or if a dangling
symlink occupied the path (e.g. a dev symlink whose target was removed).

Before extracting, now remove the destination if it is:
- A real directory (via shutil.rmtree)
- A regular file (via os.remove)
- A symlink, including broken ones (via os.remove as a fallback)

This enables clean reinstalls, updates, and recovery from failed
installs.

Co-authored-by: Richard Taylor <RT@MacBookPro.lan>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 07:42:04 +01:00
Jens Diemer ef30c80e49 Add MPU6886 driver (tested with M5Stack FIRE) (#56)
Will fix https://github.com/MicroPythonOS/MicroPythonOS/issues/44
2026-02-21 07:41:06 +01:00
Thomas Farstrike 965df2545c fri3d_2026: fix audio 2026-02-20 16:09:38 +01:00
Thomas Farstrike d00a4ca468 qemu: simplify for now 2026-02-20 15:42:59 +01:00
Thomas Farstrike 13891fe363 Add lilygo_t_display_s3 (unfinished) 2026-02-20 15:39:09 +01:00
Thomas Farstrike 7a2cccb51e fri3d_2026: disable sound by default for debugging 2026-02-20 15:38:04 +01:00
Thomas Farstrike 9e52f8649f fri3d_2024: adapt to new sdcard API 2026-02-20 15:37:20 +01:00
Thomas Farstrike 403cd8d4cd Add qemu board 2026-02-18 18:12:42 +01:00
Thomas Farstrike 0b2368464b WifiService: add functions for IP address 2026-02-18 18:12:11 +01:00
Thomas Farstrike 8c087a988f DownloadManager: make certificates explicit 2026-02-18 18:11:23 +01:00
Thomas Farstrike 8a54db91ef Add lilygo_t_watch_s3_plus (untested) 2026-02-18 15:46:28 +01:00
Thomas Farstrike d64afd2cc5 Fix unit test 2026-02-17 21:29:38 +01:00
Jens Diemer e35c47ccdd Update board/m5stack_fire.py (#43)
Init Buzzer and play a intro on startup.

* Cleanup imports.
* Use const()
* Hard reset if `machine.SPI.Bus()` init not possible
2026-02-16 21:45:56 +01:00
Jens Diemer 0423e09522 Updates for ODROID-GO (#40)
Setup the "Buzzer" and play intro and outro ;) Don't know if "I2S audio" is possible.

Battery "settings": I tested to run ODROID-GO as long as it's possible. The min. raw ADC value on
ODROID-GO i have seen is 210. So update the calculation.

Fix the boot by moving ODROID-GO below `fri3d_2024` because the device will hard crash on
`fail_save_i2c(sda=9, scl=18)` like:
```
MicroPythonOS 0.8.1 running lib/mpos/main.py
matouch_esp32_s3_spi_ips_2_8_with_camera_ov3660 ?
Try to I2C initialized on sda=39 scl=38
OK
Attempt to write a single byte to I2C bus address 0x14...
No device at this address: [Errno 116] ETIMEDOUT
Attempt to write a single byte to I2C bus address 0x5d...
No device at this address: [Errno 116] ETIMEDOUT
waveshare_esp32_s3_touch_lcd_2 ?
Try to I2C initialized on sda=48 scl=47
Failed: invalid pin
m5stack_fire ?
Try to I2C initialized on sda=21 scl=22
OK
Attempt to write a single byte to I2C bus address 0x68...
No device at this address: [Errno 19] ENODEV
fri3d_2024 ?
Try to I2C initialized on sda=9 scl=18
OK

A fatal error occurred. The crash dump printed below may be used to help
determine what caused it. If you are not already running the most recent
version of MicroPython, consider upgrading. New versions often fix bugs.

To learn more about how to debug and/or report this crash visit the wiki
page at: https://github.com/micropython/micropython/wiki/ESP32-debugging

LVGL MicroPython
IDF version : v5.4
Machine     : Generic ESP32 module with SPIRAM with ESP32

Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x401b04dd  PS      : 0x00060830  A0      : 0x801b0944  A1      : 0x3ffdb390
A2      : 0x3f80d2b0  A3      : 0x00000054  A4      : 0x3f8105e8  A5      : 0x3f54b240
A6      : 0x00000001  A7      : 0xaaaaae2a  A8      : 0x00000019  A9      : 0x3ffdb370
A10     : 0xaaaaae2a  A11     : 0x00000063  A12     : 0x3ffc7ccc  A13     : 0x00000000
A14     : 0x3f4464f4  A15     : 0x00000001  SAR     : 0x00000020  EXCCAUSE: 0x0000001c
EXCVADDR: 0xaaaaae37  LBEG    : 0x401d2964  LEND    : 0x401d296d  LCOUNT  : 0x00000000

Backtrace: 0x401b04da:0x3ffdb390 0x401b0941:0x3ffdb3b0 0x40086719:0x3ffdb3d0 0x401a90da:0x3ffdb460
0x401b07ba:0x3ffdb490 0x40085de9:0x3ffdb4b0 0x401a90da:0x3ffdb540 0x401b07ba:0x3ffdb5b0
0x40085de9:0x3ffdb5d0 0x401a90da:0x3ffdb660 0x401b07ba:0x3ffdb690 0x401b083a:0x3ffdb6b0
0x401d35c1:0x3ffdb6f0 0x401d3809:0x3ffdb730 0x401b0919:0x3ffdb830 0x40085b59:0x3ffdb870
0x401a90da:0x3ffdb900 0x401b07ba:0x3ffdb970 0x401b07e2:0x3ffdb990 0x401e8d02:0x3ffdb9b0
0x401e90c9:0x3ffdba40 0x401c5b2d:0x3ffdba70
```
2026-02-16 21:42:14 +01:00
Pavel Machek 4a9493ae7e imu: cleanup stale comments, revert unneccessary changes 2026-02-16 20:54:21 +01:00
Pavel Machek d6d3669309 imu: Allow access to iio on Linux
Linux phones have IMU units. Allow applications to use them same
way they would access IMU on esp32 based devices. Lightly tested
on PinePhone.

Same applications useful on esp32 (compass, step counter) are likely
to be useful on Linux phones, too.
2026-02-16 20:44:10 +01:00
Thomas Farstrike 7431537010 AudioManager: add support for adc_mic
This works for init:

AudioManager(i2s_pins=i2s_pins, adc_mic_pin=1)

And then this for recording:

AudioManager.record_wav_adc(file_path="/recording.wav",duration_ms=5000,sample_rate=16000,on_complete=lambda msg: print(f"Finished: {msg}"))
2026-02-16 16:39:52 +01:00
Thomas Farstrike 4ab4e31de1 Fix board detect 2026-02-15 14:37:24 +01:00
Thomas Farstrike 60fcf64a68 Merge pull request #37 from jedie/clear-battery-cache
Clear battery cache in ShowBattery app
2026-02-14 20:27:41 +01:00
JensDiemer ac89237647 Enhance ShowBattery and fixes for Odroid-GO battery
Add a "Real-time values" checkbox to ShowBattery app. If checked, then the cache will be clear on
every cycle.

Bugfix: Use `mpos.time.localtime()` to get the "correct" local time with timezone offset.

Changes for Odroid-GO:

The seen "2400" values are at startup the Odroid-GO... After a while the values are somewhere
between 270 and 310... The full range is unknown, yet. But with the new calculation it looks more
realistic, then before ;)
2026-02-14 17:20:02 +01:00
Thomas Farstrike 74b1a427ce Move odroid go detection towards the bottom 2026-02-13 22:47:52 +01:00
Thomas Farstrike d2d5d64b6f Fix ili9341 2026-02-13 21:59:24 +01:00