Mục lục:

Bảng điểm môn cricket sử dụng NodeMCU: 9 bước (có hình ảnh)
Bảng điểm môn cricket sử dụng NodeMCU: 9 bước (có hình ảnh)

Video: Bảng điểm môn cricket sử dụng NodeMCU: 9 bước (có hình ảnh)

Video: Bảng điểm môn cricket sử dụng NodeMCU: 9 bước (có hình ảnh)
Video: Luật Bóng Chày Cơ Bản trong 9 phút (Shurikenger ver.) 2024, Tháng bảy
Anonim
Image
Image
Kế hoạch
Kế hoạch

Xin chào! Gần đây tôi đã được giới thiệu với thế giới IoT (Internet of Things) khi tôi bắt gặp thiết bị phổ biến nhất trong lĩnh vực này, ESP8266. Tôi đã rất ngạc nhiên bởi vô số khả năng cuối cùng đã được mở ra bởi thiết bị nhỏ bé và rẻ tiền này. Vì tôi hiện là người mới làm quen với điều này, tôi quyết định thực hiện một dự án bằng cách sử dụng nó và tìm hiểu trong suốt quá trình. Vì vậy, tôi bắt đầu tìm kiếm trên internet các dự án và ý tưởng.

Tôi đã xem qua một dự án tuyệt vời có tên Arduino Cricket Score Ticker của W. A. Smith. Trong dự án này, Arduino cùng với Ethernet Shield và thẻ SD được sử dụng để hiển thị điểm cricket trực tiếp từ Cricbuzz. Dự án này khiến tôi phải suy nghĩ.

Tôi đến từ Ấn Độ và điều đầu tiên tôi nghĩ đến sau khi nghe đến Ấn Độ là môn Cricket. Ở đây, cricket là tôn giáo. Đôi khi việc ngồi trước TV để theo dõi toàn bộ trận đấu trở nên khó khăn. Vì vậy, tại sao không tạo ra thứ gì đó giúp việc xem điểm trở nên dễ dàng, không dây và di động. Một thiết bị nhỏ chuyên dụng hiển thị đầy đủ thông tin để giúp bạn cập nhật chỉ bằng một cái nhìn thoáng qua.

Không phải là một người hâm mộ cricket? Không vấn đề gì! Mã chứa trình phân tích cú pháp XML có thể được sử dụng để lấy dữ liệu từ bất kỳ tệp XML nào. Chỉ cần sử dụng các chức năng chính xác để lấy dữ liệu.

Bước 1: Kế hoạch

Kế hoạch
Kế hoạch

Kế hoạch là sử dụng Ban phát triển NodeMCU (với mô-đun ESP-12E) để truy cập internet và yêu cầu mã XML từ Cricbuzz chứa tất cả thông tin về các trận đấu đang diễn ra / sắp tới. Mã này được lưu trên thẻ SD dưới dạng tệp.xml. Sau đó, tệp được đọc từ thẻ SD để phân tích dữ liệu cần thiết từ mã XML. Tôi sẽ sử dụng mã của W. A. Smith để phân tích thông tin. Cảm ơn những nỗ lực của anh ấy. Kiểm tra dự án của anh ấy nếu bạn muốn thực hiện điều tương tự bằng cách sử dụng Arduino và Ethernet Shield.

Ý tưởng của tôi là làm cho nó nhỏ nhất có thể, xây dựng một PCB và vỏ tùy chỉnh cho nó. Còn bây giờ, chúng ta hãy làm một mẫu thử nghiệm. Nhưng trước tiên, chúng ta hãy làm quen với các thành phần được sử dụng trong dự án này.

Bắt đầu nào

Bước 2: Màn hình OLED

Màn hình OLED
Màn hình OLED
Màn hình OLED
Màn hình OLED

Tôi quyết định sử dụng màn hình OLED vì kích thước nhỏ và chúng có sẵn với giá rẻ. Tôi đang sử dụng màn hình 0,96 đủ để hiển thị thông tin trận đấu. Bạn có thể sử dụng bất kỳ kích thước nào của màn hình.

