ผมไม่ค่อยมีความรู้ด้าน เกี่ยวกับ lora มากเท่าไหร่ช่วย หน่อยครับผม ถ้าผมจะเอา เซนเซอร์วัดความชื้นในดิน 2 ตัวแล้วให้ lora มันส่งข้อมูลมา ตัวรับตัวเดียวจะเขียนโค้ดยังไงดีครับ ขอบพระคุณมากครับ
โค้ดตัวส่งครับ
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <SPI.h>
#include <LoRa.h>
#define nss 5
#define rst 14
#define dio0 2
char auth[] = "OTMEH_iApo_gyWGD4Wu6wkY3exzZFT65"; // Token App Blynk
char ssid[] = "Tanarak3 floor-2"; // ชื่อ Wi-Fi
char pass[] = "0801736767"; // รหัส Wi-Fi
const int SOILSENSOR = 36; //GPIO15 (ADC2_CH3) //Soil sensor
int sensorValue = 0;
void moisture() {
int Value = analogRead(SOILSENSOR);
Value = map(Value, 0, 4095, 100, 0);
Blynk.virtualWrite(V0, Value);
Serial.println(Value);
}
void setup() {
Serial.begin(115200);
pinMode(SOILSENSOR, INPUT);
Blynk.begin(auth, ssid, pass);
Serial.println("LoRa Sender");
LoRa.setPins(nss, rst, dio0);
if (!LoRa.begin(433E6))
{
Serial.println("Starting LoRa failed!");
while (1)
;
}
}
void loop() {
Blynk.run();
sensorValue = analogRead(SOILSENSOR);
Serial.print("sensorValue = ");
Serial.println(sensorValue);
int PercentValue = map(sensorValue, 0, 4095,100, 0);
Serial.print("Soil Moisture = ");
Serial.print(PercentValue);
Serial.print("% : Soil value = ");
moisture(); //ใช้งานการอ่านเซนเซอร์ แล้วส่งค่าไปที่ blynk
// send packet
LoRa.beginPacket();
LoRa.print("Soil Moisture = ");
LoRa.print(PercentValue);
LoRa.print("% : Soil value = ");
// LoRa.println(value);
LoRa.endPacket();
delay(1000);
}
โค้ดตัวรับครับ
#include <SPI.h>
#include <LoRa.h>
#define nss 5
#define rst 14
#define dio0 2
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("LoRa Receiver Callback");
LoRa.setPins(nss, rst, dio0);
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
// register the receive callback
LoRa.onReceive(onReceive);
// put the radio into receive mode
LoRa.receive();
}
void loop() {
// do nothing
}
void onReceive(int packetSize) {
// received a packet
Serial.print("Received packet '");
// read packet
for (int i = 0; i < packetSize; i++) {
Serial.print((char)LoRa.read());
}
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
}
แล้วตอนนี้ทดสอบมันรับส่งกันได้รึยังครับ
ตอนนี้มันรับส่งกันได้แล้วครับ แต่เป็นเซนเซอร์ แค่ตัวเดียวครับ ผมอยากเพิ่มอีกตัวครับผม
1 Likes
ก็ลองเพิ่มดูครับ ผมอยากรูว่า ระยะส่งสูงสุดที่ค่า ไม่เพี้ยน คือกี่เมตร ถ้าเทสได้ลองเทสให้หน่อยนะครับ
ใช้ตัวไหนครับ
ได้ครับผม เดะผมลองแล้วจะมาแจ้งผลครับ
1 Likes
เป็นไงบ้างครับ กระทู้นี้ อัพเดทกันหน่อยย