Obsah:

Zásobník zásob „Smart Cities Hackathon Qualcomm17“: 13 kroků
Zásobník zásob „Smart Cities Hackathon Qualcomm17“: 13 kroků

Video: Zásobník zásob „Smart Cities Hackathon Qualcomm17“: 13 kroků

Video: Zásobník zásob „Smart Cities Hackathon Qualcomm17“: 13 kroků
Video: Прес-служба ХАІ - Створімо смарт-сіті разом! 2024, Červenec
Anonim
Zásobník zásob
Zásobník zásob

V dalším dokumentu můžete vidět proces konstrukce a programování inteligentní zásuvky. Tato zásuvka byla naprogramována v Dragon Board 410c, za účelem zlepšení kvality měst. Projekt je součástí soutěže „hackathon chytrých měst Qualcomm 17“.

Myšlenka tohoto projektu začala problémem, který vidí jen málo lidí, což je ztracené a špatné řízení nástrojů a materiálu, které poskytují společnosti, jako jsou továrny a dokonce i nemocnice. V těchto místech je pracovníkům poskytováno určité materiály a nástroje k provádění činností, tento materiál a nástroje musí být znovu použity, protože jsou drahé nebo nedostatek ekonomických zdrojů na jejich nahrazení.

V nemocnicích jsou lidé, kteří přebírají kontrolu nad odstraněným materiálem, ale když dojde k lidskému zásahu, dojde k chybě, což může vést ke zbytečným výdajům. Nejlepším řešením tohoto problému je inteligentní zásuvka schopná udržovat inventář vypůjčených a vrácených předmětů a zároveň vědět, kdo je za to zodpovědný.

Krok 1: Materiály

Materiál potřebný pro projekt je následující: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Boards for Dragon Board 410c

1 x prkénko

1 x deska MDF (dřevovláknitá deska se střední hustotou) 61 x 122 cm

5 x senzor CNY 70

1 X TIP31B

1 x elektromagnet

1 x 7408

1 x klávesnice

1 x obrazovka

3 x šrouby

Odpory (odrůda)

Měděné dráty

Lepidlo

Vrtat

Krok 2: Odřízněte kusy pro zásuvku v MDF. (Pro lepší výsledky použijte laserovou řezačku)

Odřízněte kusy pro zásuvku v MDF. (Pro lepší výsledky použijte laserovou řezačku)
Odřízněte kusy pro zásuvku v MDF. (Pro lepší výsledky použijte laserovou řezačku)

Krok 3: Vložením všech kusů dohromady vytvoříte zásuvku se dvěma malými zásuvkami a jednou velkou

Krok 4: Zašroubujte šrouby uprostřed každé zásuvky

Zašroubujte šrouby uprostřed každé zásuvky
Zašroubujte šrouby uprostřed každé zásuvky

Krok 5: S vrtákem vytvořte otvory v zásuvce na zadní straně, otvor musí mít velikost senzoru

S vrtákem udělejte otvory skrz zásuvku na zadní straně, otvor musí mít velikost senzoru
S vrtákem udělejte otvory skrz zásuvku na zadní straně, otvor musí mít velikost senzoru

Krok 6: Svařte každý senzor CNY 70 s měděnými dráty. (opakujte 4krát více)

Svařte každý senzor CNY 70 měděnými dráty. (opakujte 4krát více)
Svařte každý senzor CNY 70 měděnými dráty. (opakujte 4krát více)

Krok 7: Pro snímač se používá speciální obvod

Pro snímač je použit speciální obvod
Pro snímač je použit speciální obvod

Krok 8: Připojte mezipatro Sensor k Dragon Board 410c. (používá se pro přístup k GPIO)

Připojte Sensor Mezzanine k Dragon Board 410c. (používá se pro přístup k GPIO)
Připojte Sensor Mezzanine k Dragon Board 410c. (používá se pro přístup k GPIO)

Je velmi důležité, aby byl tento krok proveden s vypnutou dračí deskou, pokud ne, může hořet, kromě toho je nutné správně zadat PIN.

Krok 9: Připojte obvod z prkénka k mezipatře

Připojte obvod z prkénka k mezipatře
Připojte obvod z prkénka k mezipatře
Připojte obvod z prkénka k mezipatře
Připojte obvod z prkénka k mezipatře
Připojte obvod z prkénka k mezipatře
Připojte obvod z prkénka k mezipatře
Připojte obvod z prkénka k mezipatře
Připojte obvod z prkénka k mezipatře

Krok 10: Napište nebo zkopírujte kód

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Díky tomuto kousku kódu níže tento příklad funguje na všech 96 deskách */

nepodepsané int LED_1; // elektro iman

nepodepsané int BUTTON_1; // první senzor

unsigned int BUTTON_2; // druhý senzor unsigned int BUTTON_3; // zavřít bez znaménka int BUTTON_4; // třetí senzor

Struct User {

char uživatelské jméno [20]; char heslo [20]; }Uživatel;

struktura databáze {

znak Název článku [20]; char Umístění [20]; }Databáze;

int senzor1;

int senzor2; int senzor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

uživatelské jméno znaku [50];

char heslo [50];

char YesNo [40];

FILE *pFILE;

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

int běžící = 1;

_attribute _ ((konstruktor)) static void _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // pěst pěst senzor BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // druhý senzor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // zavření stojanu BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // třetí senzor // BUTTON_5 = libsoc_board_gpio_id (konfigurace, "GPIO-E");

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

libsoc_board_free (config); } / * Konec speciálního kódu 96Boards * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct Uživatel Karina; struct Správce uživatelů; strcpy (Karina.uživatelské jméno, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); strukturovaný databázový nástroj; struct Database Pen; struct Database Case; strcpy (Tool. Article_Name, "Tool"); strukturovaný databázový nástroj; struct Database Pen; struct Database Case; 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); 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))

{přejít k selhání; } libsoc_gpio_set_direction (led_1, VÝSTUP); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (tlačítko_2, VSTUP); libsoc_gpio_set_direction (tlačítko_3, VSTUP); libsoc_gpio_set_direction (tlačítko_4, VSTUP); // libsoc_gpio_set_direction (tlačítko_5, VSTUP);

if ((libsoc_gpio_get_direction (led_1)! = VÝSTUP)

|| (libsoc_gpio_get_direction (button_1)! = VSTUP) || (libsoc_gpio_get_direction (button_2)! = INPUT) || (libsoc_gpio_get_direction (button_3)! = VSTUP) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {goto failed; } senzor1 = libsoc_gpio_get_level (button_1); senzor2 = libsoc_gpio_get_level (button_2); senzor3 = libsoc_gpio_get_level (tlačítko_4); sensor1_last_state = senzor1; sensor2_last_state = senzor2; sensor3_last_state = senzor3; if (sensor1 == 1) {strcpy (Tool. Location, "Umístěno na stojanu"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Nikdy neumístěn do tohoto stojanu"); } if (sensor2 == 1) {strcpy (Pen. Location, "Location on Rack"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Nikdy neumístěn do tohoto stojanu"); } if (sensor3 == 1) {strcpy (Case. Location, "Nachází se na stojanu"); } else if (sensor3 == 0) {strcpy (Case. Location, "Nikdy neumístěn do tohoto stojanu"); } while (running) {libsoc_gpio_set_level (led_1, HIGH); printf ("Zadejte prosím uživatelské jméno:"); scanf ("%s", uživatelské jméno); printf („Zadejte prosím heslo:“); scanf ("%s", heslo); if (strcmp (uživatelské jméno, "Karina") == 0 && strcmp (heslo, "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); senzor2 = libsoc_gpio_get_level (button_2); senzor3 = libsoc_gpio_get_level (tlačítko_4); } libsoc_gpio_set_level (led_1, VYSOKÝ); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } else if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Based on Rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Based on Rack"); }

if (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Location on Rack"); }} else if (strcmp (uživatelské jméno, "Boss") == 0 && strcmp (heslo, "ITESM") == 0) {printf ("Přejete si vygenerovat textový soubor s databází? [Ano/Ne] "); scanf ("%s", YesNo); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rackova databáze ----- / n"); fprintf (pFILE, "%s", "Název článku:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Umístění článku:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Název článku:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Umístění článku:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Název článku:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Umístění článku:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Přístup odepřen / n");

}} fail: if (led_1 || button_1 || button_2 || button_3) {printf ("apply gpio resource failed! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (button_2); libsoc_gpio_free (tlačítko_3); }

Krok 11: Spusťte program

Krok 12: Závěry

Projekt má budoucnost slibnou, protože se může velmi efektivním způsobem zlepšovat, senzory lze měnit pro tagy RFID a současně s RFID je možné pomocí ID karet sledovat, kdo je za materiál zodpovědný.

Doporučuje: