Điều khiển Servo thông qua NodeMCU ESP8266 và Blynk hiển thị lên OLED 0.96

Điều khiển Servo thông qua NodeMCU ESP8266 và Blynk hiển thị lên OLED 0.96
dieu khien servo thong qua app blynk va esp8266

Trong nội dung bài viết hôm nay mình sẽ hướng dẫn các bạn cách làm thể nào để điều khiển Servo thông qua NodeMCU ESP8266 và App Blynk hiển thị lên OLED 0.96. Để có thể hiểu rõ hơn về bài viết hôm nay các bạn xem lại bài viết bên dưới nhé.

Cấu hình thông số Servo trên App Blynk

Chọn thẻ Slider

  • OUTPUT: VO (0 ~ 1023)
  • DECIMALS: #
  • SEND ON RELEASE & SHOW VALUE: ON

Chọn thẻ Value

  • INPUT: V1 (0 ~ 90)
  • READING RATE: 1 sec

Sơ đồ nguyên lý

nguyen ly servo control

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
NodeMCU ESP8266 1
Dây cắm 13
OLED 0.96 1
Servo SG90 1
Biến trở 1

Code

#define SW_VERSION "ServoCtrlBlynk_V.1" 

/*NodeMCU */
#include <ESP8266WiFi.h>
char ssid [] = "Phamson";
char pass [] = "phamtheson";

/* Blynk */
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
char auth [] = "6zCB6XaSV9PflOIBv7h1uOF7pgUV99t9"; // Servo Control Project // Servo Control Project

/* OLED */
#include "SSD1306Wire.h"
#include "Wire.h"
const int I2C_DISPLAY_ADDRESS = 0x3c;
const int SDA_PIN = 0;
const int SCL_PIN = 2;
SSD1306Wire display(I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN);

/* Servo */
#define servo1Pin D2
#include <Servo.h>
Servo servo1;

/* Initial pot reading and servo position set the position to neutral */
#define potPin A0
int potReading = 1023/2;
int servo1Angle = 90;

/* Reads slider in the Blynk app and writes the value to "potReading" variable */
BLYNK_WRITE(V0) 
{
  potReading = param.asInt();
}

/* Display servo position on Blynk app */
BLYNK_READ(V1) 
{
  Blynk.virtualWrite(V1, servo1Angle);
}

void setup () 
{
  Serial.begin(115200); 
  servo1.attach(servo1Pin);
  displaySetup();
  Blynk.begin(auth, ssid, pass);
}

void loop() 
{
  Blynk.run();
  //PotReading = analogRead(potPin);               // Read Analog data from potenciometer not used here
  servo1Angle = map(potReading, 0, 1023, 0, 180);  // Map the pot reading to an angle from 0 to 180 
  servo1.write(servo1Angle);                       // Move the servo to a position
  displayAngle();
  delay (200);
}

/* Initiate and display setup data on OLED */
void displaySetup()
{
  display.init();         // initialize display
  display.clear();        // Clear display
  display.display();      // Put data on display
}

/*  Display Servo position */
void displayAngle()
{
  display.clear();
  display.setFont(ArialMT_Plain_16);
  display.drawString(10, 0, "Servo Control");
  display.drawString(0, 45, "POSITION:" );
  display.setFont(ArialMT_Plain_24);
  display.drawString(80, 40, String(servo1Angle));
  display.display();
}

Giải thích code

Khai báo Tài khoản và Mật khẩu Wifi.

char ssid [] = "Phamson";
char pass [] = "phamtheson";

Mã Token được cấp khi tạo mới Project trên Blynk.

char auth [] = "6zCB6XaSV9PflOIBv7h1uOF7pgUV99t9";

Đọc giá trị thanh trượt trên App Blynk và ghi giá trị vào biến “potReading”.

BLYNK_WRITE(V0) 
{
  potReading = param.asInt();
}

Hiển thị giá trị Servo trên App Blynk.

BLYNK_READ(V1) 
{
  Blynk.virtualWrite(V1, servo1Angle);
}

Thư viện

BÀI VIẾT LIÊN QUAN
Hướng dẫn cài đặt ESP8266 và kết nối với Blynk LED RGB sử dụng NodeMCU ESP8266 thay đổi màu sắc trên App Blynk
Giám sát nhiệt độ, độ ẩm bằng App Blynk sử dụng NodeMCU ESP8266 Cảnh báo trộm bằng cảm biến PIR (HC-SR501) thông qua App Blynk sử dụng ESP8266
Xác định khoảng cách khi đỗ xe bằng cảm biến HC-SRF04 sử dụng ESP8266 và App Blynk Điều khiển động cơ Servo SG90 bằng App Blynk sử dụng NodeMCU ESP8266
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments