Интернет нужен везде и всегда. От общения, образования, банковского дела, развлечений и покупок, и до срочной связи с родными людьми и бизнес-партнерами. Очень трудно иногда бывает без Интернета. Вот только связь не идеальна — то света нет, то сбой в работе провайдера, то счет вовремя не пополнили, а ожидается важная работа или сообщение… Поэтому не лишним будет девайс, который отображает текущее состояние Интернета (есть или нет) с помощью светодиода. Когда Интернет включен и работает, детектор отображает синий светодиод, а когда Интернет отключен — красный.
Для этого проекта понадобится:
- RGB-светодиод,
- резистор 200 Ом,
- WeMos-D1 Mini/NodeMCU,
- инвертор 220 В в 5 В.
Схема очень проста. Подключите вывод 5 В и вывод GND D1-mini к понижающему преобразователю. Затем подключите общий анод светодиода RGB через резистор 220 Ом к выводу 3,3 В D1-mini. Далее синие светодиоды к выводу D6, красные к выводу D7 и зеленые к выводу D8 платы. Вот и все.
Когда устройство включено, оно начинает пинговать сайт www.google.com. Если пинг проходит успешно, загорается синий светодиод и начинает пульсировать. Если пинг падает, синий светодиод гаснет, а красный светодиод загорается и начинает пульсировать, пока не будет получен успешный пинг.
Чтобы избежать ситуации с возможными зависаниями от долгой работы, добавлена логика для «перезагрузки» платы каждый час.

В верхней части D1-Mini и RGB-светодиод, а в нижней припаять понижающий преобразователь 200 В в 5 В и резистор 220 Ом.
Код начинается с включения всех необходимых библиотек. Затем он определяет все переменные, необходимые для настройки соединения WiFi и определяет выводы светодиодов, а затем список всех глобальных переменных, используемых в коде.
В разделе setup() сначала определим все режимы выводов, а затем настроим соединение Wi-Fi. Назначим статический IP-адрес плате D1-mini. Если хотите использовать DHCP, то удалите эти три строки из кода.
void setup() {
Serial.begin(9600);/** Define the pin modes **/
pinMode(LED_RED, OUTPUT); analogWrite(LED_RED, 1023);
pinMode(LED_BLUE, OUTPUT); analogWrite(LED_BLUE, 1023);
pinMode(LED_GREEN, OUTPUT); digitalWrite(LED_GREEN, HIGH);/** We start by connecting to a WiFi network **/
IPAddress local_IP(192, 168, 0, 240); // Static IP Address for ESP8266
IPAddress subnet(255, 255, 255, 0); // Subnet Mask
IPAddress gateway(192, 168, 0, 1); // Default Gateway/*********** Setup a WiFi connection ***********/
Serial.println();
if (WiFi.config(local_IP, gateway, subnet)) { Serial.println(«Static IP Configured»); }
else { Serial.println(«Static IP Configuration Failed»); };
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PWD);
Serial.println(«Connecting to WiFi»);
while (WiFi.status() != WL_CONNECTED) {
delay(300);
Serial.print(«.»);
switch(ctr){ // Green LED Flashes On Boot
case 0: digitalWrite(LED_GREEN, HIGH); ctr=1; break;
case 1: digitalWrite(LED_GREEN, LOW); ctr=0; break;
};
};
Serial.println(«\nWiFi connected»);
Serial.print(«IP address: «); Serial.println(WiFi.localIP());
digitalWrite(LED_GREEN, HIGH); // Turn off the Green LED
};
Далее в разделе loop() пингуем 8.8.8.8 или Google.com, и если получаем успешный пинг, то плавно включаем и выключаем синий светодиод. Если пинг не проходит — красный светодиод плавно включается и выключается.
void loop() {
if (pingTest()) BrightnessController(«BLUE»); // If a successful ping is received
else BrightnessController(«RED»); // If the ping fails turn on the red LEDif (millis() >= 3600000) ESP.reset(); // Reboot the WEMOS D1 Mini Every Hour = 3600000 milliseconds
};
Функции BrightnessController() и pingTest() определены в нижней части кода.
Чтобы избежать зависания D1-mini, используется функция ESP.reset() для сброса устройства каждый час.
Когда включаем схему, зеленый светодиод начинает мигать. Как только устанавливается соединение с маршрутизатором, устройство начинает пинговать 8.8.8.8. Поначалу несколько пингов не проходят и загорается красный светодиод. Но как только получен успешный пинг, синий светодиод начинает то загораться, то гаснуть.
Нет необходимости тянуть к нему LAN кабель, ведь оно сканирует беспроводной Wi-Fi. А если хотите совсем сделать его автономным — просто подайте на него 5 В от АКБ и включайте кнопкой по необходимости. В общем установите это устройство в любом месте дома и используйте как детектор состояния Интернета!







