آموزش آردوینوپروژه های آردوینو

ساخت صفحه وب با آردوینو از طریق شیلد اترنت

در این آموزش قصد داریم داده های حسگر را به یک وب سرور ارسال کرده و با استفاده از Arduino UNO و شیلد اترنت در یک صفحه وب نمایش دهیم. آردوینو به تنهایی نمی تواند به عنوان یک وب سرور عمل کند. برخلاف Raspberry Pi که یک کامپیوتر کامل است، آردوینو برای اتصال به اینترنت به یک شیلد اترنت نیاز دارد.

شیلد اترنت آردوینو

شیلد اترنت آردوینو یک PCB است که به آردوینو اجازه می دهد به اینترنت متصل شود. این بر اساس خط Wiznet W5xxx از تراشه های اترنت است. این تراشه ها دارای یک فریمورک شبکه با قابلیت TCP و UDP هستند. با این حال، شیلد فقط امکان اتصال سیمی از طریق کانکتور RJ45 را می دهد. بنابراین اگر به دنبال راه حل اینترنت بی سیم هستید، ممکن است بخواهید به جای آن از یک برد ESP8266 استفاده کنید. شیلد اترنت آردوینو دارای یک کارت خوان microSD یکپارچه است که می توانید از آن برای ذخیره فایل ها برای صفحه وب خود استفاده کنید.

همچنان می توانید با استفاده از پین های هدر مادگی شیلد اترنت با اکثر پین های برد آردوینو ارتباط برقرار کنید. به سادگی پین‌های شیلد و آردوینو را ردیف کنید و آن‌ها را فشار دهید تا در جای مناسبی قرار گیرند. پین هایی که نمی توانید استفاده کنید پین های 10 (SS)، 11 (MOSI)، 12 (MISO) و 13 (SCK) هستند. اینها پین‌ های ارتباط SPI هستند که آردوینو از آن‌ها برای برقراری ارتباط با شیلد اترنت استفاده می‌کند.

پیشنهاد میکنم راه اندازی شیلد اترنت آردوینو و اتصال آردوینو به اینترنت با ماژول اترنت W5100 را مشاهده کنید.

مدار نمایش داده های سنسور در صفحه وب با آردوینو

برای این پروژه، ما قرار است داده‌های سنسور دما و رطوبت DHT22 را از یک آردوینو و یک شیلد اترنت با یک صفحه وب نمایش دهیم. برای انجام این کار، همانطور که در شکل 2 نشان داده شده است، اجزای زیر را به هم وصل کنید:

  • آردوینو UNO
  • سنسور دما و رطوبت DHT22
  • شیلد اترنت W5100
  • سیم های جامپر
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

مدار نمایش داده های سنسور در صفحه وب با آردوینو

پس از مونتاژ قطعات، یک کابل LAN را به کانکتور RJ45 وصل کنید. انتهای دیگر باید روی روتر شما باشد که به اینترنت متصل است.

کد آردوینو برای ساخت صفحه وب

پس از اتصال تمام قطعات، این کد را در آردوینو آپلود کنید:

#include "DHT.h"
#include <SPI.h>
#include <Ethernet.h>
#define DHTPIN 7
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {
               0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
             };

IPAddress ip(192, 168, 1, 99);
EthernetServer server(80);
 
void setup() 
{
  Serial.begin (9600);
  dht.begin( );
  Ethernet.begin(mac, ip);
  server.begin( );
}

void loop( ) 
{
  float h = dht.readHumidity( );
  float t = dht.readTemperature( );
  EthernetClient client = server.available();
  if (client) 
    {
      boolean currentLineIsBlank = true;
      while (client.connected ( ) ) 
        {
          if (client.available ( ) ) 
            {
              char character = client.read ( );
              Serial.write(character);
              if (character == '\n' && currentLineIsBlank) 
                {
                  client.println ("HTTP/1.1 200 OK");
                  client.println ("Content-Type: text/html");
                  client.println ("Connection: close");
                  client.println ("Refresh: 5");
                  client.println ( );
                  client.println ("<!DOCTYPE HTML>");
                  client.println ("<html>");
                  client.print ("<Title>Arduino Ethernet Webserver </Title>");
                  client.print ("<h1>Arduino Ethernet Shield Webserver </h1>");
                  client.print ("<h4>Temperature in C: ");
                  client.print (t);client.print("C");
                  client.print ("</h4><h4>Humidity: ");
                  client.print (h);client.print("%");
                  client.println ("<br />");
                  client.println ("</html>");
                  break;
                }
                 
                if ( character == '\n') 
                  {
                    currentLineIsBlank = true;
                  } 
                else if (character != '\r') 
                  {
                    currentLineIsBlank = false;
            }
        }
    }
    delay(1);
    client.stop();
  }
}

