NodeMCU’daki FLASH butonunu loop() içinde ‘Wi-Fi’ı sıfırla’ tuşu olarak kullanabilir miyim?
Binalarda sayaç okuyan küçük NodeMCU (ESP8266) kutularımız var, Hermetry’ye MQTT ile gidiyorlar, Wi-Fi ayarını WiFiManager portalından alıyorlar. Her cihazın token’ı ilk kurulumda EEPROM’a yazılıyor.
Sorun şu: bina yönetimi modemi değiştirince cihaz eski ağı arıyor, portal da açılmıyor çünkü kayıtlı ağ var. Şimdiye kadar kutuyu söküp USB ile yeniden yüklüyorduk. Kartın üstündeki FLASH butonunu “5 saniye basılı tut, Wi-Fi ayarlarını sil, portalı aç” diye kullanmak istiyorum. Ek buton koymak için kutuda yer yok. Bu buton loop() içinde normal giriş gibi okunabilir mi, bir zararı olur mu?
GPIO0’a dokunmayın derim, o boot pini. Yanlışlıkla flash moduna girer.
Benim kartta butonun yanında D3 yazıyor, aynı pin mi?
Gizem evet, D3 = GPIO0. Furkan’ın dediği sadece reset anı için geçerli: güç verilirken ya da reset sırasında GPIO0 LOW ise kart flash moduna giriyor. Program çalışmaya başladıktan sonra normal bir giriş, kartta zaten pull-up var, buton GND’ye çekiyor. Bizim sahadaki cihazlarda tam olarak bunu yapıyoruz.
const int BTN = 0; // D3 / FLASH
unsigned long downAt = 0;
void setup() {
pinMode(BTN, INPUT_PULLUP);
// ...
}
void loop() {
if (digitalRead(BTN) == LOW) {
if (!downAt) downAt = millis();
if (millis() - downAt > 5000) {
WiFiManager wm;
wm.resetSettings(); // sadece Wi-Fi bilgileri silinir
ESP.restart(); // açılışta portal kendiliğinden açılır
}
} else downAt = 0;
mqtt.loop();
}
Dikkat edilecek iki şey var. Token’ı EEPROM’da ayrı tut ve bu işlemde silme; cihaz Hermetry’de aynı cihaz olarak kalsın, yeni ağa geçince aynı credential’la bağlansın. İkincisi, butona basılıyken elektrik gidip gelirse kart flash moduna açılır, birkaç saniye sonra tekrar reset atmak yeterli. Teknisyene “fişi çekip takarken butona basma” notu bırakın.
Denedik, sorunsuz. Bir binada modem dün değişti, teknisyen 5 saniye bastı, portaldan yeni ağı girdi, cihaz aynı isimle Hermetry’de tekrar çevrimiçi oldu. Sökmekten kurtulduk.
- You must be logged in to reply to this topic.
Join the conversation
Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

