r/Seeed_Studio

Huge Thank You to Seed Studio
▲ 1 r/Seeed_Studio+1 crossposts

Huge Thank You to Seed Studio

Just wanted to give a huge Thank You! to Seed Studio. I am working on an AI project and am using your Jetson Orin Nano line as well as Cameras, IMU and other parts. Really appreciate all you are doing, specifically in your Wiki. Helped a lot to set everything up and do initial testing.

In the picture is your 10 inch Touchscreen which is running a local LLM through one of your Carrier Board setups, coupled with Cameras, Speakers and the wonderful 4 Array microphone. Everything fits nicely.

u/WaveRiderDZ — 9 hours ago
▲ 3 r/Seeed_Studio+1 crossposts

Indicator D1 Pro Aura Panel

hi, this Is my first attempt to create a firmware but if someone would like to test, feel free.

it's a little bit different from the original, it comes wit weather with a 3-day forecast based on the city that you choose, time settings fixed with ntp server. some gui changes, just take a look ;)

https://github.com/Buko84/SenseCAP-Indicator-D1-Pro-AuraPanel

u/maciejb84 — 2 days ago

Made a shield for XIAO, and now it has access to 50+ modular PCBs, looking for request on what modules would be relevant or added next.

Hi guys, this is a long project of mine, ive been making my own pcbs with ports, but thought would be really cool to add xiao support, Im not a fan or dropping links on reddit, but the name is axiometa modules if you want to look it up

I just thought it was a cool accessory that works with all xiao boards

u/Polia31 — 5 days ago
▲ 26 r/Seeed_Studio+1 crossposts

Seeedstudio 7.5" monochrome setup

I bought this Seeedstudio after my last weatherstation died. I purchased a Ecowitt Wittboy without a display and wanted to create my own display.

I was shocked how complicated some of the display examples were online and even in the example provided by the Seeedstudio cookbook for the device. I decided to go the Puppet route of the device pulling a PNG file for display update.

I quickly learned that all the default colors made the output unreadable and the font size was just too small. There were no good examples to follow to copy from that used Puppet.

I worked a few hours and modified several examples and came up with this output.

To help others in the future, I posted the files to github and I am still working on documenting the installation process to help others in the future. Github link: https://github.com/tollycat/ha-eink-wx/

u/exploresouthcarolina — 7 days ago
▲ 167 r/Seeed_Studio+1 crossposts

Anyone else testing the SeeedStudio nRF54L15 + Wio-LR2021 eval kit?

Currently running it using this Zephyr-based build someone put together:

github.com/dasmensch-su/Meshtastic-nRF54L15-LR2021-Multi-SF

Still early, but it's now working after some tweaks. The nRF54L15 is a nice step up from the nRF52840, it doubles the clock speed and bumps flash to 1.5MB.

This is my test enclosure running off a DFRobot Solar Power Manager with three 18650s.

Anyone else messing with this hardware? Would love to swap notes.

u/Fir3 — 9 days ago
▲ 133 r/Seeed_Studio+3 crossposts

AR Tamagotchi on ESP32S3

I’ve been working on an ESP32-S3 AR pet using a Seeed Studio XIAO ESP32-S3 Sense, round display, touch input, and AprilTag pose tracking.

In this most recent iteration I fixed the touch coordinate mapping, added touch picking with the render buffer, and cleaned up the animation state machine. Now swipes, taps, and camera positioning can trigger reactions like dancing, waving, sitting, standing, and turning toward the camera much more reliably.

I think the last step is to add in some UI that shows pet stats and some more game logic.

u/the_man_of_the_first — 10 days ago

Wio Tracker L1 Pro

I've been experimenting with both Meshtastic and MeshCore. 

My initial set up was two Wio Tracker L1 Pro's running Meshtastic. I don't have much around me, but both devices worked and could communicate with one another. The hardware seemed stable and I was happy with sending and receiving messages directly from the device. It was not ideal, but it worked.

I then bought two more to set up Mesh Core (I know I could have just flashed the first two, but I want to keep both platforms for learning).   Unless I am missing something, MeshCore (1.16) requires the phone app or browser to send and read messages? 

After the Meshtastic experience, it seems archaic that I cannot do anything from the device. 

I am using the firmware from meshcore.io.

reddit.com
u/NoAbbreviations7150 — 8 days ago
▲ 12 r/Seeed_Studio+1 crossposts

seeed esp32-c data interference.

any ideas what is happening? Using WLED as controller. as soon as i set the second ring as a segment with alternative pin it starts doing this. If i remove the second ring physically, it still does it on one ring. not until i delete the segment in wled does the glitching stop. thanks :)

u/a-warm-breeze — 12 days ago
▲ 3 r/Seeed_Studio+1 crossposts

E1002 issue (not waking from deep sleep, time wrong) ESPHOME

I just got a 2nd e1002 and I'm having a strange issues. The timestamp is wrong when pulled and no matter what I do it won't wake itself from deep sleep. If I use the wakeup button and refresh button I have programmed it does update, but again bad timestamp.

I have a second e1002 and when I use the exact same code (except the device definitions, I still have the same problem).

What I have NOT done is to reflash the working one using the current ESPHOME version as if it is that I don't want 2 non-functioning units. Code below, and help appreciate.

# Board: Generic ESP32-S3 Board (Generic)
# Definition: definitions/boards/generic-esp32s3/manifest.yaml

esphome:
  name: eink-color-pool
  friendly_name: Eink Color Pool
  on_boot:
    - priority: 600
      then:
        - output.turn_on: bsp_sd_enable
        - output.turn_on: bsp_battery_enable
        - delay: 200ms
        - component.update: battery_voltage
        - component.update: battery_level
    - priority: -100 
      then:
        - logger.log: "*** Device woke up from deep sleep ***"
        - light.turn_on: onboard_led
        - delay: 1s
        - logger.log: "*** Starting application ***" 


esp32:
  variant: esp32s3
  framework:
    type: esp-idf

logger:

api:
  encryption:
    key: "*******************"

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: Eink Color Pool Fallback Hotspot
    password: "*************"


psram:
  mode: octal
  speed: 80MHz

captive_portal:


globals:
  - id: sleep_counter
    type: int
    restore_value: yes  # Use RTC storage to maintain counter during sleep
    initial_value: '0'  
  - id: battery_glyph
    type: std::string
    restore_value: no
    initial_value: "\"\\U000F0079\""   # default full battery
  - id: wifi_status
    type: int
    restore_value: no
    initial_value: "0"
  - id: recorded_display_refresh
    type: int
    restore_value: yes
    initial_value: '0' 

font:
  - file: "gfonts://Inter@700"
    id: myFont
    size: 14

# Deep-sleep, wake by GPIO3
deep_sleep:
  id: deep_sleep_1
  run_duration: 5min  # Device wake up and run 120s. This should not run for 120s because of other code
  sleep_duration: 60min  # deep sleep for 30m
  wakeup_pin: GPIO3          # Green button
  wakeup_pin_mode: INVERT_WAKEUP

# SPI bus for display
spi:
  clk_pin: GPIO7
  mosi_pin: GPIO9
# I2C bus for temperature and humidity sensor
i2c:
  scl: GPIO20
  sda: GPIO19

http_request:
  verify_ssl: false
  timeout: 30s
  watchdog_timeout: 35s

online_image:
  - id: dashboard_image
    format: JPG
    type: RGB565
    buffer_size: 65536
    url: http://192.168.1.123:10000/dashboard-today?viewport=800x480&dithering=floyd-steinberg&format=jpeg&theme=Graphite+E-ink+Light&wait=5000&lang=en
    update_interval: never  # Not needed now was 120s
    on_download_finished:
      - component.update: epaper_display
      - delay: 60s # Time to allow display to refresh
      - deep_sleep.enter: deep_sleep_1
   # on_error: 
    #  - delay: 30s
    #  - deep_sleep.enter: deep_sleep_1

display:
  - platform: epaper_spi
    id: epaper_display
    model: Seeed-reTerminal-E1002
    update_interval: never
    lambda: |-
      char str[200];
      char strbat[200];
      char upd[] = "updated: ";
      char bat[] = "battery: ";
      it.image(0, 0, id(dashboard_image));
      time_t currTime = id(ha_time).now().timestamp;
      strftime(str, sizeof(str), "%I:%M %p", localtime(&currTime));
      snprintf(strbat, sizeof(strbat), "%.2f",id(battery_level).state);
      it.print(10, 465,id(myFont),Color::BLACK, strcat(upd,str));
      it.print(200, 465, id(myFont),Color::BLACK, strcat(bat,strbat));
      

      

# Home Assistant time
time:
  - platform: homeassistant
    id: ha_time

sensor:
  - platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
    update_interval: 60s
    name: "WiFi Signal dB"
    id: wifi_signal_db
    entity_category: "diagnostic"
  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "WiFi Signal Percent"
    id: wifi_signal_percent
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "%"
    entity_category: "diagnostic"
  - platform: uptime
    update_interval: 60s    
    name: Uptime
  - platform: internal_temperature
    update_interval: 60s    
    name: "Internal Temperature"
  - platform: template
    update_interval: 60s      
    name: "Display Last Update"
    device_class: timestamp
    entity_category: "diagnostic"
    id: display_last_update
    lambda: 'return id(ha_time).now().timestamp;'
  - platform: template
    name: "Display Refresh Count"
    accuracy_decimals: 0
    unit_of_measurement: "Refreshes"
    state_class: "total_increasing"
    entity_category: "diagnostic"
    lambda: 'return id(recorded_display_refresh) += 1;'  
  - platform: sht4x
    update_interval: 60s      
    temperature:
      name: "Temperature"
      id: temp_sensor
    humidity:
      name: "Relative Humidity"
      id: hum_sensor
  - platform: adc
    update_interval: 60s
    pin: GPIO1
    name: "Battery Voltage"
    id: battery_voltage
    attenuation: 12db
    filters:
      - multiply: 2.0
  - platform: template
    update_interval: 60s
    name: "Battery Level"
    id: battery_level
    unit_of_measurement: "%"
    icon: "mdi:battery"
    device_class: battery
    state_class: measurement
    lambda: 'return id(battery_voltage).state;'
    on_value:
      then:
        - lambda: |-
            int pct = int(x);
            if (pct <= 10)      id(battery_glyph) = "\U000F007A";
            else if (pct <= 20) id(battery_glyph) = "\U000F007B";
            else if (pct <= 30) id(battery_glyph) = "\U000F007C";
            else if (pct <= 40) id(battery_glyph) = "\U000F007D";
            else if (pct <= 50) id(battery_glyph) = "\U000F007E";
            else if (pct <= 60) id(battery_glyph) = "\U000F007F";
            else if (pct <= 70) id(battery_glyph) = "\U000F0080";
            else if (pct <= 80) id(battery_glyph) = "\U000F0081";
            else if (pct <= 90) id(battery_glyph) = "\U000F0082";
            else                id(battery_glyph) = "\U000F0079";
    filters:
      - calibrate_linear:
          - 4.15 -> 100.0
          - 3.96 -> 90.0
          - 3.91 -> 80.0
          - 3.85 -> 70.0
          - 3.80 -> 60.0
          - 3.75 -> 50.0
          - 3.68 -> 40.0
          - 3.58 -> 30.0
          - 3.49 -> 20.0
          - 3.41 -> 10.0
          - 3.30 -> 5.0
          - 3.27 -> 0.0
      - clamp:
          min_value: 0
          max_value: 100

# Button configuration
binary_sensor:
  
#  - platform: gpio
#    pin:
#      number: GPIO3         # Green button, commented out because I'm using it for wakeup
#      mode: INPUT_PULLUP
#      inverted: true
#    id: button_1
#    name: "Green Button"
#    on_press:
#      then:
#        - logger.log: "*** Green Button (GPIO3) Pressed ***"
        
  - platform: gpio
    pin:
      number: GPIO4          # Right white button
      mode: INPUT_PULLUP
      inverted: true
    id: button_2
    name: "Right Button"
    on_press:
      then:
        - logger.log: "*** Right Button (GPIO4) Pressed ***"
        
  - platform: gpio
    pin:
      number: GPIO5           # Left white button
      mode: INPUT_PULLUP
      inverted: true
    id: button_3
    name: "Left Button"
    on_press:
      then:
        - logger.log: "*** Left Button (GPIO5) Pressed ***"
        - component.update: dashboard_image


output:
  - platform: gpio
    pin: GPIO6
    id: bsp_led
    inverted: true
  - platform: gpio
    pin: GPIO16
    id: bsp_sd_enable
  - platform: gpio
    pin: GPIO21
    id: bsp_battery_enable

# Onboard LED
light:
  - platform: binary
    name: "Onboard LED"
    output: bsp_led
    id: onboard_led
reddit.com
u/Flat_Recognition_733 — 11 days ago