<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات IoTDevs</title>
        <link>https://virgool.io/IoTDevs/feed</link>
        <description>توسعه دهندگان اینترنت اشیا</description>
        <language>fa</language>
        <pubDate>2026-06-16 18:18:36</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/r1xibgvioxlk/0qw5x8.jpeg</url>
            <title>IoTDevs</title>
            <link>https://virgool.io/IoTDevs</link>
        </image>

                    <item>
                <title>معرفی بروکر Emitter و نحوه راه‌اندازی آن</title>
                <link>https://virgool.io/IoTDevs/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%A8%D8%B1%D9%88%DA%A9%D8%B1-emitter-%D9%88-%D9%86%D8%AD%D9%88%D9%87-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D8%A2%D9%86-sqnwfkhhz9ny</link>
                <description>در مقاله قبلی درباره پروتکل MQTT صحبت کردیم، در این مقاله ‌می‌خواهیم به بررسی بروکر Emitter ، نحوه راه‌اندازی آن و کار با آن بپردازیم.امیتر یک پلتفرم ارسال/دریافت (publish-subscribe) مقیاس‌پذیر، مقاوم در برابر خطاست که از طریق پروتکل MQTT جهت انتقال و ذخیره سازی امن پیام استفاده می‌شود.این پروژه متن باز بوده و به زبان برنامه نوسی Go توشته شده است.Publish/Subscribe using MQTT over TCP or Websockets.Resilient, highly available and partition tolerant (AP in CAP terms).Able to handle 3+ million of messages/sec on a single broker.Supports message storage with history and message-level expiry.Provides secure channel keys with permissions and can face the internet.Automatic TLS/SSL and encrypted inter-broker communication.Built-in monitoring with Prometheus, StatsD and more.Shared subscriptions, links and private links for channels.Easy deployment with Docker and Kubernetes of production-ready clusters.امیتر برای سیستم عامل‌های لینوکس، مک و ویندوز در دسترس می‌باشد، می‌توان آن‌را بر روی بردهای امبدد با پردازنده آرم مانند رزبری پای پیاده‌سازی کرد و همچنین می‌توان آن‌را بر روی داکر توسط دستور زیر اجرا نمود:docker run -d --name emitter -p 8080:8080 --restart=unless-stopped emitter/serverبا اجرای امیتر برای اولین بار اطلاعات زیر در ترمینال نمایش داده می‌شود:[service] unable to find a license, make sure &#039;license&#039; value is set in the config file or EMITTER_LICENSE environment variable
