{"id":814,"date":"2026-06-12T15:40:57","date_gmt":"2026-06-12T07:40:57","guid":{"rendered":"https:\/\/projectleon.net\/make\/blog\/diy-lora-remote-control-ugv-arduino-sx1276-joystick-farsi\/"},"modified":"2026-06-12T15:40:58","modified_gmt":"2026-06-12T07:40:58","slug":"diy-lora-remote-control-ugv-arduino-sx1276-joystick-farsi","status":"publish","type":"post","link":"https:\/\/projectleon.net\/make\/blog\/diy-lora-remote-control-ugv-arduino-sx1276-joystick-farsi\/","title":{"rendered":"\u0633\u0627\u062e\u062a \u0631\u06cc\u0645\u0648\u062a \u06a9\u0646\u062a\u0631\u0644 LoRa DIY \u0628\u0631\u0627\u06cc UGV \u0628\u0627 Arduino \u0648 SX1276 (\u0641\u0627\u0631\u0633\u06cc)"},"content":{"rendered":"<div class='hero-image-container' style='margin-bottom:28px;border-radius:14px;overflow:hidden;box-shadow:0 4px 18px rgba(0,0,0,0.08)'>\n<img src='https:\/\/projectleon.net\/make\/wp-content\/uploads\/2026\/06\/post164-lora-diy-remote-controller.jpg' alt='\u062f\u0633\u062a\u0647 \u06a9\u0646\u062a\u0631\u0644 LoRa DIY \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 SX1276' style='width:100%;height:auto;display:block' loading='eager'\/>\n<\/div>\n<div class='beginner-intro' style='background:#f0f7ff;border-right:4px solid #2e5fb6;padding:16px 20px;border-radius:10px;margin-bottom:22px'>\n<h2 style='margin-top:0'>\u0686\u0631\u0627 \u0631\u06cc\u0645\u0648\u062a \u06a9\u0646\u062a\u0631\u0644 LoRa DIY\u061f<\/h2>\n<p>\u0631\u06cc\u0645\u0648\u062a \u06a9\u0646\u062a\u0631\u0644\u200c\u0647\u0627\u06cc RC \u0645\u0639\u0645\u0648\u0644\u06cc (\u06f2.\u06f4GHz) \u0628\u0631\u062f \u06f5\u06f0\u06f0m \u062f\u0627\u0631\u0646\u062f. LoRa \u0628\u0627 \u0647\u0645\u0627\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0645\u0627\u0698\u0648\u0644 \u06f2\u2013\u06f5km \u0628\u0631\u062f \u0645\u06cc\u200c\u062f\u0647\u062f. \u0636\u0645\u0646\u0627\u064b \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc LCD \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc \u06a9\u0647 RSSI\u060c \u0648\u0644\u062a\u0627\u0698 \u0628\u0627\u062a\u0631\u06cc UGV\u060c \u0645\u0648\u0642\u0639\u06cc\u062a GPS \u0648 \u0647\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u062e\u0648\u0627\u0647\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u062f \u2014 \u06cc\u06a9 GCS \u062f\u0633\u062a\u06cc \u0648\u0627\u0642\u0639\u06cc.<\/p>\n<\/div>\n<div style='background:#fff8e1;border:1px solid #ffd54f;border-radius:10px;padding:16px;margin-bottom:22px'>\n<h3 style='margin-top:0'>&#x1f6e0;&#xfe0f; \u06a9\u0627\u0631\u062a \u067e\u0631\u0648\u0698\u0647<\/h3>\n<table style='width:100%;border-collapse:collapse'>\n<tr>\n<td style='padding:6px;font-weight:bold;width:40%'>BOM<\/td>\n<td style='padding:6px'>Arduino Nano + Ra-02 + \u06f2\u00d7 Joystick + LCD 16\u00d72 I2C + \u0628\u0627\u062a\u0631\u06cc 18650<\/td>\n<\/tr>\n<tr style='background:#fffde7'>\n<td style='padding:6px;font-weight:bold'>\u0642\u06cc\u0645\u062a<\/td>\n<td style='padding:6px'>~\u06f3\u06f5\u06f0K \u062a\u0648\u0645\u0627\u0646<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<h2>\u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0633\u062a\u0647 \u062f\u0627\u062f\u0647 LoRa<\/h2>\n<pre style='background:#1e1e1e;color:#d4d4d4;padding:14px;border-radius:8px;font-size:12px;margin-bottom:18px'><code>\/\/ \u0641\u0631\u0645\u062a \u0628\u0633\u062a\u0647: [Header 0xAA][Throttle int8][Steering int8][Buttons byte][Checksum]\nstruct CtrlPacket {\n  uint8_t header   = 0xAA;\n  int8_t  throttle;  \/\/ -100 \u062a\u0627 +100\n  int8_t  steering;  \/\/ -100 \u062a\u0627 +100\n  uint8_t buttons;   \/\/ bitmask: bit0=Horn, bit1=Lights\n  uint8_t checksum;\n};\n\nvoid sendPacket(int thr, int str, byte btns){\n  CtrlPacket pkt;\n  pkt.throttle = constrain(thr,-100,100);\n  pkt.steering = constrain(str,-100,100);\n  pkt.buttons  = btns;\n  pkt.checksum = pkt.throttle ^ pkt.steering ^ pkt.buttons;\n\n  LoRa.beginPacket();\n  LoRa.write((uint8_t*)&pkt, sizeof(pkt));\n  LoRa.endPacket();\n}<\/code><\/pre>\n<h2>\u06a9\u062f \u06a9\u0627\u0645\u0644 \u0641\u0631\u0633\u062a\u0646\u062f\u0647<\/h2>\n<pre style='background:#1e1e1e;color:#d4d4d4;padding:14px;border-radius:8px;font-size:12px;margin-bottom:18px'><code>#include &lt;SPI.h&gt;, &lt;LoRa.h&gt;, &lt;LiquidCrystal_I2C.h&gt;\nLiquidCrystal_I2C lcd(0x27,16,2);\n\n#define JOY_THR A0\n#define JOY_STR A1\n#define BTN_A   7\n\nvoid setup(){\n  lcd.begin(); lcd.backlight();\n  LoRa.begin(433E6);\n  LoRa.setSpreadingFactor(7);\n}\n\nvoid loop(){\n  int thr = map(analogRead(JOY_THR),0,1023,-100,100);\n  int str = map(analogRead(JOY_STR),0,1023,-100,100);\n  byte btns = digitalRead(BTN_A)==LOW ? 0x01 : 0x00;\n\n  sendPacket(thr, str, btns);\n\n  \/\/ \u0646\u0645\u0627\u06cc\u0634 \u0631\u0648\u06cc LCD\n  lcd.setCursor(0,0); lcd.print(\"T:\"); lcd.print(thr);\n  lcd.print(\" S:\"); lcd.print(str); lcd.print(\"   \");\n  lcd.setCursor(0,1); lcd.print(\"RSSI:\");\n  lcd.print(LoRa.packetRssi()); lcd.print(\"dBm   \");\n\n  delay(50);\n}<\/code><\/pre>\n<p><svg viewBox='0 0 860 160' width='100%' xmlns='http:\/\/www.w3.org\/2000\/svg' style='background:#fff;border:1px solid #ddd;border-radius:12px;margin-bottom:18px'>\n<text x='430' y='18' text-anchor='middle' font-size='12' font-family='Tahoma' fill='#333'>\u062f\u06cc\u0627\u06af\u0631\u0627\u0645 \u0627\u062a\u0635\u0627\u0644 \u062f\u0633\u062a\u0647 \u06a9\u0646\u062a\u0631\u0644 LoRa DIY<\/text>\n<rect x='300' y='35' width='260' height='110' rx='8' fill='#e3f2fd' stroke='#1565c0' stroke-width='2'\/>\n<text x='430' y='60' text-anchor='middle' font-size='11' font-family='Tahoma' fill='#0d47a1'>Arduino Nano<\/text>\n<text x='430' y='78' text-anchor='middle' font-size='9' font-family='Tahoma' fill='#333'>A0=Throttle Joystick<\/text>\n<text x='430' y='93' text-anchor='middle' font-size='9' font-family='Tahoma' fill='#333'>A1=Steering Joystick<\/text>\n<text x='430' y='108' text-anchor='middle' font-size='9' font-family='Tahoma' fill='#333'>SPI D10-13 \u2192 Ra-02<\/text>\n<text x='430' y='123' text-anchor='middle' font-size='9' font-family='Tahoma' fill='#333'>I2C A4\/A5 \u2192 LCD<\/text>\n<rect x='30' y='55' width='120' height='50' rx='4' fill='#fff8e1' stroke='#f57f17' stroke-width='1.5'\/>\n<text x='90' y='82' text-anchor='middle' font-size='10' font-family='Tahoma' fill='#e65100'>Joystick \u00d7\u06f2<\/text>\n<line x1='150' y1='80' x2='300' y2='85' stroke='#f57f17' stroke-width='1.5'\/>\n<rect x='640' y='35' width='120' height='50' rx='4' fill='#f3e5f5' stroke='#7b1fa2' stroke-width='1.5'\/>\n<text x='700' y='58' text-anchor='middle' font-size='10' font-family='Tahoma' fill='#4a148c'>Ra-02 LoRa<\/text>\n<text x='700' y='74' text-anchor='middle' font-size='9' font-family='Tahoma' fill='#4a148c'>433MHz SPI<\/text>\n<line x1='560' y1='65' x2='640' y2='60' stroke='#9c27b0' stroke-width='1.5'\/>\n<rect x='640' y='100' width='120' height='40' rx='4' fill='#e8f5e9' stroke='#2e7d32' stroke-width='1.5'\/>\n<text x='700' y='122' text-anchor='middle' font-size='10' font-family='Tahoma' fill='#1b5e20'>LCD 16\u00d72 I2C<\/text>\n<line x1='560' y1='115' x2='640' y2='120' stroke='#4caf50' stroke-width='1.5'\/>\n<\/svg><\/p>\n<div style='display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin:20px 0'>\n<iframe width='100%' height='280' src='https:\/\/www.youtube.com\/embed\/YLOj1GqGjGE' title='DIY LoRa Remote Control Arduino' frameborder='0' allowfullscreen><\/iframe><br \/>\n<iframe width='100%' height='280' src='https:\/\/www.youtube.com\/embed\/gUTfCnEuqLM' title='LoRa Two Way Communication Arduino' frameborder='0' allowfullscreen><\/iframe>\n<\/div>\n<ul>\n<li><a href='https:\/\/github.com\/sandeepmistry\/arduino-LoRa' target='_blank'>arduino-LoRa Library<\/a><\/li>\n<li><a href='https:\/\/www.aparat.com\/result\/%D8%B1%DB%8C%D9%85%D9%88%D8%AA+%DA%A9%D9%86%D8%AA%D8%B1%D9%84+LoRa' target='_blank'>\u0622\u067e\u0627\u0631\u0627\u062a: \u0631\u06cc\u0645\u0648\u062a LoRa DIY<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u0633\u0627\u062e\u062a \u062f\u0633\u062a\u0647 \u06a9\u0646\u062a\u0631\u0644 LoRa DIY \u0628\u0627 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 Nano\u060c \u062f\u0648 \u062c\u0648\u06cc\u200c\u0627\u0633\u062a\u06cc\u06a9\u060c LCD 16\u00d72 \u0648 \u0645\u0627\u0698\u0648\u0644 SX1276: \u0646\u0645\u0627\u06cc\u0634 RSSI \u0648 \u0628\u0627\u062a\u0631\u06cc\u060c \u067e\u0631\u0648\u062a\u06a9\u0644 \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u062f\u0633\u062a\u0648\u0631\u060c \u0648 \u062c\u0639\u0628\u0647 \u067e\u0631\u06cc\u0646\u062a\u200c\u0634\u062f\u0647 \u0627\u0631\u06af\u0648\u0646\u0648\u0645\u06cc\u06a9.<\/p>\n","protected":false},"author":1,"featured_media":813,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[19,16],"tags":[173,606,89,366,48,21,608,607],"class_list":["post-814","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials-2","category-ugv","tag-lcd","tag-lora-remote","tag-rc","tag-sx1276","tag-ugv","tag-arduino","tag-608","tag---diy"],"_links":{"self":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts\/814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/comments?post=814"}],"version-history":[{"count":1,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts\/814\/revisions"}],"predecessor-version":[{"id":815,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts\/814\/revisions\/815"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/media\/813"}],"wp:attachment":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/media?parent=814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/categories?post=814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/tags?post=814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}