Innehållsförteckning:
- Steg 1: Material
- Steg 2: 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
- Steg 5: 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)
- Steg 7: 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)
- Steg 9: Anslut kretsen från brödbrädan till mezzaninen
- Steg 10: Skriv eller kopiera koden
- Steg 11: Kör programmet
- Steg 12: Slutsatser
Video: Lagerlåda "Smart Cities Hackathon Qualcomm17": 13 steg
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
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)
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
Steg 5: 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)
Steg 7: 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)
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
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.