INHOUDSOPGAWE:

Voorraadlaai "Smart Cities Hackathon Qualcomm17": 13 stappe
Voorraadlaai "Smart Cities Hackathon Qualcomm17": 13 stappe

Video: Voorraadlaai "Smart Cities Hackathon Qualcomm17": 13 stappe

Video: Voorraadlaai
Video: Как спрятать данные в ячейках Excel? 2024, Julie
Anonim
Voorraadlaai
Voorraadlaai

In die volgende dokument kan u die proses van konstruksie en programmering van 'n intelligente laai sien. Hierdie laai is geprogrammeer in 'n Dragon Board 410c, met die doel om die kwaliteit van stede te verbeter. Die projek is deel van die kompetisie "smart cities hackathon Qualcomm 17".

Die idee van hierdie projek het begin met 'n probleem wat baie min mense sien, dit is die verlore en slegte bestuur van gereedskap en materiaal wat deur ondernemings soos fabrieke en selfs hospitale verskaf word. Op hierdie plekke word materiaal en gereedskap aan die werkers verskaf om aktiwiteite te doen; hierdie materiaal en gereedskap moet hergebruik word omdat dit duur is of 'n gebrek aan ekonomiese hulpbronne is om dit te vervang.

In hospitale is daar mense wat beheer neem oor die materiaal wat verwyder word, maar as daar 'n menslike ingryping is, is daar die fout, wat tot onnodige uitgawes kan lei. Die beste oplossing vir hierdie probleem is 'n intelligente laai wat 'n inventaris kan hou van voorwerpe wat geleen en teruggestuur word en terselfdertyd weet wie die verantwoordelik is.

Stap 1: materiaal

Die materiaal wat nodig is vir die projek is die volgende: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 borde vir Dragon Board 410c

1 x broodbord

1 x MDF (medium digtheid veselbord) vel 61 x 122 cm

5 x sensor CNY 70

1 X WENK31B

1 x elektromagneet

1 x 7408

1 x sleutelbord

1 x skerm

3 x skroewe

Weerstand (verskeidenheid)

Koperdrade

Gom

Boor