Màn hình tôi đang sử dụng là màn hình đơn sắc với trình điều khiển SSD1306 và giao diện I2C (2-wire). Các phiên bản SPI của màn hình cũng có sẵn. Chạy chúng là một nhiệm vụ dễ dàng. Tải xuống các thư viện SSD1306 và GFX cần thiết để chạy màn hình. Cảm ơn Adafruit đã viết những thư viện này.

Kết nối rất đơn giản.

  • GND sang GND
  • VCC đến 3,3V
  • SCL đến D1
  • SDA đến D2.

Bước 3: Thẻ SD & Bộ điều hợp

Thẻ SD & Bộ điều hợp
Thẻ SD & Bộ điều hợp

Thẻ SD lưu trữ tệp XML từ Cricbuzz cho đến khi tất cả thông tin đã được phân tích cú pháp. Khi thông tin cần thiết đã được hiển thị, tệp sẽ bị xóa. Sử dụng thẻ SD để lưu trữ tệp XML 10 - 20 kB hơi quá mức cần thiết nhưng nó làm cho việc phân tích cú pháp dễ dàng và dễ hiểu hơn nhiều.

Thẻ nhớ nào cũng dùng được. Tôi đã chọn thẻ micro SD vì yếu tố hình thức nhỏ của nó. Bạn có thể hàn trực tiếp dây vào thẻ SD nhưng sử dụng bảng ngắt giúp công việc trở nên dễ dàng. Cần lưu ý rằng tất cả các thẻ SD đều chạy trên 3.3V. Điều này có nghĩa là không chỉ nó phải được cấp nguồn bằng 3.3V mà cả giao tiếp giữa vi điều khiển và thẻ SD cũng phải ở mức logic 3.3V. Điện áp trên 3.3V sẽ GIẾT NÓ! Chúng tôi sẽ không bận tâm về nó khi NodeMCU có liên quan vì bản thân NodeMCU chạy trên 3.3V là tốt. Nếu bạn định sử dụng bất kỳ bộ vi điều khiển nào khác có mức logic 5V, hãy đảm bảo rằng bảng đột phá của bạn được tích hợp sẵn bộ chuyển mức (Như trong hình). Về cơ bản, nó chuyển đổi hoặc 'thay đổi' 5V từ bộ vi điều khiển sang 3.3V thân thiện với thẻ SD. Sử dụng bộ chuyển mức cùng với 3.3V (như tôi đã làm) không ảnh hưởng đến hoạt động của nó.

Thẻ SD sử dụng giao diện SPI để giao tiếp. Chân CS hoặc Chip Select có thể được kết nối với bất kỳ chân GPIO nào. Tôi đã chọn GPIO15 (D8). Chỉ cần thực hiện các thay đổi cần thiết trong mã nếu bạn sử dụng mã pin không phải GPIO15

  • SCK đến D5
  • MISO đến D6
  • MOSI đến D7
  • CS đến D8
  • VCC đến 3,3V
  • GND sang GND

Định dạng thẻ SD của bạn

Thư viện chúng tôi sẽ sử dụng hỗ trợ hệ thống tệp FAT16 hoặc FAT32. Đảm bảo bạn định dạng thẻ SD theo đúng định dạng.

Bước 4: Tạo bàn phím

Tạo bàn phím
Tạo bàn phím
Tạo bàn phím
Tạo bàn phím
Tạo bàn phím
Tạo bàn phím

Tôi muốn giữ cho dự án càng nhỏ càng tốt. Vì vậy, tôi quyết định làm một bo mạch riêng cho bàn phím và gắn nó lên trên bo mạch chính sau này. Điều này sẽ tiết kiệm một số không gian.

