denko 0.13.4 → 0.13.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build_esp32.yml +1 -0
- data/CHANGELOG.md +17 -1
- data/DEPS_CLI.md +2 -2
- data/DEPS_IDE.md +4 -3
- data/HARDWARE.md +41 -30
- data/README.md +2 -2
- data/benchmarks/i2c_ssd1306_refresh.rb +5 -0
- data/denko.gemspec +4 -4
- data/examples/i2c/search.rb +2 -0
- data/examples/sensor/hcsr04.rb +14 -0
- data/lib/denko/board/pulse.rb +4 -0
- data/lib/denko/board.rb +1 -0
- data/lib/denko/sensor/hcsr04.rb +33 -0
- data/lib/denko/sensor.rb +1 -0
- data/lib/denko/version.rb +1 -1
- data/src/denko_wifi.ino +39 -14
- data/src/lib/Denko.cpp +6 -2
- data/src/lib/Denko.h +4 -2
- data/src/lib/DenkoCoreIO.cpp +5 -3
- data/src/lib/DenkoDefines.h +16 -1
- data/src/lib/DenkoLEDArray.cpp +1 -1
- data/src/lib/DenkoPulseInput.cpp +32 -1
- data/vendor/board-maps/.gitignore +56 -0
- data/vendor/board-maps/.gitmodules +24 -0
- data/vendor/board-maps/BoardMap.h +1492 -0
- data/vendor/board-maps/README.md +52 -0
- data/vendor/board-maps/lib/boards_parser.rb +66 -0
- data/vendor/board-maps/lib/header_parser.rb +189 -0
- data/vendor/board-maps/run.rb +57 -0
- data/vendor/board-maps/yaml/0XCB_HELIOS.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_CAMERA_ESP32S3.yml +11 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_REVTFT.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_TFT.yml +27 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3.yml +34 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_NOPSRAM.yml +34 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_REVTFT.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_TFT.yml +27 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +34 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_CAN.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_DVI.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_PROP_MAKER.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_RFM.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_SCORPIO.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_THINKINK.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_USB_HOST.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_ESP32.yml +24 -0
- data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_KB2040_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_MACROPAD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_MATRIXPORTAL_ESP32S3.yml +16 -0
- data/vendor/board-maps/yaml/ADAFRUIT_METRO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +12 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +22 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_N4R2.yml +20 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +20 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +28 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_STEMMAFRIEND_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_TRINKEYQT_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ALKS.yml +34 -0
- data/vendor/board-maps/yaml/AMPERKA_WIFI_SLOT.yml +16 -0
- data/vendor/board-maps/yaml/ARTRONSHOP_RP2_NANO.yml +32 -0
- data/vendor/board-maps/yaml/ATD143_S3.yml +41 -0
- data/vendor/board-maps/yaml/AVENTEN_S3_SYNC.yml +38 -0
- data/vendor/board-maps/yaml/AVR_ADK.yml +24 -0
- data/vendor/board-maps/yaml/AVR_BT.yml +16 -0
- data/vendor/board-maps/yaml/AVR_CIRCUITPLAY.yml +14 -0
- data/vendor/board-maps/yaml/AVR_DUEMILANOVE.yml +16 -0
- data/vendor/board-maps/yaml/AVR_ESPLORA.yml +20 -0
- data/vendor/board-maps/yaml/AVR_ETHERNET.yml +16 -0
- data/vendor/board-maps/yaml/AVR_FIO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_GEMMA.yml +6 -0
- data/vendor/board-maps/yaml/AVR_INDUSTRIAL101.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LEONARDO.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LEONARDO_ETH.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LILYPAD.yml +16 -0
- data/vendor/board-maps/yaml/AVR_LILYPAD_USB.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LININO_ONE.yml +20 -0
- data/vendor/board-maps/yaml/AVR_MEGA.yml +24 -0
- data/vendor/board-maps/yaml/AVR_MEGA2560.yml +24 -0
- data/vendor/board-maps/yaml/AVR_MICRO.yml +20 -0
- data/vendor/board-maps/yaml/AVR_MINI.yml +16 -0
- data/vendor/board-maps/yaml/AVR_NANO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_NANO_EVERY.yml +22 -0
- data/vendor/board-maps/yaml/AVR_NG.yml +16 -0
- data/vendor/board-maps/yaml/AVR_PRO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_ROBOT_CONTROL.yml +22 -0
- data/vendor/board-maps/yaml/AVR_ROBOT_MOTOR.yml +19 -0
- data/vendor/board-maps/yaml/AVR_UNO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_UNO_WIFI_DEV_ED.yml +16 -0
- data/vendor/board-maps/yaml/AVR_UNO_WIFI_REV2.yml +22 -0
- data/vendor/board-maps/yaml/AVR_YUN.yml +20 -0
- data/vendor/board-maps/yaml/AVR_YUNMINI.yml +20 -0
- data/vendor/board-maps/yaml/AirM2M_CORE_ESP32C3.yml +14 -0
- data/vendor/board-maps/yaml/BEE_DATA_LOGGER.yml +39 -0
- data/vendor/board-maps/yaml/BPI_BIT.yml +9 -0
- data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +41 -0
- data/vendor/board-maps/yaml/BRIDGETEK_IDM2040-7A.yml +48 -0
- data/vendor/board-maps/yaml/BeeMotionS3.yml +45 -0
- data/vendor/board-maps/yaml/Bee_Motion.yml +30 -0
- data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +1 -0
- data/vendor/board-maps/yaml/Bee_S3.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_LORA_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_LTE_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_NFC_RP2040.yml +32 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_SDRTC_RP2040.yml +36 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_SUBGHZ_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_UWB_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI6_BLE_RP2040.yml +42 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_BLE_RP2040.yml +42 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_NB_2040_WIFI_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CONNECTIVITY_2040_LTE_WIFI_BLE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CRABIK_SLOT_ESP32_S3.yml +19 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_FEATHER_AIOT_S3.yml +29 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_NANO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_PI_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_UNO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CoreESP32.yml +53 -0
- data/vendor/board-maps/yaml/D1_MINI32.yml +45 -0
- data/vendor/board-maps/yaml/D1_UNO32.yml +28 -0
- data/vendor/board-maps/yaml/DATANOISETV_PICOADK.yml +48 -0
- data/vendor/board-maps/yaml/DEGZ_SUIBO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/DENKY.yml +35 -0
- data/vendor/board-maps/yaml/DENKY_PICOV3.yml +35 -0
- data/vendor/board-maps/yaml/DENKY_WROOM32.yml +35 -0
- data/vendor/board-maps/yaml/DEPARTMENT_OF_ALCHEMY_MINIMAIN_ESP32S2.yml +26 -0
- data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32_C3.yml +14 -0
- data/vendor/board-maps/yaml/DFROBOT_BEETLE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32E.yml +49 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32S3.yml +38 -0
- data/vendor/board-maps/yaml/DFROBOT_ROMEO_ESP32S3.yml +7 -0
- data/vendor/board-maps/yaml/DPU_ESP32.yml +35 -0
- data/vendor/board-maps/yaml/DYDK.yml +38 -0
- data/vendor/board-maps/yaml/DYDK1A.yml +37 -0
- data/vendor/board-maps/yaml/DYDK1Av2.yml +45 -0
- data/vendor/board-maps/yaml/DYG.yml +20 -0
- data/vendor/board-maps/yaml/DYM.yml +40 -0
- data/vendor/board-maps/yaml/DYMv2.yml +39 -0
- data/vendor/board-maps/yaml/D_Duino_32.yml +37 -0
- data/vendor/board-maps/yaml/ELECTRONICCATS_HUNTERCAT_NFC.yml +44 -0
- data/vendor/board-maps/yaml/ESP320.yml +8 -0
- data/vendor/board-maps/yaml/ESP32C3_DEV.yml +14 -0
- data/vendor/board-maps/yaml/ESP32C3_M1_I_KIT.yml +13 -0
- data/vendor/board-maps/yaml/ESP32S2_DEV.yml +43 -0
- data/vendor/board-maps/yaml/ESP32S2_THING_PLUS.yml +44 -0
- data/vendor/board-maps/yaml/ESP32S2_USB.yml +43 -0
- data/vendor/board-maps/yaml/ESP32S3_CAM_LCD.yml +7 -0
- data/vendor/board-maps/yaml/ESP32S3_DEV.yml +38 -0
- data/vendor/board-maps/yaml/ESP32_DEV.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_DEVKIT_LIPO.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_EVB.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_C.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_E.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_F.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_IOT_REDBOARD.yml +36 -0
- data/vendor/board-maps/yaml/ESP32_MICROMOD.yml +24 -0
- data/vendor/board-maps/yaml/ESP32_PICO.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_POE.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_POE_ISO.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_S3R8N16.yml +3 -0
- data/vendor/board-maps/yaml/ESP32_S3_BOX.yml +19 -0
- data/vendor/board-maps/yaml/ESP32_S3_USB_OTG.yml +11 -0
- data/vendor/board-maps/yaml/ESP32_THING.yml +36 -0
- data/vendor/board-maps/yaml/ESP32_THING_PLUS.yml +33 -0
- data/vendor/board-maps/yaml/ESP32_THING_PLUS_C.yml +33 -0
- data/vendor/board-maps/yaml/ESP32_WROOM_DA.yml +35 -0
- data/vendor/board-maps/yaml/ESP32_WROVER_KIT.yml +35 -0
- data/vendor/board-maps/yaml/ESP8266_ADAFRUIT_HUZZAH.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_AGRUMINO_LEMON_V4.yml +8 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_PRIMO.yml +7 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_STAR_OTTO.yml +7 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_UNOWIFI.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESP01.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESP07.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_ESP12.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_ESP13.yml +17 -0
- data/vendor/board-maps/yaml/ESP8266_ESP210.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPECTRO_CORE.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP12.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP13.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V1.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V2.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_GENERIC.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_INVENT_ONE.yml +22 -0
- data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12E.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_OAK.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_PHOENIX_V1.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_PHOENIX_V2.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SCHIRMILABS_EDUINO_WIFI.yml +25 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_BASIC.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_S20.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_SV.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_TH.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_THING.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_THING_DEV.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINI.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINILITE.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINIPRO.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1R1.yml +25 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1WROOM02.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WIO_LINK.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_XINABOX_CW01.yml +9 -0
- data/vendor/board-maps/yaml/ESPECTRO32.yml +36 -0
- data/vendor/board-maps/yaml/ESPea32.yml +36 -0
- data/vendor/board-maps/yaml/ESPino32.yml +36 -0
- data/vendor/board-maps/yaml/ET-Board.yml +26 -0
- data/vendor/board-maps/yaml/EXTREMEELEXTRONICS_RC2040.yml +46 -0
- data/vendor/board-maps/yaml/Edgebox-ESP-100.yml +7 -0
- data/vendor/board-maps/yaml/FEATHERS2.yml +43 -0
- data/vendor/board-maps/yaml/FEATHERS2NEO.yml +31 -0
- data/vendor/board-maps/yaml/FEATHERS3.yml +32 -0
- data/vendor/board-maps/yaml/FEATHER_ESP32.yml +32 -0
- data/vendor/board-maps/yaml/FLYBOARD2040_CORE.yml +48 -0
- data/vendor/board-maps/yaml/FRANZININHO_WIFI.yml +43 -0
- data/vendor/board-maps/yaml/FRANZININHO_WIFI_MSC.yml +43 -0
- data/vendor/board-maps/yaml/FROG_ESP32.yml +35 -0
- data/vendor/board-maps/yaml/FUNHOUSE_ESP32S2.yml +22 -0
- data/vendor/board-maps/yaml/GEN4_IOD.yml +9 -0
- data/vendor/board-maps/yaml/GENERIC_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/HEALTHYPI_4.yml +36 -0
- data/vendor/board-maps/yaml/HONEYLEMON.yml +36 -0
- data/vendor/board-maps/yaml/HORNBILL_ESP32_DEV.yml +36 -0
- data/vendor/board-maps/yaml/HORNBILL_ESP32_MINIMA.yml +19 -0
- data/vendor/board-maps/yaml/ILABS_2040_RPICO32_RP2040.yml +47 -0
- data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +23 -0
- data/vendor/board-maps/yaml/INTOROBOT_ESP32_DEV.yml +34 -0
- data/vendor/board-maps/yaml/IOXESP32.yml +36 -0
- data/vendor/board-maps/yaml/IOXESP32PS.yml +36 -0
- data/vendor/board-maps/yaml/LILYGO_T_DISPLAY.yml +35 -0
- data/vendor/board-maps/yaml/LILYGO_T_DISPLAY_S3.yml +32 -0
- data/vendor/board-maps/yaml/LIONBITS3_DEV.yml +34 -0
- data/vendor/board-maps/yaml/LOLIN32.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN32_LITE.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +14 -0
- data/vendor/board-maps/yaml/LOLIN_D32.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN_D32_PRO.yml +36 -0
- data/vendor/board-maps/yaml/LOLIN_S2_MINI.yml +44 -0
- data/vendor/board-maps/yaml/LOLIN_S2_PICO.yml +44 -0
- data/vendor/board-maps/yaml/LOLIN_S3.yml +39 -0
- data/vendor/board-maps/yaml/LOLIN_S3_MINI.yml +40 -0
- data/vendor/board-maps/yaml/LOLIN_S3_PRO.yml +40 -0
- data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +18 -0
- data/vendor/board-maps/yaml/LoPy.yml +37 -0
- data/vendor/board-maps/yaml/LoPy4.yml +37 -0
- data/vendor/board-maps/yaml/M5STACK_CORES3.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_Core2.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_FIRE.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack-Timer-CAM.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack_ATOM.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack_ATOMS3.yml +7 -0
- data/vendor/board-maps/yaml/M5Stack_CoreInk.yml +9 -0
- data/vendor/board-maps/yaml/M5Stack_Core_ESP32.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack_Station.yml +10 -0
- data/vendor/board-maps/yaml/M5Stamp_Pico.yml +7 -0
- data/vendor/board-maps/yaml/M5Stick_C.yml +10 -0
- data/vendor/board-maps/yaml/MAGTAG29_ESP32S2.yml +31 -0
- data/vendor/board-maps/yaml/MELOPERO_COOKIE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/MELOPERO_SHAKE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/METRO_ESP32S2.yml +44 -0
- data/vendor/board-maps/yaml/METRO_ESP32S3.yml +42 -0
- data/vendor/board-maps/yaml/MGBOT_IOTIK32A.yml +36 -0
- data/vendor/board-maps/yaml/MGBOT_IOTIK32B.yml +36 -0
- data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32DEVKIT.yml +36 -0
- data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32MINIKIT.yml +36 -0
- data/vendor/board-maps/yaml/MICROS2.yml +44 -0
- data/vendor/board-maps/yaml/MINIMA.yml +15 -0
- data/vendor/board-maps/yaml/MOD_WIFI_ESP8266.yml +9 -0
- data/vendor/board-maps/yaml/Metro.yml +8 -0
- data/vendor/board-maps/yaml/NAMINO_ARANCIO.yml +3 -0
- data/vendor/board-maps/yaml/NAMINO_ROSSO.yml +3 -0
- data/vendor/board-maps/yaml/NANO32.yml +36 -0
- data/vendor/board-maps/yaml/NANOS3.yml +25 -0
- data/vendor/board-maps/yaml/NANO_ESP32.yml +18 -0
- data/vendor/board-maps/yaml/NANO_RP2040_CONNECT.yml +35 -0
- data/vendor/board-maps/yaml/NEBULAS3.yml +33 -0
- data/vendor/board-maps/yaml/NEKOSYSTEMS_BL2040_MINI.yml +48 -0
- data/vendor/board-maps/yaml/NULLBITS_BIT_C_PRO.yml +48 -0
- data/vendor/board-maps/yaml/Node32s.yml +36 -0
- data/vendor/board-maps/yaml/NodeMCU_32S.yml +36 -0
- data/vendor/board-maps/yaml/ODROID_ESP32.yml +10 -0
- data/vendor/board-maps/yaml/ONEHORSE_ESP32_DEV.yml +34 -0
- data/vendor/board-maps/yaml/OROCA_EDUBOT.yml +33 -0
- data/vendor/board-maps/yaml/PIMORONI_PGA2040.yml +48 -0
- data/vendor/board-maps/yaml/PIMORONI_PLASMA2040.yml +29 -0
- data/vendor/board-maps/yaml/PIMORONI_TINY2040.yml +44 -0
- data/vendor/board-maps/yaml/PORTENTA_C33.yml +28 -0
- data/vendor/board-maps/yaml/PROS3.yml +33 -0
- data/vendor/board-maps/yaml/PYCOM_GPY.yml +37 -0
- data/vendor/board-maps/yaml/Piranha.yml +22 -0
- data/vendor/board-maps/yaml/Pocket32.yml +36 -0
- data/vendor/board-maps/yaml/QUALIA_S3_RGB666.yml +15 -0
- data/vendor/board-maps/yaml/QUANTUM.yml +35 -0
- data/vendor/board-maps/yaml/RAKWIRELESS_RAK11300.yml +47 -0
- data/vendor/board-maps/yaml/RASPBERRY_PI_PICO.yml +48 -0
- data/vendor/board-maps/yaml/RASPBERRY_PI_PICO_W.yml +48 -0
- data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +42 -0
- data/vendor/board-maps/yaml/REDSCORP_RP2040_EINS.yml +35 -0
- data/vendor/board-maps/yaml/REDSCORP_RP2040_PROMINI.yml +35 -0
- data/vendor/board-maps/yaml/RMP.yml +43 -0
- data/vendor/board-maps/yaml/SAMD_CIRCUITPLAYGROUND_EXPRESS.yml +11 -0
- data/vendor/board-maps/yaml/SAMD_MKR1000.yml +20 -0
- data/vendor/board-maps/yaml/SAMD_MKRFox1200.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRGSM1400.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_MKRNB1500.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_MKRVIDOR4000.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRWAN1300.yml +18 -0
- data/vendor/board-maps/yaml/SAMD_MKRWAN1310.yml +18 -0
- data/vendor/board-maps/yaml/SAMD_MKRWIFI1010.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRZERO.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_NANO_33_IOT.yml +13 -0
- data/vendor/board-maps/yaml/SAMD_TIAN.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_ZERO.yml +14 -0
- data/vendor/board-maps/yaml/SAM_DUE.yml +28 -0
- data/vendor/board-maps/yaml/SAM_ZERO.yml +15 -0
- data/vendor/board-maps/yaml/SEA_PICRO.yml +48 -0
- data/vendor/board-maps/yaml/SEEED_INDICATOR_RP2040.yml +47 -0
- data/vendor/board-maps/yaml/SEEED_XIAO_RP2040.yml +29 -0
- data/vendor/board-maps/yaml/SILICOGNITION_RP2040_SHIM.yml +30 -0
- data/vendor/board-maps/yaml/SOLDERPARTY_RP2040_STAMP.yml +48 -0
- data/vendor/board-maps/yaml/SONOFF_DUALR3.yml +35 -0
- data/vendor/board-maps/yaml/SPARKFUN_PROMICRO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/SPARKFUN_THINGPLUS_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/STAMP_S3.yml +8 -0
- data/vendor/board-maps/yaml/TAMC_TERMOD_S3.yml +41 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1262.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1268.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1276.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1278.yml +28 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1280.yml +28 -0
- data/vendor/board-maps/yaml/TBeam.yml +28 -0
- data/vendor/board-maps/yaml/TINYPICO.yml +35 -0
- data/vendor/board-maps/yaml/TINYS2.yml +43 -0
- data/vendor/board-maps/yaml/TINYS3.yml +25 -0
- data/vendor/board-maps/yaml/TTGO-T-OI-PLUS_DEV.yml +11 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_V1.yml +38 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_V2.yml +38 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_v21new.yml +38 -0
- data/vendor/board-maps/yaml/TTGO_T1.yml +36 -0
- data/vendor/board-maps/yaml/TTGO_T7_V13_Mini32.yml +36 -0
- data/vendor/board-maps/yaml/TTGO_T7_V14_Mini32.yml +36 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V1.yml +9 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V2.yml +9 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V3.yml +9 -0
- data/vendor/board-maps/yaml/TWATCH_BASE.yml +9 -0
- data/vendor/board-maps/yaml/TWatch.yml +9 -0
- data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver.yml +18 -0
- data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver_MK_II.yml +18 -0
- data/vendor/board-maps/yaml/UBLOX_NINA_W10.yml +57 -0
- data/vendor/board-maps/yaml/UBLOX_NORA_W10.yml +43 -0
- data/vendor/board-maps/yaml/UNOWIFIR4.yml +17 -0
- data/vendor/board-maps/yaml/UPESY_RP2040_DEVKIT.yml +48 -0
- data/vendor/board-maps/yaml/VALTRACK_V4_MFW_ESP32_C3.yml +23 -0
- data/vendor/board-maps/yaml/VALTRACK_V4_VTS_ESP32_C3.yml +23 -0
- data/vendor/board-maps/yaml/VIYALAB_MIZU_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/WATCHY.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V10.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V15.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V20.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_0_96.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_1_28.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_PLUS.yml +48 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +47 -0
- data/vendor/board-maps/yaml/WESP32.yml +17 -0
- data/vendor/board-maps/yaml/WIDORA_AIR.yml +34 -0
- data/vendor/board-maps/yaml/WIFIDUINO_ESP8266.yml +23 -0
- data/vendor/board-maps/yaml/WIFINFO.yml +20 -0
- data/vendor/board-maps/yaml/WIPY3.yml +37 -0
- data/vendor/board-maps/yaml/WIZNET_5100S_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WIZNET_5500_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WIZNET_WIZFI360_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WT32_ETH01.yml +8 -0
- data/vendor/board-maps/yaml/WiFiduino32S3.yml +27 -0
- data/vendor/board-maps/yaml/WiFiduinoV2.yml +27 -0
- data/vendor/board-maps/yaml/Wifiduino32.yml +40 -0
- data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +22 -0
- data/vendor/board-maps/yaml/XIAO_ESP32S3.yml +37 -0
- data/vendor/board-maps/yaml/YD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/atmegazero_esp32s2.yml +30 -0
- data/vendor/board-maps/yaml/connaxio_espoir.yml +24 -0
- data/vendor/board-maps/yaml/esp32vn_iot_uno.yml +31 -0
- data/vendor/board-maps/yaml/fm_devkit.yml +15 -0
- data/vendor/board-maps/yaml/heltec_wifi_32_lora_V3.yml +41 -0
- data/vendor/board-maps/yaml/heltec_wifi_kit_32.yml +38 -0
- data/vendor/board-maps/yaml/heltec_wifi_kit_32_V3.yml +42 -0
- data/vendor/board-maps/yaml/heltec_wifi_lora_32.yml +36 -0
- data/vendor/board-maps/yaml/heltec_wifi_lora_32_V2.yml +36 -0
- data/vendor/board-maps/yaml/heltec_wireless_stick.yml +36 -0
- data/vendor/board-maps/yaml/heltec_wireless_stick_LITE.yml +36 -0
- data/vendor/board-maps/yaml/openkb.yml +37 -0
- data/vendor/board-maps/yaml/roboheart_hercules.yml +26 -0
- data/vendor/board-maps/yaml/sensesiot_weizen.yml +35 -0
- data/vendor/board-maps/yaml/uPesy_WROOM.yml +36 -0
- data/vendor/board-maps/yaml/uPesy_WROVER.yml +36 -0
- data/vendor/board-maps/yaml/unphone8.yml +42 -0
- data/vendor/board-maps/yaml/unphone9.yml +42 -0
- data/vendor/board-maps/yaml/wifi_kit_8.yml +15 -0
- metadata +385 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f77acd1d470ce9de71af4597293404801630e1a04bafa6cbb6f15a743ebbc90
|
4
|
+
data.tar.gz: a7edb3d9c2447b7dedc955cb2cbd03b9d0260180dc91ee2f3d6b9ee08623e59f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca5b50ed73e0713839ff7281cc1cfd1ab9122e5506bb4f68bddbe3ac0051ad7c64931a95efeccfc025e23876abd817583a04775ec09f7163af3b7d5db470f600
|
7
|
+
data.tar.gz: 7900e8d43a1e224c62ad01a721e6ebd7168875816bb52b9f19e65185302348478a2716c7cfb7dd599f3e0acea73045809ebafcc3cee338ca57e6b15666bb8896
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.13.5
|
4
|
+
|
5
|
+
### New Components
|
6
|
+
|
7
|
+
- HC-SR04 Ultrasonic Distance Sensor:
|
8
|
+
- Class: `Denko::Sensor::HCSRO4`
|
9
|
+
- Custom function on the board to handle ping and response.
|
10
|
+
- Simple interface. `#read` returns a distance in mm.
|
11
|
+
|
12
|
+
### Bug Fixes
|
13
|
+
|
14
|
+
- OTA updating now works on ESP32.
|
15
|
+
- Adjust ESP32 expected serial buffer sizes and acknowledge intervals to to be more reliable.
|
16
|
+
- Fixed a bug on Windows where submodules weren't being included in load path.
|
17
|
+
- Fixed a bug where the board could incorrectly report EEPROM_LENGTH as 0.
|
18
|
+
|
3
19
|
## 0.13.4
|
4
20
|
|
5
21
|
### New Components
|
@@ -37,7 +53,7 @@
|
|
37
53
|
|
38
54
|
### Bug Fixes
|
39
55
|
|
40
|
-
- Fixed bug where `BMP280
|
56
|
+
- Fixed bug where `BMP280` sensor class would not autoload.
|
41
57
|
|
42
58
|
## 0.13.3
|
43
59
|
|
data/DEPS_CLI.md
CHANGED
@@ -16,7 +16,7 @@ arduino-cli core install arduino:sam
|
|
16
16
|
arduino-cli core install arduino:samd
|
17
17
|
arduino-cli core install arduino:renesas_uno
|
18
18
|
arduino-cli core install esp8266:esp8266
|
19
|
-
arduino-cli core install esp32:esp32
|
19
|
+
arduino-cli core install esp32:esp32@2.0.17
|
20
20
|
arduino-cli core install rp2040:rp2040
|
21
21
|
arduino-cli lib install Servo
|
22
22
|
arduino-cli lib install Ethernet
|
@@ -71,7 +71,7 @@ arduino-cli lib install "Adafruit NeoPixel"
|
|
71
71
|
arduino-cli config init
|
72
72
|
arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
73
73
|
arduino-cli core update-index
|
74
|
-
arduino-cli core install esp32:esp32
|
74
|
+
arduino-cli core install esp32:esp32@2.0.17
|
75
75
|
arduino-cli lib install ESP32Servo
|
76
76
|
arduino-cli lib install IRremoteESP8266@2.8.5
|
77
77
|
arduino-cli lib install "Adafruit NeoPixel"
|
data/DEPS_IDE.md
CHANGED
@@ -33,7 +33,8 @@ All platforms will require libraries to be installed. To install a library do th
|
|
33
33
|
Arduino SAMD Boards (32-bits ARM Cortex-M0+)
|
34
34
|
Arduino UNO R4 Boards
|
35
35
|
ESP8266 Boards
|
36
|
-
ESP32 Boards
|
36
|
+
ESP32 Boards @ v2.0.17
|
37
|
+
Raspberry Pi Pico/RP2040
|
37
38
|
````
|
38
39
|
* Libraries:
|
39
40
|
````
|
@@ -103,7 +104,7 @@ All platforms will require libraries to be installed. To install a library do th
|
|
103
104
|
````
|
104
105
|
* Boards (latest version unless specified):
|
105
106
|
````
|
106
|
-
ESP32 Boards
|
107
|
+
ESP32 Boards @ v2.0.17
|
107
108
|
````
|
108
109
|
* Libraries (latest version unless specified):
|
109
110
|
````
|
@@ -119,7 +120,7 @@ All platforms will require libraries to be installed. To install a library do th
|
|
119
120
|
````
|
120
121
|
* Boards:
|
121
122
|
````
|
122
|
-
Raspberry Pi Pico/RP2040
|
123
|
+
Raspberry Pi Pico/RP2040
|
123
124
|
````
|
124
125
|
* Libraries:
|
125
126
|
````
|
data/HARDWARE.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
| Chip | Status | Products | Notes |
|
10
10
|
| :-------- | :------: | :--------------- |------ |
|
11
|
-
| ATmega168 | :green_heart: | Duemilanove, Diecimila, Pro |
|
11
|
+
| ATmega168 | :green_heart: | Duemilanove, Diecimila, Pro | Omits features. `denko targets` for info.
|
12
12
|
| ATmega328 | :green_heart: | Uno R3, Uno WiFi, Nano, Fio, Pro |
|
13
13
|
| ATmega32u4 | :green_heart: | Leonardo, Micro, Leonardo ETH, Esplora, LilyPad USB |
|
14
14
|
| ATmega1280 | :green_heart: | Mega |
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
| Chip | Status | Products | Notes |
|
26
26
|
| :-------- | :------: | :--------------- |------ |
|
27
|
-
| ATSAM3X8E | :yellow_heart: | Due | Native USB
|
27
|
+
| ATSAM3X8E | :yellow_heart: | Due | Uses Native USB. Tone and IR Out don't work.
|
28
28
|
| ATSAMD21 | :green_heart: | Zero, M0 Series, Nano 33 IOT, MKR WiFi 1010 | Native USB
|
29
29
|
| RA4M1 | :yellow_heart: | Uno R4 Minima, Uno R4 WiFi | IR and WS2812 libraries don't support this yet
|
30
30
|
|
@@ -55,6 +55,8 @@
|
|
55
55
|
| ESP32-S2 | :green_heart: | LOLIN S2 Pico | Native USB
|
56
56
|
| ESP32-S3 | :green_heart: | LOLIN S3 V1.0.0 | Native USB
|
57
57
|
| ESP32-C3 | :green_heart: | LOLIN C3 Mini V2.1.0 | Native USB
|
58
|
+
| ESP32-H2 | :heart: | - | Support in Arduino ESP32 core beta
|
59
|
+
| ESP32-C6 | :heart: | - | Support in Arduino ESP32 core beta
|
58
60
|
|
59
61
|
**Note:** For ESP32 chips using native USB, make sure `USB CDC On Boot` is `Enabled` in the IDE's `Tools` menu. Flashing from the CLI doesn't automatically enable this, so the IDE is recommended for now.
|
60
62
|
|
@@ -155,12 +157,13 @@ Polling and reading follow a call and response pattern.
|
|
155
157
|
| :--------------- | :------: | :-------- | :--------------- |------ |
|
156
158
|
| Generic Hobby Servo | :green_heart: | Servo/ESC PWM | `Motor::Servo` | Max depends on PWM channel count
|
157
159
|
| Generic ESC | :yellow_heart: | Servo/ESC PWM | `Motor::Servo` | Works. Needs its own class.
|
158
|
-
| PCA9685 | :heart: | I2C | `PulseIO::PCA9685` |
|
160
|
+
| PCA9685 | :heart: | I2C | `PulseIO::PCA9685` | 16-ch, 12-bit PWM for servo or LED
|
159
161
|
| L298N | :green_heart: | Digi + PWM Out | `Motor::L298` | H-Bridge DC motor driver
|
160
162
|
| DRV8833 | :heart: | Digi + PWM Out | `Motor::DRV8833` | H-Bridge DC motor driver
|
161
|
-
|
|
163
|
+
| TB6612 | :heart: | Digi + PWM Out | `Motor::TB6612` | H-Bridge DC motor driver
|
164
|
+
| A3967 | :green_heart: | Digital Out | `Motor::Stepper` | 1-ch microstepper (EasyDriver)
|
162
165
|
| A4988 | :yellow_heart: | DigitalOut | `Motor::Stepper` | 1-ch microstepper
|
163
|
-
| TMC2209 | :heart: | - | - |
|
166
|
+
| TMC2209 | :heart: | - | - | 1-ch silent stepper driver
|
164
167
|
|
165
168
|
### I/O Expansion
|
166
169
|
|
@@ -168,33 +171,38 @@ Polling and reading follow a call and response pattern.
|
|
168
171
|
| :--------------- | :------: | :-------- | :--------------- |------ |
|
169
172
|
| Input Register | :green_heart: | SPI | `SPI::InputRegister` | Tested on CD4021B
|
170
173
|
| Output Register | :green_heart: | SPI | `SPI::OutputRegister`| Tested on 74HC595
|
171
|
-
| PCF8574 Expander | :heart: | I2C | `DigitalIO::PCF8574` |
|
172
|
-
| ADS1100 ADC | :heart: | I2C | `AnalogIO::ADS1100` |
|
173
|
-
| ADS1115 ADC | :green_heart: | I2C | `AnalogIO::ADS1115` |
|
174
|
-
| ADS1118 ADC | :green_heart: | SPI | `AnalogIO::ADS1118` |
|
175
|
-
|
|
176
|
-
|
|
174
|
+
| PCF8574 Expander | :heart: | I2C | `DigitalIO::PCF8574` | 8-ch bi-directional digital I/O
|
175
|
+
| ADS1100 ADC | :heart: | I2C | `AnalogIO::ADS1100` | 1-ch, 16-bit ADC
|
176
|
+
| ADS1115 ADC | :green_heart: | I2C | `AnalogIO::ADS1115` | 4-ch, 16-bit ADC. Comparator not implemented.
|
177
|
+
| ADS1118 ADC | :green_heart: | SPI | `AnalogIO::ADS1118` | 4-ch, 16-bit ADC + temperature
|
178
|
+
| ADS1232 ADC | :heart: | SPI | `AnalogIO::ADS1232` | 2-ch, 24-bit ADC + temperature
|
179
|
+
| PCF8591 ADC/DAC | :heart: | I2C | `AnalogIO::PCF8591` | 4-ch, 8-bit ADC + 1-chm 8-bit DAC
|
180
|
+
| MCP4725 DAC | :heart: | I2C | `AnalogIO::MCP4275` | 1-ch, 12-bit DAC
|
181
|
+
| PCA9548 I2C Mux | :heart: | I2C | `I2C::PCA9548` | 8-way I2C multiplexer
|
177
182
|
|
178
183
|
### Environmental Sensors
|
179
184
|
|
180
|
-
| Name | Status | Interface | Component Class | Type
|
181
|
-
| :--------------- | :------: | :-------- | :--------------- |---------------
|
182
|
-
| MAX31850 | :heart: | OneWire | `Sensor::MAX31850` | Thermocouple
|
183
|
-
| MAX6675 | :heart: | SPI | `Sensor::MAX6675` | Thermocouple
|
184
|
-
| DS18B20 | :green_heart: | OneWire | `Sensor::DS18B20` | Temp
|
185
|
-
| DHT11/21/22 | :green_heart: | Digi In/Out | `Sensor::DHT` | Temp / RH
|
186
|
-
| SHT30/31/35 | :green_heart: | I2C | `Sensor::SHT3X` | Temp / RH
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
185
|
+
| Name | Status | Interface | Component Class | Type | Notes |
|
186
|
+
| :--------------- | :------: | :-------- | :--------------- |--------------- | ---------------------- |
|
187
|
+
| MAX31850 | :heart: | OneWire | `Sensor::MAX31850` | Thermocouple |
|
188
|
+
| MAX6675 | :heart: | SPI | `Sensor::MAX6675` | Thermocouple |
|
189
|
+
| DS18B20 | :green_heart: | OneWire | `Sensor::DS18B20` | Temp |
|
190
|
+
| DHT11/21/22 | :green_heart: | Digi In/Out | `Sensor::DHT` | Temp / RH |
|
191
|
+
| SHT30/31/35 | :green_heart: | I2C | `Sensor::SHT3X` | Temp / RH | M5Stack ENV III, one-shot only
|
192
|
+
| SHT40/41 | :heart: | I2C | `Sensor::SHT4X` | Temp / RH |
|
193
|
+
| QMP6988 | :green_heart: | I2C | `Sensor::QMP6988` | Temp / Press | M5Stack ENV III
|
194
|
+
| BMP180 | :green_heart: | I2C | `Sensor::BMP180` | Temp / Press |
|
195
|
+
| BMP280 | :green_heart: | I2C | `Sensor::BMP280` | Temp / Press |
|
196
|
+
| BME280 | :green_heart: | I2C | `Sensor::BME280` | Temp / Press / RH |
|
197
|
+
| BME680 | :heart: | I2C | `Sensor::BME680` | Temp / Press / RH / TVOC |
|
198
|
+
| HTU21D | :green_heart: | I2C | `Sensor::HTU21D` | Temp / RH | No user register read
|
199
|
+
| HTU31D | :green_heart: | I2C | `Sensor::HTU31D` | Temp / RH | No diagnostic read
|
200
|
+
| AHT10/15 | :green_heart: | I2C | `Sensor::AHT10` | Temp / RH |
|
201
|
+
| AHT20/21/25 | :green_heart: | I2C | `Sensor::AHT20` | Temp / RH |
|
202
|
+
| ENS160 | :heart: | I2C | `Sensor::ENS160` | eCO2 / TVOC / AQI |
|
203
|
+
| AGS02MA | :heart: | I2C | `Sensor::AGS02MA` | TVOC |
|
204
|
+
| SCD40 | :heart: | I2C | `Sensor::SDC40` | Temp / Press / CO2 |
|
205
|
+
| CCS811 | :heart: | I2C | `Sensor::CCS811` | eCO2 |
|
198
206
|
|
199
207
|
### Light Sensors
|
200
208
|
|
@@ -208,13 +216,15 @@ Polling and reading follow a call and response pattern.
|
|
208
216
|
| Name | Status | Interface | Component Class | Notes |
|
209
217
|
| :--------------- | :------: | :-------- | :--------------- |------ |
|
210
218
|
| HC-SR501 | :green_heart: | Digital In | `Sensor::GenericPIR` |
|
219
|
+
| HC-SR505 | :yellow_heart: | Digital In | `Sensor::GenericPIR` |
|
211
220
|
| AS312 | :green_heart: | Digital In | `Sensor::GenericPIR` |
|
221
|
+
| AM312 | :yellow_heart: | Digital In | `Sensor::GenericPIR` |
|
212
222
|
|
213
223
|
### Distance Sensors
|
214
224
|
|
215
225
|
| Name | Status | Interface | Component Class | Notes |
|
216
226
|
| :--------------- | :------: | :-------- | :--------------- |------ |
|
217
|
-
| HC-SR04 | :
|
227
|
+
| HC-SR04 | :green_heart: | Digi In/Out | `Sensor::HCSR04` | Ultrasonic, 20-4000mm
|
218
228
|
| RCWL-9620 | :green_heart: | I2C | `Sensor::RCWL9260` | Ultrasonic, 20-4500mm
|
219
229
|
| VL53L0X | :heart: | I2C | `Sensor::VL53L0X` | Laser, 30 - 1000mm
|
220
230
|
| GP2Y0E03 | :heart: | I2C | `Sensor::GP2Y0E03` | Infrared, 40 - 500mm
|
@@ -226,6 +236,7 @@ Polling and reading follow a call and response pattern.
|
|
226
236
|
| ADXL345 | :heart: | I2C | `Sensor::ADXL345` | Accelerometer
|
227
237
|
| IT3205 | :heart: | I2C | `Sensor::IT3205` | Gyroscope
|
228
238
|
| HMC5883L | :heart: | I2C | `Sensor::HMC5883L` | Compass
|
239
|
+
| MPU6050 | :heart: | I2C | `Sensor::MPU6050` | Gyro + Accelerometer
|
229
240
|
| MPU6886 | :heart: | I2C | `Sensor::MPU6886` | Gyro + Accelerometer
|
230
241
|
| BMI160 | :heart: | I2C | `Sensor::BMI160` | Gyro + Accelerometer
|
231
242
|
| LSM6DS3 | :heart: | I2C | `Sensor:LSM6DS3` | Gyro + Accelerometer
|
data/README.md
CHANGED
@@ -23,10 +23,10 @@ High-level abstraction in Ruby makes hardware classes easy to implement, with in
|
|
23
23
|
Full list of supported mircocontroller platforms, interfaces, and peripherals is located [here](HARDWARE.md).
|
24
24
|
|
25
25
|
##### denko-piboard
|
26
|
-
The
|
26
|
+
The [denko-piboard](https://github.com/denko-rb/denko-piboard) add-on gem, uses a Raspberry Pi's built in GPIO header instead of an attached microcontroller. Connect things directly to the Pi, and use the peripheral classes from this gem.
|
27
27
|
|
28
28
|
##### mruby-denko
|
29
|
-
A solo Raspberry Pi (or other
|
29
|
+
A solo Raspberry Pi (or other SBC + microcontroller) is great if you need the compute power anyway, but what if you don't? Why not run Ruby on the microcontroller itself?
|
30
30
|
|
31
31
|
That's the goal of [mruby-denko](https://github.com/denko-rb/mruby-denko): write mruby on the ESP32, using peripheral classes as close to this gem as possible. Still early in development, so limited features, but already usable.
|
32
32
|
|
@@ -30,6 +30,11 @@
|
|
30
30
|
# Arduino Nano Every : 9.2 fps (USB through ATSAMD11 @ 115200, 128-byte I2C limit, no I2C level shifter)
|
31
31
|
# Arduino Nano Every : 13.0 fps (USB through ATSAMD11 @ 230400, 128-byte I2C limit, no I2C level shifter)
|
32
32
|
#
|
33
|
+
# February 25 2024 | i7 8700k CPU | CRuby 3.2.1 | 100 frames | 1 Mhz I2C frequency | Average of 3 runs
|
34
|
+
#
|
35
|
+
# ESP32-S3 : 51.8 fps (native USB) - Changed from 64 to 128 serial ACK interval
|
36
|
+
# ESP32-C3 : 51.7 fps (native USB) - Changed from 64 to 128 serial ACK interval
|
37
|
+
#
|
33
38
|
require 'bundler/setup'
|
34
39
|
require 'denko'
|
35
40
|
|
data/denko.gemspec
CHANGED
@@ -17,10 +17,10 @@ Gem::Specification.new do |gem|
|
|
17
17
|
# get an array of submodule dirs by executing 'pwd' inside each submodule
|
18
18
|
gem_dir = File.expand_path(File.dirname(__FILE__)) + "/"
|
19
19
|
`git submodule --quiet foreach pwd`.split($\).each do |submodule_path|
|
20
|
-
# Fix submodule paths on Windows.
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
# Fix submodule paths on Windows, by removing prepended / and drive letter.
|
21
|
+
if RUBY_PLATFORM.match(/mswin|mingw/i)
|
22
|
+
submodule_path = submodule_path[2..-1]
|
23
|
+
end
|
24
24
|
|
25
25
|
Dir.chdir(submodule_path) do
|
26
26
|
submodule_relative_path = submodule_path.sub gem_dir, ""
|
data/examples/i2c/search.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
#
|
2
|
+
# Example of reading an HC-SR04 ultrasonic sensor.
|
3
|
+
#
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'denko'
|
6
|
+
|
7
|
+
board = Denko::Board.new(Denko::Connection::Serial.new)
|
8
|
+
hcsr04 = Denko::Sensor::HCSR04.new(board: board, pins: {trigger: 6, echo: 7})
|
9
|
+
|
10
|
+
hcsr04.poll(0.05) do |distance|
|
11
|
+
puts "Distance: #{distance} mm"
|
12
|
+
end
|
13
|
+
|
14
|
+
sleep
|
data/lib/denko/board/pulse.rb
CHANGED
data/lib/denko/board.rb
CHANGED
@@ -110,6 +110,7 @@ module Denko
|
|
110
110
|
# Component generating convenience methods. TODO: add more!
|
111
111
|
#
|
112
112
|
def eeprom
|
113
|
+
raise StandardError, 'board has no built-in EEPROM, or EEPROM disabled in sketch' if @eeprom_length == 0
|
113
114
|
@eeprom ||= EEPROM::BuiltIn.new(board: self)
|
114
115
|
end
|
115
116
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Denko
|
2
|
+
module Sensor
|
3
|
+
class HCSR04
|
4
|
+
# Speed of sound in meters per second.
|
5
|
+
SPEED_OF_SOUND = 343.0
|
6
|
+
|
7
|
+
include Behaviors::MultiPin
|
8
|
+
include Behaviors::Poller
|
9
|
+
|
10
|
+
def initialize_pins(options={})
|
11
|
+
proxy_pin :trigger, DigitalIO::Output
|
12
|
+
proxy_pin :echo, DigitalIO::Input
|
13
|
+
end
|
14
|
+
|
15
|
+
def after_initialize(options={})
|
16
|
+
super(options)
|
17
|
+
|
18
|
+
# Receive values from echo pin.
|
19
|
+
echo.add_callback { |data| self.update(data) }
|
20
|
+
end
|
21
|
+
|
22
|
+
def _read
|
23
|
+
board.hcsr04_read(echo.pin, trigger.pin)
|
24
|
+
end
|
25
|
+
|
26
|
+
def pre_callback_filter(us)
|
27
|
+
# Data is microseconds roundtrip time. Convert to mm.
|
28
|
+
um = (us/2) * SPEED_OF_SOUND
|
29
|
+
mm = um / 1000.0
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/denko/sensor.rb
CHANGED
@@ -14,6 +14,7 @@ module Denko
|
|
14
14
|
autoload :SHT3X, "#{__dir__}/sensor/sht3x"
|
15
15
|
autoload :QMP6988, "#{__dir__}/sensor/qmp6988"
|
16
16
|
autoload :RCWL9620, "#{__dir__}/sensor/rcwl9620"
|
17
|
+
autoload :HCSR04, "#{__dir__}/sensor/hcsr04"
|
17
18
|
autoload :GenericPIR, "#{__dir__}/sensor/generic_pir"
|
18
19
|
end
|
19
20
|
end
|
data/lib/denko/version.rb
CHANGED
data/src/denko_wifi.ino
CHANGED
@@ -30,8 +30,8 @@
|
|
30
30
|
#elif defined(ESP32)
|
31
31
|
#include <WiFi.h>
|
32
32
|
#include <ESPmDNS.h>
|
33
|
-
|
34
|
-
|
33
|
+
#include <WiFiUdp.h>
|
34
|
+
#include <ArduinoOTA.h>
|
35
35
|
#define WIFI_STATUS_LED 2
|
36
36
|
#else
|
37
37
|
#define WIFI_STATUS_LED 13
|
@@ -48,13 +48,13 @@
|
|
48
48
|
#endif
|
49
49
|
|
50
50
|
// Configure your WiFi options here. IP address is not configurable. Uses DHCP.
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
#define DENKO_TCP_PORT 3466
|
52
|
+
#define WIFI_SSID "yourNetwork"
|
53
|
+
#define WIFI_PASSWORD "yourPassword"
|
54
54
|
boolean connected = false;
|
55
55
|
|
56
56
|
Denko denko;
|
57
|
-
WiFiServer server(
|
57
|
+
WiFiServer server(DENKO_TCP_PORT);
|
58
58
|
WiFiClient client;
|
59
59
|
|
60
60
|
// Use the built in LED to indicate WiFi status.
|
@@ -82,7 +82,7 @@ void printWifiStatus() {
|
|
82
82
|
DENKO_SERIAL_IF.println(WiFi.localIP());
|
83
83
|
#endif
|
84
84
|
DENKO_SERIAL_IF.print("Denko TCP Port: ");
|
85
|
-
DENKO_SERIAL_IF.println(
|
85
|
+
DENKO_SERIAL_IF.println(DENKO_TCP_PORT);
|
86
86
|
indicateWiFi(true);
|
87
87
|
}
|
88
88
|
|
@@ -94,7 +94,7 @@ void connect(){
|
|
94
94
|
|
95
95
|
// Try to connect.
|
96
96
|
DENKO_SERIAL_IF.print("Connecting to WiFi ");
|
97
|
-
WiFi.begin(
|
97
|
+
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
|
98
98
|
|
99
99
|
// Delay until connected.
|
100
100
|
while (WiFi.status() != WL_CONNECTED) {
|
@@ -117,14 +117,39 @@ void setup() {
|
|
117
117
|
DENKO_SERIAL_IF.begin(115200);
|
118
118
|
while(!DENKO_SERIAL_IF);
|
119
119
|
|
120
|
-
//
|
121
|
-
|
120
|
+
// Attempt initial WiFi connection.
|
121
|
+
connect();
|
122
|
+
|
123
|
+
// Enable over the air updates on the ESP8266 and ESP32.
|
124
|
+
// Taken from standard ESP8266/ESP32 OTA examples.
|
125
|
+
#if defined(ESP8266) || (ESP32)
|
126
|
+
ArduinoOTA.onStart([]() {
|
127
|
+
String type;
|
128
|
+
if (ArduinoOTA.getCommand() == U_FLASH) {
|
129
|
+
type = "sketch";
|
130
|
+
} else { // U_FS (ESP8266) or U_SPIFFS (ESP32)
|
131
|
+
type = "filesystem";
|
132
|
+
}
|
133
|
+
// NOTE: if updating FS or SPIFFS, this would be the place to unmount using FS.end() or SPIFFS.end()
|
134
|
+
Serial.println("Arduino OTA: Start updating " + type);
|
135
|
+
});
|
136
|
+
ArduinoOTA.onEnd([]() {
|
137
|
+
Serial.println("\nArduino OTA: End\n");
|
138
|
+
});
|
139
|
+
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
|
140
|
+
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
|
141
|
+
});
|
142
|
+
ArduinoOTA.onError([](ota_error_t error) {
|
143
|
+
Serial.printf("Error[%u]: ", error);
|
144
|
+
if (error == OTA_AUTH_ERROR) Serial.println("Arduino OTA: Auth Failed");
|
145
|
+
else if (error == OTA_BEGIN_ERROR) Serial.println("Arduino OTA: Begin Failed");
|
146
|
+
else if (error == OTA_CONNECT_ERROR) Serial.println("Arduino OTA: Connect Failed");
|
147
|
+
else if (error == OTA_RECEIVE_ERROR) Serial.println("Arduino OTA: Receive Failed");
|
148
|
+
else if (error == OTA_END_ERROR) Serial.println("Arduino OTA: End Failed");
|
149
|
+
});
|
122
150
|
ArduinoOTA.begin();
|
123
151
|
#endif
|
124
152
|
|
125
|
-
// Attempt initial WiFi connection.
|
126
|
-
connect();
|
127
|
-
|
128
153
|
// Start the denko TCP server.
|
129
154
|
server.begin();
|
130
155
|
|
@@ -141,7 +166,7 @@ void loop() {
|
|
141
166
|
maintainWiFi();
|
142
167
|
|
143
168
|
// Handle OTA updates.
|
144
|
-
#if defined(ESP8266)
|
169
|
+
#if defined(ESP8266) || (ESP32)
|
145
170
|
ArduinoOTA.handle();
|
146
171
|
#endif
|
147
172
|
|
data/src/lib/Denko.cpp
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
*/
|
4
4
|
#include "Denko.h"
|
5
5
|
#include "BoardMap.h"
|
6
|
+
#ifdef DENKO_EEPROM
|
7
|
+
#include "EEPROM.h"
|
8
|
+
#endif
|
6
9
|
|
7
10
|
Denko::Denko(){
|
8
11
|
messageFragments[0] = cmdStr;
|
@@ -119,7 +122,8 @@ void Denko::process() {
|
|
119
122
|
#endif
|
120
123
|
|
121
124
|
// Implemented in DenkoPulseInput.cpp
|
122
|
-
case 9:
|
125
|
+
case 9: pulseRead (); break;
|
126
|
+
case 20: hcsr04Read (); break;
|
123
127
|
|
124
128
|
// Implemented in DenkoServo.cpp
|
125
129
|
#ifdef DENKO_SERVO
|
@@ -275,7 +279,7 @@ void Denko::handshake() {
|
|
275
279
|
stream->print(',');
|
276
280
|
#if defined(EEPROM_EMULATED)
|
277
281
|
stream->print(EMULATED_EEPROM_LENGTH);
|
278
|
-
#elif defined(
|
282
|
+
#elif defined(DENKO_EEPROM)
|
279
283
|
stream->print(EEPROM.length());
|
280
284
|
#endif
|
281
285
|
|
data/src/lib/Denko.h
CHANGED
@@ -95,11 +95,13 @@ class Denko {
|
|
95
95
|
void eepromRead (); //cmd = 7
|
96
96
|
void eepromWrite (); //cmd = 8
|
97
97
|
|
98
|
-
//
|
98
|
+
// Pulse inputs (DHT and HC-SR04)
|
99
99
|
void pulseRead (); //cmd = 9
|
100
|
+
void hcsr04Read (); //cmd = 20
|
101
|
+
|
102
|
+
// Servos
|
100
103
|
void servoToggle (); //cmd = 10
|
101
104
|
void servoWrite (); //cmd = 11
|
102
|
-
void handleSerial (); //cmd = 12
|
103
105
|
|
104
106
|
// Single Bit Bang UART
|
105
107
|
#ifdef DENKO_UART_BB
|
data/src/lib/DenkoCoreIO.cpp
CHANGED
@@ -19,12 +19,14 @@ void Denko::setMode(byte p, byte m) {
|
|
19
19
|
// 111 = Digital Input/Output (ESP32 Only?)
|
20
20
|
m = m & 0b00000111;
|
21
21
|
|
22
|
-
#if defined(ESP32)
|
23
|
-
|
22
|
+
#if defined(ESP32)
|
23
|
+
// Free the LEDC channel if leaving PWM mode.
|
24
24
|
if (m != 0b010) releaseLEDC(p);
|
25
25
|
|
26
26
|
// Disable attached DAC if leaving DAC mode.
|
27
|
-
if (
|
27
|
+
#if defined(SOC_DAC_SUPPORTED)
|
28
|
+
if (m != 0b100) dacDisable(p);
|
29
|
+
#endif
|
28
30
|
#endif
|
29
31
|
|
30
32
|
// On the SAMD21 and RA4M1, mode needs to be INPUT when using the DAC.
|
data/src/lib/DenkoDefines.h
CHANGED
@@ -134,9 +134,24 @@
|
|
134
134
|
// Best performance acknowledging at 64 bytes, or 32 if buffer is only 64.
|
135
135
|
//
|
136
136
|
// These are 256/64 regardless of whether native USB CDC or UART bridge.
|
137
|
-
#if defined(ARDUINO_ARCH_RP2040) ||
|
137
|
+
#if defined(ARDUINO_ARCH_RP2040) || defined(ESP8266) || defined(__SAM3X8E__)
|
138
138
|
#define DENKO_SERIAL_BUFFER_SIZE 256
|
139
139
|
#define DENKO_RX_ACK_INTERVAL 64
|
140
|
+
// ESP32 defaults to 256 buffer. Stay one under.
|
141
|
+
#elif defined(ESP32)
|
142
|
+
#define DENKO_SERIAL_BUFFER_SIZE 255
|
143
|
+
#ifdef ARDUINO_USB_CDC_ON_BOOT
|
144
|
+
// S2 unreliable with acknowledgement before buffer is full.
|
145
|
+
#ifdef CONFIG_IDF_TARGET_ESP32S2
|
146
|
+
#define DENKO_RX_ACK_INTERVAL 255
|
147
|
+
// S3 and C3 are fine acknowledging at half buffer filled.
|
148
|
+
#else
|
149
|
+
#define DENKO_RX_ACK_INTERVAL 128
|
150
|
+
#endif
|
151
|
+
// Default to 64 if using a UART bridge.
|
152
|
+
#else
|
153
|
+
#define DENKO_RX_ACK_INTERVAL 64
|
154
|
+
#endif
|
140
155
|
// RA4M1 has a 512 Serial buffer.
|
141
156
|
#elif defined(_RENESAS_RA_)
|
142
157
|
#define DENKO_SERIAL_BUFFER_SIZE 512
|
data/src/lib/DenkoLEDArray.cpp
CHANGED
data/src/lib/DenkoPulseInput.cpp
CHANGED
@@ -27,7 +27,7 @@ void Denko::pulseRead(){
|
|
27
27
|
uint16_t resetTime = (auxMsg[1] << 8) | auxMsg[0];
|
28
28
|
pinMode(pin, OUTPUT);
|
29
29
|
digitalWrite(pin, bitRead(val, 1));
|
30
|
-
|
30
|
+
microDelay(resetTime);
|
31
31
|
}
|
32
32
|
pinMode(pin, INPUT);
|
33
33
|
byte state = digitalRead(pin);
|
@@ -55,3 +55,34 @@ void Denko::pulseRead(){
|
|
55
55
|
}
|
56
56
|
if (pulseCount == 0) stream->print('\n');
|
57
57
|
}
|
58
|
+
|
59
|
+
// CMD = 20
|
60
|
+
//
|
61
|
+
// pin : echo pin
|
62
|
+
// val (lower 8 bits) : trigger pin
|
63
|
+
//
|
64
|
+
void Denko::hcsr04Read(){
|
65
|
+
// Store number of microseconds to return.
|
66
|
+
uint32_t us;
|
67
|
+
|
68
|
+
// Ensure pins are correct direction.
|
69
|
+
// This is handled by modeling the sensor as a multipin component instead.
|
70
|
+
// pinMode(pin, INPUT);
|
71
|
+
// pinMode(val, OUTPUT);
|
72
|
+
|
73
|
+
// Initial pulse on the triger pin.
|
74
|
+
digitalWrite(val, LOW);
|
75
|
+
microDelay(2);
|
76
|
+
digitalWrite(val,HIGH);
|
77
|
+
microDelay(10);
|
78
|
+
digitalWrite(val,LOW);
|
79
|
+
|
80
|
+
// Wait for the echo, up to 25,000 microseconds.
|
81
|
+
us = pulseIn(pin, HIGH, 25000);
|
82
|
+
|
83
|
+
// Send value.
|
84
|
+
stream->print(pin);
|
85
|
+
stream->print(':');
|
86
|
+
stream->print(us);
|
87
|
+
stream->print('\n');
|
88
|
+
}
|