Nextion HMI ile girilen 2 string değeri sonraki değişene kadar hafızada tutma

brsbnkc

Üye
Katılım
10 Tem 2023
Mesajlar
28
Puanları
1
Yaş
27
Merhabalar,

Arduino UNO Wifi Rev2 cihazım ile Nextion HMI kullanarak bir proje yapıyorum. Projemde WiFi bağlantısını Nextion ekranı üzerinden SSID ve Password girişi yaparak kullanıcının gerçekleştirmesini istiyorum bu bağlamda kullanıcının girdiği SSID ve Password bilgisini tekrar kendisi değiştirene kadar hafızada tutmalı ve bağlantıyı bu bilgiler üzerinden sağlamalıyım bu konu hakkında yardımcı olabilecek varmıdır?
 
Arduino UNO Wifi Rev2 ve Nextion HMI kullanarak WiFi bağlantısı için kullanıcının gireceği SSID ve şifre bilgisini hafızada tutabilirsin.

  1. Nextion HMI Ekranı Tasarımı:
    • Nextion Editor yazılımını kullanarak bir HMI ekran tasarlayın.
    • SSID ve şifre girişi için iki metin kutusu ekleyin ve bunlara uygun isimler verin.
  2. Arduino Programlaması:
    • Arduino IDE'yi kullanarak Arduino UNO Wifi Rev2'ye uygun bir program yazın.
    • HMI ekranıyla seri haberleşme (Serial Communication) sağlamak için Arduino'nun Seri Portunu (Serial Port) kullanabilirsiniz.
  3. Program Akışı:
    • Arduino, HMI ekranından gelen SSID ve şifre bilgilerini alacak ve hafızada saklayacak.
    • Bağlantı kurulduktan sonra, Arduino bu bilgileri kullanarak WiFi bağlantısını sağlayacak.
    • Ardından, bağlantıyı kontrol etmek veya diğer işlemleri gerçekleştirmek için gerekli kodu yazabilirsiniz.
Örnek bir Arduino kodu aşağıya bırakıyorum

Kod:
cppCopy code

#include <Nextion.h>

#include <WiFiNINA.h>



const char* ssid = "";       // SSID bilgisi

const char* password = "";   // Şifre bilgisi



// Nextion HMI nesnesi oluşturma

NexText ssidText = NexText(1, 1, "ssidText");

NexText passwordText = NexText(1, 2, "passwordText");

NexButton connectButton = NexButton(1, 3, "connectButton");



// WiFi nesnesi oluşturma

WiFiSSLClient wifi;



void setup() {

Serial.begin(9600);  // Seri haberleşme başlatma

nexInit();           // Nextion HMI'yi başlatma

}



void loop() {

nexLoop();  // Nextion HMI ile haberleşme döngüsü



// Connect butonuna basıldığında

if (connectButton.wasPressed()) {

// Kullanıcının girdiği SSID ve şifreleri alma

String enteredSSID = NexText.getText(&ssidText);

String enteredPassword = NexText.getText(&passwordText);



// SSID ve şifreyi hafızada saklama

ssid = enteredSSID.c_str();

password = enteredPassword.c_str();



// WiFi bağlantısını sağlama

 connectToWiFi();

  }

}



void connectToWiFi() {

// WiFi bağlantısı sağlama

if (WiFi.status() != WL_CONNECTED) {

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(1000);

Serial.println("Connecting to WiFi...");

    }

Serial.println("WiFi Connected!");

  }

}

Bu örnek kod, Nextion HMI ekranından alınan SSID ve şifre bilgilerini hafızada saklar. Ardından, connectToWiFi() fonksiyonunu kullanarak WiFi bağlantısını sağlar. Bağlantı kurulduktan sonra gerekli işlemleri yapabilirsiniz.
 
Moderatör tarafında düzenlendi:
Arduino UNO Wifi Rev2 ve Nextion HMI kullanarak WiFi bağlantısı için kullanıcının gireceği SSID ve şifre bilgisini hafızada tutabilirsin.

  1. Nextion HMI Ekranı Tasarımı:
    • Nextion Editor yazılımını kullanarak bir HMI ekran tasarlayın.
    • SSID ve şifre girişi için iki metin kutusu ekleyin ve bunlara uygun isimler verin.
  2. Arduino Programlaması:
    • Arduino IDE'yi kullanarak Arduino UNO Wifi Rev2'ye uygun bir program yazın.
    • HMI ekranıyla seri haberleşme (Serial Communication) sağlamak için Arduino'nun Seri Portunu (Serial Port) kullanabilirsiniz.
  3. Program Akışı:
    • Arduino, HMI ekranından gelen SSID ve şifre bilgilerini alacak ve hafızada saklayacak.
    • Bağlantı kurulduktan sonra, Arduino bu bilgileri kullanarak WiFi bağlantısını sağlayacak.
    • Ardından, bağlantıyı kontrol etmek veya diğer işlemleri gerçekleştirmek için gerekli kodu yazabilirsiniz.
Örnek bir Arduino kodu aşağıya bırakıyorum

cppCopy code
#include <Nextion.h>
#include <WiFiNINA.h>

const char* ssid = ""; // SSID bilgisi
const char* password = ""; // Şifre bilgisi

// Nextion HMI nesnesi oluşturma
NexText ssidText = NexText(1, 1, "ssidText");
NexText passwordText = NexText(1, 2, "passwordText");
NexButton connectButton = NexButton(1, 3, "connectButton");

// WiFi nesnesi oluşturma
WiFiSSLClient wifi;

void setup() {
Serial.begin(9600); // Seri haberleşme başlatma
nexInit(); // Nextion HMI'yi başlatma
}

void loop() {
nexLoop(); // Nextion HMI ile haberleşme döngüsü

// Connect butonuna basıldığında
if (connectButton.wasPressed()) {
// Kullanıcının girdiği SSID ve şifreleri alma
String enteredSSID = NexText.getText(&ssidText);
String enteredPassword = NexText.getText(&passwordText);

// SSID ve şifreyi hafızada saklama
ssid = enteredSSID.c_str();
password = enteredPassword.c_str();

// WiFi bağlantısını sağlama
connectToWiFi();
}
}

void connectToWiFi() {
// WiFi bağlantısı sağlama
if (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi Connected!");
}
}

Bu örnek kod, Nextion HMI ekranından alınan SSID ve şifre bilgilerini hafızada saklar. Ardından, connectToWiFi() fonksiyonunu kullanarak WiFi bağlantısını sağlar. Bağlantı kurulduktan sonra gerekli işlemleri yapabilirsiniz.
Merhabalar, çok teşekkür ederim ilginiz için fakat bu kod ile arduino kapanıp açıldığında SSID ve şifre bilgileri gitmeyecek mi ben gitmesin istiyorum çünkü sorunum bu
 
Nextion için hangi kütüphane kullanıyorsunuz aşağıda ki gibi hata alıyorum.

C:\Users\brsbn\AppData\Local\Temp\.arduinoIDE-unsaved2023613-24764-1o8l44s.oqg9\sketch_jul13a\sketch_jul13a.ino: In function 'void loop()':
C:\Users\brsbn\AppData\Local\Temp\.arduinoIDE-unsaved2023613-24764-1o8l44s.oqg9\sketch_jul13a\sketch_jul13a.ino:21:9: error: too few arguments to function 'void nexLoop(NexTouch**)'
nexLoop(); // Nextion HMI ile haberleşme döngüsü
^
In file included from C:\Users\brsbn\OneDrive - ANADOLU IPLIK VE TEKSTIL FABRIKALARI SAN. A.S\Belgeler\Arduino\libraries\ITEADLIB_Arduino_Nextion-master/Nextion.h:23:0,
from C:\Users\brsbn\AppData\Local\Temp\.arduinoIDE-unsaved2023613-24764-1o8l44s.oqg9\sketch_jul13a\sketch_jul13a.ino:1:
C:\Users\brsbn\OneDrive - ANADOLU IPLIK VE TEKSTIL FABRIKALARI SAN. A.S\Belgeler\Arduino\libraries\ITEADLIB_Arduino_Nextion-master/NexHardware.h:44:6: note: declared here
void nexLoop(NexTouch *nex_listen_list[]);
^~~~~~~
C:\Users\brsbn\AppData\Local\Temp\.arduinoIDE-unsaved2023613-24764-1o8l44s.oqg9\sketch_jul13a\sketch_jul13a.ino:24:19: error: 'class NexButton' has no member named 'wasPressed'
if (connectButton.wasPressed()) {
^~~~~~~~~~
C:\Users\brsbn\AppData\Local\Temp\.arduinoIDE-unsaved2023613-24764-1o8l44s.oqg9\sketch_jul13a\sketch_jul13a.ino:26:29: error: expected primary-expression before '.' token
String enteredSSID = NexText.getText(&ssidText);
^
C:\Users\brsbn\AppData\Local\Temp\.arduinoIDE-unsaved2023613-24764-1o8l44s.oqg9\sketch_jul13a\sketch_jul13a.ino:27:33: error: expected primary-expression before '.' token
String enteredPassword = NexText.getText(&passwordText);
^

exit status 1

Compilation error: too few arguments to function 'void nexLoop(NexTouch**)'

Verileri saklama işini nextion kendi içerisinde ki wepo ve repo komutları ile çözdüm.

Kod:
#include "Nextion.h"
#include <SoftwareSerial.h>

SoftwareSerial HMISerial(12, 13);

char ssid[100] = { 0 };
char pass[100] = { 0 };
// Nextion HMI nesnesi oluşturma
NexText ssidText = NexText(0, 1, "ssid");
NexText passwordText = NexText(0, 2, "pass");
NexButton connectButton = NexButton(0, 3, "test");

NexTouch* nex_listen_list[] = {
  &connectButton,
  NULL
};

void setup() {
  Serial.begin(57600);  // Seri haberleşme başlatma
  while (!Serial) {
    // Bekle
  }
  HMISerial.begin(9600);
  nexInit();  // Nextion HMI'yi başlatma
  delay(1000);
}
void loop() {
  nexLoop(nex_listen_list);
  connectButton.attachPush(WriteEeprom);
  Yaz();
  delay(10000);
}
void WriteEeprom(){
  SSIDWriteNexEeprom();
  delay(200);
  PASSWriteNexEeprom();
}
void SSIDWriteNexEeprom() {
  HMISerial.print("wepo ssid.txt,200");
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}
void SSIDReadNexEeprom() {
  HMISerial.print("repo ssid.txt,200");
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}
void PASSWriteNexEeprom() {
  HMISerial.print("wepo pass.txt,250");
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}
void PASSReadNexEeprom() {
  HMISerial.print("repo pass.txt,250");
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}
void Yaz() {
  memset(ssid, 0, sizeof(ssid));
  ssidText.getText(ssid, sizeof(ssid));
  Serial.print("ssidText=");
  Serial.println(ssid);
  memset(pass, 0, sizeof(pass));
  passwordText.getText(pass, sizeof(pass));
  Serial.print("passText=");
  Serial.println(pass);
}
 

Forum istatistikleri

Konular
128,197
Mesajlar
915,759
Kullanıcılar
449,976
Son üye
ARALSAN

Yeni konular

Geri
Üst