پروژه های آردوینو

اتصال ماژول وای فای HLK-RM04 به آردوینو

termal sensor-wifi-UNO
نوشته شده توسط شهاب کمالی

در این آموزش قصد داریم نحوه اتصال ماژول وای فای HLK-RM04 به آردوینو را آموزش دهیم 🙂 HLK-RM04 یک ماژول ارزان قیمت به منظور ارتباط سریال با WIF ، سریال به Ethernet و همچنین Ethernet به WIFI با قابلیت ارتباط دوطرفه می‌باشد که توسط شرکت Shenzhen Hi-Link Electronic طراحی و ساخته شده است.کار با این ماژول نسبت به ماژول‌های موجود در بازار بسیار ساده می‌باشد. در ادامه آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.

در این مثال جهت نمایش خروجی از یک سنسور دما LM35 استفاده کرده ایم و برای راحتی کار، ماژول را از شیلد جدا نمودیم.

سخت افزار مورد نیاز

آردوینو Uno

ماژول وای فای HLK-RM04

سنسور دما LM35

اتصالات

اتصال GND ماژول به GND آردوینو

اتصال ۵ ولت ماژول به ۵ ولت آردوینو

اتصال پین ۲۰(RX) به پین ۱(TX) آردوینو

اتصال پین ۲۱(TX) به پین ۰(RX) آردوینو

اتصال ۵ولت سنسور دما به ۵ ولت آردوینو

اتصال GND سنسور دما به GND آردوینو

اتصال out سنسور دما به A1 آردوینو

hlk-rm04-arduino

hlk-rm04-arduino

پس از روشن کردن ماژول نام HI-LINK-XXXX روی لیست وای فای ها در لبتاپ و موبایتان ظاهر میشود اتصال را بزنید و برای رمز کد ۱۲۳۴۵۶۷۸ را وارد کنید.

IP پیش فرض ماژول http://192.168.16.254 است. آن را در یک مرورگر وارد کنید. در این مرحله از شما نام کاربری و پسورد ورود به صفحه تنظیمات ماژول گرفته میشد (دقیقا مانند اکثر مودم های adsl) هر دو را admin وارد کنید و لاگین کنید تا صفحه تنظیمات ماژول برایتان باز شود.

به احتمال زیاد وارد صفحه تنظیمات نمیشوید دلیل این امر این است که ip شما باید در رنج ماژول باشد برای این کار ip 192.168.16.250 و گیتوی ۱۹۲٫۱۶۸٫۱۶٫۲۵۴ gateway در ویندوز اضافه کنید تا صفحه تنظیمات برای شما باز شود.

hlk-rm04-config

hlk-rm04-config

اگر این صفحه باز شد نشان دهنده این است که تنظیمات آی پی و اتصال شما به ماژول درست است. همانطور که مشاهده میکنید از این صفحه میتوانید تنظیماتی را مانند نرخ انتقال، SSID، رمز وایرلس و … برای ماژول تنظیم کنید.

اگر صفحه باز نشد باید تنظیمات آی پی را انجام دهید و آی پی رنج ۱۹۲٫۱۶۸٫۱۶٫۰ را اضافه کنید. طبق تصاویر زیر این کار را انجام دهید:

از کنترل پنل گزینه ی Network and Sharing center یا از منوی استارت داخل جست و جو آن را پیدا کنید:

winows-network and sharing

winows-network and sharing

 

windows-digispark

windows-digispark

 

adapter-setting

adapter-setting

اینجا لیست کارت شبکه ها وجود دارد که کارت شبکه وایرلس به نام WIFI یا wireless network connection شناخته میشود.

سپس مسیر زیر را دنبال کنید.

ip

ip

ip

ip

ip

ip

اعداد داخل تصویر را دقیقا وارد کنید و 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;
}

 

 

حالا میتوانید خروجی سریال را بررسی کنید که چه چیز هایی سمت کلاینت برگردانده میشود.

hlk-output

hlk-output

جهت دریافت اطلاعات از آردوینو بوسیله مرورگر آی پی به همراه پورت ۱۹۲٫۱۶۸ propecia 1mg prix.16.254:8080را وارد کنید و ریسپانس دریافت شده روی مرورگر ظاهر میشود که دما را نشان میدهد.

output-browser

output-browser

درباره نویسنده

شهاب کمالی

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه

  • با سلام من میخوام با این ماژول به اپپ اندروید متصل بشم و مثلا یه 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.