Замена ESP-12E NodeMCU на ESP-01S — как запустить скетч?

У меня был готовый скетч, работающий с NodeMCU и Leonardo Pro Micro, и я решил, что хочу минимизировать площадь проекта и вместо этого использовать меньшую плату ESP-01S.

ESP-01S запрограммирован на отправку push-уведомлений в Pushover, и мой старый код работает. Единственная проблема в том, что я не знаю, как запустить его с Pro Micro.

С помощью NodeMCU я просто настроил его для прослушивания на контакте 2, и я активировал высокий / низкий уровень от моего Pro Micro, и он отправил push-уведомление - в тот момент, когда я включаю ESP-01S, он просто отправляет push-уведомление снова и снова и не видит соединения с Pro Micro, чтобы остановить это.

Вот мой текущий код на ESP-01S

#include <ESP8266WiFi.h>

// Настройки Wi-Fi
const char* ssid = "Redacted";
const char* password = "Redacted";
// Настройки пушовера
char pushoversite[] = "api.pushover.net";
char apitoken[] = "Redacted";
char userkey [] = "Redacted";
int length;
WiFiClient client;
void setup() {
  pinMode(0, OUTPUT);
  digitalWrite(0, LOW);
  pinMode(2, INPUT);
  Serial.begin(9600);
  delay(10);

  // Подключаемся к сети Wi-Fi
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Печатаем IP-адрес
  Serial.print(WiFi.localIP());

}

void loop()
{
if(digitalRead(5) == 1) pushover("Deployment Completed");
}

byte pushover(char *pushovermessage)
{
 String message = pushovermessage;

 length = 81 + message.length();

if(client.connect(pushoversite,80))
 {
   client.println("POST /1/messages.json HTTP/1.1");
   client.println("Host: api.pushover.net");
   client.println("Connection: close\r\nContent-Type: application/x-www-form-urlencoded");
   client.print("Content-Length: ");
   client.print(length);
   client.println("\r\n");;
   client.print("token=");
   client.print(apitoken);
   client.print("&user=");
   client.print(userkey);
   client.print("&message=");
   client.print(message);
   while(client.connected())  
   {
     while(client.available())
     {
       char ch = client.read();
       Serial.write(ch);
     }
   }
   client.stop();
 }  
}

и мой код Leonardo Pro Micro выглядит следующим образом

#include <HID-Project.h>
#include <HID-Settings.h>
int buttonPin;
int buttonPin2;
char chr;   // для входящих последовательных данных тип char имеет 8-битный знак, от -128 до 127, ASCII - коды символов. Сохранить 1 байт вместо типа int.

void setup() {
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT);
  BootKeyboard.begin();
  Keyboard.begin();
  Mouse.begin();
  Serial.begin(115200);
  buttonPin = 4; //Белая кнопка
  buttonPin2 = 6; //Черная кнопка
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(buttonPin2, INPUT_PULLUP);
}

void loop() {
  delay(5000);
  digitalWrite(5, HIGH);
  delay(100);   //короткое время ожидания
  digitalWrite(5, LOW);
  }

Очевидно, я хочу, чтобы цифровой контакт 5 Pro Micro запускал ESP-01 для отправки push-уведомления при его срабатывании.

Кстати, я использую 3,3-вольтовый Pro Micro, так что здесь нет проблем с напряжением, прежде чем я использовал логический преобразователь с 5-вольтовой платой.

У меня есть настройка ESP-O1S с 3V3 и EN, подключенными к 3v VCC на Pro Micro, GND к GND, и я попробовал IO0 и IO2 к цифровому контакту 5 на Pro Micro.

Может ли кто-нибудь указать мне правильное направление?

, 👍0

Обсуждение

почему вы читаете контакт 5 в esp8266?, @Juraj


1 ответ


Лучший ответ:

1

Используйте io 0 в качестве вывода esp-01S, подключенного к Micro, но измените логику для подтяжки, потому что esp-01S имеет подтягивающий резистор на io 0 esp8266. Используйте НИЗКИЙ уровень для запуска действия и ВЫСОКИЙ уровень в обычном состоянии.

На стороне Arduino Micro установите выходной контакт ВЫСОКИМ, прежде чем установить его как ВЫХОД. Это позволит избежать состояния LOW. Пока контакт Micro находится в состоянии INPUT после включения питания, подтягивающий резистор на esp-01S будет тянуть io 0 HIGH.

,

Попался, мне нужно изменить какой-либо из этих кодов на ESP-01S? недействительная установка () { pinMode(0, ВЫХОД); цифровая запись (0, НИЗКИЙ); pinMode(2, ВВОД); Серийный.начать(9600); задержка (10);, @Danny Shepherd

в esp8266 pinMode(0, INPUT); и if (digitalRead(0) == LOW) pushover("Развертывание завершено");, @Juraj

Понял, взломал, спасибо Джарай!, @Danny Shepherd

Просто чтобы еще раз проверить, правильный способ изменить логику на Leonardo — это просто установить вывод на запись как ВЫСОКИЙ в настройках, верно? Невозможно перевернуть его, когда вы устанавливаете его как выход (что я вижу), @Danny Shepherd

да, установите его ВЫСОКИМ, прежде чем устанавливать его как выход, чтобы избежать НИЗКОГО состояния, которое вызовет действие, @Juraj