Přeskočit na obsah

Plošná ryba Jádro (PR-CORE)

Stránka výrobku · Nahrát firmware z prohlížeče

Základní deska všech produktů Plošné ryby, prodává se i samostatně pro vlastní projekty. ESP32-C6 s WiFi 6, Bluetooth LE a Thread/Zigbee rádiem, nabíječka Li-ion, dva konektory Qwiic a jeden konektor pro hlavici. Firmware je ESPHome, takže většinu věcí napíšete v YAML bez programování.

Co je na desce

  • ESP32-C6-WROOM-1-N8, 8 MB flash
  • USB-C s nativním USB (nahrání firmwaru, logy, napájení, žádný ovladač)
  • LDO 3,3 V
  • Nabíječka Li-ion MCP73831, konektor baterie JST-PH 2 pin (článek 18650 v držáku s kabelem), ochrana proti přepólování
  • Měření napětí baterie (dělič 100k/100k)
  • 2x Qwiic / Stemma QT (I2C)
  • Konektor hlavice JST-PH 6 pin
  • Tlačítka BOOT a RESET
  • Stavová LED, obyčejná jednobarevná
  • Pull-up 4,7k pro 1-Wire (propojka JP1)
  • Volitelná šroubovací svorka 5 V

Návrh desky v KiCadu 9 se připravuje. Zadání pinoutu je v hardware/core/README.md.

Pinout

Signál GPIO Poznámka
VBAT_SENSE GPIO0 ADC1_CH0, dělič 100k/100k z baterie
HEAD_C / 1-Wire GPIO1 pull-up 4,7k na 3V3 přes JP1 (z výroby spojená)
HEAD_A GPIO2 LP GPIO (umí budit z hlubokého spánku), UART RX, HX711 DOUT, data WS2812
HEAD_B GPIO3 LP GPIO, UART TX, HX711 SCK
I2C SDA (Qwiic) GPIO6
I2C SCL (Qwiic) GPIO7
STATUS_LED GPIO8 obyčejná LED proti 3V3, svítí při low; strapping pin, stejně jako na ESP32-C6-DevKitC-1
BOOT GPIO9 strapping, stisk = low
USB D-/D+ GPIO12/13 nativní USB
UART0 TX/RX GPIO16/17 testovací body
HEAD_EN GPIO18 high = napájení hlavice zapnuté
CHRG_STAT GPIO19 low = nabíjí, potřebuje pull-up

Konektory

Hlavice, JST-PH 6 pin

Pin Signál
1 GND
2 3V3 (spínané přes HEAD_EN)
3 5V (VBUS z USB nebo svorky, spínané přes HEAD_EN, na baterii není)
4 HEAD_A, GPIO2
5 HEAD_B, GPIO3
6 HEAD_C, GPIO1

Konektor hlavice je otevřená specifikace, podobně jako rozšiřující karty notebooků Framework. Rozměry, piny, napájení a pravidla pro vlastní hlavice popisuje hardware/heads/SPEC.md, takže si vlastní hlavu může postavit kdokoli. Hlavice i náhradní díly (víka, těsnění, vývodky, kabely) budeme prodávat i samostatně.

Qwiic, JST-SH 4 pin (2x): 1 GND, 2 3V3 (nespínané), 3 SDA GPIO6, 4 SCL GPIO7.

Baterie, JST-PH 2 pin: 1 BAT+, 2 GND. Deska má na této straně ochranu proti přepólování, obrácený článek ji nepoškodí, zařízení jen nenaběhne. Kabely článků z různých obchodů ale bývají zapojené opačně, takže před zapojením vlastního článku zkontrolujte + a - podle značek na desce.

Napájení a hluboký spánek

  • Z USB nebo svorky 5 V je k dispozici 5 V i 3V3. Baterie se přitom nabíjí.
  • Na baterii je jen 3V3. Hlavice, která potřebuje 5 V (třeba pásek WS2812), na baterii nepoběží.
  • HEAD_EN spíná 3V3 i 5V hlavice. Firmware ho zapíná při startu a vypíná před spánkem, takže hlavice ve spánku nebere nic.
  • Qwiic napájení spínané není. Pro bateriový provoz vybírejte moduly s malým klidovým odběrem (SHT40 má ve spánku asi 1 µA).
  • Z hlubokého spánku umí budit časovač a piny HEAD_A, HEAD_B (LP GPIO).

Firmware pro vlastní projekt

Co potřebujete

  • ESPHome 2026.10.0 nebo novější (pip install esphome, nebo doplněk ESPHome v Home Assistant)
  • Složku firmware/ z repozitáře

Začněte s jadro.yaml

firmware/jadro.yaml obsahuje vše ze společného core.yaml: WiFi, API pro HA, OTA, Improv přes USB i Bluetooth, webový server, stavovou LED, měření baterie, stav nabíjení, tlačítko BOOT, spínač hlavice a výpis I2C adres v logu.

cd firmware
cp secrets.example.yaml secrets.yaml   # vyplňte WiFi, API klíč a OTA heslo
esphome run jadro.yaml                 # první nahrání přes USB, další už přes WiFi
esphome logs jadro.yaml

WiFi a záložní síť. Veřejné obrazy z https://plosnaryba.cz/firmware nemají žádnou záložní WiFi síť ani výchozí heslo (EN 18031). WiFi se v nich nastavuje jen přes Improv: kabelem USB-C z prohlížeče, nebo přes Bluetooth z Home Assistant s potvrzením stiskem BOOT. Ve vlastním buildu (esphome run nebo build.sh --vlastni se secrets.yaml) je navíc zapnutá záložní síť Plosna ryba <produkt> s portálem pro zadání WiFi. Její heslo je substitution ap_heslo, výchozí zmente-me nahraďte vlastním.

Vlastní senzor

Zkopírujte jadro.yaml pod novým jménem, nechte packages: a pod ně přidejte své komponenty. Příklad: teploměr na 1-Wire a tlačítko na HEAD_A.

substitutions:
  name: moje-cidlo
  friendly_name: "Moje čidlo"
  produkt: jadro

packages:
  lang: !include lang/cs.yaml
  core: !include core.yaml

one_wire:
  - platform: gpio
    pin: GPIO1

sensor:
  - platform: dallas_temp
    name: "Teplota"
    update_interval: 60s

binary_sensor:
  - platform: gpio
    name: "Tlačítko"
    pin:
      number: GPIO2
      mode:
        input: true
        pullup: true
      inverted: true

Seznamy jako sensor: nebo binary_sensor: se s těmi z core.yaml spojí, nic nepřepíšete. Pokud chcete upravit entitu z jádra, použijte !extend s jejím id:

sensor:
  - id: !extend napeti_baterie
    update_interval: 10min

Entitu z jádra odstraníte přes !remove:

light:
  - id: !remove stavova_led

Užitečná id z core.yaml: napajeni_hlavice (switch), stavova_led (light), napeti_baterie, baterie_procenta (sensor), nabijeni, tlacitko_boot (binary_sensor), bus_qwiic (I2C), cas_ha, cas_sntp (time).

Provoz na baterii

Přidejte balíček se spánkem a po dokončení měření nastavte mereni_hotovo:

packages:
  lang: !include lang/cs.yaml
  core: !include core.yaml
  spanek: !include spanek.yaml

substitutions:
  interval_vychozi: "30"   # minuty, jde změnit z HA

sensor:
  - platform: dallas_temp
    name: "Teplota"
    on_value:
      then:
        - lambda: id(mereni_hotovo) = true;

Balíček přidá entitu Interval měření, přepínač Režim údržby a logiku: po probuzení časovačem počká na spojení s HA a na měření, odešle data a usne. Bdění trvá jen pár sekund (substitution doba_bdeni_ms, výchozí 4000), protože právě bdění rozhoduje o výdrži baterie. Po zapnutí, resetu nebo nahrání firmwaru zůstane vzhůru 5 minut kvůli zadání WiFi (doba_bdeni_studeny_start_ms). Když se nepřipojí k HA nebo měření nepřijde, každé čekání vzdá po 10 s a usne i tak.

Režim údržby (nespí, OTA, změny nastavení hned) zapne pomocník input_boolean v Home Assistant, který si zařízení přečte po každém připojení (substitution udrzba_entita, výchozí input_boolean.plosna_ryba_udrzba), dále stisk BOOT během bdění nebo přepínač Režim údržby, dokud je zařízení vzhůru. Zapnutý pomocník režim zapne, vypnutý ho vypne jen při změně během bdění, ne podle prvního stavu po probuzení, takže BOOT funguje i s vypnutým pomocníkem. Spícímu zařízení HA nastavení poslat nemůže, nastavení se tedy mění v režimu údržby. Stavová LED v režimu údržby každé 2 s krátce blikne.

Texty a jazyk

Produkty mají všechny texty v lang/cs.yaml a lang/en.yaml jako substitutions. Ve vlastním projektu to dodržovat nemusíte, ale lang balíček nechte vložený, core.yaml z něj bere názvy svých entit.

Na co si dát pozor

  • GPIO8 a GPIO9 jsou strapping piny. Nepřipojujte na ně nic, co by je při startu táhlo jinam (LED a tlačítko z desky jsou v pořádku).
  • RMT (WS2812) má na C6 jen 96 symbolů. Stavová LED je obyčejná LED na GPIO a RMT nepoužívá, takže se vejdou dva pásky, každý s rmt_symbols: 48.
  • Logger běží přes nativní USB. UART0 na testovacích bodech GPIO16/17 je volný pro vaše zařízení.
  • ADC je jen na GPIO0 až GPIO6. GPIO0 je obsazený měřením baterie.
  • Bluetooth Improv bere dost RAM. Když budete potřebovat paměť (HTTPS, velké displeje), odeberte ho: improv_ble: !remove.

Nahrání bez ESPHome

Hotové obrazy všech produktů nahrajete z prohlížeče na https://plosnaryba.cz/firmware. Když deska nereaguje, podržte BOOT, stiskněte a pusťte RESET, pusťte BOOT. Deska je pak v režimu nahrávání.

Bezpečnost

  • Li-ion články: nepoužívejte poškozené nebo nafouklé, nenabíjejte pod 0 °C ani nad 45 °C, nezkratujte. Nabíječka na desce je určená pro jeden článek 3,7 V.
  • Deska pracuje jen s bezpečným malým napětím. Nic z elektrické sítě 230 V na ni nepřipojujte, ani přes relé modul na stejné desce plošných spojů bez izolace.
  • Deska sama není vodotěsná. Venku ji dávejte do krabičky s vývodkami.