Cosmo WiFi Shield Ad-hoc mode
  • Здравствуйте. Шилд сидит на оригинальной плате Arduino Mega. Перемычки J3 и J4 сняты. RX и TX подключены к Serial1 Arduino. Проблема в переводе шилда в режим Ad-hoc программным способом, то есть с помощью скетча ардуины. Не понимаю какие команды и в какой последовательности нужно скармливать шилду. Ручной перевод в этот режим трёхкратным ура не рассматриваем.
  • Пример скетча в котором отправляются команды

    int buffer = 0;
    int step = 1;
    char response[255];
    int i = 0;

    void setup(){
    Serial.begin(115200);
    Serial1.begin(115200);
    }

    void loop(){

    if (step == 1) {
    Serial1.println("AT"); // Здесь получаем [ERROR: INVALID INPUT]
    Serial.println("Send AT");
    delay(3000);
    step = 2;
    } else if (step == 2) {
    Serial1.println("AT+WPAPSK=Arduino,1234567890"); // Устанавливаем SSID и Pass
    Serial.println("Send AT+WPAPSK=Arduino,1234567890");
    delay(3000);
    step = 3;
    } else if (step == 3) {
    Serial1.println("AT+WM=1"); // Переключаем в режим Ad-hoc
    Serial.println("Send AT+WM=1");
    delay(3000);
    step = 4;
    }

    buffer = Serial1.available();
    if (buffer > 0) {
    for (; i<buffer; i++) {
    response[i] = Serial1.read();
    }
    Serial.println(response);
    i = 0;
    for (; i<=255; i++) {
    response[i] = 0;
    }
    i = 0;
    buffer = 0;
    }

    delay(1000);
    }


    Но сам шилд сеть не поднимает. В чём может быть причина?
  • Добрый день, Тимур!

    Для начала советую вам попробовать настроить шилд с помощью программы WIZSmartscript.
    Там есть группа "Auto Connection", если ее выбрать в списке ниже будет скрипт "Ad hoc".
    Программа поможет с примером конфигурации.

    Если у вас не получится, сообщите, поможем вам со скетчем.
  • Спасибо большое за совет. Я, честно говоря, не обратил внимание на эту программку. так как сижу под дебианом, но второй осью у меня стоит винда семёрка. Буду перегружаться.
    P.S. Wine не подходит, потому что не видит портов.
  • С помощью WIZSmartscript, её пошаговым построением команд, у меня получился следующий скетч:

    void setup(){
    delay(1000);

    Serial.begin(115200);
    Serial1.begin(115200);
    Serial.println("Begin init");
    delay(1000);

    Serial1.println("AT"); // Для первого [ERROR: INVALID INPUT]
    delay(1000);

    Serial1.println("AT+WD"); // Disassociate from the current network
    delay(1000);

    Serial1.println("AT+WAUTO=1,Arduino"); // <mode>,<SSID>,[BSSID],[channel]
    // Sets WiFi parameters to be used for Auto Connect.
    // Mode is 0 for Infrastructure and 1 for Ad-hoc mode
    delay(1000);

    Serial1.println("AT+WAUTH=1"); // Authentication mode setting; 2 : Open
    delay(1000);

    Serial1.println("AT+NDHCP=0"); // DHCP is disable
    delay(1000);

    Serial1.println("AT+NSET=192.168.31.1,255.255.255.0,192.168.31.1"); // Static network parameters
    delay(1000);

    Serial1.println("AT+NAUTO=1,1,,6001"); // Sets network parameters to be used for Auto Connect (TCP/Server)
    delay(1000);

    Serial1.println("AT+XDUM=0"); // UART Message is Enable
    delay(1000);

    Serial1.println("ATA"); // Start Auto Connect, including association
    delay(1000);

    Serial.println("Inited");
    }

    void loop(){

    }

    Но шилд упорно не хочет поднимать сеть. Какие есть мысли?
  • Timur said:

    Но шилд упорно не хочет поднимать сеть. Какие есть мысли?



    Один только вопрос, вы пробовали через терминал (или WIZSmartscript) настроить по такой схеме соединение? Т.е. при настройке через COM-порт сеть поднялась или нет?
  • Попробовал так:
    1. J7 и J8 режим FTDI/USB
    2. Поставил перемычки на пины 0 и 1
    3. в WIZSmartScript запускаю AT Command Mode, в консоли пишет

    ....AT
    [ERROR: INVALID INPUT]
    +++AT
    [ERROR: INVALID INPUT]

    [Serial Command Error]

    Во всех комбинациях джамперов J6 и J9 одинаково.

    Также запускал стандартные скрипты WIZSmartScript с выводом

    ....AT
    [ERROR: INVALID INPUT]

    [Serial Command Error]


    То есть даже просто настроить не получается.
  • Давайте по порядку.

    Подготовка.
    1) Подключаем Ардуино к компьютеру (шилд не установлен)
    2) Для чистоты эксперимента на микроконтроллер Ардуино заливаем скетч "Blink", чтоб быть уверенным что в Serial ничего не пишется.
    3) Отключаем Ардуино от компьютера. Устанавливаем на него шилд.
    На шилде устанавливаем джампера J7 и J8 в положение FTDI/USB (1-2)
    4) Подключаем Ардуино к компьютеру.
    5) Запускаем SerialMonitor (вкладка tools в панели Arduino IDE). Выставляем настройки: 115200 baud и Newline (для лучшего восприятия, визуального отделения одной команды от другой можно выставить Both NL & CR).

    Настройка соединения
    Прежде чем писать скетч, нужно проверить настройки соединения через терминал. Так нагляднее видно, где и как могут появляться ошибки. После того как вручную удалось успешно протестировать коннект, уже после этого можно приступать к написанию скетча.

    Итак, вводим в терминале для 1-го шилда, например, такие настройки Ad-hoc соединения.
    AT
    AT+WD
    AT+WAUTO=1,Arduino
    AT+WAUTH=2
    AT+WWEP1=123456abdc
    AT+WWPA=WiFiShield
    AT+NDHCP=0
    AT+NSET=192.168.0.1,255.255.255.0,192.168.0.2
    AT+NAUTO=1,1,,4000
    AT+XDUM=1
    ATA

    В WIZSmartScript в режиме Wizard можно настроить на требуемые вами параметры сети.

    После того как вы выполните последнюю команду (ATA) на шилде загорятся 2 красных светодиода. Что говорит об положительном результате.

    Далее следует проделать аналогичные настройки для 2-го шилда (или второго вашего устройства, например компьютера).

    После того как вы протестируете соединение, погоняете пакеты между устройствами - можно приступать к следующему шагу по написаю скетча.
  • Всё сделал, как Вы сказали, Иван. На шилде, помимо зелёного диода питания загорелись два красных. На сколько я понимаю команда
    AT+WAUTO=1,Arduino
    говорит о том, что открыв ноутбук (коммуникатор с поддержкой WiFi) в радиусе 5-10 метров и заглянув в "WiFi соединения" я мог бы увидеть "сеть" с именем "Arduino"? Но найти данную сеть ни на коммуникаторе, ни на ноутбуке не удаётся.
  • Timur said:

    Но найти данную сеть ни на коммуникаторе, ни на ноутбуке не удаётся.



    Хорошо, вот другой проверенный вариант, Limited AP.
    AT+WD
    [OK]

    AT+WM=2
    [OK]

    AT+WAUTH=1
    [OK]

    AT+WWEP1=123456abdc
    [OK]

    AT+NDHCP=0
    [OK]

    AT+NSET=192.168.55.1,255.255.255.0,192.168.55.1
    [OK]

    AT+WA=Arduino,,8
    IP SubNet Gateway
    192.168.55.1: 255.255.255.0: 192.168.55.1
    [OK]

    AT+DHCPSRVR=1
    [OK]

    AT+NAUTO=1,1,,5000
    [OK]

    ATA2


    Создаем точку доступа, имя сети Arduino, канал 8,
    IP Address : 192.168.55.1
    WEP Key : 123456abdc
    Serial-to-WiFi Channel : TCP Server/Port 5000


    P.S. Но предыдущий вариант настроек тоже правильный.
    Оба были протестированы на нашем принтере, обе сетки находятся и видны.
    Возможно вам стоить сделать поиск новых wifi-сетей.
  • Ооо... есть контакт. Сеть поднялась. Видна на обоих устройствах. Спасибо Вам огромное. Теперь буду разбираться в чём был затык. По результатам отпишу.

Привет, незнакомец!

Похоже, вы новенький! Чтобы пообщаться с нами, кликните на одну из кнопок ниже :)

Войти с помощью OpenID

В этом теме:

  • Ivan Февраль 2012
  • Timur Февраль 2012