Përmbajtje:

Sirtari i Inventarit "Smart Cities Hackathon Qualcomm17": 13 hapa
Sirtari i Inventarit "Smart Cities Hackathon Qualcomm17": 13 hapa

Video: Sirtari i Inventarit "Smart Cities Hackathon Qualcomm17": 13 hapa

Video: Sirtari i Inventarit
Video: Closed for 40 years ~ Abandoned Portuguese Noble Palace with all its belongings 2024, Korrik
Anonim
Sirtari i inventarit
Sirtari i inventarit

Në dokumentin tjetër, mund të shihni procesin e ndërtimit dhe programimit të një sirtari inteligjent. Kjo sirtar u programua në një Bord Dragon 410c, me qëllim të përmirësimit të cilësisë së qyteteve. Projekti është pjesë e konkursit "qytetet e mençura hackathon Qualcomm 17".

Ideja e këtij projekti filloi me një problem që shumë pak njerëz e shohin, i cili është menaxhimi i humbur dhe i keq i mjeteve dhe materialit që ofrohet nga kompani të tilla si fabrika, madje edhe spitale. Në këto vende, disa materiale dhe mjete u sigurohen punëtorëve për të bërë aktivitete, ky material dhe mjete duhet të ripërdoren sepse janë të shtrenjta ose mungesa e burimeve ekonomike për t'i zëvendësuar ato.

Në spitale, ka njerëz që marrin kontrollin e materialeve që hiqen, por kur ka një ndërhyrje njerëzore ndodh gabimi, i cili mund të çojë në shpenzime të panevojshme. Zgjidhja më e mirë për këtë problem është një sirtar inteligjent i aftë të mbajë një inventar të objekteve të huazuara dhe të kthyera dhe në të njëjtën kohë të dijë se kush është përgjegjësi.

Hapi 1: Materialet

Materiali i nevojshëm për projektin është ai tjetër: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Borde për Dragon Board 410c

1 x Breadboard

1 x fletë MDF (dërrasë me fibra me densitet të mesëm) 61 x 122 cm

5 x sensor CNY 70

1 X TIP31B

1 x elektromagnet

1 x 7408

1 x Tastiera

1 x ekran

3 vida x

Rezistencat (shumëllojshmëria)

Tela bakri

Zam

Stërvitje

Hapi 2: Pritini Copat për Sirtarin në MDF. (Për rezultate më të mira përdorni një prestar lazer)

Pritini Copat për Sirtarin në MDF. (Për rezultate më të mira përdorni një prestar lazer)
Pritini Copat për Sirtarin në MDF. (Për rezultate më të mira përdorni një prestar lazer)

Hapi 3: Ngjitni të gjitha pjesët së bashku për të formuar një sirtar me dy sirtarë të vegjël dhe një të mëdhenj

Hapi 4: Vidhosni vidhat në mes të çdo sirtari

Vidhosni vidhat në mes të çdo sirtari
Vidhosni vidhat në mes të çdo sirtari

Hapi 5: Me stërvitjen bëni vrima përmes sirtarit në anën e pasme, vrima duhet të jetë madhësia e sensorit

Me stërvitjen bëni vrima përmes sirtarit në anën e pasme, vrima duhet të jetë madhësia e sensorit
Me stërvitjen bëni vrima përmes sirtarit në anën e pasme, vrima duhet të jetë madhësia e sensorit

Hapi 6: Saldoni çdo Sensor CNY 70 Me Telat e Bakrit. (përsëris 4 herë më shumë)

Saldoni çdo Sensor CNY 70 Me Telat e Bakrit. (përsëris 4 herë më shumë)
Saldoni çdo Sensor CNY 70 Me Telat e Bakrit. (përsëris 4 herë më shumë)

Hapi 7: Përdoret një qark i veçantë për sensorin

Një qark i veçantë përdoret për sensorin
Një qark i veçantë përdoret për sensorin

Hapi 8: Lidheni Sensorin Mezzanine me Dragon Board 410c. (përdoret për të hyrë në GPIO)

Lidheni Sensorin Mezzanine me Dragon Board 410c. (përdoret për të hyrë në GPIO)
Lidheni Sensorin Mezzanine me Dragon Board 410c. (përdoret për të hyrë në GPIO)

Veryshtë shumë e rëndësishme që ky hap të bëhet me bordin e dragoit të fikur, nëse jo, ai mund të digjet, përveç të gjithë PIN -it duhet të vendoset në mënyrë korrekte.

Hapi 9: Lidhni qarkun nga pllaka e bukës në katin e mesëm

Lidhni qarkun nga bordi i bukës në katin e mesëm
Lidhni qarkun nga bordi i bukës në katin e mesëm
Lidhni qarkun nga bordi i bukës në katin e mesëm
Lidhni qarkun nga bordi i bukës në katin e mesëm
Lidhni qarkun nga bordi i bukës në katin e mesëm
Lidhni qarkun nga bordi i bukës në katin e mesëm
Lidhni qarkun nga bordi i bukës në katin e mesëm
Lidhni qarkun nga bordi i bukës në katin e mesëm

Hapi 10: Shkruani ose Kopjoni Kodin

#përfshi #përfshi #përfshi // #përfshi

#përfshi "libsoc_gpio.h"

#përfshi "libsoc_debug.h" #include "libsoc_board.h"

/ * Kjo pjesë e kodit më poshtë e bën këtë shembull të funksionojë në të gjitha 96Boards */

pa shenjë në LED_1; // elektro iman

pa shenjë në BUTTON_1; // sensori i parë

pa shenjë int BUTTON_2; // sensori i dytë pa shenjë int BUTTON_3; // mbyll int pa shenjë int BUTTON_4; // sensori i tretë

struktura e Përdoruesit {

emri i përdoruesit char [20]; fjalëkalim char [20]; } Përdoruesi;

strukturë Baza e të dhënave {

emri i artikullit char [20]; char Vendndodhja [20]; } Baza e të dhënave;

int sensor1;

int sensor2; int sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

emri i përdoruesit char [50];

fjalëkalim char [50];

char Po Jo Jo [40];

DOSJA *pFILE;

char Po [20] = {"Po"};

int running = 1;

_tribuoj _ ((konstruktor)) zbrazëti statike _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (konfiguro, "GPIO-A"); // sensor grushton BUTTON_2 = libsoc_board_gpio_id (konfiguro, "GPIO-C"); // sensori i dytë BUTTON_3 = libsoc_board_gpio_id (konfiguro, "GPIO-D"); // mbyll raftin BUTTON_4 = libsoc_board_gpio_id (konfiguro, "GPIO-B"); // sensori i tretë // BUTTON_5 = libsoc_board_gpio_id (konfiguro, "GPIO-E");

LED_1 = libsoc_board_gpio_id (konfiguro, "GPIO-E"); // elektro iman

libsoc_board_free (konfiguro); } / * Fundi i kodit special të 96Boards * /

int kryesore ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int prekje; struct Përdoruesi Karina; struct User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina. fjalëkalim, "Vertikal më i gjatë"); strcpy (menaxher.username, "The Boss"); strcpy (Menaxher. fjalëkalim, "ITESM"); strukt Mjeti i bazës së të dhënave; strukturë Pena e bazës së të dhënave; strukt Rasti i bazës së të dhënave; strcpy (Tool. Article_Name, "Tool"); strukt Mjeti i bazës së të dhënave; strukturë Pena e bazës së të dhënave; strukt Rasti i bazës së të dhënave; strcpy (Tool. Article_Name, "Tool"); strcpy (Pen. Article_Name, "Pen"); strcpy (Case. Article_Name, "Case"); libsoc_set_debug (0); led_1 = libsoc_gpio_request (LED_1, LS_SHARED); butoni_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); button_2 = kërkesë libsoc_gpio_ (BUTTON_2, LS_SHARED); butoni_3 = libsoc_gpio_request (BUTTON_3, LS_SHARED); butoni_4 = kërkesë libsoc_gpio_ (BUTTON_4, LS_SHARED); // butoni_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);

nëse ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{duhet të dështoj; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (butoni_1, INPUT); libsoc_gpio_set_direction (butoni_2, INPUT); libsoc_gpio_set_direction (butoni_3, INPUT); libsoc_gpio_set_direction (butoni_4, INPUT); // libsoc_gpio_set_direction (butoni_5, INPUT);

nëse ((libsoc_gpio_get_direction (led_1)! = JASHT dalje)

|| (libsoc_gpio_get_direction (button_1)! = HYRJE) || (libsoc_gpio_get_direction (button_2)! = HYRJE) || (libsoc_gpio_get_direction (button_3)! = HYRJE) || (libsoc_gpio_get_direction (button_4)! = HYRJE)) {goto dështoj; } sensor1 = libsoc_gpio_get_level (butoni_1); sensor2 = libsoc_gpio_get_level (butoni_2); sensor3 = libsoc_gpio_get_level (butoni_4); sensor1_last_stat = sensor1; sensor2_last_stat = sensor2; sensor3_last_stat = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Located on Rack"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Asnjëherë i vendosur në këtë Rack"); } if (sensor2 == 1) {strcpy (Pen. Location, "Located on Rack"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Asnjëherë i vendosur në këtë Rack"); } if (sensor3 == 1) {strcpy (Case. Location, "Located on Rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "Asnjëherë nuk vendoset në këtë Rack"); } ndërsa (vrapon) {libsoc_gpio_set_level (led_1, HIGH); printf ("Ju lutemi futni emrin e përdoruesit:"); scanf ("%s", emri i përdoruesit); printf ("Ju lutemi futni fjalëkalimin:"); scanf ("%s", fjalëkalim); if (strcmp (emri i përdoruesit, "Karina") == 0 && strcmp (fjalëkalimi, "Taller") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, LOW); ndërsa (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (butoni_2); sensor3 = libsoc_gpio_get_level (butoni_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, "E vendosur 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, "E vendosur në Rack"); }

nëse (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location, Karina.ername); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "E vendosur në Rack"); }} else if (strcmp (emri i përdoruesit, "Shefi") == 0 && strcmp (fjalëkalimi, "ITESM") == 0) {printf ("A dëshironi të krijoni një skedar teksti me bazën e të dhënave? [Po/Jo] "); scanf ("%s", Po Jo); nëse ((strcmp (Po Jo, Po) == 0)) {// Përdoruesi i menaxherit (pFILE); pFILE = hap ("Baza e të dhënave.txt", "w"); fprintf (pFILE, "%s", "-------- Baza e të dhënave të Rack ----- / n"); fprintf (pFILE, "%s", "Emri i artikullit:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Vendndodhja e artikullit:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Emri i artikullit:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Vendndodhja e artikullit:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Emri i artikullit:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Vendndodhja e artikullit:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Qasja është refuzuar / n");

}} fail: if (led_1 || button_1 || button_2 || button_3) {printf ("zbato dështimin e burimit të gpio! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (butoni_1); libsoc_gpio_free (butoni_2); libsoc_gpio_free (butoni_3); }

Hapi 11: Drejtoni programin

Hapi 12: Përfundime

Projekti ka një të ardhme premtuese, pasi mund të përmirësohet në një mënyrë shumë efektive, sensorët mund të ndryshohen për etiketat RFID´S dhe në të njëjtën kohë me RFID është e mundur të përdoren kartat e identitetit për të monitoruar se kush është përgjegjës për materialin.

Recommended: