Mục lục:

NODEMCU LUA ESP8266 Với IC mở rộng cổng 8 bit MCP23008: 6 bước
NODEMCU LUA ESP8266 Với IC mở rộng cổng 8 bit MCP23008: 6 bước

Video: NODEMCU LUA ESP8266 Với IC mở rộng cổng 8 bit MCP23008: 6 bước

Video: NODEMCU LUA ESP8266 Với IC mở rộng cổng 8 bit MCP23008: 6 bước
Video: Mạch mở rộng I2C to 16 cổng IO PCF8575 (M3Z8)#Shorts 2024, Tháng mười một
Anonim
NODEMCU LUA ESP8266 Với IC mở rộng cổng 8 bit MCP23008
NODEMCU LUA ESP8266 Với IC mở rộng cổng 8 bit MCP23008

MCP23008 là Bộ mở rộng I / O 8-Bit với Giao diện nối tiếp và hoạt động từ 1,8 đến 5,5 volt, vì vậy rất lý tưởng cho ESP8266, Arduino, Raspberry Pi, PIC Chips và hơn thế nữa.

Nếu bạn đã xem mục Có thể hướng dẫn khác của tôi trên MCP23017, bạn có thể tự hỏi tại sao tôi cũng làm một sản phẩm cho MCP23008, vì nó thực sự là một phiên bản nhỏ hơn của cùng một thứ.

Lý do là các thanh ghi của nó khác nhau cả về tên và số và tôi muốn chỉ cách sử dụng một mô-đun thư viện được tạo sẵn. Không phải ai cũng thành thạo khi sử dụng lua NodeMCU, vì vậy tôi muốn trình bày khía cạnh lập trình này cũng như cách sử dụng MCP23008.

Thư viện và các chương trình có sẵn tại github.com.

Biểu dữ liệu cho MCP23008 có sẵn từ Microchip.

Bước 1: Đấu dây MCP23008

Đấu dây MCP23008
Đấu dây MCP23008

IC MCP23008 có bố cục đơn giản và việc xây dựng một bo mạch thực sự rất dễ dàng đối với nó. Bạn cũng có thể thiết lập mạch trên bảng mạch bánh mì.

Ghim kết nối trên bảng của tôi

  • Ghim 18 (VDD) vào 3 đấu 3
  • Pin 9 (VSS) vào GND
  • Pin 7 (NC) sang GND (Không cần thiết)
  • Pin 1 (SCL) vào ESP GPIO2
  • Chân 2 (SDA) vào ESP GPIO0
  • Pin 5 (A0) vào GND
  • Pin 4 (A1) vào GND
  • Pin 3 (A2) vào GND
  • Pin 6 (ĐẶT LẠI) thành 3 đấu 3

Kết nối các chân được đọc với Gnd trên Cổng A (chân 10 - 17)

Lưu ý: ở đây tất cả các chân địa chỉ được kết nối với Gnd để sử dụng MCP23008 tại địa chỉ 0x20 trên bus địa chỉ I2C.

Nếu bạn đang sử dụng địa chỉ 0x21 thì A0 sẽ được kết nối với 3.3V, với A1 & A2 được kết nối với Gnd.

Tương tự nếu sử dụng địa chỉ 0x22 thì A1 sẽ phải được kết nối với 3.3V với A0 và A2 được kết nối với Gnd.

Vân vân…

Bước 2: Xây dựng bảng

Xây dựng hội đồng quản trị
Xây dựng hội đồng quản trị

Tôi đã sử dụng bảng mạch Vero 25 mm x 64 mm (9 hàng x 25 lỗ) để xây dựng bảng của mình. Nó hơi chặt chẽ, nhưng vì hầu hết các chân bạn cần đều nằm ở hai bên của IC, nó đủ cho những gì nó phải làm.

Tôi đã sử dụng 8 chân và 8 ổ cắm tiêu đề cho cổng A để tôi có thể cắm các mô-đun khác nhau của mình cũng như các hệ thống dây điện khác cho các dự án khác nhau. Tôi đã thêm các chân Gnd và 3.3V bổ sung vì tôi thấy luôn thiếu các chân này khi kết nối các mô-đun với nhau.

Bước 3: Sử dụng Mô-đun thư viện

Sử dụng Mô-đun Thư viện
Sử dụng Mô-đun Thư viện

Các mô-đun thư viện thường chứa một lựa chọn các quy trình con, các hàm và các biến có thể được truy cập bởi một chương trình khác. Chương trình tự nó không chạy, nhưng các chức năng của nó có thể được truy cập bởi chương trình đang gọi. Nó có nghĩa là bạn có thể có các thói quen con của mình trong thư viện và gọi chúng lên bất cứ khi nào bạn cần, tạo một chương trình gọi điện nhỏ. Nó trở nên có giá trị hơn nếu bạn có nhiều chương trình khác nhau sử dụng cùng các quy trình con, bạn không cần phải bao gồm các quy trình con trong mọi chương trình.

Lưu ý: chương trình mcp23008.lua cần được tải vào bộ nhớ ESP8266 giống như các chương trình khác.

Tôi đã bao gồm các chương trình github.com ở đây cũng như một chương trình đơn giản (test.lua) để cho thấy rằng thư viện đang hoạt động.

Có ít nhất 2 cách để đưa thư viện vào chương trình của bạn.

yêu cầu ("mcp23008")

mcp23008.begin (0x0, gpio2, gpio0, i2c. SLOW)

hoặc

mcp = request ("mcp23008")

mcp.begin (0x0, gpio2, gpio0, i2c. SLOW)

Cả hai cách trên đều làm điều tương tự, nhưng phương pháp thứ hai cho phép bạn sử dụng biến của riêng mình thay vì tên chương trình.

Bước 4: Chương trình Kitt Car

Chương trình Kitt Car
Chương trình Kitt Car

Tôi đã bao gồm chương trình KittCar23008.lua và KittLib.lua sử dụng thư viện để chỉ ra sự khác biệt trong cách viết chương trình theo cách này. Cả hai chương trình đều làm điều tương tự.

8 LED phích cắm có sẵn từ Ebay dưới dạng một bộ và được gọi là Bộ tự làm đèn LED nước chảy 8 kênh, 99p từ Trung Quốc. Bạn phải tự mình hàn nó.

Lưu ý: Nếu bạn gặp sự cố khi cố gắng chạy chương trình KittLib.lua, hãy thử kết nối chân ĐẶT LẠI MCP23008 với Gnd trong giây lát. Tôi biết điều này sẽ gây ra ngắn mạch trực tiếp (vì nó được kết nối với 3.3V) và bạn phải đặt lại mọi thứ khác. Nó cũng hoạt động bằng cách kết nối với Gnd thông qua một điện trở 10 ohm, có lẽ là một cách tốt hơn để làm điều đó.

Tôi cũng thấy rằng KittLib.lua sẽ chạy mà không có vấn đề gì sau khi chạy test.lua (Đừng hỏi tôi tại sao?)

Tôi đã thử nhiều cách khác nhau để giải quyết sự cố chương trình KittLib.lua, nhưng cho đến nay không thể tìm thấy bất kỳ lý do hợp lý nào về việc tại sao nó bị treo. Có ai có bất kỳ ý tưởng?

Tôi đã không tự viết tất cả các chương trình này, vì vậy tôi không thể nói tại sao có vấn đề, mặc dù sau khi xem xét mã hóa, dường như không có bất kỳ điều gì rõ ràng là sai.

Bước 5: 7 LED phân đoạn

Đèn LED 7 đoạn
Đèn LED 7 đoạn

Như với chương trình KittCar.lua ở trên, tôi đã bao gồm một chương trình độc lập và phụ thuộc vào thư viện để điều khiển màn hình LED 7 đoạn.

Một lần nữa, cả hai chương trình đều làm điều tương tự, nhưng trình bày cách sử dụng mô-đun thư viện do chính bạn hoặc người khác viết.

Bước 6: Kết luận

Phần kết luận
Phần kết luận

Tôi đã cố gắng chứng minh cách sử dụng các mô-đun mã trong môi trường Lua và áp dụng nó cho một vi mạch cụ thể cùng một lúc.

Mặc dù tôi đã gặp sự cố khi thực hiện việc này, nhưng tôi nghĩ rằng có đủ để cho thấy các mô-đun này hoạt động như thế nào cũng như chứng minh một ứng dụng trong cuộc sống thực.

Đề xuất: