• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Взаимодействие ESP с компьютером, Arduino IDE и Delphi

Добрый день, друзья! Как и обещал, делюсь наработками по обмену информацией с ESP8266, кому-нибудь могут пригодится. Знаю, прошло уж очень много времени, жена, отпуск, работа, но лучше поздно, чем никогда:)
Что имеем: ESP8266-07 со скетчем из Arduino IDE. Программа для компьютера, написанная на Delphi XE7, платформа FM (т.е. и с андройда и с айфона при желании можно завести). С компьютера можно управлять скважностью любого доступного цифрового пина ESP, а также получать сообщение, если 13 пин будет замкнут на землю (короче, счетчик нажатий на кнопку). В скетче Arduino нужно ввести данные своей локальной сети и поменять назначение пина кнопки, если нужно.
Код немного сыроват, но разобраться в нем, на мой взгляд, не составит особого труда. Если будут какие-нибудь вопросы или замечания, буду рад услышать)
Безымянный.png
 

Вложения

Vasiks

Member
Добрый день, друзья! Как и обещал, делюсь наработками по обмену информацией с ESP8266, кому-нибудь могут пригодится. Знаю, прошло уж очень много времени, жена, отпуск, работа, но лучше поздно, чем никогда:)
Что имеем: ESP8266-07 со скетчем из Arduino IDE. Программа для компьютера, написанная на Delphi XE7, платформа FM (т.е. и с андройда и с айфона при желании можно завести). С компьютера можно управлять скважностью любого доступного цифрового пина ESP, а также получать сообщение, если 13 пин будет замкнут на землю (короче, счетчик нажатий на кнопку). В скетче Arduino нужно ввести данные своей локальной сети и поменять назначение пина кнопки, если нужно.
Код немного сыроват, но разобраться в нем, на мой взгляд, не составит особого труда. Если будут какие-нибудь вопросы или замечания, буду рад услышать)
Посмотреть вложение 862
А как изменить код, чтоб по нажатию пина GET отправлялся по 192.168.1.110/gpio2/0 ?
 

Vasiks

Member
Записал так:
Код:
 // We now create a URI for the request
  String url;
  url += host;
  url += "/gpio/2.php?buttonCount=";
  url += buttonCount;
    Serial.println("  ***URL*****");
  Serial.print(url);
  // This will send the request to the server
  client.print(url);

  delay(10);
В serial выводит нужный URL, но по адресу не переходит. Там 2.php обрабатывает приходящий get и пишет запрос в .txt. Если в браузере получившуюся ссылку вбить, 192.168.1.2/gpio/2.php?buttonCount=1 то всё отрабатывает. А модуль чёт иногда вылетает, и ссылку не шлёт.
В чём причина?
 
Ну так по коду сразу и не скажешь. Причин для влетов может быть много, начиная с багов самого ESP и заканчивая ошибками в той части кода, которую вы не стали вставлять. Попробуйте максимально упростить свой код и локализовать ошибку, оставив только самое необходимое. Если на минимуме кода все будет работать - постепенно добавляйте остальной функционал, пока не доберетесь до места, на котором программа сыпется.
 

Vasiks

Member
Всё. Понял, надо было так GET делать:
Код:
// We now create a URI for the request
  String url;
// url += host;
  url += "/gpio/2.php?buttonCount=";
  url += buttonCount;
   
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");

  delay(10);
Теперь работает.
 
Последнее редактирование:

Vasiks

Member
Только поясните, пожалуйста, эти записи:
Код:
blinks(2,25);
Это значит включить пин 2 на время 25 мс ?
Код:
ledPin = 1;
Что такое пин 1? Где он физически? И синий светодиод на каком пине висит?
Соответствует-ли такая распиновка наименованиям пинов в arduino ide, для esp-03?
esp-03.jpg
 
Ну там же в коде вроде все прокомментировано:
Код:
//мигаем count раз диодом
void blinks(int count, int delay_ms)
blinks(2,25); - включили ledPin на 25мс и выключили его на 25мс. Грубовато, но это мне было нужно для своих целей, вы можете смело пользоваться другими приемами.

Пин 1 - это синий светодиод. Он же TX.
 
Сверху Снизу