هذا هو مقدار تكلفة ترحيل SONOFF WiFi (من ITEAD) ، والذي هو قلب هذا الجهاز.
"لم يكن لدي أي إخفاقات. لقد وجدت فقط 10 آلاف طريقة لا تعمل "- Thomas Alva Edison.
هذا أمر لا يصدق ، ليس بعد في مثل هذا الماضي البعيد ، كتب الناس في المدارس مع الريش. يتمتع كل شخص اليوم بطوبًا سحريًا به صور في جيبه ، مما يسمح لك بالوصول إلى المعلومات من جميع أنحاء العالم. إرسال رسائل فورية إلى أي شخص على هذا الكوكب. لدينا سيطرة صوتية ، التعرف على الوجوه ، وكما يقول الناس ، تهديد للبشرية جمعاء من جانب الذكاء الاصطناعي. في الآونة الأخيرة ، بدا أن هذه التقنيات خيال لا يمكن تصوره. ومع ذلك ، فسأبين لك اليوم كيف يمكنني ، من خلال مهارات البرمجة الأساسية ، استخدام الجميع للتحكم الصوتي. لذلك دعونا نبدأ!
الاهتمام !!! العمل مع الجهد العالي. كن حذرا ماذا تفعل! مؤلف المقال غير مسؤول عن الإجراءات التي تتخذها وأي ضرر مادي أو مادي قد ينشأ نتيجة استخدام المعلومات الواردة في هذه المقالة! إذا كنت غير متأكد من شيء ما ، فاطلب من شخص أكثر خبرة مساعدتك.المخطط الرئيسي للجهاز.
نظرًا لأنه لا يمكن توصيل الهاتف إلا بنقطة وصول WiFi واحدة في المرة الواحدة ، فسنعمل من خلال جهاز توجيه. بشكل عام ، يكون هذا مناسبًا عندما تكون جميع أجهزتك الذكية على نفس الشبكة ، ويمكنك إدارتها بسهولة دون الحاجة إلى إعادة الاتصال باستمرار بكل منها. عيب هذا هو أن جميع أجهزتك تعتمد على صحة جهاز توجيه واحد.
1 - نحتاج إلى إعادة برمجة تتابع Sonoff WiFi
للقيام بذلك ، تحتاج إلى تفكيك التتابع ولحام جهات الاتصال به من أجل الوميض. بشكل افتراضي ، يتم تكوينه للعمل من خلال خادم صيني. شخصياً ، ليس من الواضح جدًا لماذا يجب تشغيل الضوء الموجود في المرحاض بالفعل من خلال خادم من المملكة الوسطى.
الآن يمكننا توصيل وحدة cp2102 من Silicon Labs ليومض Sonoff. ما زلت استخدامها للعمل مع اردوينو مصغرة.
تحذير !!! عند إعادة البرمجة ، لا تقم بتوصيل ترحيل WiFi بشبكة 220/110 فولت!
إعادة برمجة التتابع بسيط للغاية. هذا هو وحدة esp8266 العادية. أخذت رسمًا قياسيًا لخادم نقطة الوصول من معرّف Arduino وقمت بتغييره قليلاً.
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <WiFiClient.h> // name and password from WiFi network const char* ssid = "Your access point (router) name"; const char* password = "router password"; IPAddress ip(192,168,1,112); // enter static ip IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); // 80 WiFiServer server(80); void setup() { Serial.begin(115200); delay(100); //preparing GPIO pinMode(12, OUTPUT); digitalWrite(12, 1); pinMode(13, OUTPUT); digitalWrite(13, 1); // connecting to WiFi Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); WiFi.config(ip, gateway, subnet); // waiting for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // run server server.begin(); Serial.println("Server started"); // show ip Serial.println(WiFi.localIP()); } void loop() { // connection check WiFiClient client = server.available(); if (!client) { return; } // Waiting for data Serial.println("new client"); while (!client.available()) { delay(1); } // Reading the first line of the query String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); // works with GPIO if (req.indexOf("/12/0") != -1) digitalWrite(12, 0); else if (req.indexOf("/12/1") != -1){ digitalWrite(12, 1); Serial.println("TEST OK"); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nTest OK. Uptime: "; // UpTime int Sec = (millis() / 1000UL) % 60; int Min = ((millis() / 1000UL) / 60UL) % 60; int Hours = ((millis() / 1000UL) / 3600UL) % 24; int Day = ((millis() / 1000UL) / 3600UL / 24UL); s += Day; s += "d "; s += Hours; s += ":"; s += Min; s += ":"; s += Sec; s += "</html>\n"; client.print(s); client.stop(); return; } else // If an invalid query write error { Serial.println("invalid request"); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nInvalid request"; s += "</html>\n"; client.print(s); client.stop(); return; } client.flush(); // Response formation String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO set OK"; s += "</html>\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); }
ستحتاج إلى تحديد اسم نقطة الوصول (الموجه / الموجه) وكلمة المرور وعنوان IP الثابت للمصباح الكهربائي. يوجد التحكم في الترحيل في الرقم 12. تأكد من ضبط حجم الفلاش على 1 ميغابايت في IDE.
اضغط مع الاستمرار على الزر الموجود على لوحة Sonoff. أدخل محول USB cp2102 في الكمبيوتر (أثناء الضغط باستمرار على الزر). بعد 2-3 ثواني ، حرر الزر. الآن التتابع في وضع البرمجة. قم بتنزيل ملف الرسم من Arduino IDE. انقر فوق تأكيد / ترجمة. بعد إعادة برمجة ذلك ، أعد تشغيل الوحدة النمطية.
2 - الآن ، قم بإنشاء تطبيق محمول للتحكم في هذا الترحيل عبر شبكة Wi-Fi. (أندرويد)
سأقدم فقط مقتطفات الشفرة الرئيسية. ثم يمكنك استخدامها للتنفيذ في التطبيقات الخاصة بك. توفر Google واجهة بسيطة ومريحة للتعرف على الصوت. إليك الرمز الذي يسمح لك بتحويل صوتك إلى نص وحفظه في سطر منتظم.
ثم يمكنك مقارنتها بالأوامر التي تريد تنفيذها.
هذا هو رمز العمل مع Wi-Fi. إرسال رسالة إلى الخادم.
public class LightOn extends AsyncTask<Void,Void,Void> { private static final String LOG_TAG = "MyLog"; @Override protected Void doInBackground(Void... params) { URL url; HttpURLConnection urlConnection = null; try { url = new URL("http://192.168.1.112/12/1");
انها بسيطة جدا. "1" قم بتشغيل المصباح الكهربائي ، و "0" قم بإيقاف تشغيل المصباح الكهربائي. يمكنك إضافة أي شيكات ترغب فيها ، وتلقي رد من الخادم ، إلخ. tp أنا خلقت برنامجين لنفسي. الأول هو عنصر التحكم الصوتي ، الموجود على سطح المكتب وهو دائمًا في متناول اليد. والثاني هو تطبيق بسيط لتشغيل / إيقاف المصباح الكهربائي بلمسة زر واحدة.
أفترض أنك تعبت بالفعل من قراءة جميع أنواع النصوص ، لذلك أقترح عليك مشاهدة مقطع فيديو حول كيف كان.
كما قال ألبرت أينشتاين: "إمكانياتك محدودة فقط بخيالك".
أتمنى لك يومًا جيدًا والأجهزة الذكية فقط!