Пользует ли кто WiFi-модули ESP8266 ? Поделитесь впечатлениями.

MaksMS
Offline
Зарегистрирован: 11.03.2013

ой, очепятался, в паре с арудиной надо есп-01 )) там конктактов мало и разъемы большие

boban_
Offline
Зарегистрирован: 09.10.2013

Убрать jpeg.

 

Sirocco
Offline
Зарегистрирован: 28.09.2013

Для питания использую такие штуки http://www.ebay.com/itm/400788670076?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

За 1,57$ 20 штук купил, и леплю их везде. Леплю без какого либо обвеса вообще, просто голый стабилизитор и всё. Всё работает без проблем. Это LCD 5110, чипы с ESP8266, OLED 128x64, некоторые из enc28j60...

Так как питаю всё от повербанков, тоесть от пяти вольт, то впаиваю их прям на плату и лью термоклеем.

Для отладки наделал таких переходников, засунул их в термоусадку:

Logik
Offline
Зарегистрирован: 05.08.2014

Вроде неплохо так описано с чего начать и куда заливать - http://mysku.ru/blog/aliexpress/29741.html. Аж себе захотелось.

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013

Шикарно! Заказал два есп01, для работы с дуней и 1 есп07 для самостоятельной работы.

art100
Offline
Зарегистрирован: 09.03.2014

Logik пишет:

Вроде неплохо так описано с чего начать и куда заливать - http://mysku.ru/blog/aliexpress/29741.html. Аж себе захотелось.

Я слепой. Я уже так дополнителные ноги выводить не смогу. 

mcshel
Offline
Зарегистрирован: 17.10.2014
Sirocco
Offline
Зарегистрирован: 28.09.2013

NodeMCU, самая последняя версия https://github.com/nodemcu/nodemcu-firmware/tree/master/pre_build/0.9.5  nodemcu_latest.bin

Использую ESPlorer.

Почему, когда считываю состояние пина, то он вырубается? Делаю:

gpio.read(4)

и после этой строчки пин из HIGH переходит в LOW. Как считывать состояние пина без изменения его состояния?

mcshel
Offline
Зарегистрирован: 17.10.2014

Питание в 3.3v подаете от отдельного источника или USB\UART?

Sirocco
Offline
Зарегистрирован: 28.09.2013

От USB to UART через отдельный стабилизатор на 3,3. А имеет значение? 

mcshel
Offline
Зарегистрирован: 17.10.2014

Пишут что питание от USB не подходит и лучше подавать от отдельного источника. Например от блока питания и стабилизатора на 3.3 V.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

mcshel пишет:

Пишут что питание от USB не подходит и лучше подавать от отдельного источника. Например от блока питания и стабилизатора на 3.3 V.

http://arduino.ru/forum/apparatnye-voprosy/polzuet-li-kto-wifi-moduli-es...

mcshel
Offline
Зарегистрирован: 17.10.2014

trembo пишет:

mcshel пишет:

Пишут что питание от USB не подходит и лучше подавать от отдельного источника. Например от блока питания и стабилизатора на 3.3 V.

http://arduino.ru/forum/apparatnye-voprosy/polzuet-li-kto-wifi-moduli-es...

Я сам еще не проверял, но глюки при питании от USB/UART CP2102 наблюдаю. К сожалению у плата, которая выдает 3,3V и 0.7A на работе и проверить на себе смогу только в понедельник)

Sirocco
Offline
Зарегистрирован: 28.09.2013

Ерунда какая-то. У меня ft232rl. Питая модуль, пару светодиодов, экран и ардуино - никогда не замечал проблем. Всегда выдаёт 4,85 вольт. Напряжение после преобразователя всегда 3,2 вольта. Ни в один момент при работе с ESP напряжение не проседает. Так чем оно ему не нравится?

Ну Ok. Подключил отдельное питалово. Но модуль не завёлся 0_о. Обычный USB зарядник от асуса, честные 5 вольт на выходе, светодиоды модуля светят, а светодиод GPIO2 светит в пол силы с перебоями\перемаргиваниями, и модуль ни в какую не коннектится к WiFi и по RxTx. Неясно, чем ему не нраится такое питание. Попробую другие источники поискать.

Sirocco
Offline
Зарегистрирован: 28.09.2013

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

Не в питании проблема была, при чтении статуса пина он всёравно переходит на низкий уровень. Кто знает как решить проблему?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Завести переменную хранящую статусы пинов и восстанавливать их - пока автор не подправит драйвер в прошивке. Щас проверил на своих - при чтении не сбрасывается статус пина.

Sirocco
Offline
Зарегистрирован: 28.09.2013

NeiroN пишет:

Завести переменную хранящую статусы пинов и восстанавливать их - пока автор не подправит драйвер в прошивке.

Костыль, однако... Но другого выхода нет, видимо.

Sirocco
Offline
Зарегистрирован: 28.09.2013

А ещё вопрос. Можно статус переменной как-то сохранить в энергонезависимой памяти? И хорошо бы пример кода.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

В файл записать? не? Пример это уж сами.

mcshel
Offline
Зарегистрирован: 17.10.2014

У меня тоже глюки с NodeMCU и скриптами на Lua. Включаешь и может не отвечать, потом подергаешь питание начинает работать.

Потом опять глюки. Вообщем крайне не стабильно. На mysku один человек написал, что дело в отдельном питании, поэтому я Вам и отписался, хотя сам еще не успел проверить.

Кстати может вам попробовать не через ESPlorer, а через терминал напрямую, команды подавать?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Да - тоже было тоакое - наверно сигнал на CH_PD должен подаваться с задержкой(резистор к питанию, конденсатор на землю).

Если очень надо пример c сохранением статуса пина https://gist.github.com/NeiroNx/ab58998260ddfc90bbf4

на прошивке 0.9.4 работает

Sirocco
Offline
Зарегистрирован: 28.09.2013

NeiroN пишет:

Да - тоже было тоакое - наверно сигнал на CH_PD должен подаваться с задержкой(резистор к питанию, конденсатор на землю).

Если очень надо пример c сохранением статуса пина https://gist.github.com/NeiroNx/ab58998260ddfc90bbf4

на прошивке 0.9.4 работает

Спасибо! Подправил, работает  и на 0,9,5. А в каком виде логин\пасс хранится? Как свой сделать?

Sirocco
Offline
Зарегистрирован: 28.09.2013

Ещё один неясный момент, с таймером.

Из мануала:

Syntax

tmr.alarm(id, interval, repeat, function do())

Запускаю код:

tmr.alarm(0, 1000, 1, function() print("hello world") end )

И он повторяется циклично с интервалом в секунду бесконечно. Почему бесконечно, если параметр repeat задан единицей?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Sirocco пишет:

Как свой сделать?

пользователь:пароль

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

А вам не приходило в голову что repeat булевое значение потому что true=1 , false=0

Jek
Offline
Зарегистрирован: 05.01.2014

Что-то тема совсем не про ардуино и ESP8266...

Помогите пожалуйста переделать код с ENC28J60 на ESP8266:

#include <OneWire.h>
OneWire ds (9);
byte data[12];
byte addr1[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
byte addr2[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
unsigned int raw;

float temp_in_1 = 0.00;
float temp_in_2 = 0.00;
    
#include <EtherCard.h>
/*
Подключение ENC28J60 к Ардуино:
CS - 10
SI - 11
SO - 12
SCK - 13
3.3V - 3.3V Также можно подключить к 5V. 
GND - GND
*/
static byte mymac[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03 };
#define mac "0101001010101"
static byte hisip[] = { 94,19,113,221,8283 };
#define REQUEST_RATE 360000UL // milliseconds
byte Ethernet::buffer[500];
unsigned long timer;
Stash stash;

// Датчик температуры и влажности DHT22 (AM2302)
float temp_out = 0.00; // Температура на улице
byte vlazhnost_out = 0; // Влажность на улице
#include "DHT.h"
#define DHTTYPE DHT22
#define DHT_1_PIN 6 // Пин подключения датчика температуры и влажности
DHT dhta(DHT_1_PIN, DHTTYPE);

// Датчик давления, температуры, высоты GY-65
// Пины подключения GY-65 А4 и А5
int davlenie = 0; // Давление в мм рт. ст.
#include <Wire.h>
#include <BMP085.h>
BMP085 dps = BMP085();
//unsigned long time_GY65 = 0;

void setup () 
  {
    Serial.begin(57600);
//    Serial.println(F("\n[webClient]"));
    delay(1000);
    if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)
      {
//        Serial.println(F("Failed to access Ethernet controller"));
      }
    if (!ether.dhcpSetup())
      {
//        Serial.println(F("DHCP failed"));
      }
    static byte dnsip[] = {8,8,8,8};
    ether.copyIp(ether.dnsip, dnsip);
    ether.printIp("IP: ", ether.myip);
    ether.printIp("GW: ", ether.gwip);
    ether.printIp("DNS: ", ether.dnsip);
    ether.copyIp(ether.hisip, hisip);
    ether.printIp("Server: ", ether.hisip);
    while (ether.clientWaitingGw())
      {
        ether.packetLoop(ether.packetReceive());
      }
//    Serial.println(F("Gateway found"));
    timer = - REQUEST_RATE;
  
    // Датчик DHT22
    dhta.begin();
    
    // Датчик GY-65
    Wire.begin();
    delay(1000);
    dps.init(MODE_STANDARD, 5000, true);
    
//    Serial.println(F("Start"));
    Serial.println("\n[memCheck]");
    Serial.println(freeRam());

  }

void loop () 
  {
    DHT22_AM2302();
    GY65();
    temp_in_1 = DS18B20(addr1);
    temp_in_2 = DS18B20(addr2);
//    DS18B20();
    ether.packetLoop(ether.packetReceive());
    if (millis() - timer > REQUEST_RATE)
      {
        timer = millis();
        byte sd = stash.create();

        stash.print(F("ID="));
        stash.print(mac);
        stash.print(F("&"));
        stash.print(mac);
        stash.print(F("T1"));
        stash.print(F("="));
        stash.print(temp_out);
        stash.print(F("&"));
        stash.print(mac);
        stash.print(F("H1"));
        stash.print(F("="));
        stash.print(vlazhnost_out);
        stash.print(F("&"));
        stash.print(mac);
        stash.print(F("T2"));
        stash.print(F("="));
        stash.print(temp_in_1);
        stash.print(F("&"));
        stash.print(mac);
        stash.print(F("P1"));
        stash.print(F("="));
        stash.print(davlenie);
        stash.print(F("&"));
        stash.print(mac);
        stash.print(F("T3"));
        stash.print(F("="));
        stash.print(temp_in_2);

        stash.save();
     
        Serial.print(F("ID="));
        Serial.print(mac);
        Serial.print(F("&"));
        Serial.print(mac);
        Serial.print(F("T1"));
        Serial.print(F("="));
        Serial.print(temp_out);
        Serial.print(F("&"));
        Serial.print(mac);
        Serial.print(F("H1"));
        Serial.print(F("="));
        Serial.print(vlazhnost_out);
        Serial.print(F("&"));
        Serial.print(mac);
        Serial.print(F("T2"));
        Serial.print("=");
        Serial.println(temp_in_1);
        Serial.print(F("&"));
        Serial.print(mac);
        Serial.print(F("P1"));
        Serial.print(F("="));
        Serial.print(davlenie);
        Serial.print(F("&"));
        Serial.print(mac);
        Serial.print(F("T3"));
        Serial.print(F("="));
        Serial.println(temp_in_2);
        Serial.print("\n[memCheck]");
        Serial.println(freeRam());
        
        Stash::prepare(PSTR("POST http://narodmon.ru/post.php HTTP/1.0" "\r\n"
                            "Host: narodmon.ru" "\r\n"
                            "Content-Length: $D" "\r\n"
                            "\r\n"
                            "$H"),
                      stash.size(), sd);
        ether.tcpSend();

        Serial.println(F("Done"));
      }
  } 
  
// Функция опроса датчика DHT22
void DHT22_AM2302()
{
  vlazhnost_out = dhta.readHumidity();
  temp_out = dhta.readTemperature();
/*  if (isnan(temp_out) || isnan(vlazhnost_out))
    {
//      Serial.println(F("Net dannih temperaturi i vlazhosti"));
    } */
}

// Функция опроса датчика GY-65
void GY65()
{
  long Pressure = 0;
  //long Temperature = 0;
//  if (((millis() - time_GY65)/1000.0) >= 1.0) 
//    {     
      dps.calcTrueTemperature();
      delay(1000);
//      time_GY65 = millis();     
//    }
  dps.getPressure(&Pressure);
  davlenie = Pressure/133.3;
}

float DS18B20(byte *adres)
{
  ds.reset();
  ds.select(adres);
  ds.write(0x44,1); // start conversion, with parasite power on at the end
  delay(1000);
  ds.reset();
  ds.select(adres);
  ds.write(0xBE); // Read Scratchpad
  for (byte i = 0; i < 12; i++) 
  { // we need 9 bytes
    data[i] = ds.read ();
  }
  raw =  (data[1] << 8) | data[0];//=======Пересчитываем в температуру
  //Serial.println(raw);
  float celsius =  (float)raw / 16.0;
  return celsius;
}

int freeRam () 
{
  extern int __heap_start, *__brkval; 
  int v; 
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

 

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012
Jek пишет:
Что-то тема совсем не про ардуино и ESP8266...
Помогите пожалуйста переделать код с ENC28J60 на ESP8266:
 
Правильно, эта тема только про ESP8266, но появления в ней ардуино вполне понятно,
а вот появление в теме ENC28J60, немного странно, если не сказать больше.
Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

NE_XT пишет:

Правильно, эта тема только про ESP8266, но появления в ней ардуино вполне понятно,
а вот появление в теме ENC28J60, немного странно, если не сказать больше.

Я так понимаю, товарищ "Jek" интересуется, как ему POST отправлять не через проводной модуль, а по Wi-Fi. Т.е., что надо вкусить, а что - выкусить...

Jek
Offline
Зарегистрирован: 05.01.2014

Ничего странного.... Устройство было собрано на ENC28J60 и сейчас есть желание переделать его на ESP8266. Вот и всё.

Jek
Offline
Зарегистрирован: 05.01.2014

Andrey_Y_Ostanovsky пишет:

Я так понимаю, товарищ "Jek" интересуется, как ему POST отправлять не через проводной модуль, а по Wi-Fi. Т.е., что надо вкусить, а что - выкусить...

 

Точно, или хотя бы пример какой-нить....

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Jek пишет:

Точно, или хотя бы пример какой-нить....

Вот пример с GET

Jek
Offline
Зарегистрирован: 05.01.2014

Спасибо. Разобрался.

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Jek пишет:

Спасибо. Разобрался.

Так положите сюда кусок кода, что бы другие не спрашивали одно и то же :)

MaksMS
Offline
Зарегистрирован: 11.03.2013

Jek пишет:

Что-то тема совсем не про ардуино и ESP8266...

Помогите пожалуйста переделать код с ENC28J60 на ESP8266:

Хотя получается офтоп - т.к. получается не на ардуино, но может есть смысл использовать мою прошивку ?

Посмотрел функционал скетча - у меня в прошивке уже все это реализовано и даже больше.

Кстати сегодня опубликовал новую версию прошивки..

Jek
Offline
Зарегистрирован: 05.01.2014

KVadik пишет:

Так положите сюда кусок кода, что бы другие не спрашивали одно и то же :)

Так он точно такой, как Вы в ссылке дали... Только я заранее конфигурил WiFi родным конфигуратором.

MaksMS пишет:

Хотя получается офтоп - т.к. получается не на ардуино, но может есть смысл использовать мою прошивку ?

Посмотрел функционал скетча - у меня в прошивке уже все это реализовано и даже больше.

Кстати сегодня опубликовал новую версию прошивки..

 

В Вашей прошивке только один датчик DS18B20, а надо два....

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Jek пишет:

В Вашей прошивке только один датчик DS18B20, а надо два....

Ясно. Будем допиливать ещё. А зачем столько DS18B20 ? в DHT и BMP есть уже температура..

Можно конечно выкрутиться и подключить другой тип датчика, правда его ещё надо найти и купить..

Jek
Offline
Зарегистрирован: 05.01.2014

MaksMS пишет:

Ясно. Будем допиливать ещё. А зачем столько DS18B20 ? в DHT и BMP есть уже температура..

Можно конечно выкрутиться и подключить другой тип датчика, правда его ещё надо найти и купить..

DHT стоит на улице, в BMP нет отрицательных температур, один DS внутри помещения, другой на отоплении...

Да и работало это всё на ENC28J60, сейчас на WiFi  переделал....

MaksMS
Offline
Зарегистрирован: 11.03.2013

В BMP есть отрицательные температуры. Другое дело что этот датчик надо от воды прятать, чтоб не залило..

Jek
Offline
Зарегистрирован: 05.01.2014

MaksMS пишет:

В BMP есть отрицательные температуры. Другое дело что этот датчик надо от воды прятать, чтоб не залило..

Тут http://www.sparkfun.com/tutorials/253 написано "As a bonus the BMP085 also provides a temperature measurement, anywhere from 0 to 65 °C" Про отрицательные не видно ничего...

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Jek пишет:

MaksMS пишет:

В BMP есть отрицательные температуры. Другое дело что этот датчик надо от воды прятать, чтоб не залило..

Тут http://www.sparkfun.com/tutorials/253 написано "As a bonus the BMP085 also provides a temperature measurement, anywhere from 0 to 65 °C" Про отрицательные не видно ничего...

Вот тут было обсуждение на тему отрицательной температуры у программы для windows с подключением bmp085 через usb-i2c переходник к компьютеру, в этоге выяснилось, что в коде, который я использовал изначально были неотрицательные переменные, после правки этого отрицательная температура у человека, развившего тему стала отображаться..

Jek
Offline
Зарегистрирован: 05.01.2014

Так в Ваших прошивках сейчас оображается отрицательная температура?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Jek пишет:

Так в Ваших прошивках сейчас оображается отрицательная температура?

Должна, хотя лично не проверял, но жалоб не было. Если что - подправим код быстренько..

project_vist
Offline
Зарегистрирован: 15.01.2015

Доброго времени суток. Я музикант, программирую МИДИ-конроллер. У меня такой вопрос:

Есть Ардуино Уно + заказал ESP-01

Задание: ESP-01 должен работать как точка доступа для подключения устройств к ней на Андроид или ноутбуков. В Ардуино поступает миди команда, она автоматически отправляется в сеть и в обратном порядке - при поступлении команд с сети они автоматически передаються по миди-устройство.  Связка Ардуино Уно + заказал ESP-01 должна работать автономно, а не подключаться к существующей сети.

Подскажите как настроить связку пожалуйста. 

П.С. Работа Ардуино с миди не проблема - пакет приходит и отправить могу, осталось передать его по "воздуху"

axill
Offline
Зарегистрирован: 05.09.2011

кто знает про esp-07 как она работает с антенной? у нее вроде как и керамическая припаяна и разъем для внешней есть. Означает ли это что может и так и так работать?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

да - там разьем паралелен керамической антенне. У чипа ESP8266 только один трансивер и антенный вывод только один.

axill
Offline
Зарегистрирован: 05.09.2011

Вот паралеьность и смущает. Как можно согласовать паралельное подключение двух антенн?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Может быть убрать конденсатор который идёт на внутреннюю антенну?

axill
Offline
Зарегистрирован: 05.09.2011

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

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Доброго времени суток!

Достались два модуля ESP8266 судя по плате ESP-01. Колодка 8 пинов. Подключил к ардуино мега2560 на софтверный порт. Питание и CH_PD на 3,3В земля само собой, RX, TX крест накрест. Питание 3,3 вольта внешнее (с ATX БП) земли связаны.

Красный светодиод горит постоянно. Синий вспыхивает когда что-то в сериал кидаю (АТ команды). Дело в том что ответа нет абсолютно никакого. Пробовал скорости 9600-57600-115200. Потом прочитал про разные прошивки, в том числе и не АТ. Соответственно встал вопрос, а как определить что за прошивка? Может китайцы прошили уже что-то, а я пытаюсь АТ командами рулит.

Или может я что-то не так делаю?

mcshel
Offline
Зарегистрирован: 17.10.2014

Работа с ESP8266: Первоначальная настройка, обновление прошивки, связь по Wi-Fi, отправка-получение данных на ПК

http://geektimes.ru/post/241054/

Модуль Wifi на базе чипа ESP8266

http://mysku.ru/blog/aliexpress/29741.html

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Penni пишет:

Или может я что-то не так делаю?

Я сперва подключаю к компу через USB<->UART переходник, заливаю нужную мне прошивку, проверяю, а потом уже к контроллеру подключаю.