اینترنت اشیا IOT برد ESP8266

ساخت پلتفرم IoT اختصاصی کنترل وسایل برقی بر پایه برد ESP8266 – بخش اول

simple-iot-platform-with-esp8266-and-cloud-server-digispark
نوشته شده توسط معین صابری

اینترنت اشیا، در حال تبدیل به یکی از روزمرگی‌های زندگیست. همچنان که در اخبار می‌شنوید، صحبت از خانه هوشمند، شهر هوشمند و مواردی از این دست است. همانطور که واضح است، به منظور پیاده سازی و اجرای پروژه‌های هوشمند سازی و اینترنت اشیا، نیاز به ابزار و پلتفرم IOT است. یکی از مهم‌ترین ابزارهای اجرای پروژه‌های اینترنت اشیا، ماژول‌های وای فای esp8266 است که تاکنون در پروژه‌های بسیاری، مورد استفاده قرار گرفته‌اند. این ماژول‌ها قابلیت اتصال به مودم‌های خانگی، اتصال به شبکه اینترنت، قابلیت تبدیل به نقطه دسترسی، قرار گیری در مد سرور و… را دارند. نکته مهم دیگر در رابطه با ماژول‌های ESP8266 آن است که قابلیت برنامه ریزی داشته و نیاز به میکروکنترلر اضافی ندارند. به طوریکه علاوه بر اینکه دسترسی به ارتباط بی‌سیم و شبکه را برای کاربر فراهم می‌آورند، می‌توانند برنامه کاربر را نیز اجرا نمایند. از طرفی دیگر، به لطف وجود پلتفرم آردوینو، این ماژول‌ها به سادگی همانند یک برد آردوینو پروگرام شده و از این بابت نگرانی در خصوص یادگیری زبان و ابزار جدید، مرتفع می‌گردد. این آموزش در دو مرحله تهیه شده است که در بخش نخست به طراحی وب سرویس یا همان پلتفرم IOT با ESP8266 پرداخته‌ایم. سپس در قسمت بعدی، به طراحی سخت افزاری خواهیم پرداخت. در ادامه با مرجع تخصصی آردوینو به زیان فارسی دیجی اسپارک همراه باشید.

 

لینک اجرای این پروژه در لایو اینستاگرام

 


تبادل اطلاعات در پلتفرم IOT با ESP8266


به منظور ارسال و دریافت داده در بستر اینترنت، نیاز به یک سرور خواهیم داشت. در حقیقت به منظور دریافت داده از برد esp8266 و ارسال فرمان به آن، هر دو طرف کاربر و برد الکترونیکی، داده‌ها و پیام‌های خود را بر روی سرور، به اشتراک می‌گذارند. بنابراین، در این آموزش، ابتدا به طراحی یک سرویس ابری ساده می‌پردازیم. سپس در گام بعدی، به طراحی لایه سخت افزاری خواهیم رسید. بنابراین، در گام نخست، به بررسی وب سرویس آنلاین می‌پردازیم. نکته مهم اینست که برای این بخش از پروژه، مخاطبان می‌بایست آشنایی حداقلی با زبان برنامه نویسی php، جاوا اسکریپت و آشنایی حداقلی با دستورات html، داشته باشند. اما با این حال، تا جای ممکن به تشریح و توضیح کدها به نحوی پرداخته شده است تا مطلبی ابهام آمیز، باقی نماند. در زیر، نمایی از این پلتفرم ساده را مشاهده می‌نمایید:

 


طراحی پلتفرم IOT با ESP8266


همانطور که مستحضر هستید، جهت ایجاد یک ارتباط اینترنتی بین کاربر و ماژول esp8266، نیاز به برپا سازی بستر ابری است. در این قسمت، به طراحی یک بستر ساده اینترنت اشیا یا همان پلتفرم IOT با ESP8266 می‌پردازیم. شایان ذکر است جهت کوتاه و خلاصه شدن بحث، از مطرح نمودن مسائلی همچون تامین امنیت، صرف نظر می‌گردد. پلتفرم مذکور این توانایی را دارد تا دمای محیط را از ماژول دریافت کرده و فرمان خاموش و روشن شدن یک لامپ را برای ماژول ارسال نماید. حتی این پلتفرم قادر است تا یک پیام متنی را از کاربر دریافت نموده و به ماژول esp8266 ارسال نماید و ماژول نیز پیام مذکور را بر روی نمایشگر oled، نمایش دهد.

به منظور طراحی پلتفرم IOT با ESP8266 ، نیاز است که در ابتدا از یکی از سرویس دهندگان دامنه و هاست، سرویسی را تهییه نماییم. ضروری است که سرویس مورد نظر، از نوع لینوکس باشد تا کدهای این پروژه، بر روی آن اجرا شود. در طراحی این پلتفرم، از مدل معماری کلاینت/سرور پیروی شده است. در این مدل، کلاینت همان کاربر است که به سرویس دهنده و یا همان سرور، درخواست ارسال می‌نماید. سرور هم درخواست‌های کاربر را دریافت نموده و به اجرای آن، می‌پردازد. به همین دلیل، کدهای این پروژه در دو دسته سمت سرور که با زبان php طراحی شده است و سمت کاربر که با زبان جاوا اسکریپت طراحی شده، تقسیم می‌شود.

در طراحی این پلتفرم، سه برنامه اصلی وجود دارد که کدهای آن در فایل‌هایی با همین نام، در سرور قرار می‌گیرند:
۱-index.php: این قسمت صفحه اصلی پلتفرم ما خواهد بود. وظیفه این قسمت نمایش دمای دریافتی از ماژول، دریافت متن و ارسال آن به ماژول و دریافت فرمان خاموش و یا روشن شدن لامپ و ارسال آن با ماژول است.

۲-string.php: این قسمت متنی که کاربر قصد دارد تا آن را برای ماژول esp8266 ارسال نماید، از کاربر دریافت می‌نماید.

۳-data_st.php : این بخش به عنوان واسط میان ماژول esp8266 و سرور، به سرور داده‌ها را ارسال و در جواب داده‌های مربوط به رله و پیام متنی را دریافت می‌نماید.

 


سورس کد پلتفرم IoT


در ابتدا، ذکر این نکته ضروری است که جهت آپلود کدها برای ساخت پلتفرم IOT با ESP8266 پس از ثبت هاست و دامین خود، وارد کنترل پنل خود شده و در قسمت public hml، فایل هایی با نام‌های فوق ایجاد کرده و کدهای مورد نظر را در آن، قرار دهید. در اینجا، ابتدا به بررسی کدهای مهم و اصلی، یعنی index.php می‌پردازیم. همانطور که پیشتر ذکر شد، معماری پلتفرم IoT ما، بر مبنای معماری کلاینت/سرور است. این بدان معنی است که بخشی از کدها بر روی رایانه کاربر و بخشی دیگر بر روی رایانه سرور، اجرا می‌شوند. در کد این قسمت، فرمی وجود دارد که شامل دو کلید برای تعیین وضعیت رله و یک textbox جهت ارسال پیام به ماژول است. همچنین قسمتی دیگری نیز وجود دارد که وظیفه نمایش داده‌های دریافتی از سوی ماژول که همان دماست را، بر عهده دارد. در ادامه سورس کد سمت پلتفرم IOT را کپی کرده و با ادامه آموزش همراه باشید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 

در کد فوق، بخش پردازش مربوط به سرور با تگ php، به صورت <?php شروع می‌شوند. کدهای مربوط به سرور، در ۴ قسمت قرار گرفته‌اند.

۱- کنترل فشرده شدن کلید

۲- نمایش آخرین وضعیت لامپ

۳- نمایش آخرین پیام ارسالی

۴- نمایش دمای ارسالی از سوی ماژول

به کمک تگ‌های html، یک فرم برای کلیدهای روشن و خاموش تعبیه شده است. پس از فشرده شدن کلید، دیتایی به سرور از طریق متد post ارسال می‌گردد. متد post و متد get دو متد معروف پروتکل http جهت ارسال داده به سرور هستند. در سمت سرور، فشرده شدن کلید به صورت زیر، تشخیص داده می‌شود.

if(array_key_exists('button1', $_POST))                                                                               

   button1();

 

