Talaan ng mga Nilalaman:
- Hakbang 1: Mga Kagamitan
- Hakbang 2: Gupitin ang Mga piraso para sa Drawer sa MDF. (Para sa Mas Mahusay na Mga Resulta Gumamit ng isang Laser Cutter)
- Hakbang 3: I-paste ang Lahat ng Mga piraso ng magkasama upang Bumuo ng isang drawer Na May Dalawang Maliliit na Drawer at isang Malaki
- Hakbang 4: I-screw ang mga Screw sa gitna ng bawat Drawer
- Hakbang 5: Sa pamamagitan ng Drill Make Holes Sa pamamagitan ng drawer sa Likuran, ang Hole ay Dapat na Sukat ng Sensor
- Hakbang 6: Weld Ang bawat Sensor CNY 70 Gamit ang Copper Wires. (ulitin ang 4 na Oras Pa)
- Hakbang 7: Ginagamit ang Isang Espesyal na Circuit para sa Sensor
- Hakbang 8: Ikonekta ang Sensor Mezzanine sa Dragon Board 410c. (ginamit upang I-access ang GPIO)
- Hakbang 9: Ikonekta ang Circuit Mula sa Breadboard sa Mezzanine
- Hakbang 10: Isulat o Kopyahin ang Code
- Hakbang 11: Patakbuhin ang Programa
- Hakbang 12: Mga Konklusyon
Video: Drawer ng Imbentaryo "Smart Cities Hackathon Qualcomm17": 13 Mga Hakbang
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Sa susunod na dokumento, maaari mong makita ang proseso ng konstruksyon at programa ng isang matalinong drawer. Ang drawer na ito ay na-program sa isang Dragon Board 410c, na may layuning mapabuti ang kalidad ng mga lungsod. Ang proyekto ay bahagi ng paligsahan na "matalinong mga lungsod hackathon Qualcomm 17".
Ang ideya ng proyektong ito ay nagsimula sa isang problema na kakaunti ang nakikita ng mga tao, na kung saan ay ang nawala at hindi magandang pamamahala ng mga tool at materyal na ibinibigay ng mga kumpanya tulad ng mga pabrika at maging mga ospital. Sa mga lugar na ito, ang ilang mga materyales at kagamitan ay ibinibigay sa mga manggagawa upang magawa ng mga aktibidad, ang materyal at mga kagamitang ito ay dapat gamitin muli sapagkat sila ay mahal o ang kakulangan ng mga mapagkukunang pang-ekonomiya upang mapalitan ang mga ito.
Sa mga ospital, may mga taong kinokontrol ang mga materyales na tinanggal, ngunit kapag may interbensyon ng tao mayroong error, na maaaring humantong sa hindi kinakailangang gastos. Ang pinakamahusay na solusyon sa problemang ito ay isang matalinong drawer na may kakayahang mapanatili ang imbentaryo ng mga bagay na hiniram at ibinalik at sabay na alam kung sino ang responsable.
Hakbang 1: Mga Kagamitan
Ang materyal na kinakailangan para sa proyekto ay ang susunod: 1 x Dragon Board 410c
1 x Sensor Mezzanine 96 Mga Lupon para sa Dragon Board 410c
1 x Breadboard
1 x MDF (Medium Density Fiberboard) sheet 61 x 122 cms
5 x sensor CNY 70
1 X TIP31B
1 x electromagnet
1 x 7408
1 x Keyboard
1 x screen
3 x turnilyo
Mga paglaban (pagkakaiba-iba)
Mga wire ng tanso
Pandikit
Drill
Hakbang 2: Gupitin ang Mga piraso para sa Drawer sa MDF. (Para sa Mas Mahusay na Mga Resulta Gumamit ng isang Laser Cutter)
Hakbang 3: I-paste ang Lahat ng Mga piraso ng magkasama upang Bumuo ng isang drawer Na May Dalawang Maliliit na Drawer at isang Malaki
Hakbang 4: I-screw ang mga Screw sa gitna ng bawat Drawer
Hakbang 5: Sa pamamagitan ng Drill Make Holes Sa pamamagitan ng drawer sa Likuran, ang Hole ay Dapat na Sukat ng Sensor
Hakbang 6: Weld Ang bawat Sensor CNY 70 Gamit ang Copper Wires. (ulitin ang 4 na Oras Pa)
Hakbang 7: Ginagamit ang Isang Espesyal na Circuit para sa Sensor
Hakbang 8: Ikonekta ang Sensor Mezzanine sa Dragon Board 410c. (ginamit upang I-access ang GPIO)
Napakahalaga na ang hakbang na ito ay gawin sa off board ng dragon, kung hindi ito masusunog, bukod sa lahat ng PIN ay kailangang mailagay nang tama.
Hakbang 9: Ikonekta ang Circuit Mula sa Breadboard sa Mezzanine
Hakbang 10: Isulat o Kopyahin ang Code
#include #include #include // # isama
# isama ang "libsoc_gpio.h"
# isama ang "libsoc_debug.h" # isama ang "libsoc_board.h"
/ * Ang kaunting code na ito sa ibaba ay ginagawang gumana ang halimbawang ito sa lahat ng 96Boards * /
unsigned int LED_1; // electro iman
unsigned int BUTTON_1; // unang sensor
unsigned int BUTTON_2; // pangalawang sensor unsigned int BUTTON_3; // close unsigned int BUTTON_4; // third sensor
struct User {
char username [20]; char password [20]; } Gumagamit;
struct Database {
char Article_Name [20]; char Lokasyon [20]; } Database;
int sensor1;
int sensor2; int sensor3;
int sensor1_last_state;
int sensor2_last_state; int sensor3_last_state;
char username [50];
char password [50];
char OoHindi [40];
FILE * pemium;
char Oo [20] = {"Oo"};
int tumatakbo = 1;
_attribute _ ((tagapagbuo)) static void _init ()
{board_config * config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // fists sensor BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // pangalawang sensor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // close rack BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // third sensor // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");
LED_1 = libsoc_board_gpio_id (config, "GPIO-E"); // electro iman
libsoc_board_free (config); } / * Pagtatapos ng 96Boards espesyal na code * /
int main ()
{gpio * led_1, * button_1, * button_2, * button_3, * button_4; // int touch; istr Gumagamit Karina; istr User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); struct Database Tool; istruktura ng Database Pen; Kaso ng struct Database; strcpy (Tool. Article_Name, "Tool"); struct Database Tool; istruktura ng Database Pen; Kaso ng struct Database; strcpy (Tool. Article_Name, "Tool"); strcpy (Pen. Article_Name, "Pen"); strcpy (Case. Article_Name, "Kaso"); 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);
kung ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))
{mabigo ang goto; } 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);
kung ((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; kung (sensor1 == 1) {strcpy (Tool. Location, "Matatagpuan sa Rack"); } iba pa kung (sensor1 == 0) {strcpy (Tool. Location, "Never inilagay sa Rack na ito"); } kung (sensor2 == 1) {strcpy (Pen. Location, "Matatagpuan sa Rack"); } iba pa kung (sensor2 == 0) {strcpy (Pen. Location, "Never inilagay sa Rack na ito"); } kung (sensor3 == 1) {strcpy (Case. Location, "Matatagpuan sa Rack"); } iba pa kung (sensor3 == 0) {strcpy (Case. Location, "Never inilagay sa Rack na ito"); } habang (tumatakbo) {libsoc_gpio_set_level (led_1, HIGH); printf ("Mangyaring maglagay ng pangalan ng gumagamit:"); scanf ("% s", username); printf ("Mangyaring maglagay ng password:"); scanf ("% s", password); kung (strcmp (username, "Karina") == 0 && strcmp (password, "Mas matangkad") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, LOW); habang (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, TAAS); kung (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } iba pa kung (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Matatagpuan sa Rack"); } kung (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } iba pa kung (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Matatagpuan sa Rack"); }
kung (sensor3 == 1 && sensor3! = sensor3_last_state) {
strcpy (Kaso. Location, Karina.username); } iba pa kung (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Matatagpuan sa Rack"); }} iba pa kung (strcmp (username, "Boss") == 0 && strcmp (password, "ITESM") == 0) {printf ("Nais mo bang makabuo ng isang text file na may database? [Oo / Hindi] "); scanf ("% s", YesNo); kung ((strcmp (OoNo, Oo) == 0)) {// Manager_user (pemium); pemium = fopen ("Database.txt", "w"); fprintf (pemium, "% s", "-------- Rack's Database ----- / n"); fprintf (pemium, "% s", "Artikulo ng Pangalan:"); fprintf (pemium, "% s", Tool. Article_Name); fprintf (pemium, "% s", "\ t"); fprintf (pemium, "% s", "Lokasyon ng Artikulo:"); fprintf (pemium, "% s", Tool. Location); fprintf (pemium, "% s", "\ n"); fprintf (pemium, "% s", "Artikulo ng Pangalan:"); fprintf (pemium, "% s", Pen. Article_Name); fprintf (pemium, "% s", "\ t"); fprintf (pemium, "% s", "Lokasyon ng Artikulo:"); fprintf (pemium, "% s", Pen. Location); fprintf (pemium, "% s", "\ n");
fprintf (pemium, "% s", "Artikulo ng Pangalan:");
fprintf (pemium, "% s", Case. Article_Name); fprintf (pemium, "% s", "\ t"); fprintf (pemium, "% s", "Lokasyon ng Artikulo:"); fprintf (pemium, "% s", Case. Location); fprintf (pemium, "% s", "\ n");
fclose (pemium);
}
printf ("Access Denied / n");
}} mabibigo: kung (led_1 || button_1 || button_2 || button_3) {printf ("apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (button_2); libsoc_gpio_free (button_3); }
Hakbang 11: Patakbuhin ang Programa
Hakbang 12: Mga Konklusyon
Ang proyekto ay may isang pangako sa hinaharap, dahil maaari itong mapabuti sa isang napaka-epektibo na paraan, ang sensor ay maaaring mabago para sa mga tag ng RFID at sa parehong oras sa RFID ay posible na gumamit ng mga ID card upang subaybayan kung sino ang responsable ng materyal.