Commit Graph

581 Commits

Author SHA1 Message Date
lady ada 029b6b6fbe add default display 2022-08-07 14:12:40 -04:00
paul a6eadd6259 Added Bee Motion S3 board 2022-08-07 11:59:43 -04:00
paul f39058edc4 Added Bee S3 board 2022-08-06 22:22:20 -04:00
Jeff Epler 1da8065d6b
Merge remote-tracking branch 'origin/main' into espressif-camera-2 2022-08-05 16:38:51 -05:00
Dan Halbert 8c10e09ba0
Merge pull request #6667 from jepler/esp-reserve-heap-for-idf
Add ability to reserve psram
2022-08-05 15:06:44 -04:00
Jeff Epler 3f49d77036
Improve esp32-s3-eye board definition 2022-08-05 13:10:21 -05:00
Scott Shawcroft 125b276af0
Get CIRCUITPY FATFS directly.
Otherwise, you may actually get a non-root filesystem.

Fixes #6575
2022-08-04 16:06:27 -07:00
Jeff Epler 861fa9625d
Add the ESP32-EYE aka ESP-EYE 2022-08-04 15:12:12 -05:00
Jeff Epler 98202c8568
Allow changing camera settings that require reinit
These can only be changed in a group, though any items to keep
unchanged can be unspecified or specified as None.
2022-08-04 15:12:11 -05:00
Jeff Epler 428fbcd343
remove debug message during build 2022-08-04 15:12:10 -05:00
Jeff Epler 0e26a937cc
Disable camera everywhere it doesn't fit 2022-08-04 15:12:08 -05:00
Jeff Epler 230532f0eb
one last doc build fix 2022-08-04 15:12:07 -05:00
Jeff Epler a9d53ad2a6
Fix "check-stubs" problems 2022-08-04 15:12:06 -05:00
Jeff Epler 7cb40c9054
further doc build fixes 2022-08-04 15:12:05 -05:00
Jeff Epler 81fb9a5f20
specify return type for docs 2022-08-04 15:12:04 -05:00
Jeff Epler 8bdbe0355a
Add more getters 2022-08-04 15:12:02 -05:00
Jeff Epler badcae5ace
Fix docstring errors 2022-08-04 15:12:01 -05:00
Jeff Epler aead0dfe45
Return a Bitmap from take() when appropriate 2022-08-04 15:12:00 -05:00
Jeff Epler 54fe753602
Enable gifio and qrio when appropriate 2022-08-04 15:11:59 -05:00
Jeff Epler 258f72640a
Implement a pile of getters & setters 2022-08-04 15:11:57 -05:00
Jeff Epler 69949ecb43
update PID for this board 2022-08-04 15:11:56 -05:00
Jeff Epler d1b89fca91
Reset camera when interpreter is reset 2022-08-04 15:11:55 -05:00
Jeff Epler f54c7adddc
Must treat NO_PIN cast to uint8_t the same as NO_PIN
Otherwise, deinitializing a camera with e.g., the powerdown
pin unspecified results in an assertion failure in a debug build.
2022-08-04 15:11:54 -05:00
Jeff Epler 1d1e139379
fix taking multiple pictures 2022-08-04 15:11:53 -05:00
Jeff Epler b903a020fd
Enable display on esp32-s3-eye 2022-08-04 15:11:52 -05:00
Jeff Epler 8d673bdbf5
reserve 1MB of PSRAM for camera framebuffer on esp32s3-eye
.. this setting can be overridden with a bigger or smaller value in
CIRCUITPY/.env but 1/8 of PSRAM seems like a good initial value. It's
enough to store a single 800x600 or 640x480 RGB565 frame, or multiple
smaller frames such as 320x240.
2022-08-04 15:11:51 -05:00
Jeff Epler 5db6db0128
add esp32-camera
This uses the esp32-camera code instead of our own homebrewed camera code.
In theory it supports esp32, esp32-s2 and esp32-s3, as long as they have
PSRAM.

This is very basic and doesn't support changing any camera parameters,
including switching resolution or pixelformat.

This is tested on the Kaluga (ESP32-S2) and ESP32-S3-Eye boards.

First, reserve some PSRAM by putting this line in `CIRCUITPY/_env`:
```
CIRCUITPY_RESERVED_PSRAM=524288
```
and hard-reset the board for it to take effect.

Now, the following script will take a very low-resolution jpeg file and print
it in the REPL in escape coded form:

