Tartalomjegyzék:

Leltárfiók "Smart Cities Hackathon Qualcomm17": 13 lépés
Leltárfiók "Smart Cities Hackathon Qualcomm17": 13 lépés

Videó: Leltárfiók "Smart Cities Hackathon Qualcomm17": 13 lépés

Videó: Leltárfiók
Videó: Kompakt tárolási megoldások - ELD Raktártechnika Kft. 2024, November
Anonim
Leltárfiók
Leltárfiók

A következő dokumentumban láthatja az intelligens fiók kialakításának és programozásának folyamatát. Ezt a fiókot a Dragon Board 410c programozta, azzal a céllal, hogy javítsa a városok minőségét. A projekt az „intelligens városok hackathon Qualcomm 17” verseny része.

Ennek a projektnek az ötlete egy olyan problémával kezdődött, amelyet nagyon kevesen látnak, ami az eszközök és anyagok elveszett és rossz kezelése, amelyet olyan vállalatok biztosítanak, mint a gyárak, sőt a kórházak. Ezeken a helyeken bizonyos anyagokat és eszközöket biztosítanak a dolgozóknak a tevékenységek elvégzéséhez, ezt az anyagot és eszközöket újra fel kell használni, mert drágák, vagy a helyettesítésükhöz szükséges gazdasági erőforrások hiányoznak.

A kórházakban vannak emberek, akik átveszik az irányítást az eltávolított anyagok felett, de ha emberi beavatkozás történik, ott a hiba, ami szükségtelen kiadásokhoz vezethet. A legjobb megoldás erre a problémára egy intelligens fiók, amely képes nyilvántartást vezetni a kölcsönzött és visszaküldött tárgyakról, és egyúttal tudja, ki a felelős.

1. lépés: Anyagok

A projekthez szükséges anyag a következő: 1 x Dragon Board 410c

1 x Mezzanine szenzor 96 tábla a Dragon Board 410c -hez

1 x kenyeretábla

1 x MDF (közepes sűrűségű farostlemez) lemez 61 x 122 cm

5 x CNY 70 érzékelő

1 X TIPP31B

1 x elektromágnes

1 x 7408

1 x billentyűzet

1 x képernyő

3 x csavar

Ellenállások (változatosság)

Rézhuzalok

Ragasztó

Fúró

2. lépés: Vágja le a darabokat a fiókhoz az MDF -ben. (A jobb eredmény érdekében használjon lézervágót)

Vágja le a darabokat a fiókhoz az MDF -ben. (A jobb eredmény érdekében használjon lézervágót)
Vágja le a darabokat a fiókhoz az MDF -ben. (A jobb eredmény érdekében használjon lézervágót)

3. lépés: Illessze össze az összes darabot, és alakítson ki egy fiókot két kis fiókkal és egy nagy fiókkal

4. lépés: Csavarja be a csavarokat minden fiók közepére

Csavarja be a csavarokat minden fiók közepére
Csavarja be a csavarokat minden fiók közepére

5. lépés: Ha a fúrólyuk lyukakat készít a hátsó oldalon lévő fiókban, a lyuknak az érzékelő méretének kell lennie

Ha a fúró lyukakat a hátsó oldalon lévő fiókon keresztül készít, a lyuknak az érzékelő méretének kell lennie
Ha a fúró lyukakat a hátsó oldalon lévő fiókon keresztül készít, a lyuknak az érzékelő méretének kell lennie

6. lépés: Hegesztje az egyes CNY 70 érzékelőket a rézhuzalokkal. (ismételje meg még 4 -szer)

Hegesztjen minden CNY 70 érzékelőt a rézhuzalokkal. (ismételje meg még 4 -szer)
Hegesztjen minden CNY 70 érzékelőt a rézhuzalokkal. (ismételje meg még 4 -szer)

7. lépés: Különös áramkört használnak az érzékelőhöz

Az érzékelőhöz speciális áramkört használnak
Az érzékelőhöz speciális áramkört használnak

8. lépés: Csatlakoztassa a szenzor mezzanine -t a Dragon Board 410c -hez. (a GPIO eléréséhez használt)

Csatlakoztassa a Mezzanine szenzort a Dragon Board 410c -hez. (a GPIO eléréséhez használt)
Csatlakoztassa a Mezzanine szenzort a Dragon Board 410c -hez. (a GPIO eléréséhez használt)

Nagyon fontos, hogy ezt a lépést kikapcsolt sárkánytáblával kell elvégezni, ha nem, akkor megéghet, emellett minden PIN -kódot helyesen kell elhelyezni.

9. lépés: Csatlakoztassa az áramkört a kenyértábláról a félemelethez

Csatlakoztassa az áramkört a kenyértábláról a félemelethez
Csatlakoztassa az áramkört a kenyértábláról a félemelethez
Csatlakoztassa az áramkört a kenyértábláról a félemelethez
Csatlakoztassa az áramkört a kenyértábláról a félemelethez
Csatlakoztassa az áramkört a kenyértábláról a félemelethez
Csatlakoztassa az áramkört a kenyértábláról a félemelethez
Csatlakoztassa az áramkört a kenyértábláról a félemelethez
Csatlakoztassa az áramkört a kenyértábláról a félemelethez

10. lépés: Írja vagy másolja a kódot

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Az alábbi kódrészlet lehetővé teszi, hogy ez a példa működjön az összes 96 táblán */

unsigned int LED_1; // electro iman

unsigned int BUTTON_1; // első érzékelő

unsigned int BUTTON_2; // második érzékelő unsigned int BUTTON_3; // close unsigned int BUTTON_4; // harmadik érzékelő

struktúra felhasználó {

char felhasználónév [20]; char jelszó [20]; } Felhasználó;

struk Database {

char cikk_neve [20]; char Helye [20]; } Adatbázis;

int szenzor1;

int szenzor2; int szenzor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char felhasználónév [50];

char jelszó [50];

char IgenNem [40];

FILE *pFILE;

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

int futás = 1;

_attribute _ ((konstruktor)) static void _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (konfiguráció, "GPIO-A"); // ököllel érzékelő BUTTON_2 = libsoc_board_gpio_id (konfiguráció, "GPIO-C"); // második érzékelő BUTTON_3 = libsoc_board_gpio_id (konfiguráció, "GPIO-D"); // rack bezárása BUTTON_4 = libsoc_board_gpio_id (konfiguráció, "GPIO-B"); // harmadik érzékelő // BUTTON_5 = libsoc_board_gpio_id (konfiguráció, "GPIO-E");

LED_1 = libsoc_board_gpio_id (konfiguráció, "GPIO-E"); // electro iman

libsoc_board_free (konfiguráció); } / * A 96Boards speciális kódjának vége * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struk Felhasználó Karina; struk Felhasználókezelő; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.jelszó, "Magasabb függőleges"); strcpy (Manager.username, "A főnök"); strcpy (Manager.password, "ITESM"); struk Database Tool; struk Database Pen; struk Database Case; strcpy (Eszköz. Cikk_neve, "Eszköz"); struk Database Tool; struk Database Pen; struk Database Case; strcpy (Eszköz. Cikk_neve, "Eszköz"); 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); // gomb_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)! = OUTPUT)

|| (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; } szenzor1 = libsoc_gpio_get_level (gomb_1); szenzor2 = libsoc_gpio_get_level (gomb_2); szenzor3 = libsoc_gpio_get_level (gomb_4); sensor1_last_state = szenzor1; sensor2_last_state = szenzor2; sensor3_last_state = szenzor3; if (szenzor1 == 1) {strcpy (Tool. Location, "Rackon található"); } else if (szenzor1 == 0) {strcpy (Tool. Location, "Soha nem került ebbe a rackbe"); } if (sensor2 == 1) {strcpy (Pen. Location, "Located on Rack"); } else if (szenzor2 == 0) {strcpy (Pen. Location, "Soha nem került ebbe a rackbe"); } if (sensor3 == 1) {strcpy (Case. Location, "A racken található"); } else if (szenzor3 == 0) {strcpy (Case. Location, "Soha nem került ebbe a rackbe"); } while (fut) {libsoc_gpio_set_level (led_1, HIGH); printf ("Kérjük, adja meg a felhasználónevet:"); scanf ("%s", felhasználónév); printf ("Kérjük, adja meg a jelszót:"); scanf ("%s", jelszó); if (strcmp (felhasználónév, "Karina") == 0 && strcmp (jelszó, "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); szenzor2 = libsoc_gpio_get_level (gomb_2); szenzor3 = libsoc_gpio_get_level (gomb_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, "A racken található"); } 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"); }

if (szenzor3 == 1 && szenzor3! = érzékelő3_utolsó_állapot) {

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Located on Rack"); }} else if (strcmp (felhasználónév, "főnök") == 0 && strcmp (jelszó, "ITESM") == 0) {printf ("Szeretne szöveges fájlt létrehozni az adatbázissal? [Igen/Nem] "); scanf ("%s", IgenNo); if ((strcmp (IgenNo, Igen) == 0)) {// Kezelő_felhasználó (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rack's Database ----- / n"); fprintf (pFILE, "%s", "cikk neve:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "A cikk helye:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "cikk neve:"); fprintf (pFILE, "%s", toll. Cikk_neve); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "A cikk helye:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "cikk neve:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "A cikk helye:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Hozzáférés megtagadva / n");

}} sikertelen: if (led_1 || button_1 || button_2 || button_3) {printf ("Apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (gomb_1); libsoc_gpio_free (gomb_2); libsoc_gpio_free (gomb_3); }

11. lépés: Futtassa a programot

12. lépés: Következtetések

A projektnek ígéretes jövője van, mivel nagyon hatékonyan javítható, az érzékelők RFID -címkékre cserélhetők, és az RFID -vel egyidejűleg lehetőség van személyi igazolványok használatával ellenőrizni, hogy ki felelős az anyagért.

Ajánlott: