Мазмуну:

Инвентардык суурма "Акылдуу шаарлар Hackathon Qualcomm17": 13 кадам
Инвентардык суурма "Акылдуу шаарлар Hackathon Qualcomm17": 13 кадам

Video: Инвентардык суурма "Акылдуу шаарлар Hackathon Qualcomm17": 13 кадам

Video: Инвентардык суурма
Video: Канада на ЭКСПО-2020. Программы получения канадского ПМЖ через Express Entry в 2021 году 2024, Июль
Anonim
Инвентардык суурма
Инвентардык суурма

Кийинки документте сиз акылдуу суурманы куруу жана программалоо процессин көрө аласыз. Бул суурма шаарлардын сапатын жакшыртуу максатында Dragon Board 410c программасына киргизилген. Долбоор "Акылдуу шаарлар hackathon Qualcomm 17" сынагынын бир бөлүгү.

Бул долбоордун идеясы фабрикалар, ал тургай ооруканалар сыяктуу компаниялар тарабынан берилген шаймандардын жана материалдардын жоголгон жана начар башкарылышы өтө аз адамдар көргөн көйгөйдөн башталды. Бул жерлерде жумушчуларга кээ бир материалдар жана шаймандар берилет, бул материалдар жана шаймандар кымбат болгондуктан же аларды алмаштыруу үчүн экономикалык ресурстардын жоктугунан кайра колдонулушу керек.

Ооруканаларда, алынып салынган материалдарды көзөмөлгө алган адамдар бар, бирок адамдын кийлигишүүсү болгондо, ката кетет, бул ашыкча чыгымдарга алып келет. Бул көйгөйдүн эң жакшы чечими - карызга алынган жана кайтарылган объекттердин инвентаризациясын жүргүзө алган жана ошол эле учурда ким жооптуу экенин билүүгө жөндөмдүү акылдуу суурма.

1 -кадам: материалдар

Долбоор үчүн керектүү материал кийинки: 1 x Dragon Board 410c

1 х Sensor Mezzanine 96 Dragon Board 410c үчүн такталар

1 х нан тактасы

1 х MDF (Орто тыгыздык Fiberboard) барагы 61 x 122 см

5 x сенсор CNY 70

1 X TIP31B

1 х электромагнит

1 x 7408

1 х клавиатура

1 x экран

3 x бурама

Каршылыктар (түрдүү)

Жез зымдар

Желим

Бургулоо

2 -кадам: MDFдеги суурманы кесиниз. (Жакшы жыйынтыктар үчүн лазер кескичти колдонуңуз)

MDFдеги суурма үчүн бөлүктөрдү кесип алыңыз. (Жакшы жыйынтыктар үчүн лазер кескичти колдонуңуз)
MDFдеги суурма үчүн бөлүктөрдү кесип алыңыз. (Жакшы жыйынтыктар үчүн лазер кескичти колдонуңуз)

3 -кадам: Эки кичинекей жана чоң тартмасы бар суурманы түзүү үчүн бардык бөлүктөрдү чогуу чаптаңыз

4 -кадам: Ар бир суурманын ортосуна бурамаларды сайыңыз

Бурамаларды ар бир суурманын ортосуна сайыңыз
Бурамаларды ар бир суурманын ортосуна сайыңыз

5 -кадам: Бургулоонун арткы жагындагы суурмадан тешиктерди жасоо менен, тешик сенсордун өлчөмү болушу керек

Бургулоонун арткы жагындагы суурма аркылуу тешиктерди жасоо менен, тешик сенсордун өлчөмү болушу керек
Бургулоонун арткы жагындагы суурма аркылуу тешиктерди жасоо менен, тешик сенсордун өлчөмү болушу керек

6 -кадам: Ар бир сенсор CNY 70ти жез зымдары менен ширеткиле. (4 жолу кайталаңыз)

Ар бир сенсорду CNY 70 жез зымдар менен ширеткиле. (4 жолу кайталаңыз)
Ар бир сенсорду CNY 70 жез зымдар менен ширеткиле. (4 жолу кайталаңыз)

7 -кадам: Сенсор үчүн өзгөчө схема колдонулат

Сенсор үчүн өзгөчө схема колдонулат
Сенсор үчүн өзгөчө схема колдонулат

8 -кадам: Sensor Mezzanine'ди Dragon Board 410c менен туташтырыңыз. (GPIO кирүү үчүн колдонулат)

Sensor Mezzanine'ди Dragon Board 410c менен туташтырыңыз. (GPIO кирүү үчүн колдонулат)
Sensor Mezzanine'ди Dragon Board 410c менен туташтырыңыз. (GPIO кирүү үчүн колдонулат)

Бул кадамды ажыдаар тактайын өчүрүү менен жасоо өтө маанилүү, эгер ал күйбөсө, анда бардык PIN кодду туура коюу керек.

9 -кадам: Районду Breadboardдон Mezzanineге туташтырыңыз

Нан тактасынан Мезанинге схеманы туташтырыңыз
Нан тактасынан Мезанинге схеманы туташтырыңыз
Нан тактасынан Мезанинге схеманы туташтырыңыз
Нан тактасынан Мезанинге схеманы туташтырыңыз
Нан тактасынан Мезанинге схеманы туташтырыңыз
Нан тактасынан Мезанинге схеманы туташтырыңыз
Нан тактасынан Мезанинге схеманы туташтырыңыз
Нан тактасынан Мезанинге схеманы туташтырыңыз

10 -кадам: Кодду жазыңыз же көчүрүңүз

#кошуу #кошуу #кошуу // #кошуу

#"libsoc_gpio.h" кошуу

#кошуу "libsoc_debug.h" #кошуу "libsoc_board.h"

/ * Төмөндөгү бул код бул мисалды бардык 96Boardsте иштетет */

белгисиз int LED_1; // электро иман

unsigned int BUTTON_1; // биринчи сенсор

unsigned int BUTTON_2; // экинчи сенсор unsigned int BUTTON_3; // close unsigned int BUTTON_4; // үчүнчү сенсор

Колдонуучу {

char колдонуучунун аты [20]; char сырсөзү [20]; } Колдонуучу;

маалымат базасы {

char Article_Name [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 YesNo [40];

FILE *pFILE;

char Yes [20] = {"Ооба"};

int running = 1;

_attribute _ ((конструктор)) статикалык боштук _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (конфигурация, "GPIO-A"); // муштум сенсору BUTTON_2 = libsoc_board_gpio_id (конфигурация, "GPIO-C"); // экинчи сенсор BUTTON_3 = libsoc_board_gpio_id (конфигурация, "GPIO-D"); // жабуу стойкасы BUTTON_4 = libsoc_board_gpio_id (конфигурация, "GPIO-B"); // үчүнчү сенсор // BUTTON_5 = libsoc_board_gpio_id (конфигурация, "GPIO-E");

LED_1 = libsoc_board_gpio_id (конфигурация, "GPIO-E"); // электро иман

libsoc_board_free (конфигурация); } / * 96Boardsтин атайын кодунун аягы * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; Колдонуучу Карина; struct User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); struct Database Tool; Strat Database Pen; struct Database Case; strcpy (Tool. Article_Name, "Курал"); struct Database Tool; Strat Database Pen; struct Database Case; strcpy (Tool. Article_Name, "Курал"); 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 (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);

эгер ((libsoc_gpio_get_direction (led_1)! = ЧЫГАРУУ)

|| (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; } sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (button_2); sensor3 = libsoc_gpio_get_level (button_4); sensor1_last_state = сенсор1; sensor2_last_state = сенсор2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Тактада жайгашкан"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Эч качан бул стойкага салынбайт"); } if (sensor2 == 1) {strcpy (Pen. Location, "Тактада жайгашкан"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Эч качан бул стойкага салынбайт"); } if (sensor3 == 1) {strcpy (Case. Location, "Тактада жайгашкан"); } else if (sensor3 == 0) {strcpy (Case. Location, "Эч качан бул стойкага салынбайт"); } (иштеп жатканда) {libsoc_gpio_set_level (led_1, HIGH); printf ("Колдонуучунун атын киргизиңиз:"); scanf ("%s", колдонуучунун аты); printf ("Сураныч, паролду киргизиңиз:"); scanf ("%s", сырсөз); if (strcmp (колдонуучунун аты, "Карина") == 0 && strcmp (сырсөз, "Талер") == 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); sensor2 = libsoc_gpio_get_level (button_2); sensor3 = libsoc_gpio_get_level (button_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, "Тактада жайгашкан"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Тактада жайгашкан"); }

эгер (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Тактада жайгашкан"); }} else if (strcmp (колдонуучунун аты, "Boss") == 0 && strcmp (пароль, "ITESM") == 0) {printf ("Сиз маалымат базасы менен текст файлын түзүүнү каалайсызбы? [Ооба/Жок] "); scanf ("%s", Ооба Жок); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rack's Database ----- / 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 ("apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (button_2); libsoc_gpio_free (button_3); }

11 -кадам: Программаны иштетүү

12 -кадам: Жыйынтыктар

Долбоордун келечеги бар, анткени ал абдан эффективдүү түрдө жакшыра алат, сенсорлор RFIDдин тегдери үчүн өзгөртүлүшү мүмкүн жана ошол эле учурда RFID менен материалга ким жооптуу экенин көзөмөлдөө үчүн ID карттарды колдонсо болот.

Сунушталууда: