Подавляющее большинство современных сетевых плат имеют функцию Wake On Lan, которая позволяет реализовать пробуждение персонального компьютера через сеть.
Технические требования:
Если используется сетевая плата не встроенная в материнку, то необходимо будет подключить ее через специальный разъем WOL, к материнской плате.
Функция WOL включается в BOIS’е компьютера:
Небольшой проблемой может стать то, что на некоторых компьютерах при потери питания, WOL отключается. Но на современных материнских платах, данная проблема может быть решена установкой параметра «пробуждаться после пропадания питания» в значение On в BOIS’е:.
Магический Пакет (Magic Packet)
Для того, чтобы пробудить компьютер через LAN, необходимо по сети послать определенную последовательность байтов, т.н. Magic packet. Пакет представляет собой 6 байт со значением FF: (FF:FF:FF:FF:FF:FF), а далее идет MAC-адрес сетевой карты ПК, повторяющийся 16 раз подряд.
Обратите внимание, что если используется маршрутизатор, то на нем необходимо настроить переброс широковещательных пакетов (обычно 9 или 7 порт) на ваш компьютер.
Arduino
Для посылки магического пакета используется метод sendWol(). В качестве параметра указывается MAC-адрес компьютера, который необходимо «пробудить»:
static byte targetmac[] = {0x00,0x1A,0x4B,0x38,0x0F,0x5C};
…
ether.sendWol (targetmac);
Полный пример работы с WOL можно найти в репозитарии GiHub.
Используя ПО анализатор сети (к примеру Wireshark) вы можете мониторить корректность отсылки пакетов от Arduino:
Здесь красным выделен широковещательный MAC-адрес, зеленым — IP и UDP протокол, голубым — MAC-адрес ПК, повторяющийся 16 раз.