Мазмұны:

«Ақылды қалалар Hackathon Qualcomm17» инвентарлық тартпа: 13 қадам
«Ақылды қалалар Hackathon Qualcomm17» инвентарлық тартпа: 13 қадам

Бейне: «Ақылды қалалар Hackathon Qualcomm17» инвентарлық тартпа: 13 қадам

Бейне: «Ақылды қалалар Hackathon Qualcomm17» инвентарлық тартпа: 13 қадам
Бейне: Қазақстандағы «ақылды қалалар» 2024, Қараша
Anonim
Түгендеу тартпасы
Түгендеу тартпасы

Келесі құжатта сіз интеллектуалды тартпаның құрылысы мен бағдарламалау процесін көре аласыз. Бұл тартпа қалалардың сапасын жақсарту мақсатында Dragon Board 410c бағдарламаланған. Жоба «ақылды қалалар Qualcomm 17 хакатоны» байқауының бөлігі болып табылады.

Бұл жобаның идеясы өте аз адамдар көретін проблемадан басталды, бұл зауыттар мен тіпті ауруханалар сияқты компаниялар беретін құралдар мен материалдардың жоғалуы мен нашар басқарылуы. Бұл жерлерде жұмысшыларға кейбір материалдар мен құралдар беріледі, бұл материалдар мен құралдарды қайта пайдалану қажет, себебі олар қымбат немесе оларды алмастыратын экономикалық ресурстар жоқ.

Ауруханаларда шығарылатын материалдарды бақылауға алатын адамдар бар, бірақ адамның араласуы кезінде қате болады, бұл қажетсіз шығындарға әкелуі мүмкін. Бұл мәселені шешудің ең жақсы шешімі - бұл қарызға алынған және қайтарылған объектілердің түгендеуін жүргізуге қабілетті және сонымен бірге кім жауапты екенін білуге қабілетті интеллектуалды тартпа.

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

Жобаға қажетті материал келесі: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Dragon Board 410c тақтасы

1 x Нан тақтасы

1 x MDF (орташа тығыздықтағы талшық тақтасы) парағы 61 x 122 см

5 x CNY 70 сенсоры

1 X TIP31B

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

1 x 7408

1 x пернетақта

1 x экран

3 x бұрандалар

Қарсылық (әртүрлілік)

Мыс сымдары

Желім

Бұрғылау

2 -қадам: MDF ішіндегі тартпаның бөліктерін кесіңіз. (Жақсы нәтиже алу үшін лазерлік кескішті қолданыңыз)

МДФ ішіндегі тартпаның бөліктерін кесіңіз. (Жақсы нәтиже алу үшін лазерлік кескішті қолданыңыз)
МДФ ішіндегі тартпаның бөліктерін кесіңіз. (Жақсы нәтиже алу үшін лазерлік кескішті қолданыңыз)

3 -қадам: Екі кішкене тартпасы бар үлкен жәшікті жасау үшін барлық бөліктерді бірге жабыстырыңыз

4 -қадам: Бұрандаларды әр тартпаның ортасына бұраңыз

Бұрандаларды әр тартпаның ортасына бұраңыз
Бұрандаларды әр тартпаның ортасына бұраңыз

5 -қадам: Бұрғымен артқы жағындағы тартпадан тесіктер жасаңыз, тесік сенсордың өлшемі болуы керек

Бұрғымен артқы жағындағы тартпадан тесіктер жасаңыз, тесік сенсордың өлшемі болуы керек
Бұрғымен артқы жағындағы тартпадан тесіктер жасаңыз, тесік сенсордың өлшемі болуы керек

6 -қадам: CNY 70 сенсорының барлығын мыс сыммен дәнекерлеңіз. (4 рет қайталаңыз)

Әрбір датчикті CNY 70 мыс сымдармен дәнекерлеңіз. (4 рет қайталаңыз)
Әрбір датчикті CNY 70 мыс сымдармен дәнекерлеңіз. (4 рет қайталаңыз)

7 -қадам: Сенсор үшін арнайы схема қолданылады

Сенсор үшін арнайы схема қолданылады
Сенсор үшін арнайы схема қолданылады

8 -қадам: Сенсорлық мезанинаны Dragon Board 410c -ке қосыңыз. (GPIO -ға кіру үшін қолданылады)

