Агуулгын хүснэгт:

Бараа материалын шургуулга "Ухаалаг хотууд Hackathon Qualcomm17": 13 алхам
Бараа материалын шургуулга "Ухаалаг хотууд Hackathon Qualcomm17": 13 алхам

Видео: Бараа материалын шургуулга "Ухаалаг хотууд Hackathon Qualcomm17": 13 алхам

Видео: Бараа материалын шургуулга
Видео: Голодная рысь попросила у людей молока для своего РЫСЕНКА, спустя время ХИЩНИЦА вернулась... 2024, Долдугаар сарын
Anonim
Бараа материалын шургуулга
Бараа материалын шургуулга

Дараагийн баримт бичигт та ухаалаг шүүгээний бүтэц, програмчлалын явцыг харж болно. Энэхүү шүүгээ нь хотын чанарыг сайжруулах зорилгоор Dragon Board 410c програмчлагдсан байв. Энэхүү төсөл нь "Qualcomm 17 ухаалаг хотуудын hackathon" уралдааны нэг хэсэг юм.

Энэхүү төслийн санаа нь маш цөөхөн хүн хардаг асуудлаас эхэлсэн бөгөөд энэ нь үйлдвэр, тэр байтугай эмнэлэг гэх мэт компаниудын өгдөг багаж хэрэгсэл, материалын алдагдсан, муу менежмент юм. Эдгээр газруудад ажилчдад үйл ажиллагаа явуулахын тулд зарим материал, багаж хэрэгслийг өгдөг бөгөөд энэ материал, багаж хэрэгслийг үнэтэй эсвэл солих эдийн засгийн нөөц хомс байдаг тул дахин ашиглах ёстой.

Эмнэлэгт зайлуулж буй материалыг хяналтандаа авдаг хүмүүс байдаг боловч хүний оролцоотой байхад алдаа гардаг бөгөөд энэ нь шаардлагагүй зардал гаргахад хүргэдэг. Энэ асуудлыг шийдэх хамгийн сайн шийдэл бол зээлсэн, буцааж авсан объектуудын тооллогыг хөтлөх чадвартай, мөн хариуцлагыг хэн хүлээхээ мэдэх чадвартай ухаалаг шүүгээ юм.

Алхам 1: Материал

Төсөлд шаардлагатай материал бол дараахь зүйл юм: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Dragon Board 410c самбар

1 х талхны самбар

1 x БСХС (дунд нягтралтай шилэн хавтан) хуудас 61 x 122 см

5 x CNY 70 мэдрэгч

1 X TIP31B

1 х цахилгаан соронз

1 x 7408

1 x гар

1 x дэлгэц

3 х шураг

Эсэргүүцэл (төрөл бүрийн)

Зэс утас

Цавуу

Өрөмдлөг

Алхам 2: БСХС -ийн шүүгээнд зориулсан хэсгүүдийг хайчилж ав. (Илүү сайн үр дүнд хүрэхийн тулд лазер таслагч ашиглана уу)

БСХС -ийн шүүгээнд зориулсан хэсгүүдийг хайчилж ав. (Илүү сайн үр дүнд хүрэхийн тулд лазер таслагч ашиглана уу)
БСХС -ийн шүүгээнд зориулсан хэсгүүдийг хайчилж ав. (Илүү сайн үр дүнд хүрэхийн тулд лазер таслагч ашиглана уу)

Алхам 3: Хоёр ширхэг жижиг шүүгээ, том хэмжээтэй шургуулга үүсгэхийн тулд бүх хэсгүүдийг хооронд нь наа

Алхам 4: шургуулга бүрийн дунд боолтыг шургуул

Шургуулга бүрийн дунд боолтыг шургуул
Шургуулга бүрийн дунд боолтыг шургуул

Алхам 5: Өрөмдлөгийн арын хэсэгт шургуулганд нүх гаргавал нүх нь мэдрэгчийн хэмжээтэй байх ёстой

Өрөм нь арын шүүгээгээр нүх гаргадаг тул нүх нь мэдрэгчийн хэмжээтэй байх ёстой
Өрөм нь арын шүүгээгээр нүх гаргадаг тул нүх нь мэдрэгчийн хэмжээтэй байх ёстой

Алхам 6: CNY 70 мэдрэгч бүрийг зэс утсаар гагнана. (4 удаа давтах)

Мэдрэгч бүр CNY 70 -ийг зэс утсаар гагнана. (4 удаа давтах)
Мэдрэгч бүр CNY 70 -ийг зэс утсаар гагнана. (4 удаа давтах)

Алхам 7: Мэдрэгчийн хувьд тусгай хэлхээг ашигладаг

Мэдрэгчийн хувьд тусгай хэлхээг ашигладаг
Мэдрэгчийн хувьд тусгай хэлхээг ашигладаг

Алхам 8: Мэдрэгч мезаниныг Dragon Board 410c -т холбоно уу. (GPIO руу нэвтрэхэд ашигладаг)

Мэдрэгч мезаниныг Dragon Board 410c -т холбоно уу. (GPIO руу нэвтрэхэд ашигладаг)
Мэдрэгч мезаниныг Dragon Board 410c -т холбоно уу. (GPIO руу нэвтрэхэд ашигладаг)

Энэ алхамыг луугийн самбарыг унтраасан тохиолдолд хийх нь маш чухал бөгөөд хэрэв энэ нь шатахгүй бол бүх ПИН кодыг зөв байрлуулах шаардлагатай болно.

Алхам 9: Цахилгаан самбарыг Mezzanine руу холбоно уу

Breadboard -аас Mezzanine руу хэлхээг холбоно уу
Breadboard -аас Mezzanine руу хэлхээг холбоно уу
Breadboard -аас Mezzanine руу хэлхээг холбоно уу
Breadboard -аас Mezzanine руу хэлхээг холбоно уу
Breadboard -аас Mezzanine руу хэлхээг холбоно уу
Breadboard -аас Mezzanine руу хэлхээг холбоно уу
Breadboard -аас Mezzanine руу хэлхээг холбоно уу
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; // хаагдаагүй тэмдэггүй 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 ТиймҮгүй [40];

FILE *pFILE;

char Тийм [20] = {"Тийм"};

int ажиллаж байгаа = 1;

_attribute _ ((байгуулагч)) статик void _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, "Өндөр босоо"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); өгөгдлийн сангийн бүтэц; өгөгдлийн сангийн үзэг; өгөгдлийн сангийн бүтэц; strcpy (Tool. Article_Name, "Tool"); өгөгдлийн сангийн бүтэц; өгөгдлийн сангийн үзэг; өгөгдлийн сангийн бүтэц; strcpy (Tool. Article_Name, "Tool"); 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);

if ((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 (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)! = 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)) {амжилтгүй болсон; } 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 = мэдрэгч3; if (sensor1 == 1) {strcpy (Tool. Location, "Rack дээр байрладаг"); } if if (sensor1 == 0) {strcpy (Tool. Location, "Энэ тавиур дээр хэзээ ч тавиагүй"); } if (sensor2 == 1) {strcpy (Pen. Location, "Rack дээр байрладаг"); } if if (sensor2 == 0) {strcpy (Pen. Location, "Энэ тавиур дээр хэзээ ч байрлуулаагүй"); } if (sensor3 == 1) {strcpy (Case. Location, "Rack дээр байрладаг"); } if 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); } if if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Rack дээр байрладаг"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } if if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Rack дээр байрладаг"); }

хэрэв (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location, Karina.username); } if if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Rack дээр байрладаг"); }} 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-ийн мэдээллийн сан ----- / 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");

}} амжилтгүй болсон: хэрэв (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 -ийн тусламжтайгаар тухайн материалыг хариуцаж буй этгээдийг хянахын тулд иргэний үнэмлэх ашиглах боломжтой юм.

Зөвлөмж болгож буй: