Innholdsfortegnelse:

Inventory skuff "Smart Cities Hackathon Qualcomm17": 13 trinn
Inventory skuff "Smart Cities Hackathon Qualcomm17": 13 trinn

Video: Inventory skuff "Smart Cities Hackathon Qualcomm17": 13 trinn

Video: Inventory skuff
Video: How to scaffolding work 2024, Juli
Anonim
Inventory skuff
Inventory skuff

I det neste dokumentet kan du seprosessen for konstruksjon og programmering av en intelligent skuff. Denne skuffen ble programmert i en Dragon Board 410c, med det formål å forbedre kvaliteten på byene. Prosjektet er en del av konkurransen "smart cities hackathon Qualcomm 17".

Ideen om dette prosjektet begynte med et problem som svært få mennesker ser, som er den tapte og dårlige håndteringen av verktøy og materiale som tilbys av selskaper som fabrikker og til og med sykehus. På disse stedene blir noen materialer og verktøy gitt til arbeiderne for å utføre aktiviteter, dette materialet og verktøyene må gjenbrukes fordi de er dyre eller mangel på økonomiske ressurser for å erstatte dem.

På sykehus er det mennesker som tar kontroll over materialene som fjernes, men når det er et menneskelig inngrep er det feilen, som kan føre til unødvendige utgifter. Den beste løsningen på dette problemet er en intelligent skuff som er i stand til å føre en oversikt over gjenstander som er lånt og returnert og samtidig vet hvem som er ansvarlig.

Trinn 1: Materialer

Materialet som trengs for prosjektet er det neste: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Boards for Dragon Board 410c

1 x brødbrett

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

5 x sensor CNY 70

1 X TIPS31B

1 x elektromagnet

1 x 7408

1 x tastatur

1 x skjerm

3 x skruer

Motstander (variasjon)

Kobbertråder

Lim

Bore

Trinn 2: Klipp delene til skuffen i MDF. (For bedre resultater, bruk en laserskærer)

Klipp delene til skuffen i MDF. (For bedre resultater, bruk en laserskærer)
Klipp delene til skuffen i MDF. (For bedre resultater, bruk en laserskærer)

Trinn 3: Lim alle delene sammen for å danne en skuff med to små skuffer og en stor

Trinn 4: Skru skruene i midten av hver skuff

Skru skruene i midten av hver skuff
Skru skruene i midten av hver skuff

Trinn 5: Når boret lager hull gjennom skuffen på baksiden, må hullet være på størrelse med sensoren

Når boret lager hull gjennom skuffen på baksiden, må hullet være på størrelse med sensoren
Når boret lager hull gjennom skuffen på baksiden, må hullet være på størrelse med sensoren

Trinn 6: Sveis hver sensor CNY 70 med kobbertrådene. (gjenta 4 ganger mer)

Sveis hver sensor CNY 70 med kobbertrådene. (gjenta 4 ganger mer)
Sveis hver sensor CNY 70 med kobbertrådene. (gjenta 4 ganger mer)

Trinn 7: En spesiell krets brukes til sensoren

En spesiell krets brukes til sensoren
En spesiell krets brukes til sensoren

Trinn 8: Koble Sensor Mezzanine til Dragon Board 410c. (pleide å få tilgang til GPIO)

Koble Sensor Mezzanine til Dragon Board 410c. (pleide å få tilgang til GPIO)
Koble Sensor Mezzanine til Dragon Board 410c. (pleide å få tilgang til GPIO)

Det er veldig viktig at dette trinnet utføres med dragebrettet av, hvis ikke kan det brenne, i tillegg må alt PIN -koden plasseres riktig.

Trinn 9: Koble kretsen fra brødbrettet til mesaninen

Koble kretsen fra brødbrettet til mesaninen
Koble kretsen fra brødbrettet til mesaninen
Koble kretsen fra brødbrettet til mesaninen
Koble kretsen fra brødbrettet til mesaninen
Koble kretsen fra brødbrettet til mesaninen
Koble kretsen fra brødbrettet til mesaninen
Koble kretsen fra brødbrettet til mesaninen
Koble kretsen fra brødbrettet til mesaninen

Trinn 10: Skriv eller kopier koden

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Denne koden nedenfor får dette eksemplet til å fungere på alle 96Board */

usignert int LED_1; // electro iman

usignert int BUTTON_1; // første sensor

usignert int BUTTON_2; // andre sensor usignert int BUTTON_3; // lukk usignert int BUTTON_4; // tredje sensor

struct bruker {

char brukernavn [20]; char passord [20]; }Bruker;

struct Database {

char Artikkelnavn [20]; char Location [20]; } Database;

int sensor1;

int sensor2; int sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char brukernavn [50];

char passord [50];

røye JaNei [40];

FIL *pFILE;

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

int kjører = 1;

_attributt _ ((konstruktør)) statisk tomrom _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // never sensor BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // andre sensor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // lukk 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"); // electro iman

libsoc_board_free (config); } / * Slutten på 96Board -spesialkoden * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct Bruker Karina; struct User Manager; strcpy (Karina.brukernavn, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "Sjefen"); 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) || (knapp_1 == NULL) || (knapp_2 == NULL) || (knapp_3 == NULL) || (knapp_4 == NULL))

{mislykkes; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (knapp_2, INNGANG); libsoc_gpio_set_direction (knapp_3, INNGANG); libsoc_gpio_set_direction (knapp_4, INNGANG); // libsoc_gpio_set_direction (knapp_5, INNGANG);

hvis ((libsoc_gpio_get_direction (led_1)! = OUTPUT)

|| (libsoc_gpio_get_direction (button_1)! = INNGANG) || (libsoc_gpio_get_direction (knapp_2)! = INNGANG) || (libsoc_gpio_get_direction (button_3)! = INNGANG) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {mislykkes; } sensor1 = libsoc_gpio_get_level (knapp_1); sensor2 = libsoc_gpio_get_level (knapp_2); sensor3 = libsoc_gpio_get_level (knapp_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Ligger på Rack"); } annet hvis (sensor1 == 0) {strcpy (Tool. Location, "Aldri plassert i dette stativet"); } if (sensor2 == 1) {strcpy (Pen. Location, "Ligger på Rack"); } annet hvis (sensor2 == 0) {strcpy (Pen. Location, "Aldri plassert i dette stativet"); } if (sensor3 == 1) {strcpy (Case. Location, "Ligger på rack"); } annet hvis (sensor3 == 0) {strcpy (Case. Location, "Aldri plassert i dette stativet"); } mens (kjører) {libsoc_gpio_set_level (led_1, HIGH); printf ("Vennligst skriv brukernavn:"); scanf ("%s", brukernavn); printf ("Vennligst oppgi passord:"); scanf ("%s", passord); if (strcmp (brukernavn, "Karina") == 0 && strcmp (passord, "høyere") == 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 (knapp_2); sensor3 = libsoc_gpio_get_level (knapp_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } annet hvis (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Ligger på Rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } annet hvis (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Ligger på Rack"); }

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

strcpy (Case. Location, Karina.brukernavn); } annet hvis (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Ligger på Rack"); }} annet hvis (strcmp (brukernavn, "Sjef") == 0 && strcmp (passord, "ITESM") == 0) {printf ("Vil du generere en tekstfil med databasen? [Ja/Nei] "); scanf ("%s", YesNo); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Racks Database ----- / n"); fprintf (pFILE, "%s", "Artikkelenavn:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Article's Location:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Artikkelenavn:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Article's Location:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Artikkelenavn:");

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

fclose (pFILE);

}

printf ("Tilgang nektet / 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 (knapp_1); libsoc_gpio_free (knapp_2); libsoc_gpio_free (knapp_3); }

Trinn 11: Kjør programmet

Trinn 12: Konklusjoner

Prosjektet har en lovende fremtid, siden det kan forbedre seg på en veldig effektiv måte, kan sensorene endres for RFID -tagger, og samtidig med RFID er det mulig å bruke ID -kort for å overvåke hvem som er ansvarlig for materialet.

Anbefalt: