جدول المحتويات:

الشروع في استخدام Arduino و Ethernet: 8 خطوات
الشروع في استخدام Arduino و Ethernet: 8 خطوات

فيديو: الشروع في استخدام Arduino و Ethernet: 8 خطوات

فيديو: الشروع في استخدام Arduino و Ethernet: 8 خطوات
فيديو: Zigbee Ethernet шлюз Zigstar Lilyzig с поддержкой Power over Ethernet, ставим второй zigbee2mqtt 2024, يوليو
Anonim
الشروع في العمل مع Arduino و Ethernet
الشروع في العمل مع Arduino و Ethernet

يمكن لـ Arduino التواصل بسهولة مع العالم الخارجي عبر اتصال Ethernet سلكي. ومع ذلك ، قبل أن نبدأ ، من المفترض أن لديك فهمًا أساسيًا لشبكات الكمبيوتر ، مثل معرفة كيفية توصيل أجهزة الكمبيوتر بمحور / جهاز توجيه باستخدام كبلات RJ45 ، وما هو عنوان IP وعنوان MAC ، وما إلى ذلك. علاوة على ذلك ، إليك ملخص سريع جيد حول Ethernet.

ستحتاج إلى Arduino Uno أو لوحة متوافقة مع درع Ethernet يستخدم وحدة تحكم W5100 Ethernet IC (جميعها تقريبًا) وفقًا للصورة.

علاوة على ذلك ، ستحتاج إلى تشغيل اللوحة عبر مقبس تيار مباشر خارجي - يستخدم W5100 IC تيارًا أكثر مما يمكن أن توفره طاقة USB. سوف تكفي حزمة قابس 9V 1.5A / ثؤلول الجدار.

الخطوة 1:

صورة
صورة

أخيرًا - تسخن الدروع - لذا احرص على عدم لمس W5100 بعد الاستخدام المطول. في حال لم تكن متأكدًا - هذا هو W5100 IC.

الخطوة 2:

بمجرد أن يكون لديك Arduino يدعم Ethernet ، وتوصيل الطاقة الخارجية - من الجيد التحقق من أن كل شيء يعمل. افتح Arduino IDE وحدد ملف> أمثلة> إيثرنت> خادم الويب. يؤدي هذا إلى تحميل رسم بسيط يعرض البيانات التي تم جمعها من المدخلات التناظرية على متصفح الويب. ومع ذلك لا تقم بتحميله بعد ، فهو بحاجة إلى تعديل طفيف.

تحتاج إلى تحديد عنوان IP لدرع Ethernet - والذي يتم داخل الرسم التخطيطي. هذا بسيط ، انتقل إلى السطر:

IPAddress ip (10 ، 1 ، 1 ، 77) ؛

وقم بتعديلها لتلائم الإعداد الخاص بك. على سبيل المثال ، في منزلنا عنوان IP الخاص بالموجه هو 10.1.1.1 والطابعة 10.1.1.50 وجميع أجهزة الكمبيوتر أقل من … 50. لذلك سأقوم بتعيين IP للدرع الخاص بي على 10.1.1.77 عن طريق تغيير الخط إلى:

بايت ماك = {0xDE ، 0xAD ، 0xBE ، 0xEF ، 0xFE ، 0xED} ؛

ومع ذلك ، إذا كان لديك درع واحد فقط اتركه. قد تكون هناك فرصة نادرة للغاية من الناحية الإحصائية لامتلاك عنوان MAC مماثل لعقدك الحالي ، لذا سيكون هذا وقتًا آخر لتغييره.

الخطوه 3:

صورة
صورة

ومع ذلك ، إذا كان لديك درع واحد فقط فاتركه. قد تكون هناك فرصة نادرة للغاية من الناحية الإحصائية لامتلاك عنوان MAC مماثل لعقدك الحالي ، لذلك سيكون هذا وقتًا آخر لتغييره.

بمجرد إجراء التعديلات الخاصة بك ، قم بحفظ الرسم وتحميله. افتح الآن مستعرض ويب وانتقل إلى عنوان IP الذي أدخلته في المخطط ، ويجب أن يتم تقديمك بشيء مشابه للصورة.

ماذا يحدث؟

تمت برمجة Arduino لتقديم صفحة ويب بسيطة مع القيم التي تم قياسها بواسطة المدخلات التناظرية. يمكنك تحديث المتصفح للحصول على القيم المحدثة. في هذه المرحلة - يرجى ملاحظة أن دروع Ethernet تستخدم دبابيس رقمية 10 ~ 13 ، لذلك لا يمكنك استخدامها لأي شيء آخر. قد تحتوي بعض دروع Arduino Ethernet أيضًا على مقبس بطاقة microSD ، والذي يستخدم أيضًا دبوسًا رقميًا آخر - لذا تحقق من الوثائق لمعرفة أيهما.

الخطوة الرابعة:

ومع ذلك ، يمكننا الآن أن نرى أن درع Ethernet يعمل ، يمكننا الانتقال إلى شيء أكثر فائدة. دعونا نحلل المثال السابق بطريقة بسيطة ، ونرى كيف يمكننا توزيع وعرض بيانات أكثر إثارة للاهتمام عبر الشبكة. كمرجع ، تتم معالجة جميع الوظائف المتعلقة بشبكة Ethernet بواسطة مكتبة Ethernet Arduino. إذا قمت بفحص الرسم السابق الذي استخدمناه للتو ، فإن القسم الذي سيكون موضع اهتمام هو:

لـ (int analogChannel = 0 ؛ analogChannel <6 ؛ analogChannel ++) {int sensorReading = analogRead (analogChannel) ؛ client.print ("إدخال تناظري") ؛ client.print (analogChannel) ؛ client.print ("is") ؛ client.print (sensorReading) ؛ client.println ("") ؛ } client.println ("")؛

نأمل أن يكون هذا القسم من الرسم مألوفًا - تذكر كيف استخدمنا serial.print () ؛ في الماضي عند إرسال البيانات إلى مربع الشاشة التسلسلي؟ حسنًا ، يمكننا الآن فعل الشيء نفسه ، ولكن إرسال البيانات من درع Ethernet الخاص بنا مرة أخرى إلى متصفح الويب - بمعنى آخر ، نوع أساسي جدًا من صفحات الويب. ومع ذلك ، هناك شيء قد ترغب أو لا ترغب في تعلمه من أجل التنسيق الإخراج بتنسيق قابل للقراءة - كود HTML. أنا لست مطور مواقع (!) لذلك لن أتعمق في HTML كثيرًا.

ومع ذلك ، إذا كنت ترغب في تقديم صفحات ويب منسقة بشكل جيد باستخدام Arduino الخاص بك وما إلى ذلك ، فستكون هذه بداية جيدة. من أجل البساطة ، ستكون الوظيفتان التاليتان أكثر فائدة:

client.print ("is") ؛

Client.print () ؛ يسمح لنا بإرسال نص أو بيانات مرة أخرى إلى صفحة الويب. إنه يعمل بنفس طريقة serial.print () ، لذلك لا شيء جديد هناك. يمكنك أيضًا تحديد نوع البيانات بنفس طريقة تحديد serial.print (). وبطبيعة الحال ، يمكنك أيضًا استخدامه لإرسال البيانات مرة أخرى أيضًا. الخط المفيد الآخر هو:

client.println ("") ؛

الذي يرسل كود HTML مرة أخرى إلى متصفح الويب ويطلب منه بدء سطر جديد. الجزء الذي يتسبب بالفعل في إرجاع سطر جديد / سطر جديد هو

وهو رمز HTML (أو "علامة") لسطر جديد.

لذلك إذا كنت تقوم بإنشاء عروض أكثر تفصيلاً لصفحات الويب ، يمكنك فقط إدراج علامات HTML أخرى في client.print () ؛ بيان. إذا كنت تريد معرفة المزيد حول أوامر HTML ، فإليك موقع تعليمي جيد.

أخيرًا - لاحظ أن الرسم التخطيطي لن يرسل البيانات إلا عند طلبها ، أي عندما يتلقى طلبًا من متصفح الويب.

الخطوة 5: الوصول إلى Arduino الخاص بك عبر الإنترنت

الوصول إلى Arduino الخاص بك عبر الإنترنت
الوصول إلى Arduino الخاص بك عبر الإنترنت

حتى الان جيدة جدا. ولكن ماذا لو كنت تريد الوصول إلى Arduino الخاص بك من خارج الشبكة المحلية؟

ستحتاج إلى عنوان IP ثابت - أي أن عنوان IP الذي يعينه مزود خدمة الإنترنت الخاص بك لاتصالك يحتاج إلى أن يظل كما هو. إذا لم يكن لديك عنوان IP ثابت ، فلا يجب تغيير ما دمت تترك المودم / جهاز التوجيه الخاص بك بشكل دائم على IP الخاص بك. ومع ذلك ، هذا ليس الحل الأمثل.

إذا كان موفر خدمة الإنترنت الخاص بك لا يمكنه أن يقدم لك عنوان IP ثابتًا على الإطلاق ، فلا يزال بإمكانك المضي قدمًا في المشروع باستخدام مؤسسة تقدم DNS ديناميكي. تقدم لك هذه المؤسسات اسم مضيف IP الثابت الخاص بك (مثل mojo.monkeynuts.com) بدلاً من رقم ، وتتبع عنوان IP المتغير وربطه باسم المضيف الجديد. من بين ما يمكنني جمعه ، يحتاج المودم الخاص بك إلى دعم (لديك عميل مدمج لـ …) خدمات DDNS هذه.

على سبيل المثال ، هناك شركتان هما No-IP و DynDNS.com. يرجى ملاحظة أنني لم أستخدم هذين الأمرين ، فقد تم تقديمهما فقط كأمثلة. الآن ، للعثور على عنوان IP الخاص بك … عادةً ما يمكن العثور عليه عن طريق تسجيل الدخول إلى صفحة إدارة جهاز التوجيه الخاص بك - عادة ما يكون 192.168.0.1 ولكنه قد يكون مختلفًا. تحقق مع المورد الخاص بك أو مزود خدمة الإنترنت إذا كانوا قد زودوا الأجهزة. على سبيل المثال ، إذا قمت بإدخال 10.1.1.1 في مستعرض ويب ، وبعد إدخال كلمة مرور إدارة المودم الخاصة بي ، يتم عرض الشاشة التالية وفقًا للصورة.

الخطوة السادسة:

صورة
صورة

ما تبحث عنه هو عنوان IP الخاص بشبكة WAN ، كما ترى في الصورة أعلاه. لإبعاد المخادعين ، قمت بحجب بعض عنواني.

الشيء التالي الذي يجب فعله هو تشغيل إعادة توجيه المنفذ. هذا يخبر جهاز التوجيه بمكان إعادة توجيه الطلبات الواردة من العالم الخارجي. عندما يتلقى المودم مثل هذا الطلب ، نريد إرسال هذا الطلب إلى رقم المنفذ لدرع Ethernet الخاص بنا. باستخدام:

خادم EthernetServer (125) ؛

الوظيفة في الرسم التخطيطي الخاص بنا قد حددت رقم المنفذ على 125. ستبدو شاشة تكوين كل مودم مختلفة ، ولكن كمثال هنا يوجد واحد في الصورة.

الخطوة السابعة:

صورة
صورة

لذلك يمكنك أن ترى من السطر الأول في الصورة أعلاه ، تم تعيين أرقام المنافذ الداخلية على 125 ، وتم تعيين عنوان IP لدرع Ethernet على 10.1.1.77 - كما هو الحال في الرسم التخطيطي.

بعد حفظ الإعدادات ، نكون على أتم استعداد. سيكون العنوان الخارجي لدرع Ethernet الخاص بي هو WAN: 125 ، لذلك للوصول إلى Arduino ، سأكتب عنوان WAN الخاص بي مع: 125 في نهاية متصفح جهاز الويب البعيد ، والذي سيتصل بجهاز Ethernet الوحيد في المنزل.

علاوة على ذلك ، قد تحتاج إلى تغيير إعدادات جدار الحماية الخاص بالمودم ، للسماح للمنفذ 125 بأن يكون "مفتوحًا" للطلبات الواردة. الرجاء مراجعة وثائق المودم للحصول على مزيد من المعلومات حول كيفية القيام بذلك. الآن من أي جهاز متصل بالإنترنت في العالم الحر ، يمكنني إدخال رقم WAN الخاص بي ورقم المنفذ في حقل عنوان URL واستلام النتائج. على سبيل المثال ، من هاتف عندما يكون متصلاً بالإنترنت عبر بيانات الجوال LTE.

لذلك في هذه المرحلة ، يمكنك الآن عرض البيانات على صفحة ويب بسيطة تم إنشاؤها بواسطة Arduino الخاص بك والوصول إليها من أي مكان مع وصول غير مقيد للإنترنت. بفضل معرفتك السابقة بـ Arduino ، يمكنك الآن استخدام البيانات من أجهزة الاستشعار أو أجزاء أخرى من الرسم البياني وعرضها لاسترجاعها.

الخطوة الثامنة: عرض بيانات جهاز الاستشعار على صفحة الويب

عرض بيانات جهاز الاستشعار على صفحة ويب
عرض بيانات جهاز الاستشعار على صفحة ويب

كمثال لعرض بيانات المستشعر على صفحة ويب ، دعنا نستخدم مستشعر درجة الحرارة والرطوبة غير المكلف والشائع - DHT22. ستحتاج إلى تثبيت مكتبة DHT22 Arduino التي يمكن العثور عليها في هذه الصفحة. إذا كانت هذه هي المرة الأولى لك مع DHT22 ، فجرّب مثال الرسم المضمن في المكتبة حتى تفهم كيف يعمل.

قم بتوصيل DHT22 مع دبوس البيانات بـ Arduino D2 ، و Vin إلى دبوس 5V و GND بـ… GND. الآن لرسمنا - لعرض درجة الحرارة والرطوبة على صفحة الويب. إذا لم تكن تستخدم HTML ، فيمكنك استخدام خدمات عبر الإنترنت مثل هذه لإنشاء الرمز ، والذي يمكنك تعديله بعد ذلك لاستخدامه في الرسم التخطيطي. في المثال أدناه ، يتم تقديم بيانات درجة الحرارة والرطوبة من DHT22 في صفحة ويب بسيطة:

# تضمين "SPI.h" #include "Ethernet.h"

// لجهاز استشعار DHT22

# تضمين "DHT.h" # تعريف DHTPIN 2 # تعريف DHTTYPE DHT22

// أدخل عنوان MAC وعنوان IP لوحدة التحكم أدناه.

// سيعتمد عنوان IP على شبكتك المحلية: بايت mac = {0xDE، 0xAD، 0xBE، 0xEF، 0xFE، 0xED}؛ IPAddress ip (10 ، 1 ، 1 ، 77) ؛

// تهيئة مكتبة خادم Ethernet

// بعنوان IP والمنفذ اللذين تريد استخدامهما // (المنفذ 80 افتراضيًا لـ HTTP): خادم EthernetServer (125) ؛ DHT dht (DHTPIN ، DHTTYPE) ؛

الإعداد باطل()

