• Система автоматизации с открытым исходным кодом на базе 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.
 
Сверху Снизу