Networks Business Online Việt Nam & International VH2

Giao tiếp ESP8266 Với Arduino – Điện Tử Hay

Đăng ngày 01 January, 2023 bởi admin

Muốn sử dụng được wifi nhưng phải rẻ thì ESP8266 là một sự lựa chọn không tồi, nhưng đang làm bạn lai bực mình vì không đủ chân để làm dự án của mình. Vậy phải làm thế nào ba giờ nhỉ? trả nhẽ lại phải mua nên ESP32!  Không!  Hôm nay Điện tử hay điện tử hay sẽ mách bạn một cách vừa rẻ, vừa sinh viên mà lại hiệu quả: đo là giao tiếp ESP8266 với Arduino Uno/Mega thông qua nhưng giao tiếp của các chuẩn UART, SPI, I2C một cách đơn giản, hữu hiệu nhât.

Các thứ những bạn cần sẵn sàng chuẩn bị để tiếp xúc :

Giao tiếp ESP8266 chuẩn UART

Có 2 cách để tiếp xúc UART giữa ESP8266 / NodeMCU :

  • 1 là giao tiếp bằng cách code trên cả Uno/Mega và ESP8266/NodeMCU
  • 2 là chỉ code trên Uno/Mega, trên ESP8266/NodeMCU flash thẳng firmware AT Command,

Hôm nay minh chỉ hướng dẫn bạn cách 1, cách 2 vui lòng bạn xem ở bài sau.

Sơ đồ kết nối

Sơ đồ kết nối Arduino Uno với ESP8266

Chương trình

Code NodeMCU

Gửi data ‘ 123 ’ qua Uno / Mega, ở đây ta cần có thư viện SoftwareSerial và gán nó với 2 chân RX và TX. Sau đó thông số kỹ thuật với vận tốc baud là 9600 .

#include

SoftwareSerial s(3, 1); void setup() { s.begin(9600); } void loop() { s.write(123); delay(1000); }

Code Arduino Uno/Mega

Chương trình sau nhận thông tin, tiên phong là tạo ra biến để nhận data, sau đó là setup baud 9600 để nhận data này .

int data;  

void setup() {
   
  Serial3.begin(9600);
}

void loop() {
  data = Serial.read();  
  delay(1000);
}

Kết quả

Quan sát trên serial port sẽ thấy data ‘ 123 ’ được gửi qua Uno / Mega

Giao tiếp ESP8266 chuẩn I2C

Khái niệm

I2C ( Inter-Integrated Circuit ) là giao thức liên kết giao diện bus tiếp nối đuôi nhau. Nó cũng được gọi là TWI vì nó chỉ sử dụng hai dây để tiếp xúc. Hai chân này là SDA ( đường data ) và SCL ( đường clock ) .
I2C là giao thức tiếp thị quảng cáo dựa trên sự thừa nhận, tức là phát tín hiệu kiểm tra xác nhận từ bên nhận sau khi truyền dữ liệu để biết liệu dữ liệu có được nhận thành công xuất sắc hay không .
Hai chính sách thao tác của I2C :

  • Master mode
  • Slave mode

Dây SDA ( đường dữ liệu ) được sử dụng để trao đổi dữ liệu giữa thiết bị master và thiết bị slave. SCL ( đường xung nhịp đồng hồ đeo tay ) được sử dụng cho đồng hồ đeo tay đồng nhất ở giữa thiết bị master và slave .
Thiết bị master mở màn tiếp xúc với một thiết bị slave. Thiết bị master nhu yếu địa chỉ thiết slave để mở màn tiếp xúc với thiết bị slave. Thiết bị Slave phản hồi cho thiết bị master khi thiết bị master được xử lý .

Sơ sơ lý thuyết thế thôi, đi cụ thể vào thực hành ta sẽ viết chương trình Arduino cho NodeMCU là I2C master và viết chương trình Arduino cho Arduino Uno/Mega  là I2C Slave. Master sẽ gửi chuỗi hello slave đến slave và slave sẽ gửi chuổi hello master phản hồi lại.

  • Master Device: NodeMCU
  • Slave Device: Arduino Uno
  • Slave Device Address: 8

Sơ đồ kết nối

Sơ đồ kết nói ESP8266 với Arduino

Chương trình

Code NodeMCU

#include

void setup() { Serial.begin(9600); Wire.begin(D1, D2); } void loop() { Wire.beginTransmission(8); Wire.write(" Hello Slave "); Wire.endTransmission(); Wire.requestFrom(8, 13); while(Wire.available()){ char c = Wire.read(); Serial.print(c); } Serial.println(); delay(1000); }

Code Uno/Mega

#include

void setup() { Wire.begin(8); Wire.onReceive(receiveEvent); Wire.onRequest(requestEvent); Serial.begin(9600); } void loop() { delay(100); } void receiveEvent(

int

howMany) { while (0 < Wire.available()) { char c = Wire.read(); Serial.print(c); } Serial.println(); } void requestEvent() { Wire.write(" Hello Master "); }

Kết quả

Đây là hiệu quả mình test thử giữa ESP8266 / NodeMCU và Arduino Mega
Kết quả hiển thị khi kết nối thành công

Giao tiếp ESP8266 chuẩn SPI

Khái niệm

SPI ( Serial Peripheral Interface ) là chuẩn tiếp xúc dạng bus được đưa ra bởi Motorola Corp .

  • SPI dùng 4 chân kết nối, nên ta thường gọi nó là kết nối dạng 4 dây.
  • SPI là full duplex master-slave communication protocol. Có nghĩa là chỉ một master và một slave có thể kết nối nhau thông qua bus interface trong cùng một thời điểm.
  • SPI cho phép device có thể làm việc mở 2 mode cơ bản là  SPI Master Mode và SPI Slave Mode.
  • Master Device sẽ phản hồi thông tin thiết lập kết nối. Master Device tạo ra Serial Clock để đồng bộ data truyền nhận. Master Device còn có thể quản lý nhiều slave devices trên bus bằng việc lựa chọn từng cái.

ESP8266 có chân SPI ( SD1, CMD, SD0, CLK ) dùng cho Quad-SPI communication với flash memory trên ESP-12E, vì thếta sẽ không hề sử dụng những chân này được, ta sẽ dùng những chân sửa chữa thay thế là GPIO14-GPIO17, những bạn hoàn toàn có thể xem hình dưới đây .

  • MISO (Master In Slave Out): Master nhận data và slave truyền data qua pin này.
  • MOSI (Master Out Slave In): Master truyền data và slave nhận data qua pin này.
  • SCLK (Serial Clock): Master tạo clock cho kết nối, slave dùng clock này. Chỉ duy nhất master có thể thiết lập được serial clock.
  • CS (Chip Select): Master có thể lựa chọn slave device thông qua pin này để bắt đầu kết nối với nó.

Sơ đồ kết nối

Sơ đồ kết nối ESP8266 chuẩn SPI

Chương trình

Chúng ta sẽ viết chương trình tiếp xúc SPI cho ESP8266 / NodeMCU và Uno / Mega, ở đây NodeMCU là master device và Uno / Mega là slave device .
NodeMCU sẽ gửi lời chào với chuỗi “ Hello Slave ” với ‘ \ n ’ ở cuối chuỗi. Uno / Mega Slave device nhận chuỗi này và in nó ra serial .

Chương trình cho NodeMCU

#include

char buff[]=" Hello Slave \ n "; void setup() { Serial.begin(9600); SPI.begin(); } void loop() { for(inti=0; i

Chương trình cho Mega/Uno

#include

char buff [100]; volatile byte index; volatile bool receivedone; void setup (void) { Serial.begin (9600); SPCR | = bit(SPE); pinMode(MISO, OUTPUT); index = 0; receivedone = false; SPI.attachInterrupt(); } void loop (void) { if (receivedone) { buff[index] = 0; Serial.println(buff); index = 0; receivedone = false; } } ISR (SPI_STC_vect) { uint8_t oldsrg = SREG; cli(); char c = SPDR; if (index

Kết quả

Kiểm tra trên terminal của Uno sẽ có thông tin “ Hello Slave ”

Tạm kết

Vậy là mình đã triển khai tiếp xúc truyền nhận data từ ESP8266 / NodeMCU sang Arduino Uno / Mega với những chuẩn tiếp xúc UART, I2C, SPI rồi, giờ thì những bạn hoàn toàn có thể tự do phát minh sáng tạo và thử nghiệm với dự án Bất Động Sản của mình nhé .

 

Để cùng nhau học hỏi nhiều hơn về PCB hay thích Group: Dientuhay

Cần gia công PCB liên hệ ngay: Dientuhay

Source: https://vh2.com.vn
Category : Bảo Mật