🛒
0 товар.
0 руб.
Логотип

Интернет-магазин «Неглупый Дом»

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

🚨 Проект: охранная сигнализация нескольких дверей через расширитель PCF8574

В другом проекте расширитель PCF8574 демонстрирует принцип на одном геркон-датчике. Здесь — реальная задача: несколько герконов на разных дверях подключены к одному PCF8574, зуммер срабатывает при открытии любой.

Как это работает

Принцип тот же: PCF8574 добавляет 8 пинов через I2C, Arduino получает все 8 состояний одним байтом. Разница — в применении: несколько пинов используются одновременно (P0-P3 для четырёх дверей), код проверяет каждый бит, определяя какая дверь открыта.

Важная деталь: если провод герконa оборвётся, подтягивающий резистор держит линию в HIGH — обрыв физически воспринимается как "дверь открыта", а не "всё спокойно", что хорошее свойство для охранной системы.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. PCF8574: SDA → A4, SCL → A5, VCC → 5V, GND → GND. Перемычки A0-A2 оставьте как есть (адрес 0x20).
  2. Геркон каждой двери: сигнал → свой пин P0-P3 модуля, VCC → 5V, GND → GND.
  3. Зуммер: сигнал → D8, GND → GND.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.

#include <Wire.h>

const int PCF8574_ADDR = 0x20;
const int BUZZER_PIN = 8;
const int DOOR_COUNT = 4;

byte readPCF8574() {
  Wire.requestFrom(PCF8574_ADDR, 1);
  if (Wire.available()) return Wire.read();
  return 0xFF;
}

void setup() {
  Serial.begin(9600);
  Wire.begin();
  pinMode(BUZZER_PIN, OUTPUT);
  Wire.beginTransmission(PCF8574_ADDR);
  Wire.write(0xFF);
  Wire.endTransmission();
}

void loop() {
  byte state = readPCF8574();
  bool anyDoorOpen = false;
  for (int door = 0; door < DOOR_COUNT; door++) {
    if (bitRead(state, door)) anyDoorOpen = true;
  }
  if (anyDoorOpen) tone(BUZZER_PIN, 2500, 100);
  delay(300);
}
                

Дополнительных библиотек не требуется — только `Wire.h`. При добавлении дверей на P4-P7 увеличьте `DOOR_COUNT` до 8.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🌿 точный климат-контроль теплицы…🔔 сигнализация выхода частоты ге… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу: 167 ₽ 150 ₽ (экономия 17 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина

Поиск


Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA