Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
Pozdrav svima.Sklopio sam dva arduina i dva LoRa modula i za probu ubacio obican program da sa jednim tasterom upali led na prijemnom arduinu i sa drugim tasterom ugasi led.To sve radi ali samo 5 do 6 puta upali i ugasi led i vise ni da pipne dok ponovo neubacim programe,isto se desi i kad iskljucim oba arduina tj izvucembusb kablove i kad ih ukljucim ponovo nece da radi dok neubacim programe.Arduino je uredu i jedan i drugi,sa drugim programima radi normalno.Da li je neko imao te probleme?
To su XL1278 LoRa moduli,bas malecki sa kontaktima samo na jednoj strani.Tesko mi nesto izbacuje sliku pa ih zato opisujem,probacu neku adresu da postavim da se vide ti moduli.
Posts: 3.721
Threads: 28
Joined: Mar 2022
Reputation:
1.213
Nisu u ptanju moduli nego neka funkcija verovatno nije dobra, okaci KOD da pogledamo mozda se nesto da ispraviti
Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
Hocu kasnije kad budem pored kompjutera.Nesto citam kao da moze i napajanje sa arduina,na predajnom UNO imam 4.2V a na prijemnom NANO imam 3,5v
Neznam da li je do toga ali postavicu ovde oba programa,mozda je i do njih
Posts: 3.721
Threads: 28
Joined: Mar 2022
Reputation:
1.213
04-16-2025, 07:19 PM
(This post was last modified: 04-16-2025, 07:21 PM by savan.)
Pa ne verujem da moze da radi na 3.7V posto on ima u sebi LM1117 koji ima dropout od 1.2V, treba ti minimum 4.2V da bi taj regulator mogao da proizvede 3.3V za nano, verovatno je to problem.
Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
Evo kodava sa kojima sam probao,ovo je bilo nrsto drugo ali sam zbog probe izmenio da bude najprostije moguce.
Send:
#include <LoRa.h>
const int buttonPin1 = 7;
const int buttonPin2 = 6;
int buttonState1 = 0;
int lastButtonState1 = 0;
int buttonState2 = 0;
int lastButtonState2 = 0;
void setup() {
Serial.begin(9600);
while (!Serial);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
if (buttonState1 == LOW ) {
delay(50);
Serial.println("Taster 1 pritisnut, šaljem: LED1_ON");
LoRa.beginPacket();
LoRa.print("LED1_ON");
LoRa.endPacket();
}
if (buttonState2 == LOW ) {
delay(50);
Serial.println("Taster 2 pritisnut, šaljem: LED1_OFF");
LoRa.beginPacket();
LoRa.print("LED1_OFF");
LoRa.endPacket();
}
lastButtonState1 = buttonState1;
lastButtonState2 = buttonState2;
delay(50);
}
_____________________________________
Rec:
#include <SPI.h>
#include <LoRa.h>
const int ledPin1 = 7; // Prva LED
String inString = "";
String MyMessage = "";
void setup() {
pinMode(ledPin1, OUTPUT);
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
while (LoRa.available()) {
int inChar = LoRa.read();
inString += (char)inChar;
MyMessage = inString;
}
inString = "";
Serial.print("Primljena poruka: ");
Serial.println(MyMessage);
if (MyMessage == "LED1_ON") {
digitalWrite(ledPin1, HIGH);
}
if (MyMessage == "LED1_OFF") {
digitalWrite(ledPin1, LOW);
}
}
delay(100);
}
Posts: 3.721
Threads: 28
Joined: Mar 2022
Reputation:
1.213
04-16-2025, 09:25 PM
(This post was last modified: 04-16-2025, 09:41 PM by savan.)
Ne znam ne svidja mi se kodiranje, doduse nisam radio na arduino pa ne znam koji je to jezik na njemu, to je naka mesavina C i ne znam cega jos, ali ovo gore u rec "String inString" pa konverzija iz interval u char pa lepljenje tog char nazad u string stvrno ne znam dali to tako ide ali ne svidja mi se kodiranje verovatno zato i nisam probao arduino. Pokusao sam pomoci, verovatno ce neko dodatno da se ukljuci da prekontrolise i da ti savet! Mogu pokusati:
probaj da zamenis
int inChar = LoRa.read();
u
char inChar = LoRa.read();
jer pogresno je konvertovati interval u char, i verovatno i nije u pitanju interval u funkciji LoRa.read nego je char u pitanju, razlika je 4 puta je duzi int od char a ti citas sa LoRa.read bajt po bajt i lepis u inString, znaci mora da bude inChar da bude definisan kao char.
Edit: da evo nadjoh https://github.com/sandeepmistry/arduino...ter/API.md , funkcija lora.read je bajt, znaci moras definisati ovako kako cu ti sad predloziti i nadji napajanje i trebalo bi da proradi.
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
while (LoRa.available()) {
byte inChar = LoRa.read();
if (inChar != -1)
{
inString += (char)inChar;
MyMessage = inString;
}
}
Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
I ja mislim da nije do napajanja,neopada nesto mnogo dokbsalje,probacu to sutra nekako da skockam ponovo,i ovo sam jedva nekako,kad nije htelo da radi gledao sam da sto prostije bude radi probe.
Posts: 694
Threads: 40
Joined: Jul 2015
Reputation:
425
04-17-2025, 07:17 PM
(This post was last modified: 04-17-2025, 07:22 PM by me[R]a.)
Nema tu greske integer (int) i char. Jedino sto se malo razbcujemo sa memorijskim prostorom ali kod jednostavnih primera nemari. Oba smestaju celobrojni podatak samo sto je int 4 bajta, a char je 1bajt. U njegovom primeru ako LoRa.read() cita bajtnu vrednost, a mi je smestimo u int variablu angazovacemo 3 bajta "uzalud".
Inace arduino ako programiras u Arduino IDE koristi, na neki nacin, malo modifikovani C++ ali cist c++ je poptpuno podrzan. Mozes da imas i programske delove (blokove) u c-u.
Sve standardne C i C++ konstrukcije, koje podržava avr-g++ kompajler, trebalo bi da rade u Arduinu.
Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
Evo ovako.Ovaj program radi bez problema,bas kako treba,ubacis jednom i to je to.Probao sam sve sta mi je palo napamet ada radi sa tasterima ali nece.Ako moze pomoc da se samo ubace tasteri kao na primeru u prvoj temi,meni neide nikako a nevidim zasto.
Send:
#include <SPI.h>
#include <LoRa.h>
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) { // 433 MHz modul
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
String MyMessage = "Hello World, this is Electronic Clinic";
LoRa.beginPacket();
LoRa.print(MyMessage);
LoRa.endPacket();
Serial.println("Poslato: " + MyMessage);
delay(1000); // šalje poruku na svake 1 sekundu
}
_______________________________
Rec:
#include <SPI.h>
#include <LoRa.h>
const int ledPin = 7; // LED na pinu 7
String inString = ""; // string za dolazne karaktere
String MyMessage = ""; // cela poruka
String noo = "";
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) { // obavezno ista frekvencija kao kod sendera
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
while (LoRa.available()) {
int inChar = LoRa.read();
inString += (char)inChar;
MyMessage = inString;
}
inString = "";
Serial.print("Primljena poruka: ");
Serial.println(MyMessage);
// Ako poruka sadrži određeni tekst, blinka LED
if (MyMessage.indexOf("Hello World") >= 0) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
delay(100);
}
Posts: 694
Threads: 40
Joined: Jul 2015
Reputation:
425
Pa moras kroz serijal monitor da pratis sta se desava i ne bi bilo lose da dodas vise komandi Serial.print iza svakog programskog reda i videces kad zaglavi gde je tacno stao...
Posts: 124
Threads: 4
Joined: Aug 2016
Reputation:
65
Nisam nikad radio sa tim modulima, tako da ne znam sta je u tom LoRa.h.
Moguce su dvije stvari>
1. Pinove koje koristis za tastere ( 6 i 7) kotristi i LoRa.h za nesto
2. Ne sacekas da se zavrsi slanje prve poruke a posaljes drugu ( sad imas 50 us pauze, ali jel to dovoljno ne znam.
Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
Ovaj drugi kod nezaglavljuje nigde a sa tasterima zaglavi posle nekoliko puta.Ti pinovi su slobodni,nijedan neide za vezu sa lora modulom.
Posts: 124
Threads: 4
Joined: Aug 2016
Reputation:
65
04-18-2025, 05:56 AM
(This post was last modified: 04-18-2025, 05:58 AM by veselinovic.)
Da, vidio sam naknadno da su slobidni 6,7,8,...
Probaj staviti pauzu kad posaljes prvi karakter na slanje.
Probaj 500 ms pauze izmjedju dva obracanja LoRa modulu,
ili jos bolje sacekaj sa slanjem dok ne napravis kompletnu poruku, i onda je posalji.
Posts: 3.721
Threads: 28
Joined: Mar 2022
Reputation:
1.213
04-18-2025, 07:28 AM
(This post was last modified: 04-18-2025, 07:34 AM by savan.)
Okaci projekt folder arhiviran da pogledamo, taj sa tasterima, nije to dobro uradjeno, tu nesto u kodu nije kako treba. Napajanje za REC bi trebalo da bude minimum 4.2V jer na nano je linearni regulator za 3.3V sa dropout 1.2V i ne moze da proizvede 3.3V sa 3.7V koliko ti je to drugo napajanje, to moras da sredis prvo.
Posts: 3.721
Threads: 28
Joined: Mar 2022
Reputation:
1.213
Ubaci i tastere onako kako si pokusao, koju poruku ocekujes i koju poruku saljes da bude lakse da ti to prepravimo
Posts: 3.721
Threads: 28
Joined: Mar 2022
Reputation:
1.213
Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
Neznam kako da arhiviram projekt taj kod koji mi treba da se ispravi je u temi-poruka #5 a ovaj sto radi bez ikakvih problema je u #9
Hteo sam ono prosto,pritisnem taster na pinu 7 i ovamo ukljuci led na pinu 7 , pritisenem na pinu 6 i led se iskljuci,nista vise zasad,ako to proradi onda cu lako da dodam jos po jedan taster i diodu i to je to.
Po tome mislim sto ovaj drugi radi kako treba bez ikakvih zastoja mislim da nije do napajanja ali probacu da za oba uradim nesto stabilno po 3.3V pa ako ni tad nece...
Posts: 709
Threads: 8
Joined: Mar 2013
Reputation:
239
Када убацујеш код у поруки користи форматирање, читљибије је.
Code: post #9
Send:
#include <SPI.h>
#include <LoRa.h>
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) { // 433 MHz modul
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
String MyMessage = "Hello World, this is Electronic Clinic";
LoRa.beginPacket();
LoRa.print(MyMessage);
LoRa.endPacket();
Serial.println("Poslato: " + MyMessage);
delay(1000); // šalje poruku na svake 1 sekundu
}
_______________________________
Rec:
#include <SPI.h>
#include <LoRa.h>
const int ledPin = 7; // LED na pinu 7
String inString = ""; // string za dolazne karaktere
String MyMessage = ""; // cela poruka
String noo = "";
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) { // obavezno ista frekvencija kao kod sendera
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
while (LoRa.available()) {
int inChar = LoRa.read();
inString += (char)inChar;
MyMessage = inString;
}
inString = "";
Serial.print("Primljena poruka: ");
Serial.println(MyMessage);
// Ako poruka sadrži određeni tekst, blinka LED
if (MyMessage.indexOf("Hello World") >= 0) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
delay(100);
}
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
塞爾維亞文
Posts: 3.721
Threads: 28
Joined: Mar 2022
Reputation:
1.213
04-18-2025, 10:30 AM
(This post was last modified: 04-18-2025, 10:32 AM by savan.)
Probaj ovako
send:
PHP Code: #include <LoRa.h>
const int buttonPin1 = 7; const int buttonPin2 = 6;
int buttonState1 = 0; int lastButtonState1 = 0;
int buttonState2 = 0; int lastButtonState2 = 0;
void setup() { Serial.begin(9600); while (!Serial);
pinMode(buttonPin1, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) { Serial.println("Starting LoRa failed!"); while (1); }
delay(500); }
void loop() { buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2);
if (buttonState1 == LOW ) { Serial.println("Taster 1 pritisnut, šaljem: LED1_ON"); LoRa.beginPacket(); LoRa.print("LED1_ON"); LoRa.endPacket(); delay(500); }
if (buttonState2 == LOW ) { Serial.println("Taster 2 pritisnut, šaljem: LED1_OFF"); LoRa.beginPacket(); LoRa.print("LED1_OFF"); LoRa.endPacket(); delay(500); }
lastButtonState1 = buttonState1; lastButtonState2 = buttonState2;
delay(500); }
receive:
PHP Code: #include <SPI.h> #include <LoRa.h>
const int ledPin1 = 7; // Prva LED
String MyMessage = "";
String LEDON = "LED1_ON"; String LEDOFF = "LED1_OFF";
void setup() { pinMode(ledPin1, OUTPUT);
Serial.begin(9600); while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) { Serial.println("Starting LoRa failed!"); while (1); } }
void loop() { int packetSize = LoRa.parsePacket();
if (packetSize) { while (LoRa.available()) { MyMessage += (char)LoRa.read();; }
Serial.print("Primljena poruka: "); Serial.println(MyMessage);
if (MyMessage.equals(LEDON)) { digitalWrite(ledPin1, HIGH); }
if (MyMessage.equals(LEDOFF)) { digitalWrite(ledPin1, LOW); }
MyMessage = ""; }
delay(100); }
Posts: 415
Threads: 55
Joined: May 2014
Reputation:
32
Evo sta se dogadja.Zadnja 4 sata eksperimentisem.Ovaj u #5 je mnogo nepouzdan dok ovaj sto je saven postavio radi odlicno ali desi se da se ukoci,ostane na pr ukljucena led nekoliko minuta i posle nece da se iskljuci ili obrnoto i kad u arduino ide za receive ukljucim serial monitor tad se razblokira i radi normalno,znaci ubacim programe u oba arduina,palim gasim i radi,ostavim malo da svetli led i posle negasi dok neukljucim serial monitor i onda krene.Koliko se ja mogu da primetim savenov kod je odlican a sad...neznam...mozda i ovaj moj arduino nano nije kako treba,uglavnom to se dogadja da kad se ukljuci serial motir tad se razblokira.Meni netreba serial monitor jer to nesto sto hocu radilo bi mi na adapter od 5V bez kompjutera.
|