Замена 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.
Может ли кто-нибудь указать мне правильное направление?
@Danny Shepherd, 👍0
Обсуждение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
- Как запустить скетч NodeMCU из Arduino Leonardo Micro Pro?
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Как изменить имя модуля ESP8266-12E по умолчанию
- Простой запрос GET с ESP8266HTTPClient
почему вы читаете контакт 5 в esp8266?, @Juraj