

bash # Клонировать репозиторий git clone https://github.com/circool/IOTDevice.git cd IOTDevice
- Size
- 31.2 × 59.4 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 12
- Nets
- 27
- Pads
- 53
- Tracks, vias
- 0, 0
- Routed
- Not yet
- KiCad
- KiCad 6 (file 20211014)
- Created
- 23 Jan 2024
- Updated
- 23 Aug 2026
Overview
Fan is an open-source printed circuit board by circool, from the circool/IOT_Device repository on GitHub, published under the MIT licence. It is a 2-layer board of 31.2 × 59.4 mm with 12 parts on 27 nets.
It is built around the ESP-12F. Its parts include 4 resistors, 2 ICs, 2 connectors, 2 switches and 1 capacitor. It belongs with the ESP8266 boards of this library.
Main components
1README
README.mdUniversal Smart Home Device
Универсальное устройство для умного дома с поддержкой датчиков температуры/влажности, ШИМ-управления вентилятором, MQTT и веб-интерфейсом. Идеально подходит для автоматизации вытяжной вентиляции в ванной и туалете.
Особенности
-
Три типа устройств в одной прошивке:
- Вентилятор с датчиками (автоматическое управление)
- Автономный датчик температуры/влажности
- Управляемый выключатель
-
Smart-управление:
- Автоматическое включение по температуре/влажности
- Ручное управление через MQTT и Web
- Таймер отложенного включения
- Аварийное отключение по таймеру
-
Тихий режим (ШИМ):
- Регулировка скорости 0-100%
- Адаптивный режим — автоматическая подстройка мощности
- Стартовый импульс для надёжного запуска
-
Поддержка платформ:
- ESP8266 (NodeMCU, ESP-12F)
- ESP32 (любые версии)
-
Датчики:
- AHT10 (I2C)
- DHT11/DHT22 (1-Wire)
-
Связь и управление:
- MQTT с LWT и autodiscovery-ready топиками
- Веб-интерфейс для настройки
- OTA обновления прошивки
- Точка доступа (AP) для первоначальной настройки
- Сброс настроек кнопкой / MQTT / Web
-
Надёжность:
- Хранение настроек в EEPROM с CRC16
- Watchdog Timer (WDT)
- Автоматическое восстановление после потери связи
Содержание
- Поддерживаемые устройства
- Аппаратные требования
- Схема подключения
- Установка прошивки
- Конфигурация
- MQTT топики
- Логика работы
- Компиляция из исходников
- TODO
Поддерживаемые устройства
| Тип | DEVICE_TYPE | Компоненты | Применение |
|---|---|---|---|
| Вентилятор | 1 | Датчик + ШИМ + реле | Вытяжка в ванной/туалете |
| Датчик | 2 | Только датчик | Мониторинг микроклимата |
| Выключатель | 3 | Реле (без датчика) | Управление освещением/нагрузкой |
Аппаратные требования
Компоненты (максимальная конфигурация)
| Компонент | Модель | Примечание |
|---|---|---|
| Микроконтроллер | ESP8266 (NodeMCU) или ESP32 | Любая плата с WiFi |
| Датчик (опционально) | AHT10 или DHT11/DHT22 | I2C или 1-Wire |
| Исполнительное реле | Твердотельное реле G3MB-202P | Для реализации ШИМ |
| Питание | AC-DC 220V → 3.3V | Подключается параллельно освещению |
| Кнопка сброса | Тактовая на замыкание | GPIO0 → GND |
| Светодиод индикации | Любой | С резистором 220-470 Ом (GPIO2* → GND, инверсия) |
Назначение пинов
| Функция | ESP8266 | ESP32 |
|---|---|---|
| Управление (PWM) | GPIO14 | GPIO4 |
| AHT10 SDA | GPIO4 | GPIO21 |
| AHT10 SCL | GPIO5 | GPIO22 |
| DHT11/22 | GPIO4* | GPIO16* |
| Кнопка сброса | GPIO0 | GPIO0 |
| Светодиод индикации связи | GPIO2** | GPIO2** |
Важно: Для работы ШИМ-регулировки обязательно используйте твердотельное реле (SSR), а не механическое!
* DHT11/22 можно подключать к любым свободным пинам, кроме GPIO0, GPIO2, GPIO15 (ESP8266) из-за особого поведения при загрузке. Рекомендуемые пины: GPIO4, GPIO5, GPIO16 (ESP8266) или GPIO16, GPIO17, GPIO18 (ESP32).
** На многих модулях NodeMCU и ESP32-devkit на GPIO2 уже установлен встроенный синий светодиод. При использовании DHT на GPIO2 возникнет конфликт — выберите другой пин для датчика или отключите LED.
Схема подключения
220V AC →→→ AC-DC 3.3V →→→ ESP
↓
Свет
220V AC →→→ SSR (реле) →→→ Вентилятор
↑
GPIO (PWM)
ESP →→→ I2C →→→ AHT10 (SDA/SCL)Принцип работы:
- Свет включён → устройство получает питание
- Устройство решает: включать вентилятор или нет (по датчикам)
- Если нужно — подаёт ШИМ-сигнал на реле
- Свет выключен → устройство обесточено → вентилятор выключен
Установка прошивки
Способ 1: PlatformIO (рекомендуется)
# Клонировать репозиторий
git clone https://github.com/circool/IOT_Device.git
cd IOT_Device
# Собрать для ESP8266
pio run -e esp8266 -t upload
# Или для ESP32
pio run -e esp32 -t uploadСпособ 2: Arduino IDE
- Установите поддержку ESP8266/ESP32 через Boards Manager
- Установите библиотеки:
- PubSubClient by Nick O'Leary
- Adafruit AHTX0
- DHT sensor library
- ElegantOTA
- Откройте
main.cpp, выберите плату и загрузите
Первоначальная настройка
- Первый запуск — устройство создаст точку доступа
Fan_XXXX(илиSensor_XXXX/Switch_XXXX) - Подключитесь к этой WiFi сети (пароль отсутствует)
- Откройте браузер по адресу
http://192.168.4.1 - Заполните настройки:
- WiFi SSID и пароль
- MQTT брокер (адрес и порт)
- Параметры управления (при необходимости)
- Сохраните — устройство перезагрузится и подключится к вашей сети
Конфигурация
Настройки в коде (config.h)
// Тип устройства
#define DEVICE_TYPE 1 // 1=Fan, 2=Sensor, 3=Switch
// Датчик (для TYPE 1,2)
#define SENSOR_TYPE 1 // 1=AHT10, 2=DHT
// Аппаратные пины
#define SWITCH_PIN 4 // Пин управления (ESP32)
#define STATUS_LED_PIN 2 // LED индикации (0 = отключён)
#define RESET_PIN 0 // Кнопка сброса
// Функционал
#define WIFI_ENABLED 1
#define MQTT_ENABLED 1
#define WEB_ENABLED 1
#define OTA_ENABLED 1
#define WDT_ENABLED 1
// Тайминги
#define WDT_TIMER_MS 5000 // Watchdog таймер
#define AP_FALLBACK_TIMEOUT_MS 12000 // Таймаут до перехода в AP
// ШИМ параметры (для TYPE 1)
#define PWM_FREQUENCY 5 // Частота ШИМ (Гц)Настройки в среде (platformio.ini)
Файл platformio.ini содержит все параметры сборки для разных платформ. Раздел разделён на общие настройки ([common]) и специфичные для каждой платформы ([env:esp32], [env:esp8266]).
Структура файла
[common] # Общие настройки для всех платформ
framework = arduino # Фреймворк
monitor_speed = 115200 # Скорость Serial порта
upload_speed = 460800 # Скорость загрузки прошивки
build_flags = # Флаги компиляции (общие)
-DMAGIC_VALUE=0x5A6B # Магическое число для EEPROM
-DDEVICE_TYPE=1 # Тип устройства (1=Fan, 2=Sensor, 3=Switch)
-DVERSION=\"1.4\" # Версия прошивки
-DSTATUS_LED_PIN=2 # Пин статусного LED (0=отключён)
[env:esp32] # Сборка для ESP32
platform = espressif32 # Платформа
board = esp32dev # Тип платы
extends = common # Наследование общих настроек
lib_deps = ... # Зависимости (библиотеки)
build_flags = # Специфичные флаги для ESP32
${common.build_flags} # Включить общие флаги
-DSWITCH_PIN=4 # Пин управления для ESP32
-DLED_INVERTED=0 # Инверсия LED (0=нормальная логика)
[env:esp8266] # Сборка для ESP8266
platform = espressif8266 # Платформа
board = nodemcu # Тип платы
extends = common # Наследование общих настроекОсновные параметры сборки
| Параметр | Значение | Описание |
|---|---|---|
-DMAGIC_VALUE | 0x5A6B | Идентификатор корректной конфигурации в EEPROM |
-DDEVICE_TYPE | 1, 2, 3 | Тип устройства (см. таблицу ниже) |
-DVERSION | "1.4" | Версия прошивки (отображается в веб-интерфейсе) |
-DSTATUS_LED_PIN | 2 | Пин для LED индикации (0 = отключить) |
-DSWITCH_PIN | 4 (ESP32) / 14 (ESP8266) | Пин управления реле/вентилятором |
-DLED_INVERTED | 0 или 1 | Инверсия логики LED (1 = HIGH выключает) |
Типы устройств (DEVICE_TYPE)
# Вентилятор с датчиками (полная функциональность)
-DDEVICE_TYPE=1
# Только датчик (без управления нагрузкой)
-DDEVICE_TYPE=2
# Управляемый выключатель (без датчика)
-DDEVICE_TYPE=3Включение/отключение функционала
# Основные модули (по умолчанию ВСЕ включены)
-DWIFI_ENABLED=1 # WiFi поддержка
-DMQTT_ENABLED=1 # MQTT клиент
-DWEB_ENABLED=1 # Веб-сервер
-DOTA_ENABLED=1 # OTA обновления
-DWDT_ENABLED=1 # Watchdog Timer
# Отключение ненужного функционала (экономия памяти)
; -DMQTT_ENABLED=0 # Пример отключения MQTT
; -DWIFI_ENABLED=0 # Полностью отключить WiFi
; -DWDT_ENABLED=0 # Отключить Watchdog (только для отладки)Настройка отладки (логирование)
# Глобальное включение отладки
-DDEBUG_ENABLED=1
# Детальное логирование компонентов (работает только при DEBUG_ENABLED=1)
-DLOG_SENSOR=1 # Логи датчика
-DLOG_CONFIG=1 # Логи конфигурации
-DLOG_FAN=1 # Логи вентилятора
-DLOG_MQTT=1 # Логи MQTT
-DLOG_WIFI=1 # Логи WiFi
-DLOG_WEB=1 # Логи веб-сервера
-DLOG_AP=1 # Логи режима точки доступа
-DLOG_OTA=1 # Логи OTA обновлений
-DLOG_LED=1 # Логи LED индикацииПример включения полной отладки:
build_flags =
${common.build_flags}
-DDEBUG_ENABLED=1
-DLOG_SENSOR=1
-DLOG_MQTT=1
-DLOG_WIFI=1Настройка MQTT функционала
# MQTT возможности (требуют MQTT_ENABLED=1)
-DMQTT_RESET_ENABLED=1 # Разрешить сброс через MQTT
-DMQTT_PUBLISH_RSSI=1 # Публиковать RSSI WiFi
-DMQTT_PUBLISH_RESET_REASON=1 # Публиковать причину перезагрузки
-DMQTT_IGNORE_PUBLISH_NORMAL_RESET_REASONS=1 # Не публиковать штатные перезагрузки
# Настройки MQTT соединения
-DMQTT_RECONNECT_DELAY_MS=5000 # Задержка переподключения (мс)
-DMQTT_KEEPALIVE_SEC=3 # Keepalive интервал (сек)Настройка веб-интерфейса
# WEB возможности (требуют WEB_ENABLED=1)
-DWEB_STATUS_ENABLED=1 # Страница статуса
-DWEB_SHOW_RSSI=1 # Отображать RSSI на странице
-DWEB_RESET_ENABLED=1 # Кнопка сброса в веб-интерфейсе
# Настройки точки доступа (AP)
-DAP_ENABLED=1 # Включить режим AP
-DAP_FALLBACK_TIMEOUT_MS=12000 # Таймаут до перехода в AP (мс)
-DAP_IP_ADDRESS="192.168.4.1" # IP адрес в режиме APНастройки Watchdog (WDT)
# Параметры Watchdog (требуют WDT_ENABLED=1)
-DWDT_TIMER_MS=5000 # Таймаут WDT (мс)
-DLOOP_WATCHDOG_MULTIPLIER=3 # Множитель для основного циклаНастройки датчиков
# Тип датчика (для DEVICE_TYPE=1 или 2)
-DSENSOR_TYPE=1 # 1 = AHT10 (I2C), 2 = DHT11/22 (GPIO)
# Параметры для DHT (если SENSOR_TYPE=2)
-DSENSOR_PIN=2 # GPIO пин для DHT
-DDHT_TYPE=DHT11 # Тип DHT (DHT11, DHT22, DHT21)
# Интервал опроса датчика (сек)
-DSENSOR_DURATION=10Настройки ШИМ (для вентилятора)
# ШИМ параметры (для DEVICE_TYPE=1)
-DPWM_ENABLED=1 # Включить ШИМ
-DPWM_FREQUENCY=5 # Частота ШИМ (Гц) — 5 Гц оптимально для SSR
-DPWM_RESOLUTION=8 # Разрешение ШИМ (бит) — 8 бит = 0-255
-DPWM_STARTING=200 # Длительность стартового импульса (мс)
# Адаптивный режим (требует PWM_ENABLED=1)
-DAPAPTIVE_ENABLED=1 # Включить адаптивный режим
-DDEFAULT_SPEED_PERCENT=50 # Скорость по умолчанию (%)
-DMIN_SPEED_PERCENT=10 # Минимальная скорость при адаптации
-DADAPTIVE_EPSILON_TEMP=0.5 # Чувствительность температуры (°C)
-DADAPTIVE_EPSILON_HUM=2.0 # Чувствительность влажности (%)
-DADAPTIVE_STEP_SIZE=10 # Шаг изменения скорости (%)
-DADAPTIVE_SPEED_SENSITIVITY=0.7 # Чувствительность к скорости измененияНастройки аварийной защиты
# Таймеры безопасности (для DEVICE_TYPE=1 или 3)
-DEMERGENCY_ENABLED=1 # Включить аварийное отключение
-DMAX_ON_TIME_SEC=3600 # Максимальное время работы (сек) — 1 час
# Таймер отложенного включения
-DDEFAULT_DELAY_SECONDS=60 # Задержка по умолчанию (сек)
-DBOOT_SWITCH_STATE=0 # Состояние при старте (0=выкл, 1=вкл)Настройки WiFi
# Параметры WiFi (требуют WIFI_ENABLED=1)
-DWIFI_CONNECT_TIMEOUT_MS=30000 # Таймаут подключения (мс)
-DWIFI_OUTPUT_POWER=15.0 # Мощность передатчика (0-20.5 dBm)
# Включить сканирование сетей при старте (только для отладки)
; -DSCANING_WIFI_ENABLED=1Примеры готовых конфигураций
1. Минимальная конфигурация (только датчик, без WiFi):
[env:esp32]
build_flags =
-DDEVICE_TYPE=2
-DWIFI_ENABLED=0
-DMQTT_ENABLED=0
-DWEB_ENABLED=0
-DSENSOR_TYPE=1
-DSTATUS_LED_PIN=02. Полная конфигурация с отладкой:
[env:esp32]
build_flags =
${common.build_flags}
-DDEBUG_ENABLED=1
-DLOG_SENSOR=1
-DLOG_MQTT=1
-DLOG_WIFI=1
-DMQTT_PUBLISH_RSSI=1
-DWEB_SHOW_RSSI=13. Выключатель с таймером (без датчика):
[env:esp8266]
build_flags =
${common.build_flags}
-DDEVICE_TYPE=3
-DSWITCH_PIN=14
-DDEFAULT_DELAY_SECONDS=30
-DMAX_ON_TIME_SEC=1800
-DBOOT_SWITCH_STATE=04. Тихий режим с адаптацией:
[env:esp32]
build_flags =
${common.build_flags}
-DDEVICE_TYPE=1
-DPWM_ENABLED=1
-DAPAPTIVE_ENABLED=1
-DPWM_FREQUENCY=5
-DDEFAULT_SPEED_PERCENT=70
-DMIN_SPEED_PERCENT=20
-DADAPTIVE_STEP_SIZE=5Важные замечания
- Приоритет флагов: Специфичные для платформы флаги переопределяют общие
- Экономия памяти: Отключайте ненужный функционал (
MQTT_ENABLED=0,WEB_ENABLED=0) для ESP8266 (особенно важно при ограниченной flash) - Частота ШИМ: Для твердотельных реле оптимальна 5-10 Гц. Более высокая частота может вызвать перегрев реле
- ESP8266 нюансы:
- Требуется
-Wno-sign-compareи-Wno-uninitializedдля подавления предупреждений - Режим flash
doutобязателен для некоторых плат - LED часто инвертирован (
LED_INVERTED=1)
- Требуется
Изменение параметров без перекомпиляции
Некоторые параметры можно изменить через веб-интерфейс или MQTT без перепрошивки:
- Пороги температуры/влажности
- Скорость вентилятора
- Таймеры (задержка, аварийное отключение)
- Режимы работы (ручной/автоматический)
Параметры, требующие перекомпиляции:
- Тип устройства (
DEVICE_TYPE) - Назначение пинов (
SWITCH_PIN,STATUS_LED_PIN) - Частота ШИМ (
PWM_FREQUENCY) - Включение/отключение модулей (
MQTT_ENABLED,WEB_ENABLED)
### Файл credentials.h (опционально)
Создайте этот файл для заводских настроек:
```cpp
// credentials.h
#define SSID_NAME "MyWiFi"
#define WIFI_PASSWORD "MyPassword"
#define MQTT_ADDRESS "192.168.1.100"
#define MQTT_PORT 1883
#define MQTT_USER "user"
#define MQTT_PASSWORD "pass"MQTT топики
Устройство использует префикс вида {Type}_{ID} (например Fan_D84C).
Общие топики
| Топик | Направление | Формат | Описание |
|---|---|---|---|
{prefix}/status | Dev → Broker | Online/Offline | Статус (LWT) |
{prefix}/version | Dev → Broker | 1.4 | Версия прошивки |
{prefix}/c/system/reset | Broker → Dev | 1 | Сброс настроек |
Для вентилятора (TYPE 1)
| Топик | Направление | Описание |
|---|---|---|
{prefix}/fan/state | Dev → Broker | ON/OFF |
{prefix}/c/fan/state | Broker → Dev | Управление |
{prefix}/fan/speed | Dev → Broker | Скорость (0-100%) |
{prefix}/c/fan/speed | Broker → Dev | Установка скорости |
{prefix}/fan/adaptiveMode | Dev → Broker | Адаптивный режим |
{prefix}/fan/delaySec | Dev → Broker | Задержка включения |
{prefix}/fan/maxOnTime | Dev → Broker | Аварийное отключение |
{prefix}/fan/sensorControlMode | Dev → Broker | Режим датчика |
{prefix}/sensor/temperature | Dev → Broker | Температура |
{prefix}/sensor/humidity | Dev → Broker | Влажность |
{prefix}/sensor/lowTemp | Dev → Broker | Нижний порог T |
{prefix}/c/sensor/highTemp | Broker → Dev | Верхний порог T |
Для датчика (TYPE 2)
| Топик | Направление | Описание |
|---|---|---|
{prefix}/sensor/temperature | Dev → Broker | Температура |
{prefix}/sensor/humidity | Dev → Broker | Влажность |
Для выключателя (TYPE 3)
| Топик | Направление | Описание |
|---|---|---|
{prefix}/switch/state | Dev → Broker | Состояние |
{prefix}/c/switch/state | Broker → Dev | Управление |
{prefix}/switch/delaySec | Dev → Broker | Задержка включения |
{prefix}/switch/maxOnTime | Dev → Broker | Аварийное отключение |
Логика работы
Режимы работы
-
Режим датчика (
sensorControlMode = 1):- Включение: температура ≥
highTempИЛИ влажность ≥highHum - Выключение: температура ≤
lowTempИ влажность ≤lowHum
- Включение: температура ≥
-
Ручной режим (
sensorControlMode = 0):- Игнорирует датчик
- Управление только через MQTT/Web
-
Адаптивный режим (при
speedPercent < 100):- Автоматически повышает/понижает скорость
- Старается удержать температуру/влажность на уровне момента включения
Таймеры
-
Отложенное включение (
delaySeconds):- Запускается при выключении вентилятора
- По истечении — принудительное включение
-
Аварийное отключение (
maxOnTime):- Защита от перегрева
- По истечении — выключение + переход в ручной режим
Приоритеты команд
- Ручное управление (MQTT/Web) — наивысший приоритет
- Таймер отложенного включения
- Режим управления датчиком
Компиляция из исходников
Структура проекта
├── main.cpp # Основной цикл
├── config.h/cpp # Настройки и EEPROM
├── mqtt.h/cpp # MQTT клиент
├── web.h/cpp # Веб-сервер
├── sensor.h/cpp # Датчики
├── fan.h/cpp # Управление вентилятором
├── switch.h/cpp # Управление выключателем
├── led.h/cpp # LED индикация
├── ansi.h # Цветной вывод в Serial
├── web_strings.h # HTML строки
└── platformio.ini # Конфигурация сборкиPlatformIO конфигурация
[env:esp32]
platform = espressif32
board = esp32dev
build_flags =
-DDEVICE_TYPE=1
-DMQTT_ENABLED=1
-DWEB_ENABLED=1
lib_deps =
knolleary/PubSubClient @ ^2.8
adafruit/Adafruit AHTX0 @ ^2.0.5
ayushsharma82/ElegantOTA @ ^2.2.8
adafruit/DHT sensor library@^1.4.6Предупреждение относительно OTA
ESP8266 с 1MB flash (ESP-01, ESP-07) не поддерживают OTA!
Несмотря на то, что веб-интерфейс ElegantOTA показывает успешную загрузку, после перезагрузки устройство останется на старой прошивке. Для OTA требуется минимум 2MB flash. Используйте модули с 4MB (NodeMCU, Wemos D1 mini, ESP-12F) или установите константу/флаг OTA_ENABLED=0 / -DOTA_ENABLED=0 для исключения OTA.
Отладка
// В platformio.ini
build_flags =
-DDEBUG_ENABLED=1 // Включить отладку
-DLOG_SENSOR=1 // Логи датчика
-DLOG_MQTT=1 // Логи MQTT
-DLOG_WIFI=1 // Логи WiFi
-DLOG_WEB=1 // Логи WebTODO
- Реализовать MQTT Discovery для Home Assistant
- Добавить поддержку ESP32-C6 (ZigBee/Matter)
Parts
12| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R2, R3, R4, R5 |
| 1 | 4F | Ionistor:C_Radial_D20.4mm_H7.0mm_P6.8mm | C2 |
| 1 | AC 220 | TerminalBlock_RND:TerminalBlock_RND_205-00001_1x02_P5.00mm_Horizontal | SW1 |
| 1 | ACDC_220_3.3V_700mA | Converter_ACDC:Converter_ADCD_China | M1 |
| 1 | ESP-12F | RF_Module:ESP-12E | U2 |
| 1 | FAN | TerminalBlock_RND:TerminalBlock_RND_205-00001_1x02_P5.00mm_Horizontal | SW2 |
| 1 | G5MB-202P | Relay_THT:Relay_SPDT_Omron-G3MB | U1 |
| 1 | PROG | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Horizontal | J1 |
| 1 | SENSOR | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
Questions
How big is the Fan PCB?
It measures 31.2 × 59.4 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Fan use?
12 parts, built around the ESP-12F. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Fan KiCad files?
From the circool/IOT_Device repository on GitHub, at the commit this page was made from: the board is Fan/Fan.kicad_pcb and its schematic Fan/Fan.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Fan design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers55 × 82.7 mm

- 2 layers51.4 × 61 mm

- 2 layers50 × 38 mm

- 2 layers33.7 × 66 mm

Smartbell
Staacks/there.oughta.be
Projects featured on my blog at https://there.oughta.be
27 parts108GPL-3.0 - 2 layers49.4 × 35.8 mm

WS2812Controller
klein0r/pcb-ws2812-wifi-controller
WiFi Controller for WS2812 LED Stripes
22 parts82MIT - 4 layers20 × 48.5 mm

Midea WiFi Dongle
reneklootwijk/mideahvac-dongle
This repository contains the hardware design of a WiFi dongle for Midea-like airconditioners and humidifiers. Midea provides a WiFi dongle (SK102/SK103), either as optional feature or built-in, to control the appliances…
21 parts75 - 2 layers31.4 × 20.6 mm

Window sensor V5
gadjet/Window-Door-sensor-Version-5
Version 5 of the Window/Door sensor project this time with ultra low current consumption
32 parts70GPL-2.0 - 2 layers70 × 36 mm

Air Purifier Uppatvind
horvathgergo/esp8266-for-uppatvind
Smart controller for IKEA Uppåtvind Air Purifiers
27 parts60GPL-3.0