#1 Re: Апаратні питання » Arduino и ESP8266. Облачные технологии и системы IoT. » 2016-01-16 17:10:34

Беру слова обратно, Blynk действительно работает через свой сервер с пингом 14-15 мс. Как только выдернул шнур с роутера, все стало ясно.
На мой взгляд, это очень ограничивает область применения esp.

В скетче Direct Connect указано:
* NOTE: Blynk Apps currently do not support direct TCP connection.
* Wait for new updates!

Так что, будем ждать.

#2 Re: Апаратні питання » Arduino и ESP8266. Облачные технологии и системы IoT. » 2016-01-16 14:12:56

Все) разобрался.

Nefreemen пише:

Вот нашел http://docs.blynk.cc/ . И так имеем три главных компонента 1. Blynk App, 2. Blynk server, 3. Blynk Libraries . То есть то о чем я подозревал, что без сервера никак...


Моя ошибка - думал, что при использовании ESP в качестве шилда для ардуины, то прошивка на ардуине будет управлять пинами (GPO0, GPO2) на ESP. Поэтому в Blynk выбирал ESP8266 и ждал чуда. Вот, что мне ответили в комьюнити блинка:

scropion86 пише:

if you are using the ESP-01 as wifi shield you have no control over it , it's used as slave communication through it.
so in Blynk App dashboard you should select your board as Arduino Mega , and you can blink the LED on pin 13
but you don't have any thing to do in Pin 2 on ESP-01.

if you shared the code and Dashboard setup , it will be more clear and i can help you more.

И таки да, выбрал в приложении "Arduino Mega" поставил виджет с digital pin 13 и успешно помигал встроенным светодиодом. Залить скетч Blynk для стандалон напрямую в ESP пока не удалось из-за непонятной ошибки, но не суть. В качестве коммуникатора для ардуины работает на ура.

Nefreemen пише:

Пока я досконально не изучал Blynk, и если я не прав, объясните как Вы видите взаимодействие "приложение в телефоне"<--> ESP.

Вы правы - нужен сервер.

В качестве пруфа могу записать видео.

#3 Re: Апаратні питання » Arduino и ESP8266. Облачные технологии и системы IoT. » 2016-01-16 01:13:18

Nefreemen пише:

Solaris. Почему то интуиция подсказывает что проблема не в железе. Возникает вопрос, а Вы уверены что ESP подключается к роутеру?  Вы используете облачный сервер Blynk? С блинком не баловался, попробую ради интереса когда будет время roll. Как раз у меня есть еще одна свободная esp8266- 01 ( остальные уже пристроил  wink ).

Перебрововав все вариации подключения и с ардуиной и напрямую к конвертеру, убедился, что проблема не в железе. Скетч Blynka для шилда - общаются в домашней сети. Есть отдельный скетч Direct Connect, но и с тем вариантом все так же. Так что, роутер здесь не при чем.

/**************************************************************
 * Blynk is a platform with iOS and Android apps to control
 * Arduino, Raspberry Pi and the likes over the Internet.
 * You can easily build graphic interfaces for all your
 * projects by simply dragging and dropping widgets.
 *
 *   Downloads, docs, tutorials: http://www.blynk.cc
 *   Blynk community:            http://community.blynk.cc
 *   Social networks:            http://www.fb.com/blynkapp
 *                               http://twitter.com/blynk_app
 *
 * Blynk library is licensed under MIT license
 * This example code is in public domain.
 *
 **************************************************************
 *
 * This example shows how to use ESP8266 Shield via Hardware Serial
 * (on Mega, Leonardo, Micro...) to connect your project to Blynk.
 *
 * Note: Ensure a stable serial connection to ESP8266!
 *       Firmware version 1.0.0 (AT v0.22) or later is needed.
 *       You can change ESP baud rate. Connect to AT console and call:
 *           AT+UART_DEF=115200,8,1,0,0
 *
 * Change WiFi ssid, pass, and Blynk auth token to run :)
 * Feel free to apply it to any other example. It's simple!
 *
 **************************************************************/
//#define BLYNK_DEBUG
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_HardSer.h>
#include <BlynkSimpleShieldEsp8266_HardSer.h>

// Set ESP8266 Serial object
#define EspSerial Serial1

ESP8266 wifi(EspSerial);

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a231565937554c59994ba2879195ad4b";

void setup()
{
  // Set console baud rateM
  Serial.begin(115200);
  delay(10);
  // Set ESP8266 baud rate
  EspSerial.begin(115200);
  delay(10);

  Blynk.begin(auth, wifi, "Proxima", "90as9Bmqhdg4");
}

void loop()
{
  Blynk.run();
}

Мои подозрения пали на библиотеку. Пока не нашел ответа.

*По поводу облачного сервера - в блинке он нужен только, если вы хотите получить доступ с внешней сети интернет, так сказать shared access

#4 Re: Апаратні питання » Arduino и ESP8266. Облачные технологии и системы IoT. » 2016-01-15 00:37:16

Прошу помощи в решении экзистенциального вопроса по незнанию.

Подключил модуль как шилд на rx1,tx1. Питание ESP --> VCC 3.3 V платы, GND ESP - GND, CH_PD pull-up к VCC 3.3 V платы, тоже самое касается свободных GPO0 и GPO2. В общем, все как доктор прописал. Залил скетч для общения по хардвару и успешно поговорил с ESP через терминал, все ок.

Далее, скачал библиотеку Blynk от наших земляков и залил ее, чтобы мигать светодиодом. Все успешно подключилось: Приложение и ESP входят в контакт через домашний wi-fi. Это видно по мигающему синему светодиоду, когда тапаю по кнопке в блинке.
Светодиод повесил сначала через резистор на землю и он сразу загорелся. Проверил уровни мультиметром и обнаружил, что ESP сходу подает 3.3 В и на GPO0 и на GPO2.

Команды отправляются, но независимо от прошивки и приложения там всегда 3.3 В, и никакого переключения.

Затем погуглив, осознал неканоничность подключения к GPO0 и на GPO2 в качестве выходов и сделал все по фен-шую http://www.forward.com.au/pfod/ESP8266/ … index.html - на VCC

Но воз и ныне там. Уровень на GPO0 и на GPO2 вообще не изменяется. Всегда 3.3 В. В чем причина, прошивка старая (не обновлял после покупки), библиотека лажа или кривые руки?

#5 Re: Апаратні питання » Arduino и ESP8266. Облачные технологии и системы IoT. » 2016-01-13 21:02:33

Йожэг пише:

Можно ли обойтись без роутера? Можно, если железяка сама притворится роутером точкой доступа: http://www.esp8266.com/viewtopic.php?f=6&t=299&start=0

Спасибо, я так и думал. Вопрос в "языке общения", но это уже другая история.

#6 Re: Апаратні питання » Arduino и ESP8266. Облачные технологии и системы IoT. » 2016-01-12 21:20:08

Хочу оживить ветку, имхо только забрал ESP8266 с почты. Прежде чем курить хабр и иже с ним хочу задать вводный вопрос экспертам: я смогу с этим чудом организовать общение между смартфоном (приложение на андрюхе) и ардуиной как здесь http://esp8266.ru/ без роутера, только как клиент-сервер? Предварительно начитался про какие-то mqtt сервера и ничего не понял, так как пока на любительском уровне.

И хочу узнать ваше мнение по поводу этой библиотеки https://github.com/esp8266/Arduino

#7 Re: Програмування Arduino » Танцы с SIM900 » 2016-01-10 02:40:31

NoName пише:

Association Paroisse Le Bon Pasteur )))))
[ add ]
у вас симпатичный сайт  https://scienceukraine.in.ua/ )

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

спасибо за оценку) программим ардуину и несем научный свет в массы)
p.s. если кто желает, можно стать редактором в помощь, всегда рады сотрудничеству

#8 Re: Програмування Arduino » Танцы с SIM900 » 2016-01-10 00:39:40

Огромное спасибо за наводку) побитная отправка массива и дополнительная заддержка в 200 мс перед отправкой GET-запроса все решила.

get запрос

Всю прошивку снова выкладывать не буду, вот, что добавилось:

char url[70] = "lat=43.669578&lng=-0.997495&tm=20130609130751&stl=11&sp=122.5&crs=120";

/* Тело */
...
        Serial2.print("AT+HTTPPARA=\"URL\",\"http://gps.scienceukraine.in.ua/gps.php?");

          for (int i=0; i < sizeof(url); i++){
           Serial2.print(url[i]);
              } 
              delay(2000);
              
            if ( sendATcommand("\"", "OK", 5000) == 1)
          ...

#9 Re: Програмування Arduino » Танцы с SIM900 » 2016-01-09 23:19:34

Йожэг пише:

А если забрать кусок кода вот отсюда? https://github.com/DFRobot/GPS-GPRS-GSM … RS_GPS.ino

Так там порядок АТ-команд тот же, только передают всего два параметра широта/долгота. У меня их больше и строка длиннее, отчего проблемы. Или я чего-то не увидел?

#10 Програмування Arduino » Танцы с SIM900 » 2016-01-09 20:26:54

Solaris
відповідей: 10

Всем добрых выходных) Написал скетч, чтобы моя mega 2560 передfвала параметры по GET запросу на сервер.
Результат - работает наполовину: sim900 шлет запрос только если длина URL меньше 70 символов в строке (Установил опытным путем).
Плата Gboard Pro

void http() {
Serial2.println("AT+CPIN=");
  Serial.println("Pin is ok))))");

if ( (sendATcommand("AT+CREG?", "+CREG: 0,1", 1000) || sendATcommand("AT+CREG?", "+CREG: 0,5", 1000)) == 1 ) {
   Serial.println("NET ONLINE!");
}
if ( sendATcommand("AT+SAPBR=3,1,\"Contype\",\"GPRS\"", "OK", 2000) == 1 ) {
   Serial.println("GPRS yes!");
}
if ( sendATcommand("AT+SAPBR=3,1,\"APN\",\"internet\"", "OK", 2000) == 1 ) {
   Serial.println("APN yes!");
}
if ( sendATcommand("AT+SAPBR=3,1,\"USER\",\"\"", "OK", 2000) == 1 ) {
   Serial.println("User yes!");
}
if (sendATcommand("AT+SAPBR=3,1,\"PWD\",\"\"", "OK", 2000) == 1 ) {
   Serial.println("Pass yes!");
}
if (sendATcommand("AT+SAPBR=1,1", "OK", 20000) == 1 ) {
   Serial.println("Bearer sent!");
}
delay(1000);
    // Initializes HTTP service
    if (sendATcommand("AT+HTTPINIT", "OK", 10000) == 1)
    {
       Serial.println("HTTP ready!");
        // Sets CID parameter
        if (sendATcommand("AT+HTTPPARA=\"CID\",1", "OK", 5000) == 1)
        {
          Serial.println("HTTP params set!");
            // Sets url 
            Serial2.print("AT+HTTPPARA=\"URL\",\"http://gps.scienceukraine.in.ua/gps.php?visor=false&latitude=42.669578&longitude=-0.957495&time=20130609130751&satellites=11&speedOTG=122.5&course=120");
          /*  Serial2.print(""); */
            if ( sendATcommand("\"", "OK", 5000) == 1)
            {
               Serial.println("message formed!");
                // Starts GET action
                if (sendATcommand("AT+HTTPACTION=0", "+HTTPACTION:0,200", 30000) == 1)
                {
                    Serial.println(F("Done!"));
                }
                else
                {
                    Serial.println(F("Error getting url"));
                }

            }
            else
            {
                Serial.println(F("Error setting the url"));
            }
        }
        else
        {
            Serial.println(F("Error setting the CID"));
        }    
    }
    else
    {
        Serial.println(F("Error initializating"));
    }

    sendATcommand("AT+HTTPTERM", "OK", 5000);
}

int8_t sendATcommand(char* ATcommand, char* expected_answer, unsigned int timeout){

    uint8_t x=0,  answer=0;
    char response[100];
    unsigned long previous;

    memset(response, '\0', 100);  
    
    delay(100);
    
    while( Serial2.available() > 0) Serial2.read();   
    
    if (ATcommand[0] != '\0')
    {
        Serial2.println(ATcommand);    // Посыл АТ-команды
    }

    x = 0;
    previous = millis();

    // this loop waits for the answer
    do{
        if(Serial2.available() != 0){   
            response[x] = Serial2.read();
            //Serial.print(response[x]);
            x++;
            if (strstr(response, expected_answer) != NULL)    // проверяем порт на наличие "ОК"
            {
                answer = 1;
            }
        }
    }while((answer == 0) && ((millis() - previous) < timeout));    // Ждем ответа от модуля

    return answer;
}

В общем, в таком варианте нихрена не работает. Если сократить строку до такого http://gps.scienceukraine.in.ua/gps.php … =42.669578 уже отсылает. Если больше, то ступорится.

Устанавливал интервал ожидания ответа даже на 120000 мс, ничего не дает. Помогите разобраться, может кто игрался с sim900?

Підвал форуму