Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Xin chào các nhà sản xuất, Tôi là Tahir Miriyev, tốt nghiệp năm 2018 tại Đại học Kỹ thuật Trung Đông, Ankara / Thổ Nhĩ Kỳ. Tôi học chuyên ngành Toán ứng dụng, nhưng tôi luôn thích chế tạo đồ đạc, đặc biệt là khi nó liên quan đến một số công việc thủ công với điện tử, thiết kế và lập trình. Nhờ một khóa học độc đáo về tạo mẫu, được cung cấp tại khoa Thiết kế Công nghiệp của chúng tôi, tôi đã có cơ hội tạo ra một thứ thực sự thú vị. Dự án có thể được coi là một Dự án học kỳ, kéo dài trong thời gian cả học kỳ (4 tháng). Các sinh viên được giao nhiệm vụ tìm ra cách tiếp cận sáng tạo để thiết kế các sản phẩm / bản trình diễn đã có và hiện thực hóa ý tưởng của họ bằng cách sử dụng bộ vi điều khiển và cảm biến Arduino. Tôi đang suy nghĩ về cờ vua và sau khi thực hiện một số nghiên cứu về các dự án thành công, tôi nhận thấy rằng trong các dự án trước đó, các nhà sản xuất dự án trước đây về cơ bản đã sử dụng các công cụ cờ vua được thiết lập sẵn (trong đó tất cả các nước đi của mỗi hình đều được lập trình trong lõi), cùng với Raspberry Pi, một số MUX 'es, đèn LED và công tắc sậy. Mặc dù vậy, trong dự án của mình, tôi đã quyết định loại bỏ mọi phần mềm bên ngoài về công cụ cờ vua và tìm ra giải pháp sáng tạo cho vấn đề Nhận dạng hình, sử dụng đầu đọc RFID, cảm biến hiệu ứng Hall và Arduino Mega.
Bước 1: Vấn đề nhận dạng hình là gì và cách tôi giải quyết nó
Nói một cách đơn giản, giả sử bạn có một bàn cờ vua với "bộ não" = vi điều khiển và bạn phải làm cho bàn cờ của mình hiểu được bạn cầm hình nào trên tay và bạn đã đặt nó ở đâu. Đây là vấn đề của Nhận dạng Hình. Giải pháp cho vấn đề này là nhỏ khi bạn có một công cụ cờ vua với tất cả các quân cờ đứng ở vị trí ban đầu của chúng trên bàn cờ. Trước khi tôi giải thích lý do tại sao nó như vậy, hãy để tôi đưa ra một số nhận xét.
Đối với những người nhiệt tình về cách mọi thứ hoạt động ở đây, tôi phải làm rõ lý do tại sao chúng ta cần công tắc cây lau (hoặc trong trường hợp của tôi, tôi đã sử dụng cảm biến hiệu ứng Hall): nếu bạn đặt một nam châm dưới mỗi mảnh và nhặt nó lên từ một hình vuông trên bảng (giả sử rằng có một công tắc lau sậy dưới mỗi hình vuông) do sự tồn tại / không tồn tại của từ trường phía trên cảm biến, bạn có thể làm cho bộ điều khiển của mình hiểu liệu có / không có một mảnh đứng trên hình vuông. Tuy nhiên, nó vẫn không cho vi điều khiển biết bất cứ điều gì về chính xác mảnh nào đang đứng trên hình vuông. Nó chỉ cho biết rằng có / không có một mảnh trên hình vuông. Tại thời điểm này, chúng ta phải đối mặt với vấn đề Nhận dạng Hình, có thể được giải quyết bằng cách sử dụng công cụ cờ vua, với tất cả các quân cờ được đặt vào vị trí ban đầu của chúng khi trò chơi cờ vua bắt đầu. Bằng cách này, bộ vi điều khiển "biết" vị trí của mọi phần ngay từ đầu, với tất cả các địa chỉ được cố định trong bộ nhớ. Tuy nhiên, điều này mang lại cho chúng tôi một hạn chế lớn: bạn không thể chọn, giả sử, bất kỳ số lượng quân cờ nào và đặt chúng ngẫu nhiên ở bất kỳ đâu trên bàn cờ và bắt đầu phân tích trò chơi. Bạn luôn phải bắt đầu từ đầu, ban đầu tất cả các mảnh phải nằm trên bảng, vì đây là cách duy nhất để bộ vi điều khiển theo dõi vị trí của chúng khi bạn nhấc một mảnh lên và đặt trên một ô vuông khác. Về bản chất, đây là vấn đề tôi nhận thấy và quyết định giải quyết.
Giải pháp của tôi khá đơn giản, mặc dù sáng tạo. Tôi đã đặt một đầu đọc RFID ở mặt trước của bảng. Trong khi đó, tôi không chỉ gắn một nam châm dưới các miếng mà còn gắn một thẻ RFID, với mỗi miếng có một ID duy nhất. Do đó, trước khi bạn đặt một hình lên bất kỳ hình vuông mong muốn nào, trước tiên bạn có thể giữ mảnh gần đầu đọc RFID và để nó đọc ID, xác định mảnh, lưu vào bộ nhớ, sau đó bạn có thể đặt nó ở bất cứ đâu bạn muốn. Ngoài ra, thay vì sử dụng công tắc sậy, để đơn giản hóa thiết kế mạch, tôi đã sử dụng cảm biến hiệu ứng hội trường, hoạt động tương tự, với sự khác biệt duy nhất là gửi 0 hoặc 1 đến bộ vi điều khiển dưới dạng dữ liệu kỹ thuật số, nghĩa là "có" hoặc "không có" bất kỳ mảnh nào trên hình vuông, tương ứng. Tôi cũng đã thêm đèn LED (tiếc là không cùng màu, không có đèn LED), để khi bạn nhấc miếng lên, tất cả các vị trí hình vuông, nơi có thể đặt miếng nâng lên, sẽ sáng. Hãy coi nó như một phương pháp giáo dục dành cho những người học cờ vua:)
Cuối cùng, tôi muốn lưu ý rằng mặc dù thực tế là tôi đã sử dụng một số kỹ thuật, nhưng dự án vẫn đơn giản và dễ hiểu, không được làm sâu sắc hoặc quá phức tạp. Tôi không có đủ thời gian để tiếp tục với bàn cờ 8x8 (cũng vì 64 cảm biến hiệu ứng hội trường rất tốn kém ở Thổ Nhĩ Kỳ, tôi đã trang trải mọi chi phí liên quan đến projec), đó là lý do tại sao tôi đã làm phiên bản demo 4x4 với chỉ hai quân cờ được thử nghiệm: Pawn và Nữ hoàng. Thay vì sử dụng công cụ cờ vua, tôi đã viết một mã nguồn cho Arduino, mã nguồn này tạo ra mọi thứ bạn sẽ thấy trong video bên dưới.
Bước 2: Cách mọi thứ hoạt động
Trước khi chúng ta chuyển sang phần giải thích từng bước về cách dự án được thực hiện, tôi nghĩ tốt hơn là nên xem một video minh họa và có được một số ý tưởng trực quan về những gì tôi đang nói.
Lưu ý # 1: một trong những đèn LED màu đỏ (đầu tiên trong hàng / từ trái sang phải) bị cháy, đừng bận tâm.
Lưu ý # 2: mặc dù được sử dụng rộng rãi, theo kinh nghiệm của tôi, tôi có thể nói rằng Công nghệ RFID không phải là ý tưởng tốt nhất để sử dụng trong các ứng dụng DIY (tất nhiên nếu bạn có lựa chọn thay thế). Trước khi mọi thứ hoạt động, tôi đã thực hiện nhiều thử nghiệm với việc đặt các quân cờ gần đầu đọc và đợi cho đến khi nó đọc đúng ID. Cổng nối tiếp nên được thiết lập cho điều đó vì cách đầu đọc RFID đọc ID chỉ là một vấn đề đau đầu. Người ta nên thử một mình để hiểu vấn đề. Nếu bạn cần hỗ trợ thêm, hãy mail cho tôi ([email protected]) hoặc add trên skype (tahir.miriyev9r1), để chúng ta có thể lên lịch trò chuyện và trao đổi cụ thể về mọi thứ, tôi sẽ giải thích cặn kẽ mọi chuyện.
Bước 3: Công cụ và thành phần
Đây là danh sách tất cả các công cụ tôi đã sử dụng cho dự án:
- Bảng mạch (x1)
- Cảm biến hiệu ứng Hall A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) đa hướng (x16)
- Đèn LED 5 mm cơ bản (x16)
- Dây nhảy
- Đầu đọc RFID 125 kHz và Ăng-ten (x1)
- Arduino Mega (x1)
- Thẻ RFID 3M (x2)
Các vật liệu khác:
- Plexiglass
- Giấy bóng
- ván ngắn (bằng gỗ)
- Sơn acrylic (xanh lá cây đậm và creme) x2
- Bìa cứng mỏng
- Nam châm tròn 10 mm (x2)
- Quân cờ và quân hậu
- Sắt hàn và vật liệu hàn
Bước 4: Sơ đồ (Fritzing)
Sơ đồ hơi phức tạp một chút, tôi biết, nhưng ý tưởng phải rõ ràng. Đây là lần đầu tiên tôi sử dụng Fritzing (nhân tiện này rất khuyến khích), có lẽ các kết nối có thể được vẽ chính xác hơn. Dù sao, tôi đã ghi chú lại mọi thứ bên trong sơ đồ. Lưu ý: Tôi không thể tìm thấy mô hình chính xác của RDIF Reader trong số các thành phần trong cơ sở dữ liệu của Fritzing. Mô hình tôi đã sử dụng là mô-đun RFID 125Khz - UART. Bạn có thể tìm thấy các hướng dẫn trên Youtube về cách thiết lập mô-đun này với Arduino.
Bước 5: Xử lý
Đã đến lúc giải thích mọi thứ được tạo ra như thế nào. Vui lòng làm theo mô tả từng bước:
1. Lấy một tấm bìa cứng 21x21 cm, cũng như một số bìa cứng thừa để cắt và dán các bức tường của phần trên của tấm bìa, để tạo thành 16 hình vuông với A B C D 1 2 3 4 được liệt kê. Vì bìa cứng mỏng, bạn có thể dán 16 cảm biến hiệu ứng hội trường vào mỗi hình vuông, với 3 chân mỗi bên và 16 đèn LED với 2 chân mỗi bên.
2. Sau khi bạn đặt các thành phần, bạn sẽ cần thực hiện một số hàn, hàn chân của cảm biến hiệu ứng Hall và đèn LED với dây nhảy. Tại thời điểm này, tôi khuyên bạn nên chọn dây màu một cách thông minh, để bạn không bị nhầm lẫn với chân + và - của đèn LED, cũng như chân VCC, GND và PIN của cảm biến hiệu ứng Hall. Tất nhiên, người ta có thể in một PCB với các cảm biến và thậm chí cả loại đèn LED WS2812 đã được hàn sẵn, nhưng tôi quyết định giữ cho dự án đơn giản và làm thêm một số "thủ công". Tại thời điểm này, tất cả những gì bạn phải làm là chuẩn bị dây và cảm biến, ở các giai đoạn sau, từ sơ đồ Fritzing, bạn có thể thấy nơi bạn nên gắn đầu cuối của mỗi dây. Trong thời gian ngắn, một số người trong số họ sẽ chuyển trực tiếp đến mã PIN trên Arduino Mega (có đủ chúng trên Arduino), những người khác vào breadboard và tất cả GND có thể được hàn vào một đoạn dây duy nhất (tạo điểm chung) sau này nên được kết nối với GND trên bảng Arduino. Một lưu ý quan trọng ở đây: Cảm biến hiệu ứng Hall là OMNIDIRECTIONAL, có nghĩa là không quan trọng cực nam châm nào sẽ được giữ gần cảm biến, nó sẽ gửi 0 dữ liệu khi có một số từ trường gần đó và 1 khi không có, cụ thể là, nam châm cách xa cảm biến (xa hơn có thể nói là 5 sm).
3. Chuẩn bị các tấm bìa cứng 21x21 cm tương tự và cố định Arduino Mega và một bảng mạch dài lên đó. Bạn cũng có thể cắt lại 4 bức tường có chiều cao mong muốn từ bìa cứng và dán chúng theo chiều dọc bằng hai lớp bảng vuông 21x21 cm đó. Sau đó làm theo Fritzing Schearies để thiết lập mọi thứ. Bạn cũng có thể đặt đầu đọc RFID sau khi hoàn tất với đèn LED và cảm biến hiệu ứng Hall.
4. Kiểm tra xem tất cả các đèn LED và cảm biến có hoạt động hay không, bằng cách gửi tín hiệu bằng các mã cơ bản. Đừng tránh bước này vì nó sẽ cho phép bạn kiểm tra xem mọi thứ có hoạt động bình thường hay không và chuyển sang bước xây dựng tiếp theo của bảng.
5. Chuẩn bị Pawn và Queen, bên dưới có gắn hai nam châm bán kính 10 cm, cũng như các thẻ RFID tròn. Sau đó, bạn sẽ cần đọc ID của các thẻ đó từ Màn hình nối tiếp trên Arduino IDE.
6. Nếu mọi thứ hoạt động tốt, bạn có thể bắt đầu mã chính và thử mọi thứ!
7 (tùy chọn). Bạn có thể thực hiện một số tác phẩm nghệ thuật với gỗ sẽ mang lại cho bản demo của bạn một cái nhìn tự nhiên hơn. Điều đó tùy thuộc vào ý muốn và trí tưởng tượng của bạn.
Bước 6: Một số ảnh và video từ các giai đoạn khác nhau
Bước 7: Mã nguồn
Bây giờ, khi chúng tôi đã hoàn thành mẫu thử nghiệm, chúng tôi đã sẵn sàng đưa nó vào cuộc sống với mã Arduino bên dưới. Tôi đã cố gắng để lại nhiều bình luận nhất có thể, để làm cho quá trình phân tích mã dễ hiểu. Thành thật mà nói, logic có vẻ hơi phức tạp ngay từ cái nhìn đầu tiên, nhưng nếu bạn tìm hiểu sâu hơn về logic của mã, nó sẽ trông toàn diện hơn.
Lưu ý: Tương tự như bàn cờ thật, tôi đánh số một cách trừu tượng các ô vuông là A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Tuy nhiên, trong mã, không thực tế khi sử dụng ký hiệu này. Do đó, tôi đã sử dụng các mảng và các ô vuông được biểu diễn lần lượt là 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33.
Cám ơn vì sự quan tâm của bạn! Kiểm tra mọi thứ và tự do viết nhận xét về bất kỳ loại lỗi nào tôi đã bỏ qua, các cải tiến, đề xuất, v.v. Mong nhận được một số ý kiến về dự án. Nếu bạn cần bất kỳ hỗ trợ nào với dự án, hãy gửi thư cho tôi (miriyevt @ gmail.com) hoặc thêm trên skype (tahir.miriyev9r1), để chúng ta có thể lên lịch trò chuyện và thảo luận chi tiết về mọi thứ. May mắn nhất!