Stap 2: Sny die stukke vir die laai in die MDF. (Gebruik 'n lasersnyer vir beter resultate)

Sny die stukke vir die laai in die MDF. (Gebruik 'n lasersnyer vir beter resultate)
Sny die stukke vir die laai in die MDF. (Gebruik 'n lasersnyer vir beter resultate)

Stap 3: Plak al die stukke saam om 'n laai te vorm met twee laaie en 'n groot een

Stap 4: Skroef die skroewe in die middel van elke laai vas

Skroef die skroewe in die middel van elke laai vas
Skroef die skroewe in die middel van elke laai vas

Stap 5: Maak met die boor gate deur die laai aan die agterkant, die gat moet die grootte van die sensor wees

Maak met die boor gate deur die laai aan die agterkant, die gat moet die grootte van die sensor wees
Maak met die boor gate deur die laai aan die agterkant, die gat moet die grootte van die sensor wees

Stap 6: Las elke sensor CNY 70 met die koperdrade. (herhaal 4 keer meer)

Las elke sensor CNY 70 met die koperdrade. (herhaal 4 keer meer)
Las elke sensor CNY 70 met die koperdrade. (herhaal 4 keer meer)

Stap 7: 'n Spesiale stroombaan word vir die sensor gebruik

'N Spesiale stroombaan word vir die sensor gebruik
'N Spesiale stroombaan word vir die sensor gebruik

Stap 8: Koppel die sensor -mezzanine aan die Dragon Board 410c. (gebruik om toegang tot die GPIO te verkry)

Koppel die sensor -mezzanine aan die Dragon Board 410c. (gebruik om toegang tot die GPIO te verkry)
Koppel die sensor -mezzanine aan die Dragon Board 410c. (gebruik om toegang tot die GPIO te verkry)

Dit is baie belangrik dat hierdie stap uitgevoer word met die draakbord af, as dit nie kan brand nie, behalwe dat al die PIN korrek geplaas moet word.

Stap 9: Koppel die stroombaan van die broodbord aan die tussenverdieping

Koppel die stroombaan van die broodbord aan die tussenverdieping
Koppel die stroombaan van die broodbord aan die tussenverdieping
Koppel die stroombaan van die broodbord aan die tussenverdieping
Koppel die stroombaan van die broodbord aan die tussenverdieping
Koppel die stroombaan van die broodbord aan die tussenverdieping
Koppel die stroombaan van die broodbord aan die tussenverdieping
Koppel die stroombaan van die broodbord aan die tussenverdieping
Koppel die stroombaan van die broodbord aan die tussenverdieping

Stap 10: Skryf of kopieer die kode

#include #include #include // #include

#sluit "libsoc_gpio.h" in

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

/ * Hierdie stukkie kode hieronder laat hierdie voorbeeld op alle 96 borde werk */

ongetekende int LED_1; // elektro iman

ongetekende int BUTTON_1; // eerste sensor

ongetekende int BUTTON_2; // tweede sensor ongetekende int BUTTON_3; // sluit ongetekende int BUTTON_4; // derde sensor

struktuur gebruiker {

char gebruikersnaam [20]; char wagwoord [20]; } Gebruiker;

struct Databasis {

char Artikelnaam [20]; char Ligging [20]; } Databasis;

int sensor1;

int sensor2; int sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char gebruikersnaam [50];

char wagwoord [50];

char Ja Nee [40];

LêER *pFILE;

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

int hardloop = 1;

_attribute _ ((konstruktor)) statiese leemte _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // vuiste sensor BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // tweede sensor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // sluit rak BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // derde 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); } / * Einde van 96Borde spesiale kode * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct Gebruiker Karina; struct Gebruikersbestuurder; strcpy (Karina.gebruikersnaam, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Bestuurder.wagwoord, "ITESM"); struct Databasis Tool; struct Databasis Pen; struct Database Case; strcpy (Tool. Article_Name, "Tool"); struct Databasis Tool; struct Databasis Pen; struct Database Case; 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);

as ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{misluk; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (knoppie_1, INVOER); libsoc_gpio_set_direction (knoppie_2, INVOER); libsoc_gpio_set_direction (knoppie_3, INVOER); libsoc_gpio_set_direction (knoppie_4, INVOER); // libsoc_gpio_set_direction (knoppie_5, INVOER);

as ((libsoc_gpio_get_direction (led_1)! = UITGANG)

|| (libsoc_gpio_get_direction (button_1)! = INVOER) || (libsoc_gpio_get_direction (knoppie_2)! = INVOER) || (libsoc_gpio_get_direction (button_3)! = INVOER) || (libsoc_gpio_get_direction (button_4)! = INVOER)) {misluk; } sensor1 = libsoc_gpio_get_level (knoppie_1); sensor2 = libsoc_gpio_get_level (knoppie_2); sensor3 = libsoc_gpio_get_level (knoppie_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Geleë op rek"); } anders if (sensor1 == 0) {strcpy (Tool. Location, "Nooit in hierdie rek geplaas nie"); } if (sensor2 == 1) {strcpy (Pen. Location, "Geleë op rek"); } anders as (sensor2 == 0) {strcpy (Pen. Location, "Nooit in hierdie rek geplaas nie"); } if (sensor3 == 1) {strcpy (Case. Location, "Geleë op rek"); } anders as (sensor3 == 0) {strcpy (Case. Location, "Nooit in hierdie rek geplaas nie"); } terwyl (hardloop) {libsoc_gpio_set_level (led_1, HOOG); printf ("Gebruikersnaam:"); scanf ("%s", gebruikersnaam); printf ("Voer asseblief wagwoord in:"); scanf ("%s", wagwoord); if (strcmp (gebruikersnaam, "Karina") == 0 && strcmp (wagwoord, "groter") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, LOW); terwyl (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (knoppie_2); sensor3 = libsoc_gpio_get_level (knoppie_4); } libsoc_gpio_set_level (led_1, HOOG); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } anders as (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Geleë op rek"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } anders as (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Geleë op rek"); }

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

strcpy (Case. Location, Karina.gebruikersnaam); } anders as (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Geleë op rek"); }} anders if (strcmp (gebruikersnaam, "Baas") == 0 && strcmp (wagwoord, "ITESM") == 0) {printf ("Wil u 'n tekslêer met die databasis genereer? [Ja/Nee] "); scanf ("%s", Ja Nee); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rack se databasis ----- / n"); fprintf (pFILE, "%s", "Artikel se naam:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikel se ligging:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Artikel se naam:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikel se ligging:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Artikel se naam:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Artikel se ligging:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Toegang geweier / n");

}} misluk: as (led_1 || button_1 || button_2 || button_3) {printf ("pas gpio -bron toe! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (knoppie_1); libsoc_gpio_free (knoppie_2); libsoc_gpio_free (knoppie_3); }

Stap 11: Begin die program

Stap 12: Gevolgtrekkings

Die projek het 'n belowende toekoms, aangesien dit op 'n baie effektiewe manier kan verbeter, kan die sensors vir RFID -etikette verander word, en terselfdertyd met die RFID kan u ID -kaarte gebruik om te monitor wie verantwoordelik is vir die materiaal.

Aanbeveel: