Indholdsfortegnelse:

Inventory skuffe "Smart Cities Hackathon Qualcomm17": 13 trin
Inventory skuffe "Smart Cities Hackathon Qualcomm17": 13 trin

Video: Inventory skuffe "Smart Cities Hackathon Qualcomm17": 13 trin

Video: Inventory skuffe
Video: RFID Technology Explained 2024, Juli
Anonim
Lagerskuffe
Lagerskuffe

I det næste dokument kan du se processen med konstruktion og programmering af en intelligent skuffe. Denne skuffe var programmeret i et Dragon Board 410c, med det formål at forbedre byernes kvalitet. Projektet er en del af konkurrencen "smart cities hackathon Qualcomm 17".

Ideen om dette projekt begyndte med et problem, som meget få mennesker ser, hvilket er den tabte og dårlige håndtering af værktøjer og materiale, der leveres af virksomheder som fabrikker og endda hospitaler. På disse steder leveres nogle materialer og værktøjer til arbejderne til at udføre aktiviteter, dette materiale og værktøjer skal genbruges, fordi de er dyre eller mangel på økonomiske ressourcer til at erstatte dem.

På hospitaler er der mennesker, der tager kontrol over de materialer, der fjernes, men når der er et menneskeligt indgreb, er der fejlen, som kan føre til unødvendige udgifter. Den bedste løsning på dette problem er en intelligent skuffe, der er i stand til at føre en oversigt over objekter, der er lånt og returneret og samtidig ved, hvem der er ansvarlig.

Trin 1: Materialer

Det nødvendige materiale til projektet er det næste: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 boards til Dragon Board 410c

1 x brødbræt

1 x MDF (Medium Density Fiberboard) ark 61 x 122 cm

5 x CNY -sensor 70

1 X TIP31B

1 x elektromagnet

1 x 7408

1 x tastatur

1 x skærm

3 x skruer

Modstande (sort)

Kobbertråde

Lim

Bore

Trin 2: Skær stykkerne til skuffen i MDF. (For bedre resultater, brug en laserskærer)

Skær stykkerne til skuffen i MDF. (For bedre resultater, brug en laserskærer)
Skær stykkerne til skuffen i MDF. (For bedre resultater, brug en laserskærer)

Trin 3: Sæt alle stykker sammen for at danne en skuffe med to små skuffer og en stor

Trin 4: Skru skruerne i midten af hver skuffe

Skru skruerne i midten af hver skuffe
Skru skruerne i midten af hver skuffe

Trin 5: Med boremaskinen skal der laves huller gennem skuffen på bagsiden, skal hullet være sensorens størrelse

Når boret laver huller gennem skuffen på bagsiden, skal hullet være på størrelse med sensoren
Når boret laver huller gennem skuffen på bagsiden, skal hullet være på størrelse med sensoren

Trin 6: Svejs hver sensor CNY 70 med kobbertrådene. (gentag 4 gange mere)

Svejs hver sensor CNY 70 med kobbertrådene. (gentag 4 gange mere)
Svejs hver sensor CNY 70 med kobbertrådene. (gentag 4 gange mere)

Trin 7: Der bruges et særligt kredsløb til sensoren

Der bruges et særligt kredsløb til sensoren
Der bruges et særligt kredsløb til sensoren

Trin 8: Tilslut Sensor Mezzanine til Dragon Board 410c. (bruges til at få adgang til GPIO)

Tilslut Sensor Mezzanine til Dragon Board 410c. (bruges til at få adgang til GPIO)
Tilslut Sensor Mezzanine til Dragon Board 410c. (bruges til at få adgang til GPIO)

Det er meget vigtigt, at dette trin udføres med dragebordet fra, hvis ikke det kan brænde, udover alt skal PIN -koden placeres korrekt.

Trin 9: Tilslut kredsløbet fra brødbrættet til mezzaninen

Tilslut kredsløbet fra brødbrættet til mezzaninen
Tilslut kredsløbet fra brødbrættet til mezzaninen
Tilslut kredsløbet fra brødbrættet til mezzaninen
Tilslut kredsløbet fra brødbrættet til mezzaninen
Tilslut kredsløbet fra brødbrættet til mezzaninen
Tilslut kredsløbet fra brødbrættet til mezzaninen
Tilslut kredsløbet fra brødbrættet til mezzaninen
Tilslut kredsløbet fra brødbrættet til mezzaninen

Trin 10: Skriv eller kopier koden

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Denne bit kode herunder får dette eksempel til at fungere på alle 96Board */

usigneret int LED_1; // elektro iman

usigneret int BUTTON_1; // første sensor

usigneret int BUTTON_2; // anden sensor usigneret int BUTTON_3; // luk usigneret int BUTTON_4; // tredje sensor

struct bruger {

char brugernavn [20]; char adgangskode [20]; }Bruger;

struct Database {

char Artikelnr. [20]; char Placering [20]; } Database;

int sensor1;

int sensor2; int sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char brugernavn [50];

char adgangskode [50];

forkælelse YesNo [40];

FIL *pFILE;

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

int kører = 1;

_attribute _ ((konstruktør)) statisk tomrum _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // fists sensor BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // anden sensor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // luk rack BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // tredje sensor // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");

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

libsoc_board_free (config); } / * Slut på 96Boards særlige kode * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct Bruger Karina; struct User Manager; strcpy (Karina.brugernavn, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "Chefen"); strcpy (Manager.password, "ITESM"); struct Database Tool; struct Database Pen; struct Database Case; strcpy (Tool. Article_Name, "Tool"); struct Database Tool; 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);

hvis ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{mislykkes; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (knap_2, INPUT); libsoc_gpio_set_direction (button_3, INPUT); libsoc_gpio_set_direction (button_4, INPUT); // libsoc_gpio_set_direction (button_5, INPUT);

hvis ((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)) {mislykkes; } sensor1 = libsoc_gpio_get_level (knap_1); sensor2 = libsoc_gpio_get_level (knap_2); sensor3 = libsoc_gpio_get_level (knap_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Placeret på rack"); } ellers hvis (sensor1 == 0) {strcpy (Tool. Location, "Aldrig placeret i dette stativ"); } if (sensor2 == 1) {strcpy (Pen. Location, "Placeret på rack"); } ellers hvis (sensor2 == 0) {strcpy (Pen. Location, "Aldrig placeret i denne Rack"); } if (sensor3 == 1) {strcpy (Case. Location, "Placeret på rack"); } ellers hvis (sensor3 == 0) {strcpy (Case. Location, "Aldrig placeret i denne Rack"); } mens (kører) {libsoc_gpio_set_level (led_1, HIGH); printf ("Venligst indtast brugernavn:"); scanf ("%s", brugernavn); printf ("Angiv venligst adgangskode:"); scanf ("%s", adgangskode); if (strcmp (brugernavn, "Karina") == 0 && strcmp (adgangskode, "højere") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, LOW); mens (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (knap_2); sensor3 = libsoc_gpio_get_level (knap_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } ellers hvis (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Placeret på rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } ellers hvis (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Placeret på stativ"); }

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

strcpy (Case. Location, Karina.brugernavn); } ellers hvis (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Placeret på rack"); }} ellers hvis (strcmp (brugernavn, "Chef") == 0 && strcmp (adgangskode, "ITESM") == 0) {printf ("Vil du generere en tekstfil med databasen? [Ja/Nej] "); scanf ("%s", YesNo); hvis ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Racks Database ----- / n"); fprintf (pFILE, "%s", "Artikelens navn:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikelens placering:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Artikelens navn:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikelens placering:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Artikelens navn:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikelens placering:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Adgang nægtet / n");

}} mislykkes: if (led_1 || button_1 || button_2 || button_3) {printf ("Apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (knap_1); libsoc_gpio_free (knap_2); libsoc_gpio_free (knap_3); }

Trin 11: Kør programmet

Trin 12: Konklusioner

Projektet har en fremtid lovende, da det kan forbedre sig på en meget effektiv måde, kan sensorerne ændres til RFID´s tags og samtidig med RFID er det muligt at bruge ID -kort til at overvåge, hvem der er ansvarlig for materialet.

Anbefalede: