سرعت سنج لایک اینستاگرام به وسیله ی آردوینو و ESP8266

فهرست مطالب

مقدمه

گسترش شبکه های اجتماعی مفهومی به نام “لایک” را به همراه خود وارد زندگی ما کرده است. در این پروژه یاد می گیرید که چگونه سرعت لایک شدن اینستاگرام خود را بر حسب لایک بر دقیقه استخراج کرده و آن را روی یک شاخص عقربه ای نشان دهید.

آنچه در این آموزش یاد می گیرید

ماژول ESP8266 چیست؟

یکی از پرکاربرد ترین ماژول های ارتباط بی سیم (WIFI)، ماژول های ESP8266 است. این ماژول ها در هر دو حالت کاری سرور و کلاینت قابل استفاده هستند. ماژول های خانواده ی ESP8266 ورژن های زیادی دارند. در این پروژه از ورژن 01 این ماژول ها استفاده شده است. ولتاژ کاری این ماژول 3.3 ولت است و پروتکل ارتباطی آن سریال است. به همین دلیل به راحتی با بردهای آردوینو راه اندازی می شوند.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

ماژول ESP8266 × 1
آردوینو نانو × 1
ماژول مبدل TTL به USB × 1
سروو موتور MG995 × 1

نرم افزارهای مورد نیاز

Arduino IDE

سرعت سنج لایک اینستاگرام: سیم بندی

سرعت سنج لایک اینستاگرام: کد

برای این پروژه باید دو کد جداگانه بنویسید. یکی برای آپلود کردن روی خود ماژول ESP8266 و دیگری برای آپلود کردن روی آردوینو.

کدی که روی ماژول وای فای می ریزید برای اتصال و  گرفتن اطلاعات از سایت اینستاگرام و کدی که روی آردوینو می ریزید برای تحلیل این اطلاعات و چرخاندن موتور است.

کد زیر را روی آردوینوی خود آپلود کنید. اگر اولین بار است که از آردوینو استفاده می کنید، مراحل زیر را دنبال کنید:

  1. به آدرس www.arduino.cc/en/Main/Software رفته و نرم افزار IDE را متناسب با سیستم عامل خود دانلود و نصب کنید.
  2. نرم افزار Arduino IDE را اجرا کنید. تمام کد های پیش فرض را پاک کرده و کد زیر را به جای آن کپی کنید.
  3. نوع آردوینو خود را از پنجره ی Tools و قسمت Board انتخاب کنید.
  4. پورتی که (COM) آردوینو به آن متصل است را در پنجره ی Tools انتخاب کنید.
  5. دکمه ی Upload (شکلی که شبیه فلش است) را بزنید تا کد شما روی آردوینو آپلود شود.
  6. شما با موفقیت کد خود را روی آردوینو ریختید.
#include "Servo.h"
    Servo myservo;

String inputString = "";         // a String to hold incoming data
boolean stringComplete = false;  // whether the string is complete

long flike;
long like;
long mlike;

void setup() {
  // initialize serial:
  Serial.begin(115200);
  myservo.attach(9);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
}


void loop() {
  // print the string when a newline arrives:
  
  if (stringComplete) {
    flike=like; 
    like=inputString.toInt();
    Serial.println(like);
    // clear the string:
    inputString = "";
    stringComplete = false;
  }

  mlike=like-flike;
  mlike=mlike*20;
//Serial.print(mlike);
  if (mlike==0) {mlike = 0;}
  if (mlike==1) mlike = 20;
  if (mlike<=10 && mlike>1) mlike = map(mlike, 1, 10, 20, 50);
  if (mlike<=30 && mlike>10) mlike = map(mlike, 10, 30, 50, 70);
  if (mlike<=50 && mlike>30) mlike = map(mlike, 30, 50, 70, 90);
  if (mlike<=70 && mlike>50) mlike = map(mlike, 50, 70, 90, 110);
  if (mlike<=100 && mlike>70) mlike = map(mlike, 70, 100, 110, 130);
  if (mlike<=200 && mlike>100) mlike = map(mlike, 100, 200, 130, 150);
  if (mlike<=500 && mlike>200) mlike = map(mlike, 200, 500, 150, 170);
  if (mlike<=1000 && mlike>500) mlike = map(mlike, 500, 1000, 170, 180);
  myservo.write(mlike);
  //Serial.print("    ");
  //Serial.println(mlike);
   delay(15);     
  
}

/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

کتابخانه ی زیر را دانلود کرده و آن را نصب کنید.

برای نصب کتابخانه ها، از پنجره ی Sketch و بخش Include Library، گزینه ی Add .ZIP Library را انتخاب کنید و فایل کتابخانه ای که دانلود کردید را انتخاب کنید.

سپس کد زیر را روی ماژول وای فای بریزید. اگر تاکنون به صورت مستقیم ماژول وای فای را پروگرام نکردید، به آموزش زیر مراجعه کنید.

راهنمای کامل مبتدیان برای استفاده از ماژول ESP8266 با Arduino IDE

کتابخانه‌های مورد نیاز:

json-streaming-parser-master

                     InstagramStats


#include "InstagramStats.h"
#include "ESP8266WiFi.h"
#include "WiFiClientSecure.h"
#include "JsonStreamingParser.h"

char ssid[] = "Electropeak.com";       // your network SSID (name)
char password[] = "electropeak1928374650";  // your network key

WiFiClientSecure client;
InstagramStats instaStats(client);

unsigned long delayBetweenChecks = 1000; //mean time between api requests
unsigned long whenDueToCheck = 0;

//Inputs
String userName = "arduino.cc"; // Replace your Username


void setup() {

  Serial.begin(115200);
  
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  IPAddress ip = WiFi.localIP();
}

void getInstagramStatsForUser() {
  InstagramUserStats response = instaStats.getUserStats(userName);
  Serial.println(response.followedByCount);
}

void loop() {
  unsigned long timeNow = millis();
  if ((timeNow > whenDueToCheck))  {
    getInstagramStatsForUser();
    whenDueToCheck = timeNow + delayBetweenChecks;
  }
}

سرهم بندی

بعد از بستن مدار و آپلود کد ها نوبت به ساخت یک جعبه ی مناسب برای پروژه است. برای این کار می توانید از پلکسی گلس استفاده کنید. همچنین برای ساخت عقربه می توانید از چوب، پلاستیک و یا مقوا استفاده کنید.

یک گام جلوتر

چند پیشنهاد برای ارتقای پروژه:

  • کتابخانه ی InstagramStats را طوری ویرایش کنید که بتوانید اطلاعات دیگر مثل تعداد فالور ها و … را بخوانید.
  • سرعت خواندن اطلاعات را کمتر کنید تا مصرف اینترنت کاهش یابد.

از این مطلب خوشتان آمد؟

آخرین مطالت و آموزش ها را در ایمیلتان دریافت کنید:

مطالب بیشتر

Comments (2)

  • محمد Reply

    سلام
    لینک آموزش آپلود روی ماژول وای فای ایراد دارد
    ممنون

    نوامبر 19, 2021 at 9:11 ق.ظ
    • مهران ملکی Reply

      سلام دوست عزیز
      ممنون از توجهتون. لینک اصلاح شد.

      نوامبر 20, 2021 at 9:40 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.