Tải bản đầy đủ (.pdf) (10 trang)

CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (684.17 KB, 10 trang )

CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

1. ARDUINO UNO R3

Hình 1 : Arduino Uno R3
Bảng 2.1: Thông số Arduino
Vi điều khiển

ATmega328 họ 8bit

Điện áp hoạt động

5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động

16 MHz

Dòng tiêu thụ

khoảng 30Ma

Điện áp vào khuyên dùng

7-12V DC

Điện áp vào giới hạn

6-20V DC

Số chân Digital I/O



14 (6 chân hardware PWM)

Số chân Analog

6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O

30 mA

Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)

50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)


• Bộ nhớ
+ 32KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được
dùng cho bootloader

Trang 1


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

+ 2KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo
khi lập trình sẽ lưu ở đây. khai báo càng nhiều biến thì càng cần nhiều bộ nhớ
RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ
mà phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất
+ 1KB cho EEPROM (Electrically Eraseble Programmable Read Only
Memory): đây giống như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ
liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu
trên SRAM


Ngõ Ra I/O
Các cổng vào ra: Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín

hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân
là 40mA.Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều
khiển ATmega328 (mặc định thì các điện trở này không được kết nối).
+ chân Serial: 0 (RX) và 1 (TX): dùng để gửi (TX) và nhận (RX) dữ liệu TTL
Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này.
Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây.

Nếu không cần giao tiếp Serial, không nên sử dụng 2 chân này nếu không cần
thiết
+ Chân PWM: 3, 5, 6, 9, 10, và 11: cho phép xuất ra xung PWM với độ phân
giải 8 bit bằng hàm analogWrite(). Nói một cách đơn giản, có thể điều chỉnh
được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V
và 5V như những chân khác
+ Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các
chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao
thức SPI với các thiết bị khác
+ Arduino UNO R3 có 6 chân analog ( A0 → A5 ) cung cấp độ phân giải tín
hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V
+ Đặc biệt, Arduino UNO R3 có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác

Trang 2


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

2. MODULE CẢM BIẾN ĐỘ ẨM ĐẤT LM393

Hình 2 : Module cảm biến độ ẩm đất
Bộ sản phẩm gồm một cảm biến độ ẩm đất và một module chuyển đổi với ngõ
ra Analog - Digital. Cảm biến độ ẩm đất được hoạt động với 2 chế độ ngõ ra (Analog
& Digital), trạng thái đầu ra mức thấp (0V), khi đất thiếu nước đầu ra sẽ là mức cao
(5V)
Hình 3 : Cảm biến độ ẩm đất
Hai đầu đo của cảm biến được cắm
vào đất để phát hiện độ ẩm. Dùng
dây nối giữa cảm biến và module

chuyển đổi. Thông tin về độ ẩm đất
sẽ được đọc về và gởi tới module
chuyển đổi.
Hình 4 : Module chuyển đổi
Module chuyển đổi có cấu tạo chính gồm một IC
so sánh LM393, một biến trở , 4 điện trở dán 100
ohm và 2 tụ dán. Biến trở có chức năng định
ngưỡng so sánh với tín hiệu độ ẩm đất đọc về từ
cảm biến. Ngưỡng so sánh và tín hiệu cảm biến sẽ
là 2 đầu vào của IC so sánh LM393. Khi độ ẩm
thấp hơn ngưỡng định trước, ngõ ra của IC là mức
cao (1), ngược lại là mức thấp (0)

Trang 3


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

• Điện áp hoạt động: 3.3V-5V.
• Kích thước PCB: 3cm*1.6cm
• Led báo hiệu:
-

Led đỏ báo nguồn

-

Led xanh báo mức độ ẩm ở pin DO

• Mô tả các pin trên module

Pin
VCC
GND
DO

Mô tả
3.3V-5V
GND
Đầu ra tín hiệu số (0 và 1)

AO

Đầu ra Analog (tín hiệu tương tự)

Ứng dụng
Cảm biến độ ẩm đất có thể được sử dụng cho các ứng dụng nông nghiêp, tưới nước
tự động cho các vườn cây khi đất khô, hoặc dùng trong các ứng dụng của hệ thống
nhà thông minh
3. MODULE WIFI ESP8266 NODEMCU

Hình 5 : Nodemcu ESP8266
ESP8266 là dòng chip tích hợp Wi-Fi 2.4Ghz có thể lập trình được.Hỗ trợ
chuẩn giao tiếp UART, thích hợp giao tiếp với vi điều khiển để truyền tải dữ liệu hay
điều khiển các thiết bị thông qua WiFi.. có khả năng hoạt động độc lập với 2 chân I/O
(cho phép module kết nối trực tiếp với cảm biến, thiết bị ngoại vi hoặc điều khiển
máy chủ thông qua Wifi) và có khả năng lưu trữ với bộ nhớ Flash 1MB

Trang 4



CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

Hình 6 : Sơ đồ chân của esp8266
❖ Thông số phần cứng


32-bit RISC CPU : Tensilica Xtensa LX106 chạy ở xung nhịp 80 MHz



Hổ trợ Flash ngoài từ 512KiB đến 4MiB



64KBytes RAM thực thi lệnh



96KBytes RAM dữ liệu



64KBytes boot ROM



Chuẩn wifi EEE 802.11 b/g/n, Wi-Fi 2.4 GHz
Tích hợp TR switch, balun, LNA, khuếch đại công suất và matching network
Hổ trợ WEP, WPA/WPA2, Open network




Tích hợp giao thức TCP/IP



Hổ trợ nhiều loại anten



16 chân GPIO



Hổ trợ SDIO 2.0, UART, SPI, I²C, PWM,I²S với DMA



1 ADC 10-bit



Dải nhiệt độ hoạt động rộng : -40C ~ 125C

Trang 5


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

Có thể điều khiển ESP8266 từ mạng Wi-Fi cục bộ của bạn hoặc từ internet (sau

khi chuyển tiếp cổng). Mô-đun ESP-01 có các chân GPIO có thể được lập trình để
bật đèn LED hoặc rơle BẬT / TẮT qua internet. Mô-đun có thể được lập trình bằng
bộ chuyển đổi Arduino / USB-to-TTL thông qua các chân nối tiếp (RX, TX).

Hình 7 : nguyên lý hoạt động của ESP8266
4. ỨNG DỤNG BLYNK

Hình 8 : Logo ứng dụng Blynk
Blynk là một ứng dụng chạy trên nền tảng iOS và Android để điều khiển và
giám sát thiết bị thông qua internet. Blynk không bị ràng buộc với những phần cứng
cụ thể nào cả, thay vào đó, nó hỗ trợ phần cứng cho lựa chọn như Arduino,Raspberry
Pi, ESP8266 và nhiều module phần cứng phổ biến khác.

Trang 6


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

Hình 9 : hoạt động của blynk
Có ba thành phần chính trong nền tảng:
− Blynk App - cho phép tạo giao diện cho sản phẩm của bằng cách kéo thả các
widget khác nhau mà nhà cung cấp đã thiết kế sẵn.
− Blynk Server - chịu trách nhiệm xử lý dữ liệu trung tâm giữa điện thoại, máy
tính bảng và phần cứng.Có thể sử dụng Blynk Cloud của Blynk cung cấp
hoặc tự tạo máy chủ Blynk riêng.Vì đây là mã nguồn mở, nên có thể dễ dàng
intergrate vào các thiết bị và thậm chí có thể sử dụng Raspberry Pi làm server
− Library Blynk – support cho hầu hết tất cả các nền tảng phần cứng phổ biến
cho phép giao tiếp với máy chủ và xử lý tất cả các lệnh đến và đi.
Mỗi khi nhấn một nút trong ứng dụng Blynk, yêu cầu sẽ chuyển đến server của
Blynk, server sẽ kết nối đến phần cứng thông qua library .Tương tự thiết bị phần cứng

sẽ truyền dữ liệu ngược lại đến server.
❖ Tính năng, đặc điểm
+ Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần
cứng được hỗ trợ
+ Kết nối với server bằng cách sử dụng:
• Wifi
• Bluetooth và BLE
• Ethernet
• USB (Serial)
• GSM…

Trang 7


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

+ Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng
+ Thao tác kéo thả trực tiếp giao diện mà không cần viết mã
+ Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối
ảo được tích hợp trên blynk app
+ Theo dõi lịch sử dữ liệu
+ Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget
+ Gửi email, tweet, thông báo realtime.... được cập nhật các tính năng liên tục
5. SƠ ĐỒ LẮP ĐẶT

Trang 8


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK


6. CODE ARDUINO
#include <SoftwareSerial.h>
SoftwareSerial nodemcu(2,3);
int cb = A1;
int gtcb = 0;
String cdata;
void setup()
{Serial.begin(9600);
nodemcu.begin(9600);
pinMode(cb, INPUT);}
void loop()
{ gtcb = analogRead(msensor);
Serial.println(gtcb);
nodemcu.println(gtcb);
delay(1000);}
7. CODE NODEMCU
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SoftwareSerial.h>
#include <SimpleTimer.h>
char auth[] = "-9gI6q_dkmfnffHUbj43tpZmhgMBPI2N";
char ssid[] = "PokerFace";
char pass[] = "123456780";
SimpleTimer timer;
String myString;
char rdata;
int firstVal ;
void myTimerEvent()
{ Blynk.virtualWrite(V1, millis() / 1000);}


Trang 9


CẢM BIẾN ĐO ĐỘ ẨM ĐẤT GỬI TÍN HIỆU LÊN BLYNK

void setup()
{ Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L,sensorvalue1); }
void loop()
{ if (Serial.available() == 0 )
{Blynk.run();
timer.run();}
if (Serial.available() > 0 )
{ rdata = Serial.read();
myString = myString+ rdata;
if( rdata == '\n')
{String l = getValue(myString, ',', 0);
firstVal = l.toInt();
myString = "";}}}
void sensorvalue1()
{int sdata = firstVal;
if ( sdata >= 500 )
{Blynk.notify("Tưới nước đêy ");}
Blynk.virtualWrite(V2,sdata);}
String getValue(String data, char separator, int index)
{ int found = 0;
int strIndex[] = { 0, -1 };
int maxIndex = data.length() - 1;

for (int i = 0; i <= maxIndex && found <= index; i++) {
if (data.charAt(i) == separator || i == maxIndex) {
found++;
strIndex[0] = strIndex[1] + 1;
strIndex[1] = (i == maxIndex) ? i+1 : i; }}
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";}

Trang 10



×