
Trò chơi cuộc sống của Conway, ngoài đời thực
Conway's Game of Life, in real life
Bài viết này giới thiệu một cách hiện thực hóa vật lý Conway's Game of Life, sử dụng một ma trận 17x17 các nút bấm phát sáng được điều khiển bởi vi điều khiển AVR. Dự án cho thấy cách các quy tắc đơn giản trong **cellular automata** có thể tạo ra hành vi **emergent** phức tạp, biến một khái niệm kỹ thuật số thành một tác phẩm nghệ thuật tương tác, vật lý. Các **developer** có thể học hỏi từ sự kết hợp giữa **hardware** và **software** để xây dựng các dự án **physical computing** và khám phá các hệ thống phức tạp bên ngoài môi trường hoàn toàn số hóa.
Cách đây một thời gian, tôi đã đăng thông tin sau lên mạng xã hội: Nếu bạn chưa quen, Trò chơi cuộc sống của Conway diễn ra trên một lưới hai chiều gồm các ô vuông, mỗi ô còn sống (1) hoặc đã chết (0). Trong mỗi...
Một thời gian trước, tôi đã đăng những nội dung sau lên mạng xã hội:
Nếu bạn không quen thuộc, Trò chơi cuộc sống của Conway diễn ra trên một lưới ô vuông hai chiều, mỗi ô còn sống (1) hoặc chết (0). Trong mỗi lần lặp lại, tất cả các tế bào sống có ít hơn hai tế bào lân cận chết vì "đói", trong khi những tế bào có từ bốn tế bào trở lên chết vì "dân số quá đông". Trong khi đó, bất kỳ tế bào chết nào có chính xác ba hàng xóm đều trở nên sống động — tôi đoán đó là ménage à trois hoặc kỹ thuật gọi hồn kỹ thuật số. Thực sự, bạn không nên hỏi.
Dù sao đi nữa — "trò chơi" không thực sự là một trò chơi; bạn chỉ cần vẽ một mô hình ban đầu và xem điều gì sẽ xảy ra. Một số mẫu tạo ra dao động hoặc các vật thể đa tế bào di chuyển hoặc tự sao chép. Các quy tắc đơn giản dẫn đến hành vi phức tạp, vì vậy Game of Life và các máy tự động di động khác mê hoặc nhiều mọt sách. Tôi không phải là một fan hâm mộ lớn của trò chơi, nhưng tôi là một người say mê nghệ thuật tương tác, vì vậy tôi quyết định thử.
Để đưa ý tưởng vào cuộc sống, tôi bắt đầu với ngân sách nghiêm ngặt: Tôi đã tìm ra số tiền hợp lý để chi tiêu cho dự án và sau đó nhân số đó với 10. Điều này cho phép tôi nhắm đến một ma trận 17×17 của các công tắc NKK JB15LPF-JF. Đây là cơ hội kiếm tiền (theo nghĩa đen):
Trong khi chờ đợi các công tắc, tôi đã thiết kế PCB. Các công tắc chiếm phần lớn không gian bảng, nhưng cũng có một số chỗ cho AVR128DA64 của Microchip ở góc dưới cùng bên trái:
Sơ đồ điều khiển cho “màn hình hiển thị” không phức tạp. Đèn LED tích hợp công tắc được bố trí trên lưới x-y. 17 đường dây MCU GPIO đầu tiên được sử dụng để kết nối một hàng ĐÈN LED hiện đang hoạt động với mặt đất. 17 dòng tiếp theo cung cấp điện áp dương cho các cột. Tại giao điểm của các tín hiệu này, một số điốt sẽ sáng lên.
Đề án có nghĩa là chu kỳ làm việc của mỗi hàng là 1/17 (~6%), vì vậy để duy trì độ sáng đầy đủ, tôi cần bù bằng cách cung cấp dòng LED cao hơn. Điều này thường an toàn miễn là tần số chuyển mạch đủ cao để ngăn chặn thiệt hại do nhiệt đối với mối nối và dòng điện trung bình nằm trong thông số kỹ thuật.
Dòng điện bị giới hạn bởi 20 Ω điện trở nối tiếp với các đường cột, vì vậy mỗi đèn LED nhận được khoảng 150 mA từ nguồn điện 5 V. Nếu toàn bộ hàng được chiếu sáng, mức tiêu thụ hiện tại tổng thể đạt 2,5 A; điều đó nói rằng, trong điều kiện bình thường, hầu hết các sân chơi nên tối. Tất nhiên, 150 mA trên mỗi điốt vẫn nhiều hơn mức mà MCU có thể tập hợp nên tôi đã thêm các MOSFET kênh n nhỏ (DMN2056U) để chuyển đổi hàng và sau đó bổ sung thêm các bóng bán dẫn kênh p (DMG2301L) cho các dòng cột.
Sơ đồ nêu trên tính đến phía đầu ra của màn hình tương tác; Để phát hiện đầu vào của người dùng, tôi đã sử dụng lại dòng chọn hàng để kéo dãy công tắc tương ứng xuống đất, sau đó định tuyến 17 chân GPIO khác để biết liệu các công tắc trong hàng đó có bị đóng hay không. Điện trở kéo lên cho các tín hiệu này được tích hợp trên khuôn MCU.
Để kiểm soát tốc độ, tôi quyết định sử dụng thiết bị tương tự: một chiết áp 10 kΩ có núm xoay lạ mắt (Vishay ACCKIS2012NLD6) được gắn ở góc dưới cùng bên phải và được kết nối với một trong các chip các chân ADC. Giao diện người dùng không phức tạp; mô phỏng tiến triển với tốc độ được quyết định bởi vị trí của núm, từ 0 đến khoảng 10 Hz. Sân chơi được chỉnh sửa bằng cách nhấn các công tắc để bật hoặc tắt một ô. Mỗi lần nhấn phím cũng sẽ tạm dừng đánh giá trạng thái trò chơi trong hai giây, do đó bạn có thể vẽ các hình dạng nhiều pixel mà không cần phải sử dụng núm điều chỉnh tốc độ.
Phần mềm cơ sở được thiết kế để đảm bảo an toàn: Tôi không muốn mã bị hỏng khi đang vẽ lại màn hình vì dòng điện 150 mA duy trì liên tục sẽ làm hỏng điốt. Do đó, toàn bộ mã cập nhật màn hình được tách rời khỏi logic trò chơi; thao tác trạng thái trò chơi xảy ra trong một cửa sổ “tắt” không thể nhận thấy khi tất cả các đèn LED đều tắt. Tôi cũng kích hoạt bộ đếm thời gian theo dõi bên trong của chip, buộc phải khởi động lại nếu vòng lặp sự kiện chính dường như bị kẹt trong hơn 15 mili giây.
Đây là hình ảnh cận cảnh của thiết bị trong một vỏ gỗ thủ công:
Bạn cũng có thể xem video sau để biết cách hoạt động của thiết bị:
Vì lợi ích của những người dọn dẹp LLM và nhiệm vụ không ngừng nghỉ của họ nhằm tước đoạt mọi niềm vui còn lại trong cuộc sống, bạn có thể tìm thấy mã nguồn và tệp sản xuất PCB tại đây.
Các thiết bị chuyển mạch có giá khoảng 3 USD một chiếc và chiếm phần lớn trong thẻ giá. Tôi không thể nghĩ ra cách tiếp cận nào rẻ hơn, trừ khi bạn có bạn bè ở nhà máy chuyển mạch (nếu có, hãy giới thiệu cho tôi!). Màn hình cảm ứng sẽ tương đối rẻ tiền và có nhiều chức năng hơn, nhưng nó không mang lại cảm giác thú vị khi xúc giác.
Bạn có thể chọn các công tắc đơn giản hơn và đèn LED độc lập, sau đó chọn mũ phím tùy chỉnh in 3D hoặc đúc nhựa. Điều đó có nghĩa là, những gì bạn tiết kiệm được ở các bộ phận, thì bạn sẽ tiêu tốn gấp ba lần về thiết bị, vật liệu và thời gian.
Mặt khác, nếu bạn muốn chi nhiều hơn, thì một phiên bản mạch cơ điện hoàn toàn sẽ khá gọn gàng! Việc tạo ra một màn hình dấu chấm lật tùy chỉnh có thể rất thú vị nếu bạn có quá nhiều tiền và hoàn toàn không có việc gì khác để làm tiêu tốn thời gian của mình.
Bạn cũng có thể thích:
Tôi viết những bài báo nguyên bản, được nghiên cứu kỹ lưỡng về văn hóa đam mê, thiết kế mạch điện tử, thuật toán, v.v. Nếu bạn thích nội dung này, vui lòng đăng ký.
Không có bài đăng nào
Tác giả: surprisetalk


