The main processor chip is the Espressif ESP32-S3 with 3.3v logic/power. It has 8MB of Flash and 2MB of PSRAM.
The ESP32-S3 comes with WiFi and Bluetooth LE baked right in, though CircuitPython only supports WiFi at this time, not BLE on the S3 chip.
In the center of the board is the OV5640 camera module. It has a 72 degree view, 5MP sensor and an auto-focus motor.
Below the camera connector is a jumper for providing 3.3V to the auto-focus motor. You can cut the jumper to disconnect DATA1 from 3.3V to disable auto-focus.
The camera utilizes the following pins:
-
VSYNC - GPIO5. Accessible in CircuitPython with
board.CAMERA_VSYNC
and Arduino withVSYNC_GPIO_NUM
. -
HREF - GPIO6. Accessible in CircuitPython with
board.CAMERA_HREF
and Arduino withHREF_GPIO_NUM
. -
XCLK - GPIO8. Accessible in CircuitPython with
board.CAMERA_XCLK
and Arduino withXCLK_GPIO_NUM
. -
PCLK - GPIO11. Accessible in CircuitPython with
board.CAMERA_PCLK
and Arduino withPCLK_GPIO_NUM
. -
PWDN - GPIO21. Accessible in CircuitPython with
board.CAMERA_PWDN
and Arduino withPWDN_GPIO_NUM
. -
DATA2 - GPIO13. Accessible in CircuitPython with
board.CAMERA_DATA2
and Arduino withY2_GPIO_NUM
. -
DATA3 - GPIO15. Accessible in CircuitPython with
board.CAMERA_DATA3
and Arduino withY3_GPIO_NUM
. -
DATA4 - GPIO16. Accessible in CircuitPython with
board.CAMERA_DATA4
and Arduino withY4_GPIO_NUM
. -
DATA5 - GPIO14. Accessible in CircuitPython with
board.CAMERA_DATA5
and Arduino withY5_GPIO_NUM
. -
DATA6 - GPIO12. Accessible in CircuitPython with
board.CAMERA_DATA6
and Arduino withY6_GPIO_NUM
. -
DATA7 - GPIO10. Accessible in CircuitPython with
board.CAMERA_DATA7
and Arduino withY7_GPIO_NUM
. -
DATA8 - GPIO9. Accessible in CircuitPython with
board.CAMERA_DATA8
and Arduino withY8_GPIO_NUM
. -
DATA9 - GPIO7. Accessible in CircuitPython with
board.CAMERA_DATA9
and Arduino withY9_GPIO_NUM
. -
RESET - GPIO47. Accessible in CircuitPython with
board.CAMERA_RESET
and Arduino withRESET_GPIO_NUM
.
For more information on the OV5640 pins, check out the Adafruit Learn Guide for the module.
On the front of MEMENTO is the 1.54" 240x240 Color TFT. It can be used for previewing the camera images or user interface design. It uses the ST7789 driver, which has both Arduino and CircuitPython support. It uses the following pins for SPI communication:
- MOSI - GPIO35. Accessible in CircuitPython with
board.MOSI
and Arduino withMOSI
. - SCK - GPIO36. Accessible in CircuitPython with
board.SCK
and Arduino withSCK
. - MISO - GPIO37. Accessible in CircuitPython with
board.MISO
and Arduino withMISO
. - DC - GPIO40. Accessible in CircuitPython with
board.TFT_DC
and Arduino withTFT_DC
. - CS - GPIO39. Accessible in CircuitPython with
board.TFT_CS
and Arduino withTFT_CS
. - Backlight - GPIO45. Accessible in CircuitPython with
board.TFT_BACKLIGHT
and Arduino withTFT_BACKLIGHT
. - Reset - GPIO38. Accessible in CircuitPython with
board.TFT_RESET
and Arduino withTFT_RESET
orTFT_RST
.
To the right of the ESP32-S3 module and above the TFT connector are the breakout pads for hardware UART. These pins, labeled RX and TX on the board silk, are for more intense debugging needs. You can solder wires to the through-hole pads to connect to a console cable.
The MEMENTO includes an AW9523 GPIO Expander. The IO Expander is connected via the I2C bus. The main purpose of the expander is to add additional pins to communicate with the buttons
The I2C address of the GPIO expander is 0x58.
On the back of the board, to the left of the GPIO expander, is an LIS3DH accelerometer. It is a triple-access accelerometer that can detect orientation, shaking or movement. It communicates over I2C on address 0x19. Its interrupt (IRQ) pin is connected to GPIO3, which is accessible in CircuitPython with board.IRQ
and Arduino with 3
.
On the front of the board are six user buttons. They are connected through the AW9523 GPIO expander:
- OK button - pin 11
- Select button - pin 1
- Up button - pin 13
- Down button - pin 15
- Left button - pin 14
- Right button - pin 12
Both the Arduino and CircuitPython PyCamera libraries have built-in support for these buttons to easily access them.
Along the top edge of the board are two buttons. The boot button, labeled Boot and Shutter on the board silk, is connected to GPIO0. It's accessible in CircuitPython with board.BUTTON
and Arduino with SHUTTER_BUTTON
. You'll hold it while pressing reset to enter ROM Bootloader mode.
The reset button, labeled RST on the board silk, is connected to the ESP32-S3 reset pin. Click it once to restart your firmware. Click it again after about a half second to enter bootloader mode.
On the front of MEMENTO, above the cluster of four user buttons, is the analog MEMS microphone. It is labeled Mic on the board silk. It can be used as a sensor to detect loud sounds. It is not for recording video with audio. The analog input from the microphone is connected to GPIO2. It's accessible in CircuitPython with board.MIC
and Arduino with 2
.
Below the TFT display is the speaker. It is labeled Speaker on the board silk. The output from the speaker is connected to GPIO46. It is accessible in CircuitPython with board.SPEAKER
and Arduino with SPEAKER
.
The speaker is muted via pin 0 on the AW9523 GPIO expander, so don't forget to de-mute before expecting it to make noise!
On the left side of the board are connectors labeled A0 and A1. These are 3-pin JST connectors for sensors, NeoPixels, or analog output or input. A0 is connected to GPIO17 (accessible with board.A0
in CircuitPython and A0
in Arduino) and A1 is connected to GPIO18 (accessible with board.A1
in CircuitPython and A1
in Arduino).
Between both connectors is a jumper labeled 5V3. It can be cut and soldered to use 3V instead of 5V for the VCC signal on the JST connectors.
There is a 4-pin Stemma QT connector on the left. The I2C has pullups to 3.3V power.
The I2C pins are connected to GPIO34 (SDA) and GPIO33 (SCL). In Arduino, you can use the STEMMA connector with Wire
. In CircuitPython, you can use the STEMMA connector with board.SCL
and board.SDA
, board.I2C()
or board.STEMMA_I2C()
.
Towards the bottom left corner on the back of MEMENTO is the microSD card slot. You can store images or animations to any SPI-capable micro SD card.
-
SDCS (chip select pin) - connected to GPIO48. It is accessible in CircuitPython with
board.CARD_CS
and Arduino withSD_CS
orSD_CHIP_SELECT
. - SDCD (card detect pin) - connected to pin 9 on the AW9523.
At the top of the board, to the right of the boot button, is the NeoPixel. This addressable RGB LED works both as a status LED (in CircuitPython and the bootloader), and can be controlled with code. It is connected to GPIO1 and is available in CircuitPython as board.NEOPIXEL
and in Arduino as PIN_NEOPIXEL
or NEOPIXEL_PIN
.
- USB-C port - This is used for both powering and programming the board. You can power it with any USB C cable. When USB is plugged in it will charge the LiPoly battery.
- LiPoly connector/charger - You can plug in any 350mAh or larger 3.7/4.2V LiPoly battery into this JST 2-PH port to both power your MEMENTO and charge the battery. If the battery is plugged in and USB is plugged in, the MEMENTO will power itself from USB and it will charge the battery up. There is an outline on the board silk that is perfectly sized for the 420mAh battery in the shop.
-
Battery Monitor Pin - You can monitor the battery percentage via an ADC pin accessed with
board.BATTERY_MONITOR
in CircuitPython orBATT_MONITOR
in Arduino. - Power Selection Jumper - Above the TFT display ribbon cable is the power selection jumper. It selects whether the 2.8V supply is powered from 3.3V or 5V. It can be cut and soldered to use 5V instead of 3.3V.
Text editor powered by tinymce.