Isi kandungan:

Laci Inventori "Smart Cities Hackathon Qualcomm17": 13 Langkah
Laci Inventori "Smart Cities Hackathon Qualcomm17": 13 Langkah

Video: Laci Inventori "Smart Cities Hackathon Qualcomm17": 13 Langkah

Video: Laci Inventori
Video: Sustainable Communities Program Smart Cities & Mobility Innovations Call for Applications Webinar 2024, Julai
Anonim
Laci Inventori
Laci Inventori

Dalam dokumen seterusnya, anda dapat melihat proses pembinaan dan pengaturcaraan laci pintar. Laci ini diprogramkan dalam Papan Naga 410c, dengan tujuan meningkatkan kualiti kota. Projek ini adalah sebahagian daripada pertandingan "smart city hackathon Qualcomm 17".

Idea projek ini bermula dengan masalah yang jarang dilihat oleh orang, iaitu pengurusan alat dan bahan yang hilang dan buruk yang disediakan oleh syarikat seperti kilang dan juga hospital. Di tempat-tempat ini, beberapa bahan dan alat disediakan kepada pekerja untuk melakukan aktiviti, bahan dan alat ini mesti digunakan semula kerana harganya mahal atau kekurangan sumber ekonomi untuk menggantikannya.

Di hospital, ada orang yang mengawal bahan yang dikeluarkan, tetapi apabila ada campur tangan manusia ada kesalahan, yang dapat menyebabkan perbelanjaan yang tidak perlu. Penyelesaian terbaik untuk masalah ini adalah laci pintar yang mampu menyimpan inventori objek yang dipinjam dan dikembalikan dan pada masa yang sama mengetahui siapa yang bertanggungjawab.

Langkah 1: Bahan

Bahan yang diperlukan untuk projek ini adalah yang berikut: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Papan untuk Papan Naga 410c

1 x Papan Roti

Lembaran 1 x MDF (Medium Density Fiberboard) 61 x 122 cm

5 x sensor CNY 70

1 X TIP31B

1 x elektromagnet

1 x 7408

1 x Papan Kekunci

1 x skrin

3 x skru

Ketahanan (pelbagai)

Wayar tembaga

Lem

Gerudi

Langkah 2: Potong Potongan untuk Laci di MDF. (Untuk Hasil yang Lebih Baik Gunakan Pemotong Laser)

Potong Potongan untuk Laci di MDF. (Untuk Hasil yang Lebih Baik Gunakan Pemotong Laser)
Potong Potongan untuk Laci di MDF. (Untuk Hasil yang Lebih Baik Gunakan Pemotong Laser)

Langkah 3: Tampal Semua Kepingan Bersama-sama untuk Membentuk Laci Dengan Dua Laci Kecil dan Satu Besar

Langkah 4: Pasang Skru di Tengah Setiap Laci

Skru Skru di Tengah Setiap Laci
Skru Skru di Tengah Setiap Laci

Langkah 5: Dengan Lubang Buat Bor Melalui Laci di Bahagian Belakang, Lubang Mesti Ukuran Sensor

Dengan Lubang Buat Bor Melalui Laci di Bahagian Belakang, Lubang Mesti Ukuran Sensor
Dengan Lubang Buat Bor Melalui Laci di Bahagian Belakang, Lubang Mesti Ukuran Sensor

Langkah 6: Kimpal Setiap Sensor CNY 70 Dengan Wayar Tembaga. (ulangi 4 Kali Lagi)

Kimpal Setiap Sensor CNY 70 Dengan Wayar Tembaga. (ulangi 4 Kali Lagi)
Kimpal Setiap Sensor CNY 70 Dengan Wayar Tembaga. (ulangi 4 Kali Lagi)

Langkah 7: Litar Khusus Digunakan untuk Sensor

Litar Khusus Digunakan untuk Sensor
Litar Khusus Digunakan untuk Sensor

Langkah 8: Sambungkan Sensor Mezzanine ke Dragon Board 410c. (digunakan untuk Mengakses GPIO)

Sambungkan Sensor Mezzanine ke Dragon Board 410c. (digunakan untuk Mengakses GPIO)
Sambungkan Sensor Mezzanine ke Dragon Board 410c. (digunakan untuk Mengakses GPIO)

Sangat penting langkah ini dilakukan dengan mematikan papan naga, jika tidak boleh terbakar, selain itu semua PIN perlu diletakkan dengan betul.

Langkah 9: Sambungkan Litar Dari Breadboard ke Mezzanine

Sambungkan Litar Dari Breadboard ke Mezzanine
Sambungkan Litar Dari Breadboard ke Mezzanine
Sambungkan Litar Dari Breadboard ke Mezzanine
Sambungkan Litar Dari Breadboard ke Mezzanine
Sambungkan Litar Dari Breadboard ke Mezzanine
Sambungkan Litar Dari Breadboard ke Mezzanine
Sambungkan Litar Dari Breadboard ke Mezzanine
Sambungkan Litar Dari Breadboard ke Mezzanine

Langkah 10: Tulis atau Salin Kod

#masuk #masuk #masuk // # sertakan

#sertakan "libsoc_gpio.h"

#include "libsoc_debug.h" #include "libsoc_board.h"

/ * Sedikit kod di bawah ini menjadikan contoh ini berfungsi pada semua 96 Papan * /

LED LED yang tidak ditandatangani; // elektro iman

int BUTTON_1 yang tidak ditandatangani; // sensor pertama

int tidak ditandatangani BUTTON_2; // sensor kedua int tidak bertanda BUTTON_3; // tutup int tidak ditandatangani BUTTON_4; // sensor ketiga

Pengguna struktur {

nama pengguna char [20]; kata laluan char [20]; } Pengguna;

Pangkalan Data struct {

char Article_Name [20]; char Lokasi [20]; }Pangkalan data;

sensor int1;

sensor int2; sensor int3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

nama pengguna char [50];

kata laluan char [50];

char YesNo [40];

FILE * PFILE;

char Ya [20] = {"Ya"};

int running = 1;

_ atribut _ ((konstruktor)) kekosongan statik _init ()

{board_config * config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // penumbuk sensor BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // sensor kedua BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // tutup rak BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // sensor ketiga // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");

LED_1 = libsoc_board_gpio_id (config, "GPIO-E"); // elektro iman

libsoc_board_free (config); } / * Akhir kod khas 96Board * /

int utama ()

{gpio * led_1, * button_1, * button_2, * button_3, * button_4; // int sentuhan; Pengguna Karina struct; Pengurus Pengguna struct; strcpy (Karina. nama pengguna, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); Alat Pangkalan Data struct; Pena Pangkalan Data struct; Kes Pangkalan Data struct; strcpy (Tool. Article_Name, "Alat"); Alat Pangkalan Data struct; Pena Pangkalan Data struct; Kes Pangkalan Data struct; strcpy (Tool. Article_Name, "Alat"); strcpy (Pen. Article_Name, "Pen"); strcpy (Case. Article_Name, "Case"); libsoc_set_debug (0); led_1 = libsoc_gpio_request (LED_1, LS_SHARED); butang_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); butang_2 = libsoc_gpio_request (BUTTON_2, LS_SHARED); butang_3 = libsoc_gpio_request (BUTTON_3, LS_SHARED); butang_4 = libsoc_gpio_request (BUTTON_4, LS_SHARED); // butang_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);

jika ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{goto gagal; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (butang_1, INPUT); libsoc_gpio_set_direction (butang_2, INPUT); libsoc_gpio_set_direction (butang_3, INPUT); libsoc_gpio_set_direction (butang_4, INPUT); // libsoc_gpio_set_direction (butang_5, INPUT);

jika ((libsoc_gpio_get_direction (led_1)! = OUTPUT)

|| (libsoc_gpio_get_direction (butang_1)! = INPUT) || (libsoc_gpio_get_direction (button_2)! = INPUT) || (libsoc_gpio_get_direction (button_3)! = INPUT) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {goto gagal; } sensor1 = libsoc_gpio_get_level (butang_1); sensor2 = libsoc_gpio_get_level (butang_2); sensor3 = libsoc_gpio_get_level (butang_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Terletak di Rak"); } lain jika (sensor1 == 0) {strcpy (Tool. Location, "Tidak pernah diletakkan di Rak ini"); } if (sensor2 == 1) {strcpy (Pen. Lokasi, "Terletak di Rak"); } lain jika (sensor2 == 0) {strcpy (Pen. Lokasi, "Tidak pernah diletakkan di Rak ini"); } if (sensor3 == 1) {strcpy (Case. Location, "Terletak di Rak"); } lain jika (sensor3 == 0) {strcpy (Case. Location, "Tidak pernah diletakkan di Rak ini"); } semasa (berjalan) {libsoc_gpio_set_level (led_1, TINGGI); printf ("Sila masukkan nama pengguna:"); scanf ("% s", nama pengguna); printf ("Sila masukkan kata laluan:"); scanf ("% s", kata laluan); if (strcmp (nama pengguna, "Karina") == 0 && strcmp (kata laluan, "Taller") == 0) {libsoc_gpio_set_level (led_1, RENDAH); libsoc_gpio_set_level (led_1, RENDAH); sementara (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (butang_1); sensor2 = libsoc_gpio_get_level (butang_2); sensor3 = libsoc_gpio_get_level (butang_4); } libsoc_gpio_set_level (led_1, TINGGI); jika (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } lain jika (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Terletak di Rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Lokasi, Karina. nama pengguna); } lain jika (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Lokasi, "Terletak di Rak"); }

jika (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Kes. Lokasi, Karina. nama pengguna); } lain jika (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Terletak di Rak"); }} lain jika (strcmp (nama pengguna, "Bos") == 0 && strcmp (kata laluan, "ITESM") == 0) {printf ("Adakah anda ingin menghasilkan fail teks dengan pangkalan data? [Ya / Tidak] "); scanf ("% s", YaTidak); if ((strcmp (YesNo, Yes) == 0)) {// Pengurus_pengguna (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "% s", "-------- Rack's Database ----- / n"); fprintf (pFILE, "% s", "Nama Artikel:"); fprintf (pFILE, "% s", Tool. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Lokasi Artikel:"); fprintf (pFILE, "% s", Tool. Location); fprintf (pFILE, "% s", "\ n"); fprintf (pFILE, "% s", "Nama Artikel:"); fprintf (pFILE, "% s", Pen. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Lokasi Artikel:"); fprintf (pFILE, "% s", Lokasi Pen.); fprintf (pFILE, "% s", "\ n");

fprintf (pFILE, "% s", "Nama Artikel:");

fprintf (pFILE, "% s", Case. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Lokasi Artikel:"); fprintf (pFILE, "% s", Case. Location); fprintf (pFILE, "% s", "\ n");

fclose (pFILE);

}

printf ("Akses Ditolak / n");

}} gagal: jika (led_1 || butang_1 || butang_2 || butang_3) {printf ("terapkan sumber gpio gagal! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (butang_1); libsoc_gpio_free (butang_2); libsoc_gpio_free (butang_3); }

Langkah 11: Jalankan Program

Langkah 12: Kesimpulan

Projek ini menjanjikan masa depan, kerana dapat diperbaiki dengan cara yang sangat efektif, sensor dapat diubah untuk tag RFID dan pada masa yang sama dengan RFID adalah mungkin untuk menggunakan kad pengenalan untuk memantau siapa yang bertanggung jawab atas bahan tersebut.

Disyorkan: