Obsah:

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

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

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

V nasledujúcom dokumente môžete vidieť proces konštrukcie a programovania inteligentnej zásuvky. Táto zásuvka bola naprogramovaná v Dragon Board 410c, s cieľom zlepšiť kvalitu miest. Projekt je súčasťou súťaže „hackathon inteligentných miest Qualcomm 17“.

Myšlienka tohto projektu začala problémom, ktorý vidí len málo ľudí. Ide o stratené a zlé hospodárenie s nástrojmi a materiálom, ktoré poskytujú spoločnosti ako továrne a dokonca aj nemocnice. Na týchto miestach je robotníkom poskytnutý určitý materiál a nástroje na vykonávanie činností, tento materiál a nástroje je potrebné znova použiť, pretože sú drahé alebo majú nedostatok ekonomických zdrojov na ich výmenu.

V nemocniciach sú ľudia, ktorí preberajú kontrolu nad odstraňovaným materiálom, ale keď dôjde k zásahu človeka, dôjde k chybe, ktorá môže viesť k zbytočným výdavkom. Najlepším riešením tohto problému je inteligentná zásuvka schopná udržiavať inventár vypožičaných a vrátených predmetov a zároveň vedieť, kto je za to zodpovedný.

Krok 1: Materiály

Materiál potrebný na projekt je nasledujúci: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 dosiek pre Dragon Board 410c

1 x Breadboard

1 list MDF (drevovláknitá doska so strednou hustotou) 61 x 122 cm

5 x senzor CNY 70

1 X TIP31B

1 x elektromagnet

1 x 7408

1 x klávesnica

1 x obrazovka

3 x skrutky

Odpory (odroda)

Medené drôty

Lepidlo

Vŕtačka

Krok 2: Odrežte kusy pre zásuvku z MDF. (Na dosiahnutie lepších výsledkov použite laserovú rezačku)

Odrežte kusy do zásuvky na MDF. (Pre lepšie výsledky použite laserovú rezačku)
Odrežte kusy do zásuvky na MDF. (Pre lepšie výsledky použite laserovú rezačku)

Krok 3: Prilepte všetky diely dohromady a vytvorte zásuvku s dvoma malými zásuvkami a veľkou

Krok 4: Zaskrutkujte skrutky v strede každej zásuvky

Zaskrutkujte skrutky uprostred každej zásuvky
Zaskrutkujte skrutky uprostred každej zásuvky

Krok 5: Keď vŕtačka urobí otvory v zásuvke na zadnej strane, otvor musí mať veľkosť senzora

S vrtákom urobte otvory cez zásuvku na zadnej strane, diera musí mať veľkosť senzora
S vrtákom urobte otvory cez zásuvku na zadnej strane, diera musí mať veľkosť senzora

Krok 6: Zvárejte každý senzor CNY 70 s medenými drôtmi. (opakujte 4 krát viac)

Zvárejte každý senzor CNY 70 s medenými drôtmi. (opakujte 4 krát viac)
Zvárejte každý senzor CNY 70 s medenými drôtmi. (opakujte 4 krát viac)

Krok 7: Na snímač sa používa špeciálny obvod

Na snímač sa používa špeciálny obvod
Na snímač sa používa špeciálny obvod

Krok 8: Pripojte mezanínový senzor k Dragon Board 410c. (používa sa na prístup k GPIO)

Pripojte mezanínový senzor k Dragon Board 410c. (používa sa na prístup k GPIO)
Pripojte mezanínový senzor k Dragon Board 410c. (používa sa na prístup k GPIO)

Je veľmi dôležité, aby bol tento krok vykonaný s vypnutou dračou doskou, ak nie, môže sa spáliť, okrem toho je potrebné správne vložiť PIN.

Krok 9: Pripojte obvod z Breadboardu k mezaninu

Pripojte obvod z Breadboardu k Mezaninu
Pripojte obvod z Breadboardu k Mezaninu
Pripojte obvod z Breadboardu k Mezaninu
Pripojte obvod z Breadboardu k Mezaninu
Pripojte obvod z Breadboardu k Mezaninu
Pripojte obvod z Breadboardu k Mezaninu
Pripojte obvod z Breadboardu k Mezaninu
Pripojte obvod z Breadboardu k Mezaninu

Krok 10: Napíšte alebo skopírujte kód

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Vďaka tomuto kúsku kódu uvedeného nižšie tento príklad funguje na všetkých doskách 96 */

bez znamienka int LED_1; // elektroiman

nepodpísané int BUTTON_1; // prvý snímač

nepodpísané int BUTTON_2; // druhý snímač bez znamienka int BUTTON_3; // zatvorenie bez znamienka int BUTTON_4; // tretí snímač

Struct User {

užívateľské meno char [20]; char heslo [20]; } Používateľ;

struct Database {

znak Názov článku [20]; char Poloha [20]; } Databáza;

int senzor1;

int senzor2; int senzor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

užívateľské meno char [50];

char heslo [50];

znak ÁnoNie [40];

FILE *pFILE;

char Áno [20] = {"Áno"};

int running = 1;

_attribute _ ((constructor)) static void _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // senzor pästí BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // druhý snímač BUTTON_3 = libsoc_board_gpio_id (konfigurácia, "GPIO-D"); // zatvorenie stojana BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // tretí senzor // BUTTON_5 = libsoc_board_gpio_id (konfigurácia, „GPIO-E“);

LED_1 = libsoc_board_gpio_id (konfigurácia, „GPIO-E“); // elektroiman

libsoc_board_free (config); } / * Koniec špeciálneho kódu 96Boards * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct Používateľ Karina; štruktúrovaný správca používateľov; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, „Taller Vertical“); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); štruktúrovaný databázový nástroj; štruktúrované databázové pero; štruktúrovaný databázový prípad; strcpy (Tool. Article_Name, "Tool"); štruktúrovaný databázový nástroj; štruktúrované databázové pero; štruktúrovaný databázový prípad; 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))

{goto failed; } libsoc_gpio_set_direction (led_1, VÝSTUP); libsoc_gpio_set_direction (button_1, VSTUP); libsoc_gpio_set_direction (tlačidlo_2, VSTUP); libsoc_gpio_set_direction (tlačidlo_3, VSTUP); libsoc_gpio_set_direction (tlačidlo_4, VSTUP); // libsoc_gpio_set_direction (tlačidlo_5, VSTUP);

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

|| (libsoc_gpio_get_direction (button_1)! = VSTUP) || (libsoc_gpio_get_direction (button_2)! = VSTUP) || (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čidlo_4); sensor1_last_state = senzor1; sensor2_last_state = senzor2; sensor3_last_state = senzor3; if (sensor1 == 1) {strcpy (Tool. Location, "Based on Rack"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Nikdy nie je umiestnené v tomto stojane"); } if (sensor2 == 1) {strcpy (Pen. Location, "Based on Rack"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Nikdy neumiestnené v tomto stojane"); } if (sensor3 == 1) {strcpy (Case. Location, "Based on Rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "Nikdy nie je umiestnené v tomto regáli"); } while (running) {libsoc_gpio_set_level (led_1, HIGH); printf ("Zadajte užívateľské meno:"); scanf ("%s", užívateľské meno); printf („Zadajte heslo:“); scanf ("%s", heslo); if (strcmp (užívateľské meno, "Karina") == 0 && strcmp (heslo, "vyšší") == 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čidlo_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, "Based on Rack"); }} else if (strcmp (užívateľské meno, "Boss") == 0 && strcmp (heslo, "ITESM") == 0) {printf ("Chcete vygenerovať textový súbor s databázou? [Áno/Nie] "); scanf ("%s", YesNo); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rackova databáza ----- / n"); fprintf (pFILE, "%s", "Názov článku:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Umiestnenie článku:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Názov článku:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Umiestnenie článku:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

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

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

fclose (pFILE);

}

printf ("Prístup odmietnutý / 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čidlo_3); }

Krok 11: Spustite program

Krok 12: Závery

Projekt má budúcnosť sľubnú, pretože sa môže veľmi efektívnym spôsobom zlepšovať, senzory je možné meniť pre štítky RFID a súčasne s RFID je možné pomocou ID kariet monitorovať, kto je za materiál zodpovedný.

Odporúča: