Мазмұны:
- 1 -қадам: материалдар
- 2 -қадам: MDF ішіндегі тартпаның бөліктерін кесіңіз. (Жақсы нәтиже алу үшін лазерлік кескішті қолданыңыз)
- 3 -қадам: Екі кішкене тартпасы бар үлкен жәшікті жасау үшін барлық бөліктерді бірге жабыстырыңыз
- 4 -қадам: Бұрандаларды әр тартпаның ортасына бұраңыз
- 5 -қадам: Бұрғымен артқы жағындағы тартпадан тесіктер жасаңыз, тесік сенсордың өлшемі болуы керек
- 6 -қадам: CNY 70 сенсорының барлығын мыс сыммен дәнекерлеңіз. (4 рет қайталаңыз)
- 7 -қадам: Сенсор үшін арнайы схема қолданылады
- 8 -қадам: Сенсорлық мезанинаны Dragon Board 410c -ке қосыңыз. (GPIO -ға кіру үшін қолданылады)
- 9 -қадам: Электр тізбегінен тізбекті мезанинге қосыңыз
- 10 -қадам: кодты жазыңыз немесе көшіріңіз
- 11 -қадам: Бағдарламаны іске қосыңыз
- 12 -қадам: Қорытынды
Бейне: «Ақылды қалалар Hackathon Qualcomm17» инвентарлық тартпа: 13 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Келесі құжатта сіз интеллектуалды тартпаның құрылысы мен бағдарламалау процесін көре аласыз. Бұл тартпа қалалардың сапасын жақсарту мақсатында 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 рет қайталаңыз)
7 -қадам: Сенсор үшін арнайы схема қолданылады
8 -қадам: Сенсорлық мезанинаны Dragon Board 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 көмегімен материалға кім жауапты екенін бақылау үшін жеке куәліктерді пайдалануға болады.
Ұсынылған:
Ақылды үстелдің жарықдиодты шамы - Ақылды жарықтандыру W/ Arduino - Neopixels жұмыс кеңістігі: 10 қадам (суреттермен)
Ақылды үстелдің жарықдиодты шамы | Ақылды жарықтандыру W/ Arduino | Neopixels жұмыс кеңістігі: Қазір біз үйде көп уақыт өткіземіз, виртуалды түрде оқимыз және жұмыс жасаймыз, сондықтан неге Arduino және Ws2812b жарықдиодты жарықдиодты жарықтандыру жүйесімен жұмыс кеңістігін жақсартпау керек. Үстелдің жарықдиодты шамы
SONOFF ақылды қосқыштарымен ақылды роликті жалюзи қалай жасауға болады ?: 14 қадам
SONOFF ақылды қосқыштарымен ақылды роликті қалай жасауға болады?: SONOFF ақылды қосқыштарындағы интерлок режимін қолданыңыз, қарапайым роликті/жалюзиді ақылдыға айналдыру және оны кешке түсіріңіз? Қалай болғанда да, мен
Аппараттық құралдар мен бағдарламалық қамтамасыз ету ақылды құрылғыларды бұзады, Tuya және Broadlink LED шамы, Sonoff, BSD33 ақылды штепселі: 7 қадам
Аппараттық құралдар мен бағдарламалық қамтамасыз ету ақылды құрылғыларды бұзады, Tuya және Broadlink LED шамы, Sonoff, BSD33 ақылды қосқышы: Бұл нұсқаулықта мен өзімнің микробағдарламалық жасақтамамен бірнеше ақылды құрылғыларды қалай жыпылықтағанымды көрсетемін, сондықтан мен оларды Openhab қондырғысы арқылы MQTT арқылы басқара аламын. Әрине, мен оларды бұзған кезде жаңа құрылғылар
Құпия тартпа: 4 қадам
Құпия тартпа: Мені әрқашан құпия бөлмелер немесе жасырын тартпалар қызықтырды. Бэтмен фильмін көргеннен кейін бір күні мен жасырын тартпаны жасауға шешім қабылдадым. Бұл жоба құпия түймесі бар бюсттен тұрады, оны кез келген жерге қоюға болады
Ақылды дабыл: Raspberry Pi көмегімен жасалған ақылды дабыл сағаты: 10 қадам (суреттермен)
Ақылды дабыл: Raspberry Pi көмегімен жасалған ақылды оятқыш: Сіз ақылды сағатты алғыңыз келді ме? Егер солай болса, онда бұл сізге арналған шешім! Мен Smart Alarm Clock жасадым, бұл веб -сайтқа сәйкес дабыл уақытын өзгертуге болатын сағат. Дабыл сөнген кезде дыбыс шығады (дыбыстық сигнал) және 2 жарық қосылады