Turinys:

Inventoriaus stalčius „Smart Cities Hackathon Qualcomm17“: 13 žingsnių
Inventoriaus stalčius „Smart Cities Hackathon Qualcomm17“: 13 žingsnių

Video: Inventoriaus stalčius „Smart Cities Hackathon Qualcomm17“: 13 žingsnių

Video: Inventoriaus stalčius „Smart Cities Hackathon Qualcomm17“: 13 žingsnių
Video: CS50 2015 - Week 9, continued 2024, Liepa
Anonim
Inventoriaus stalčius
Inventoriaus stalčius

Kitame dokumente galite pamatyti išmaniojo stalčiaus konstravimo ir programavimo procesą. Šis stalčius buvo užprogramuotas „Dragon Board 410c“, siekiant pagerinti miestų kokybę. Projektas yra konkurso „Smart City hackathon Qualcomm 17“dalis.

Šio projekto idėja prasidėjo nuo problemos, kurią mato labai mažai žmonių, o tai yra prarastas ir blogas įrankių ir medžiagų valdymas, kurį teikia tokios įmonės kaip gamyklos ir net ligoninės. Šiose vietose darbuotojams suteikiamos tam tikros medžiagos ir įrankiai veiklai atlikti, ši medžiaga ir įrankiai turi būti pakartotinai naudojami, nes jie yra brangūs arba trūksta ekonominių išteklių juos pakeisti.

Ligoninėse yra žmonių, kurie kontroliuoja pašalinamas medžiagas, tačiau kai įsikiša žmogus, atsiranda klaida, dėl kurios gali kilti nereikalingų išlaidų. Geriausias šios problemos sprendimas yra protingas stalčius, galintis išlaikyti skolintų ir grąžintų objektų sąrašą ir tuo pačiu žinoti, kas yra atsakingas.

1 žingsnis: medžiagos

Projektui reikalinga medžiaga yra tokia: 1 x „Dragon Board 410c“

1 x „Sensor Mezzanine“96 plokštės „Dragon Board 410c“

1 x duonos lenta

1 x MDF (vidutinio tankio medienos plaušų plokštės) lakštas 61 x 122 cm

5 x jutiklis CNY 70

1 X PATARIMAS31B

1 x elektromagnetas

1 x 7408

1 x klaviatūra

1 x ekranas

3 x varžtai

Atsparumas (įvairovė)

Variniai laidai

Klijai

Grąžtas

2 žingsnis: iškirpkite stalčiaus gabalus MDF. (Norėdami gauti geresnių rezultatų, naudokite lazerinį pjaustytuvą)

Iškirpkite gabalus stalčiui MDF. (Norėdami gauti geresnių rezultatų, naudokite lazerinį pjaustytuvą)
Iškirpkite gabalus stalčiui MDF. (Norėdami gauti geresnių rezultatų, naudokite lazerinį pjaustytuvą)

3 žingsnis: įklijuokite visus gabalus, kad sudarytumėte stalčių su dviem mažais stalčiais ir dideliu

4 žingsnis: Prisukite varžtus kiekvieno stalčiaus viduryje

Prisukite varžtus kiekvieno stalčiaus viduryje
Prisukite varžtus kiekvieno stalčiaus viduryje

5 veiksmas: kai gręžtuvas padaro skyles per stalčių galinėje pusėje, skylė turi būti jutiklio dydžio

Kai gręžtuvas padaro skyles per stalčių galinėje pusėje, skylė turi būti jutiklio dydžio
Kai gręžtuvas padaro skyles per stalčių galinėje pusėje, skylė turi būti jutiklio dydžio

6 žingsnis: suvirinkite kiekvieną jutiklį CNY 70 su variniais laidais. (pakartokite dar 4 kartus)

Suvirinkite kiekvieną jutiklį CNY 70 su variniais laidais. (pakartokite dar 4 kartus)
Suvirinkite kiekvieną jutiklį CNY 70 su variniais laidais. (pakartokite dar 4 kartus)

7 žingsnis: Jutikliui naudojama speciali grandinė

Jutikliui naudojama speciali grandinė
Jutikliui naudojama speciali grandinė

8 veiksmas: prijunkite jutiklio antresolę prie „Dragon Board 410c“. (naudojama prieigai prie GPIO)

Prijunkite „Sensor Mezzanine“prie „Dragon Board 410c“. (naudojama prieigai prie GPIO)
Prijunkite „Sensor Mezzanine“prie „Dragon Board 410c“. (naudojama prieigai prie GPIO)

Labai svarbu, kad šis žingsnis būtų atliktas išjungus drakono lentą, jei ne, ji gali sudegti, be to, visas PIN kodas turi būti įdėtas teisingai.

9 veiksmas: prijunkite grandinę nuo duonos lentos prie tarpinės

Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto
Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto
Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto
Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto
Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto
Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto
Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto
Prijunkite grandinę nuo duonos lentos prie tarpinio aukšto

10 veiksmas: parašykite arba nukopijuokite kodą

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Šis toliau pateiktas kodo bitas leidžia šiam pavyzdžiui veikti visose 96 lentose */

unsigned int LED_1; // electro iman

unsigned int BUTTON_1; // pirmasis jutiklis

unsigned int BUTTON_2; // antrasis jutiklis unsigned int BUTTON_3; // uždaryti nepasirašytas int BUTTON_4; // trečias jutiklis

struk vartotojas {

char vartotojo vardas [20]; char slaptažodis [20]; }Vartotojas;

struk duomenų bazė {

char Straipsnio_pavadinimas [20]; char Vieta [20]; } Duomenų bazė;

int jutiklis1;

int jutiklis2; int jutiklis3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char vartotojo vardas [50];

char slaptažodis [50];

char TaipNe [40];

FILE *pFILE;

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

int bėgimas = 1;

_attribute _ ((konstruktorius)) static void _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (konfigūracija, „GPIO-A“); // kumščių jutiklis BUTTON_2 = libsoc_board_gpio_id (konfigūracija, „GPIO-C“); // antrasis jutiklis BUTTON_3 = libsoc_board_gpio_id (konfigūracija, „GPIO-D“); // uždaryti lentyną BUTTON_4 = libsoc_board_gpio_id (konfigūracija, "GPIO-B"); // trečias jutiklis // BUTTON_5 = libsoc_board_gpio_id (konfigūracija, "GPIO-E");

LED_1 = libsoc_board_gpio_id (konfigūracija, „GPIO-E“); // electro iman

libsoc_board_free (konfigūracija); } / * „96Boards“specialiojo kodo pabaiga * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struk Vartotojas Karina; struk Vartotojo vadybininkas; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, „Aukštesnė vertikalė“); strcpy („Manager.username“, „The Boss“); strcpy („Manager.password“, „ITESM“); struk duomenų bazės įrankis; struk duomenų bazės rašiklis; struk duomenų bazės dėklas; strcpy (Tool. Article_Name, „Tool“); struk duomenų bazės įrankis; struk duomenų bazės rašiklis; struk duomenų bazės dėklas; strcpy (Tool. Article_Name, „Tool“); strcpy (Pen. Article_Name, "Pen"); strcpy (Case. Article_Name, "Byla"); 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))

{goto fail; } libsoc_gpio_set_direction (led_1, OUTPUT); 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)! = IŠVESTIS)

|| (libsoc_gpio_get_direction (button_1)! = INPUT) || (libsoc_gpio_get_direction (button_2)! = INPUT) || (libsoc_gpio_get_direction (button_3)! = INPUT) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {goto fail; } jutiklis1 = libsoc_gpio_get_level (button_1); jutiklis2 = libsoc_gpio_get_level (mygtukas_2); jutiklis3 = libsoc_gpio_get_level (button_4); sensor1_last_state = jutiklis1; sensor2_last_state = jutiklis2; sensor3_last_state = jutiklis3; if (sensor1 == 1) {strcpy (Tool. Location, "Įsikūręs ant stovo"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Niekada neįdėtas į šią lentyną"); } if (sensor2 == 1) {strcpy (Pen. Location, "Įsikūręs ant stovo"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Niekada neįdėtas į šią lentyną"); } if (sensor3 == 1) {strcpy (Case. Location, "Įsikūręs ant stovo"); } else if (sensor3 == 0) {strcpy (Case. Location, "Niekada neįdėtas į šią lentyną"); } o (veikia) {libsoc_gpio_set_level (led_1, HIGH); printf ("Prašome įvesti vartotojo vardą:"); scanf ("%s", vartotojo vardas); printf ("Prašome įvesti slaptažodį:"); scanf ("%s", slaptažodis); if (strcmp (vartotojo vardas, „Karina“) == 0 && strcmp (slaptažodis, „aukštesnis“) == 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); jutiklis2 = libsoc_gpio_get_level (mygtukas_2); jutiklis3 = libsoc_gpio_get_level (button_4); } libsoc_gpio_set_level (led_1, AUKŠTAS); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } else if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Įsikūręs ant stovo"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Įsikūręs ant stovo"); }

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

strcpy („Case. Location“, „Karina.username“); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Įsikūręs ant stovo"); }} else if (strcmp (vartotojo vardas, „viršininkas“) == 0 && strcmp (slaptažodis, „ITESM“) == 0) {printf ("Ar norite sugeneruoti tekstinį failą naudodami duomenų bazę? [Taip/Ne] "); scanf ("%s", TaipNe); if ((strcmp (TaipNo, Taip) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rack duomenų bazė ----- / n"); fprintf (pFILE, "%s", "Straipsnio pavadinimas:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Straipsnio vieta:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Straipsnio pavadinimas:"); fprintf (pFILE, "%s", rašiklis. Straipsnio_pavadinimas); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Straipsnio vieta:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Straipsnio pavadinimas:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Straipsnio vieta:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf („Prieiga uždrausta / n“);

}} nepavyko: if (led_1 || button_1 || button_2 || button_3) {printf ("Apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (mygtukas_1); libsoc_gpio_free (mygtukas_2); libsoc_gpio_free (mygtukas_3); }

11 veiksmas: paleiskite programą

12 žingsnis: Išvados

Projektas turi daug žadančią ateitį, nes jis gali būti labai efektyviai patobulintas, jutikliai gali būti pakeisti RFID žymomis, o kartu su RFID galima naudoti tapatybės korteles, kad būtų galima stebėti, kas yra atsakingas už medžiagą.

Rekomenduojamas: