![Инвентардык суурма "Акылдуу шаарлар Hackathon Qualcomm17": 13 кадам Инвентардык суурма "Акылдуу шаарлар Hackathon Qualcomm17": 13 кадам](https://i.howwhatproduce.com/images/010/image-29383-j.webp)
Мазмуну:
- 1 -кадам: материалдар
- 2 -кадам: MDFдеги суурманы кесиниз. (Жакшы жыйынтыктар үчүн лазер кескичти колдонуңуз)
- 3 -кадам: Эки кичинекей жана чоң тартмасы бар суурманы түзүү үчүн бардык бөлүктөрдү чогуу чаптаңыз
- 4 -кадам: Ар бир суурманын ортосуна бурамаларды сайыңыз
- 5 -кадам: Бургулоонун арткы жагындагы суурмадан тешиктерди жасоо менен, тешик сенсордун өлчөмү болушу керек
- 6 -кадам: Ар бир сенсор CNY 70ти жез зымдары менен ширеткиле. (4 жолу кайталаңыз)
- 7 -кадам: Сенсор үчүн өзгөчө схема колдонулат
- 8 -кадам: Sensor Mezzanine'ди Dragon Board 410c менен туташтырыңыз. (GPIO кирүү үчүн колдонулат)
- 9 -кадам: Районду Breadboardдон Mezzanineге туташтырыңыз
- 10 -кадам: Кодду жазыңыз же көчүрүңүз
- 11 -кадам: Программаны иштетүү
- 12 -кадам: Жыйынтыктар
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:51
![Инвентардык суурма Инвентардык суурма](https://i.howwhatproduce.com/images/010/image-29383-1-j.webp)
Кийинки документте сиз акылдуу суурманы куруу жана программалоо процессин көрө аласыз. Бул суурма шаарлардын сапатын жакшыртуу максатында 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деги суурма үчүн бөлүктөрдү кесип алыңыз. (Жакшы жыйынтыктар үчүн лазер кескичти колдонуңуз)](https://i.howwhatproduce.com/images/010/image-29383-2-j.webp)
3 -кадам: Эки кичинекей жана чоң тартмасы бар суурманы түзүү үчүн бардык бөлүктөрдү чогуу чаптаңыз
4 -кадам: Ар бир суурманын ортосуна бурамаларды сайыңыз
![Бурамаларды ар бир суурманын ортосуна сайыңыз Бурамаларды ар бир суурманын ортосуна сайыңыз](https://i.howwhatproduce.com/images/010/image-29383-3-j.webp)
5 -кадам: Бургулоонун арткы жагындагы суурмадан тешиктерди жасоо менен, тешик сенсордун өлчөмү болушу керек
![Бургулоонун арткы жагындагы суурма аркылуу тешиктерди жасоо менен, тешик сенсордун өлчөмү болушу керек Бургулоонун арткы жагындагы суурма аркылуу тешиктерди жасоо менен, тешик сенсордун өлчөмү болушу керек](https://i.howwhatproduce.com/images/010/image-29383-4-j.webp)
6 -кадам: Ар бир сенсор CNY 70ти жез зымдары менен ширеткиле. (4 жолу кайталаңыз)
![Ар бир сенсорду CNY 70 жез зымдар менен ширеткиле. (4 жолу кайталаңыз) Ар бир сенсорду CNY 70 жез зымдар менен ширеткиле. (4 жолу кайталаңыз)](https://i.howwhatproduce.com/images/010/image-29383-5-j.webp)
7 -кадам: Сенсор үчүн өзгөчө схема колдонулат
![Сенсор үчүн өзгөчө схема колдонулат Сенсор үчүн өзгөчө схема колдонулат](https://i.howwhatproduce.com/images/010/image-29383-6-j.webp)
8 -кадам: Sensor Mezzanine'ди Dragon Board 410c менен туташтырыңыз. (GPIO кирүү үчүн колдонулат)
![Sensor Mezzanine'ди Dragon Board 410c менен туташтырыңыз. (GPIO кирүү үчүн колдонулат) Sensor Mezzanine'ди Dragon Board 410c менен туташтырыңыз. (GPIO кирүү үчүн колдонулат)](https://i.howwhatproduce.com/images/010/image-29383-7-j.webp)
Бул кадамды ажыдаар тактайын өчүрүү менен жасоо өтө маанилүү, эгер ал күйбөсө, анда бардык PIN кодду туура коюу керек.
9 -кадам: Районду Breadboardдон Mezzanineге туташтырыңыз
![Нан тактасынан Мезанинге схеманы туташтырыңыз Нан тактасынан Мезанинге схеманы туташтырыңыз](https://i.howwhatproduce.com/images/010/image-29383-8-j.webp)
![Нан тактасынан Мезанинге схеманы туташтырыңыз Нан тактасынан Мезанинге схеманы туташтырыңыз](https://i.howwhatproduce.com/images/010/image-29383-9-j.webp)
![Нан тактасынан Мезанинге схеманы туташтырыңыз Нан тактасынан Мезанинге схеманы туташтырыңыз](https://i.howwhatproduce.com/images/010/image-29383-10-j.webp)
![Нан тактасынан Мезанинге схеманы туташтырыңыз Нан тактасынан Мезанинге схеманы туташтырыңыз](https://i.howwhatproduce.com/images/010/image-29383-11-j.webp)
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 карттарды колдонсо болот.
Сунушталууда:
SONOFF акылдуу өчүргүчтөрү менен DIY акылдуу ролик жалюзи кантип жасалат ?: 14 кадам
![SONOFF акылдуу өчүргүчтөрү менен DIY акылдуу ролик жалюзи кантип жасалат ?: 14 кадам SONOFF акылдуу өчүргүчтөрү менен DIY акылдуу ролик жалюзи кантип жасалат ?: 14 кадам](https://i.howwhatproduce.com/images/005/image-14096-j.webp)
SONOFF акылдуу өчүргүчтөрү менен кантип DIY акылдуу ролик жалюзи? жана аны кечинде түшүрөсүзбү? Кандай болбосун, мен
Күн энергиясы менен иштеген "Акылдуу" WiFi башкарган сугат системасы: 6 кадам (Сүрөттөр менен)
![Күн энергиясы менен иштеген "Акылдуу" WiFi башкарган сугат системасы: 6 кадам (Сүрөттөр менен) Күн энергиясы менен иштеген "Акылдуу" WiFi башкарган сугат системасы: 6 кадам (Сүрөттөр менен)](https://i.howwhatproduce.com/images/006/image-16198-j.webp)
Күн менен иштөөчү "Акылдуу" WiFi башкарылуучу сугат системасы: Бул долбоор eBayден келген стандарттык DIY күн жана 12v бөлүктөрүн, Shelly IoT түзмөктөрүн жана openHABтын кээ бир негизги программалоолорун колдонуп, үйдө, толугу менен күндөн иштейт, акылдуу бакчанын электр тармагын жана ирригациясын колдонот. орнотуу.Системанын өзгөчөлүктөрү: Fu
Акылдуу ойготкуч саат: Raspberry Pi менен жасалган акылдуу ойготкуч саат: 10 кадам (сүрөттөр менен)
![Акылдуу ойготкуч саат: Raspberry Pi менен жасалган акылдуу ойготкуч саат: 10 кадам (сүрөттөр менен) Акылдуу ойготкуч саат: Raspberry Pi менен жасалган акылдуу ойготкуч саат: 10 кадам (сүрөттөр менен)](https://i.howwhatproduce.com/images/007/image-19330-j.webp)
Smart Alarm Clock: Raspberry Pi менен жасалган акылдуу ойготкуч: Сиз качандыр бир убакта акылдуу саатты кааладыңыз беле? Андай болсо, бул сиз үчүн чечим! Мен Smart Alarm Clock жасадым, бул веб -сайтка ылайык ойготкуч убактысын өзгөртө турган саат. Ойготкуч өчкөндө, үн чыгат (зумбул) жана 2 жарык күйөт
Акылдуу үйүңүздү акылдуу түрдө коргоңуз: 14 кадам
![Акылдуу үйүңүздү акылдуу түрдө коргоңуз: 14 кадам Акылдуу үйүңүздү акылдуу түрдө коргоңуз: 14 кадам](https://i.howwhatproduce.com/images/006/image-16410-20-j.webp)
Акылдуу үйүңүздү Smartly Secure: Мен коопсуз жана коопсуз конкурс үчүн күрөшүп жатам. Эгерде сизге менин көрсөтмөм жакса, ага добуш бериңиз! Мен сизге үйүңүздү жана анын айлана -чөйрөсүн кантип оңой жана арзан коргоону көрсөтөм. Конфигурациялоо
Жашыруун бөлүк Мини суурма: 5 кадам
![Жашыруун бөлүк Мини суурма: 5 кадам Жашыруун бөлүк Мини суурма: 5 кадам](https://i.howwhatproduce.com/images/002/image-4009-55-j.webp)
Жашыруун Бөлмө Мини Тартмагы: Бул үйрөткүч мен кантип жашыруун бөлмө менен тартма шкаф жасаганымды көрсөтөт