Jump to content

    
Ostroukhov1991

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by Ostroukhov1991

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
10 минут назад, Ostroukhov1991 сказал:

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

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

 

Цитата

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

Edited by Ostroukhov1991

Share this post


Link to post
Share on other sites
35 минут назад, Ostroukhov1991 сказал:

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

 

Edited by smart_pic

Share this post


Link to post
Share on other sites

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

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

Edited by Ostroukhov1991

Share this post


Link to post
Share on other sites

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

Могу предположить , что у ТС куча блоков питания (зарядных устройств, или иных девайсов ) с 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. Лично я пошел бы этим путем.

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

 

Edited by smart_pic

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.