به نام خدا : پروژه led flasher ماژول esp8266 12e با webpage و شبکه داخلی
پروژه led flasher ماژول esp8266 12e با webpage و شبکه داخلی
توضیح پروژه : خب میخوایم یه 4 تا led رو از طریق صفحه وب کنترل کنیم، البته اسم فلشر شاید برا این پروژه زیاد صحیح نباشه ولی خب بگذریم زیاد مهم نیست، گفتم یه اسمی گزاشته باشم!؛ عرضم به ظهورتون که تو این پروژه باید از هات اسپات موبایل یا یه وایفای که تو خونتون دارید استفاده کنید، یعنی ماژول وایفای به اون هات اسپات موبایل یا اون وایفای خونتون وصل بشه و کامپیتور شما هم به اون شبکه هات اسپات موبایل یا اون وایفای خونتون وصل باشه، تا ماژول و کامپیتور بتونن همدیگه رو پیدا کنن، لذا هر دو باید به یه شبکه داخلی وصل باشن؛ تو این پروژه بعد پروگرام کردن برنامه، تو پنجره سریال، ماژول آیپی خودشو ارسال میکنه به پنجره سریال، ما اون آیپی رو در صفحه مرورگر میزنیم و یه صفحه باز میشه و …. ( بقیه توضیحات تو فیلم هستش به صورت تصویری! )
شماتیک : برای دیدن در اندازه اصلی روی عکس کلیک کنید.
کد پروژه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
#include <ESP8266WiFi.h> WiFiClient client; WiFiServer server(80); const char* ssid = "***"; const char* password = "***"; String command = "", OriginalData = ""; // Command received from Android device // WebPage += WebPage1 + WebPage2 String WebPage = "<button> <a id=\"r1on\" onclick=\"Send(this);\">LED1 Turn ON</a> </button> <button> <a id=\"r1off\" onclick=\"Send(this);\">LED1 Turn OFF</a> </button> <br> <button> <a id=\"r2on\" onclick=\"Send(this);\">LED2 Turn ON</a> </button> <button> <a id=\"r2off\" onclick=\"Send(this);\">LED2 Turn OFF</a> </button> <br> <button> <a id=\"r3on\" onclick=\"Send(this);\">LED3 Turn ON</a> </button> <button> <a id=\"r3off\" onclick=\"Send(this);\">LED3 Turn OFF</a> </button> <br> <button> <a id=\"r4on\" onclick=\"Send(this);\">LED4 Turn ON</a> </button> <button> <a id=\"r4off\" onclick=\"Send(this);\">LED4 Turn OFF</a> </button> <p id=\"Rcv\"> </p> <script> function Send(btn) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById(\"Rcv\").innerHTML += this.responseText+ \"</br>\"; } }; xhttp.open(\"GET\", \"http://"; String WebPage1; String WebPage2 = ":80/\" + btn.id, true); xhttp.send(); } </script>"; // Set Relay Pins #define LED1 D1 #define LED2 D2 #define LED3 D3 #define LED4 D4 void setup() { Serial.begin(115200); connectWiFi(); server.begin(); pinMode( LED1, OUTPUT ); pinMode( LED2, OUTPUT ); pinMode( LED3, OUTPUT ); pinMode( LED4, OUTPUT ); digitalWrite( LED1, LOW ); digitalWrite( LED2, LOW ); digitalWrite( LED3, LOW ); digitalWrite( LED4, LOW ); } void loop() { client = server.available(); if (!client) return; command = checkClient(); Serial.println( command ); if( command.startsWith("GET / HTTP/1.1") || command.startsWith("GET / HTTPS/1.1") ) { SendDataToClient( WebPage ); } else { OriginalData = command.substring( 5, command.indexOf('\r') - 9 ); if( OriginalData == "r1on" ){ digitalWrite(LED1,HIGH); } else if( OriginalData == "r1off" ){ digitalWrite(LED1,LOW); } else if( OriginalData == "r2on" ){ digitalWrite(LED2,HIGH); } else if( OriginalData == "r2off" ){ digitalWrite(LED2,LOW); } else if( OriginalData == "r3on" ){ digitalWrite(LED3,HIGH); } else if( OriginalData == "r3off" ){ digitalWrite(LED3,LOW); } else if( OriginalData == "r4on" ){ digitalWrite(LED4,HIGH); } else if( OriginalData == "r4off" ){ digitalWrite(LED4,LOW); } else if( OriginalData == "allon" ){ digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); } else if( OriginalData == "alloff" ){ digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); digitalWrite(LED4,LOW); } Serial.println( OriginalData ); // Send to Serial SendDataToClient( OriginalData ); // Send to webPage } } void connectWiFi() { Serial.println("Connecting to WIFI"); WiFi.begin(ssid, password); while( (!(WiFi.status() == WL_CONNECTED)) ){ delay(300); Serial.print(".."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("NodeMCU Local IP is : "); Serial.println( WiFi.localIP() ); Serial.println("-----------------------"); WebPage1 = WiFi.localIP()[0] + (String)"." + WiFi.localIP()[1] + (String)"." + WiFi.localIP()[2] + (String)"." + WiFi.localIP()[3]; WebPage += WebPage1 + WebPage2; } String checkClient(void) { while(!client.available()) delay(1); String request = client.readStringUntil('\n'); return request; } void SendDataToClient(String echo) { client.println(echo); client.stop(); delay(1); } |
فیلم پروژه :
امیدوارم این مطلب مفید باشه براتون، فعلا یا علی.
توصیه میکنم فیلم زیر رو حتما ببیند : http://www.aparat.com/v/ZI9OP
مهمان
سلام مهندس ممنون بابت زحمتی که میکشی انشالله دانشت زود به نتیجه میرسه و کارآفرین موفقی بشی
سوالی که دارم اینکه میشه با اردینو r3 و یه ماژول esp8266 این پروژه را طراحی کرد
یعنی یه کتابخونه ای که با کتابخونه افزایش ارتباط سریال پایه های wifi (rx و tx ) را معرفی کنیم و با اون کتابخونه
هم یه وب پیچ داخلی و هم یه وب پیچ متصل به سرور وبسایت بسازیم
مهمان
واقعا عالیه، یک هفته ای هست روی پروژه های ساییتون کار می کنم، احسنت ولی حیف که خوب توضیح نمی دید، همش میگید حالشو ندارم حسش نیست، کلا یه جوری حرف می زنید کسی سایت پربارتون رو ندیده باشه فکر می کنید تنبلید، البته ببخشید صریح حرف زدم، خلاصه که خیلی عالیه ولی حیف که کمی بیشتر توضیح نمی دهید مثلا در ابتدای هر پروژه بیان کنید دقیقا چه المان هایی نیاز داره و چه تفاوتی با المان مشابهش داره. مثلا تو همین پروژه این ماژول ها رو دیدم، کدوم مناسبه؟
ماژول WIFI ESP8266
ماژول NODE MCU WIFI esp8266
ماژول ESP8266 مدل ESP-07
در پایان بفرمایید امثال من چکار کنیم سپاسگذار سایت کم نظیرتون باشیم؟
مهمان
سلام
خیلی ممنون از مطالب و اموزش های مفیدتون.
من با استفاده از esp8266 یه led رو خاموش روشن میکنم، ipش رو هم از dhcp میگیره، ولی مشکلی که دارم این هست که وقتی مدت زیادی میگذره و یا esp ریستارت میشه ipیی که از dhcp گرفته بود رو فراموش میکنه در حالیکه من میخوام هر وقت روشن بود خودش به اون ssid معلومی که مشخص کردم وصل شه و ip بگیره
یه جوری که مثلا اون کد هنگام reboot شدن با تنظیمات اولیه اش بیاد بالا یا یه چیزی که منتهی به راه حل مشکلم بشه، ولی هنوز موفق به این کار نشدم، شما میتونید راهنماییم کنید؟
مهمان
سلام و خدا قوت
چطور میشه در ماژول esp8266 12e
ssid و password رو از طریق سریال به برد داد
یا بهتره بگم برد رو بدون اینکه دوباره پروگرم کنیم ssid و pass رو از طریقی مثل سریال عوض کنیم
مهمان
مهندس ممنون از فیلم زیبا و جالب شما ایران همیشه مدیون مهندسانی چون شما هستند که در الکترونیک سرامد ودر شخصیت و مرام خمس علم بزرگ هستند
مهمان
سلام خسته نباشید ببخشید من این برنامه ای که شما انجام دادید رو انجام دادم ولی برنامه فقط۱بار انجام میشه فقط میتونم ledهارو۱بارخاموش و روشن کنم میشه بگین باید چیکار کنم؟
مهمان
سلام اقا ی دمیرچیلو خسته نباشید واقعا مطالب مفید ی در سایت قرار میدهید و زحمت فراوان میکشید .فقط خواستم نکته ای را به شما بگویم که شما در سایت هی مطالب سیاسی قرار میدهید . که فقط برای تخریب گروهی خاص است .ای کاش کمی هم به ایام عزاداری های مختلف توجه می کردید و چهار تا عکسی می گزاشتید برای امامان ما. ایا تخریب یک سری ادم مهم تر از اهل بیت است؟ فقط خواستم گوشزد کرده باشم .یا کلا مطلب نزارید در سایت یا حداقل ایه قران را به رای خود تفسیر نکنید مگر شما علم تفسیر بلدید ؟ یا علم رجال ؟ کمی بیشتر تحقیق کنید هر کسی شایستگی تفسیر ندارد ؟ خواهشا قران را هم سیاسی نکنید والسلام خداحافظ
نویسنده این مطلب
سلام
من متن صحبت آقایون رو گزاشتم-اگه متن صحبت خودشون رو بزارم میشه تخریب که من حرفی ندارم – تو روز روشن دارن سهم خاهی میکنن و میگن ما زدیم در حالی که دارن سروغ میگن – حرف وزیر اطلاعاتشون هم که اون خندس – در ضمن قرآن رو تفسیر نکردم – از معنیش استفاده کردم. یا علی
مهمان
سلام
ببخشید آردوینو یه قابلیت داره به اسم سریال مجازی که میشه هر پایه به صورت rx و tx قرار داد
این قابلیت در میکرو های دیگر هم هست
در avr چی
این قابلیت نرم افزاریه یا سخت افزاریه به چه صورتی هست
نویسنده این مطلب
سلام
در آردوینو کتابخونه آمادش هستش که شما استفاده میکنید – در میکروهای دیگه هم باید کتابخونشو پیدا کنید یا خودتون بنویسید
مهمان
پس تحت سخت افزار نیست
وابسته به نرم افزاره
نویسنده این مطلب
دقیقا – به همین خاطر بهش میگن uart نرم افزاری.
در ضمن آردوینو و avr هر دو یکی هستن
مهمان
با سلام بنده دانشجوی نرم افزار هستم و علاقه زیادی به الکترونیک دارم ولی متاسفانه هرچی به دنبال یاد گیری از دوستان رفتم برخورد مناسبی ندیدم . اگر ممکنه در تلگرام با شما در ارتباط باشم با سپاس
۰۹۳۶۱۵۲۰۰۲۲
نویسنده این مطلب
سلام – به ایمیلت سر بزن.