
Mục lục:
- Bước 1: Vật liệu
- Bước 2: Cắt các miếng cho ngăn kéo trong MDF. (Để có kết quả tốt hơn, hãy sử dụng máy cắt laser)
- Bước 3: Dán tất cả các mảnh lại với nhau để tạo thành một ngăn kéo với hai ngăn kéo nhỏ và một ngăn kéo lớn
- Bước 4: Vặn các vít ở giữa mỗi ngăn kéo
- Bước 5: Với Máy khoan Tạo lỗ Qua Ngăn kéo ở Mặt sau, Lỗ phải có Kích thước của Cảm biến
- Bước 6: Hàn từng bộ cảm biến 70 CNY với dây đồng. (lặp lại 4 lần nhiều hơn)
- Bước 7: Một mạch đặc biệt được sử dụng cho cảm biến
- Bước 8: Kết nối Gác lửng cảm biến với Bảng rồng 410c. (được sử dụng để truy cập GPIO)
- Bước 9: Kết nối mạch từ Breadboard đến Mezzanine
- Bước 10: Viết hoặc sao chép mã
- Bước 11: Chạy chương trình
- Bước 12: Kết luận
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:15

Trong tài liệu tiếp theo, bạn có thể xem quá trình xây dựng và lập trình của một ngăn kéo thông minh. Ngăn kéo này được lập trình trong Dragon Board 410c, với mục đích nâng cao chất lượng của các thành phố. Dự án là một phần của cuộc thi “hackathon thành phố thông minh Qualcomm 17”.
Ý tưởng của dự án này bắt đầu từ một vấn đề mà rất ít người nhìn thấy, đó là việc quản lý thất lạc và tồi tệ các công cụ và vật liệu được cung cấp bởi các công ty như nhà máy và thậm chí bệnh viện. Ở những nơi này, một số vật liệu và công cụ được cung cấp cho người lao động để thực hiện các hoạt động, vật liệu và công cụ này phải được sử dụng lại vì chúng đắt tiền hoặc thiếu nguồn lực kinh tế để thay thế chúng.
Trong bệnh viện, có người kiểm soát những vật liệu được lấy ra, nhưng khi có sự can thiệp của con người sẽ xảy ra sai sót, có thể dẫn đến những chi phí phát sinh không đáng có. Giải pháp tốt nhất cho vấn đề này là một ngăn kéo thông minh có khả năng duy trì một kho đồ vật được mượn và trả lại, đồng thời biết ai là người chịu trách nhiệm.
Bước 1: Vật liệu
Vật liệu cần thiết cho dự án là loại tiếp theo: 1 x Dragon Board 410c
1 x Bộ cảm biến Mezzanine 96 Bo mạch cho Dragon Board 410c
1 x Breadboard
1 x tấm MDF (Tấm sợi quang mật độ trung bình) 61 x 122 cms
5 x cảm biến CNY 70
1 X MẸO31B
1 x nam châm điện
1 x 7408
1 x Bàn phím
1 x màn hình
3 x vít
Sức đề kháng (đa dạng)
Dây đồng
Keo dính
Máy khoan
Bước 2: Cắt các miếng cho ngăn kéo trong MDF. (Để có kết quả tốt hơn, hãy sử dụng máy cắt laser)

Bước 3: Dán tất cả các mảnh lại với nhau để tạo thành một ngăn kéo với hai ngăn kéo nhỏ và một ngăn kéo lớn
Bước 4: Vặn các vít ở giữa mỗi ngăn kéo

Bước 5: Với Máy khoan Tạo lỗ Qua Ngăn kéo ở Mặt sau, Lỗ phải có Kích thước của Cảm biến

Bước 6: Hàn từng bộ cảm biến 70 CNY với dây đồng. (lặp lại 4 lần nhiều hơn)

Bước 7: Một mạch đặc biệt được sử dụng cho cảm biến

Bước 8: Kết nối Gác lửng cảm biến với Bảng rồng 410c. (được sử dụng để truy cập GPIO)

Điều rất quan trọng là bước này phải được thực hiện với bàn cờ rồng, nếu không nó có thể bị cháy, ngoài ra tất cả các mã PIN cần phải được đặt chính xác.
Bước 9: Kết nối mạch từ Breadboard đến Mezzanine




Bước 10: Viết hoặc sao chép mã
#include #include #include // # bao gồm
#include "libsoc_gpio.h"
#include "libsoc_debug.h" #include "libsoc_board.h"
/ * Đoạn mã dưới đây làm cho ví dụ này hoạt động trên tất cả 96Boards * /
không dấu int LED_1; // điện tử iman
unsigned int BUTTON_1; // cảm biến đầu tiên
unsigned int BUTTON_2; // cảm biến thứ hai chưa ký int BUTTON_3; // đóng không dấu int BUTTON_4; // cảm biến thứ ba
struct Người dùng {
tên người dùng char [20]; mật khẩu char [20]; }Người sử dụng;
struct Cơ sở dữ liệu {
char Điều_kiện [20]; char Vị trí [20]; } Cơ sở dữ liệu;
int cảm biến1;
int cảm biến2; int cảm biến3;
int sensor1_last_state;
int sensor2_last_state; int sensor3_last_state;
tên người dùng char [50];
mật khẩu char [50];
char YesNo [40];
TẬP TIN * pFILE;
char Có [20] = {"Có"};
int running = 1;
_attribute _ ((hàm tạo)) static void _init ()
{board_config * config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // nắm tay cảm biến BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // cảm biến thứ hai BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // đóng giá đỡ BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // cảm biến thứ ba // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");
LED_1 = libsoc_board_gpio_id (cấu hình, "GPIO-E"); // điện tử iman
libsoc_board_free (cấu hình); } / * Mã đặc biệt cuối 96 Thẻ * /
int main ()
{gpio * led_1, * button_1, * button_2, * button_3, * button_4; // int touch; struct Người dùng Karina; struct Trình quản lý người dùng; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Cao hơn theo chiều dọc"); strcpy (Tên người quản lý, "Ông chủ"); strcpy (Manager.password, "ITESM"); Công cụ cơ sở dữ liệu struct; struct Cơ sở dữ liệu Pen; struct Cơ sở dữ liệu Case; strcpy (Tool. Article_Name, "Công cụ"); Công cụ cơ sở dữ liệu struct; struct Cơ sở dữ liệu Pen; struct Cơ sở dữ liệu Case; strcpy (Tool. Article_Name, "Công cụ"); strcpy (Pen. Article_Name, "Pen"); strcpy (Case. Article_Name, "Trường hợp"); libsoc_set_debug (0); led_1 = libsoc_gpio_request (LED_1, LS_SHARED); button_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); button_2 = libsoc_gpio_request (BUTTON_2, LS_SHARED); button_3 = libsoc_gpio_request (BUTTON_3, LS_SHARED); button_4 = libsoc_gpio_request (BUTTON_4, LS_SHARED); // button_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);
if ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))
{goto fail; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (button_2, INPUT); libsoc_gpio_set_direction (button_3, INPUT); libsoc_gpio_set_direction (button_4, INPUT); // libsoc_gpio_set_direction (button_5, INPUT);
if ((libsoc_gpio_get_direction (led_1)! = OUTPUT)
|| (libsoc_gpio_get_direction (button_1)! = INPUT) || (libsoc_gpio_get_direction (button_2)! = INPUT) || (libsoc_gpio_get_direction (button_3)! = INPUT) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {goto fail; } sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (button_2); sensor3 = libsoc_gpio_get_level (button_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Nằm trên Rack"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Chưa bao giờ được đặt trong Rack này"); } if (sensor2 == 1) {strcpy (Pen. Location, "Nằm trên Rack"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Không bao giờ được đặt trong Rack này"); } if (sensor3 == 1) {strcpy (Case. Location, "Nằm trên Rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "Không bao giờ được đặt trong Rack này"); } while (đang chạy) {libsoc_gpio_set_level (led_1, HIGH); printf ("Vui lòng nhập tên người dùng:"); scanf ("% s", tên người dùng); printf ("Vui lòng nhập mật khẩu:"); scanf ("% s", mật khẩu); if (strcmp (tên người dùng, "Karina") == 0 && strcmp (mật khẩu, "Cao hơn") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, THẤP); while (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (button_2); sensor3 = libsoc_gpio_get_level (button_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } else if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Nằm trên Rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Nằm trên Rack"); }
if (sensor3 == 1 && sensor3! = sensor3_last_state) {
strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Nằm trên Rack"); }} else if (strcmp (tên người dùng, "Boss") == 0 && strcmp (mật khẩu, "ITESM") == 0) {printf ("Bạn có muốn tạo tệp văn bản với cơ sở dữ liệu không? [Có / Không] "); scanf ("% s", YesNo); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "% s", "-------- Cơ sở dữ liệu của Rack ----- / n"); fprintf (pFILE, "% s", "Tên bài viết:"); fprintf (pFILE, "% s", Tool. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Vị trí của Bài viết:"); fprintf (pFILE, "% s", Tool. Location); fprintf (pFILE, "% s", "\ n"); fprintf (pFILE, "% s", "Tên bài viết:"); fprintf (pFILE, "% s", Pen. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Vị trí của Bài viết:"); fprintf (pFILE, "% s", Pen. Location); fprintf (pFILE, "% s", "\ n");
fprintf (pFILE, "% s", "Tên bài viết:");
fprintf (pFILE, "% s", Case. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Vị trí của Bài viết:"); fprintf (pFILE, "% s", Case. Location); fprintf (pFILE, "% s", "\ n");
fclose (pFILE);
}
printf ("Truy cập Bị Từ chối / n");
}} fail: if (led_1 || button_1 || button_2 || button_3) {printf ("áp dụng tài nguyên gpio fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (button_2); libsoc_gpio_free (button_3); }
Bước 11: Chạy chương trình
Bước 12: Kết luận
Dự án có một tương lai đầy hứa hẹn, vì nó có thể cải tiến theo cách rất hiệu quả, các cảm biến có thể được thay đổi cho các thẻ RFID´S và đồng thời với RFID, có thể sử dụng thẻ ID để theo dõi ai chịu trách nhiệm về tài liệu.
Đề xuất:
Máy tính tiết kiệm tài khoản ngân hàng: 18 bước

Máy tính tiết kiệm tài khoản ngân hàng: Cảm ơn bạn đã chọn máy tính tiết kiệm của tôi. Hôm nay chúng ta sẽ học cách lập trình một lớp BankAccount để theo dõi các khoản chi tiêu và tiết kiệm cá nhân của riêng bạn. Để tạo một tài khoản ngân hàng để theo dõi các khoản chi tiêu của bạn, trước tiên, bạn sẽ cần một
Kiểm tra bản in mà không cần phần mềm đặc biệt hoặc máy in với MS Excel (In séc ngân hàng): 6 bước

Kiểm tra bản in mà không cần phần mềm hoặc máy in đặc biệt với MS Excel (In séc ngân hàng): Đây là một sổ làm việc excel đơn giản, sẽ rất hữu ích cho bất kỳ doanh nghiệp nào để viết nhiều séc ngân hàng thứ hai cho các Nhà cung cấp của họ. Bạn không cần máy in hoặc phần mềm đặc biệt, chỉ bạn cần là máy tính với MS Excel và máy in bình thường. Vâng, bây giờ bạn có thể
LOA CỔNG + NGÂN HÀNG NGÂN HÀNG: 10 bước

PORTABLE SPEAKER + POWERBANK: Đây là tài liệu hướng dẫn đầu tiên của tôi khi thực hiện dự án điện tử. Chiếc loa mà tôi đã làm ở đây có công suất 40W mà tôi đã sử dụng từ chiếc xe cũ, bạn có thể mang nó đi bất cứ đâu hoặc sửa ở bất kỳ vị trí nào do tính di động của nó. Loa được điều khiển qua Bluetooth
Ngăn kéo nhỏ ngăn bí mật: 5 bước

Ngăn kéo nhỏ có ngăn bí mật: Tài liệu hướng dẫn này sẽ chỉ cho bạn cách tôi tạo ra một chiếc tủ có ngăn kéo với ngăn bí mật
Ngăn tổ chức ngăn kéo ngăn từ thẻ ví: 5 bước

Ngăn xếp ngăn kéo ngăn từ thẻ ví: Tài liệu hướng dẫn này sẽ chỉ cho bạn cách tạo ngăn chia mới cho các ngăn tổ chức lưu trữ phần ngăn kéo với thẻ khách hàng thân thiết của cửa hàng hoặc các thứ rác khác trong ví của bạn. vít, và tôi đã không