.Sơ đồ Esp8266

Một phần của tài liệu Mô hình vườn thông minh (Trang 45 - 52)

ĐỒ ÁN TỐT NGHIỆP MƠ HÌNH VƯỜN THƠNG MINH

-Chúng ta biết rằng ở mỗi chân trên vi điều khiển có thể thực hiện nhiều chức năng khác nhau, NodeMCU có tổng cộng 13 chân GPIO tuy nhiên một số chân được dùng cho những mục đích quan trọng khác vì vậy chúng ta phải lưu ý khi sử dụng như sau:

 Tất cả các GPIO đều có trở kéo lên nguồn bên trong (ngoại trừ GPIO16 có trở kéo xuống GND). Người dùng có thể cấu hình kích hoạt hoặc khơng kích hoạt trở kéo này.

 GPIO1 và GPIO3: hai GPIO này được nối với TX và RX của bộ UART0, NodeMCU nạp code thông qua bộ UART này nên tránh sử dụng 2 chân GPIO này.

 GPIO0, GPIO2, GPIO15: đây là các chân có nhiệm vụ cấu hình mode cho ESP8266 điều khiển quá trình nạp code nên bên trong NodeMCU (có tên gọi là strapping pins) có các trở kéo để định sẵn mức logic cho chúng như sau: GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW. Vì vậy khi muốn sử dụng các chân này ở vai trò GPIO cần phải thiết kế một nguyên lý riêng để tránh xung đột đến quá trình nạp code.

 GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng khơng thể dùng được.

-Chân được sử dụng trong khi khởi động

ESP8266 có thể bị ngăn khơng cho khởi động nếu một số chân được kéo MỨC THẤP hoặc MỨC CAO. Danh sách sau đây cho thấy trạng thái của các chân khi khởi động:

ĐỒ ÁN TỐT NGHIỆP MƠ HÌNH VƯỜN THƠNG MINH

GPIO0: lỗi khởi động nếu kéo mức thấp

GPIO2: chân ở mức cao khi khởi động, không khởi động được nếu kéo mức thấp GPIO15: lỗi khởi động nếu kéo mức cao

GPIO3: chân ở mức cao khi khởi động

GPIO1: chân ở mức cao khi khởi động, không khởi động được nếu kéo mức thấp GPIO10: chân ở mức cao khi khởi động

GPIO9: chân ở mức cao khi khởi động

-Chân mức cao khi khởi động

Có một số chân xuất ra tín hiệu 3.3V khi ESP8266 khởi động. Điều này sẽ là vấn đề cần phải quan tâm nếu bạn có relay hoặc thiết bị ngoại vi khác được kết nối với các GPIO đó. Các GPIO sau xuất tín hiệu mức cao khi khởi động:

GPIO16 GPIO3 GPIO1 GPIO10 GPIO9

Ngoài ra, các GPIO khác, ngoại trừ GPIO5 và GPIO4, có thể xuất ra tín hiệu điện áp thấp khi khởi động, có thể có vấn đề nếu chúng được kết nối với transistor hoặc relay.

-Đầu vào analog

ESP8266 chỉ hỗ trợ đọc analog trong một GPIO. GPIO đó được gọi là ADC0 và nó thường được đánh dấu trên màn lụa là A0.

Điện áp đầu vào tối đa của chân ADC0 là 0 đến 1V nếu bạn đang sử dụng chip trần ESP8266. Nếu bạn đang sử dụng bo phát triển như bộ ESP8266 12-E

ĐỒ ÁN TỐT NGHIỆP MƠ HÌNH VƯỜN THƠNG MINH

NodeMCU, thì dải điện áp đầu vào là 0 đến 3,3V vì bo này có bộ chia điện áp bên trong.

-Đèn LED trên bo mạch

Hầu hết các bo phát triển ESP8266 đều có đèn LED tích hợp. Đèn LED này thường được kết nối với GPIO2.

Đèn LED hoạt động với logic ngược. Gửi tín hiệu CAO để tắt và tín hiệu THẤP để bật.

-Chân RST

Khi chân RST được kéo THẤP, ESP8266 sẽ reset. Thao tác này cũng giống như nhấn nút reset trên bo mạch.

-GPIO0

Khi GPIO0 được kéo THẤP, nó sẽ đặt ESP8266 vào chế độ bộ nạp khởi động. Thao tác này cũng giống như nhấn nút FLASH / BOOT trên bo mạch.

-GPIO16

GPIO16 có thể sử dụng để đánh thức ESP8266 khỏi chế độ ngủ sâu. Để đánh thức ESP8266 khỏi chế độ ngủ sâu, GPIO16 phải được kết nối với chân RST.

-I2C

ESP8266 khơng có chân I2C phần cứng, nhưng nó có thể được triển khai trong phần mềm. Vì vậy, bạn có thể sử dụng bất kỳ GPIO nào làm I2C. Thông thường, các GPIO sau được sử dụng làm chân I2C:

GPIO5: SCL GPIO4: SDA

ĐỒ ÁN TỐT NGHIỆP MƠ HÌNH VƯỜN THƠNG MINH

Các chân được sử dụng làm SPI trong ESP8266 là:

GPIO12: MISO GPIO13: MOSI GPIO14: SCLK GPIO15: CS -Các chân PWM

ESP8266 cho phép phần mềm PWM ở tất cả các chân I / O: GPIO0 đến GPIO16. Tín hiệu PWM trên ESP8266 có độ phân giải 10-bit.

-Chân ngắt

ESP8266 hỗ trợ chân ngắt trong bất kỳ GPIO nào, ngoại trừ GPIO16. 2.1.3.Khai báo và sử dụng chức năng GPIO

Để lập trình sử dụng chức năng GPIO trên board NodeMCU có thể sử dụng các hàm sau:

pinMode(PIN_NUMBER, MODE);

Chức năng: Để khai báo sử dụng một chân là Input hoặc Output.

PIN_NUMBER: số thứ tự chân GPIO

MODE: INPUT, OUTUT, INPUT_PULLUP.

digitalRead(PIN_NUMBER);

Chức năng: đọc giá trị digital tại chân PIN_NUMBER PIN_NUMBER: số thứ tự chân GPIO

ĐỒ ÁN TỐT NGHIỆP MƠ HÌNH VƯỜN THƠNG MINH

digitalWrite(PIN_NUMBER, VALUE);

Chức năng: ghi mức điện áp VALUE ra chân PIN_NUMBER PIN_NUMBER: số thứ tự chân GPIO

VALUE: LOW hoặc HIGH

attachInterrupt(INTERRUPT_PIN, ISR, MODE);

Chức năng: khai báo sử dụng ngắt ngoài trên chân INTERUPT_PIN

INTERUPT_PIN:

Đối với NodeMCU: tất cả các GPIO ngoại trừ GPIO16 đều có hỗ trợ interrupt

ISR: chương trình ngắt, là một hàm do người dùng tự định nghĩa, hàm này sẽ được

gọi khi có ngắt xảy ra. Lưu ý: hàm ngắt là hàm khơng có giá trị truyền vào và khơng có giá trị trả về.

MODE: là thông số định nghĩa khi nào ngắt được kích hoạt. Có 4 giá trị

sau:

LOW: kích hoạt ngắt khi giá trị logic tại chân là mức thấp HIGH: kích hoạt ngắt khi giá trị logic tại chân là mức cao

CHANGE: kích hoạt ngắt bất cứ khi nào giá trị logic tại chân thay đổi RISING: kích hoạt ngắt khi mức logic của chân thay đổi từ thấp sang cao FALLING: kích hoạt ngắt khi mức logic của chân thay đổi từ cao sang thấp

ĐỒ ÁN TỐT NGHIỆP MƠ HÌNH VƯỜN THƠNG MINH

detachInterrupt(INTERUPT_PIN);

Chức năng: tắt chức năng ngắt tại INTERUPT_PIN

Ví dụ: chương trình sử dụng chức năng interrupt để đảo trạng thái led

#define INTERRUPT_PIN 0 #define LED_PIN 16 void setup() {

pinMode(INTERRUPT_PIN, INPUT_PULLUP);

attachInterrupt(INTERRUPT_PIN, blinkLed, FALLING); pinMode(LED_PIN, OUTPUT); } void loop() { } void blinkLed() { digitalWrite(LED_PIN, !digitalRead(LED_PIN)); }

ĐỒ ÁN TỐT NGHIỆP MƠ HÌNH VƯỜN THƠNG MINH

4.2.Cảm biến nhiệt độ, độ ẩm DHT11

Một phần của tài liệu Mô hình vườn thông minh (Trang 45 - 52)

Tải bản đầy đủ (PDF)

(102 trang)