Skip to content

Latest commit

Β 

History

History
265 lines (215 loc) Β· 19.5 KB

HARDWARE.md

File metadata and controls

265 lines (215 loc) Β· 19.5 KB

Microcontrollers

πŸ’š Full support πŸ’› Partial support ❀️ Planned. No support yet ❓ Works in theory. Untested in real hardware.

Espressif Chips with Wi-Fi (Except H2)

ESP8266 Build Status ESP32 Build Status ESP32-C3 Build Status ESP32-C6 Build Status ESP32-H2 Build Status ESP32-S2 Build Status ESP32-S3 Build Status

Chip Status Board Tested Notes
ESP8266 πŸ’š NodeMCU
ESP8285 ❓ DOIT ESP-Mx DevKit Should be identical to 8266. Not tested in hardware.
ESP32 πŸ’š DOIT ESP32 DevKit V1
ESP32-S2 πŸ’š LOLIN S2 Pico Native USB-CDC (broken in core 3.0+)
ESP32-S3 πŸ’š LOLIN S3 V1.0.0 Native USB-CDC (broken in core 3.0+)
ESP32-C3 πŸ’š LOLIN C3 Mini V2.1.0 Native USB-CDC (broken in core 3.0+)
ESP32-H2 πŸ’š ESP32-H2-MINI-1 No Wi-Fi. Native USB-CDC (broken in core 3.0+)
ESP32-C6 πŸ’š ESP32-C6-WROOM-1 Native USB-CDC (broken in core 3.0+)

Note: For ESP32 chips using native USB-CDC, 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.

Note: Since Arduino ESP32 Core version 3.0+, USB-CDC is very unreliable when sending lots of data both directions (something denko can do). It's a known issue in the core. Use a regular UART until it's fixed.

AVR/MegaAVR Based Arduino Products (and Clones)

AVR Build Status MegaAVR Build Status

Chip Status Products Notes
ATmega168 πŸ’š Duemilanove, Diecimila, Pro Omits features. denko targets for info.
ATmega328 πŸ’š Uno R3, Uno WiFi, Nano, Fio, Pro
ATmega32u4 πŸ’š Leonardo, Micro, Leonardo ETH, Esplora, LilyPad USB
ATmega1280 πŸ’š Mega
ATmega2560 πŸ’š Mega2560, Arduino Mega ADK
ATmega4809 πŸ’š Nano Every, Uno WiFi Rev2

Note: Only USB boards listed. Any board with a supported chip should work, once you can flash it and connect to serial.

ARM Based Arduino Products (and Clones)

SAM3X Build Satus SAMD Build Satus RA4M1 Build Satus

Chip Status Products Notes
ATSAM3X8E πŸ’› Due Uses Native USB. Tone and IR Out don't work.
ATSAMD21 πŸ’š Zero, M0 Series, Nano 33 IOT, MKR WiFi 1010 Native USB
RA4M1 πŸ’› Uno R4 Minima, Uno R4 WiFi IR and WS2812 libraries don't support this yet

Arduino Networking

Chip Status Products Notes
Wiznet W5100/5500 πŸ’š Ethernet Shield Wired Ethernet for Uno/Mega pin-compatibles
HDG204 + AT32UC3 ❓ WiFi Shield Compiles, but no hardware
ATWINC1500 πŸ’š MKR1000, WiFi Shield 101 #define WIFI_101 for shield. Automatic for MKR1000
u-blox NINA-W102 ❓ Uno WiFi Rev 2, MKR WiFi 1010, Nano 33 IOT Should work. No hardware

AVR Chips from MightyCore

Chip Status Products Notes
ATmega1284 ❀️ Used in many 8-bit 3D printer boards.

Raspberry Pi Microcontrollers

RP2040 Build Status

Chip Status Board Tested Notes
RP2040 πŸ’š Raspberry Pi Pico (W)

Single Board Computers

See the Support section of denko-piboard.

Peripherals

πŸ’š Full support πŸ’› Partial support ❀️ Planned. No support yet

Interfaces

Name Status HW/SW Component Class Notes
Digital In πŸ’š H DigitalIO::Input 1ms - 128ms (4ms default) listen, poll, or read
Analog In (ADC) πŸ’š H AnalogIO::Input 1ms - 128ms (16ms default) listen, poll, or read
Digital Out πŸ’š H DigitalIO::Output
Analog Out (DAC) πŸ’š H AnalogIO::Output Only SAM3X, SAMD21, RA4M1, ESP32, ESP32-S2
PWM Out πŸ’š H PulseIO::PWMOutput
Servo/ESC Motor Drive πŸ’š H See Motor Driver Table Depends on PWM
Tone Out (Sq. Wave) πŸ’š H PulseIO::Buzzer Except SAM3X. Uses PWM
I2C πŸ’š H I2C::Bus Predetermined pins per board
I2C Bit-Bang πŸ’š S I2C::BitBang Any pins
SPI πŸ’š H SPI::Bus Predetermined pins per board
SPI Bit-Bang πŸ’š S SPI::BitBang Any pins
UART πŸ’š H UART::Hardware Except Atmega328, ATmega168
UART Bit-Bang πŸ’š S UART::BitBang Only ATmega328
Maxim OneWire πŸ’š S OneWire::Bus No overdrive
Infrared Output πŸ’š S PulseIO::IROutput Except SAM3X, RA4M1
Infrared Input ❀️ S PulseIO::IRInput Doable with existing library
WS2812 RGB LEDs πŸ’š S LED::WS2812 Except RA4M1
ESP32-PCNT ❀️ H - Only ESP32. Pulse and encoder counter
ESP32-MCPWM ❀️ H - Only ESP32. Motor control PWM

Note: When listening, the board checks the pin's value every 2^n milliseconds (n from 0 to 7), without further commands. Polling and reading follow a call and response pattern.

Basic Input/Output

Name Status Interface Component Class Notes
Button πŸ’š Digital In DigitalIO::Button
Relay πŸ’š Digital Out DigitalIO::Relay
Rotary Encoder πŸ’š Digital In DigitalIO::RotaryEncoder Listens every 1ms
Potentiometer πŸ’š Analog In AnalogIO::Potentiometer Smoothing on by default
Joystick πŸ’š Analog In AnalogIO::Joystick

LEDs

Name Status Interface Component Class Notes
LED πŸ’š Digi/Ana Out LED::Base
RGB LED πŸ’š Digi/Ana Out LED::RGB
7 Segment Display πŸ’› Digital Out LED::SevenSegment No decimal point
8x8 LED (MAX7219) ❀️ SPI LED::MAX7219
TM1637 ❀️ BitBang SPI LED::TM1637 4x 7 Segment + Colon
Neopixel / WS2812B πŸ’š Adafruit Library LED::WS2812
Dotstar / APA102 πŸ’š SPI LED::APA102

Displays

Name Status Interface Component Class Notes
HD44780 LCD πŸ’š Digital Out, Output Register Display::HD44780
SSD1306 OLED πŸ’› I2C or SPI Display::SSD1306 1 font, some graphics
SH1106 OLED πŸ’› I2C or SPI Display::SH1106 Works same as SSD1306
ST7565R (128x64 Mono) ❀️ SPI Display::ST7565R
ST7735S (160x128 RGB) ❀️ SPI Display::ST7735S
ILI9341 (240x320 RGB) ❀️ SPI Display::ILI9341
GC9107 (128x128 RGB) ❀️ SPI Display::GC9107
GC9A01 (240x240 Round) ❀️ SPI Display::GCA9A01
IL0373 (212x104 E-Paper) ❀️ SPI Display::IL0373

Sound

Name Status Interface Component Class Notes
Piezo Buzzer πŸ’š Tone Out PulseIO::Buzzer Frequency > 30Hz

Motors / Motor Drivers

Name Status Interface Component Class Notes
Generic Hobby Servo πŸ’š Servo/ESC PWM Motor::Servo Max depends on PWM channel count
Generic ESC πŸ’› Servo/ESC PWM Motor::Servo Works. Needs its own class.
PCA9685 ❀️ I2C PulseIO::PCA9685 16-ch, 12-bit PWM for servo or LED
L298N πŸ’š Digi + PWM Out Motor::L298 H-Bridge DC motor driver
DRV8833 ❀️ Digi + PWM Out Motor::DRV8833 H-Bridge DC motor driver
TB6612 ❀️ Digi + PWM Out Motor::TB6612 H-Bridge DC motor driver
A3967 πŸ’š Digital Out Motor::Stepper 1-ch microstepper (EasyDriver)
A4988 πŸ’› DigitalOut Motor::Stepper 1-ch microstepper
TMC2209 ❀️ - - 1-ch silent stepper driver

I/O Expansion

Name Status Interface Component Class Notes
Input Register πŸ’š SPI SPI::InputRegister Tested on CD4021B
Output Register πŸ’š SPI SPI::OutputRegister Tested on 74HC595
PCF8574 Expander ❀️ I2C DigitalIO::PCF8574 8-ch bi-directional digital I/O
ADS1100 ADC πŸ’š I2C AnalogIO::ADS1100 1-ch, 16-bit ADC. No continuous mode.
ADS1115 ADC πŸ’š I2C AnalogIO::ADS1115 4-ch, 16-bit ADC. Comparator not implemented.
ADS1118 ADC πŸ’š SPI AnalogIO::ADS1118 4-ch, 16-bit ADC + temperature
ADS1232 ADC ❀️ SPI AnalogIO::ADS1232 2-ch, 24-bit ADC + temperature
PCF8591 ADC/DAC ❀️ I2C AnalogIO::PCF8591 4-ch, 8-bit ADC + 1-ch 8-bit DAC
MCP4725 DAC ❀️ I2C AnalogIO::MCP4275 1-ch, 12-bit DAC
PCA9548 I2C Mux ❀️ I2C I2C::PCA9548 8-way I2C multiplexer

Environmental Sensors

Name Status Interface Component Class Type Notes
MAX31850 ❀️ OneWire Sensor::MAX31850 Thermocouple
MAX6675 ❀️ SPI Sensor::MAX6675 Thermocouple
DS18B20 πŸ’š OneWire Sensor::DS18B20 Temp
DHT11/21/22 πŸ’š Digi In/Out Sensor::DHT Temp / RH
SHT30/31/35 πŸ’š I2C Sensor::SHT3X Temp / RH M5Stack ENV III, one-shot only
SHT40/41 ❀️ I2C Sensor::SHT4X Temp / RH
QMP6988 πŸ’š I2C Sensor::QMP6988 Temp / Press M5Stack ENV III
BMP180 πŸ’š I2C Sensor::BMP180 Temp / Press
BMP280 πŸ’š I2C Sensor::BMP280 Temp / Press
BME280 πŸ’š I2C Sensor::BME280 Temp / Press / RH
BME680 ❀️ I2C Sensor::BME680 Temp / Press / RH / TVOC
HTU21D πŸ’š I2C Sensor::HTU21D Temp / RH No user register read
HTU31D πŸ’š I2C Sensor::HTU31D Temp / RH No diagnostic read
AHT10/15 πŸ’š I2C Sensor::AHT10 Temp / RH
AHT20/21/25 πŸ’š I2C Sensor::AHT20 Temp / RH
ENS160 ❀️ I2C Sensor::ENS160 eCO2 / TVOC / AQI
AGS02MA ❀️ I2C Sensor::AGS02MA TVOC
SCD40 ❀️ I2C Sensor::SDC40 Temp / Press / CO2
CCS811 ❀️ I2C Sensor::CCS811 eCO2

Light Sensors

Name Status Interface Component Class Notes
BH1750 ❀️ Digital In Sensor::BH1750 Ambient Light
TCS34725 ❀️ I2C Sensor::TCS34725 RGB
APDS9960 ❀️ I2C Sensor::APDS9960 Proximity, RGB, Gesture

PIR Motion Sensors

Name Status Interface Component Class Notes
HC-SR501 πŸ’š Digital In Sensor::GenericPIR
HC-SR505 πŸ’› Digital In Sensor::GenericPIR
AS312 πŸ’š Digital In Sensor::GenericPIR
AM312 πŸ’› Digital In Sensor::GenericPIR

Distance Sensors

Name Status Interface Component Class Notes
HC-SR04 πŸ’š Digi In/Out Sensor::HCSR04 Ultrasonic, 20-4000mm
RCWL-9620 πŸ’š I2C Sensor::RCWL9260 Ultrasonic, 20-4500mm
JSN-SR04T πŸ’š UART Sensor::JSNSR04T Mode 2 ONLY. Use HC-SR04 driver for mode 0 or 4.
VL53L0X πŸ’› I2C Sensor::VL53L0X Laser, 20 - 2000mm. Continuous mode only. No configuration.
GP2Y0E03 ❀️ I2C Sensor::GP2Y0E03 Infrared, 40 - 500mm

Inertial Measurement Units

Name Status Interface Component Class Notes
ADXL345 ❀️ I2C Sensor::ADXL345 Accelerometer
IT3205 ❀️ I2C Sensor::IT3205 Gyroscope
HMC5883L ❀️ I2C Sensor::HMC5883L Compass
MPU6050 ❀️ I2C Sensor::MPU6050 Gyro + Accelerometer
MPU6886 ❀️ I2C Sensor::MPU6886 Gyro + Accelerometer
BMI160 ❀️ I2C Sensor::BMI160 Gyro + Accelerometer
LSM6DS3 ❀️ I2C Sensor:LSM6DS3 Gyro + Accelerometer

Real Time Clocks

Name Status Interface Component Class Notes
DS1302 ❀️ I2C RTC::DS1302
DS1307 ❀️ I2C RTC::DS1307
DS3231 πŸ’š I2C RTC::DS3231 Alarms not implemented
PCF8563 ❀️ I2C RTC::PCF8563

GPS

Name Status Interface Component Class Notes
GT-U7 ❀️ UART -

Miscellaneous

Name Status Interface Component Class Notes
Board EEPROM πŸ’š Built-In EEPROM::BuiltIn Arduino ARM boards have no EEPROM
MFRC522 ❀️ SPI/I2C DigitalIO::MFRC522 RFID tag reader / writer