[service] generated new license: uppD0PFIcNK6VY-7PTo7uWH8EobaOGgRAAAAAAAAAAI
[service] generated new secret key: JUoOxjoXLc4muSxXynOpTc60nWtwUI3oبه مقادیر license و secret key برای کار با امیتر نیاز داریم پس این اطلاعات را ذخیره کنید.پس اجرای امیتر یک فایل متنی با نام emitter.conf در کنار فایل اجرایی امیتر ایجاد شده که دارای مقادیر زیر می‌باشد:emitter.conf:
{
	&amp;quotlisten&amp;quot: &amp;quot:8080&amp;quot,
	&amp;quotlicense&amp;quot: &amp;quot&amp;quot,
	&amp;quotlimit&amp;quot: {},
	&amp;quottls&amp;quot: {
		&amp;quotlisten&amp;quot: &amp;quot:443&amp;quot,
		&amp;quothost&amp;quot: &amp;quot&amp;quot
	},
	&amp;quotcluster&amp;quot: {
		&amp;quotlisten&amp;quot: &amp;quot:4000&amp;quot,
		&amp;quotadvertise&amp;quot: &amp;quotexternal:4000&amp;quot
	},
	&amp;quotstorage&amp;quot: {
		&amp;quotprovider&amp;quot: &amp;quotinmemory&amp;quot
	}
}مقدار listen را به ۱۸۸۳ تغییر دهید و در قسمت license مقدار ذخیره شده در مرحله قبل را کپی کرده و پس از ذخیره فایل امیتر را دوباره اجرا کنید.در این مرحله امیتر اجرا شده و ارسال و دریافت پیام را بررسی کنیم. برای این منظور نیاز به یک کلاینت MQTT داریم که از MQTT Explorer استفاده می‌کنیم که می‌توانید آن را برای سیستم‌عامل‌های مک،ویندوز و لینوکس دانلود کنید.برای ساخت Channel جدید برای ارسال و دریافت پیام ادرس http://localhost:1883/keygen را در مرورگر خود باز کنید.مقدار secret key را که در مراحل قبل ذخیره کرده بودید را وارد کنید و برای ساخت کانال یک یک نام در قسمت Target Channel وارد کنید. نام هر کانال حتما باید با اسلش (/) تمام شود.در پایان تیک گزینه Allow write (publish) to the channel را زده و بر روی Generate Key کلیک کنید.با channel name و channel key بدست امده به شکل زیر می‌تواند به صورت زیر پیام ارسال و دریافت کنید.channel_key/channel_name/U7mh-tL0Bh26gKyh0_7yEvJWuGexrOpJ/test/حال MQTT Explorer را باز کرده و مقادیر خواسته شده را وارد می‌کنیم.در قسمت advanced مقدار channel_key/channel_name/ را برای Subscribe وارد می‌کنیم.با برگشت به صفحه قبل و ذخیره اطلاعات می‌توانید با سرور MQTT متصل شوید.با Publish داده بر روی کانال تعریف شده می‌توانید همان پیام را در قسمت Subscribe دریافت کنید.در مقاله بعدی می‌خواهیم ارسال و دریافت داده با پروتکل MQTT را توسط ESP32 را بررسی کنیم. </description>
                <category>IoTDevs</category>
                <author>علیرضا عبدشاه</author>
                <pubDate>Thu, 15 Dec 2022 18:31:19 +0330</pubDate>
            </item>
                    <item>
                <title>پروتکل MQTT چیست و چگونه کار می‌کند</title>
                <link>https://virgool.io/IoTDevs/%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84-mqtt-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%DA%AF%D9%88%D9%86%D9%87-%DA%A9%D8%A7%D8%B1-%D9%85%DB%8C-%DA%A9%D9%86%D8%AF-ra1onchqpwm8</link>
                <description>در این مقاله می‌خواهیم پروتکل MQTT را معرفی و بررسی کنیم.MQTT مخفف Message Queuing Telemetry Transport می‌باشد،که یک پروتکل پیام رسانی ساده و مناسب برای ارتباط بین دستگاه های IoT است.پروتکل MQTT چیست؟ارتباط MQTT یک پروتکل پیام‌ رسانی ساده است که برای دستگاه‌های با پهنای باند کم طراحی شده است.بنابراین راه حلی مناسب برای تبادل داده بین چندین دستگاه IoT است.ارتباطات MQTT به عنوان یک سیستم انتشار و دریافت (Publish و Subscribe) کار می کند. دستگاه‌ها پیام‌هایی را درباره یک موضوع خاص(Topic) منتشر می‌کنند. همه دستگاه‌هایی که در آن تاپیک مشترک هستند پیام را دریافت می‌کنند.یکی از کاربردهای اصلی آن ارسال پیام برای کنترل خروجی ها، خواندن و انتشار داده ها از سنسورهای متصل به اینترنت است.مفاهیم اولیه MQTTدر MQTT چند مفهوم اساسی وجود دارد که باید آنها را درک کنید:Publish/SubscribeMessagesTopicsBrokerارسال و دریافت (MQTT – Publish/Subscribe)اولین مفهوم، سیستم انتشار و اشتراک است. در یک سیستم انتشار و اشتراک، یک دستگاه می تواند پیامی را در مورد یک موضوع منتشر کند، یا می تواند برای دریافت پیام در یک موضوع خاص مشترک شود.به عنوان مثال دستگاه 1 در مورد یک موضوع منتشر می کند.دستگاه 2 در همان موضوعی مشترک است که دستگاه 1 در آن منتشر می کند. بنابراین، دستگاه 2 پیام را دریافت می کند.پیام (MQTT – Messages)پیام ها اطلاعاتی هستند که می خواهید بین دستگاه های خود مبادله کنید. برای مثال می‌تواند پیامی مانند فرمان یا داده‌هایی مانند قرائت سنسور باشد.تاپیک (MQTT – Topics)مفهوم مهم دیگر تاپیک است.تاپیک موضوعی است که فرستنده تحت آن عنوان پیام را ارسال می‌کند و گیرنده می‌تواند با گوش دادن بر روی آن تاپیک پیام را دریافت کند. تاپیک با رشته هایی که با یک اسلش(/) رو به جلو جدا شده اند نشان داده می شوند. هر اسلش رو به جلو سطح موضوعی را نشان می دهد. در اینجا مثالی از نحوه ایجاد موضوع برای یک لامپ در دفتر خانه خود آورده شده است:توجه: تاپیک‌ها به حروف بزرگ و کوچک حساس هستند، که این دو تاپیک را متفاوت می کند:اگر می خواهید با استفاده از MQTT یک لامپ را در دفتر خانه خود روشن کنید، می توانید سناریوی زیر را دنبال کنید:دستگاه فرستنده پیام &quot;on&quot; و یا &quot;off&quot; را با تاپیک home/office/lamp ارسال می‌کند.گیرنده پیام دستگاهی است که می‌تواند یک لامپ را کنترل نماید( که میتواند بردی مانند ESP32 و یا ESP826 باشد). این دستگاه در تاپیک home/office/lamp مشترک است.بنابراین، هنگامی که یک پیام جدید در مورد آن موضوع منتشر می شود، ESP32 پیام های &quot;on&quot; یا &quot;off&quot; را دریافت می کند و لامپ را روشن یا خاموش می کند.دستگاهی که پیام‌ها را منتشر می‌کند می‌تواند یک ESP32، یک ESP8266 یا یک پلت‌فرم کنترل‌کننده Home Automation با پشتیبانی از MQTT مانند Node-RED، Home Assistant، Domoticz یا OpenHAB باشد.بروکر (MQTT – Broker)در نهایت، مفهوم مهم دیگر broker است.بروکر MQTT مسئول دریافت همه پیام‌ها، فیلتر کردن پیام‌ها، تصمیم‌گیری در مورد علاقه‌مندان به آنها و سپس انتشار پیام برای همه مشتریان مشترک است.بروکرهای زیادی برای MQTT وجود دارد که تعدادی از آن‌ها را در لیست زیر مشاهده می‌کنید.در مقاله بعدی به معرفی و بررسی نحوه عملکرد پروتکل MQTT توسط بروکر Emitter می‌پردازیم.Mosquitto Mosca emqttd EMQ X Emitter</description>
                <category>IoTDevs</category>
                <author>علیرضا عبدشاه</author>
                <pubDate>Fri, 09 Dec 2022 12:01:16 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی فریمورک سخت‌افزاری Gobot</title>
                <link>https://virgool.io/IoTDevs/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%81%D8%B1%DB%8C%D9%85%D9%88%D8%B1%DA%A9-%D8%B3%D8%AE%D8%AA-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C-gobot-ysi0b20xw6tc</link>
                <description>فریمورک سخت‌افزاری Gobot چیست؟کتابخانه Gobot یک فریمورک متن باز برای رباتیک، رایانش فیزیکی و اینترنت اشیا می باشد که به زبان Go نوشته شده است. این فریمورک بر روی ۳۵ پلتفرم سخت افزاری مانند آردوینو، رزبری پای و... اجرا می‌شود و از قطعات جانبی زیادی پشتیبانی می کند.چرا Gobot؟اجرا بر روی بیش از ۳۵ پلتفرم سخت افزاریپشتیبانی از ۵۰ قطعه جانبیسادگی در برنامه نویسیبهینه بودن کد و استفاده از منابع کم سخت افزاریسرعت اجرای بالاپشتیبانی از پروتکل های ارتباطی MQTT و NATSدارای HTTP API و JSONپلتفرم‌های سخت افزاریکتابخانه Gobot بر روی بیش از ۳۵ پلتفرم سخت افزاری اجرا می‌شود. اجرای این فریمورک بر روی سخت افزار‌های میکروپروسسوری دارای سیستم عامل لینوکس (مانند رزبری پای، بیگل بن و ...) از طریق کتاب‌خانه‌ی سطح پایین Periph،که توسط گوگل توسعه داده می‌شود انجام می‌شود.Gobot بر روی میکروکنترلر‌های سازگار با آردوینو از طریق پروتکل Firmata اجرا می‌شود.برای کسب اطلاعات بیشتر درباره کتابخانه ها و پروتکل‌های بالا به لینک‌های زیر مراجعه کنید: https://periph.io/  https://gobot.io/  http://firmata.org/wiki/Main_Page سخت افزار پشتیبانی شده توسط Gobotپشتیبانی از API کتابخانه Gobotدارای APIهای تحت وب RESTful به منظور کنترل و برسی وضعیت قطعات می باشد.این APIها به صورت پیش فرض بر روی آدرس http://localhost:3000/ در دسترس می باشد.فریمورک Gobot چگونه کار می‌کند؟اجرای برنامه توسط Gobot بر روی Host انجام می‌شود و ارتباط Host با سخت افزار از طریق پورت سریال،شبکه WiFi و بلوتوث انجام می‌شود.قبل از اجرای برنامه، نرم افزار Firmata Client باید بر روی میکروکنترلر آپلود شود.اجرای برنامه‌های Gobot بر روی برد‌های دارای سیستم عامل لینوکس به صورت مستقیم انجام می‌شود و نیازی به Firmata نیست.ساختار برنامه در Gobotسخت افزار در برنامه نوشته شده با Gobot با نام Adaptor تعریف می‌شود و Connection نوع ارتباط Host با سخت افزار را مشخص می‌کند.قطعات جانبی متصل به سخت افزار با نام Device تعریف می‌شود.برنامه ای که باید توسط سخت افزار اجرا شود در فانکشن work نوشته می شود.اجرای اولین برنامه با Gobotدر برنامه زیر LED متصل به پورت ۱۳ بورد آردوینو که از طریق پورت سریال ACM0 به Hots متصل شده است در هر ثانیه روشن و خاموش می‌شود.package main

import (
  &amp;quottime&amp;quot

  &amp;quotgobot.io/x/gobot&amp;quot
  &amp;quotgobot.io/x/gobot/drivers/gpio&amp;quot
  &amp;quotgobot.io/x/gobot/platforms/firmata&amp;quot
)

func main() {
  firmataAdaptor := firmata.NewAdaptor(&amp;quot/dev/ttyACM0&amp;quot)
  led := gpio.NewLedDriver(firmataAdaptor, &amp;quot13&amp;quot)

  work := func() {
    gobot.Every(1*time.Second, func() {
      led.Toggle()
    })
  }

  robot := gobot.NewRobot(&amp;quotbot&amp;quot,
    []gobot.Connection{firmataAdaptor},
    []gobot.Device{led},
    work,
  )

  robot.Start()
}</description>
                <category>IoTDevs</category>
                <author>علیرضا عبدشاه</author>
                <pubDate>Thu, 08 Dec 2022 10:33:16 +0330</pubDate>
            </item>
                    <item>
                <title>راهنمای شروع کار با ESP32</title>
                <link>https://virgool.io/IoTDevs/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-esp32-eq4s4nib65nr</link>
                <description>در این مقاله قصد داریم نحوه استفاده از ماژول ESP32 را با استفاده از نرم‌افزار آردوینو را توسط چند مثال عملی آموزش دهیم.میکروکنترلر ESP32 نسخه به روز شده ESP8266 می باشد. این SOC دارای دو هسته پردازشی  ‫‪Xtensa‬‬ ‫‪LX6‬‬ با فرکانس کاری ۲۴۰ مگاهرتز و توان پردازشی ‫‪DMIPS‬‬ ‫‪600‬‬ بوده و همچنین به ۵۲۰ کیلوبایت حافظه داخلی و ۴ مگابایت حافظه برنامه از نوع SPI Flash مجهز شده است.این ماژول دارای وای فای و بلوتوث داخلی بوده که برای پروژه های IoT مناسب می باشد.Key Features:240 MHz 	dual core Tensilica LX6 microcontroller with 600 DMIPSIntegrated 	520 KB SRAMIntegrated 	802.11 b/g/n HT40 Wi-Fi transceiver, baseband, stack and LwIPIntegrated 	dual mode Bluetooth (classic and BLE)16 MB 	flash, memory-mapped to the CPU code space2.3V to 	3.6V operating voltage-40°C 	to +125°C operating temperatureOnboard 	PCB antenna / IPEX connector for external antennaSensors:Ultra-low 	noise analog amplifierHall 	sensor10x 	capacitive touch interfaces32 kHz 	crystal oscillator34 x GPIO:3 x 	UARTs, including hardware flow control3 x SPI2 x I2S18 x 	ADC input channels2 x DAC2 x I2CPWM/timer 	input/output available on every GPIO pinOpenOCD 	debug interface with 32 kB TRAX bufferSDIO 	master/slave 50 MHzSupports 	external SPI flash up to 16 MBSD-card 	interface supportSecurity Related:WEP, 	WPA/WPA2 PSK/EnterpriseHardware 	accelerated encryption: AES/SHA2/Elliptical Curve 	Cryptography/RSA-4096Performance:Supports 	sniffer, Station, SoftAP and Wi-Fi direct modeMax 	data rate of 150 Mbps@11n HT40, 72 Mbps@11n HT20, 54 Mbps@11g, and 	11 Mbps@11bMaximum 	transmit power of 19.5 dBm@11b, 16.5 dBm@11g, 15.5 dBm@11nMinimum 	receiver sensitivity of -97 dBm135 	Mbps UDP sustained throughput5 μA 	power consumption in Deep-sleepدر جدول زیر این ماژول به ESP8266 مقایسه شده است:نصب پلاگین ESP32 برای آردوینونرم‌افزارآردوینو به صورت پیشفرض از ESP32 پشتیبانی نمی‌کند از این رو باید افزونه آن را به صورت مجرا به آن اضافه نمود. برای این منظور ابتدا از مسیر File&gt; Preferences پنجره preferences را باز نمایید.آدرس زیر را در قسمت مشخص شده کپی کرده و سپس بر روی کلید OK کلیک نمایید. https://dl.espressif.com/dl/package_esp32_index.json در مرحله بعد از مسیر Tools &gt; Board &gt; Boards Manager پبجره Boards Manager را باز کنید و در قسمت مشخص شده عبارت ESP32  را وارد کرده و بر روی گزینه Install کلیک کنید. زمان نصب با توجهبه سرعت اینترنت ممکن است طولانی شود.پس از به پایان رسیدن مراحل نصب ماژول ESP32 به همراه مثال‌های آن به نرم‌افزار آردوینو اضافه شده و قابل استفاده می باشد.مثال ۱: Hello World! Blinking a LEDماژول ESP32 دارای ۳۴ عدد پورت با کاربرد های مختلف می‌باشد که در تصویر زیر نحوه چینش پایه‌ها نشان داده شده است.int LED = 2;
void setup() 
{
  pinMode(LED, OUTPUT);
}
void loop() 
{
  digitalWrite(LED, HIGH);   // turn the LED on 
  delay(1000);                       // wait for a second
  digitalWrite(LED, LOW);    // turn the LED off 
  delay(1000);                       // wait for a second
}در این مثال پورت ۲ توسط تابع pinMode به عنوان خروجی تعریف شده و وضعیت آن در هر ثانیه توسط تابع DigitalWrite تغییر می کند.خواند مقدار ورودی از پورت از طریق تابع DigitalRead انجام می شود.مثال ۲: The Touch Sensorمیکروکنترلر ESP32 دارای ۱۰ کانال ورودی تاچ خازنی می‌باشد که می‌توان از آن‌ها به عنوان کلید لمسی استفاده نمود.ورودی های لمسی به پورت های زیر متصل هستند.T0: 	GPIO 4T1: 	GPIO 0T2: 	GPIO 2T3: 	GPIO 15T4: 	GPIO 13T5: 	GPIO 12T6: 	GPIO 14T7: 	GPIO 27T8: 	GPIO 33T9: 	GPIO 32برای خواند مقدار سنسور لمسی از تابع touchRead به صورت زیر استفاده می شود.int value = touchRead(4);در مثال بعدی وضعیت وضعیت LED متصل به پین ۲ توسط ورودی لمسی T0 کنترلر می شود.#define TOUTCH_PIN T0 // ESP32 Pin D4
#define LED_PIN 2
int touch_value = 100;
void setup()
{
  Serial.begin(115200);
  delay(1000); // give me time to bring up serial monitor
  Serial.println(&amp;quotESP32 Touch Test&amp;quot);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite (LED_PIN, LOW);
}
void loop()
{
  touch_value = touchRead(TOUTCH_PIN);
  Serial.println(touch_value);  // get value using T0 
  if (touch_value &lt; 50)
  {
    digitalWrite (LED_PIN, HIGH);
  }
  else
  {
    digitalWrite (LED_PIN, LOW);
  }
  delay(1000);
}مثال ۳: Analog Inputمیکروکنترلر ESP32 دارای دو واحد مبدل آنالوگ به دیجیتال ۱۲ بیتی و ۱۸ کانال مالتی پلکسر می باشد. با این مبدل می‌توان ولتاژ بین ۰ تا ۳.۳ ولت را به دیجیتال تبدیل نمود.با توجه به دقت ۱۲ بیتی ابن مبدل می‌توان حداکثر مثدار ۴۰۹۵ را اندازه‌گیری نمود. ورودی های این مبدل به پین های زیر متصل شده است.GPIO 	0 ==&gt; ADC2_CH1GPIO 	2 ==&gt; ADC2_CH2GPIO 	4 ==&gt; ADC2_CH0GPIO 	12 =&gt; ADC2_CH5GPIO 	13 =&gt; ADC2_CH4GPIO 	14 =&gt; ADC2_CH6GPIO 	15 =&gt; ADC2_CH3GPIO 	25 =&gt; ADC2_CH8GPIO 	26 =&gt; ADC2_CH9GPIO 	27 =&gt; ADC2_CH7GPIO 	32 =&gt; ADC1_CH4GPIO 	33 =&gt; ADC1_CH5GPIO 	34 =&gt; ADC1_CH6GPIO 	35 =&gt; ADC1_CH7GPIO 	36 =&gt; ADC1_CH0GPIO 	37 =&gt; ADC1_CH1GPIO 	38 =&gt; ADC1_CH2GPIO 	39 =&gt; ADC1_CH3نحوه خواند مقدار آنالوگ با تابع analogRead به صورت زیر می باشد.int analog_value = analogRead(36);در مثال زیر مقدار ورودی آنالوگ متصل به پین ۳۶ توسط مبدل خوانده شده و با نرخ ۱۱۵۲۰۰ بیت بر ثانیه به پورت سریال ارسال می شود.//Analog Input
#define ANALOG_PIN_0 36
int analog_value = 0;
void setup()
{
  Serial.begin(115200);
  delay(1000); // give me time to bring up serial monitor
  Serial.println(&amp;quotESP32 Analog IN Test&amp;quot);
}
void loop()
{
  analog_value = analogRead(ANALOG_PIN_0);
  Serial.println(analog_value);
  delay(500);
}مثال ۴: Dimming a LED: Analog Output Using PWMدر این مثال می‌خواهیم با مقدار خوانده شده توسط ADC و تولید موج PWM نور LED متصل به پین ۲ را کنترلر کنیم.//Analog Input
#define ANALOG_PIN_0 36
int analog_value = 0;
// PMW LED
#define LED_PIN 2
int freq = 5000;
int ledChannel = 0;
int resolution = 8;
int dutyCycle = 0;
void setup()
{
  Serial.begin(115200);
  delay(1000); // give me time to bring up serial monitor
  Serial.println(&amp;quotESP32 Analog IN/OUT Test&amp;quot);
  ledcSetup(ledChannel, freq, resolution);
  ledcAttachPin(LED_PIN, ledChannel);
  ledcWrite(ledChannel, dutyCycle);
}
void loop()
{
  analog_value = analogRead(ANALOG_PIN_0);
  Serial.println(analog_value);
  dutyCycle = map(analog_value, 0, 4095, 0, 255);
  ledcWrite(ledChannel, dutyCycle);
  delay(500);
}</description>
                <category>IoTDevs</category>
                <author>علیرضا عبدشاه</author>
                <pubDate>Wed, 07 Dec 2022 12:02:52 +0330</pubDate>
            </item>
                    <item>
                <title>شبکه LoRa و بررسی گیت‌وی Dragino LG01</title>
                <link>https://virgool.io/IoTDevs/%D8%B4%D8%A8%DA%A9%D9%87-lora-%D9%88-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%DA%AF%DB%8C%D8%AA-%D9%88%DB%8C-dragino-lg01-tmcvb7mstngp</link>
                <description>شبکه لورا (LoRaWAN) یکی از پروتکل‌های اصلی دوربرد توان پایین LPWAN ویژه اینترنت اشیا است. این فناوری به سیگنال‌ها اجازه می‌دهد تا حتی در سطوح پایین‌تر از نویز نیز منتشر و بازیابی شوند. تجهیزات مبتنی بر LoRaWAN می‌توانند تا سال‌ها فقط با یک باطری کار کنند. شاید مهمترین مشخصه شبکه لورا (LoRaWAN) که توانسته است در کنار مزیت‌های فنی این پروتکل زمینه رشد سریع آن را فراهم کند، رویکرد غیر انحصاری توسعه این پروتکل بر بستر یک جامعه آزاد و با مشارکت مجموعه‌های مختلف فناوری باشد.معماری فنی شبکه لورا (LoRaWAN)همان‌طور که اشاره شد، شبکه لورا (LoRaWAN) یک پروتکل ارتباطی LPWAN ویژه اینترنت اشیا در باندهای فرکانسی بدون نیاز به مجوز (ISM) است که می‌تواند محدوده وسیعی را با توان مصرفی پایین تحت پوشش قرار دهد. این فناوری توسط شرکت Semtech و جامعه‌ای از شرکت‌های بزرگ حوزه فناوری (همچون IBM, Cisco, HP, Foxconn) که LoRa Alliance نام دارد، توسعه یافته و پشتیبانی می‌شود.معماری ساختار یک شبکه لورا (LoRaWAN) همان‌طور که در شکل بالا آمده است از دستگاه‌های انتهایی مبتنی بر لورا (سنسورها و عملگرها که اصطلاحا End-Device خوانده می‌شوند)، گیت‌وی‌ها (LoRaWAN Gateways)، سرور شبکه و نهایتا اپلیکیشن و نرم‌افزار کاربر تشکیل شده است. توپولوژی شبکه لورا به صورت ستاره‌ای (Star of Stars) است. دستگاه‌های انتهایی اطلاعات را به از طریق شبکه لورا (LoRaWAN) به گیت‌وی ارسال می‌کنند. پس از دریافت داده توسط گیت‌وی، گیت‌وی اطلاعات را بر روی یک لینک ارتباطی مبتنی بر اینترنت به سمت سرور شبکه می‌فرستد. این لینک ارتباطی می‌تواند توسط شبکه LTE/3G، Ethernet و یا شبکه‌های داخلی طراحی شود. سپس اطلاعات توسط سرور شبکه در اختیار نرم‌افزار کاربران قرار می‌گیرد. در حقیقت گیت‌وی و سرور شبکه مانند یک واسطه بین نرم‌افزار کاربر و دستگاه‌های انتهایی ‌عمل می‌کند و امکان رسیدن داده به نرم‌افزار را فراهم کند. در شبکه لورا (LoRaWAN) داده‌ها به صورت کامل (End-to-End) بین دستگاه‌ها و اپلیکیشن کاربر از طریق رمزگذاری AES ارسال می‌شود. از این رو امنیت اطلاعات کاربران نیز تضمین می‌شود.فناوری LoRaWAN با بکارگیری لینک متقارن، امکان ارتباط کاملا دو سویه را فراهم می‌کند؛ این مساله به ویژه در سرویس‌های اینترنت اشیاء که نیاز به ارسال دستورهای کنترلی از سمت سرور به تجهیزات انتهایی را دارند، بسیار با اهمیت است.در LoRaWAN نرخ ارسال داده مبتنی بر پروتکل لایه فیزیکی LoRa 27 kb/s است و هر گیت‌وی می‌تواند داده‌های هزاران دستگاه انتهایی را جمع‌آوری کند. همچنین پوشش رادیویی هر گیت‌وی شبکه لورا (LoRaWAN) در مناطق باز و حومه شهر تا ۱۵ کیلومتر نیز می‌رسد.لایه فیزیکی و مدولاسیون لورا (LoRaWAN)اگرچه در بسیاری موارد شبکه LoRaWAN در کلام بطور مختصر لورا (LoRa) خوانده می‌شود، اما از نظر فنی، این دو متفاوت هستند. لورا پروتکل لایه فیزیکی یا مدولاسیون بیسیمی است که به منظور ایجاد لینک ارتباطی با ناحیه پوشش وسیع استفاده می‌شود. بسیاری از سیستم‌های پیشین به منظور رسیدن به توان پایین از مدولاسیون (FSK Frequency Shift Keying) در لایه فیزیکی بهره می‌بردند. اما لورا مبتنی بر مدولاسیون CSS (Chirp Spread Spectrum) است که علاوه بر فراهم آوردن خاصیت توان پایین مدولاسیون FSK ، ناحیه پوشش و نفوذپذیری را نیز به طور قابل توجهی افزایش می‌دهد. چندین دهه چنین مدولاسیونی به دلیل مقاوم بودن در برابر تداخل (Interference) و ناحیه پوشش وسیع، تنها در کاربردهای نظامی و ارتباطات فضایی استفاده می‌شد. اما LoRa اولین پیاده‌سازی کم هزینه و مناسب برای کاربردهای تجاری از چنین سیستمی است که در باندهای بدون نیاز به مجوز کار می‌کند.پروتکل LoRaWAN در حقیقت پروتکلی در لایه بالاتر (MAC) است که بر پایه پروتکل LoRa توسعه یافته و کار می‌کند و امکان راه‌اندازی یک شبکه کامل را فراهم می‌سازد.مدل توسعه شبکه لورا  (LoRa)از نظر مدل توسعه، شبکه لورا (LoRaWAN) در مقابل شبکه SigFox استراتژی کاملا متفاوتی را اتخاذ کرده و مشارکت در تمام قسمت‌ها باز و ممکن است. عضویت در LoRa Alliance و مشارکت در توسعه و استفاده از استانداردهای این فناوری برای همه امکان‌پذیر است. هر شرکت سخت‌افزاری می‌تواند دستگاه‌های انتهایی و گیت‌وی را مطابق با استانداردهای شبکه لورا تولید کند. حتی تولید ماژول‌های رادیویی (لایه فیزیکی) که تا دو سال پیش تنها توسط Semtech انجام می‌گرفت، با فروش license به کمپانی‌های NXP و Microchip ، از انحصار یک کمپانی خاص خارج شده است.از این رو شبکه لورا (LoRaWAN) راهبرد توسعه بسیار منعطفی را پیش گرفته که در نتیجه آن به توسعه شبکه به یک شرکت خاص وابسته نیست. همین امر رشد این پروتکل را سرعت بخشیده است و علی‌رغم شروع دیرتر نسبت به SigFox‌ هم‌اکنون در مناطق بیشتری پوشش رادیویی دارد. شبکه لورا تاکنون (سپتامبر ۲۰۱۸) در ۹۵ کشور وجود دارد و این روند توسعه در آینده سیاره‌ای هوشمند خواهد ساخت. همچنین مدل‌های متنوعی نیز از شبکه‌های کاملا خصوصی و خارج از بستر اینترنت، تا شبکه‌های عمومی با طرح‌های تجاری مختلف، بر بستر این فناوری شکل گرفته است. از سوی دیگر اکوسیستم باز شبکه لورا موجب شده است که این فناوری در بخش فنی نیز به سرعت توسعه و در این زمینه نسبت به سایر پروتکل‌ها پیشی گیرد.ساختار فریم LoRaارسال اطلاعات از دستگاه نهایی به دروازه “Uplink” و ارسال اطلاعات از دروازه به دستگاه نهایی “Downlink” نامیده می‌شود.کلاسهای مختلفی درشبکه LoRa پشتیبانی می شود که به نام های Class A,Class B, Calss C تعریف شده. در شکل نمایش داده شده فریم LoRa تشکیل شده از قسمت Uplink و Downlink .در ساختار Calss A یک فریم Uplink به همراه دو فریم Downlink دنبال می شود.پروتکل پشته LoRaهمانطور که در شکل زیر می بینید پروتکل پشته در LoRa شامل لایه کاربردی , لایه MAC, لایه PHY و لایه RF می‌باشد. اطلاعات لایه های کاربردی و MAC دستورات مورد نیاز برای اتصال بین دستگاه نهایی و دروازه را فراهم می کنند.مشخصات گیت وی Dragino LG01-PLG0101دراگینو LG01 یک گیت وی متن باز و تک کانال برای شبکه لورا می باشد. این گیت وی دارای قابلیت اتصال به اینترنت از طریق شبکه باسیم، بی سیم و شبکه سلولی را می باشد. این گیت وی قابلیت اجرای نسخه از لینوکس به نام openWRT می باشد که می توان از آن به عنوان وب سرور و پیاده سازی پروژه های IOT استفاده نمود.مشخصات فنیFeaturesOpen Source OpenWrt systemLow power consumptionFirmware upgrade via WebSoftware upgradable via networkAuto-ProvisioningBuilt-in web serverManaged by Web GUI, SSH via LAN or WiFiSupport WiFi AP, Client or Ad-Hoc(Mesh) modeInternet connection via LAN, WiFi, 3G or 4GFailsafe design provides robustly systemArduino IDE compatible. Easy to program.LoRa band available at 433/868/915/920 MhzMax range in LoRa : 5 ~ 10kmApplications:Wireless Alarm and Security SystemsHome and Building AutomationAutomated Meter ReadingIndustrial Monitoring and ControlLong range Irrigation SystemsGPS tracker,etcSpecifications:Linux Side:Processor: 400MHz, 24K MIPSFlash: 16MB ; RAM: 64MBMCU/LoRa Side:MCU: ATMega328PFlash:32KB, RAM:2KBLoRa Chip: SX2176/78Interfaces:10M/100M RJ45 Ports x 2WiFi : 802.11 b/g/nLoRa WirelessPower Input: 12V DCUSB 2.0 host connector x 1USB 2.0 host internal interface x 1Package Info:1 x LG01-S or LG01-P LoRa Gateway1 x Glue Stick Antenna(868 MHZ, 433 MHZ or 915 MHZ depends on order)1 x Power Adapter1 x Screw Terminal (For Screw Version only)Enviromental Packageبررسی ساختار گیت وی LG01پردازنده اصلی این گیت وی میکروپروسسور ATHEROS AR9331 می باشد که همراه را 64 مگابایت حافظه رم و 16 مگابایت حافظه فلش در قالب ماژول Dragino HE از آن استفاده شده است.این ماژول دارای وای فای می باشد و سیستم عامل openWRT را اجرا می کند. پردازش های اصلی گیت وی بر روی این ماژول انجام میشود.مشخصات این ماژول به شرح زیر می باشد:CPU: ATHEROS AR9331 chipset, which integrates MIPS 24Kc processor, CPU 400MHz, Switch (MAC, PHY) and integrates with MAC, RF, PA and LNA for WiFi.RAM : 64MB;Flash: 16MBInterfaces: 2 x RJ45, 1 x USB Host, 1 x UART, 14 multiplex GPIOsOS: Open Source OpenWrtPower: 3.3v power inputWiFi: Support 150M 2.4Ghz WiFi, 802.11 b/g/nFrequency range: 2.4~2.4835GHzModulation: BPSK, QPSK, CCK and OFDM (BPSK/QPSK/16-QAM/ 64-QAM)Sensitivity @PER: 135M : -65dBm@10%PER; 65M : -65dBm@10%PER; 54M : -68dBm@10%PER; 11M : -84dBm@8% PER; 6M : -88dBm@10% PER; 1M : -90dBm@8% PERTypical Distance: Indoor: 60m (max); Outdoor 150m (max) (with 2 dBi antenna)RF Power: 11n: 13dBm; 11g: 13-15dBm, 11b: 16-18dBm,Connector: I-PEX connector. Provide Optional ANT pin out for SMTاین ماژول از طریق پورت سریال به میکروکنترلر ATMEGA328P که بوت لودر آردوینو بر روی آن پروگرام شده است، متصل است. ارتباط بین این دو پردازنده از طریق پروتکل Yun Bridge انجام می شود. توسط این پروتکل می توان یک ارتباط دوطرفه بین میکروکنترلر و میکروپروسسور ایجاد نمود به صورتی که میکروکنترلر می تواند به ترمینال لینوکس و لینوکس به متغییر ها و امکانات جانبی میکروکنترلر دسترسی داشته باشد.برای دریافت اطلاعات بیشتر درباره این پروتکل می توان به لینک های زیر مراجعه نمود.https://www.arduino.cc/en/Reference/YunBridgeLibraryhttp://www.martijnschut.nl/arduino-yun-bridge-library-example-code/مودم LoRaگیت وی LG01 برای اتصال به شبکه لورا از ماژول رادیو Sx1276 ساخت شرکت Semtech استفاده می کند. این ماژول از طریق SPI به میکروکنترلر متصل شده است و وظیفه راه اندازی و کنترل آن به عهده میکروکنترلر می باشد. این ماژول قابلیت کار با فرکانس های شبکه لورا را دارا می باشد.Frequency Range: 868/915MHzModulation: FSK/GFSK/MSK/LoRaSPI Data InterfaceSensitivity: -139dBmOutput Power: +20dBmData Rate: &lt;300 kbps127dB dynamic Range RSSIExcellent blocking immunityPreamble detectionAutomatic RF sense and CAD monitorWorking Temperature: -40°C ~+80°CBuild-in temperature sensorStandby current: ≤ 1uASupply voltage: 1.8~3.6Vراه اندازی و تنظیمات اولیه گیت ویاز طریق کابل شبکه و شبکه بی سیم می توان به گیت وی متصل شد. دسترسی به صفحه تنظیمات گیت وی از طریق آی پی 10.130.1.1، نام کاربری root و کلمه عبور dragino امکان پذیر می باشد. همچنین می توان از طریق پروتکل ssh به گیت وی متصل شد.برنامه ریزی میکروکنترلر نیز از طریق شبکه و نرم افزار آردوینو انجام می شود. بسته به نوع عملکرد گیت وی می توان برنامه های متفاوت را بر روی آن پروگرام نمود.</description>
                <category>IoTDevs</category>
                <author>علیرضا عبدشاه</author>
                <pubDate>Sun, 04 Dec 2022 15:12:02 +0330</pubDate>
            </item>
                    <item>
                <title>میکروکنترلر های مناسب برای IoT</title>
                <link>https://virgool.io/IoTDevs/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1-%D9%87%D8%A7%DB%8C-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D8%A8%D8%B1%D8%A7%DB%8C-iot-nulvf7wlfgiu</link>
                <description>برای طراحی و ساخت سخت افزار اینترنت اشیا نیاز به میکروکنترلر، سنسورها ، عملگرها و ماژول اتصال به شبکه می باشد.لایه شبکه در IoT می تواند وای فای، بلوتوث ،Lora و GSM باشد. به منظور اتصال میکروکنترلر به شبکه می توان از ماژول های ارتباطی استفاده نمود. برخی از سازندگان میکروکنترلر قطعاتی در قالب SOC ساخته اند که علاوه بر میکروکنترلر داخلی ماژول هایی نظیر بلوتوث و وای فای را هم دارا می باشند. این قطعات مناسب برای کاربرد های IoT می باشند. در ادامه به معرفی برخی از این قطعات می پردازیم.Cypress Wireless MCUsشرکت Cypress سه مدل Soc مجتمع با وای فای به بازار عرضه نموده که دارای میکروکنترلر با هسته پردازی Cortex-R4 می باشد. این میکروکنترلر از پروتکل 802.11 a/b/g/n/ac پشتیبانی می کند و دارای باند فرکانسی Dual Band (2.4/5Ghz) می باشد. حداکثر فرکانس کاری این میکروکنترلر 320 مگاهرتر می باشد. این میکروکنترلر دارای حداکثر 640 کیلوبایت حافظه داخلی و 2 مگابایت حافظه برنامه می باشد.اااااین میکروکنترلر دارای مشخصاتی به شرح زیر می‌باشد: برنامه نویسی این میکرومنترلر توسط نرم افزار WICED-Studio انجام می شود همچنین ابعاد و پکیج آن 4.583 mm x 5.533 mm, 316-pin WLCSP می باشد.حداکثر جریان مصرفی در ولتاژ 3.3 ولت 450 میلی آمپر می باشد.Nordic nRF5Xیکی از پروتکل های مناسب برای استفاده در IoT بلوتوث می باشد. شرکت Nordic دارای میکروکنترلری با قابلیت اتصال به بلوتوث با هسته پردازشی Cortex-M0 با فرکانس 32 مگاهرتز می باشد. این میکروکنترلر می تواند با یک باتری سکه ای تا یک سال کار کند.کیت توسعه نرم افزاری:Keil MDK-ARMGCCIAR Embedded WorkbenchARM mbedMultiConnect® xDotTMاین ماژول دارای میکروکنترلر STM32L151CCU6 با هسته پردازشی Cortex-M3 و حداکثر فرکانس کاری 32 مگاهرتز می باشد.همچنین دارای سخت افزار اتصال به شبکه Lora می باشد. این ماژول سازگار با پلتفرم و سیستم عامل Mbed می باشد.ویژگی ها:قابلیت کار در فرکانس های 868 و 915 مگاهرتزسازگار با ARM Mbedسازگار با Keilبرد خارجی 10 تا 15 کیلومتر و برد داخلی 2 کیلومترقابلیت کار با یک باتری تا یک سالنرخ انتقال داده 293Kbpsابعاد 23.6 mm X 23.6 mm (.93&quot; x .93&quot;)Espressif ESP32میکروکنترلر ESP32 نسخه به روز شده ESP8266 می باشد. این SOCدارای دوهسته پردازشی Xtensa LX6 با فرکانس 240 مگاهرتز و توان پردازشی 600 DMIPS می باشد. همچنین به 520 کیلوبایت حافظه داخلی و 4 مگابایت حافظه برنامه مجهز شده است. این چیپ دارای بلوتوث و وای فای بوده که برای پروژه های IoT مناسب می باشد. ابعاد این ماژول 25.5 mm × 18 mm × 3.1 mm می باشد.توان مصرفی پردازنده( بدون وای فای و بلوتوث)یکی از پارامترهای مهم برای سخت‌افزار در‌ IoT مصرف توان می‌باشد چرا که بیشتر ابزارهای اینترنت اشیا توسط باتری تغذیه می‌شود.در جدول زیر توان مصرفی در حالت مودم خاموش در سه فرکانس 80، 160 و 240 مگاهرتز نشان داده شده است.عملکرد پردازنده میتواند به صورت تک هسته ای و دو هسته ای باشد که مصرف توان در هر حالت متفاوت است.توان مصرفی وای فای و بلوتوثدر جدول زیر حداکثر توان مصرفی بلوتوث و وای فای در دو حالت فرستنده و گیرنده نشان داده شده است.کیت توسعه نرم افزاری (SDK)ESP-IDFArduinoMicroPythonLuaNuttx RTOSجدول مقایسه ای</description>
                <category>IoTDevs</category>
                <author>علیرضا عبدشاه</author>
                <pubDate>Sun, 04 Dec 2022 12:16:02 +0330</pubDate>
            </item>
            </channel>
</rss>