در قطعه کد فوق، در صورتیکه دکمه شماره یک فشار داده شده باشد، تابع button1 اجرا خواهد شد. با اجرای این تابع، یک فایل به نام data.txt، ایجاد خواهد شد. در این فایل، عبارت ۱ به معنای روشن شدن لامپ درج می‌گردد. برای کلید خاموش کننده لامپ، مشابه روال فوق، اما با درج عبارت ۰ در فایل، اجرا می‌شود. در سمت ماژول ESP8266، ماژول با خواندن این فایل، لامپ را روشن و یا خاموش می‌کند.

همانطور که مشاهده نمودید، وضعیت رله در یک فایل قرار گرفته و ماژول با خواندن فایل مورد نظر، لامپ متصل به رله را روشن و یا خاموش می‌کند. در نظر داشته باشید ابتدا به کمک تابع fopen، فایل مورد نظر را باز کرده و فرمت خواندن و یا نوشتن را، به کمک عبارت w و یا r تعیین می‌نماییم. سپس به کمک تابع fwrite و fread، که به ترتیب برای خواندن و یا نوشتن در فایل استفاده می‌شوند، عبارت مورد نظر خود را در فایل نوشته و یا می‌خوانیم. طبق قوانین زبان php، مقدار دریافتی را در یک متغیر که همراه با علامت $ در سمت چپ تابع قرار می گیرد، ذخیره نموده و به کمک تابع fclose()، فایل مورد نظر را می‌بندیم. شایان ذکر است که در صورتیکه فایل مورد نظر از پیش موجود نباشد، تابع نوشتن فایل، آن را ایجاد خواهد نمود و نیازی به ایجاد فایل به صورت دستی، نخواهد بود. به جهت خواندن آخرین وضعیت لامپ، آخرین پیام ارسالی نیز، می‌بایست فایلی که وضعیت آن‌ها در آن نوشته شده است، خوانده شود. همچنین آخرین دمای ارسالی توسط ماژول، در فایلی تحت عنوان tmp.txt قرار می‌گیرد که با خواندن مقدار آن، دمای ارسالی ، با خواندن از فایل و نمایش توسط تابع echo، در صفحه، به نمایش در می‌آید.

 


رفرش صفحه در پلتفرم IOT


در کد این صفحه، قسمتی برای رفرش صفحه، برای هر پانزده ثانیه وجود دارد. این رفرش کمک میکند تا به طور خودکار، آخرین دمای دریافتی را نمایش دهیم. به منظور اجرای  رفرش خودکار، می بایست از زبان جاوا اسکریپت استفاده نماییم.  برای این کار، به کمک تگ <script> ، ابتدا محدوده این کد ها را تعیین کرده و سپس با تگ </script>، این محدوده را می بندیم. در این تگ ، در ابتدا به کمک تابع alert، عملی که قرار است انجام دهیم را به همراه فاصله زمانی آن، تعیین می کنیم. سپس به کمک تابع location.realod();، صفحه را رفرش می نماییم.

 


دریافت و ارسال پیام متنی به ماژول


به منظور ارسال پیام به ماژول، ابتدا پیام مورد نظر خود را در textbox،تایپ می نماییم. سپس با فشردن کلید submit، پیام ما، تحت پروتکل POST، به صفحه string.php ارسال خواهد شد. در این صفحه، پیام مورد نظر از کاربر دریافت شده و درون یک فایل به نام string.txt ذخیره خواهد شد. در سمت ماژول نیز، با خواندن فایل string.txt، متن درج شده را نمایش خواهد داد. همچنین، متن ارسالی، در صفحه string.txt، به صورت زیر دریافت می شود:

$_POST["name"]

 

در عبارت فوق، عبارت POST بیانگر دریافت داده تحت متد POST بوده و عبارت name، نام متغیری است که ارسال شده است. به عبارت دیگر، متن مورد نظر ما در متغیری به نام name ذخیره شده و به صفحه مورد نظر، ارسال شده است:

<?php
$x=$_POST["name"];
echo " پیغام شما برای دستگاه، ارسال گردید";
 $myfile = fopen("string.txt", "w") or die("Unable to open file!");
fwrite($myfile, $x);
fclose($myfile);
?>

 


دریافت و نمایش دمای ارسالی ماژول


در این قسمت، به بررسی چگونگی دریافت دما و نمایش آن، می پردازیم. همانطور که پیشتر ذکر گردید، به منظور ارسال و دریافت داده در بستر پروتکل http، می بایست از دو متد post و get استفاده نمود. در قسمت ارسال دما به سرور، دمای ارسالی از سوی ماژول، به کمک متد post به سرور، به صفحه ای با نام data_st.php ارسال می گردد. دراین صفحه، همانند متد داده ارسالی دریافت شده و در یک فایل به نام tmp.txt ذخیره میگردد. در صفحه index.php، فایل tmp.txt خوانده و به کاربر، نمایش داده می شود. اما این تنها کارکرد این صفحه نیست. همانطور که پیشتر ذکر گردید، این صفحه به عنوان یک پل ارتباطی، مابین لایه سخت افزاری و پلتفرم ابری(وب سایت)، عمل می نماید. پس از آنکه این صفحه، دما را از ماژول دریافت و در فایل ذخیره نمود، نوبت به ارسال داده های مربوط به فرمان رله و پیام متنی می رسد تا با دریافت آن توسط ماژول، رله متصل به لامپ، لامپ را روشن و یا خاموش نموده و پیام متنی بر روی نمایشگر، به نمایش درآید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

در کد فوق، در ابتدا داده ارسالی از سوی ماژول، به شکل زیر دریافت می گردد:

$x=$_POST["tmp"];

 

در عبارت فوق، عبارت tmp بیانگر متغیر ارسالی از سوی ماژول بوده و مقدار دریافتی در متغیر x قرار گرفته تا با بازشدن فایل tmp.txt، این مقدار درون فایل، ذخیره شود. بعد از این قسمت، نوبت به ارسال داده ها به ماژول می رسد. بدین منظور، به کمک تابع echo که در زبان php وظیفه چاپ داده ها در خروجی را بر عهده دارد، ابتدا وضعیت ثبت شده برای رله را از فایل data.txt خوانده و در خروجی، چاپ می نماییم. سپس، پیام متنی درج شده در فایل string.txt را خوانده و در خروجی چاپ خواهیم نمود. دقت نظر داشته باشید که تابع echo، متن و داده مورد نظر را به نحوی به چاپ می رساند که چه با مرورگر و چه با ابزارهای دیگر، همانند ماژول  esp8266، داده به نمایش درخواهد آمد. بنابراین، فرمت ارسالی داده به ماژول، به صورت زیر، از چپ به راست، به ماژول ارسال خواهد شد:

پیام متنی+ وضعیت رله

به عنوان مثال، در صورتیکه وضعیت رله، خاموش و پیام متنی، عبارت salam ثبت شده باشد، پیام به فرمت زیر برای ماژول، ارسال خواهد شد:

۰salam

ماژول پس از دریافت داده، اولین کاراکتر دریافتی را به وضعیت رله اختصاص داده و بعد از آن را به عنوان پیام متنی، در نمایشگر خود، نمایش خواهد داد. در این بخش به بررسی و طراحی وب سایت یا همان پلتفرم ابری، جهت دریافت داده از ماژول esp8266 و ارسال فرمان کنترل لامپ و پیام متنی به ماژول، پرداختیم. در بخش بعدی، به طراحی سخت افزاری خواهیم پرداخت و پروژه را تکمیل خواهیم نمود.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۳۳ دیدگاه

  • میشه وصلش کرد به آردوینو و با آردوینو ارسال و دریافت داشت؟ مث دانلگل وایفای به آردوینو کار کار کنه؟

    • سلام
      اگر منظور شما سنسور دو پایه است، خیر، چراکه این سنسور می بایست به ADC متصل شود که در برد ESP-01 دسترسی به پایه ADC وجود ندارد.

  • سلام آیا ماژول استفاده شده در این پروژه همان esp 8266 v1 است که ۸ پایه دارد؟

      • ببخشید یه سوال دیگه هم داشتم…. من این دقیقا این پروژه رو نیاز دارم منتها با تعداد رله های بیشتر… آیا با توجه به این که اطلاعاتی درباره زبان php, html و جاوا اسکریپت ندارم میتونم خودم این سرور رو شخصی سازی کنم و تعداد رله هارو زیاد کنم؟
        راه حل یا پروژه دیگه ای که کد اماده باشه دارین؟

        • خواهش میکنم
          بله امکان شخصی سازی این سرور وجود دارد اما شما می بایست به کدهای html و جاوا اسکریپت کمی مسلط باشید.سرور آماده ای به ذهن من نمی رسد. اما در مورد things speak گویا امکان کنترل رله از طریق سرور آماده وجود دارد.

          • خیلی ممنون فقط یه چیزی برای خرید هاست ک گفتید از نوع لینوکس باشه،
            انواع محتلفی داره با توجه به حجمی ک بر مبنای مگابایت در اختیار میزاره
            میخواستم ببینم برای این پروژه چقدر حجم مورد نیاز است؟

            • خواهش می کنم
              این مورد بستگی به میزان درخواست های روزانه و ترافیک دارد. از آنجاییکه که من برای تست سرور را سفارش دادم، کمترین مقدار را انتخاب کردم. مقدار حجم را حقیقتا در خاطر ندارم.

  • سلام و درود
    اگر به جای ماژول دما ماژول gps باشه
    و اطلاعات عرض و طول جغرافیایی در فایل tmp فرستاده بشه
    لطفا راهنمایی بفرمایید چجوری در صفحه index.php یه لینک‌ گول مپ بزارم طوریکه محتویات لحظه ای فایل tmp با این لینک ادغام بشه و هر بار که روی این لینک کلیک میکنیم گوگل مپ به نمایش دربیاد. با تشکر فراوان

  • سلام جناب مهندس، ایا ماژول esp میتونه همزمان در ۲ مود کار کنه؟ یعنی وقتی قراره به مودم متصل بشه و از طریق وب کنترل بشه، نیاز به ssid و pass داره، در حالت اولیه چطوری میشه بدون استفاده از برنامه نویسی مشخصات مودم رو بهش داد؟
    میشه مثلا با یه برنامه اندروید به وای فای خود ماژول متصل شد و این پارامترها رو بهش داد و بعدش ماژول به مودم متصل بشه برای کنترل از طریق وب؟

    • سلام
      بله این مورد امکان پذیر است، برای این مسئله کتابخانه wifi manager توسعه یافته است. می توانید از این کتابخانه استفاده نمایید. در کنار این، سناریویی که شما نیز طرح کرده اید هم کاملا اجراییست.

      • سلام مجدد جناب مهندس، ممنونم از راهنماییتون
        مهندس مثال یا برنامه ای که از این کتابخانه استفاده کرده باشه رو سراغ دارین؟
        مهندس یه روش دیگه هم به ذهنم رسیده نمیدونم امکان پذیر هست یا نه، اینکه ما بیایم یه وب سرویس افلاین ایجاد کنیم و سپس با دریافت اطلاعات مودم، ماژول وارد ایجاد وب سرویس انلاین بشه، اگر چنین چیزی امکان پذیره، چجوری میشه دوتا وب سرویس رو با یه ماژول مدیریت کرد؟
        البته کتابخانه ای که معرفی کردین رو بررسی نکردم، شاید راه ساده تری وجود داشته باشه با استفاده از کتابخانه

    • خیر
      شما کدی که برایتان فرستادم را با html ترکیب می کنید.
      لطفا کد را به همان صورتیکه برای شما ارسال کردم روی سرور اجرا کنید. با اجرای این کد، زمانیکه وارد پیج می شوید، آدرس لینک گوگل مپ برای شما ظاهر خواهد شد.

  • سلام
    کم سوادی بنده رو ببخشید . درست فرمودید . لینک رو نشون میده . بسیار تشکر.خدا خیرتون بده. هر چقدر تشکر کنم کمه.
    یه قدم به جلو

  • سلام مهندس صابری
    دوباره مزاحم شدم
    در لینک زیر و با تابع redirect مختصات ثابت( یک رشته عددی ثابت و نه متغیر) رو به گوگل مپ فرستادم و اوکی هست.

    https://uupload.ir/view/6_rzba.txt/

    در مرحله بعد مختصات رو توسط ماژول sim800l دریافت کردم( مختصات متغیر) (جهت اطمینان از دریافت در سمت سرور ، مختصات را روی یک فایل متنی در سرور رایت کردم. و مختصات رویت شد و اوکی هست) ولی وقتی خواستم مختصات دریافتی را با دستور echo نشان بدم موفق نشدم.

    https://uupload.ir/view/7_fv07.txt/

    و همینطور ریدایرکت آن

    https://uupload.ir/view/8_4h49.txt/

  • سلام
    با توجه به لینکی که قرار دادید عمل شد ولی همچنان دستور AT+SAPBR=1,1 ارور می دهد.

    • مشکلی در ماژول شما وجود دارد یا اینکه قبل از این دستور دستورات دیگه ای وارد کرده اید.

  • فک کنم رسما وارد حوزه متافیزیک شدم
    با همون کدهای قبلی .
    چشمک زن هر سه ثانیه یکبار روشن میشه(یعنی رسما به اینترنت متصل نشده)
    ولی دیتاهای ارسالی را سمت سرور تونستم داخل دوتا فایل متنی رایت کنم
    در یک صفحه php اون دوتا دیتارو read کردم و رشته هارو کانکت کردم ولینک بدست آمده را ریدایرکت کردم و جواب داد؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ به نظر میرسه حتما باید رایت و رید سمت سرور انجام بشه ؟؟؟؟؟؟؟؟هنوزم مطمعن ؟ نیستم. چشمک زن م خودش یه ماجرای دیگه س که چجوری داره دیتا میفرسته ولی چشمک زن هر سه ثانیه یکبار روشن میشه؟؟؟؟

    • LOL!!!
      شاید جایی با دستوری وضعیت چشمک زن LED را تغییر داده اید. برای اینکه از اتصال به اینترنت مطمئن شوید، دستور AT+SAPBR=2,1 را ارسال کنید، اگر به اینترنت متصل شده باشید آی پی و در غیر اینصورت ۰٫۰٫۰٫۰ برمی گرداند
      مگر رایت و رید در سمت سرور انجام نمی شد؟
      داده ها به سرور GET می شد و سپس به لینک تبدیل می شد.
      سمت کلاین غیر از ارسال داده چه کار دیگری انجام می دادید؟؟

  • فک کنم ماژول sim800l قاط زده؟؟؟؟؟
    یعنی چرا با همین کد قبلا چشمک زن هر ثانبه روشن می شد ولی الان هر سه ثانیه
    و جالب تر اینکه دیتا هم ارسال می کنه
    باید در حرکتم چک کنم ببینم جواب میده

    • ملاک اصلی دستور AT+SAPBR=2,1 است، احتمالا بین دستورات مختلف جایی وضعیت چشمک زن را تغییر داده اید

      • دستور بالا رو که گفتید چک کردم و آی پی دریافت شد.
        در قدم بعدی
        با یک extension کروم صفحه php ی را که در اون صفحه به گوگل مپ ریدایرکت می کنم را هر چند ثانیه یکبار رفرش می کنم تا تغییر موقعیت جی پی اس در حال حرکت را روی نقشه ببینم.
        اکستنشن
        Easy auto refresher

        ولی این نوع رفرش چندان صورت خوش و ظاهر جالبی ندارد و حالت پیوستگی حباب روی نقشه مثل نرم افزار اسنپ یا … را ندارد.

        • بسیار عالی
          برای نمایش روی نقشه نیاز به دانش برنامه نویسی CSS، HTML و جاوا اسکریپت دارید.

      • در واقع هم باید فاصله ارسال دیتاها از ماژول به سرور کمتر و سریعتر شود و هم تغییرات موقعیت روی حباب گوگل مپ اعمال شود و مجبور به رفرش کل سایت نباشیم ( در حال حاضر هربار با اکستنشن ٬ صفحه php ی موجود در سرور را در فواصل زمانی منظم رفرش میکنم تا از این صفحه به گوگل مپ ریدایرکت شود که اصلا رفرش شدن مکرر صفحه٬ حالت جالبی ندارد و مانند gps در حال حرکت تلفن همراه یا نرم افزار اسنپ حالت نرم حرکتی ندارد)

  • سلام
    آیا نرم افزار اندرویدی یا ویندوزی داریم که مختصات رو از فایل های txt روی سرور بخونه و روی نقشه نشون بده ؟؟ با تشکر

      • سلام
        برنامه زیر را که روی سرور اجرا میکنم خطای ۵۰۰ رو میده. البته شاید به خاطر API KEY گوگله . این API KEY رو با فیلترشکن بدست آوردم.

        آیا با سایت های دیگه ی ارائه دهنده نقشه میشه همین کدها را نوشت مثلا mapbox.com و از اون سایت api key گرفت ؟؟؟؟؟؟؟؟؟

        • سلام
          بله، می تواند به همین دلیل باشد. API را از سرویس های دیگر دریافت کنید. به عنوان مثال بلد را بررسی کنید ببینید آیا API می دهد؟

  • البته فک کنم از نظر نوشتاری کدی که قرار دادم‌ مشکل داره یکی دوتا آکولاد و پرانتز

    و اینکه داخل تابع mark من متغیر های x$ و y$ رو قرار دادم ولی بعضی جاها دیدم که عرض و طول رو میریزم داخل آرایه و دو عنصر آرایه رو میدن و یه مارکر جدید میسازن. حالا نمیدونم این کاری که کردم درسته یا نه؟؟

    و اینکه آیا این کد مارکر قبلی را پاک خواهد کرد و یا پشت هم مارکر جدید اضافه میکنه؟؟؟

    در کل میخوام کلیت کدها درست بشه ببینم با این api key جواب میده؟؟؟ با تشکر

    • شما دستی هم که مقدار دادید همین مشکل را دارید. فکر میکنم مشکل از API باشد. با سپیدار مپ و نشان مورد را بررسی کنید.

  • سلام مهندس
    تشکر فراوان بابت راهنمایی
    در سایت نقشه مپ و در آدرس زیر در قسمت انتهایی صفحه یک مثال زده شد و فایل هایی css و js و html جداسازی شده اند.
    متوجه نشدم چطور این فایلها را به هاست انتقال بدم ؟؟ داخل چه پوشه ای روی هاست باید بریزم ؟؟داخل خود html مثال مربوطه تنظیمات css داره. نفهمیدم چرا دوباره یک فایل css جدا درست کرده و چرا اون فایل js رو داخل همون html نگذاشته؟؟؟. لطفا در صورت امکان راجع به نحوه انتقال این مثال به هاست روی سرور راهنمایی بفرمایید. من تا حالا این کارو انجام ندادم. سرچ کردم ولی چیز جالبی دستگیر م نشد و متوجه نشدم دقیقا داخل چه پوشه ای باید انتقال بدم. با تشکر فراوان
    https://help.map.ir/documentation/websdk-installation/

    • سلام و خواهش می کنم
      خیر
      در سایت راهنما قسمت مربوط به محلی را رها کنید.
      شما باید از قسمت اول و از CDN ها استفاده کنید. مطابق آموزش، لینک های گفته شده در سورس کد شما باید قرار گیرند.
      در رابطه با فایل ها هم، شما می توانید کدهای دو فایل JS و CSS را در یک فایل که همان فایل صفحه اصلی سایت است، قرار دهید.

  • در سایت نشان کد برای ایجاد نقشه استاتیک گذاشته شده بود .با api key که سایت داد امتحان کردم و نقشه نمایش داده شد. ولی راجع به کار با marker ها (مخصوص قرار دادن نقشه نشان در وبسایت) مطلبی پیدا نکردم. ولی در سایت map.ir با مارکرها کار شده بود .

    • بسیار خب
      با همان روشی که برای گوگل پیش رفتید، انتحان کنید ببینید می توانید طول و عرض را به نقشه بدهید؟

  • البته الان که دقت کردم دیدم گفته که طبق یه ساختار درختی فایلها رو بسازید و اینکه اگه اشتباه نکنم root همون public html هست؟؟

  • سلام خسته نباشید جناب صابری،با دستور (echo) مقادیر دیتا ها به سمت ماژول ارسال میشوند؟؟

    • این روش فکر می کنم مناسب تر باشد.
      شایدapi key را درست وارد نکرده اید. به فرمت آن دقت کنید.

  • سلام جناب مهندس وقت بخیر. مهندس جان چطوری میتونیم تشخیص بدیم که یک ماژول ESP01 اصلی و اورجینال هست یا خیر؟؟
    من دو نمونه ماژول ESP01 از بازار تهیه و خریداری کردم، اما به نظر میاد یکیش فیک باشه. میخواستم با توجه به تجربه ای که خودتون دارید، لطفا راهنمایی بفرمایید که کدوم یک از این دو ماژول اصلی و کدوم فیک هست. ممنون میشم.

    تصاویر ماژول ها رو با کیفیت بالا براتون قرار دادم تا متوجه تفاوت شون بشید:
    عکس ماژول ESP01 از نمای بالا:
    https://s4.uupload.ir/files/esp01_6rml.jpg
    عکس ماژول ESP01 از نمای پشت:
    https://s4.uupload.ir/files/esp01__2v0p.jpg

    مثلا توی ماژول B ، لوگوی Espressif و پارت نامبر آی سی پر رنگ تر و خواناتر نوشته شده، ولی توی ماژول A اینجوری نیست.
    یا به عنوان مثال، ماژول B یک دونه LED روی خودش داره، ولی ماژول A دو تا LED داره.
    و…
    یکسری موارد دیگه هم هست که با علامت پیکان (فلش) قرمز رنگ داخل تصویر مشخص کردم. متشکرم

    • سلام و متشکرم از شما
      حقیقتا من نمی توانم از روی ظاهر اصل یا فیک بودن قطعه را تشخیص دهم. تنها ملاک من برای این مورد، تهییه از فروشگاه های معتبر هست.

  • سلام مهندس وقت بخیر. من یک ماژول ESP8266 – 12S رو از دانشجوکیت خریداری کردم و روی برد کمکی مخصوص به خودش لحیم کردم. اگه خاطرتون باشه، پشت برد کمکی، جای یک ترانزیستور یا بهتره بگم جای یک رگولاتور ولتاژ قرار گرفته. سوالی که ازتون داشتم، اینه که آیا در این جای خالی، لازم هست رگولاتور ۳٫۳ لحیم کنم؟؟ یا نیازی به اینکار نیست؟؟ یا باید ولتاژ ۳٫۳ خارجی رو مستقیما به برد کمکی اعمال کنم؟ یا چی ؟؟ برای درک بهتر، لطفا تصویر زیر را ملاحظه بفرمایید:
    https://s6.uupload.ir/files/1_tfua.jpg
    مکان مورد نظر رو با فلش قرمز رنگ مشخص کردم… با تشکر از زحمات شما

    • سلام و متشکرم
      خیر، نیازی به لحیم رگولاتور نیست، می توانید ولتاژ ۳٫۳ را مستقیم به پایه VCC اعمال کنید.

  • سلام جناب مهندس وقت بخیر. در رابطه با بحث امنیت ESP8266 ، توی لایو های اینستاگرام دیجی اسپارک فرموده بودید که میشه از کتابخانه های ضد هک برای افزایش امنیت این ماژول استفاده کرد. میخواستم ببینم این کتابخانه ها دقیقا چیا هستند و چجوری باید ازشون استفاده کرد؟
    و اگر در این مورد اگزمپلی توی گیت هاب یا جاهای دیگر هستش، ممنون میشم اینجا به اشتراک بگذارید. سپاسگزارم

    • سلام و متشکرم
      عبارت ضد هک را خاطرم نیست، لطفا لینک لایو را ارسال کنید تا مطالعه کنم و ببینیم، اما به طور پیشفرض ماژول ESP8266 از استاندارد WPA2 برای رمزنگاری داده ها استافده میکند، همچنین در مد سرور می توان جهت افزایش امنیت از HTTPS استفاده نمود.

  • با سلام
    من میخواستم یک پلتفرم برای ارتباط با چند آردوینو با ماژول w5100 داشته باشم که پلتفرم هم با آی پی private بالا بیاد. میتونید کمکم کنید؟

  • آیا این امکان وجود داره که به جای خرید سرور و هاست ما با استفاده از SD کارت سرور ایجاد کنیم. منظورم این هست که سرور به صورت local روی شبکه باشه و ما مقادیر لحظه ای چند متغیر رو روی یک وب پیج نمایش بدیم؟