</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›آموزش›ساخت ایستگاه هواشناسی LoRa با ESP32: ارسال داده محیطی به صورت بی‌سیم (فارسی)
آموزش

ساخت ایستگاه هواشناسی LoRa با ESP32: ارسال داده محیطی به صورت بی‌سیم (فارسی)

​ ژوئن 10, 2026 2 دقیقه مطالعه
ایستگاه هواشناسی LoRa ESP32

ایستگاه هواشناسی LoRa یعنی چه؟ (برای مبتدی)

تصور کنید یک سنسور دما و رطوبت در مزرعه، روی پشت‌بام یا در یک منطقه دور نصب کرده‌اید و می‌خواهید داده‌ها را بدون اینترنت و بدون سیم‌کارت دریافت کنید. این دقیقاً کاری است که یک ایستگاه هواشناسی LoRa انجام می‌دهد. ESP32 یک میکروکنترلر قدرتمند با WiFi/BT داخلی است که در این پروژه برای پردازش داده‌های حسگر استفاده می‌شود.

DHT22 یک سنسور دیجیتال دقیق است که دما را با دقت ±0.5°C و رطوبت نسبی را با دقت ±2٪ اندازه می‌گیرد — مناسب‌تر از DHT11 برای کاربردهای جدی. BMP280 یک سنسور فشار هوا (Barometer) است که ارتفاع را نیز محاسبه می‌کند. با ارسال این داده‌ها از طریق LoRa، گیرنده در خانه روی یک نمایشگر همه چیز را نشان می‌دهد.

محصولی که می‌سازید

دو دستگاه: یک فرستنده (مقیم در محل اندازه‌گیری) و یک گیرنده با نمایشگر OLED که داده را نشان می‌دهد — تا ۵ کیلومتر از هم.

  • زمان ساخت: ۳ تا ۴ ساعت
  • هزینه: ۱ تا ۱.۵ میلیون تومان (برای دو دستگاه)
  • برد: ۱-۵ کیلومتر فضای باز

فرستنده (مزرعه) ESP32 + LoRa DHT22 دما/رطوبت BMP280 فشار Solar Panel اختیاری گیرنده (خانه) ESP32 + LoRa OLED 0.96″ نمایش دما/رطوبت LoRa 868MHz تا ۵ کیلومتر فرستنده هر ۳۰ ثانیه یک بار داده می‌فرستد — گیرنده نمایش می‌دهد

قطعات لازم (BOM)

قطعه تعداد نقش
TTGO LoRa32 V2.1 یا ESP32 + Ra-02 ۲ عدد فرستنده + گیرنده
DHT22 ۱ عدد دما و رطوبت
BMP280 ۱ عدد فشار هوا
نمایشگر OLED 0.96″ I2C ۱ عدد نمایش در گیرنده
مقاومت ۱۰k اهم ۱ عدد pull-up برای DHT22

کد فرستنده (ایستگاه)


#include <SPI.h>
#include <LoRa.h>
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_BMP280.h>

#define DHT_PIN   4
#define DHT_TYPE  DHT22
DHT dht(DHT_PIN, DHT_TYPE);
Adafruit_BMP280 bmp;

void setup() {
  Serial.begin(115200);
  dht.begin();
  bmp.begin(0x76);
  if (!LoRa.begin(868E6)) { Serial.println("LoRa failed!"); while(1); }
  LoRa.setSpreadingFactor(9);
  Serial.println("Sender ready");
}

void loop() {
  float temp = dht.readTemperature();
  float hum  = dht.readHumidity();
  float pres = bmp.readPressure() / 100.0F;

  if (!isnan(temp) && !isnan(hum)) {
    String msg = "T:" + String(temp,1) + ",H:" + String(hum,1) + ",P:" + String(pres,1);
    LoRa.beginPacket();
    LoRa.print(msg);
    LoRa.endPacket();
    Serial.println("Sent: " + msg);
  }
  delay(30000);  // هر ۳۰ ثانیه
}

کد گیرنده (نمایشگر خانه)


#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 oled(128, 64, &Wire, -1);

void setup() {
  Serial.begin(115200);
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.clearDisplay();
  oled.setTextSize(1); oled.setTextColor(WHITE);
  oled.println("Waiting for data...");
  oled.display();
  if (!LoRa.begin(868E6)) { Serial.println("LoRa failed!"); while(1); }
  LoRa.setSpreadingFactor(9);
}

void loop() {
  int pktSize = LoRa.parsePacket();
  if (pktSize) {
    String data = "";
    while (LoRa.available()) data += (char)LoRa.read();
    int rssi = LoRa.packetRssi();

    oled.clearDisplay();
    oled.setCursor(0,0); oled.setTextSize(1);
    oled.println("Weather Station");
    oled.println(data);
    oled.print("RSSI: "); oled.print(rssi); oled.println(" dBm");
    oled.display();
    Serial.println("Recv: " + data + " RSSI=" + rssi);
  }
}

چک‌لیست تست

تست نتیجه
داده DHT22 در Serial Monitor فرستنده درست است؟ دمای محیط ±۱°C
گیرنده در همان اتاق داده دریافت کرد؟ بله — OLED نمایش می‌دهد
RSSI در فاصله ۱۰۰ متر چقدر است؟ بهتر از -۱۰۰ dBm
فرستنده با باتری ۱۲ ساعت کار می‌کند؟ Deep Sleep اضافه کنید

DHT22 + BMP280 ESP32 TX LoRa 868MHz ESP32 RX دریافت داده OLED نمایش دما، رطوبت، فشار ایستگاه هواشناسی بی‌سیم — بدون اینترنت — تا ۵ کیلومتر

ویدئوهای آموزشی


منابع بیشتر

  • آپارات: LoRa ESP32 فارسی
  • Random Nerd: ESP32 LoRa Sensor
  • کتابخانه DHT Adafruit
برچسب‌ها: DHT22 ESP32 LoRa Sub-GHz آموزش گام‌به‌گام سنسور مبتدی هواشناسی
​
مطلب بعدی راهنمای کامل تنظیم ArduPilot Copter روی Pixhawk: اولین پرواز خودکار (فارسی) مطلب قبلی ساخت دستگاه بی‌سیم واکی‌تاکی DIY با SA818 و آردوینو: رادیو VHF/UHF شخصی (فارسی)
</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

یاد بگیر، بساز، به اشتراک بگذار. جامعه‌ای برای سازندگان، مهندسان و علاقه‌مندان به فناوری در ایران.

دسته‌بندی‌ها

  • پروژه‌ها
  • ربات‌های پرنده (UAV)
  • آموزش
  • ربات‌های زمینی (UGV)
  • الکترونیک
  • پهپاد و مولتی‌روتور

پیوندها

  • خانه
  • درباره ما
  • تماس
  • فید RSS

آخرین مطالب

  • خلاصه دوره ArduPilot/iNAV و گام‌های بعدی (فارسی)
  • رادیو تله‌متری در مقابل LTE/4G برای کنترل از راه دور (فارسی)
  • Ground Station روی موبایل و تبلت — QGroundControl و Solex (فارسی)
  • راه‌اندازی Ground Station با Mission Planner (فارسی)
© 2026 Make for Iran – بسازیم برای ایران. تمامی حقوق محفوظ است.
ساخته شده با ❤️ برای سازندگان ایران  |  ورود