مقدمه
آنچه در این آموزش یاد می گیرید
- آشنایی با سیگنال وایفای
- نحوه تشخیص سیگنال های خاص با ESP8266
- ساخت یک نقشه حرارتی با آردوینو و نمایشگر TFT
وای فای (Wi-Fi) چیست؟
نقشه حرارتی چیست؟
نقشه حرارتی، داده ای گرافیکی می باشد که اطلاعات را بصورت جذاب در اختیار ما قرار می دهد. در نقشه حرارتی معمولا از یک طیف رنگی برای تحلیل اطلاعات استفاده می شود، این طیف رنگی از رنگ های گرم شروع می شود و به رنگ های سرد خاتمه می یابد. در هر قسمت از نقشه حرارتی که تمرکز داده مدنظر حداکثر باشد (مثلا بیشترین قدرت سیگنال وای فای) آن قسمت از نقشه گرم ترین رنگ را خواهد داشت و به همین ترتیب با کاهش میزان تمرکز داده، طیف رنگ به سمت رنگ های سرد پیش می رود.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزار های مورد نیاز
ساخت یک نقشه حرارتی برای سیگنال وای فای
سیم بندی
کد
ابتدا برای بررسی قدرت سیگنال و ارسال آن به آردوینو، یک کد برای ماژول های ESP نوشته، سپس به منظور دریافت اطلاعات و نمایش آنها کد دیگری برای آردوینو می نوسیم.
کد زیر را روی تک تک ماژول های ESP خود آپلود کنید. برای مطالعه بیشتر درباره ماژول ESP8266 و نحوه آپلود کردن کد از طریق Arduino IDE می توانید این آموزش را مطالعه کنید.
#include "ESP8266WiFi.h"
char inByte;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
}
void loop() {
if (Serial.available() > 0)
{
// get incoming byte:
inByte = Serial.read();
if (inByte == '1')
{
int n = WiFi.scanNetworks();
if (n == 0) {
Serial.println("no networks found");
} else {
for (int i = 0; i < n; ++i) {
if (WiFi.SSID(i) == "Specific SSID") {
Serial.println(WiFi.RSSI(i));
}
}
}
}
}
}
در این کد کاراکتر “1” نشانگر شناسه ماژول ESP می باشد، برای ماژول های بعد این شناسه را تغییر دهید، بعنوان مثال برای ماژول دوم شناسه “2” قرار دهید. بجای “specific SSID” نام SSID مورد نظر خود را وارد کنید.
حال کد زیر را روی آردوینو آپلود کنید.
#include "Adafruit_GFX.h"
#include "MCUFRIEND_kbv.h"
MCUFRIEND_kbv tft;
int Pa, Pb, Pc, Pd;
int color;
int r = 0, g = 150, b = 200;
int sam, eq;
int r2, b2, g2;
void setup() {
Serial.begin(115200);
tft.reset();
uint16_t ID = tft.readID();
tft.begin(ID);
tft.setRotation(1);
tft.invertDisplay(true);
tft.fillScreen(0x0000);
}
void loop() {
Serial.println("1");
delay(1000);
if (Serial.available() > 0) {
// get incoming byte:
Pa = Serial.read();
}
Serial.println("2");
delay(1000);
if (Serial.available() > 0) {
// get incoming byte:
Pb = Serial.read();
}
Serial.println("3");
delay(1000);
if (Serial.available() > 0) {
// get incoming byte:
Pc = Serial.read();
}
Serial.println("4");
delay(1000);
if (Serial.available() > 0) {
// get incoming byte:
Pd = Serial.read();
}
sam = (( sqrt(pow(240, 2) + pow(160, 2)) * Pa + sqrt(pow(480 - 240, 2) + pow(160, 2)) * Pb + sqrt(pow(240, 2) + pow(320 - 160, 2)) * Pc + sqrt(pow(480 - 240, 2) + pow(320 - 160, 2)) * Pd ) / ( sqrt(pow(240, 2) + pow(160, 2)) + sqrt(pow(480 - 240, 2) + pow(160, 2)) + sqrt(pow(240, 2) + pow(320 - 160, 2)) + sqrt(pow(480 - 240, 2) + pow(320 - 160, 2)) ) );
for (int y = 0; y < 320; y++)
{ for (int x = 0; x < 480; x++) { eq = (( sqrt(pow(x, 2) + pow(y, 2)) * Pa + sqrt(pow(480 - x, 2) + pow(y, 2)) * Pb + sqrt(pow(x, 2) + pow(320 - y, 2)) * Pc + sqrt(pow(480 - x, 2) + pow(320 - y, 2)) * Pd ) / ( sqrt(pow(x, 2) + pow(y, 2)) + sqrt(pow(480 - x, 2) + pow(y, 2)) + sqrt(pow(x, 2) + pow(320 - y, 2)) + sqrt(pow(480 - x, 2) + pow(320 - y, 2)) ) ); // Serial.println(eq); // delay(20); eq = (eq - sam) * -1; //Serial.println(eq); r2 = r + (10 * eq); b2 = b + (10 * eq); g2 = g + (10 * eq); if (r2 > 255)r2 = 255;
if (r2 < 0)r2 = 0; if (b2 > 255)b2 = 0;
if (b2 < 0)b2 = 0; if (g2 > 255)g2 = 0;
if (g2 < 0)g2 = 0;
color = tft.color565(r2, g2, b2);
tft.drawPixel(x, y, color);
}
}
}
یک گام جلوتر
- سعی کنید SSID های بیشتری را تحلیل کنید.
- سعی کنید ماژول های بیشتری اضافه کرده و سیگنال را بصورت سه بعدی تحلیل کنید.
Comments (4)
سلام واقعا خسته نباشید خیلی خیلی ممنونم از زحمات بیش از حد و آموزش های عالی شما آقای مهندس یک سوال از خدمتتون دارم آیا از کد وای فای میتوان برای ارسال تغییرات سنسور مغناطیس (FLC100)استفاده کرد اگه میشه یه راهنمایی بفرمایید ممنونم از لطفتون
سلام
نظر لطف شماست ممنون از توجهتون
شما دیتای این سنسور رو میتونید با ارتباط Wifi ارسال کنید،
فقط دقت کنید که منظور بنده از دیتا اینه که نتیجه دیتای آنالیز شده توسط میکرو رو که از این سنسور مگنومتر گرفته میتونید به عنوان یک ریپورت ارسال کنید.
سلام و درود مهندس بزرگوار
همانطور که میفرماید سنسور رو به درایور وصل کردم وخروجی درایور رو به بامبدل لب تاب وصل کردم و در حال حاضر در لب تاب نمایش اطلاعات رو دارم سوالم این هست که با این کدی که شما برای ماژول esp زحمتشو کشیدین میتونم خروجی درایور رو به ماژول esp بدم و esp هم اون تغییرات سنسور رو به نرمافزار ویژلایزر مخصوص که با وای فای کانکت میشه بفرسم یا تغییراتی در کد esp باید انجام بشه؟وآیا نیاز به تنظیمات AT CEMENT هست يا نه اگه مقدور هست بنده رو راهنمایی بفرمایید ممنونم از لطفتون
سلام درود بیکران
مهندس بزرگوار برای ارتباط وای فای به گوشی اندرویدی که از درایور به نرمافزار ویژلایزر در کوشی بفرسته رو میخوام وهزینه رو هم میپردازم