Có thể mua ma trận chìa khóa làm sẵn nhưng tôi có các nút ấn đặt xung quanh. Ngoài ra, tôi muốn làm cho nó càng nhỏ càng tốt. Một sự sắp xếp điển hình của việc kết nối các hàng và cột sẽ cần tổng cộng 6 chân GPIO cho ma trận 3 x 3. Điều này khá nhiều khi xem xét rằng màn hình OLED và thẻ SD cũng sẽ được kết nối với nhau.

Khi nghi ngờ, hãy Google ra! Đó là những gì tôi đã làm và tìm ra một cách sẽ chỉ cần 1 pin để kiểm soát toàn bộ ma trận. Điều này được thực hiện bằng cách sử dụng Ma trận phân chia điện áp. Các điện trở được kết nối giữa mọi hàng và cột. Khi một phím được nhấn, một tổ hợp điện trở nhất định được mắc nối tiếp tạo ra một bộ chia điện áp. Tham khảo sơ đồ mạch. Điện áp thay đổi sẽ được đọc bởi vi điều khiển. Mỗi phím sẽ tạo ra một điện áp khác nhau và do đó có thể dễ dàng tìm ra phím nào đã được nhấn bằng cách đọc điện áp đầu ra của ma trận. Vì chúng ta muốn đọc các mức điện áp khác nhau và bây giờ chỉ là cao và thấp, chúng ta sẽ cần một chân Analog. May mắn thay, có một chân Analog có nhãn là A0 trên NodeMCU. Vấn đề đã được giải quyết!

Nếu bạn muốn mua một ma trận, hãy kiểm tra các kết nối bên trong được hiển thị trong sơ đồ. Có thể sử dụng ma trận của bất kỳ kích thước nào. Đảm bảo sử dụng điện trở 2,2kΩ giữa các hàng và điện trở 680Ω giữa các cột.

Kết nối các nút đẩy

Chân 1 & 2 được kết nối nội bộ. Tương tự với chân 3 & 4. Khi nhấn nút, tất cả các chân được kết nối với nhau. Tham khảo hình ảnh để có ý tưởng kết nối các công tắc trên bảng điều khiển hoàn thiện.

Tôi đã kết nối một tiêu đề nam 3 chân để nó có thể được kết nối với bo mạch chính sau này.

Bước 5: Kết hợp mọi thứ lại với nhau

Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau

Bạn có thể lên kế hoạch đặt các thành phần ở bất cứ đâu bạn muốn. Không có hạn chế về nó. Tôi sẽ chỉ cho bạn cách tôi đã làm để làm cho nó nhỏ gọn như tôi muốn một cái gì đó sẽ nằm gọn trong lòng bàn tay. Nó có thể hơi lộn xộn vì vậy hãy thử theo cách của tôi nếu bạn cảm thấy thoải mái với việc hàn. Tôi quyết định đặt cả hai mặt của bảng như một PCB hai lớp. NodeMCU và bảng đột phá thẻ SD ở một bên và OLED và bàn phím ở phía bên kia.

Sự cố thẻ SD chỉ xảy ra để phù hợp giữa hai tiêu đề nữ dành cho NodeMCU. Tôi cắt bỏ các tiêu đề nam có góc cạnh mà bảng đột phá đi kèm, xoay nó và hàn lại sao cho các chốt đi vuông góc xuống dưới như thể hiện trong hình. Việc truy cập vào khe cắm thẻ SD trở nên dễ dàng hơn.

Tôi uốn cong các chân của đầu cắm cái 4 chân ở một góc vuông và hàn nó vào mặt đồng của bảng điều khiển như trong hình.

Che các khớp hàn dưới bàn phím để tránh đoản mạch. Thêm một miếng xốp cứng mỏng (dày khoảng 5mm) giữa bàn phím và bo mạch chủ để tăng cường độ bảo vệ và độ cứng. Cuối cùng, hàn bàn phím mà chúng tôi đã thực hiện trước đó. Có một chiếc mỏ hàn với đầu nhọn chắc chắn sẽ làm cho công việc của bạn trở nên dễ dàng. Đó là một công việc lộn xộn làm cho nó càng nhỏ gọn càng tốt nhưng cuối cùng vẫn làm được.

Kiểm tra kỹ tất cả các kết nối của bạn xem có đoản mạch không trước khi cấp nguồn cho thiết bị

Bước 6: Thiết lập bàn phím

Thiết lập bàn phím
Thiết lập bàn phím

Khi bạn đã kiểm tra tất cả các kết nối, bạn đã sẵn sàng cấp nguồn cho thiết bị của mình lần đầu tiên. Ngón tay bắt chéo! Không có khói ma thuật? Chúc mừng!

Bây giờ chúng ta đã sẵn sàng để thiết lập bàn phím. Nhớ lại hoạt động của bàn phím. Mỗi lần nhấn phím sẽ xuất ra một điện áp khác nhau được cấp cho chân analog của NodeMCU. ESP-12E có Bộ chuyển đổi tương tự sang kỹ thuật số (ADC) độ phân giải 10-bit. 2 được nâng lên mức 10 sẽ cho kết quả là 1024. Điều này có nghĩa là chúng ta sẽ nhận được số đọc từ 0 đến 1024 cho mỗi phím được nhấn. Hãy để chúng tôi xem những bài đọc mà chúng tôi nhận được. Nhưng trước tiên, chúng ta phải viết một chương trình nhỏ để lấy các giá trị đó. Mở Arduino IDE, sao chép, dán đoạn mã sau và tải nó lên NodeMCU.

int keypadPin = A0;

void setup () {Serial.begin (115200); } void loop () {int r = analogRead (keypadPin); Serial.println (r); }

  • Mở màn hình nối tiếp. Đặt tốc độ truyền thành 115200.
  • Bây giờ hãy nhấn bất kỳ nút nào. Bạn sẽ đọc liên tục trên màn hình Nối tiếp. Biến động nhỏ là không sao. Những điều đó sẽ được chăm sóc trong mã chính. Làm tương tự cho mọi phím.
  • Mỗi phím nên có một cách đọc khác nhau.
  • Ghi lại tất cả các giá trị. Chúng tôi sẽ cần chúng sau.

Bước 7: Hãy viết mã

Hãy viết mã
Hãy viết mã
Hãy viết mã
Hãy viết mã
Hãy viết mã
Hãy viết mã

Tải xuống tệp Scoreboard.ino được cung cấp bên dưới trên máy tính của bạn và mở tệp đó bằng Arduino IDE.

Trước khi bạn tải lên

1) Đặt thời gian làm mới cho bảng điểm. Ví dụ: 15L cho 15 giây.

2) Nhập SSID và mật khẩu của bộ định tuyến muốn kết nối.

3) Thực hiện các thay đổi cần thiết nếu bạn chọn kết nối chân CS của thẻ SD với chân không phải GPIO15.

4) Hãy nhớ các giá trị mà chúng tôi đã ghi lại cho tất cả các khóa? Chúng ta phải gán một số khóa cho mỗi giá trị. Tôi cũng đã nói với bạn về những biến động trong bài đọc. Điều này là do các địa chỉ liên lạc chuyển đổi không được hoàn hảo. Về lâu dài, giá trị này có thể lệch khỏi giá trị hiện tại do sự lão hóa của các tiếp điểm làm tăng thêm điện trở trong mạch do đó làm thay đổi điện áp. Chúng tôi có thể giải quyết vấn đề này trong mã.

Chúng tôi sẽ thêm giới hạn trên và giới hạn dưới của giá trị với biên là 5. Ví dụ, tôi nhận được số đọc là 617 cho khóa 1.

  • Lấy nó trừ đi 5. 617 - 5 = 612. Đây là giới hạn dưới.
  • Bây giờ thêm 5 vào nó. 617 + 5 = 622. Đây là giới hạn trên.
  • Di chuyển đến cuối mã. Điền vào khoảng trống được cung cấp cho hai giá trị trong mã như trong hình.
  • Làm điều này cho mỗi 9 giá trị.

if (r> 612 && r <622) {keyNumber = 1; }

Điều đó có nghĩa là gì?

NẾU số đọc (r) lớn hơn 612 VÀ nhỏ hơn 622, thì phím 1 được nhấn. Bất kỳ giá trị nào từ 612 đến 622 sẽ được coi là khóa 1. Điều này giải quyết vấn đề đọc dao động.

Bước 8: Xây dựng trường hợp

Xây dựng trường hợp
Xây dựng trường hợp
Xây dựng trường hợp
Xây dựng trường hợp
Xây dựng trường hợp
Xây dựng trường hợp
Xây dựng trường hợp
Xây dựng trường hợp

Điều này là hoàn toàn tùy chọn. Tôi nghĩ rằng dự án sẽ trông gọn gàng và hoàn chỉnh với một hộp đựng xung quanh nó. Không có công cụ thích hợp cho công việc này, đó sẽ là một nhiệm vụ rất lớn đối với tôi. Vỏ được làm bằng acrylic.

Chuẩn bị các miếng để dán bằng cách dùng giấy nhám mài nhẵn các cạnh. Tôi đã sử dụng Fevi Kwik (Keo siêu dính) để nối tất cả các mảnh lại với nhau. Keo siêu dính để lại cặn trắng sau khi đóng rắn. Vì vậy, bạn chỉ nên thoa thuốc giữa các khớp. Bạn phải nhanh chóng và chính xác khi làm việc với keo siêu dính vì nó sẽ đông kết nhanh chóng. Xi măng Acrylic là phù hợp nhất cho công việc này.

Tạo một lỗ nhỏ để truy cập cổng USB bằng tệp. Nó phải đủ lớn để cắm dây USB.

Đã tạo lưới 3x3 trên bìa trước cho các nút nhấn. Điều này sẽ làm cho các nút ấn khó tiếp cận. Để giải quyết vấn đề này, tôi cắt các miếng hình vuông cho mỗi phím để các nút của chúng bây giờ được mở rộng lên trên bề mặt.

Sau rất nhiều chà nhám, cắt, sửa và điều chỉnh, cuối cùng nó đã được hoàn thành!

Bước 9: Vui chơi

Chúc vui vẻ!
Chúc vui vẻ!

Cuối cùng, tất cả các công việc khó khăn đã được thực hiện. Tăng sức mạnh cho bảng điểm nhỏ của bạn và luôn cập nhật trò chơi.

Sau khi bật nguồn, lần đầu tiên nó kết nối với điểm truy cập. Khởi tạo thẻ SD. Nó sẽ hiển thị lỗi nếu thẻ SD không được khởi tạo.

Danh sách tất cả các trận đấu sẽ được hiển thị cùng với số trận đấu.

Chọn số khớp bằng bàn phím.

Điểm số sẽ được hiển thị. Bạn có thể tùy chỉnh những gì bạn muốn xem trên màn hình. Tôi sẽ không đi quá sâu vào việc giải thích mã. Bạn có thể tìm thấy giải thích chi tiết ở đây về cách phân tích cú pháp hoạt động.

Để quay lại menu, hãy giữ nút QUAY LẠI (Phím 8) cho đến khi trang "Tìm nạp Điểm…" được hiển thị.

Các kế hoạch trong tương lai

  • Thiết kế một PCB tùy chỉnh với mô-đun ESP8266 12-E.
  • Thêm một pin sạc.
  • Cải thiện mã với các tính năng mới.

Hy vọng bạn thích bản dựng. Hãy tự làm và vui chơi! Luôn có một số không gian để cải thiện và nhiều điều để học hỏi. Đưa ra ý tưởng của riêng bạn. Hãy bình luận bất kỳ đề xuất nào liên quan đến việc xây dựng. Cảm ơn bạn đã gắn bó cho đến cuối cùng.

Đề xuất: