Skip to content

Add senseBox Eye board #11608

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
190 changes: 190 additions & 0 deletions boards.txt
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are deleting other users' boards. Please rebase your branch

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@PaulaScharf please fix this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry about that. I hope its good now

Original file line number Diff line number Diff line change
Expand Up @@ -41309,6 +41309,196 @@ sensebox_mcu_esp32s2.menu.EraseFlash.none.upload.erase_cmd=
sensebox_mcu_esp32s2.menu.EraseFlash.all=Enabled
sensebox_mcu_esp32s2.menu.EraseFlash.all.upload.erase_cmd=-e

##############################################################
# senseBox Eye

sensebox_eye.name=senseBox Eye
sensebox_eye.vid.0=0x303A
sensebox_eye.pid.0=0x82D1
sensebox_eye.vid.1=0x303A
sensebox_eye.pid.1=0x82D2
sensebox_eye.vid.2=0x303A
sensebox_eye.pid.2=0x82D3

sensebox_eye.bootloader.tool=esptool_py
sensebox_eye.bootloader.tool.default=esptool_py

sensebox_eye.upload.tool=esptool_py
sensebox_eye.upload.tool.default=esptool_py
sensebox_eye.upload.tool.network=esp_ota

sensebox_eye.upload.maximum_size=1310720
sensebox_eye.upload.maximum_data_size=327680
sensebox_eye.upload.flags=
sensebox_eye.upload.extra_flags=
sensebox_eye.upload.use_1200bps_touch=true
sensebox_eye.upload.wait_for_upload_port=true

sensebox_eye.serial.disableDTR=true
sensebox_eye.serial.disableRTS=true

sensebox_eye.build.tarch=xtensa
sensebox_eye.build.bootloader_addr=0x0
sensebox_eye.build.target=esp32s3
sensebox_eye.build.mcu=esp32s3
sensebox_eye.build.core=esp32
sensebox_eye.build.variant=sensebox_eye
sensebox_eye.build.board=SENSEBOX_EYE

sensebox_eye.build.usb_mode=0
sensebox_eye.build.cdc_on_boot=1
sensebox_eye.build.msc_on_boot=1
sensebox_eye.build.dfu_on_boot=0
sensebox_eye.build.f_cpu=240000000L
sensebox_eye.build.flash_size=16MB (128Mb)
sensebox_eye.build.flash_freq=80m
sensebox_eye.build.flash_mode=dio
sensebox_eye.build.boot=qio
sensebox_eye.build.boot_freq=80m
sensebox_eye.build.partitions=default_16MB
sensebox_eye.build.defines=
sensebox_eye.build.loop_core=
sensebox_eye.build.event_core=
sensebox_eye.build.psram_type=qspi
sensebox_eye.build.memory_type={build.boot}_{build.psram_type}

sensebox_eye.menu.JTAGAdapter.default=Disabled
sensebox_eye.menu.JTAGAdapter.default.build.copy_jtag_files=0
sensebox_eye.menu.JTAGAdapter.builtin=Integrated USB JTAG
sensebox_eye.menu.JTAGAdapter.builtin.build.openocdscript=esp32s3-builtin.cfg
sensebox_eye.menu.JTAGAdapter.builtin.build.copy_jtag_files=1
sensebox_eye.menu.JTAGAdapter.external=FTDI Adapter
sensebox_eye.menu.JTAGAdapter.external.build.openocdscript=esp32s3-ftdi.cfg
sensebox_eye.menu.JTAGAdapter.external.build.copy_jtag_files=1
sensebox_eye.menu.JTAGAdapter.bridge=ESP USB Bridge
sensebox_eye.menu.JTAGAdapter.bridge.build.openocdscript=esp32s3-bridge.cfg
sensebox_eye.menu.JTAGAdapter.bridge.build.copy_jtag_files=1

sensebox_eye.menu.PSRAM.disabled=Disabled
sensebox_eye.menu.PSRAM.disabled.build.defines=
sensebox_eye.menu.PSRAM.disabled.build.psram_type=qspi
sensebox_eye.menu.PSRAM.opi=OPI PSRAM
sensebox_eye.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM
sensebox_eye.menu.PSRAM.opi.build.psram_type=opi

sensebox_eye.menu.FlashMode.qio=QIO 80MHz
sensebox_eye.menu.FlashMode.qio.build.flash_mode=dio
sensebox_eye.menu.FlashMode.qio.build.boot=qio
sensebox_eye.menu.FlashMode.qio.build.boot_freq=80m
sensebox_eye.menu.FlashMode.qio.build.flash_freq=80m
sensebox_eye.menu.FlashMode.dio=DIO 80MHz
sensebox_eye.menu.FlashMode.dio.build.flash_mode=dio
sensebox_eye.menu.FlashMode.dio.build.boot=dio
sensebox_eye.menu.FlashMode.dio.build.boot_freq=80m
sensebox_eye.menu.FlashMode.dio.build.flash_freq=80m

sensebox_eye.menu.FlashSize.16M=16MB (128Mb)
sensebox_eye.menu.FlashSize.16M.build.flash_size=16MB

sensebox_eye.menu.LoopCore.1=Core 1
sensebox_eye.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
sensebox_eye.menu.LoopCore.0=Core 0
sensebox_eye.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0

sensebox_eye.menu.EventsCore.1=Core 1
sensebox_eye.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
sensebox_eye.menu.EventsCore.0=Core 0
sensebox_eye.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0

sensebox_eye.menu.USBMode.hwcdc=Hardware CDC and JTAG
sensebox_eye.menu.USBMode.hwcdc.build.usb_mode=1
sensebox_eye.menu.USBMode.default=USB-OTG (TinyUSB)
sensebox_eye.menu.USBMode.default.build.usb_mode=0

sensebox_eye.menu.CDCOnBoot.default=Enabled
sensebox_eye.menu.CDCOnBoot.default.build.cdc_on_boot=1
sensebox_eye.menu.CDCOnBoot.cdc=Disabled
sensebox_eye.menu.CDCOnBoot.cdc.build.cdc_on_boot=0

sensebox_eye.menu.MSCOnBoot.default=Disabled
sensebox_eye.menu.MSCOnBoot.default.build.msc_on_boot=0
sensebox_eye.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode)
sensebox_eye.menu.MSCOnBoot.msc.build.msc_on_boot=1

sensebox_eye.menu.DFUOnBoot.default=Disabled
sensebox_eye.menu.DFUOnBoot.default.build.dfu_on_boot=0
sensebox_eye.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode)
sensebox_eye.menu.DFUOnBoot.dfu.build.dfu_on_boot=1

sensebox_eye.menu.UploadMode.default=UART0 / Hardware CDC
sensebox_eye.menu.UploadMode.default.upload.use_1200bps_touch=false
sensebox_eye.menu.UploadMode.default.upload.wait_for_upload_port=false
sensebox_eye.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB)
sensebox_eye.menu.UploadMode.cdc.upload.use_1200bps_touch=true
sensebox_eye.menu.UploadMode.cdc.upload.wait_for_upload_port=true

sensebox_eye.menu.PartitionScheme.default_16MB=Default (6.25MB APP/3.43MB SPIFFS)
sensebox_eye.menu.PartitionScheme.default_16MB.build.partitions=default_16MB
sensebox_eye.menu.PartitionScheme.default_16MB.upload.maximum_size=6553600
sensebox_eye.menu.PartitionScheme.large_spiffs=Large SPIFFS (4.5MB APP/6.93MB SPIFFS)
sensebox_eye.menu.PartitionScheme.large_spiffs.build.partitions=large_spiffs_16MB
sensebox_eye.menu.PartitionScheme.large_spiffs.upload.maximum_size=4718592
sensebox_eye.menu.PartitionScheme.app3M_fat9M_16MB=FFAT (3MB APP/9MB FATFS)
sensebox_eye.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
sensebox_eye.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
sensebox_eye.menu.PartitionScheme.fatflash=Large FFAT (2MB APP/12.5MB FATFS)
sensebox_eye.menu.PartitionScheme.fatflash.build.partitions=ffat
sensebox_eye.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
sensebox_eye.menu.PartitionScheme.tinyuf2=TinyUF2 Compatibility (2MB APP/12MB FFAT)
sensebox_eye.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader_tinyuf2
sensebox_eye.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions_tinyuf2
sensebox_eye.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152
sensebox_eye.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
sensebox_eye.menu.PartitionScheme.gen4esp32scheme4=Huge App (16MB APP)
sensebox_eye.menu.PartitionScheme.gen4esp32scheme4.build.custom_partitions=gen4esp32_16MBapp
sensebox_eye.menu.PartitionScheme.gen4esp32scheme4.upload.maximum_size=16646144

sensebox_eye.menu.CPUFreq.240=240MHz (WiFi)
sensebox_eye.menu.CPUFreq.240.build.f_cpu=240000000L
sensebox_eye.menu.CPUFreq.160=160MHz (WiFi)
sensebox_eye.menu.CPUFreq.160.build.f_cpu=160000000L
sensebox_eye.menu.CPUFreq.80=80MHz (WiFi)
sensebox_eye.menu.CPUFreq.80.build.f_cpu=80000000L
sensebox_eye.menu.CPUFreq.40=40MHz
sensebox_eye.menu.CPUFreq.40.build.f_cpu=40000000L
sensebox_eye.menu.CPUFreq.20=20MHz
sensebox_eye.menu.CPUFreq.20.build.f_cpu=20000000L
sensebox_eye.menu.CPUFreq.10=10MHz
sensebox_eye.menu.CPUFreq.10.build.f_cpu=10000000L

sensebox_eye.menu.UploadSpeed.921600=921600
sensebox_eye.menu.UploadSpeed.921600.upload.speed=921600
sensebox_eye.menu.UploadSpeed.115200=115200
sensebox_eye.menu.UploadSpeed.115200.upload.speed=115200
sensebox_eye.menu.UploadSpeed.256000.windows=256000
sensebox_eye.menu.UploadSpeed.256000.upload.speed=256000
sensebox_eye.menu.UploadSpeed.230400.windows.upload.speed=256000
sensebox_eye.menu.UploadSpeed.230400=230400
sensebox_eye.menu.UploadSpeed.230400.upload.speed=230400
sensebox_eye.menu.UploadSpeed.460800.linux=460800
sensebox_eye.menu.UploadSpeed.460800.macosx=460800
sensebox_eye.menu.UploadSpeed.460800.upload.speed=460800
sensebox_eye.menu.UploadSpeed.512000.windows=512000
sensebox_eye.menu.UploadSpeed.512000.upload.speed=512000

sensebox_eye.menu.DebugLevel.none=None
sensebox_eye.menu.DebugLevel.none.build.code_debug=0
sensebox_eye.menu.DebugLevel.error=Error
sensebox_eye.menu.DebugLevel.error.build.code_debug=1
sensebox_eye.menu.DebugLevel.warn=Warn
sensebox_eye.menu.DebugLevel.warn.build.code_debug=2
sensebox_eye.menu.DebugLevel.info=Info
sensebox_eye.menu.DebugLevel.info.build.code_debug=3
sensebox_eye.menu.DebugLevel.debug=Debug
sensebox_eye.menu.DebugLevel.debug.build.code_debug=4
sensebox_eye.menu.DebugLevel.verbose=Verbose
sensebox_eye.menu.DebugLevel.verbose.build.code_debug=5

sensebox_eye.menu.EraseFlash.none=Disabled
sensebox_eye.menu.EraseFlash.none.upload.erase_cmd=
sensebox_eye.menu.EraseFlash.all=Enabled
sensebox_eye.menu.EraseFlash.all.upload.erase_cmd=-e

##############################################################

nano_nora.name=Arduino Nano ESP32
Expand Down
Binary file added variants/sensebox_eye/bootloader-tinyuf2.bin
Binary file not shown.
10 changes: 10 additions & 0 deletions variants/sensebox_eye/partitions-16MB-tinyuf2.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
# bootloader.bin,, 0x1000, 32K
# partition table, 0x8000, 4K
nvs, data, nvs, 0x9000, 20K,
otadata, data, ota, 0xe000, 8K,
ota_0, 0, ota_0, 0x10000, 2048K,
ota_1, 0, ota_1, 0x210000, 2048K,
uf2, app, factory,0x410000, 256K,
ffat, data, fat, 0x450000, 11968K,
90 changes: 90 additions & 0 deletions variants/sensebox_eye/pins_arduino.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#include <stdint.h>

#define USB_VID 0x303A
#define USB_PID 0x82D1
#define USB_MANUFACTURER "senseBox"
#define USB_PRODUCT "Eye ESP32S3"
#define USB_SERIAL "" // Empty string for MAC address

// Default USB FirmwareMSC Settings
#define USB_FW_MSC_VENDOR_ID "senseBox" // max 8 chars
#define USB_FW_MSC_PRODUCT_ID "Eye ESP32S3" // max 16 chars
#define USB_FW_MSC_PRODUCT_REVISION "1.00" // max 4 chars
#define USB_FW_MSC_VOLUME_NAME "senseBox" // max 11 chars
#define USB_FW_MSC_SERIAL_NUMBER 0x00000000

#define PIN_RGB_LED 45 // RGB LED
#define RGBLED_PIN 45 // RGB LED
#define PIN_LED 45
#define RGBLED_NUM 1 // number of RGB LEDs

// Default I2C QWIIC-Ports
static const uint8_t SDA = 2;
static const uint8_t SCL = 1;
#define PIN_QWIIC_SDA 2
#define PIN_QWIIC_SCL 1

// IO Pins
#define PIN_IO14 14
static const uint8_t A14 = PIN_IO14; // Analog
static const uint8_t D14 = PIN_IO14; // Digital
static const uint8_t T14 = PIN_IO14; // Touch
#define PIN_IO48 48
static const uint8_t A48 = PIN_IO48; // Analog
static const uint8_t D48 = PIN_IO48; // Digital
static const uint8_t T48 = PIN_IO48; // Touch

