Ви не увійшли.
Сторінки 1
Беру слова обратно, Blynk действительно работает через свой сервер с пингом 14-15 мс. Как только выдернул шнур с роутера, все стало ясно.
На мой взгляд, это очень ограничивает область применения esp.
В скетче Direct Connect указано:
* NOTE: Blynk Apps currently do not support direct TCP connection.
* Wait for new updates!
Так что, будем ждать.
Все) разобрался.
Вот нашел http://docs.blynk.cc/ . И так имеем три главных компонента 1. Blynk App, 2. Blynk server, 3. Blynk Libraries . То есть то о чем я подозревал, что без сервера никак...
Моя ошибка - думал, что при использовании ESP в качестве шилда для ардуины, то прошивка на ардуине будет управлять пинами (GPO0, GPO2) на ESP. Поэтому в Blynk выбирал ESP8266 и ждал чуда. Вот, что мне ответили в комьюнити блинка:
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 пока не удалось из-за непонятной ошибки, но не суть. В качестве коммуникатора для ардуины работает на ура.
Пока я досконально не изучал Blynk, и если я не прав, объясните как Вы видите взаимодействие "приложение в телефоне"<--> ESP.
Вы правы - нужен сервер.
В качестве пруфа могу записать видео.
Solaris. Почему то интуиция подсказывает что проблема не в железе. Возникает вопрос, а Вы уверены что ESP подключается к роутеру? Вы используете облачный сервер Blynk? С блинком не баловался, попробую ради интереса когда будет время . Как раз у меня есть еще одна свободная esp8266- 01 ( остальные уже пристроил ).
Перебрововав все вариации подключения и с ардуиной и напрямую к конвертеру, убедился, что проблема не в железе. Скетч 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
Прошу помощи в решении экзистенциального вопроса по незнанию.
Подключил модуль как шилд на 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 В. В чем причина, прошивка старая (не обновлял после покупки), библиотека лажа или кривые руки?
Можно ли обойтись без роутера? Можно, если железяка сама притворится роутером точкой доступа: http://www.esp8266.com/viewtopic.php?f=6&t=299&start=0
Спасибо, я так и думал. Вопрос в "языке общения", но это уже другая история.
Хочу оживить ветку, имхо только забрал ESP8266 с почты. Прежде чем курить хабр и иже с ним хочу задать вводный вопрос экспертам: я смогу с этим чудом организовать общение между смартфоном (приложение на андрюхе) и ардуиной как здесь http://esp8266.ru/ без роутера, только как клиент-сервер? Предварительно начитался про какие-то mqtt сервера и ничего не понял, так как пока на любительском уровне.
И хочу узнать ваше мнение по поводу этой библиотеки https://github.com/esp8266/Arduino
Association Paroisse Le Bon Pasteur )))))
[ add ]
у вас симпатичный сайт https://scienceukraine.in.ua/ )
да уж, много ньюансов, на которых новичок по невнимательности будет тормозить. Поэтому без добрых пастырей никак))
спасибо за оценку) программим ардуину и несем научный свет в массы)
p.s. если кто желает, можно стать редактором в помощь, всегда рады сотрудничеству
Огромное спасибо за наводку) побитная отправка массива и дополнительная заддержка в 200 мс перед отправкой 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)
...
А если забрать кусок кода вот отсюда? https://github.com/DFRobot/GPS-GPRS-GSM … RS_GPS.ino
Так там порядок АТ-команд тот же, только передают всего два параметра широта/долгота. У меня их больше и строка длиннее, отчего проблемы. Или я чего-то не увидел?
Всем добрых выходных) Написал скетч, чтобы моя 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?
Сторінки 1