```python
import board
import esp32_camera

c = esp32_camera.Camera(
    data_pins=board.CAMERA_DATA,
    external_clock_pin=board.CAMERA_XCLK,
    pixel_clock_pin=board.CAMERA_PCLK,
    vsync_pin=board.CAMERA_VSYNC,
    href_pin=board.CAMERA_HREF,
    pixel_format=esp32_camera.PixelFormat.JPEG,
    i2c=board.I2C(),
    external_clock_frequency=20_000_000)

m = c.take()
if m is not None:
    print(bytes(m))
```

Then on desktop open a python repl and run something like
```python
>>> with open("my.jpg", "wb") as f: f.write(<BIG PASTE FROM REPL>)
```
and open my.jpg in a viewer.
2022-08-04 15:11:50 -05:00
Jeff Epler 8e08cc38f8
Add default I2C bus to Kaluga 2022-08-04 15:11:48 -05:00
Scott Shawcroft e0cb8ef17e
Merge pull request #6694 from dhalbert/esp32-no-psram
ESP32 no psram support; other ESP32 cleanup
2022-08-04 11:49:39 -07:00
Scott Shawcroft 3707b54e3b
Merge pull request #6672 from bill88t/main
Add Waveshare ESP32-S2-Pico
2022-08-04 11:09:59 -07:00
Dan Halbert 202fac59f8 ESP32 fixes for no PSRAM; some cleanup 2022-08-04 13:44:52 -04:00
Dan Halbert d4e8c19b49 merge from main 2022-08-04 12:43:23 -04:00
Jeff Epler 82be75adb5 Add ability to reserve psram
.. the primary user of which will be the camera, since the framebuffers
must be allocated via esp-idf allocation function and never from the
gc heap.

A board can have a default value, and the value can also be set in the
/.env file using the key CIRCUITPY_RESERVED_PSRAM with the value being
the reserved size in bytes.

Co-authored-by: Dan Halbert <halbert@adafruit.com>
2022-08-03 16:19:40 -05:00
bill88t 68bb6b9988 ran precommit 2022-08-03 09:14:26 +03:00
Bill Sideris efa3e40f90
Add the one obtained from esp 2022-08-03 08:48:28 +03:00
Dan Halbert d3d5e36548 update adafruit/esp-idf for ESP32_ECO3_CACHE_LOCK_FIX fix 2022-08-02 22:37:06 -04:00
Dan Halbert b027d111a9 remove custom console UART from sdkconfig-esp32.defaults 2022-08-02 22:00:59 -04:00
Dan Halbert 534a482d94 initial HUZZAH32 bring-up, with hacked pins 2022-08-02 21:47:46 -04:00
Dan Halbert 767234e79c
Merge pull request #6688 from tannewt/fix_esp32c3_paste
Fix C3 when pasting 128+ characters
2022-08-02 21:35:02 -04:00
Dan Halbert 524cc5e274
Merge pull request #6685 from tannewt/esp32_ww
Enable Web Workflow on Feather ESP32 V2
2022-08-02 21:30:23 -04:00
Scott Shawcroft 9de8ae70b6
Fix C3 when pasting 128+ characters
The ringbuf used to fill up and the recv interrupt would block CP.
Now it'll disable the interrupt until we have enough room in the
ringbuf.

Fixes #6678
2022-08-02 15:25:19 -07:00
Scott Shawcroft 1c69fe1727
Fix S2/S3 USB
The new Kconfig that fixed C3 added a dependency on USB_OTG_SUPPORTED
that is only calculated if we include the usb module in cmake.

Fixes #6679
2022-08-02 14:11:09 -07:00
Scott Shawcroft 74e841d835
Read fuses to know what flash and ram pins to never reset 2022-08-02 12:01:42 -07:00
Bill Sideris 60429f51c7
Add official vid/pid 2022-08-02 09:43:17 +03:00
Scott Shawcroft f0c6a8c49a
Odroid pin defs 2022-08-01 15:52:08 -07:00
Scott Shawcroft 9661d3256c
Add more ESP32 boards and enable web workflow 2022-08-01 15:52:08 -07:00
bill88t c71cc4e0dd Add Waveshare ESP32-S2-Pico 2022-07-30 15:35:48 +03:00
Scott Shawcroft 312e298890
Fix other ESP builds and arduino_nano_33_iot 2022-07-29 11:02:35 -07:00
Scott Shawcroft d6344812e8
Lots of web workflow, C3 and title bar fixes
* Fixes #6221 - C3 hang on `import wifi`. Enabling the WiFi PHY was
  disabling USB. Now boards that use it set CONFIG_ESP_PHY_ENABLE_USB
  explicitly.
* Fixes #6655 - Allows pasting into the web serial page. Fixes reading
  more than 0xf bytes at a time.
* Fixes #6653 - Fixes web socket encoding of payloads >125 bytes. Can
  happen when printing a long string.
* Fixes C3 responsiveness when waiting for key to enter REPL. (It
  now correctly stops sleeping.)
* Disables title bar updates when in raw REPL. Related to #6548.
* Adds version to title bar.
2022-07-28 16:06:56 -07:00
Dan Halbert 3817d007aa clean up esp32 sdkconfigs 2022-07-28 17:52:27 -04:00
Scott Shawcroft c4c15206e7
Merge pull request #6608 from tannewt/web_workflow_port
Allow for dynamic reconfigure including port
2022-07-28 12:59:31 -07:00
Dan Halbert 282f8c49a6
Merge pull request #6660 from tannewt/fix_c3_serial_tx
Improve USB to Serial/JTAG TX
2022-07-28 14:42:56 -04:00
Scott Shawcroft c29fa9012d
Merge pull request #6645 from prplz/seeed_xiao_esp32c3
Add board: seeed_xiao_esp32c3
2022-07-28 11:22:43 -07:00
Scott Shawcroft ddeb833a3a
Shrink Feather S3 4mb build with -Os 2022-07-28 07:43:39 -07:00
Michael Himing 555bf7cc12 Add board: seeed_xiao_esp32c3 2022-07-28 22:48:03 +10:00
Scott Shawcroft bea955222a
Improve USB to Serial/JTAG TX
It had a tight 5ms timeout before that caused some characters to
drop. Now the wait is longer and reset after a successful transmit.
This follows what MicroPython does.

Fixes #6220
2022-07-27 12:15:13 -07:00
Scott Shawcroft ce60beeb25
Merge pull request #6651 from tannewt/refine_select_task
Improve web workflow responsiveness
2022-07-27 11:24:51 -07:00
Chris Dailey 2a9d3c5ed2
Adds BOOT0 (GPIO 0) as a named pin for MagTag. 2022-07-27 08:38:52 -04:00
Scott Shawcroft 931757f4a9
Improve web workflow responsiveness
1. Run the socket select task at the same priority as CP. This is
  needed because it queues up the background work. Without it, CP
  needed to sleep to let the lower priority task go.
2. Close the active socket on disconnect. This prevents looping
  over a disconnected but not closed socket.

Fixes #6610. Fixes #6613
2022-07-26 15:29:49 -07:00
Neradoc 87e8994c4a no default extension for ESP, fix duplicate line in rp2 2022-07-26 18:15:59 +02:00
Neradoc eabe8b971a list extensions instead of macros names ("bin,uf2" not BIN_UF2)
the modules_support_matrix usees a dictionnary per board instead of a list
optionally include the frozen modules URLs in it
2022-07-26 18:15:59 +02:00
Neradoc d021d9ae4a Move build extensions to board directories
- define CIRCUITPY_BUILD_EXTENSIONS to predefined values
- set CIRCUITPY_BUILD_EXTENSIONS in port and board config
- reuse the support matrix "get_settings_from_makefile" to get it
- move the existing port and board specific values
- remove the C3 specific board values because it's not the default
- update build_release_files.py to use get_settings_from_makefile
2022-07-26 18:15:50 +02:00
Scott Shawcroft 66d5fa9a55
Save space on Feather S3 4mb with -Os 2022-07-25 16:19:52 -07:00
Scott Shawcroft 6d6234443d
Merge remote-tracking branch 'adafruit/main' into web_workflow_port 2022-07-25 15:57:58 -07:00
Scott Shawcroft 47f718aa92
Merge pull request #6615 from askpatrickw/beetle-esp32-c3
Beetle esp32 c3
2022-07-25 15:00:05 -07:00
Dan Halbert f2bbe5a6a1
Merge pull request #6614 from litui/litui-espressif-bleiofix
Fixed empty characteristic issue with bleio+nimble.
2022-07-20 08:42:31 -04:00
Dan Halbert e877644012 use -Os on Feather ESP32-S3 TFT to shrink build 2022-07-19 17:45:29 -04:00
Patrick 1e99d68af7 Add Creator ID 2022-07-17 12:38:27 -07:00
Patrick 71c22232f0 board config compelted 2022-07-17 11:48:45 -07:00
Aria Burrell 868a03ff57 Fixed empty characteristic issue with bleio+nimble.
- Based on espressif/nimble's blecent example code. Confirms that the characteristic is not empty before trying to catalogue its descriptors.
- Running ble_gattc_disc_all_dscs on empty (no length) characteristics fails with the (not-very-informative) BLE_HS_EINVAL error if this check is not performed.
2022-07-17 04:50:50 -06:00
Scott Shawcroft 78b4159448
Allow for dynamic reconfigure including port 2022-07-15 16:33:12 -07:00
Jeff Epler 4e6fa55cba
Merge pull request #6591 from tannewt/web_workflow_ticks
Add socket select task to wake CP
2022-07-15 18:30:43 -05:00
Scott Shawcroft c2a8ef752c
Remove ps2io to make space 2022-07-15 14:01:50 -07:00
Scott Shawcroft 6e7fdcc24b
Add wait for MDNS hostname to be set 2022-07-15 13:48:19 -07:00
Scott Shawcroft 145cce93da
Merge pull request #6596 from Neradoc/ble-name-in-dotenv
Setup default BLE name in dotenv
2022-07-14 15:46:28 -07:00
Jeff Epler dcc27a8c88
Need to ensure wifi radio is set enabled again on esp32
.. otherwise, nothing set it enabled on the second soft reboot.
2022-07-14 15:09:26 -05:00
Jeff Epler 72f5537027
esp32: don't fully reset the wifi device
.. this makes reconnecting without a full reset not work.

Because this works on other generations of the esp32 (c2, c3, etc),
apply this behavior only to esp32.

After this change, it's possible to connect multiple times to wifi in
different runs of code.py or the repl after soft rebooting.
2022-07-14 15:01:15 -05:00
Neradoc 5ca6d8953d use available constants instead of testing errors for length 2022-07-14 11:55:53 +02:00
Neradoc 50a9beda04 Retrieve the BLE name from dotenv if available
Format:
CIRCUITPY_BLE_NAME = My BLE Board

- the length is limited to 31 characters
- for the NRF version it repeatedly truncates the name if it's too long
- the ESP version defaults to "nimble" if the name is too long
2022-07-14 11:55:53 +02:00
Scott Shawcroft e9dd254127
Add socket select task to wake CP
This fixes the web workflow on boards without a display.

Fixes #6552
2022-07-13 17:35:35 -07:00
Scott Shawcroft ac460dd1e1
Merge branch 'main' into esp32 2022-07-13 15:30:53 -07:00
Jeff Epler 09b754ffa0
espressif: Set heap size automatically, like micropython
rather than setting the heap size statically, micropython allocates
the biggest contiguous chunk possible, but in no event more than half the
total internal sram. On esp32 this gives 123728 bytes of `gc.mem_free`
in the repl.
2022-07-13 14:00:59 -05:00
Jeff Epler 09d1c846c4
Set heap size to 0 when heap allocation fails 2022-07-13 13:53:22 -05:00
Jeff Epler c1b6c367ff
esp32 can allocate 88kB successfully 2022-07-13 13:53:08 -05:00
Jeff Epler 13be10ef14
rename function to avoid confusion 2022-07-13 13:28:51 -05:00
Jeff Epler 5c6ee20ca5
on esp32 need to initialize nvs before starting wifi
Also, change error handling so that the esp-idf error number
is shown in the traceback in the case of an error.

This allows scanning & connecting to work. I didn't try requests yet.
2022-07-13 11:57:38 -05:00
Jeff Epler f620c2901c
Set a small but working heap size for esp32 without psram 2022-07-13 11:10:00 -05:00
Jeff Epler ea52ca66dc
Disable SPIRAM bankswitch on esp32
We don't use this facility, which was reserving the last 256kiB of
psram.
2022-07-13 10:56:58 -05:00
Jeff Epler 953f44b46e
Fix spiram limit calculation on esp32
esp32 places the psram start at SOC_EXTRAM_DATA_LOW and it can extend
up to SOC_EXTRAM_DATA_SIZE. This is different than esp32-s2 and later,
which place the end at EXTRAM_DATA_HIGH and the limitation of
SOC_EXTRAM_DATA_SIZE was not previously identified as important.
Additionally, the esp32 has a reserved area within himem which was
not being accounted for.

With this change, the Feather ESP32 V2 feather can be used via thonny,
and the other "quick memory corruption tests" I was performing
also all succeed instead of failing.

Before this change, the incorrect address being used for spiram was
0x3fa00000..0x3fc00000 (2MiB). Now, it's 0x3f800000..0x3f9c0000 (1.75MiB)
due to the reserved area and the changed start address.

This is intended to be a no-effect change for other espressif chips besides
original esp32.
2022-07-13 10:52:15 -05:00
Jeff Epler afbaa2eb6c
decode_backtrace: Show even more information
addr2line can show information about how functions were inlined,
including function names

Typical new output:
```
0x400dec57: mp_obj_get_type at /home/jepler/src/circuitpython/ports/espressif/../../py/obj.c:68
 (inlined by) mp_obj_print_helper at /home/jepler/src/circuitpython/ports/espressif/../../py/obj.c:133
 (inlined by) mp_obj_print_helper at /home/jepler/src/circuitpython/ports/espressif/../../py/obj.c:114
0x400e1a25: fun_builtin_1_call at /home/jepler/src/circuitpython/ports/espressif/../../py/objfun.c:75
0x400dd016: mp_call_function_n_kw at /home/jepler/src/circuitpython/ports/espressif/../../py/runtime.c:665
0x400eac99: mp_execute_bytecode at /home/jepler/src/circuitpython/ports/espressif/../../py/vm.c:936
0x400e1ae9: fun_bc_call at /home/jepler/src/circuitpython/ports/espressif/../../py/objfun.c:297 (discriminator 4)
0x400dd016: mp_call_function_n_kw at /home/jepler/src/circuitpython/ports/espressif/../../py/runtime.c:665
0x400dd03a: mp_call_function_0 at /home/jepler/src/circuitpython/ports/espressif/../../py/runtime.c:638
0x40117c03: parse_compile_execute at /home/jepler/src/circuitpython/ports/espressif/../../shared/runtime/pyexec.c:146
0x4011800d: pyexec_friendly_repl at /home/jepler/src/circuitpython/ports/espressif/../../shared/runtime/pyexec.c:734
0x400eeded: run_repl at /home/jepler/src/circuitpython/ports/espressif/../../main.c:823
 (inlined by) main at /home/jepler/src/circuitpython/ports/espressif/../../main.c:922
0x400ef5e3: app_main at /home/jepler/src/circuitpython/ports/espressif/supervisor/port.c:410
0x401bb461: main_task at /home/jepler/src/circuitpython/ports/espressif/build-adafruit_feather_esp32_v2/esp-idf/../../esp-idf/components/freertos/port/port_common.c:141
```
2022-07-12 16:28:33 -05:00
Scott Shawcroft 23bbb19138
Merge remote-tracking branch 'adafruit/main' into websocket_serial 2022-07-12 13:15:38 -07:00
Scott Shawcroft c56f363a23
Merge pull request #6572 from todbot/wifi-tx-power-float
Fix #6559
2022-07-11 13:08:11 -07:00
Melissa LeBlanc-Williams 08b4a64bd2 Update the PID 2022-07-11 08:39:10 -07:00
Tod Kurt a658007673
Update ports/espressif/common-hal/wifi/Radio.c
Co-authored-by: Dan Halbert <halbert@halwitz.org>
2022-07-09 22:17:26 -07:00
Tod Kurt 22e061ba35
Update ports/espressif/common-hal/wifi/Radio.c
Co-authored-by: Dan Halbert <halbert@halwitz.org>
2022-07-09 22:17:18 -07:00
Tod Kurt 98692150ac
Update ports/espressif/common-hal/wifi/Radio.c
Co-authored-by: Dan Halbert <halbert@halwitz.org>
2022-07-09 22:17:12 -07:00
Tod Kurt f464ec3047
Update ports/espressif/common-hal/wifi/Radio.c
Co-authored-by: Dan Halbert <halbert@halwitz.org>
2022-07-09 22:17:02 -07:00
Melissa LeBlanc-Williams bc14b7ad47 Fix the display on the esp box lite 2022-07-08 15:40:59 -07:00
Dan Halbert 2c7ad7a39f make translate and pre-commit formatting fixes 2022-07-08 16:53:53 -04:00
Dan Halbert c316b950c7 merge from adafruit/main 2022-07-08 15:42:19 -04:00