haind gửi vào
- 46845 lượt xem
Chào các bạn, đây là bài viết đầu tiên của mình đóng góp cho cộng đồng Arduino Việt Nam, mình xin nói trước mình là dân Tài Chính và học thêm về lập trình máy tính chứ không phải dân điện tử chuyên ngành nên mong các bạn bỏ qua cho các kiến thức về Điện - Điện Tử của mình nếu mình có nói sai điều gì.
Mình tìm thử trên trang của mình thì chưa thấy bài viết nào hướng dẫn thực tế cách kết nối một board ESP8266 "thuần" (không phải NodeMCU đã được gắn đầy đủ các mở rộng chân) vào một board mở rộng chân cắm (mình tạm gọi là vậy vì mình không biết dịch thế nào cho sát nghĩa, breakout board) và hoạt động độc lập với các lệnh AT. Bài viết tại đây của bạn Thái cũng sử dụng ESP8266 NodeMCU đã được làm sẵn cả rồi, chưa có ESP8266 thuần và cách kết nối tối thiểu để một ESP8266 có thể làm việc.
Mình cũng có một board ESP8266 NodeMCU để vọc nhưng mình cần một board ESP8266 khác cho một dự khác Arduino của mình, nếu xài nguyên NodeMCU để làm "Wifi Shield" thì thấy hơi phí, nên mình mua một cái ESP8266 chưa mở rộng + board mở rộng về để tự làm xem nó như thế nào, cái mình mua là ESP8266 phiên bản 12E với sơ đồ chân mình sẽ nói sau đây cũng như sơ đồ nối chân tối thiểu để có thể giao tiếp với board ESP8266 này.
Sơ đồ chân ESP8266-12E
Trước tiên, đây là sơ đồ chân của một ESP8266 12E mà mình sắp đề cập, các bạn lưu ý là ESP8266 sử dụng nguồn 3.3V chứ không phải 5V như các board UNO / MEGA nên không gắn trực tiếp chân nguồn 5V vào bất kỳ chân nào nhé.
Hình ảnh thực tế và kết nối
Khi mình nhận về thì nó như thế này đây
Nó thật sự rất nhỏ, khi mở bao chống tĩnh điện thì nó nhỏ như thế này đây:
Bước kế là hàn lên mạch mở rộng chân đi kèm (phía sau mạch này có chỗ để sẵn ví trí 3 chân để hàn một chip ổn áp AMS hay 78xx nếu dòng cung cấp > 3.3V, mình thì không sử dụng cái đó vì mình sẽ cấp nguồn 3.3V trực tiếp vào VCC của mạch mà không thông qua ổn áp.
Khi gắn lên breadboard mới phát hiện là nó chiếm trọn breadboard mất rồi, không đủ chỗ để cắm dây khác vào
Thôi đành tháo ra và cắm trực tiếp dây vào từng chân vậy:
Kết nối với một USB UART CP2102: chúng ta sẽ chỉ sử dụng 3 chân của USB này thôi (Tx / Rx và GND), không sử dụng nguồn cấp 3.3V từ USB này vì cường độ dòng điện không đủ để cấp cho ESP8266, chúng ta sẽ cấp nguồn cho ESP8266 trực tiếp từ adapter, sau khi hàn vào board mở rộng rồi thì chân trên board cũng đúng thứ tự như trên ESP8266 (trên board mở rộng cũng có in chữ từng chân)
Bạn nối dây như sau giữa ESP8266 và nguồn adapter 3.3V
VCC | Cực dương 3.3V (HIGH) |
CH_PD | Cực dương 3.3V (HIGH) |
GPOI02 | Cực dương 3.3V (HIGH) |
GPOI15 | Cực âm GND |
GND | Cực âm GND |
Sau đó bạn nối USB CP2102 với ESP8266 theo 3 chân dưới đây:
CP2102 | ESP8266 |
Tx | Rx |
Rx | Tx |
GND | GND |
Sau đó bạn kết nối USB vào PC, mình xin phép dùng chính Arduino IDE Serial Terminal để tương tác với ESP8266, con ESP8266 của mình chạy ở baudrate 115200:
- Bật Serial Terminal, chọn "Both NL &CR", chọn baudrate 115200.
- Bật nguồn cho ESP8266 (mình thấy đèn LED trên ESP8266 chỉ loé lên một cái rồi tắt chứ không mở thường trực như trên board NodeMCU, mình không hiểu tại sao, lúc đầu mình cứ tưởng là có trục trặc gì đó nhưng thực tế ESP8266 vẫn làm việc bình thường, lúc mình kết nối thử thành công vào ESP8266 vào mạng wifi nhà mình thì vẫn không thấy đèn LED này hoạt động),
Xong rồi đấy, bạn có thể tham khảo thêm bài viết về các lệnh AT dành cho ESP8266 của bạn Đỗ Hữu Toàn tại đây để tương tác với ESP8266 và nhúng cái shield này vào một dự án Arduino khác của bạn: Tập lệnh AT với ESP8266
Mong tìm hiểu thêm: đối với các bạn dự định sử dụng ESP8266 như một MCU chạy độc lập (không thông qua một board microcontroller khác như Arduino) thì mình vẫn không hiểu tại sao đối với ESP8266, bạn chỉ cần bật HIGH cho chân digital từ 6 trở đi thì toàn board ESP8266 sẽ tiến hành khởi động lại, chỉ đơn giản là bật một cái LED được cắm ở chân đó thì cũng bị reset, mình tiến hành làm thử trên ESP8266 NodeMCU cũng bị tình trạng tương tự, mong các bạn chia sẻ thêm về điều này (mình hoàn toàn dùng Arduino IDE để upload code cho ESP8266, mình không thích dùng Lua vì thấy ngôn ngữ này khó xài vì không chặt chẽ).