Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #include <stdio.h>
- SoftwareSerial loraSerial(10, 11); //RX TX
- /// Variables del programa ///
- String bandera= "";
- String str;
- String eui= "";
- #define Pecho 12
- #define Ptrig 13
- long duracion, distancia;
- int inicializacion = 0;
- // Variables modificables //
- String str2 = "03"; // Llenar con el valor de bandera seleccionado
- String decimales = "0"; // Llenar con el valor de decimales seleccionado
- String str1; //Se va a tomar de datos
- void setup() {
- Serial.println("Iniciando LoRa");
- Serial.begin(57600);
- loraSerial.begin(9600);
- loraSerial.setTimeout(100); // Revisar..
- lora_autobaud();
- loraSerial.listen();
- str = loraSerial.readStringUntil('\n');
- Serial.println(str);
- LoRa("sys get ver");
- LoRa("mac pause");
- LoRa("radio set freq 902000000");
- LoRa("radio set mod lora");
- LoRa("radio set pwr 14");
- LoRa("radio set sf sf7");
- LoRa("radio set afcbw 41.7");
- LoRa("radio set rxbw 125");
- LoRa("radio set prlen 8");
- LoRa("radio set crc on");
- LoRa("radio set iqi off");
- LoRa("radio set cr 4/5");
- LoRa("radio set sync 12");
- LoRa("radio set bw 125");
- LoRa("sys set pindig GPIO10 1");
- delay(500);
- LoRa("sys set pindig GPIO10 0");
- delay(500);
- loraSerial.println("sys get ver");
- str = loraSerial.readStringUntil('\n');
- Serial.println(str);
- pinMode(Pecho, INPUT); // define el pin 12 como entrada (echo)
- pinMode(Ptrig, OUTPUT); // define el pin 13 como salida (triger)
- }
- void loop() {
- /////////////////// Recepcion ///////////////////////////////
- while (bandera != str2){
- bandera= "";
- loraSerial.println("radio rx 0");
- str = loraSerial.readStringUntil('\n');
- Serial.println(str);
- if ( str.indexOf("ok") == 0 )
- {
- str = String("");
- while (str == "")
- {
- str = loraSerial.readStringUntil('\n');
- }
- if ( str.indexOf("radio_rx") == 0 )
- {
- toggle_led();
- Serial.println(str);
- }
- else
- {
- Serial.println("Received nothing");
- LoRa("sys set pindig GPIO10 1");
- delay(500);
- LoRa("sys set pindig GPIO10 0");
- delay(500);
- }
- }
- else
- {
- Serial.println("radio not going into receive mode");
- delay(100);
- }
- int var1 = 3;
- while (var1 > 1) {
- bandera= bandera+ str[str.length() - var1] ;
- var1--;
- }
- }
- if (inicializacion == 0){
- loraSerial.println("sys get hweui");
- str = loraSerial.readStringUntil('\n');
- int var2 = 0;
- while (var2 < str.length()-1) {
- eui = eui + str[var2] ;
- var2++;
- }
- str1 = eui;
- }
- else{
- digitalWrite(Ptrig, LOW);
- delayMicroseconds(2);
- digitalWrite(Ptrig, HIGH); // genera el pulso de triger por 10ms
- delayMicroseconds(10);
- digitalWrite(Ptrig, LOW);
- duracion = pulseIn(Pecho, HIGH);
- distancia = (duracion/2) / 29; // calcula la distancia en centimetros
- Serial.print(distancia); // envia el valor de la distancia por el puerto serial
- Serial.println("cm"); // le coloca a la distancia los centimetros "cm"
- if (distancia < 500){
- str1 = distancia;
- }
- else {
- str1 = "0";
- }
- }
- inicializacion = 1;
- ///////// Transmision ////////////
- if (bandera == str2){
- delay(100);
- loraSerial.print("radio tx ");
- loraSerial.print(str1);
- loraSerial.print(bandera);
- loraSerial.println(decimales);
- str = loraSerial.readStringUntil('\n');
- delay(100);
- str = loraSerial.readStringUntil('\n');
- }
- eui = "";
- bandera= "";
- //str1 = "";
- }
- void lora_autobaud()
- {
- String response = "";
- while (response == "")
- {
- delay(1000);
- loraSerial.write((byte)0x00);
- loraSerial.write(0x55);
- loraSerial.println();
- loraSerial.println("sys get ver");
- response = loraSerial.readStringUntil('\n');
- }
- }
- void LoRa(String ini)
- {
- loraSerial.println(ini);
- str = loraSerial.readStringUntil('\n');
- }
- void toggle_led()
- {
- digitalWrite(13, !digitalRead(13));
- }
Add Comment
Please, Sign In to add comment