// Button
#define PIN_BUTTON 47

// UART Port
static const uint8_t TX = 43;
static const uint8_t RX = 44;
#define PIN_UART_TXD 43
#define PIN_UART_RXD 44
#define PIN_UART_ENABLE 26

// SD-Card
#define MISO 40
#define MOSI 38
#define SCK 39
#define SS 41
#define SD_ENABLE 3

#define PIN_SD_MISO 40
#define PIN_SD_MOSI 38
#define PIN_SD_SCLK 39
#define PIN_SD_CS 41
#define PIN_SD_ENABLE 3

// USB
#define PIN_USB_DM 19
#define PIN_USB_DP 20

// Camera
#define PWDN_GPIO_NUM 46
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 15
#define SIOD_GPIO_NUM 4
#define SIOC_GPIO_NUM 5

#define Y9_GPIO_NUM 16
#define Y8_GPIO_NUM 17
#define Y7_GPIO_NUM 18
#define Y6_GPIO_NUM 12
#define Y5_GPIO_NUM 10
#define Y4_GPIO_NUM 8
#define Y3_GPIO_NUM 9
#define Y2_GPIO_NUM 11
#define VSYNC_GPIO_NUM 6
#define HREF_GPIO_NUM 7
#define PCLK_GPIO_NUM 13

// LoRa
#define LORA_TX 43
#define LORA_RX 44

#endif /* Pins_Arduino_h */
Binary file added variants/sensebox_eye/tinyuf2.bin
Binary file not shown.
50 changes: 50 additions & 0 deletions variants/sensebox_eye/variant.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#include "esp32-hal-gpio.h"
#include "pins_arduino.h"
#include "driver/rmt_tx.h"

extern "C" {

void blinkLED(uint8_t color[3], rmt_channel_handle_t led_chan, rmt_encoder_handle_t ws2812_encoder, rmt_transmit_config_t tx_config) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use Arduino APIs for RMT and do not use ESP_ERROR_CHECK because it will abort in case of error and bootloop the device. We have ready-to-use APIs for controlling ws2812 (even as LED_BUILTIN). Have a look at those

ESP_ERROR_CHECK(rmt_transmit(led_chan, ws2812_encoder, color, sizeof(color), &tx_config));
rmt_tx_wait_all_done(led_chan, portMAX_DELAY);

// Wait a moment
delay(50);

// Turn LED off
uint8_t pixel_off[3] = { 0x00, 0x00, 0x00 };
ESP_ERROR_CHECK(rmt_transmit(led_chan, ws2812_encoder, pixel_off, sizeof(pixel_off), &tx_config));
rmt_tx_wait_all_done(led_chan, portMAX_DELAY);
}

void initVariant(void) {
rmt_channel_handle_t led_chan = NULL;
rmt_tx_channel_config_t tx_chan_config = {};
tx_chan_config.clk_src = RMT_CLK_SRC_DEFAULT;
tx_chan_config.resolution_hz = 10 * 1000 * 1000;
tx_chan_config.mem_block_symbols = 64;
tx_chan_config.trans_queue_depth = 4;
tx_chan_config.gpio_num = (gpio_num_t)PIN_LED;
tx_chan_config.flags.invert_out = false;
tx_chan_config.flags.with_dma = false;
ESP_ERROR_CHECK(rmt_new_tx_channel(&tx_chan_config, &led_chan));

// WS2812 encoder config (available in `esp-rmt`)
rmt_encoder_handle_t ws2812_encoder = NULL;
rmt_bytes_encoder_config_t bytes_encoder_config = {
.bit0 = { .duration0 = 4, .level0 = 1, .duration1 = 9, .level1 = 0 },
.bit1 = { .duration0 = 8, .level0 = 1, .duration1 = 5, .level1 = 0 },
.flags = { .msb_first = true }
};
ESP_ERROR_CHECK(rmt_new_bytes_encoder(&bytes_encoder_config, &ws2812_encoder));

ESP_ERROR_CHECK(rmt_enable(led_chan));

rmt_transmit_config_t tx_config = {
.loop_count = 0
};

uint8_t pixel[3] = { 0x10, 0x00, 0x00 }; // green
blinkLED(pixel, led_chan, ws2812_encoder, tx_config);
}
}
4 changes: 4 additions & 0 deletions variants/sensebox_mcu_esp32s2/APOTA.ino
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// APOTA is a arduino fallback sketch that is written to OTA1_Partition.
// APOTA opens an access point which waits to receive a .binfile on /sketch.
// After succesful upload, the file is written to OTA0_Partition and the microcontroller reboots to the newly uploaded sketch.

#define DISPLAY_ENABLED

#include <WiFi.h>
Expand Down