Satura rādītājs:

Inventāra atvilktne "Smart Cities Hackathon Qualcomm17": 13 soļi
Inventāra atvilktne "Smart Cities Hackathon Qualcomm17": 13 soļi

Video: Inventāra atvilktne "Smart Cities Hackathon Qualcomm17": 13 soļi

Video: Inventāra atvilktne
Video: Incredible Smart Furniture You Need To See | Amazing Invention 2024, Jūlijs
Anonim
Inventāra atvilktne
Inventāra atvilktne

Nākamajā dokumentā varat redzēt viedās atvilktnes uzbūves un programmēšanas procesu. Šī atvilktne tika ieprogrammēta Dragon Board 410c, lai uzlabotu pilsētu kvalitāti. Projekts ir daļa no konkursa “viedās pilsētas hakatons Qualcomm 17”.

Šī projekta ideja sākās ar problēmu, ko redz ļoti maz cilvēku, kas ir zaudēta un slikta rīku un materiālu pārvaldība, ko nodrošina tādi uzņēmumi kā rūpnīcas un pat slimnīcas. Šajās vietās strādniekiem tiek nodrošināti daži materiāli un instrumenti, lai veiktu darbības, šis materiāls un instrumenti ir jāizmanto atkārtoti, jo tie ir dārgi vai trūkst ekonomisko resursu to aizstāšanai.

Slimnīcās ir cilvēki, kas pārņem kontroli pār izņemtajiem materiāliem, bet, ja notiek cilvēka iejaukšanās, rodas kļūda, kas var radīt nevajadzīgus izdevumus. Labākais risinājums šai problēmai ir inteliģenta atvilktne, kas spēj uzturēt aizņemto un atdoto objektu uzskaiti un vienlaikus zināt, kurš ir atbildīgais.

1. solis: materiāli

Projektam nepieciešamais materiāls ir šāds: 1 x Dragon Board 410c

1 x sensora starpstāvu 96 dēļi Dragon Board 410c

1 x maizes dēlis

1 x MDF (vidēja blīvuma kokšķiedru plātne) loksne 61 x 122 cm

5 x CNY 70 sensors

1 X PADOMS 31B

1 x elektromagnēts

1 x 7408

1 x tastatūra

1 x ekrāns

3 x skrūves

Pretestības (daudzveidība)

Vara stieples

Līme

Urbis

2. darbība: izgrieziet atvilktnes gabalus MDF. (Lai iegūtu labākus rezultātus, izmantojiet lāzera griezēju)

Izgrieziet atvilktnes gabalus MDF. (Lai iegūtu labākus rezultātus, izmantojiet lāzera griezēju)
Izgrieziet atvilktnes gabalus MDF. (Lai iegūtu labākus rezultātus, izmantojiet lāzera griezēju)

3. darbība: ielīmējiet visus gabalus kopā, lai izveidotu atvilktni ar divām mazām atvilktnēm un lielu

4. solis: ieskrūvējiet skrūves katra atvilktnes vidū

Ieskrūvējiet skrūves katra atvilktnes vidū
Ieskrūvējiet skrūves katra atvilktnes vidū

5. solis. Ja urbis izdara caurumus aizmugurē esošajā atvilktnē, caurumam jābūt sensora izmēram

Ja urbis izveido caurumus aizmugurē esošajā atvilktnē, caurumam jābūt sensora izmēram
Ja urbis izveido caurumus aizmugurē esošajā atvilktnē, caurumam jābūt sensora izmēram

6. solis: metiniet katru sensoru CNY 70 ar vara vadiem. (atkārtojiet vēl 4 reizes)

Metiniet katru sensoru CNY 70 ar vara vadiem. (atkārtojiet vēl 4 reizes)
Metiniet katru sensoru CNY 70 ar vara vadiem. (atkārtojiet vēl 4 reizes)

7. solis: Sensoram tiek izmantota īpaša ķēde

Sensoram tiek izmantota īpaša ķēde
Sensoram tiek izmantota īpaša ķēde

8. darbība. Savienojiet sensora starpstāvu ar Dragon Board 410c. (izmanto, lai piekļūtu GPIO)

Savienojiet sensora starpstāvu ar Dragon Board 410c. (izmanto, lai piekļūtu GPIO)
Savienojiet sensora starpstāvu ar Dragon Board 410c. (izmanto, lai piekļūtu GPIO)

Ir ļoti svarīgi, lai šis solis tiktu veikts ar izslēgtu pūķa dēli, ja ne, tas var sadedzināt, turklāt viss PIN ir jāievada pareizi.

9. solis: savienojiet ķēdi no maizes dēļa ar starpstāvu

Pievienojiet ķēdi no maizes dēļa starpstāvam
Pievienojiet ķēdi no maizes dēļa starpstāvam
Pievienojiet ķēdi no maizes dēļa starpstāvam
Pievienojiet ķēdi no maizes dēļa starpstāvam
Pievienojiet ķēdi no maizes dēļa starpstāvam
Pievienojiet ķēdi no maizes dēļa starpstāvam
Pievienojiet ķēdi no maizes dēļa starpstāvam
Pievienojiet ķēdi no maizes dēļa starpstāvam

10. darbība: uzrakstiet vai kopējiet kodu

#iekļaut #iekļaut #iekļaut // #iekļaut

#include "libsoc_gpio.h"

#include "libsoc_debug.h" #include "libsoc_board.h"

/ * Šis zemāk esošais koda bits ļauj šim piemēram darboties visās 96Boards */

unsigned int LED_1; // electro iman

unsigned int BUTTON_1; // pirmais sensors

neparakstīts int BUTTON_2; // otrais sensors neparakstīts int BUTTON_3; // aizveriet neparakstīto int BUTTON_4; // trešais sensors

strukturēts lietotājs {

char lietotājvārds [20]; char parole [20]; } Lietotājs;

strukturālā datu bāze {

char Article_Name [20]; char Atrašanās vieta [20]; } Datu bāze;

int sensors1;

int sensors2; int sensors3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char lietotājvārds [50];

char parole [50];

char JāNē [40];

FILE *pFILE;

char Jā [20] = {"Jā"};

int skriešana = 1;

_attribute _ ((konstruktors)) static void _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (konfigurācija, "GPIO-A"); // dūres sensors BUTTON_2 = libsoc_board_gpio_id (konfigurācija, "GPIO-C"); // otrais sensors BUTTON_3 = libsoc_board_gpio_id (konfigurācija, "GPIO-D"); // aizvērt plauktu BUTTON_4 = libsoc_board_gpio_id (konfigurācija, "GPIO-B"); // trešais sensors // BUTTON_5 = libsoc_board_gpio_id (konfigurācija, "GPIO-E");

LED_1 = libsoc_board_gpio_id (konfigurācija, "GPIO-E"); // electro iman

libsoc_board_free (konfigurācija); } / * 96Boards īpašā koda beigas * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struk Lietotāja Karīna; strukturēts lietotāja pārvaldnieks; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.parole, "Garāka vertikāla"); strcpy (Manager.username, "The Boss"); strcpy (Manager.parole, "ITESM"); struk Datu bāzes rīks; struk Datu bāzes pildspalva; struk Datu bāzes lieta; strcpy (Tool. Article_Name, "Tool"); struk Datu bāzes rīks; struk Datu bāzes pildspalva; struk Datu bāzes lieta; 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); button_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); poga_2 = libsoc_gpio_request (BUTTON_2, LS_SHARED); poga_3 = libsoc_gpio_request (BUTTON_3, LS_SHARED); poga_4 = libsoc_gpio_request (BUTTON_4, LS_SHARED); // poga_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);

ja ((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);

ja ((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; } sensors1 = libsoc_gpio_get_level (button_1); sensors2 = libsoc_gpio_get_level (poga_2); sensors3 = libsoc_gpio_get_level (poga_4); sensor1_last_state = sensors1; sensor2_last_state = sensors2; sensor3_last_state = sensors3; if (sensors1 == 1) {strcpy (Tool. Location, "Atrodas uz plaukta"); } cits if (sensors1 == 0) {strcpy (Tool. Location, "Nekad nav ievietots šajā statīvā"); } ja (sensors2 == 1) {strcpy (Pen. Location, "Atrodas uz plaukta"); } cits if (sensors2 == 0) {strcpy (Pen. Location, "Nekad nav ievietots šajā statīvā"); } ja (sensors3 == 1) {strcpy (Case. Location, "Atrodas uz plaukta"); } cits if (sensors3 == 0) {strcpy (Case. Location, "Nekad nav ievietots šajā statīvā"); } kamēr (darbojas) {libsoc_gpio_set_level (led_1, HIGH); printf ("Lūdzu, ievadiet lietotājvārdu:"); scanf ("%s", lietotājvārds); printf ("Lūdzu ievadiet paroli:"); scanf ("%s", parole); if (strcmp (lietotājvārds, "Karina") == 0 && strcmp (parole, "Taller") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, LOW); while (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); sensors2 = libsoc_gpio_get_level (poga_2); sensors3 = libsoc_gpio_get_level (poga_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensors1 == 1 && sensors1! = sensors1_pēdējā_valsts) {strcpy (Tool. Location, Karina.username); } cits if (sensors1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Atrodas uz plaukta"); } if (sensors2 == 1 && sensors2! = sensors2_pēdējā_valsts) {strcpy (Pen. Location, Karina.username); } cits if (sensors2 == 0 && sensor2! = sensors2_last_state) {strcpy (Pen. Location, "Atrodas uz plaukta"); }

ja (sensors3 == 1 && sensors3! = sensors3_laiks_valsts) {

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Atrodas uz plaukta"); }} cits if (strcmp (lietotājvārds, "priekšnieks") == 0 && strcmp (parole, "ITESM") == 0) {printf ("Vai vēlaties izveidot teksta failu ar datu bāzi? [Jā/Nē] "); scanf ("%s", JāNē); if ((strcmp (JāNē, Jā) == 0)) {// Pārvaldnieka_lietotājs (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rack datu bāze ----- / n"); fprintf (pFILE, "%s", "Raksta nosaukums:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Raksta atrašanās vieta:"); fprintf (pFILE, "%s", rīks. atrašanās vieta); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Raksta nosaukums:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Raksta atrašanās vieta:"); fprintf (pFILE, "%s", pildspalva. atrašanās vieta); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Raksta nosaukums:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Raksta atrašanās vieta:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Piekļuve liegta / n");

}} neizdoties: if (led_1 || button_1 || button_2 || button_3) {printf ("Apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (poga_1); libsoc_gpio_free (poga_2); libsoc_gpio_free (poga_3); }

11. darbība: palaidiet programmu

12. darbība. Secinājumi

Projektam ir daudzsološa nākotne, jo to var uzlabot ļoti efektīvi, sensorus var nomainīt pret RFID tagiem, un vienlaikus ar RFID ir iespējams izmantot ID kartes, lai uzraudzītu, kurš ir atbildīgs par materiālu.

Ieteicams: