لن يتم نشر عنوان بريدك الإلكتروني. الحقول المطلوبة معلمة *

أنا أستخدم arduino-uno ، ولكن لا يمكنني الوصول إلى صفحة الويب الخاصة بي. لقد قمت بالفعل بتعيين عنوان IP لاردوينو. عندما أقوم بتشغيل arduino (ctrl + shift + m) ، فإنه يعرض الإخراج. ولكن عندما أصل إلى صفحة الويب الخاصة بي ، فسوف تعرض "لا يمكنك" الوصول إلى صفحة الويب هذه.

يعمل My Webserver بشكل جيد مع IP المحلي والشبكة المحلية باستخدام كبل ethernet.

العمل مع إعادة توجيه المنفذ / IP العام عند استخدام اتصال شبكة آخر بالهاتف المحمول كما هو مذكور في المقالة.

لا يعمل في هاتفي المحمول أو الكمبيوتر المحمول عند استخدام جهاز توجيه Wifi / Wireless في نفس الشبكة مع عنوان IP المحلي.يرجى إخباري بالمكان الذي أخطئ فيه.

أحتاج إلى مساعدة في هذا الرمز لأنه عندما تحدث حالة الطوارئ بنسبة 4 (عالية) لا يمكنني العودة إلى الحالة السابقة... كيف يمكنني القيام بذلك ؟؟؟

// ARDUINO 1.0+ فقط
// ARDUINO 1.0+ فقط

#تضمن
#تضمن
قراءة منطقية = خطأ ؛

////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////

instagram viewer

byte ip [] = {192، 168، 16، 71} ؛ // الإعداد اليدوي فقط
// byte gateway [] = {192، 168، 1، 1} ، // الإعداد اليدوي فقط
// byte subnet [] = {255، 255، 255، 0} ، // الإعداد اليدوي فقط

// إذا لزم الأمر لتغيير عنوان MAC (نادر جدًا)
byte mac [] = {0xDE، 0xAD، 0xBE، 0xEF، 0xFE، 0xED} ؛

خادم EthernetServer = EthernetServer (80) ؛ // المنفذ 80
////////////////////////////////////////////////////////////////////////

الإعداد باطل(){
Serial.begin (9600) ؛

// يستخدم الدبابيس 10،11،12 & 13 بواسطة درع إيثرنت

pinMode (2 ، INPUT) ؛ // SWICH
pinMode (3 ، OUTPUT) ؛ //LAMP
pinMode (4 ، INPUT) ؛ // الطوارئ
pinMode (6 ، INPUT) ؛

Ethernet.begin (mac) ؛
//Ethernet.begin (mac و ip و gateway و subnet) ؛ // للإعداد اليدوي

server.begin () ؛
Serial.println (Ethernet.localIP ()) ؛

}

حلقة فارغة(){

الكتابة الرقمية (6 ، منخفضة) ؛
if ((digitalRead (4) == LOW) || (digitalRead (6) == HIGH))
{
if (digitalRead (2) == HIGH)
{
الكتابة الرقمية (3 ، عالية) ؛
تأخير (5000) ؛
الكتابة الرقمية (3 ، منخفضة) ؛

}

}

checkForClient () ؛ // استمع للعملاء القادمين وعملية qequest.

}

checkForClient () باطل {

عميل EthernetClient = server.available () ؛

إذا (العميل) {

// ينتهي طلب http بسطر فارغ
boolean currentLineIsBlank = صحيح ؛
boolean sentHeader = خطأ ؛

بينما (client.connected ()) {
if (client.available ()) {

if (! sentHeader) {
// إرسال رأس استجابة http قياسي
client.println ("HTTP / 1.1 200 OK") ؛
client.println ("Content-Type: text / html") ؛
client.println () ؛
sentHeader = صحيح ؛
}

char c = client.read () ؛

إذا (القراءة & c == '') القراءة = خطأ ؛
إذا كان (c == '؟') القراءة = صواب ؛ // وجد ال؟ ، ابدأ بقراءة المعلومات

إذا (القراءة) {
Serial.print (ج) ؛

التبديل (ج) {
الحالة "4":
// أضف الرمز هنا لتشغيله في 2
الزناد (4 ، العميل) ؛
استراحة؛
الحالة "6":
// أضف الكود هنا لتشغيل 3
الزناد (6 ، العميل) ؛
استراحة؛

}

}

إذا انقطع (c == '\ n' && currentLineIsBlank) ؛

إذا (c == '\ n') {
currentLineIsBlank = صحيح ؛
} آخر إذا (c! = '\ r') {
currentLineIsBlank = خطأ ؛
}

}
}

تأخير (1) ؛ // منح متصفح الويب وقتًا لاستلام البيانات
client.stop () ؛ // أغلق الاتصال:

}

}

{0} {/ 0} {0} {0} {/ 0} {0} {0} {0} {/ 0} {0} مشغل باطن فارغ (int pin ، عميل EthernetClient ")
// blink a pin - يلزم العميل فقط لأغراض إخراج HTML.
client.print ("تشغيل الدبوس") ؛
client.println (دبوس) ؛
client.print ("") ؛

إذا (دبوس ، عالي)
{
الكتابة الرقمية (4 ، عالية) ؛
الكتابة الرقمية (6 ، عالية) ؛}

}

ألن يكون من الأسهل والأرخص القيام بذلك باستخدام Raspberry Pi؟ لست متأكدًا حقًا لأنني لم أستخدم مطلقًا Arduino ، ولكن لدي Pi.