Безопасность IoT и отладка частых проблем
Делаем устройство не только работающим, но и защищённым и надёжным.
Безопасность IoT — набор мер, защищающих умные устройства от взлома, перехвата данных и использования их как точки входа в домашнюю сеть.
Почему это не мелочь
Умное устройство подключено к вашей сети и часто к интернету. Взломанная лампа или камера может стать дверью к остальным компьютерам или частью ботнета. Истории про тысячи взломанных камер — следствие пренебрежения базовой защитой.
Базовые правила безопасности
| Мера | Зачем |
| Менять пароли по умолчанию | Заводские пароли известны всем |
| Не хранить секреты в коде на GitHub | Пароли утекают в публичные репозитории |
| Шифровать трафик (TLS/MQTTS) | Иначе данные читаются в открытом виде |
| Изолировать IoT в отдельной сети (VLAN/гостевая) | Взлом устройства не даст доступ к ПК |
| Обновлять прошивку | Закрывает найденные уязвимости |
Watchdog: защита от зависаний
Сторожевой таймер (watchdog) перезагружает плату, если программа «зависла» и перестала его «кормить». Логику можно проиллюстрировать на обычном Python:
def simulate_watchdog(feed_times, timeout, total):
last_feed = 0
for t in range(1, total + 1):
if t in feed_times:
last_feed = t
if t - last_feed >= timeout:
return f"t={t}: watchdog сработал, перезагрузка!"
return "работа стабильна"
print(simulate_watchdog(feed_times={2, 4, 6}, timeout=3, total=12))
print(simulate_watchdog(feed_times={2, 4, 6, 8, 10, 12}, timeout=3, total=12))Вывод:
t=9: watchdog сработал, перезагрузка! работа стабильна
Включение watchdog на плате
from machine import WDT
import time
wdt = WDT(timeout=5000) # 5 секунд
while True:
# ... полезная работа ...
wdt.feed() # «кормим» — иначе перезагрузка
time.sleep(1)Частые проблемы и их причины
| Симптом | Частая причина |
| Случайные перезагрузки | Слабое питание / просадка тока при Wi-Fi |
| Память кончается со временем | Не закрытые response, утечки в цикле |
| Кнопка срабатывает много раз | Нет антидребезга |
| Wi-Fi отваливается | Слабый сигнал, нет переподключения |
| ADC2 не читается | Конфликт с включённым Wi-Fi |
Как работает под капотом
Watchdog — отдельный аппаратный счётчик. Пока программа регулярно вызывает feed(), счётчик сбрасывается. Если код завис (бесконечный цикл, ожидание мёртвой сети), feed() не вызывается, счётчик переполняется и аппаратно перезагружает чип — устройство «само себя чинит». Питание же критично потому, что в момент включения Wi-Fi ток резко скачет; слабый источник или тонкий USB-кабель не успевают его отдать, напряжение проседает, и чип перезагружается.
Частые ошибки
- Оставить заводские пароли и открытый трафик. Это приглашение для взлома.
- Питать от слабого USB-порта. Берите стабильный источник на 5 В / 1 А и хороший кабель.
- Не предусмотреть переподключение Wi-Fi. Сеть пропадает — нужен код, который её восстановит.
Итог
- IoT-устройство — часть вашей сети, его безопасность защищает весь дом.
- Меняйте пароли, шифруйте трафик, изолируйте устройства, обновляйтесь.
- Watchdog перезагружает зависшую плату — «кормите» его в цикле.
- Многие сбои — это питание, утечки памяти, дребезг и конфликты ADC2 с Wi-Fi.