Перейти к содержанию
    

Нужен пример HTTP-клиента на паре PIC18F25K80+W5500

Всем привет, угостите пожалуйста примерчиком организации HTTP-клиента на МК PIC18F25K80 через W5500. Контроллер должен стучаться на web- сервер post или get запросами передавая в них короткую информацию о своем состоянии, конфигах и событиях и в ответ попутно получать от сервера команды, настройки и прочую тоже короткую информацию. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не проще ли по ТСР соединению гонять данные. Конектимся к серверу по ТСР и шлем что надо , а сервер в ответ свои данные контроллеру гонит. Тогда можно и PIC18F67(97)J60 использовать. У Microchip ТСР стек хорошо документирован и примеров много. Для телеметрии вполне годное решение, проверено , работает отлично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Устройства в офисной сети находятся и нужно на внешний сервер отправлять данные. Так как сервер предствален доменом из серии port.XXXXX.ru  и соответственно динамическим IP то обращение по  IP безсмысленно. 

Изменено пользователем Ostroukhov1991

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раз у вас используются доменные имена - то по любому узнать их IP можно. В стеке есть возможность работы с доменными именами , но лично не пробовал.

если устройство одно - то стоит с этим заморачиваться , а если устройств много - то проще поставить микротик и настроить его , чтобы он держал конект с сервером , а железки через него ходили на сервер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 Я уже мысленно смерился что придется в локалке поднять TCP/IP сервер на одном из компов, в который будут ломиться железки, а он уже нормально стучаться в интернет. В этом случае хотябы посмотреть пример организации TCP/IP- клиента под PIC18F для среды MPLAB X. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, Ostroukhov1991 сказал:

 Я уже мысленно смерился

Видимо мерились чем-то с админом вашей "локалки"? Не стоит посвящать всех в такие интимные подробности.  :biggrin:

 

Цитата

что придется в локалке поднять TCP/IP сервер на одном из компов, в который будут ломиться железки, а он уже нормально стучаться в интернет. В этом случае хотябы посмотреть пример организации TCP/IP- клиента под PIC18F для среды MPLAB X. 

А чем отличается TCP/IP-клиент под PIC, от такого же TCP/IP-клиента на любом другом МК?

Очевидно - ничем.  :unknw:

 

PS: И DNS-запросы - вещь элементарная. Из-за того, что вам лень про них прочитать, не стоит городить огород из промежуточных серверов. Коли уж удалённый сервер имеет доменное имя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под W5500 гора библиотек которые както елкой собираются, а я еще относительный новичек и плаваю, вот и прошу у бывалых пример. Можно в принципе под любой PIC в среде MPLAB, там уже попроще всяко будет. Главное эту конструкцию из библиотек увидеть. Ну и + чтобы умные люди подсказали как именно стучаться в домен www, я до этого приемущественно сайты только писал и делал совсем простые вещи на МК, 5500 для меня к самостоятельному изучению будет сейчас карой) 

Изменено пользователем Ostroukhov1991

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 минут назад, Ostroukhov1991 сказал:

Ну и + чтобы умные люди подсказали как именно стучаться в домен www

А в гугле вас забанили что-ли?

Начать отсюда: https://ru.wikipedia.org/wiki/DNS

Ну и дальше - если всё-таки знаете что такое гугл, то поиск по "DNS запрос пример" выдаёт просто кучу полезной инфы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятное дело  что ТС почитает про "DNS" и прочее.

Но гугл в основном рассказывает как это работает на серверах и компах, а еще как это другие делают на ардуино. Но на ардуино сайтах там один мусор , и сделать свое по тем примерам не реально.

Другое дело когда делаем на МК. И есть нюансы в  реализации на 8ми битном МК PIC18F67J60 и на 32х битном PIC32MX795F512L-80I/PF .

Если устройств много - то проще поднять локальный сервер , а потом данные дальше гнать, А если устройство одно и оно из под NAT должно ломиться на сервер - то тут будут другие подходы.

На PIC18F97J60 делали систему управления уличным освещение http://kvest-led.ru/asuno  , уже куча городов. Часть устройств работает с сервером через модем SIM800, а часть там где есть возможность по ЛАН.

Как правило все скрыто в нюансах, а ТС об этом ни гу-гу.

 

Изменено пользователем smart_pic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну предположительно архитектура останется как и предлагает Smart_pic, то бишь, в локалке висят с 15...30 однотипных устройств с уникальными SN, долбятся на локальный TCP/IP сервер поднятый на обыкновенном системном блоке с WIN7... 10 в виде программы и получают от нее ответы. А сервер (программа) уже общается с HTTP- сервером, передает данные от устройств, и в ответ получает конфиги для них (устройств), команды и прочую актуальную информацию. Сеть у нас простая, глобальных роутер формирующий подсеть в который входит интернет, далее все уже ветвится свичами без дополнительных подсетей. 

На PIC18F25K80 остановились по причине обкатанности камня во многих изделиях +, что очень важно, он имеет аппаратный CAN. Как я понимаю, мне необходимо прописать моему серверу (системнтку с Win7) просто какойто фиксированный IP который будет указан в прошивках устройств и выбрать произвольный порт, который никто точно не займет на этом сервере, аля 1234? Вопрос заключается больше в том, что увидеть бы хоть адекватный пример TCP- клиента под PIC 8-битный в среде MPLAB, тьма примеров серверов, но я пока не пойму, можно ли его перековырять в обратную сторону и как. В противном случае придется для TCP- сервера (системного блока) писать сканер IP- адресов и вылавливать все устройства, и наоборот долбиться к ним как к серверам. 

Изменено пользователем Ostroukhov1991

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот уже немного выудили информации :)

Могу предположить , что у ТС куча блоков питания (зарядных устройств, или иных девайсов ) с CAN. которые решили дистанционно мониторить и задавать необходимые параметры работы.

Нужно немного разобраться в терминологии: СЕРВЕР это может устройство комп и т.д. на котором крутится определенная программа.

Применительно к ТСР протоколу СЕРВЕР это тот кто слушает подключения от КЛИЕНТОВ.

Чтобы не запутывать ТС поясняю.

Ставим компьютер , на нем запускаем программу , в простейшем случае может быть терминальная прога, ставим программу в режим СЕРВЕР , для приема конекта. Устройства в сети конфигурируем как КЛИЕНТ , и они будут стучаться на сервер по фиксированному адресу в сети и на фиксированный порт. Сразу после того как устройство клиент подключилось к серверу бросаем сообщение в котором есть уникальный ID устройства, теперь прога на компе знает кто подключился и по какому локальному порту , и потом смотрит что этому девайсу надо и отправляет ему данные.

Дальше есть небольшие различия в работе компа.  Программа СЕРВЕРА может работать с одним ТСР портом для приема , а может иметь несколько портов по количеству девайсов. Но это для компа не столь принципиально. Второй вариант немного проще в отладке.

Если нужна работа с CAN - то может взять PIC32MX795F512L-80I/PF 100выводной или PIC32MX795F512Н-80I/PF - 64 выводной , у них есть CAN и сделать все красиво .  Или взять внешний CAN модуль по SPI  и PIC18F97J60 - получится очень дешево.

Если не нужен шустрый веб интерфейс . типа как у меня с фейдерами для управления звуком и индикаторами уровня сигнала - то разницы в работе с ЛАН между ПИК18 и ПИК32 не почувствуете. Среда программирования бесплатная , примеров много. На MASTERS полно уроков по ТСР и ВЕБ интерфейсу.

Для ваших девайсов можно сделать ВЕБ и пусть ваш комп общается с железками через POSТ GET запросы, а инфу получает в виде json файла. В POSТ запросах можно передавать файлы данных.

Подумайте в сторону связки ПИКа с внешним CAN  модулем, в вашем случае это будет проще и надежнее девайс.

Еще один совет: не ставьте MPLABX, а поставьте MPLAB_8.88  он очень устойчивый и глюков за долгое время не нашел. Поставьте ТСР стек 5 версии, там значительно меньше наворотов касательно беспроводных сетей и проще разобраться, потом по этому стеку много инфы и примеров, его легче допиливать под себя. Я его уже перепилил значительно: доработал файловую систему , FTP, HTTP сервер , и еще по мелочи. С доработками и заготовками теперь уходит меньше времени на создание нового девайса.

Пара статей на хабре , если кому интересно будет по похожей тематике

https://habr.com/ru/post/576470/

https://habr.com/ru/post/583992/

2 hours ago, Ostroukhov1991 said:

На PIC18F25K80 остановились по причине обкатанности камня во многих изделиях +, что очень важно, он имеет аппаратный CAN.

Перейти с 18 на 32 пик достаточно просто, там почти все одинаково. Если проги на С - то вообще без проблем.

Мне кажется проще дописать работу с внешним CAN модулем к вашему проекту и одним из МК с изернет интерфейсом, чем прикручивать ТСР управление  к вашему проекту на W5500. Лично я пошел бы этим путем.

Написал в личку, если нужна помощь - подскажу.

 

Изменено пользователем smart_pic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...