Innehållsförteckning:

Lagerlåda "Smart Cities Hackathon Qualcomm17": 13 steg
Lagerlåda "Smart Cities Hackathon Qualcomm17": 13 steg

Video: Lagerlåda "Smart Cities Hackathon Qualcomm17": 13 steg

Video: Lagerlåda
Video: Vika en flyttkartong 2024, Juli
Anonim
Lagerlåda
Lagerlåda

I nästa dokument kan du se processen för konstruktion och programmering av en intelligent låda. Denna låda var programmerad i en Dragon Board 410c, i syfte att förbättra städernas kvalitet. Projektet är en del av tävlingen "smart cities hackathon Qualcomm 17".

Idén med detta projekt började med ett problem som väldigt få människor ser, vilket är den förlorade och dåliga hanteringen av verktyg och material som tillhandahålls av företag som fabriker och till och med sjukhus. På dessa platser tillhandahålls vissa material och verktyg till arbetarna för att utföra aktiviteter, detta material och verktyg måste återanvändas eftersom de är dyra eller bristen på ekonomiska resurser för att ersätta dem.

På sjukhus finns det människor som tar kontroll över det material som tas bort, men när det sker ett mänskligt ingrepp finns det ett fel, vilket kan leda till onödiga utgifter. Den bästa lösningen på detta problem är en intelligent låda som kan hålla en inventering av objekt som lånas och returneras och samtidigt vet vem som är ansvarig.

Steg 1: Material

Materialet som behövs för projektet är nästa: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 -kort för Dragon Board 410c

1 x brödbräda

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

5 x sensor CNY 70

1 X TIP31B

1 x elektromagnet

1 x 7408

1 x tangentbord

1 x skärm

3 x skruvar

Motstånd (variation)

Koppartrådar

Lim

Borra

Steg 2: Skär bitarna till lådan i MDF. (För bättre resultat använd en laserskärare)

Skär bitarna till lådan i MDF. (För bättre resultat använd en laserskärare)
Skär bitarna till lådan i MDF. (För bättre resultat använd en laserskärare)

Steg 3: Klistra ihop alla delar för att bilda en låda med två små lådor och en stor

Steg 4: Skruva fast skruvarna i mitten av varje låda

Skruva fast skruvarna i mitten av varje låda
Skruva fast skruvarna i mitten av varje låda

Steg 5: Med borren gör hål genom lådan på baksidan måste hålet vara sensorns storlek

Med borren gör hål genom lådan på baksidan måste hålet vara sensorns storlek
Med borren gör hål genom lådan på baksidan måste hålet vara sensorns storlek

Steg 6: Svetsa varje sensor CNY 70 med koppartrådarna. (upprepa 4 gånger mer)

Svetsa varje sensor CNY 70 med koppartrådarna. (upprepa 4 gånger mer)
Svetsa varje sensor CNY 70 med koppartrådarna. (upprepa 4 gånger mer)

Steg 7: En speciell krets används för sensorn

En speciell krets används för sensorn
En speciell krets används för sensorn

Steg 8: Anslut Sensor Mezzanine till Dragon Board 410c. (används för att komma åt GPIO)

Anslut sensormezzaninen till Dragon Board 410c. (används för att komma åt GPIO)
Anslut sensormezzaninen till Dragon Board 410c. (används för att komma åt GPIO)

Det är mycket viktigt att detta steg görs med drakbrädet avstängt, om inte kan det brinna, förutom att alla PIN -koder måste placeras korrekt.

Steg 9: Anslut kretsen från brödbrädan till mezzaninen

Anslut kretsen från brödbrädan till mezzaninen
Anslut kretsen från brödbrädan till mezzaninen
Anslut kretsen från brödbrädan till mezzaninen
Anslut kretsen från brödbrädan till mezzaninen
Anslut kretsen från brödbrädan till mezzaninen
Anslut kretsen från brödbrädan till mezzaninen
Anslut kretsen från brödbrädan till mezzaninen
Anslut kretsen från brödbrädan till mezzaninen

Steg 10: Skriv eller kopiera koden

#include #include #include // #include

#inkludera "libsoc_gpio.h"

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

/ * Denna kodbit nedan gör att detta exempel fungerar på alla 96Board */

osignerad int LED_1; // electro iman

osignerad int BUTTON_1; // första sensor

osignerad int BUTTON_2; // andra sensorn osignerad int BUTTON_3; // stäng osignerad int BUTTON_4; // tredje sensor

struct -användare {

char användarnamn [20]; char -lösenord [20]; }Användare;

struct Database {

char Artikelnamn [20]; char Location [20]; }Databas;

int sensor1;

int sensor2; int sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char användarnamn [50];

char lösenord [50];

char YesNo [40];

FIL *pFILE;

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

int kör = 1;

_attribut _ ((konstruktör)) statisk tomrum _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // nävar sensor BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // andra sensorn BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // stäng 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); } / * Slut på 96Bards specialkod * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct Användare Karina; struct User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Högre vertikal"); 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, "Penna"); 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);

om ((led_1 == NULL) || (knapp_1 == NULL) || (knapp_2 == NULL) || (knapp_3 == NULL) || (knapp_4 == NULL))

{misslyckas; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (knapp_1, INGÅNG); libsoc_gpio_set_direction (knapp_2, INGÅNG); libsoc_gpio_set_direction (knapp_3, INGÅNG); libsoc_gpio_set_direction (knapp_4, INGÅNG); // libsoc_gpio_set_direction (knapp_5, INGÅNG);

if ((libsoc_gpio_get_direction (led_1)! = OUTPUT)

|| (libsoc_gpio_get_direction (button_1)! = INGÅNG) || (libsoc_gpio_get_direction (knapp_2)! = INGÅNG) || (libsoc_gpio_get_direction (button_3)! = INPUT) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {misslyckas; } 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"); } annars if (sensor1 == 0) {strcpy (Tool. Location, "Aldrig placerad i detta rack"); } if (sensor2 == 1) {strcpy (Pen. Location, "Ligger på rack"); } annars if (sensor2 == 0) {strcpy (Pen. Location, "Aldrig placerad i detta rack"); } if (sensor3 == 1) {strcpy (Case. Location, "Ligger på rack"); } annars if (sensor3 == 0) {strcpy (Case. Location, "Aldrig placerad i detta rack"); } medan (körs) {libsoc_gpio_set_level (led_1, HIGH); printf ("Vänligen ange användarnamn:"); scanf ("%s", användarnamn); printf ("Vänligen ange lösenord:"); scanf ("%s", lösenord); if (strcmp (användarnamn, "Karina") == 0 && strcmp (lösenord, "högre") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, LOW); medan (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); } annars if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Ligger på rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } annars if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Ligger på rack"); }

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

strcpy (Case. Location, Karina.användarnamn); } annars if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Ligger på rack"); }} annars if (strcmp (användarnamn, "Boss") == 0 && strcmp (lösenord, "ITESM") == 0) {printf ("Vill du skapa en textfil med databasen? [Ja/Nej] "); scanf ("%s", YesNo); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Racks databas ----- / n"); fprintf (pFILE, "%s", "Artikelens namn:"); 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", "Artikelens namn:"); 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", "Artikelens namn:");

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 ("Åtkomst nekad / n");

}} misslyckas: 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); }

Steg 11: Kör programmet

Steg 12: Slutsatser

Projektet har en framtid som lovar, eftersom det kan förbättras på ett mycket effektivt sätt kan sensorerna ändras för RFID -taggar och samtidigt med RFID är det möjligt att använda ID -kort för att övervaka vem som är ansvarig för materialet.

Rekommenderad: