Для разработки и изучения устройств для управления через сеть, приобрел плату PICDEM.net 2 и два модуля Wi-Fi MRF24WB0MA, MRF24WG0MA. Попробую рассказать что мне удалось узнать интересного при изучении данного девайса.
Изначально плата уже прошита демо проектом. У меня была версия 3.75. Для запуска устройства достаточно подключить питание(рекомендовано 9вольт) до 12 вольт и подключить перекрестным кабелем (оранжевый в комплекте с платой) к сетевому разъему (RJ-45) компьютера, к разъему на плате, который находиться ближе к дисплею. Он подключен к микроконтроллеру (PIC18F97J60). Второй разъем задействован через микросхему ENC28J60. После подключения питания на дисплее отобразиться версия ПО и IP адрес устройства. В адресной строке браузера нужно набрать этот IP, и попадем на веб сайт, который зашит в eeprom запаянной на плате ( 25LC256 ). Тут можно включить светодиоды, написать что-нибудь на дисплее, отправит сообщение на электронную почту, отобразить положение потенциометра и многое другое.
Версия прошитого ПО оказалась довольно старой, на сайте нашел версию v5.42.08 June 2013 (microchip_solutions_v2013-06-15), для 8 разрядных контроллеров она является последней.
Для работы с платой подходит программатор PicKit2, и PicKit3, ICD3 (на чем я тестировал). подключаем его к плате так
или можно сделать кабель по такой схеме
Для работы с ПО TCPIP Stack 5.42 я использовал Mplab 8.92 и С18 версии v3.47, также нужно установить Java.
При установке TCPIP Stack 5.42 создается папка с:\ microchip_solutions_v2013-06-15\, открываем проект из этой папки, который находиться по этому пути с:\ microchip_solutions_v2013-06-15\ Tcpip\ Demo App\ C18-PICDN2_ETH97.mcpподключаем линкер на PIC18F97J60. Если плата уже подключена к программатору и все сделано правильно, то на экране вывода должен вывести ID микроконтроллера.
Компилируем проект и загружаем в микроконтроллер, процедура достаточно долгая.
После загрузки на дисплее отобразиться версия ПО и IP адрес устройства.
Зайдите в папку Utilities по используя путь с:\ microchip_solutions_v2013-06-15\ Microchip\ TCPIP Stack\ Utilities. Запустите программу TCPIP Discoverer.jar ( она запустится если установлена JAVA). Появится такое окно в котором определиться IP и MAC адреса нашей платы.
Если на компьютере включено беспроводное подключение, его нужно отключить.
Далее нужно загрузить Веб-страницу на устройство, это можно сделать несколькими способами. Один из них это через COM порт на плате и приложение Hyper Terminal, но для этого нужен конвертор USB — RS232, так что рассматривать его не буду. Второй способ: в адресной строке браузера пишем http://169.254.9.4/mpfsupload, с IP платы.
У нас появиться такая страница. Выберем файл MPFSImg2.bin из папки из которой открывали проект, и нажмем кнопку Upload, как только сайт будет загружен в EEPROM, будет предложено перейти на сайт. Нажав эту ссылку перейдем на сайт демо платы.
Третий способ: запустить MPFS2.jar из папки Utilities, откроется такое приложение.
В первом пункте настройки нужно указать путь к папке WebPages2 которая находиться в папке с проектом. Во втором пункте настройки по умолчанию BIN Image. В третьем, путь к папке где лежит проект. В четвертом, в настройках указать IP платы или ее имя (по умолчанию MCHPBOARD). Ну и нажать кнопу сгенерировать и загрузить. Появиться сообщение о успешной загрузке.
Набрав в браузере IP платы попадем на сайт устройства.
На этой странице отображается состояние светодиодов, кнопок и значение с потенциометра. Слева находятся ссылки с демонстрацией других приложений: E-mail, идентификация и др. В этой версии TCPIP Stack, реализована технология AJAX ( WEB страницу не нужно обновлять для получения текущих значений с платы, это происходит автоматически ).
Что бы задействовать микросхему ENC28J60, нужно выбрать проект C18-PICDN2_ENC28.mcp и переключить сетевой кабель в соседнее гнездо на плате.
Реализация WI-FI.
Реализовать связь по Wi Fi с модулем MRF24WB0MA у меня не получилось, DHCP сервер не давал модулю IP и на дисплее отображался установленный по умолчанию169.254.1.1. С модулем MRF24WG0MA все сразу заработало.
Модуль MRF24WG0MA в отличие от PIC18F97J60 имеет уникальный MAC адрес.
Для реализации этого демо проекта, нужно открыть из той же папки, где лежат два предыдущих проекта, открыть C18-PICDN2_MRF24WG.mcp, для модуляMRF24WG0MA.
По умолчанию проект настроен на открытую не защищенную сеть.
Первый вариант: настроить роутер под плату, для этого надо поменять в нем имя сети наMicrochipDemoAP и установить открытую не защищенную сеть.
Второй вариант: настроить плату под вашу домашнюю сеть. Для этого нужно открыть файл WF_Config.h, и в 102 строке указать имя вашей домашней беспроводной сети, по умолчанию указана сеть MicrochipDemoAP:
#define MY_DEFAULT_SSID_NAME «my» //»MicrochipDemoAP»
Также указать тип шифрования в 98 строке.
#define MY_DEFAULT_WIFI_SECURITY_MODE WF_SECURITY_WPA2_WITH_PASS_PHRASE // защищенная WPA2
// WF_SECURITY_OPEN // незащищенная сеть
А так же ключ доступа к сети в 206 строке
#define MY_DEFAULT_PSK_PHRASE «1177889900»
// «Microchip 802.11 Secret PSK Password» // по умолчанию
Компилируете и загружаете проект в микроконтроллер. После включения если у вас WPA2, где то через тридцать секунд IP 169.254.1.1. установленный по умолчанию сменится на полученный от DHCP сервера. Зайдите по этому IP адресу на веб сайт устройства.
Программное обеспечение.
Для создания своего проекта потребуются только изменить MainDemo.c иCustomHTTPApp.c, а также настроить файлы WF_Config.h — конфигурация сети, TCPIPMRF24W.h — включение модулей которые мы хотим использовать и др. иHardwareProfile.h — какие входа/выхода как будем использовать.
Пример:
На демо плате имеется аналоговый температурный датчик, если поменять код процедурыHTTPPrint_pot в файле CustomHTTPApp.c на такой
void HTTPPrint_pot(void)
{
char AN0String[8];
WORD ADval;
WORD temp;
// Wait until A/D conversion is done
ADCON0bits.CHS0 = 1;
ADCON0bits.CHS1 = 1;
ADCON0bits.CHS2 = 0;
ADCON0bits.CHS3 = 0;
ADCON0bits.GO = 1;
while(ADCON0bits.GO);
// Convert 10-bit value into ASCII string
ADval = (WORD)ADRES;
// Convert 10 Bit AD value to Celcius
temp = ((ADval — 151) * 340)>>10;
uitoa(temp, AN0String);
TCPPutArray(sktHTTP,(void *)AN0String, strlen((char*)AN0String));
return;
}
В место значения положения потенциометра будет отображаться значение температуры с этого датчика.
Создание проекта.
На примере начнем создание проекта с создания веб страницы.
1. Создание веб-страницы
Демо веб страница находиться в папке WebPages2, она состоит из файлов с расширением HML, CGI, XML, CSS, Js, Inc.
index.htm — главная страница,
header.inc — вставка заголовка во все HTM страницы.
mchp.js — реализована функция AJAX которая осуществляет запрос к серверу без перезагрузки страницы.
status.xml — содержит динамические переменные
mchp.css — файл стилей.
Для разработки веб лучше использовать редактор который не создает избыточного кода, я пользуюсь NOTEPAD++
Динамические переменные.
При разработке веб приложения для устройства надо создать динамические переменные, которыми будет обмениваться веб с устройством в соответствующих методах. Динамические переменные выделяется знаками тильда ~variable~.
Метод POST:
<form method=»post» action=»index.htm»>
<BR>
<input id=»znah_1″ size=»4″ name=»Perem_1″ value=»~Perem_1~» >
<colspan=»2″ align=»center»><input type=»submit» value=»ОК» />
</form>
<!— ———————————— —>
Метод GET:
<form method=»get» action=»index.htm»>
<input type=»radio» name=»Auto» value=»on» ~LED(1)~ /> On
<input type=»radio» name=»Auto» value=»off» ~LED(0)~ /> Off
<input type=»submit» class=»btn» value=»ОК»/>
</form>
Созданную веб страницу со всеми сопутствующими файлами помещают в отдельную папку в папку проекта. При помощи утилиты MPFS2 сгенерируйте файл с расширением.BIN , это сжатая веб страница, этот файл потом нужно будет загрузить в EEPROM, по размеру он не должен превышать объем вашей EEPROM. На демоплате PICDEM.net 2установлена микросхема 25LC256, соответственно этот файл не должен превышать 32 кб, если установлена микросхема 25LC1024, то размер файла должен быть больше 128 кб.
При генерации файла веб страницы утилита MPFS2 также индексирует динамические переменные обнаруженные на веб странице и корректирует HTTPPrint.h в связи с этими индексами.
Приложение в MPLAB.
HTTPPrint.h находиться в папке проекта.
Этот файл генерируется автоматически утилитой MPFS2. Он индексирует все динамические переменные и обеспечивает связь между переменными расположенными на веб страницах и устройством. Этот файл не требует модификации программиста.
В нем прописаны функции с названиями динамических переменных
void HTTPPrint(DWORD callbackID);
void HTTPPrint_Perem_1(void);
void HTTPPrint_LED(WORD);
void HTTPPrint(DWORD callbackID)
{
switch(callbackID)
{
case 0x00000000:
HTTPPrint_Perem_1();
break;
case 0x00000006:
HTTPPrint_LED(1);
break;
case 0x00000007:
HTTPPrint_LED(0);
break;
Все сгенерированные функции в файле HTTPPrint должны быть расписаны в файлеCustomHTTPApp.c, что с ними делать.
Ниже в примере код где эти переменные передаются с устройства на веб страницу.
void HTTPPrint_LED(WORD on)
{
if(LED1_IO == on)
TCPPutROMString(sktHTTP, (ROM BYTE*)»checked»);
}
//**********************************/
void HTTPPrint_Perem_1(void)
{ char str[7];
ultoa( out1, str ); // convert timer to string
TCPPutString(sktHTTP, str);}
//**********************************/
Для приема переменных устройством с веб страницы в том же файле CustomHTTPApp.cиспользуются функции HTTP_IO_RESULT HTTPExecuteGet и HTTP_IO_RESULT HTTPExecutePost .
Когда код обработки этих функций написан, проект компилируется и загружается на микроконтроллер.
На PICDEM.NET 2 установлен символьный дисплей, и небольшая по объему памяти eeprom, что очень не удобно для разработки приложений с большим количеством динамических переменных.
Поэтому пришлось изготовить свою плату, с графическим дисплеем. В ней используется контроллер PIC18F87J60 и eeprom 25LC1024.
Схему и разводку платы в протеусе можно скачать в конце статьи.
фото платы.
Платы в сборе.
На этом графическом дисплее так же оказалось мало места, пришлость взять еще больше.
Прошивку HEX проекта с выводом данных на дисплей, также можно скачать в конце.
Это ip действующего проекта, находящегося в разработке http://78.159.233.204:7775/
Варианты удаленного доступа.
Аналогично настраиваются IP камеры.
1. вариант: У вас есть выделенный IP адрес.
В роутере отключаем DHCP.
Прописываем в приборе IP адрес по умолчанию, из диапазона указанного в роуторе ( выше на картинке ).
Отключаем модули в контроллере STACK_USE_AUTO_IP, STACK_USE_DHCP_CLIENT, STACK_USE_DHCP_SERVER.
На роутере делаем проброс портов.
Если работаем через модуль MRF24WG0A, то настраиваем безопасность.
2. вариант если у вас нет выделенного IP, то без проблем можно настроить подключение через DDNS.
Для этого нужно зарегистрироваться на сайте https://www.noip.com, и получить имя, по которому можно будет управлять контроллером. В демо примере есть несколько вариантов, но они платные, кроме этого.
Хэлп по настройке этого сервиса, есть на сайте.
Вкратце, прибор регистрируем на сайте noip.com под каким ни будь именем ( например «Registrator_1». Подключаем модуль STACK_USE_DYNAMICDNS_CLIENT в проекте» Demo App «.
Прибор начинает периодически отсылать свой IP адрес на этот сервис, и при запросе в браузере ( в адресной строке) под именем Registrator_1 вас этот сервис пере направляет на последний полученный IP адрес вашего устройства.
3. вариант: не проверен. Можно использовать роутер с возможностью подключения 3G/4G модема. То есть роутер настраиваем на работу с 3G/4G модемом, с прибором настраиваем связь с устройством либо по шнурку, либо через WIFI.
С оператором «Мегафон» связь по 3G наладить не удалось, не было доступа из внешней сети.
По информации полученной от операторов связи, индивидуальные IP адреса»Мегафон» дает только юридическим лицам. А Билайн и МТС, дают физическим лицам IP за 100 — 150 руб. в месяц. Пока не проверил, надо ехать в центральные офисы, в павильонах ни чего об этом не знают. Да, и еще у провайдера Dom.ru, что бы получить доступ из внешней сети, надо в личном кабинете отключить функцию NAT.
После нехватки места на дисплее, также не хватает места и удобства для управления контроллером через его сайт который находиться на eeprom, и для того чтобы реализовать более удобный интерфейс пользователя, создать простейшую SCADA систему совместно с одной компанией пытаемся реализовать облачный сервис. У Микрочипа есть отладачная плата » Wi-Fi Client Module Development Kit (DM182020)» которая позволяет с легкостью создавать демонстрационное приложение, которое может подключаться и вести обмен данными с сервисом Amazon Elastic Compute Cloud (Amazon EC2) — веб-сервисом, предоставляющим вычислительные мощности в облаке.
Тут несколько переводов которые сделал при помощи Гугла, если захотеть, разобраться можно, может кому пригодиться.
библиотеки С18
описание платы PICDEM.NET2
Лабораторные работы исходники для которых находятся в папке » WebVend» проекта» Demo App «.
Исходники и другую интересующую информацию могу выслать по email.
Прога подключения через кабель ( для платы с графическим дисплеем).
Прога подключения через WI FI ( для платы с графическим дисплеем).
Программа не выводит данные на дисплей. Папку с исходником нужно положить в с:\ microchip_solutions_v2013-06-15\ Tcpip\.