Spisu treści:

Szuflada inwentaryzacyjna „Smart Cities Hackathon Qualcomm17”: 13 kroków
Szuflada inwentaryzacyjna „Smart Cities Hackathon Qualcomm17”: 13 kroków

Wideo: Szuflada inwentaryzacyjna „Smart Cities Hackathon Qualcomm17”: 13 kroków

Wideo: Szuflada inwentaryzacyjna „Smart Cities Hackathon Qualcomm17”: 13 kroków
Wideo: Шкаф для запасов фирмы Blum #кухни #кухникрым #кухнимосква #кухникраснодар #дизайнинтерьера 2024, Lipiec
Anonim
Szuflada inwentaryzacyjna
Szuflada inwentaryzacyjna

W kolejnym dokumencie można zobaczyć proces budowy i programowania inteligentnej szuflady. Ta szuflada została zaprogramowana w Dragon Board 410c w celu poprawy jakości miast. Projekt jest częścią konkursu „Smart cities hackathon Qualcomm 17”.

Idea tego projektu zaczęła się od problemu, który dostrzega niewiele osób, jakim jest zagubione i złe gospodarowanie narzędziami i materiałami dostarczanymi przez firmy takie jak fabryki, a nawet szpitale. W tych miejscach niektóre materiały i narzędzia są dostarczane pracownikom do wykonywania czynności, te materiały i narzędzia muszą być ponownie wykorzystane, ponieważ są drogie lub brak środków ekonomicznych na ich wymianę.

W szpitalach są ludzie, którzy przejmują kontrolę nad usuwanymi materiałami, ale w przypadku interwencji człowieka pojawia się błąd, który może prowadzić do niepotrzebnych wydatków. Najlepszym rozwiązaniem tego problemu jest inteligentna szuflada, która potrafi prowadzić inwentarz wypożyczanych i zwracanych przedmiotów, a jednocześnie wiedzieć, kto jest za to odpowiedzialny.

Krok 1: Materiały

Materiał potrzebny do projektu to następny:1 x Dragon Board 410c

1 x Sensor Mezzanine 96 płyt dla Dragon Board 410c

1 x deska do krojenia chleba

1 x płyta MDF (płyta pilśniowa średniej gęstości) 61 x 122 cm

5 x czujnik CNY 70

1 X TIP31B

1 x elektromagnes

1x7408

1 x klawiatura

1 x ekran

3 x śruby

Odporności (odmiana)

Druty miedziane

Klej

Wiertarka

Krok 2: Wytnij kawałki do szuflady w MDF. (Aby uzyskać lepsze wyniki, użyj wycinarki laserowej)

Wytnij elementy do szuflady w MDF. (Aby uzyskać lepsze wyniki, użyj wycinarki laserowej)
Wytnij elementy do szuflady w MDF. (Aby uzyskać lepsze wyniki, użyj wycinarki laserowej)

Krok 3: Wklej wszystkie elementy razem, aby utworzyć szufladę z dwiema małymi szufladami i jedną dużą

Krok 4: Wkręć śruby na środku każdej szuflady

Wkręć wkręty na środku każdej szuflady
Wkręć wkręty na środku każdej szuflady

Krok 5: Z wiertłem wykonaj otwory przez szufladę z tyłu, otwór musi mieć rozmiar czujnika

Z wiertłem wykonaj otwory przez szufladę z tyłu, otwór musi mieć rozmiar czujnika
Z wiertłem wykonaj otwory przez szufladę z tyłu, otwór musi mieć rozmiar czujnika

Krok 6: Spawaj każdy czujnik CNY 70 za pomocą przewodów miedzianych. (powtórz 4 razy więcej)

Spawaj każdy czujnik CNY 70 za pomocą przewodów miedzianych. (powtórz 4 razy więcej)
Spawaj każdy czujnik CNY 70 za pomocą przewodów miedzianych. (powtórz 4 razy więcej)

Krok 7: Do czujnika używany jest specjalny obwód

Do czujnika używany jest specjalny obwód
Do czujnika używany jest specjalny obwód

Krok 8: Podłącz Sensor Mezzanine do Dragon Board 410c. (używany do uzyskania dostępu do GPIO)

Podłącz Sensor Mezzanine do Dragon Board 410c. (używany do uzyskania dostępu do GPIO)
Podłącz Sensor Mezzanine do Dragon Board 410c. (używany do uzyskania dostępu do GPIO)

Bardzo ważne jest, aby ten krok został wykonany przy wyłączonej tablicy smoka, jeśli nie, może się spalić, poza tym wszystkie PINy muszą być poprawnie umieszczone.

Krok 9: Podłącz obwód od płytki do krojenia chleba do antresoli

Podłącz obwód od płyty chlebowej do antresoli
Podłącz obwód od płyty chlebowej do antresoli
Podłącz obwód od płyty chlebowej do antresoli
Podłącz obwód od płyty chlebowej do antresoli
Podłącz obwód od płyty chlebowej do antresoli
Podłącz obwód od płyty chlebowej do antresoli
Podłącz obwód od płyty chlebowej do antresoli
Podłącz obwód od płyty chlebowej do antresoli

Krok 10: Napisz lub skopiuj kod

#include #include #include //#include

#include "libsoc_gpio.h"

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

/* Ten fragment kodu poniżej sprawia, że ten przykład działa na wszystkich tablicach 96Boards */

unsigned int LED_1; // elektro iman

unsigned int BUTTON_1;//pierwszy czujnik

unsigned int BUTTON_2;//drugi czujnik unsigned int BUTTON_3;// zamknij unsigned int BUTTON_4;//trzeci czujnik

struct Użytkownik{

nazwa użytkownika char[20]; hasło znakowe[20]; }Użytkownik;

struct baza danych{

char Nazwa_artykułu[20]; char Lokalizacja[20]; }Baza danych;

czujnik wewn1;

czujnik wew2; czujnik wewn3;

int czujnik1_ostatni_stan;

int czujnik2_ostatni_stan; int czujnik3_ostatni_stan;

char nazwa użytkownika[50];

hasło znakowe[50];

char TakNie[40];

PLIK *pPLIK;

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

int działa = 1;

_atrybut_((konstruktor)) statyczny nieważny _init()

{ board_config *config = libsoc_board_init(); BUTTON_1 = libsoc_board_gpio_id(config, "GPIO-A");//czujnik pięści BUTTON_2 = libsoc_board_gpio_id(config, "GPIO-C");// drugi czujnik BUTTON_3 = libsoc_board_gpio_id(config, "GPIO-D"); // zamknij stojak BUTTON_4 = libsoc_board_gpio_id(config, "GPIO-B"); // trzeci czujnik // BUTTON_5 = libsoc_board_gpio_id(config, "GPIO-E");

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

libsoc_board_free(config); } /* Koniec specjalnego kodu 96Boards */

int main()

{ gpio *led_1, *button_1, *button_2, *button_3, *button_4; //int dotyk; struct Użytkownik Karina; konstruować Menedżera Użytkowników; strcpy(Karina.nazwa użytkownika, "Karina Valverde"); strcpy(Karina.password, "Wyższy w pionie"); strcpy(menedżer.nazwa użytkownika, "Szef"); strcpy(Menedżer.hasło, "ITESM"); struct Narzędzie bazy danych; struct Pióro bazy danych; struct przypadek bazy danych; strcpy(Narzędzie. Nazwa_artykułu, "Narzędzie"); struct Narzędzie bazy danych; struct Pióro bazy danych; struct przypadek bazy danych; strcpy(Narzędzie. Nazwa_artykułu, "Narzędzie"); strcpy(Pióro. Nazwa_artykułu, "Pióro"); strcpy(Sprawa. Nazwa_artykułu, "Sprawa"); libsoc_set_debug(0); led_1 = libsoc_gpio_request (LED_1, LS_SHARED); button_1 = libsoc_gpio_request (PRZYCISK_1, LS_SHARED); button_2 = libsoc_gpio_request (PRZYCISK_2, LS_SHARED); button_3 = libsoc_gpio_request (PRZYCISK_3, LS_SHARED); button_4 = libsoc_gpio_request (PRZYCISK_4, LS_SHARED); //button_5 = libsoc_gpio_request(BUTTON_5, LS_SHARED);

if((led_1 == NULL) || (przycisk_1 == NULL)|| (przycisk_2 == NULL)|| (przycisk_3 == NULL)||(przycisk_4 == NULL))

{ idź do niepowodzenia; } libsoc_gpio_set_direction(led_1, WYJŚCIE); libsoc_gpio_set_direction (przycisk_1, WEJŚCIE); libsoc_gpio_set_direction (przycisk_2, WEJŚCIE); libsoc_gpio_set_direction (przycisk_3, WEJŚCIE); libsoc_gpio_set_direction (przycisk_4, WEJŚCIE); //libsoc_gpio_set_direction(przycisk_5, WEJŚCIE);

if ((libsoc_gpio_get_direction(led_1) != WYJŚCIE)

|| (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; } czujnik1 = libsoc_gpio_get_level(button_1); czujnik2 = libsoc_gpio_get_level(przycisk_2); czujnik3 = libsoc_gpio_get_level(przycisk_4); czujnik1_ostatni_stan = czujnik1; czujnik2_ostatni_stan = czujnik2; czujnik3_ostatni_stan = czujnik3; if (czujnik1 ==1){ strcpy(Narzędzie. Lokalizacja, "Umieszczony w szafie"); } else if (sensor1 == 0){ strcpy(Tool. Location, "Nigdy nie umieszczaj w tym stojaku"); } if (sensor2 ==1){ strcpy(Pen. Location, "Umieszczony w szafie"); } else if (sensor2 == 0){ strcpy(Pen. Location, "Nigdy nie umieszczaj w tym stojaku"); } if (sensor3 ==1){ strcpy(Case. Location, "Umieszczony w szafie"); } else if (sensor3 == 0){ strcpy(Case. Location, "Nigdy nie umieszczaj w tym stojaku"); } while(running) { libsoc_gpio_set_level(led_1, HIGH); printf("Proszę wprowadzić nazwę użytkownika: "); scanf("%s", nazwa użytkownika); printf("Proszę wprowadzić hasło: "); scanf("%s", hasło); if (strcmp(nazwa użytkownika, "Karina") == 0 && strcmp(hasło, "Wyższy") == 0){ libsoc_gpio_set_level(led_1, LOW); libsoc_gpio_set_level (led_1, NISKI); while(libsoc_gpio_get_level(button_3) != 1){ sensor1 = libsoc_gpio_get_level(button_1); czujnik2 = libsoc_gpio_get_level(przycisk_2); czujnik3 = libsoc_gpio_get_level(przycisk_4); } libsoc_gpio_set_level(led_1, WYSOKI); if (czujnik1 == 1 && czujnik1 != czujnik1_ostatni_stan){ strcpy(Narzędzie. Lokalizacja, Karina.nazwa użytkownika); }else if (sensor1 == 0 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, "Umieszczony w szafie"); } if (czujnik2 == 1 && czujnik2 != czujnik2_ostatni_stan){ strcpy(Pen. Location, Karina.username); }else if (sensor2 == 0 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, "Umieszczony w szafie"); }

if (czujnik3 == 1 && czujnik3 != czujnik3_ostatni_stan){

strcpy(Przypadek. Lokalizacja, Karina.nazwa użytkownika); }else if (sensor3 == 0 && sensor3 != sensor3_last_state){ strcpy(Case. Location, "Located on Rack"); } }else if (strcmp(username, "Szef") == 0 && strcmp(password, "ITESM") == 0){ printf("Czy chcesz wygenerować plik tekstowy z bazą danych? [Tak/Nie]”); scanf("%s", TakNie); if ((strcmp(TakNie, Tak) == 0)){ //użytkownik_menedżera(pFILE); pFILE = fopen("Baza danych.txt", "w"); fprintf(pFILE, "%s", "--------Baza danych szafy----- \n"); fprintf(pFILE, "%s", "Nazwa artykułu:"); fprintf(pFILE, "%s", Narzędzie. Nazwa_artykułu); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Lokalizacja artykułu:"); fprintf(pFILE, "%s", Narzędzie. Lokalizacja); fprintf(pFILE, "%s", "\n"); fprintf(pFILE, "%s", "Nazwa artykułu:"); fprintf(pFILE, "%s", Piór. Nazwa_artykułu); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Lokalizacja artykułu:"); fprintf(pFILE, "%s", Lokalizacja. Pióra); fprintf(pFILE, "%s", "\n");

fprintf(pFILE, "%s", "Nazwa artykułu:");

fprintf(pFILE, "%s", Sprawa. Nazwa_artykułu); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Lokalizacja artykułu:"); fprintf(pFILE, "%s", Case. Location); fprintf(pFILE, "%s", "\n");

fclose(pFILE);

}

printf("Odmowa dostępu \n");

} } fail: if(led_1 || button_1|| button_2|| button_3) { printf("zastosuj zasób gpio nie powiodło się!\n"); libsoc_gpio_free(led_1); libsoc_gpio_free(button_1); libsoc_gpio_free(button_2); libsoc_gpio_free(button_3); }

Krok 11: Uruchom program

Krok 12: Wnioski

Projekt ma obiecującą przyszłość, ponieważ może zostać ulepszony w bardzo skuteczny sposób, czujniki mogą zostać zmienione na znaczniki RFID, a jednocześnie z RFID można używać kart identyfikacyjnych do monitorowania, kto jest odpowiedzialny za materiał.

Zalecana: