Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Κόψτε τα κομμάτια για το συρτάρι στο MDF. (Για καλύτερα αποτελέσματα χρησιμοποιήστε κόπτη λέιζερ)
- Βήμα 3: Επικολλήστε όλα τα κομμάτια μαζί για να σχηματίσετε ένα συρτάρι με δύο μικρά συρτάρια και ένα μεγάλο
- Βήμα 4: Βιδώστε τις βίδες στη μέση κάθε συρταριού
- Βήμα 5: Με το τρυπάνι κάντε τρύπες στο συρτάρι στην πίσω πλευρά, η τρύπα πρέπει να έχει το μέγεθος του αισθητήρα
- Βήμα 6: Συγκολλήστε κάθε αισθητήρα CNY 70 με τα καλώδια χαλκού. (επαναλάβετε 4 φορές περισσότερο)
- Βήμα 7: Χρησιμοποιείται ένα ειδικό κύκλωμα για τον αισθητήρα
- Βήμα 8: Συνδέστε το Sensor Mezzanine στο Dragon Board 410c. (χρησιμοποιείται για πρόσβαση στο GPIO)
- Βήμα 9: Συνδέστε το κύκλωμα από το Breadboard στον ημιώροφο
- Βήμα 10: Γράψτε ή αντιγράψτε τον κώδικα
- Βήμα 11: Εκτελέστε το πρόγραμμα
- Βήμα 12: Συμπεράσματα
Βίντεο: Συρτάρι Αποθέματος "Smart Cities Hackathon Qualcomm17": 13 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Στο επόμενο έγγραφο, μπορείτε να δείτε τη διαδικασία κατασκευής και προγραμματισμού ενός έξυπνου συρταριού. Αυτό το συρτάρι προγραμματίστηκε σε ένα 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. (Για καλύτερα αποτελέσματα χρησιμοποιήστε κόπτη λέιζερ)
Βήμα 3: Επικολλήστε όλα τα κομμάτια μαζί για να σχηματίσετε ένα συρτάρι με δύο μικρά συρτάρια και ένα μεγάλο
Βήμα 4: Βιδώστε τις βίδες στη μέση κάθε συρταριού
Βήμα 5: Με το τρυπάνι κάντε τρύπες στο συρτάρι στην πίσω πλευρά, η τρύπα πρέπει να έχει το μέγεθος του αισθητήρα
Βήμα 6: Συγκολλήστε κάθε αισθητήρα CNY 70 με τα καλώδια χαλκού. (επαναλάβετε 4 φορές περισσότερο)
Βήμα 7: Χρησιμοποιείται ένα ειδικό κύκλωμα για τον αισθητήρα
Βήμα 8: Συνδέστε το Sensor Mezzanine στο Dragon Board 410c. (χρησιμοποιείται για πρόσβαση στο GPIO)
Είναι πολύ σημαντικό αυτό το βήμα να γίνει με τον πίνακα δράκων απενεργοποιημένο, αν όχι μπορεί να καεί, εκτός από όλα τα PIN πρέπει να τοποθετηθούν σωστά.
Βήμα 9: Συνδέστε το κύκλωμα από το 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 είναι δυνατή η χρήση καρτών ταυτότητας για την παρακολούθηση του υπεύθυνου του υλικού.
Συνιστάται:
ΣΥΣΤΗΜΑ ΕΛΕΓΧΟΥ ΧΡΕΩΣΗΣ ΤΙΜΟΛΟΓΙΟΥ ΚΑΙ ΑΠΟΘΕΜΑΤΟΣ: 3 Βήματα
ΣΥΣΤΗΜΑ ΕΛΕΓΧΟΥ ΧΡΕΩΣΗΣ ΤΙΜΟΛΟΓΙΟΥ ΚΑΙ ΕΦΑΡΜΟΓΗΣ: Με αυτό το εκπαιδευτικό εγχειρίδιο, θα σας δώσω μια ιδέα να δημιουργήσετε ένα σύστημα ελέγχου τιμολογίου και αποθέματος. Χρησιμοποιώντας πρόσβαση MS. Είναι πολύ εύκολο και δεν χρειάζεται περισσότερες γνώσεις υπολογιστή ή προγραμματισμού. Εάν έχετε βασικές γνώσεις για την κα Πρόσβαση, Πίνακες. φόρμες και αναφορές τ
Μυστικό συρτάρι: 4 βήματα
Secret Drawer: Πάντα με γοήτευαν μυστικά δωμάτια ή κρυφά συρτάρια. Αυτός είναι ο λόγος που αποφάσισα να φτιάξω το δικό μου κρυφό συρτάρι μια μέρα μετά την παρακολούθηση μιας ταινίας του Μπάτμαν. Αυτό το έργο αποτελείται από μια προτομή με ένα μυστικό κουμπί που μπορείτε να τοποθετήσετε παντού στο
Προσθέστε ένα κλείδωμα IOT σε οποιοδήποτε συρτάρι!: 4 βήματα
Προσθέστε ένα κλείδωμα IOT σε οποιοδήποτε συρτάρι !: Γεια σας! Μετά από αρκετό καιρό αποφάσισα να μοιραστώ το τελευταίο μου έργο με όλους εσάς. Αυτή ήταν μόνο μια ιδέα που πήρα αφού αγόρασα μια φτηνή κλειδαριά ηλεκτρομαγνητικής βαλβίδας στο διαδίκτυο και αποδείχθηκε ότι ήταν ένα εξαιρετικό έργο. Έτσι, βασικά η βασική ιδέα ήταν να κάνουμε μια
Vintage Hipster Upcycled Bluetooth ηχεία από ξύλινο συρτάρι: 5 βήματα
Vintage Hipster Upcycled Bluetooth ηχεία από ξύλινο συρτάρι: Γιατί να μην ανακυκλώσετε σαν τα στενά τζιν γυαλιά φορώντας hipster που συγκολλά ένα ημι-αποβουτυρωμένο καραμέλα latte σε ποδήλατο fixie! Δεν σας αρέσει η λέξη upcycle! Ω! ναι. Ας βάλουμε όλες αυτές τις ανοησίες στη μία πλευρά και κάνουμε κάτι διασκεδαστικό, εύκολο και χρήσιμο. Το μόνο που χρειάζεστε είναι
Ενσωματωμένο σύστημα διαχείρισης αποθέματος: 10 βήματα (με εικόνες)
Ολοκληρωμένο Σύστημα Διαχείρισης Αποθέματος: Πάντα ήθελα έναν προσιτό τρόπο για να παρακολουθώ τα πάντα στο ντουλάπι μου, οπότε πριν από μερικούς μήνες άρχισα να εργάζομαι σε ένα έργο που θα έκανε ακριβώς αυτό. Ο στόχος ήταν να φτιάξουμε ένα απλό, προσιτό σύστημα που να είναι πολύ εύκολο στη χρήση, ενώ παράλληλα να αποθηκεύσετε