/* Приёмник LORA с LCD монитором * Вывод информации на LCD дисплей * Передача позывного при инициализации * Звуковое оповещение (Sos) о вскрытии объекта * by RA3TOX - 01.02.2020 * http://rfanat.ru * The circuit LCD: * LCD RS pin to digital pin 7 * LCD Enable pin to digital pin 8 * LCD D4 pin to digital pin 3 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 5 * LCD D7 pin to digital pin 6 */ #include #include #include LiquidCrystal lcd(7, 8, 3, 4, 5, 6); // инициализация библиотеки и определение выводов (RS, E, D4, D5, D6, D7) void setup() { Serial.begin(9600); while (!Serial); lcd.begin(16, 2); // установка количества символоа (16) и строк (2) на LCD Serial.println("LoRa_Receiver...by RA3TOX"); pinMode(14, OUTPUT); // Инициализируем пин A0 в режиме выхода (пищалка) lcd.print("LoRa Receiver"); // Вывод приветствия на LCD lcd.setCursor(0, 1); lcd.print("by RA3TOX 2020"); if (!LoRa.begin(868E6)) { // Запуск KoRa на частоте 868 МГц Serial.println("Starting LoRa failed!"); while (1); } Call(); } void loop() { // try to parse packet int packetSize = LoRa.parsePacket(); if (packetSize) { // приём пакетов lcd.clear(); // очистка дисплея lcd.setCursor(0, 0); // Установка курсора на первый знак первой строки // считываем пакет: while (LoRa.available()) { String LoRaData = LoRa.readString(); // Ищем подстроку Alarm if (LoRaData.substring(0,5) == "Alarm") { lcd.print("SOS"); Sos(); // если вскрытие - бъем тревогу! } else { lcd.print(LoRaData); // Вывод содержимое пакета на LCD } Serial.print("' with RSSI "); // print RSSI of packet lcd.setCursor(0, 1); // Установка курсора на первый знак второй строки lcd.print("RSSI "); Serial.println(LoRa.packetRssi()); lcd.print(LoRa.packetRssi()); // Вывод уровня сигнала RSSI на LCD lcd.print("dBm "); Serial.println(LoRa.packetSnr()); lcd.print(LoRa.packetSnr()); // Вывод SNR // включаем пищалку на 100 мс digitalWrite(14, HIGH); delay(100); digitalWrite(14, LOW); } } } void Call() { digitalWrite(14, HIGH); // передаем букву R delay(50); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(150); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(50); digitalWrite(14, LOW); } void Sos() { digitalWrite(14, HIGH); // передаем букву S delay(50); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(50); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(50); digitalWrite(14, LOW); delay(150); digitalWrite(14, HIGH); // передаем букву O delay(150); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(150); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(150); digitalWrite(14, LOW); delay(150); digitalWrite(14, HIGH); // передаем букву S delay(50); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(50); digitalWrite(14, LOW); delay(50); digitalWrite(14, HIGH); delay(50); digitalWrite(14, LOW); delay(150); }