Добрый день.
Как узнать (спросив, например, 2ip.ru или еще как-то) с помощью W5100 или SIM900
какой у меня публичный IP, чтобы обратиться к ардуино снаружи, из Интернета? Провайдер на роутер выдает динамически белый IP-адрес. Адрес на маршрутизаторе живет 2-5 дней, поэтому быть на связи пару-тройку часов – хватает.
Схема примерно такая:
[Интернет] — [Роутер TP-Link] — [W5100 + SIM900 + Arduino UNO]
Здравствуйте. Чтобы Arduino с W5100 или SIM900 узнала ваш динамический публичный IP из Интернета, можно сделать так:
Для W5100 (Ethernet): Arduino делает HTTP-запрос к сайту, который возвращает ваш внешний IP (например, 2ip.ru). Потом в ответе парсит IP и использует его для соединения. Это нужно, потому что W5100 знает только локальный IP роутера (обычно 192.168.x.x).
Для SIM900 (GPRS): Аналогично можно сделать HTTP-запрос к сайту с определением IP или использовать AT-команду для запроса IP у оператора (но чаще через сайт). SIM900 подключается через GPRS, и оператор назначает внешний IP динамически.
Таким образом, Arduino с W5100+SIM900 может периодически запрашивать свой текущий публичный IP извне через сайт (например, 2ip.ru) и знать, как к ней обратиться из Интернета. Это подходит если IP меняется 2-5 дней, и связи на несколько часов достаточно.
Главное — чтобы роутер не блокировал входящие соединения или был настроен проброс портов (Port Forwarding) на Arduino, иначе доступ извне невозможен.
Кратко: Arduino через W5100 или SIM900 запрашивает внешний IP с помощью HTTP GET на сервис типа 2ip.ru, парсит ответ, и использует этот IP для приема соединений извне в течение жизни IP