{dht.begin () ، // افتح الاتصالات التسلسلية وانتظر حتى يفتح المنفذ: Serial.begin (9600) ؛ بينما (! المسلسل) {؛ // انتظر حتى يتم توصيل المنفذ التسلسلي. مطلوب لـ Leonardo فقط} // بدء اتصال Ethernet والخادم: Ethernet.begin (mac ، ip) ؛ server.begin () ، Serial.print ("الخادم موجود") ؛ Serial.println (Ethernet.localIP ()) ؛ }

حلقة فارغة()

{// الاستماع للعملاء القادمين EthernetClient client = server.available () ؛ if (العميل) {Serial.println ("عميل جديد") ؛ // ينتهي طلب http بسطر فارغ منطقي currentLineIsBlank = true ؛ while (client.connected ()) {if (client.available ()) {char c = client.read () ؛ Serial.write (ج) ؛ // إذا وصلت إلى نهاية السطر (تلقيت سطرًا جديدًا // حرفًا) وكان السطر فارغًا ، فقد انتهى طلب http ، // حتى تتمكن من إرسال رد إذا (c == 'n' && currentLineIsBlank) {// أرسل عنوان استجابة http قياسي client.println ("HTTP / 1.1 200 OK") ؛ client.println ("نوع المحتوى: نص / html") ؛ client.println ("اتصال: إغلاق") ؛ // سيتم إغلاق الاتصال بعد إكمال استجابة client.println ("Refresh: 30") ؛ // تحديث الصفحة تلقائيًا كل 30 ثانية client.println () ؛ client.println ("") ؛

client.println ("") ؛

// الحصول على البيانات من مستشعر DHT22

تعويم h = dht.readHumidity () ؛ تعويم t = dht.readTemperature () ، Serial.println (t) ؛ Serial.println (ح) ؛

// من هنا يمكننا إدخال كود HTML الخاص بنا لإنشاء صفحة الويب

client.print ( طقس المكتب

درجة حرارة المكتب - ) ؛

العميل.طباعة (ر) ؛

client.print ( درجات مئوية

);

client.print ("

رطوبة - )؛

client.print (ح) ؛

client.print ( بالمائة

);

client.print ("

يتم تحديث الصفحة كل 30 ثانية

. );

استراحة؛

} إذا (c == 'n') {// أنت تبدأ سطرًا جديدًا currentLineIsBlank = true؛ } else if (c! = 'r') {// حصلت على حرف في السطر الحالي currentLineIsBlank = false؛ }}} // أعط متصفح الويب وقتًا لتلقي تأخير البيانات (1) ؛ // أغلق الاتصال: client.stop () ؛ Serial.println ("العميل غير متصل") ؛ }}

إنه تعديل لرسم مثال لخادم الويب الخاص بـ IDE الذي استخدمناه سابقًا - مع بعض التعديلات. أولاً ، سيتم تحديث صفحة الويب تلقائيًا كل 30 ثانية - يتم تعيين هذه المعلمة في السطر:

client.println ("تحديث: 30") ؛ // تحديث الصفحة تلقائيًا كل 30 ثانية

… ويبدأ HTML المخصص لصفحة الويب الخاصة بنا أسفل السطر:

// من هنا يمكننا إدخال كود HTML الخاص بنا لإنشاء صفحة الويب

يمكنك بعد ذلك ببساطة إدخال HTML المطلوب داخل وظائف client.print () لإنشاء التنسيق الذي تحتاجه. أخيرًا - إليك مثال على لقطة شاشة لنموذج الرسم في العمل.

إذن هناك طريقة أخرى مفيدة لجعل Arduino الخاص بك يتفاعل مع العالم الخارجي. تم تقديم هذا المنشور إليك بواسطة pmdway.com - كل شيء للصانعين وعشاق الإلكترونيات ، مع التوصيل المجاني في جميع أنحاء العالم.

موصى به: