Daftar Isi:
- Langkah 1: Bahan
- Langkah 2: Potong Potongan untuk Laci di MDF. (Untuk Hasil Lebih Baik Gunakan Pemotong Laser)
- Langkah 3: Tempel Semua Potongan Bersama untuk Membentuk Laci Dengan Dua Laci Kecil dan Satu Laci Besar
- Langkah 4: Pasang Sekrup di Tengah Setiap Laci
- Langkah 5: Dengan Bor Buat Lubang Melalui Laci di Sisi Belakang, Lubang Harus Seukuran Sensor
- Langkah 6: Las Setiap Sensor CNY 70 Dengan Kabel Tembaga. (ulangi 4 Kali Lebih Banyak)
- Langkah 7: Sirkuit Utama Digunakan untuk Sensor
- Langkah 8: Hubungkan Sensor Mezzanine ke Dragon Board 410c. (digunakan untuk Mengakses GPIO)
- Langkah 9: Hubungkan Sirkuit Dari Breadboard ke Mezzanine
- Langkah 10: Tulis atau Salin Kode
- Langkah 11: Jalankan Program
- Langkah 12: Kesimpulan
Video: Laci Inventaris "Smart Cities Hackathon Qualcomm17": 13 Langkah
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Dalam dokumen berikutnya, Anda dapat melihat proses konstruksi dan pemrograman laci cerdas. Laci ini diprogram dalam Dragon Board 410c, dengan tujuan untuk meningkatkan kualitas kota. Proyek ini merupakan bagian dari kontes "kota pintar hackathon Qualcomm 17".
Ide proyek ini berawal dari masalah yang jarang dilihat orang, yaitu hilang dan rusaknya pengelolaan alat dan bahan yang disediakan oleh perusahaan seperti pabrik bahkan rumah sakit. Di tempat-tempat ini, beberapa bahan dan alat disediakan untuk para pekerja untuk melakukan aktivitas, bahan dan alat ini harus digunakan kembali karena harganya mahal atau kurangnya sumber daya ekonomi untuk menggantinya.
Di rumah sakit, ada orang yang mengendalikan bahan yang dikeluarkan, tetapi ketika ada campur tangan manusia, ada kesalahan, yang dapat menyebabkan pengeluaran yang tidak perlu. Solusi terbaik untuk masalah ini adalah laci cerdas yang mampu menjaga inventaris barang-barang yang dipinjam dan dikembalikan dan sekaligus tahu siapa yang bertanggung jawab.
Langkah 1: Bahan
Bahan yang dibutuhkan untuk proyek ini adalah: 1 x Dragon Board 410c
1 x Sensor Mezzanine 96 Papan untuk Papan Naga 410c
1 x papan tempat memotong roti
1 x lembar MDF (Medium Density Fiberboard) 61 x 122 cm
5 x sensor CNY 70
1 X TIP31B
1 x elektromagnet
1x7408
1 x Papan Ketik
1 x layar
3 x sekrup
Resistensi (berbagai)
Kabel tembaga
Lem
Mengebor
Langkah 2: Potong Potongan untuk Laci di MDF. (Untuk Hasil Lebih Baik Gunakan Pemotong Laser)
Langkah 3: Tempel Semua Potongan Bersama untuk Membentuk Laci Dengan Dua Laci Kecil dan Satu Laci Besar
Langkah 4: Pasang Sekrup di Tengah Setiap Laci
Langkah 5: Dengan Bor Buat Lubang Melalui Laci di Sisi Belakang, Lubang Harus Seukuran Sensor
Langkah 6: Las Setiap Sensor CNY 70 Dengan Kabel Tembaga. (ulangi 4 Kali Lebih Banyak)
Langkah 7: Sirkuit Utama Digunakan untuk Sensor
Langkah 8: Hubungkan Sensor Mezzanine ke Dragon Board 410c. (digunakan untuk Mengakses GPIO)
Sangat penting bahwa langkah ini dilakukan dengan papan naga mati, jika tidak bisa terbakar, selain itu semua PIN harus ditempatkan dengan benar.
Langkah 9: Hubungkan Sirkuit Dari Breadboard ke Mezzanine
Langkah 10: Tulis atau Salin Kode
#sertakan #sertakan #sertakan //#sertakan
#sertakan "libsoc_gpio.h"
#sertakan "libsoc_debug.h" #sertakan "libsoc_board.h"
/* Sedikit kode di bawah ini membuat contoh ini berfungsi di semua 96Boards */
unsigned int LED_1; // elektro iman
unsigned int BUTTON_1;//sensor pertama
unsigned int BUTTON_2;//sensor kedua unsigned int BUTTON_3;// tutup unsigned int BUTTON_4;//sensor ketiga
struct Pengguna{
char nama pengguna[20]; kata sandi karakter[20]; }Pengguna;
struct Database{
char Article_Name[20]; lokasi karakter[20]; }Basis data;
int sensor1;
int sensor2; int sensor3;
int sensor1_last_state;
int sensor2_last_state; int sensor3_last_state;
nama pengguna karakter[50];
kata sandi karakter[50];
char YaTidak[40];
FILE *pFILE;
char Ya[20] = {"Ya"};
int berjalan = 1;
_attribute_((konstruktor)) static void _init()
{ board_config *config = libsoc_board_init(); BUTTON_1 = libsoc_board_gpio_id(config, "GPIO-A");//sensor tinju 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 dari kode khusus 96Boards */
int utama()
{ gpio *led_1, *button_1, *button_2, *button_3, *button_4; //int sentuh; struct Pengguna Karina; struct Manajer Pengguna; strcpy(Karina.namapengguna, "Karina Valverde"); strcpy(Karina.password, "Vertikal Lebih Tinggi"); strcpy(Manager.namapengguna, "Bos"); strcpy(Manager.kata sandi, "ITESM"); struct Alat Basis Data; struct Pena Basis Data; struct Kasus Basis Data; strcpy(Alat. Nama_Artikel, "Alat"); struct Alat Basis Data; struct Pena Basis Data; struct Kasus Basis Data; strcpy(Alat. Nama_Artikel, "Alat"); strcpy(Nama_Pena. Artikel, "Pena"); strcpy(Kasus. Nama_Artikel, "Kasus"); 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))
{ gagal; } 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);
if((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)) { gagal; } sensor1 = libsoc_gpio_get_level(button_1); sensor2 = libsoc_gpio_get_level(button_2); sensor3 = libsoc_gpio_get_level(button_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 ==1){ strcpy(Alat. Lokasi, "Terletak di Rak"); } else if (sensor1 == 0){ strcpy(Tool. Location, "Jangan pernah ditempatkan di Rak ini"); } if (sensor2 ==1){ strcpy(Pen. Location, "Terletak di Rak"); } else if (sensor2 == 0){ strcpy(Pen. Location, "Jangan pernah ditempatkan di Rak ini"); } if (sensor3 ==1){ strcpy(Kasus. Lokasi, "Terletak di Rak"); } else if (sensor3 == 0){ strcpy(Case. Location, "Jangan pernah ditempatkan di Rak ini"); } while(berjalan) { libsoc_gpio_set_level(led_1, TINGGI); printf("Silahkan masukkan nama pengguna: "); scanf("%s", nama pengguna); printf("Silahkan masukkan password: "); scanf("%s", kata sandi); if (strcmp(nama pengguna, "Karina") == 0 && strcmp(sandi, "Lebih Tinggi") == 0){ libsoc_gpio_set_level(led_1, RENDAH); libsoc_gpio_set_level(led_1, RENDAH); 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, TINGGI); if (sensor1 == 1 && sensor1 != sensor1_last_state){ strcpy(Alat. Lokasi, Karina.namapengguna); }else if (sensor1 == 0 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, "Terletak di Rak"); } if (sensor2 == 1 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, Karina.username); }else if (sensor2 == 0 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, "Terletak di Rak"); }
if (sensor3 == 1 && sensor3 != sensor3_last_state){
strcpy(Kasus. Lokasi, Karina.namapengguna); }else if (sensor3 == 0 && sensor3 != sensor3_last_state){ strcpy(Case. Location, "Terletak di Rak"); } }else if (strcmp(username, "Boss") == 0 && strcmp(password, "ITESM") == 0){ printf(" Apakah Anda ingin membuat file teks dengan database? [Ya/Tidak] "); scanf("%s", YaTidak); if ((strcmp(YaTidak, Ya) == 0)){ //Manager_user(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", Alat. Lokasi); fprintf(pFILE, "%s", "\n"); fprintf(pFILE, "%s", "Nama Artikel:"); fprintf(pFILE, "%s", Nama_Pena. Artikel); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Lokasi Artikel:"); fprintf(pFILE, "%s", Pena. Location); 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", Kasus. Lokasi); fprintf(pFILE, "%s", "\n");
fclose(pFILE);
}
printf("Akses Ditolak\n");
} } gagal: if(led_1 || button_1|| button_2|| button_3) { printf("terapkan sumber daya gpio gagal!\n"); libsoc_gpio_free(led_1); libsoc_gpio_free(button_1); libsoc_gpio_free(button_2); libsoc_gpio_free(button_3); }
Langkah 11: Jalankan Program
Langkah 12: Kesimpulan
Proyek ini memiliki masa depan yang menjanjikan, karena dapat ditingkatkan dengan cara yang sangat efektif, sensor dapat diubah untuk tag RFID´S dan pada saat yang sama dengan RFID dimungkinkan untuk menggunakan kartu ID untuk memantau siapa yang bertanggung jawab atas materi tersebut.