Сенсорлық мезанинаны 410c айдаһар тақтасына қосыңыз. (GPIO -ға кіру үшін қолданылады)
Сенсорлық мезанинаны 410c айдаһар тақтасына қосыңыз. (GPIO -ға кіру үшін қолданылады)

Бұл қадамды айдаһар тақтасы өшірулі күйде жасау өте маңызды, егер ол күйіп кетпесе, сонымен қатар барлық PIN кодын дұрыс орналастыру қажет.

9 -қадам: Электр тізбегінен тізбекті мезанинге қосыңыз

Электр тізбегін Месзанинге жалғаңыз
Электр тізбегін Месзанинге жалғаңыз
Нан тақтасынан мезанинге тізбекті қосыңыз
Нан тақтасынан мезанинге тізбекті қосыңыз
Нан тақтасынан мезанинге тізбекті қосыңыз
Нан тақтасынан мезанинге тізбекті қосыңыз
Нан тақтасынан мезанинге тізбекті қосыңыз
Нан тақтасынан мезанинге тізбекті қосыңыз

10 -қадам: кодты жазыңыз немесе көшіріңіз

#қосу #қосу #қосу // #қосу

#«libsoc_gpio.h» қосыңыз

#қосу «libsoc_debug.h» #қосу «libsoc_board.h»

/ * Төмендегі кодтың бір бөлігі бұл мысалды барлық 96Boards жүйесінде жұмыс жасайды */

қол қойылмаған int LED_1; // электро иман

unsigned int BUTTON_1; // бірінші сенсор

unsigned int BUTTON_2; // екінші сенсор белгісіз int BUTTON_3; // жабылмаған белгісіз int BUTTON_4; // үшінші сенсор

құрылымды пайдаланушы {

char пайдаланушы аты [20]; char құпия сөзі [20]; } Пайдаланушы;

құрылым дерекқоры {

char Article_Name [20]; char Орналасқан жері [20]; }Дерекқор;

int сенсоры 1;

int сенсор2; int сенсор3;

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 жүгіру = 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; құрылымды пайдаланушы Карина; Пайдаланушы менеджері құрылымы; strcpy (Karina.username, «Karina Valverde»); strcpy (Karina.password, «Taller Vertical»); strcpy (Manager.username, «Босс»); strcpy (Manager.password, «ITESM»); мәліметтер базасының құралы; мәліметтер қорының қаламы; мәліметтер қорының құрылымы; strcpy (Tool. Article_Name, «Құрал»); мәліметтер базасының құралы; мәліметтер қорының қаламы; мәліметтер қорының құрылымы; strcpy (Tool. Article_Name, «Құрал»); strcpy (Pen. Article_Name, «Қалам»); 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))

{сәтсіздікке ұшырау; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (түйме_2, КІРІС); 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)! = OUTPUT)

|| (libsoc_gpio_get_direction (button_1)! = КІРІС) || (libsoc_gpio_get_direction (button_2)! = INPUT) || (libsoc_gpio_get_direction (button_3)! = INPUT) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {сәтсіз аяқталды; } сенсор1 = libsoc_gpio_get_level (button_1); сенсор2 = libsoc_gpio_get_level (түйме_2); sensor3 = libsoc_gpio_get_level (түйме_4); sensor1_last_state = сенсор1; sensor2_last_state = сенсор2; sensor3_last_state = сенсор3; 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); сенсор2 = libsoc_gpio_get_level (түйме_2); sensor3 = libsoc_gpio_get_level (түйме_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 (пайдаланушы аты, «Босс») == 0 && strcmp (пароль, «ITESM») == 0) {printf («Мәліметтер қорымен мәтіндік файл жасағыңыз келе ме? [Иә/Жоқ] «); scanf («%s», YesNo); 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»);

}} сәтсіздік: 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 (түйме_2); libsoc_gpio_free (түйме_3); }

11 -қадам: Бағдарламаны іске қосыңыз

12 -қадам: Қорытынды

Жобаның болашағы зор, өйткені ол өте тиімді түрде жақсарады, сенсорларды RFID тегтері үшін өзгертуге болады, сонымен бірге RFID көмегімен материалға кім жауапты екенін бақылау үшін жеке куәліктерді пайдалануға болады.

Ұсынылған: