Πίνακας περιεχομένων:

Συρτάρι Αποθέματος "Smart Cities Hackathon Qualcomm17": 13 Βήματα
Συρτάρι Αποθέματος "Smart Cities Hackathon Qualcomm17": 13 Βήματα

Βίντεο: Συρτάρι Αποθέματος "Smart Cities Hackathon Qualcomm17": 13 Βήματα

Βίντεο: Συρτάρι Αποθέματος
Βίντεο: SpoudaseFest - Τμ.Πληροφορικής, ΠAΠΕΙ: Digital Culture, Smart Cities, IoT, ADT 2024, Ιούλιος
Anonim
Συρτάρι αποθέματος
Συρτάρι αποθέματος

Στο επόμενο έγγραφο, μπορείτε να δείτε τη διαδικασία κατασκευής και προγραμματισμού ενός έξυπνου συρταριού. Αυτό το συρτάρι προγραμματίστηκε σε ένα Dragon Board 410c, με σκοπό τη βελτίωση της ποιότητας των πόλεων. Το έργο είναι μέρος του διαγωνισμού «έξυπνες πόλεις hackathon Qualcomm 17».

Η ιδέα αυτού του έργου ξεκίνησε με ένα πρόβλημα που πολύ λίγοι άνθρωποι βλέπουν, το οποίο είναι η χαμένη και κακή διαχείριση εργαλείων και υλικού που παρέχονται από εταιρείες όπως εργοστάσια, ακόμη και νοσοκομεία. Σε αυτούς τους χώρους, ορισμένα υλικά και εργαλεία παρέχονται στους εργαζόμενους για να κάνουν δραστηριότητες, αυτό το υλικό και τα εργαλεία πρέπει να επαναχρησιμοποιηθούν επειδή είναι ακριβά ή λόγω έλλειψης οικονομικών πόρων για την αντικατάστασή τους.

Στα νοσοκομεία, υπάρχουν άνθρωποι που αναλαμβάνουν τον έλεγχο των υλικών που αφαιρούνται, αλλά όταν υπάρχει ανθρώπινη παρέμβαση υπάρχει το σφάλμα, το οποίο μπορεί να οδηγήσει σε περιττά έξοδα. Η καλύτερη λύση σε αυτό το πρόβλημα είναι ένα έξυπνο συρτάρι ικανό να διατηρεί μια απογραφή αντικειμένων που δανείζονται και επιστρέφονται και ταυτόχρονα γνωρίζει ποιος είναι ο υπεύθυνος.

Βήμα 1: Υλικά

Το υλικό που απαιτείται για το έργο είναι το επόμενο: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Πίνακες για Dragon Board 410c

1 x Breadboard

1 x φύλλο MDF (Μέτριας πυκνότητας ινοσανίδες) 61 x 122 cm

5 x αισθητήρας CNY 70

1 Χ TIP31B

1 x ηλεκτρομαγνήτης

1 x 7408

1 x Πληκτρολόγιο

1 x οθόνη

3 x βίδες

Αντιστάσεις (ποικιλία)

Σύρματα χαλκού

Κόλλα

Τρυπάνι

Βήμα 2: Κόψτε τα κομμάτια για το συρτάρι στο MDF. (Για καλύτερα αποτελέσματα χρησιμοποιήστε κόπτη λέιζερ)

Κόψτε τα κομμάτια για το συρτάρι στο MDF. (Για καλύτερα αποτελέσματα χρησιμοποιήστε κόπτη λέιζερ)
Κόψτε τα κομμάτια για το συρτάρι στο MDF. (Για καλύτερα αποτελέσματα χρησιμοποιήστε κόπτη λέιζερ)

Βήμα 3: Επικολλήστε όλα τα κομμάτια μαζί για να σχηματίσετε ένα συρτάρι με δύο μικρά συρτάρια και ένα μεγάλο

Βήμα 4: Βιδώστε τις βίδες στη μέση κάθε συρταριού

Βιδώστε τις βίδες στη μέση κάθε συρταριού
Βιδώστε τις βίδες στη μέση κάθε συρταριού

Βήμα 5: Με το τρυπάνι κάντε τρύπες στο συρτάρι στην πίσω πλευρά, η τρύπα πρέπει να έχει το μέγεθος του αισθητήρα

Με το τρυπάνι κάντε τρύπες στο συρτάρι στην πίσω πλευρά, η τρύπα πρέπει να έχει το μέγεθος του αισθητήρα
Με το τρυπάνι κάντε τρύπες στο συρτάρι στην πίσω πλευρά, η τρύπα πρέπει να έχει το μέγεθος του αισθητήρα

Βήμα 6: Συγκολλήστε κάθε αισθητήρα CNY 70 με τα καλώδια χαλκού. (επαναλάβετε 4 φορές περισσότερο)

Συγκολλήστε κάθε αισθητήρα CNY 70 με τα καλώδια χαλκού. (επαναλάβετε 4 φορές περισσότερο)
Συγκολλήστε κάθε αισθητήρα CNY 70 με τα καλώδια χαλκού. (επαναλάβετε 4 φορές περισσότερο)

Βήμα 7: Χρησιμοποιείται ένα ειδικό κύκλωμα για τον αισθητήρα

Για τον αισθητήρα χρησιμοποιείται ειδικό κύκλωμα
Για τον αισθητήρα χρησιμοποιείται ειδικό κύκλωμα

Βήμα 8: Συνδέστε το Sensor Mezzanine στο Dragon Board 410c. (χρησιμοποιείται για πρόσβαση στο GPIO)

Συνδέστε το Sensor Mezzanine στο Dragon Board 410c. (χρησιμοποιείται για πρόσβαση στο GPIO)
Συνδέστε το Sensor Mezzanine στο Dragon Board 410c. (χρησιμοποιείται για πρόσβαση στο GPIO)

Είναι πολύ σημαντικό αυτό το βήμα να γίνει με τον πίνακα δράκων απενεργοποιημένο, αν όχι μπορεί να καεί, εκτός από όλα τα PIN πρέπει να τοποθετηθούν σωστά.

Βήμα 9: Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο

Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο

Βήμα 10: Γράψτε ή αντιγράψτε τον κώδικα

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Αυτό το κομμάτι κώδικα παρακάτω κάνει αυτό το παράδειγμα να λειτουργεί σε όλους τους 96Boards */

χωρίς υπογραφή int LED_1; // electro iman

χωρίς υπογραφή int BUTTON_1; // πρώτος αισθητήρας

unsigned int BUTTON_2; // δεύτερος αισθητήρας unsigned int BUTTON_3; // κλείσιμο unsigned int BUTTON_4; // τρίτος αισθητήρας

struct χρήστη {

όνομα χρήστη char [20]; κωδικός πρόσβασης char [20]; }Χρήστης;

struct βάση δεδομένων {

char Όνομα άρθρου [20]; char Τοποθεσία [20]; }Βάση δεδομένων;

int sensor1;

int sensor2; int sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

όνομα χρήστη char [50];

κωδικός πρόσβασης char [50];

char Ναι Όχι [40];

ΑΡΧΕΙΟ *pFILE;

char Ναι [20] = {"Ναι"};

int τρέξιμο = 1;

_αναφορά _ ((κατασκευαστής)) στατικό κενό _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"); // second sensor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // κλείσιμο rack BUTTON_4 = libsoc_board_gpio_id (διαμόρφωση, "GPIO-B"); // τρίτος αισθητήρας // BUTTON_5 = libsoc_board_gpio_id (διαμόρφωση, "GPIO-E");

LED_1 = libsoc_board_gpio_id (διαμόρφωση, "GPIO-E"); // electro iman

libsoc_board_free (διαμόρφωση); } / * Τέλος ειδικού κωδικού 96Boards * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct Χρήστης Karina; struct User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); struct Εργαλείο βάσης δεδομένων. Struct Database Pen? struct Περίπτωση βάσης δεδομένων; strcpy (Tool. Article_Name, "Tool"); struct Εργαλείο βάσης δεδομένων. Struct Database Pen? struct Περίπτωση βάσης δεδομένων; 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);

εάν ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{goto fail; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (κουμπί_1, ΕΙΣΟΔΟΣ); 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);

εάν ((libsoc_gpio_get_direction (led_1)! = OUTPUT)

|| (libsoc_gpio_get_direction (button_1)! = ΕΙΣΟΔΟΣ) || (libsoc_gpio_get_direction (button_2)! = ΕΙΣΟΔΟΣ) || (libsoc_gpio_get_direction (button_3)! = ΕΙΣΟΔΟΣ) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {goto fail; } sensor1 = libsoc_gpio_get_level (κουμπί_1); αισθητήρας2 = libsoc_gpio_get_level (κουμπί_2); sensor3 = libsoc_gpio_get_level (κουμπί_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Located on Rack"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Ποτέ δεν τοποθετήθηκε σε αυτό το ράφι"); } if (sensor2 == 1) {strcpy (Pen. Location, "Located on Rack"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Ποτέ δεν τοποθετήθηκε σε αυτό το ράφι"); } if (sensor3 == 1) {strcpy (Case. Location, "Located on Rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "Ποτέ δεν τοποθετήθηκε σε αυτό το ράφι"); } ενώ (τρέχει) {libsoc_gpio_set_level (led_1, HIGH); printf ("Καταχωρίστε το όνομα χρήστη:"); scanf ("%s", όνομα χρήστη); printf ("Καταχωρίστε τον κωδικό πρόσβασης:"); scanf ("%s", κωδικός πρόσβασης); if (strcmp (username, "Karina") == 0 && strcmp (password, "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); αισθητήρας2 = libsoc_gpio_get_level (κουμπί_2); sensor3 = libsoc_gpio_get_level (κουμπί_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } else 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); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Located on Rack"); }

εάν (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Located on Rack"); }} else if (strcmp (όνομα χρήστη, "Αφεντικό") == 0 && strcmp (κωδικός πρόσβασης, "ITESM") == 0) {printf ("Θέλετε να δημιουργήσετε ένα αρχείο κειμένου με τη βάση δεδομένων; [Ναι/Όχι] "); scanf ("%s", YesNo); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Βάση δεδομένων Rack ----- / n"); fprintf (pFILE, "%s", "Όνομα άρθρου:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Τοποθεσία άρθρου:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Όνομα άρθρου:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Τοποθεσία άρθρου:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Όνομα άρθρου:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Τοποθεσία άρθρου:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Αρνήθηκε η πρόσβαση / n");

}} fail: if (led_1 || button_1 || button_2 || button_3) {printf ("εφαρμόστε τον πόρο gpio fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (κουμπί_1); libsoc_gpio_free (κουμπί_2); libsoc_gpio_free (κουμπί_3); }

Βήμα 11: Εκτελέστε το πρόγραμμα

Βήμα 12: Συμπεράσματα

Το έργο έχει ένα μελλοντικό πολλά υποσχόμενο, καθώς μπορεί να βελτιωθεί με πολύ αποτελεσματικό τρόπο, οι αισθητήρες μπορούν να αλλάξουν για ετικέτες RFID´S και ταυτόχρονα με το RFID είναι δυνατή η χρήση καρτών ταυτότητας για την παρακολούθηση του υπεύθυνου του υλικού.

Συνιστάται: