در این آموزش قصد داریم نحوه اتصال ماژول وای فای HLK-RM04 به آردوینو را آموزش دهیم 🙂 HLK-RM04 یک ماژول ارزان قیمت به منظور ارتباط سریال با WIF ، سریال به Ethernet و همچنین Ethernet به WIFI با قابلیت ارتباط دوطرفه میباشد که توسط شرکت Shenzhen Hi-Link Electronic طراحی و ساخته شده است.کار با این ماژول نسبت به ماژولهای موجود در بازار بسیار ساده میباشد. در ادامه آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.
در این مثال جهت نمایش خروجی از یک سنسور دما LM35 استفاده کرده ایم و برای راحتی کار، ماژول را از شیلد جدا نمودیم.
سخت افزار مورد نیاز
اتصالات
اتصال GND ماژول به GND آردوینو
اتصال ۵ ولت ماژول به ۵ ولت آردوینو
اتصال پین ۲۰(RX) به پین ۱(TX) آردوینو
اتصال پین ۲۱(TX) به پین ۰(RX) آردوینو
اتصال ۵ولت سنسور دما به ۵ ولت آردوینو
اتصال GND سنسور دما به GND آردوینو
اتصال out سنسور دما به A1 آردوینو
پس از روشن کردن ماژول نام HI-LINK-XXXX روی لیست وای فای ها در لبتاپ و موبایتان ظاهر میشود اتصال را بزنید و برای رمز کد ۱۲۳۴۵۶۷۸ را وارد کنید.
IP پیش فرض ماژول http://192.168.16.254 است. آن را در یک مرورگر وارد کنید. در این مرحله از شما نام کاربری و پسورد ورود به صفحه تنظیمات ماژول گرفته میشد (دقیقا مانند اکثر مودم های adsl) هر دو را admin وارد کنید و لاگین کنید تا صفحه تنظیمات ماژول برایتان باز شود.
به احتمال زیاد وارد صفحه تنظیمات نمیشوید دلیل این امر این است که ip شما باید در رنج ماژول باشد برای این کار ip 192.168.16.250 و گیتوی ۱۹۲٫۱۶۸٫۱۶٫۲۵۴ gateway در ویندوز اضافه کنید تا صفحه تنظیمات برای شما باز شود.
اگر این صفحه باز شد نشان دهنده این است که تنظیمات آی پی و اتصال شما به ماژول درست است. همانطور که مشاهده میکنید از این صفحه میتوانید تنظیماتی را مانند نرخ انتقال، SSID، رمز وایرلس و … برای ماژول تنظیم کنید.
اگر صفحه باز نشد باید تنظیمات آی پی را انجام دهید و آی پی رنج ۱۹۲٫۱۶۸٫۱۶٫۰ را اضافه کنید. طبق تصاویر زیر این کار را انجام دهید:
از کنترل پنل گزینه ی Network and Sharing center یا از منوی استارت داخل جست و جو آن را پیدا کنید:
اینجا لیست کارت شبکه ها وجود دارد که کارت شبکه وایرلس به نام WIFI یا wireless network connection شناخته میشود.
سپس مسیر زیر را دنبال کنید.
اعداد داخل تصویر را دقیقا وارد کنید و ok کنید.
حالا دیگر باید بتوانید با آی پی ۱۹۲٫۱۶۸٫۱۶٫۲۵۴ وارد صفحه تنظیمات ماژول بشوید. اگر صفحه باز شد یعنی اتصالات درست است و میتوانید مرحله برنامه نویسی آردوینو برای متصل کردن به ماژول را شروع کنید.
کد نویسی
float analogVal; float temp; float referenceVoltage; void setup() { Serial.begin(57600); analogReference(INTERNAL); referenceVoltage = 2.00; //Set to 5, 3.3, 2.56 or 1.1 depending on analogReference Setting } void loop() { boolean has_request = false; if (Serial.available()) { while(Serial.available()) { char c = Serial.read(); } has_request = true; } if (has_request) { Serial.println("HTTP/1.1 200 OK"); Serial.println("Content-Type: text/html"); Serial.println("Connection: close"); // the connection will be closed after completion of the response Serial.println("Refresh: 5"); // refresh the page automatically every 5 sec String sr = "<!DOCTYPE HTML>n"; sr += "<html>n"; analogVal=0; temp=0; int analogChannel = 1; // Sensor should be connected to Analog 1 for(int i = 0; i < 30; i++) { // Get 30 readings from teh sensor to have an acurate result analogVal += (analogRead(analogChannel)* 0.48828125); delay(5); //Delay each reading for 5 millisecons } temp=analogVal/30; //Get the average value temp = (referenceVoltage * temp * 100) / 1023; // Caclulate Celsius value correctly sr += "<center>"; sr += "<h1 style=color:blue>"; sr +=temp; sr+="</h1>"; sr += "<br />n"; sr += "</center>"; sr += "</html>"; Serial.print("Content-Length: "); Serial.print(sr.length()); Serial.print("rnrn"); Serial.print(sr); has_request = false; } }
شرح برنامه:
در این قسمت از برنامه بررسی میشود که درخوستی از سمت سریال آردوینو آمده اگر درخواستی باشد بافر را خالی میکند و متغییر has_request را true قرار میدهد که نشان دهند این است که کاربر درخواستی برای باز کردن صفحه داده:
boolean has_request = false; if (Serial.available()) { while(Serial.available()) { char c = Serial.read(); } has_request = true; }
در ادامه برنامه اگر درخاستی آمده بود با دستور print و متغییر sr محتوای html را که قرار است response شود به کاربر ساخته میشود و اطاعات پورت آنالوگ که از سمت سنسور دما می آید را داخل html مینوسد:
if (has_request) { Serial.println("HTTP/1.1 200 OK"); Serial.println("Content-Type: text/html"); Serial.println("Connection: close"); // the connection will be closed after completion of the response Serial.println("Refresh: 5"); // refresh the page automatically every 5 sec String sr = "<!DOCTYPE HTML>n"; sr += "<html>n"; analogVal=0; temp=0; int analogChannel = 1; // Sensor should be connected to Analog 1 for(int i = 0; i < 30; i++) { // Get 30 readings from teh sensor to have an acurate result analogVal += (analogRead(analogChannel)* 0.48828125); delay(5); //Delay each reading for 5 millisecons } temp=analogVal/30; //Get the average value temp = (referenceVoltage * temp * 100) / 1023; // Caclulate Celsius value correctly sr += "<center>"; sr += "<h1 style=color:blue>"; sr +=temp; sr+="</h1>"; sr += "<br />n"; sr += "</center>"; sr += "</html>"; Serial.print("Content-Length: "); Serial.print(sr.length()); Serial.print("rnrn"); Serial.print(sr); has_request = false; }
حالا میتوانید خروجی سریال را بررسی کنید که چه چیز هایی سمت کلاینت برگردانده میشود.
جهت دریافت اطلاعات از آردوینو بوسیله مرورگر آی پی به همراه پورت ۱۹۲٫۱۶۸ propecia 1mg prix.16.254:8080را وارد کنید و ریسپانس دریافت شده روی مرورگر ظاهر میشود که دما را نشان میدهد.
با سلام من میخوام با این ماژول به اپپ اندروید متصل بشم و مثلا یه led خاموش روشن کنم میخوام از اردوینو استفاده نکم،کلا میتونید راهنمایی کنید؟
با تشکر
من وقتی خواستم برنامه رو تو برد آپلود کنم با این Error ها موجه شدم دلیلش چی میتونه باشه
Arduino: 1.8.2 (Windows 10), Board: “Arduino/Genuino Uno”
Sketch uses 6360 bytes (19%) of program storage space. Maximum is 32256 bytes.
Global variables use 388 bytes (18%) of dynamic memory, leaving 1660 bytes for local variables. Maximum is 2048 bytes.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x87
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x87
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.