ابتدا باید کتابخانه های مورد نیاز را اضافه کنیم. ما از SPI.h و Ethernet.h برای ارتباط با شیلد اترنت استفاده خواهیم کرد. هر دو کتابخانه به صورت پیشفرض در آردوینو نصب هستند. علاوه بر این، ما از DHT.h برای ارتباط با سنسور استفاده خواهیم کرد. می توانید آن را از مطلب دانلود کتابخانه DHT دانلود کنید.

ما پین سنسور را 7 و نوع آن را DHT22 در نظر میگیریم.

سپس آدرس MAC شیلد را تعریف می کنیم. آدرس MAC موجود در کد، آدرس پیش فرض این نوع شیلد است. بنابراین اگر از همان شیلد من استفاده می کنید، آنها را به همان شکلی که هستند بگذارید.

در مرحله بعد، از IPaddress ip (192, 168, 1, 99) و سرور EthernetServer (80) برای ایجاد یک وب سرور در پورت 80 با آدرس IP ثابت “192.168.1.99” استفاده می کنیم. اگر می خواهید از IP دیگری استفاده کنید، فقط مقادیر آن را تغییر دهید. حتما از یک آدرس IP استفاده نشده استفاده کنید وگرنه با مشکلات شبکه مواجه خواهید شد.

در تابع loop، داده ها را از حسگر DHT با استفاده از readTemperature() و readHumidity() می خوانیم. سپس با استفاده از print()، دستورات HTML را برای کاربر ارسال می کنیم.

به آدرس IP ثابت (192.168.1.99) که در کد خود تنظیم کرده اید، مراجعه کنید. میتوانید از طریق لپتاپ یا موبایل های متصل به شبکه وای فای خود استفاده کنید. باید تصویر زیر را نشان دهد و همانطور که در این خط از کد: client.println (“Refresh: 5”) نشان داده شده است، باید هر 5 ثانیه یکبار به روز شود.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

نمایش داده های سنسور در اینترنت

در نهایت، برای اینکه سرور را در خارج از شبکه خانگی خود در دسترس قرار دهیم تا بتوانید در هر جایی به آن دسترسی داشته باشید، باید از پورت فورواردینگ استفاده کنیم. پورت فورواردینگ یک ویژگی روتر شبکه است که ترافیک را از یک پورت خاص در شبکه WAN به دستگاهی در داخل شبکه محلی شما هدایت می کند. در اینجا نحوه انجام آن آمده است:

  1. ابتدا آدرس IP WAN خود را پیدا کنید. می‌توانید این کار را با جستجوی «my ip» در گوگل انجام دهید.
  2. سپس، از صفحه اصلی روتر خود بازدید کنید. آدرس IP روتر خود را در مرورگر وب خود وارد کنید. هر مدلی متفاوت هست به عنوان مثال، روتر Hitron Technologies از “192.168.0.1” استفاده می کند. اکثر مودم ها از 192.168.1.1 استفاده میکنند.
  3. سپس نحوه تغییر تنظیمات DHCP را بیاموزید. آدرس IP ماژول ESP-01 را به استاتیک اضافه کنید تا ثابت بماند. برای سرور مثال ما در بالا، “192.168.0.18” خواهد بود. همچنین آدرس MAC را که از دستور AT+CIFSR دریافت کرده اید وارد کنید. پس از اعمال این موارد، روتر شما آدرس 192.168.0.18 را برای ESP-01 رزرو می کند.
  4. سپس به تنظیمات Port Forwarding بروید. با استفاده از پروتکل TCP یک سرور مجازی ایجاد کنید. از پورت 80 استفاده کنید سپس آدرس IP ESP-01 را وارد کنید. فراموش نکنید که تغییراتی را که انجام داده اید در روتر خود ذخیره کنید.
  5. تنظیمات فایروال خود را به گونه ای پیکربندی کنید که پورت 80 به طور مستقیم با دستگاه های شما ارتباط برقرار کند.

اگر در مورد هر چیزی سوالی دارید در بخش نظرات زیر با ما در میان بگذارید…

4.7 (4 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

1 دیدگاه

  1. سلام آیا با این برنامه میشه شیلد اترنت رو باesp32 راه اندازی کرد؟

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *