Inhaltsverzeichnis:

Inventarschublade "Smart Cities Hackathon Qualcomm17": 13 Schritte
Inventarschublade "Smart Cities Hackathon Qualcomm17": 13 Schritte

Video: Inventarschublade "Smart Cities Hackathon Qualcomm17": 13 Schritte

Video: Inventarschublade
Video: 15 smart IDEAS for your HOME 2024, Kann
Anonim
Inventarschublade
Inventarschublade

Im nächsten Dokument sehen Sie den Aufbau und die Programmierung einer intelligenten Schublade. Diese Schublade wurde in einem Dragon Board 410c programmiert, um die Qualität der Städte zu verbessern. Das Projekt ist Teil des Wettbewerbs „Smart Cities Hackathon Qualcomm 17“.

Die Idee zu diesem Projekt begann mit einem Problem, das nur sehr wenige Menschen sehen, nämlich der verlorene und schlechte Umgang mit Werkzeugen und Materialien, die von Unternehmen wie Fabriken und sogar Krankenhäusern bereitgestellt werden. An diesen Orten werden den Arbeitern einige Materialien und Werkzeuge zur Verfügung gestellt, um Tätigkeiten auszuführen, diese Materialien und Werkzeuge müssen wiederverwendet werden, weil sie teuer sind oder es an wirtschaftlichen Ressourcen mangelt, um sie zu ersetzen.

In Krankenhäusern gibt es Leute, die die Kontrolle über die entnommenen Materialien übernehmen, aber wenn ein menschlicher Eingriff erfolgt, gibt es den Fehler, der zu unnötigen Kosten führen kann. Die beste Lösung für dieses Problem ist eine intelligente Schublade, die in der Lage ist, ein Inventar der ausgeliehenen und zurückgegebenen Objekte zu führen und gleichzeitig die Verantwortlichen zu kennen.

Schritt 1: Materialien

Das für das Projekt benötigte Material ist das nächste: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Boards für Dragon Board 410c

1 x Steckbrett

1 x MDF-Platte (Mitteldichte Faserplatte) 61 x 122 cm

5 x Fühler CNY 70

1 X TIP31B

1 x Elektromagnet

1 x 7408

1 x Tastatur

1 x Bildschirm

3 x Schrauben

Resistenzen (Sorte)

Kupferkabel

Kleber

Bohren

Schritt 2: Schneiden Sie die Stücke für die Schublade in das MDF. (Für bessere Ergebnisse verwenden Sie einen Laserschneider)

Schneiden Sie die Stücke für die Schublade in das MDF. (Für bessere Ergebnisse verwenden Sie einen Laserschneider)
Schneiden Sie die Stücke für die Schublade in das MDF. (Für bessere Ergebnisse verwenden Sie einen Laserschneider)

Schritt 3: Fügen Sie alle Teile zusammen, um eine Schublade mit zwei kleinen Schubladen und einer großen zu bilden

Schritt 4: Schrauben Sie die Schrauben in die Mitte jeder Schublade

Schrauben Sie die Schrauben in die Mitte jeder Schublade
Schrauben Sie die Schrauben in die Mitte jeder Schublade

Schritt 5: Machen Sie mit dem Bohrer Löcher durch die Schublade auf der Rückseite, das Loch muss die Größe des Sensors haben

Wenn der Bohrer Löcher durch die Schublade auf der Rückseite bohrt, muss das Loch die Größe des Sensors haben
Wenn der Bohrer Löcher durch die Schublade auf der Rückseite bohrt, muss das Loch die Größe des Sensors haben

Schritt 6: Schweißen Sie jeden Sensor CNY 70 mit den Kupferdrähten. (wiederholen Sie 4 Mal mehr)

Schweißen Sie jeden Sensor CNY 70 mit den Kupferdrähten. (wiederholen Sie 4 Mal mehr)
Schweißen Sie jeden Sensor CNY 70 mit den Kupferdrähten. (wiederholen Sie 4 Mal mehr)

Schritt 7: Für den Sensor wird eine spezielle Schaltung verwendet

Für den Sensor wird eine spezielle Schaltung verwendet
Für den Sensor wird eine spezielle Schaltung verwendet

Schritt 8: Verbinden Sie das Sensor-Mezzanine mit dem Dragon Board 410c. (wird verwendet, um auf den GPIO zuzugreifen)

Verbinden Sie das Sensor-Mezzanine mit dem Dragon Board 410c. (wird verwendet, um auf den GPIO zuzugreifen)
Verbinden Sie das Sensor-Mezzanine mit dem Dragon Board 410c. (wird verwendet, um auf den GPIO zuzugreifen)

Es ist sehr wichtig, dass dieser Schritt bei ausgeschaltetem Drachenbrett durchgeführt wird, wenn es nicht brennen kann, außerdem müssen alle PINs richtig platziert werden.

Schritt 9: Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss

Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss

Schritt 10: Schreiben oder kopieren Sie den Code

#include #include #include //#include

#include "libsoc_gpio.h"

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

/* Dieser Code unten lässt dieses Beispiel auf allen 96Boards funktionieren */

unsigned int LED_1; // Elektro-Iman

unsigned int BUTTON_1; // erster Sensor

unsigned int BUTTON_2; // zweiter Sensor unsigned int BUTTON_3; // schließen unsigned int BUTTON_4; // dritter Sensor

struct Benutzer{

char-Benutzername[20]; char-Passwort[20]; }Benutzer;

struct Datenbank{

char Artikelname[20]; char-Standort[20]; }Datenbank;

int-Sensor1;

int-Sensor2; int-Sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char-Benutzername[50];

char-Passwort[50];

char JaNein[40];

DATEI *pDATEI;

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

int läuft = 1;

_Attribut_((Konstruktor)) statisch void _init()

{ board_config *config = libsoc_board_init(); BUTTON_1 = libsoc_board_gpio_id(config, "GPIO-A"); // Faustsensor BUTTON_2 = libsoc_board_gpio_id(config, "GPIO-C"); // zweiter Sensor BUTTON_3 = libsoc_board_gpio_id(config, "GPIO-D"); // Rack schließen BUTTON_4 = libsoc_board_gpio_id(config, "GPIO-B"); // dritter 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); } /* Ende des 96Boards Sondercodes */

int main()

{ gpio *led_1, *button_1, *button_2, *button_3, *button_4; //int berühren; struct Benutzer Karina; struct Benutzermanager; strcpy(Karina. Benutzername, "Karina Valverde"); strcpy(Karina.password, "Taller Vertical"); strcpy(Manager. Benutzername, "Der Boss"); strcpy(Manager.password, "ITESM"); struct Datenbank-Tool; struct Datenbank-Stift; struct Datenbankfall; strcpy(Tool. Artikelname, "Tool"); struct Datenbank-Tool; struct Datenbank-Stift; struct Datenbankfall; strcpy(Tool. Artikelname, "Tool"); strcpy(Stift. Artikelname, "Stift"); strcpy(Fall. Artikelname, "Fall"); 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))

{ muss scheitern; } libsoc_gpio_set_direction(led_1, AUSGANG); libsoc_gpio_set_direction(button_1, INPUT); libsoc_gpio_set_direction(button_2, INPUT); libsoc_gpio_set_direction(button_3, INPUT); libsoc_gpio_set_direction(button_4, INPUT); //libsoc_gpio_set_direction(button_5, INPUT);

if((libsoc_gpio_get_direction(led_1) != AUSGABE)

|| (libsoc_gpio_get_direction(button_1) != EINGANG) || (libsoc_gpio_get_direction(button_2) != EINGANG) || (libsoc_gpio_get_direction(button_3) != EINGANG) || (libsoc_gpio_get_direction(button_4) != INPUT)) { goto fail; } sensor1 = libsoc_gpio_get_level(button_1); sensor2 = libsoc_gpio_get_level(button_2); sensor3 = libsoc_gpio_get_level(button_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 ==1) { strcpy (Tool. Location, "Auf dem Rack"); } else if (sensor1 == 0) { strcpy (Tool. Location, "Nie in diesem Rack platziert"); } if (sensor2 ==1){strcpy (Pen. Location, "Auf dem Rack"); aufrechtzuerhalten. Sonst if (sensor2 == 0) { strcpy (Pen. Location, "Nie in diesem Rack platziert"); } if (sensor3 ==1){strcpy (Case. Location, "Auf dem Rack"); aufrechtzuerhalten. Sonst if (sensor3 == 0) { strcpy (Case. Location, "Nie in diesem Rack platziert"); aufrechtzuerhalten. Während (läuft) { libsoc_gpio_set_level (led_1, HIGH); printf("Bitte Benutzernamen eingeben: "); scanf("%s", Benutzername); printf("Bitte Passwort eingeben: "); scanf("%s", Passwort); if (strcmp(Benutzername, "Karina") == 0 && strcmp(Passwort, "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); sensor2 = libsoc_gpio_get_level(button_2); sensor3 = libsoc_gpio_get_level(button_4); } libsoc_gpio_set_level(led_1, HIGH); if (sensor1 == 1 && sensor1 != sensor1_last_state) { strcpy (Tool. Location, Karina.username); }sonst if (sensor1 == 0 && sensor1 != sensor1_last_state){strcpy(Tool. Location, "Located on Rack"); } if (sensor2 == 1 && sensor2 != sensor2_last_state) { strcpy (Pen. Location, Karina.username); }sonst if (sensor2 == 0 && sensor2 != sensor2_last_state){strcpy(Pen. Location, "Located on Rack"); }

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

strcpy(Case. Location, Karina. Benutzername); }sonst if (sensor3 == 0 && sensor3 != sensor3_last_state){strcpy(Case. Location, "Located on Rack"); } }else if (strcmp(username, "Boss") == 0 && strcmp(password, "ITESM") == 0){ printf(" Möchten Sie eine Textdatei mit der Datenbank generieren? [Ja/Nein] "); scanf("%s", JaNein); if ((strcmp(YesNo, Yes) == 0)){//Manager_user(pFILE); pFILE = fopen("Datenbank.txt", "w"); fprintf(pFILE, "%s", "--------Rack's Database-----\n"); fprintf(pFILE, "%s", "Name des Artikels:"); fprintf(pFILE, "%s", Tool. Article_Name); fprintf(pDATEI, "%s", "\t"); fprintf(pFILE, "%s", "Speicherort des Artikels:"); fprintf(pFILE, "%s", Tool. Location); fprintf(pDATEI, "%s", "\n"); fprintf(pFILE, "%s", "Name des Artikels:"); fprintf(pFILE, "%s", Pen. Article_Name); fprintf(pDATEI, "%s", "\t"); fprintf(pFILE, "%s", "Speicherort des Artikels:"); fprintf(pFILE, "%s", Pen. Location); fprintf(pDATEI, "%s", "\n");

fprintf(pFILE, "%s", "Name des Artikels:");

fprintf(pFILE, "%s", Case. Article_Name); fprintf(pDATEI, "%s", "\t"); fprintf(pFILE, "%s", "Speicherort des Artikels:"); fprintf(pFILE, "%s", Case. Location); fprintf(pDATEI, "%s", "\n");

fclose(pDATEI);

}

printf("Zugriff verweigert \n");

} } fehlgeschlagen: if(led_1 || button_1|| button_2|| button_3) { printf("Gpio-Ressource fehlgeschlagen anwenden!\n"); libsoc_gpio_free(led_1); libsoc_gpio_free(button_1); libsoc_gpio_free(button_2); libsoc_gpio_free(button_3); }

Schritt 11: Führen Sie das Programm aus

Schritt 12: Schlussfolgerungen

Das Projekt ist zukunftsträchtig, da es sehr effektiv verbessert werden kann, die Sensoren auf RFID´S-Tags umgerüstet werden können und gleichzeitig mit dem RFID mit ID-Karten überwacht werden kann, wer für das Material verantwortlich ist.

Empfohlen: