Guest User

Untitled

a guest
Aug 21st, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2. #include <stdio.h>
  3.  
  4. SoftwareSerial loraSerial(10, 11); //RX TX
  5.  
  6. /// Variables del programa ///
  7. String bandera= "";
  8. String str;
  9. String eui= "";
  10.  
  11. #define Pecho 12
  12. #define Ptrig 13
  13. long duracion, distancia;
  14.  
  15. int inicializacion = 0;
  16.  
  17. // Variables modificables //
  18. String str2 = "03"; // Llenar con el valor de bandera seleccionado
  19. String decimales = "0"; // Llenar con el valor de decimales seleccionado
  20. String str1; //Se va a tomar de datos
  21.  
  22.  
  23.  
  24. void setup() {
  25.  
  26. Serial.println("Iniciando LoRa");
  27. Serial.begin(57600);
  28. loraSerial.begin(9600);
  29. loraSerial.setTimeout(100); // Revisar..
  30. lora_autobaud();
  31.  
  32. loraSerial.listen();
  33. str = loraSerial.readStringUntil('\n');
  34. Serial.println(str);
  35.  
  36. LoRa("sys get ver");
  37. LoRa("mac pause");
  38. LoRa("radio set freq 902000000");
  39. LoRa("radio set mod lora");
  40. LoRa("radio set pwr 14");
  41. LoRa("radio set sf sf7");
  42. LoRa("radio set afcbw 41.7");
  43. LoRa("radio set rxbw 125");
  44. LoRa("radio set prlen 8");
  45. LoRa("radio set crc on");
  46. LoRa("radio set iqi off");
  47. LoRa("radio set cr 4/5");
  48. LoRa("radio set sync 12");
  49. LoRa("radio set bw 125");
  50. LoRa("sys set pindig GPIO10 1");
  51. delay(500);
  52. LoRa("sys set pindig GPIO10 0");
  53. delay(500);
  54. loraSerial.println("sys get ver");
  55. str = loraSerial.readStringUntil('\n');
  56. Serial.println(str);
  57.  
  58. pinMode(Pecho, INPUT); // define el pin 12 como entrada (echo)
  59. pinMode(Ptrig, OUTPUT); // define el pin 13 como salida (triger)
  60.  
  61. }
  62.  
  63. void loop() {
  64.  
  65. /////////////////// Recepcion ///////////////////////////////
  66. while (bandera != str2){
  67.  
  68. bandera= "";
  69. loraSerial.println("radio rx 0");
  70. str = loraSerial.readStringUntil('\n');
  71. Serial.println(str);
  72.  
  73. if ( str.indexOf("ok") == 0 )
  74. {
  75. str = String("");
  76. while (str == "")
  77. {
  78. str = loraSerial.readStringUntil('\n');
  79. }
  80. if ( str.indexOf("radio_rx") == 0 )
  81. {
  82. toggle_led();
  83. Serial.println(str);
  84. }
  85. else
  86. {
  87. Serial.println("Received nothing");
  88. LoRa("sys set pindig GPIO10 1");
  89. delay(500);
  90. LoRa("sys set pindig GPIO10 0");
  91. delay(500);
  92. }
  93. }
  94. else
  95. {
  96. Serial.println("radio not going into receive mode");
  97. delay(100);
  98. }
  99.  
  100. int var1 = 3;
  101. while (var1 > 1) {
  102. bandera= bandera+ str[str.length() - var1] ;
  103. var1--;
  104. }
  105. }
  106.  
  107. if (inicializacion == 0){
  108. loraSerial.println("sys get hweui");
  109. str = loraSerial.readStringUntil('\n');
  110. int var2 = 0;
  111. while (var2 < str.length()-1) {
  112. eui = eui + str[var2] ;
  113. var2++;
  114. }
  115. str1 = eui;
  116. }
  117. else{
  118. digitalWrite(Ptrig, LOW);
  119. delayMicroseconds(2);
  120. digitalWrite(Ptrig, HIGH); // genera el pulso de triger por 10ms
  121. delayMicroseconds(10);
  122. digitalWrite(Ptrig, LOW);
  123.  
  124. duracion = pulseIn(Pecho, HIGH);
  125. distancia = (duracion/2) / 29; // calcula la distancia en centimetros
  126.  
  127. Serial.print(distancia); // envia el valor de la distancia por el puerto serial
  128. Serial.println("cm"); // le coloca a la distancia los centimetros "cm"
  129. if (distancia < 500){
  130. str1 = distancia;
  131. }
  132. else {
  133. str1 = "0";
  134. }
  135.  
  136.  
  137. }
  138. inicializacion = 1;
  139.  
  140. ///////// Transmision ////////////
  141.  
  142. if (bandera == str2){
  143. delay(100);
  144. loraSerial.print("radio tx ");
  145. loraSerial.print(str1);
  146. loraSerial.print(bandera);
  147. loraSerial.println(decimales);
  148. str = loraSerial.readStringUntil('\n');
  149. delay(100);
  150. str = loraSerial.readStringUntil('\n');
  151. }
  152.  
  153. eui = "";
  154. bandera= "";
  155. //str1 = "";
  156.  
  157. }
  158.  
  159. void lora_autobaud()
  160. {
  161. String response = "";
  162. while (response == "")
  163. {
  164. delay(1000);
  165. loraSerial.write((byte)0x00);
  166. loraSerial.write(0x55);
  167. loraSerial.println();
  168. loraSerial.println("sys get ver");
  169. response = loraSerial.readStringUntil('\n');
  170. }
  171. }
  172. void LoRa(String ini)
  173. {
  174. loraSerial.println(ini);
  175. str = loraSerial.readStringUntil('\n');
  176. }
  177. void toggle_led()
  178. {
  179. digitalWrite(13, !digitalRead(13));
  180. }
Add Comment
Please, Sign In to add comment