Inhaltsverzeichnis:
- Schritt 1: Materialien
- Schritt 2: 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
- 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
- Schritt 6: 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
- Schritt 8: Verbinden Sie das Sensor-Mezzanine mit dem Dragon Board 410c. (wird verwendet, um auf den GPIO zuzugreifen)
- Schritt 9: Verbinden Sie den Stromkreis vom Steckbrett mit dem Zwischengeschoss
- Schritt 10: Schreiben oder kopieren Sie den Code
- Schritt 11: Führen Sie das Programm aus
- Schritt 12: Schlussfolgerungen
Video: Inventarschublade "Smart Cities Hackathon Qualcomm17": 13 Schritte
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
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)
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
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
Schritt 6: 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
Schritt 8: 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
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:
Erste Schritte mit Amara: 7 Schritte
Erste Schritte mit Amara: Amara ist ein kostenloser Untertitel-Editor, mit dem Sie ganz einfach Untertitel zu Videos hinzufügen können – vom Unterricht bis zum persönlichen Gebrauch. Diese Anweisungen helfen Ihnen, ein Amara-Konto einzurichten, damit Sie schnell und einfach Untertitel hinzufügen können
Smart Garden "SmartHorta": 9 Schritte
Smart Garden "SmartHorta": Hallo Leute, Diese Anleitung wird das College-Projekt eines intelligenten Gemüsegartens präsentieren, der eine automatische Pflanzenbewässerung bietet und über eine mobile App gesteuert werden kann. Das Ziel dieses Projekts ist es, Kunden zu bedienen, die zu Hause pflanzen möchten
Bauen Sie Ihren eigenen ""Banksys Self-Destruct Artwork Frame"": 4 Schritte
Bauen Sie Ihren eigenen ""Banksys Self-Destruct Artwork Frame": Als sich das Balloon Girl nach einem Schlag von 1,4 Millionen Dollar selbst zerschredderte, begannen unsere inneren Macher zu analysieren, wie es gemacht wird. Wir hatten 2 anfängliche Ideen im Kopf: Die erste war die Klingen wurden an der Basis des Rahmens und zwei Rädern befestigt
SMART FISH FEEDER "DOMOVOY": 5 Schritte (mit Bildern)
SMART FISH FEEDER "DOMOVOY": Der Feeder "DOMOVOY"; ist für die automatische Fütterung von Aquarienfischen nach Zeitplan ausgelegt.Eigenschaften:Entwickelt für die automatische Fütterung von AquarienfischenDie Fütterung erfolgt zur eingestellten ZeitEin spezieller Algorithmus verhindert FutterstausParameter können geändert werden
HC - 06 (Slave-Modul) Ändern von "NAME" ohne Verwendung "Monitor Serial Arduino" das "funktioniert einfach": Fehlerfreier Weg!: Gunook
HC - 06 (Slave-Modul) Ändern von "NAME" ohne Verwendung "Monitor Serial Arduino" … Lange Zeit " Versuchen Sie, den Namen auf HC - 06 (Slave-Modul) zu ändern, indem Sie " serieller Monitor des Arduino, ohne " Erfolg ", ich habe einen anderen einfachen Weg gefunden und teile jetzt! Viel Spaß Freunde