Hocam merhaba biz alıcı verici projesi yapıyoruz. Projemiz çalışıyordu ama bir anda recieverda veri alamamaya başladık. Devreyi defalarca baştan kurduk. Alıcı ve vericideki lora modüllerini birbiri arasında değiştirdik,verici tarafı datayı gönderiyor ama alıcı kısmındayken datayı alamaz olduk. loralarda sıkıntı yok gibi. “if (e32ttl.available() > 1){ ” kodda bu bloğa giremez oldu maalesef. Sıkıntının nerede olduğunu anlayamadık. Yardımcı olabilir misiniz ? Lora ayarlamarını usb stick ile değil arduino ile yapmıştık oradan kaynaklıda bişey olabilir mi?
bazı kodda düzenlemeler gerekli
software serial tanımlayıp sonra bir daha tanımlama yerine pointer yapın. örneklerimiz inceleyin
struct yapısında kullandığınız byte değişkenlerine bir hafıza sınırı ekleyein. yine örnekleri inceleyin.
while
(!Serial)
komutu leonarda da gerekli uno da sistemin çalışmasını durdurur.
diğer board nodemcu ya benziyor sanırım onda direk software serail kullanılmıyor. https://github.com/plerup/espsoftwareserial
ve daha fazlası hocam önce basit bir örnek üzerine denemeyapıp sonra mqtt ye geçseniz bence daha sağlıklı.
hocam merhabalar,
dediklerinizi yaptım en basite inip direk kütüphanedeki kodlar ile denedim ama olmadı.Galiba cihazlar yandı. cihazların yanıp yanmadığından nasıl emin olabilirim?
cihazın sağlamlık testi en basitinden usb stick ile parametre değerlerini alıp almamasıyla anlaşılır.
Hocam Arduino ile paremetre değerlerini alabiliyoruz ve daha önce ayarladığımız şekilde geliyor parametreler. Bütcemiz kısıtlı USB stick alamadık Arduino ile parametreleri almamız doğru çalıştığını gösterir mi? Birde cihazın biri 5v verince hafif ısınma yapıyor öbüründe olmuyor. Herşey çalışırken bi anda olmaması artık sadece cihazın yandığını düşündürüyor.
Hocam gerilim bölücü kullanmıyoruz. Bi iki soru cevapta gerilim bölücü gördüm onun gerekliliği nedir?
lora modülünde gnd ve vcc arası kapasitör ölçümü yapar mısınız? kaç farad.
“transmitter”
#include "LoRa_E32.h" #include "Arduino.h" #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); LoRa_E32 e32ttl(2, 3); void setup() { pinMode(7,INPUT); Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB } delay(100); e32ttl.begin(); } struct Message { byte gas; byte flame; }; int i =0; void loop() { delay(2500); i++; byte gasValue = analogRead(A0); byte flameValue = digitalRead(7); Message box ; box.gas=gasValue; box.flame=flameValue; Serial.println(box.flame); Serial.println(box.gas); //Serial.println(box.device); ResponseStatus rs = e32ttl.sendFixedMessage(0,3,4,&box, sizeof(Message)); Serial.println(rs.getResponseDescription()); }
“Reciever”
#include "Arduino.h" #include "LoRa_E32.h" #include <SoftwareSerial.h> #include "UbidotsESPMQTT.h" SoftwareSerial mySerial(D6, D7); LoRa_E32 e32ttl(D6, D7); /**************************************** * Define Constants ****************************************/ #define TOKEN "*gizli*" // Your Ubidots TOKEN #define WIFINAME "yunusemre" // Your SSID #define WIFIPASS "yunusemre" // Your Wifi Pass Ubidots client(TOKEN); void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } void setup() { //-----------Haberleşme ve Bağlantılar-------------------- pinMode(D4,INPUT); // alev sensörü Serial.begin(9600); client.setDebug(true); // Pass a true or false bool value to activate debug messages client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); while (!Serial) { ; // wait for serial port to connect. Needed for native USB } delay(100); e32ttl.begin(); Serial.println(); Serial.println("Start listening!"); } struct Message { byte device; byte gas; byte flame; }; void loop() { if (e32ttl.available() > 1){ ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Message)); struct Message box = *(Message*) rsc.data; rsc.close(); Serial.println("Flame"); Serial.println(box.flame); Serial.println("Gas"); Serial.println(box.gas); // Serial.println("Device"); //Serial.println(box.device); // reciever için ateş ve gaz sensörü int gasValue_rec = analogRead(A0); int flameValue_rec = 1; //int flameValue_rec = digitalRead(D4); // KARAR MEKANİZMASI int alarm_t = 0; int alarm_r = 0; if(box.flame == 0 || box.gas >= 350){ // transmitter tarafında yangını kontrol ediyoruz. alarm_t = 1; } if(gasValue_rec >= 350 || flameValue_rec == 0){// reciever tarafında yangını kontrol ediyoruz. alarm_r = 1; } if (!client.connected()) { client.reconnect(); } //transmitter'ı ubidots'a yükleme client.add("flame_t", box.flame); // Insert your variable Labels and the value to be sent client.add("gas_t", box.gas); client.add("alarm_t", alarm_t); client.ubidotsPublish("transmiter"); // reciever'ı ubidots'a yükleme client.add("flame_r", flameValue_rec); // Insert your variable Labels and the value to be sent client.add("gas_r", gasValue_rec); client.add("alarm_r", alarm_r); client.ubidotsPublish("reciever"); client.loop(); delay(1000); } }
hocam devre şemasını ve kullandığınız kodu ekler misiniz. devrenin bir kaç fotoğrafını ekleyin bakayım
Hocam sistem bu şekilde çalışıyordu sonradan dediğim if satırına girmez oldu. Software serial ı sonradan eklemiştik herşeyi deniyorduk o öyle kalmış. Diğer dediklerinizi hafta içi deneyip dönüş atacağım. İlginiz için teşekkür ederim. Hocam en basite inip sadece loraları haberleştirmeye çalıştığımda da olmamıştı direk kütüphanedeki kodları kullanarak denemiştim.o yüzden loralar yandı mı diye düşündüm sonra ayar moduna alıp getconfig le denetledim asreslemeler felan önceki ayarladığım gibi geldi. Garip bi çıkmaza girdim.herşey çalışırken bi anda en basiti bile çalışmaz oldu.