جدول المحتويات:
- الخطوة 1: نصيحة يجب تذكرها
- الخطوة 2: MCP23016
- الخطوة 3: العنوان
- الخطوة 4: الأوامر
- الخطوة 5: الفئات
- الخطوة 6: هيكل الاتصال
- الخطوة 7: البرنامج
- الخطوة 8: MCP23016
- الخطوة 9: ESP-01
- الخطوة 10: تركيب ESP01
- الخطوة 11: المكتبات والمتغيرات
- الخطوة 12: الإعداد
- الخطوة 13: التكرار
- الخطوة 14: ParserData
- الخطوة 15: ConfigurePort
- الخطوة 16: WritePinData
- الخطوة 17: WriteBlockData & SetupWiFi
- الخطوة 18: التطبيق
- الخطوة 19: التنزيل
فيديو: أتمتة منخفضة التكلفة مع ESP01: 19 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
اليوم ، سنناقش الأتمتة باستخدام ESP01 مع 16 مرحلًا. هذا نموذج تصميم رخيص للغاية حيث يمكنك مضاعفة الوحدات والحصول على ما يصل إلى 128 مرحلًا ، حيث من الممكن وضع ما يصل إلى ثمانية موسعات منافذ في هذا المتحكم الدقيق.
في دائرتنا ، سيكون لديك تطبيق على هاتف ذكي يتصل بـ ESP01. سيحتوي على موسع يحتوي على 16 منفذًا ، كل منها متصل بترحيل. لدينا أيضًا مصدر قابل للتعديل 3v3. لذلك سنتحكم في وحدة ترحيل ذات 16 قناة باستخدام ESP01 من خلال تطبيق Android ، الذي أتيحه لك.
الخطوة 1: نصيحة يجب تذكرها
من المهم أن أشير ، يا أصدقائي ، إلى أنني استخدمت هذه الشريحة في دائرة تسمى MCP23016. من المهم أيضًا أن تشاهد الفيديو EXPANSOR OF IOS لـ ESP32 و ESP8266 و ARDUINO ، حيث أختبر الجهاز وأثبت أنه يعمل مع هذه الأنواع الثلاثة من اللوحات.
الخطوة 2: MCP23016
لدينا هنا صورة MCP23016 ، وهي شريحة بها 28 دبوسًا. من المهم أن نذكر أن هناك أيضًا نموذج MCP23017 ، وهو أكثر شيوعًا ولا يحتاج إلى مقاومة ومكثف ، لأنه يحتوي على ساعة داخلية. هذا يجعل الأمر أسهل ، لكن التثبيت مختلف عما نعرضه في هذا الفيديو.
الخطوة 3: العنوان
لتحديد عنوان MCP23016 ، نستخدم المسامير A0 و A1 و A2. يمكنك فقط تركها في HIGH أو LOW لتغيير العنوان.
سيتم تشكيل العنوان على النحو التالي:
MCP_Address = 20 + (A2 A1 A0)
حيث يمكن أن يأخذ A2 A1 A0 قيم HIGH / LOW ، رقم ثنائي من 0 إلى 7 نماذج.
على سبيل المثال:
A2> GND ، A1> GND ، A0> GND (يعني 000 ، ثم 20 + 0 = 20)
او غير ذلك،
A2> HIGH ، A1> GND ، A0> HIGH (يعني 101 ، ثم 20 + 5 = 25)
الخطوة 4: الأوامر
هنا جدول بأوامر للتواصل:
الخطوة 5: الفئات
GP0 / GP1 - سجلات منفذ البيانات
هناك نوعان من السجلات التي توفر الوصول إلى منفذي GPIO.
توفر قراءة السجل حالة المسامير الموجودة على هذا المنفذ.
البتة = 1> بت عالية = 0> منخفضة
IODIR0 / IODIR1
هناك نوعان من السجلات التي تتحكم في وضع الدبوس. (إدخال أو إخراج)
بت = 1> بت الإدخال = 0> الإخراج
الخطوة 6: هيكل الاتصال
هنا نتحدث عن عنوان الشريحة ، والوصول إلى الأمر والبيانات ، وهو نوع من البروتوكول الذي يجب القيام به لإرسال المعلومات.
الخطوة 7: البرنامج
سنقوم بتنفيذ برنامج يتكون من توصيل ESP01 بـ MCP23016 من أجل الحصول على المزيد من GPIOs لاستخدامها. هذه الـ 16 GPIOs الجديدة التي سنمتلكها سوف تتحكم في وحدة ترحيل ذات 16 قناة.
سيتم إرسال الأوامر إلى ESP01 عبر تطبيق Android.
الخطوة 8: MCP23016
الخطوة 9: ESP-01
هذه لوحة ذات 16 مرحل.
الخطوة 10: تركيب ESP01
الخطوة 11: المكتبات والمتغيرات
سنقوم بتضمين المكتبات المسؤولة عن اتصالات i2c وإنشاء نقطة الوصول وخادم الويب. نحدد عنوان الشريحة والمنافذ. أخيرًا ، نحدد المتغيرات لتخزين قيم دبابيس MCP.
#include // responsável pela comunicação i2c. # include // responsável por criar o accesspoint eo webserver WiFiServer server (80)؛ // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREADES DE REG حدد GP0 0x00 // DATA PORT REGISTER 0 #define GP1 0x01 // DATA PORT REGISTER 1 #define IODIR0 0x06 // I / O DIRECTION REGISTER 0 #define IODIR1 0x07 // I / O DIRECTION REGISTER 1 // guarda os valores pinos هل MCP uint8_t currentValueGP0 = 0 ؛ uint8_t currentValueGP1 = 0 ؛
الخطوة 12: الإعداد
نقوم بتهيئة ESP01 وتكوين المنافذ. نقوم أيضًا بتهيئة نقطة الوصول وتهيئة الخادم.
إعداد باطل () {Serial.begin (9600) ؛ تأخير (1000) ؛ Wire.begin (0 ، 2) ؛ // ESP01 Wire.setClock (200000) ؛ configPort (IODIR0 ، الإخراج) ؛ configPort (IODIR1 ، الإخراج) ؛ writeBlockData (GP0، 0x00) ؛ writeBlockData (GP1، 0x00) ؛ setupWiFi () ، // configuração do Access Point server.begin () ؛ // inicializa o server}
الخطوة 13: التكرار
هنا أتحقق مما إذا كان قد تم توصيل أي عملاء بالخادم. نقرأ أيضًا سطر الطلب الأول. نقوم باستخراج البيانات من أجل التلاعب بها ، وتحديد عنوان الاستجابة الافتراضي ، وإرسال هذه الاستجابة إلى العميل.
حلقة باطلة () {WiFiClient client = server.available () ؛ // Verifica se um cliente foi conectado if (! client) {return؛ } String req = client.readStringUntil ('\ r')؛ // Faz a leitura da Primeira linha da Requisição / * / MR é o header prefixo para saber se a Requisição é a esperada para os relés * / if (req.indexOf ("/ MR")! = -1) {parserData (req) ؛ // a partir da Requisição extrai os dados para manipulação} else {Serial.println ("طلب غير صالح") ؛ إرجاع؛ } client.flush () ؛ String s = "HTTP / 1.1 200 موافق / r / n" ؛ // cabeçalho padrão de resposta client.print (s) ؛ // envia a resposta para o cliente delay (1) ؛ } // حلقة النهاية
الخطوة 14: ParserData
من الطلب ، نبحث عن البيانات المتعلقة بالمرحلات. ثم نرسل البيانات إلى MCP23016.
// a partir da Requisição busca os dados refente aos relésvoid parserData (String data) {uint8_t relay = -1؛ uint8_t gp = -1 ؛ قيمة uint8_t = -1 ؛ فهرس int = data.indexOf ("/ MR") ؛ // busca o index تفعل البادئة MR if (البيانات [الفهرس + 5] == '/') // / MR01 / 1 ، onde 0 = GP ؛ 1 = RELE ؛ 1 = ESTADO (تشغيل / إيقاف) {gp = البيانات [الفهرس + 3] - '0' ؛ التتابع = البيانات [الفهرس + 4] - '0' ؛ القيمة = البيانات [الفهرس + 6] - '0' ؛ // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1، value، gp)؛ }}
الخطوة 15: ConfigurePort
قمنا بتعيين وضع دبوس GPIO (GP0 أو GP1).
// configura o modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // custom um valor de 0-255 indicando o modo das portas (1 = INPUT، 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada، o restante como saida void configurationPort (uint8_t port، uint8_t custom) {if (custom == INPUT) {writeBlockData (port، 0xFF)؛ } else if (custom == OUTPUT) {writeBlockData (port، 0x00)؛ } else {writeBlockData (port، custom)؛ }}
الخطوة 16: WritePinData
في هذا الجزء من الكود ، نقوم بتغيير حالة الدبوس المطلوب وإرسال البيانات إلى MCP.
// muda o estado de um pino desejado، passando como parametro: // pin = pino desejado؛ القيمة = 0/1 (تشغيل / إيقاف) ؛ gp = 0/1 (PORT do MCP) void writePinData (int pin، int value، uint8_t gp) {uint8_t statusGP = 0؛ إذا (gp == GP0) statusGP = currentValueGP0 ؛ آخر statusGP = currentValueGP1 ؛ إذا كانت (القيمة == 0) {statusGP & = ~ (B00000001 << (pin)) ؛ // muda o pino para LOW} else if (القيمة == 1) {statusGP | = (B00000001 << (pin)) ؛ // muda o pino para HIGH} إذا (gp == GP0) currentValueGP0 = statusGP ؛ آخر currentValueGP1 = statusGP ؛ // envia os dados para o MCP writeBlockData (gp، statusGP) ؛ تأخير (10) ؛ }
الخطوة 17: WriteBlockData & SetupWiFi
هنا ، نرسل البيانات إلى MCP23016 عبر ناقل i2c. بعد ذلك ، نقوم بتكوين الخصائص لتمكين نقطة الوصول. أخيرًا ، قمنا بتكوين WiFi لوضع Access Point وأنشأنا نقطة وصول باستخدام SSID وكلمة المرور.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (uint8_t port، uint8_t data) {Wire.beginTransmission (MCPAddress)؛ Wire.write (المنفذ) ؛ Wire.write (البيانات) ؛ Wire.endTransmission () ؛ تأخير (10) ؛ }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP) ؛ WiFi.softAP ("ESP01_RELAY"، "12345678") ؛ }
الخطوة 18: التطبيق
لإنشاء التطبيق ، نستخدم MIT App Inventor 2 ، والذي يمكن الوصول إليه من خلال الرابط:
ai2.appinventor.mit.edu/
يتكون التطبيق من شاشتين تحتويان على ثمانية أزواج من الأزرار في كل منهما ، تشير إلى حالة كل مرحل.
فيما يلي بعض الكتل البرمجية المستخدمة:
هام: عنوان IP الافتراضي لـ ESP ، لأن نقطة الوصول هي 192.168.4.1
1. عند تهيئة الشاشة ، نقوم بتخزين عنوان IP في الذاكرة واستدعاء الإجراء لاستعادة حالة الأزرار (تشغيل / إيقاف).
2. اتصل بالشاشة الأخرى
1. عند النقر فوق الزر ON لأحد المرحلات ، سنقوم بإجراء تغييرات مرئية على الزر (كتل خضراء). يقوم WebViewer1. GoToUrl بتقديم طلب للحصول على ESP01 الخاص بنا عن طريق ربط بيانات MR01 / 1 في عنوان URL.
2. عند النقر فوق الزر "إيقاف" لإحدى المرحلات ، سنقوم بإجراء تغييرات مرئية على الزر (كتل خضراء). يقوم WebViewer1. GoToUrl بتقديم طلب إلى ESP01 الخاص بنا عن طريق ربط بيانات MR01 / 0 في عنوان URL.
يستخدم هذا الإجراء لاستعادة حالة الأزرار (المرحلات) ، لأنه عند تغيير الشاشة ، فإنها تعود إلى نمط الإنشاء.
تتكرر الكتلة الصفراء لكل من أزواج الأزرار.
الخطوة 19: التنزيل
فيما يلي ملفات المشروع للتنزيل:
ملف مشروع MIT App Inventor 2 - تنزيل
تطبيق APK للتثبيت على Android - تنزيل
قم بتنزيل الملفات الأخرى:
بي دي إف
انا لا
موصى به:
أتمتة المنزل منخفضة التكلفة DIY باستخدام Esp8266: 6 خطوات
أتمتة المنزل منخفضة التكلفة باستخدام Esp8266: مرحبًا بالجميع ، سأوضح لكم اليوم في هذه التعليمات كيف أعددت أتمتة المنزل الخاص بي كخطوة نحو منزل ذكي باستخدام وحدة ESP 8266 المعروفة عمومًا باسم nodemcu لذلك دون إضاعة الوقت هيا بنا نبدأ:)
طابعة بيولوجية منخفضة التكلفة: 13 خطوة (بالصور)
طابعة بيولوجية منخفضة التكلفة: نحن فريق بحث بقيادة الطلاب الجامعيين في جامعة كاليفورنيا في ديفيس. نحن جزء من BioInnovation Group ، التي تعمل في TEAM Molecular Prototyping and BioInnovation Lab (المستشاران الدكتور مارك Facciotti ، وأندرو ياو ، ماجستير). يجمع المختبر بين طلاب
طاولة هوكي الهواء منخفضة التكلفة DIY: 27 خطوة (مع صور)
طاولة هوكي الهواء منخفضة التكلفة DIY: عادة ما يكون إعداد هوكي الهواء الاحترافي متاحًا فقط في الأروقة نظرًا للأنظمة المتطورة المطلوبة لتشغيله. كان هدفنا هو بناء طاولة هوكي هوائي DIY ، مما يجعل تجربة الألعاب هذه في المنزل. باستخدام المتاحة بشكل شائع
إشارة سرعة الرادار منخفضة التكلفة: 11 خطوة (بالصور)
علامة سرعة الرادار منخفضة التكلفة: هل سبق لك أن أردت إنشاء علامة سرعة الرادار منخفضة التكلفة الخاصة بك؟ أعيش في شارع تسير فيه السيارات بسرعة كبيرة ، وأشعر بالقلق على سلامة أطفالي. اعتقدت أنه سيكون أكثر أمانًا إذا تمكنت من تثبيت إشارة سرعة الرادار الخاصة بي والتي تعرض
علبة القفازات البحثية منخفضة التكلفة: 35 خطوة (بالصور)
صندوق القفازات البحثي منخفض التكلفة: الغرض: الغرض من Instructable هذا هو التوجيه في بناء صندوق قفازات بحثي منخفض التكلفة. الأبعاد الكلية للصندوق هي 3 &[رسقوو] ؛ × 2 & رسقوو ؛ × 2 & رسقوو ؛ & frac34 ؛ &ردقوو] ؛ (L × W × H) مع 1 &[رسقوو] ؛ × 1 &[رسقوو] ؛ × 1 &[رسقوو] ؛ يمر من خلال