ESP8266 من أين تبدأ أو أول تجربة

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

لماذا قررت كتابة هذا؟ الأمر بسيط: لقد قتلت 3 أسابيع لمعرفة من أين أبدأ وكيف تعمل. بالإضافة إلى ذلك ، سأحاول جمع كتالوج صغير من الارتباطات للعمل مع ESP8266. آمل أن توفر لك هذه المعلومات جزءًا من الوقت على الأقل.

الصورة

لذلك دعونا نبدأ!

طلبت 3 خيارات لوحة لنفسي على موقع صيني مشهور:

  1. ESP8266 WIFI WIFI Serial Wireless Dev Test Board استنادًا إلى ESP-12 (يشار إليها فيما يلي باسم "لوحة صفراء") (3.12 دولار)
  2. ESP8266 ESP-07 مع لوحة المهايئ لـ ESP8266 (فيما يلي ESP-07) ($ 2.30)
  3. LoLin V3 NodeMcu Lua استنادًا إلى ESP-12 (يشار إليها فيما بعد باسم "Lolin") (3.12 دولار)

الأسباب التي جعلت حديقة الحيوانات هذه:

  1. تحتوي اللوحة الصفراء بالفعل على مصابيح LED مدمجة يمكنك وميضها على الفور ؛ من أجل الطاقة ، لا يمكنك استخدام 3.3V رائعة ، والتي تحتاج إلى الحصول عليها بطريقة أو بأخرى ، ولكن 3 بطاريات AA أو عن طريق توصيل 4.5V (وهو ما فعلته).
  2. رشحتني شركة LoLing بحقيقة أنها متصلة باستخدام كبل USB صغير وأنها لا تحتاج إلى أي محولات UART - يتم دمجها على الفور على أساس شريحة CH340 الصينية ، والتي يمكنك بسهولة العثور على برامج تشغيل على كل من win7x64 و win10x64 (حالاتي) ، و ، مدعوم مرة أخرى بمحول عادي مع خرج USB ، بدلاً من 3.3V متطور.
  3. ESP-07 . - , , . Adapter Plate — 20 , .

بادئ ذي بدء - فحص الوحدات.

في جميع تعليمات بدء التشغيل ، يكتبون أنه إذا قمت بتوصيل الطاقة وظهرت شبكة AI-THINKER xxxxxxx WiFi ، فهذا يعني أن الجهاز يعمل. حدث ذلك مع أجهزتي - فقد قاموا جميعًا بإنشاء شبكة WiFi يمكنك الاتصال بها. مرحى! حصل! كنت مسرورًا ، لكن في وقت مبكر.

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

تعليمات لوحة صفراء
1. Android phone installation IOT.APK, IOS client be released later
2. shorting cap connected to the power to enter the programming mode, enter the normal operating state removed
3. Replace the battery, mobile search network «AI-THINKER» router
4. join the router (the router module form) password is: ai-thinker
5. after the success can be added directly to the control module of the mobile phone.
6. Enter the home router «SSID» and «Password» in the «Configure Device», then click on the icon at the top of the router, wait a few moments after the jump to join the router, connect the phone router WiFi, again «discovered device» to achieve control in the LAN.

:

1. Wi-Fi ( 5.0 !) IOT.APK, IOS
2. , .
3. ( ) Wi-Fi «AI-THINKER»
4. «ai-thinker»
5. IOT . . , .

كان التناقض هو أن شبكة xxxxxxxxxx AI-THINKER الخاصة بي لم تطلب كلمة مرور ، ولكن على الفور اتصل الهاتف بها. ونقطة التطبيق فارغة لم "ترى" ESP بعد الاتصال. تم إضاءة RGB LED باللون الأزرق مع تثبيت وصلة مرور أو خضراء بدونها.

الصورة

خمنت أنه ربما كان الصينيون حاملين - كانوا حاملين ، لكنهم نسوا وميض (أو وميض بشكل ملتوي). لذلك ، قررت أن أخيط نفسي. بالنسبة للبرامج الثابتة ، استخدمت ESP8266 Flasher. ثم ظهرت مفاجأة ثانية: لم يتعرف أي برنامج على اللوحة ، ولم يستجب للأوامر ، ولم تغرق البرامج الثابتة. متصل من خلال Arduino ومن خلال محول UART - لا شيء. تم بالفعل إعادة تحميل وميض اللوحين الآخرين مع LED ، ولكن هنا ممل. حتى تخمين رنين جهات الاتصال.

يتم عرض ثلاث جهات اتصال للبرامج الثابتة بشكل منفصل على هذا المنتدى: TX ، RX ، GND. لذلك اتضح أن TX تم تربيته على RX لـ ESP-12 نفسه ، على التوالي ، RX - على TX. على سبيل المثال كان من الضروري فقط تبديل سلكين: نقوم بتوصيل محول UART وفقًا للمخطط:

TX-TX
RX-RX
GND-GND
أو Arduino:
TX-RX
RX-TX
GND-GND

بعد الافتتاح ، ظهرت الوحدة في الحياة ، تم العثور على الوحدة الأصلية البرامج الثابتة الخاصة بالوميض LED (AI-THINKER-IOT-2014-10-17 165528.bin) وما زالت تومض بنفس ESP8266 Flasher. ظهرت كلمة مرور نقطة الوصول ، وشاهد التطبيق على الفور البطاقة الصفراء. التحذير الوحيد: من أجل الوميض ، من الضروري تثبيت رابط ، لإزالة جميع الحالات الأخرى. ولا تنس إعادة تشغيل الجهاز بعد الوميض.

ESP8266 ESP-07 مع لوحة مهايئ


تعليمات توصيل ESP-07 (ESP-12) عبر محول UART:

الصورة

  • الأحمر - الطاقة 3.3 فولت ؛
  • أسود - GND ؛
  • أصفر - على الجانب ESP8266 - RX ، على جانب USB-TTL - TX ؛
  • أخضر - على الجانب ESP8266 - TX ، على جانب USB-TTL - RX ؛
  • البرتقالي - CH_PD (CHIP ENABLE) - يجب دائمًا سحبه إلى السلطة ؛
  • الأزرق - GPIO0 - متصل من خلال المفتاح إلى الأرض لتمكين وضع وميض الوحدة. للبداية المعتادة لوحدة GPIO0 ، يمكنك تركها غير متصلة ؛
  • الرمادي - GPIO15 (MTDO ، HSPICS) يجب سحب هذا الدبوس على الأرض ؛
  • إذا قمت بالاتصال بـ Arduino ، فإن RX-RX و TX-TX.

باستخدام مكواة لحام ، تم دمج ESP-07 والمحول. أوصي بالمحول لأنه يسهل الاتصال بطريقة غير ملحومة باستخدام لوحة توصيل وأسلاك. في هذه الحالة ، استخدمت محول DC-DC من الصين للطاقة. كانت مستشعرات DS18B20 متاحة ، وتقرر توصيلها.

لم أكن أرغب في تثبيت HomesSmart على الفور ووقع الاختيار على مثل هذا المثال . لن أعد كتابة الدائرة والرمز - فهما متماثلان تقريبًا. لم يعمل على الفور ، ولكن مع Google و الدف بدأ البيانات على مراقبة الأشخاص وطارت.

لقد قمت بتنزيل البرنامج النصي من خلال ESplorer .

كان على اردوينو
image

أصبح على ESP8266
image

أنا في انتظار وحدة تزويد الطاقة المدمجة 220AC - 3.3DC لتحسين عدد الأسلاك.

LoLin V3 NodeMcu (Lolin)


تم نصح هذه اللوحة ببرنامج NodeMcu الثابت على الفور ، والذي تم من خلال برنامج NodeMcu المتعري. يتم تجميع البرامج الثابتة نفسها من قبل المصمم ، مما يسمح لك بتضمين أكثر العناصر الضرورية فقط.

علاوة على ذلك ، كان من المفترض توصيل والتحكم في مرحل 2 قناة والتحكم في شمعتين في غرفة النوم. هنا أريد أن أتطرق إلى شيء واحد. النسخة الصينية لمثل هذا التتابع لديها رابط JD-VCC - VCC - GND. بشكل افتراضي ، يتم تثبيته على دبابيس JD-VCC - VCC.

الصورة

لذلك ، لا يمكن تثبيت الطائر على VCC - GND - ترتيب دارة قصيرة! يتم استخدام جهات الاتصال الثلاثة هذه لتوفير طاقة إضافية للمرحل ، في الحالات التي قد لا يكون فيها التحكم كافياً لتشغيل المرحل. يشير وجود وصلة مرور إلى أن الطاقة تأتي من جهات اتصال "التحكم".

تم استخدام البرنامج النصي على النحو التالي:

نص البرنامج النصي
#================= init.lua =================
--      
ssid,pass = "SSID","PASSWORD";

if (file.open('wificonf') == true)then
   ssid = string.gsub(file.readline(), "\n", "");
   pass = string.gsub(file.readline(), "\n", "");
   file.close();
end

wifi.setmode(wifi.STATION)
wifi.sta.config(ssid,pass)
wifi.sta.autoconnect(1);
print('IP:',wifi.sta.getip());
--print('MAC:',wifi.sta.getmac());

led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
restart=0;

gpio.write(led1, gpio.HIGH);
gpio.write(led2, gpio.HIGH);


t=0
tmr.alarm(0,1000, 1, function() t=t+1 if t>999 then t=0 end end)

srv=net.createServer(net.TCP, 1000)
srv:listen(80,function(conn)
    conn:on("receive",function(client,request)
    --      _GET
            local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
    --    
       --    <html><body>,      \
   --        \,  </body></html>
    conn:send('HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nCache-Control: private, no-store\r\n\r\n\
   <!DOCTYPE HTML>\
<html>\
 <head>\
        <meta charset="UTF-8" />\
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> \
        <meta name="viewport" content="width=device-width, initial-scale=1.0"> \
        <title>My control</title>\
   </head><body>\
        <div class="container">\
            <section class="color-1">\
                <p>\
                    <a href=\"?pin=ON1\"><button class="btn btn-4 btn-4a">Back ON</button></a>\
                    <a href=\"?pin=ON2\"><button class="btn btn-4 btn-4a">Bra ON</button></a>\
                </p>\
                <p>\
                    <a href=\"?pin=OFF1\"><button class="btn btn-5 btn-5a">Back OFF</button></a>\
                    <a href=\"?pin=OFF2\"><button class="btn btn-5 btn-5a">Bra OFF</button></a>\
                </p>\
            </section>\
        </div>\
</body></html>')
    --  
    --    
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.LOW);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.HIGH);
        end
        
  
              
    conn:on("sent",function(conn) conn:close() end)
    collectgarbage();

    
    end)
    
end)

#========================================


لم أستطع إعادة العثور على رابط المصدر. لكن المخطط بسيط: بالنسبة إلى Lolin ، نربط المرحل 1 والمرحل 2 بمخرجات D3 و D4 ( led1 = 3 led2 = 4 ). ثم نذهب إلى عنوان IP الصادر عن جهاز التوجيه الخاص بنا ونرى الصفحة:

الصورة

للأسف الشديد ، لم أحسب كيفية جلب الجمال ، على سبيل المثال ، لربط ملف على غرار CSS. السؤال هو في استخدام الملفات الفردية عند عرض الصفحة ، وليس في تعيين النمط.

آمل حقًا أن تكون هذه المعلومات مفيدة لشخص واحد على الأقل. ولا تحكم بدقة على المقال الأول.

المراجع


Source: https://habr.com/ru/post/ar394535/


All Articles