İçindekiler:

Envanter Çekmecesi "Akıllı Şehirler Hackathon Qualcomm17": 13 Adım
Envanter Çekmecesi "Akıllı Şehirler Hackathon Qualcomm17": 13 Adım

Video: Envanter Çekmecesi "Akıllı Şehirler Hackathon Qualcomm17": 13 Adım

Video: Envanter Çekmecesi
Video: AKILLI ŞEHİRLERDE CBS UYGULAMA 2024, Temmuz
Anonim
Envanter Çekmecesi
Envanter Çekmecesi

Bir sonraki belgede akıllı çekmecenin yapım ve programlanma sürecini görebilirsiniz. Bu çekmece, şehirlerin kalitesini artırmak amacıyla Dragon Board 410c'de programlanmıştır. Proje, “akıllı şehirler hackathon Qualcomm 17” yarışmasının bir parçasıdır.

Bu projenin fikri, çok az insanın gördüğü, fabrikalar ve hatta hastaneler gibi şirketler tarafından sağlanan alet ve malzemelerin kayıp ve kötü yönetimi olan bir sorunla başladı. Bu yerlerde, işçilere faaliyetleri yapmaları için bazı malzeme ve araçlar sağlanır, bu malzeme ve araçlar pahalı olduklarından veya yerini alacak ekonomik kaynakların bulunmadığından yeniden kullanılmalıdır.

Hastanelerde kaldırılan malzemelerin kontrolünü eline alan kişiler var ama insan müdahalesi olduğunda hata oluyor ve bu da gereksiz harcamalara yol açabiliyor. Bu soruna en iyi çözüm, ödünç alınan ve iade edilen nesnelerin envanterini tutabilen ve aynı zamanda kimin sorumlu olduğunu bilen akıllı bir çekmecedir.

Adım 1: Malzemeler

Proje için gereken malzeme bir sonraki: 1 x Dragon Board 410c

Dragon Board 410c için 1 x Sensör Ara Kat 96 Panoları

1 x Ekmek Tahtası

1 x MDF (Orta Yoğunluklu Sunta) levha 61 x 122 cm

5 x sensör CNY 70

1 X TIP31B

1 x elektromıknatıs

1x7408

1 x Klavye

1 x ekran

3 x vida

Dirençler (çeşit)

Bakır teller

Zamk

Delmek

Adım 2: MDF'deki Çekmece Parçalarını Kesin. (Daha İyi Sonuçlar İçin Bir Lazer Kesici Kullanın)

MDF'de Çekmece İçin Parçaları Kesin. (Daha İyi Sonuçlar İçin Bir Lazer Kesici Kullanın)
MDF'de Çekmece İçin Parçaları Kesin. (Daha İyi Sonuçlar İçin Bir Lazer Kesici Kullanın)

Adım 3: İki Küçük Çekmeceli ve Büyük Bir Çekmeceli Bir Çekmece Oluşturmak için Tüm Parçaları Bir Araya Yapıştırın

Adım 4: Her Çekmecenin Ortasındaki Vidaları Vidalayın

Vidaları Her Çekmecenin Ortasına Vidalayın
Vidaları Her Çekmecenin Ortasına Vidalayın

Adım 5: Matkap Arka Taraftaki Çekmeceden Delikler Açarken Delik Sensörün Boyutunda Olmalıdır

Matkap Arka Taraftaki Çekmeceden Delik Açarken Delik Sensör Boyutunda Olmalıdır
Matkap Arka Taraftaki Çekmeceden Delik Açarken Delik Sensör Boyutunda Olmalıdır

Adım 6: Her Sensörü CNY 70 Bakır Tellerle Kaynaklayın. (4 Kez Daha fazla tekrarlayın)

Her Sensörü CNY 70 Bakır Tellerle Kaynaklayın. (4 kez daha tekrarlayın)
Her Sensörü CNY 70 Bakır Tellerle Kaynaklayın. (4 kez daha tekrarlayın)

Adım 7: Sensör İçin Özel Bir Devre Kullanılır

Sensör İçin Özel Devre Kullanılmıştır
Sensör İçin Özel Devre Kullanılmıştır

Adım 8: Sensör Ara Katını Dragon Board 410c'ye bağlayın. (GPIO'ya Erişmek için kullanılır)

Sensör Ara Katını Dragon Board 410c'ye bağlayın. (GPIO'ya Erişmek için kullanılır)
Sensör Ara Katını Dragon Board 410c'ye bağlayın. (GPIO'ya Erişmek için kullanılır)

Bu adımın ejderha tahtası kapalıyken yapılması çok önemlidir, aksi takdirde yanabilir, ayrıca tüm PIN'lerin doğru yerleştirilmesi gerekir.

Adım 9: Devreyi Breadboard'dan Asma Kat'a Bağlayın

Devreyi Breadboard'dan Asma Kat'a Bağlayın
Devreyi Breadboard'dan Asma Kat'a Bağlayın
Devreyi Breadboard'dan Asma Kat'a Bağlayın
Devreyi Breadboard'dan Asma Kat'a Bağlayın
Devreyi Breadboard'dan Asma Kat'a Bağlayın
Devreyi Breadboard'dan Asma Kat'a Bağlayın
Devreyi Breadboard'dan Asma Kat'a Bağlayın
Devreyi Breadboard'dan Asma Kat'a Bağlayın

Adım 10: Kodu Yazın veya Kopyalayın

#include #include #include //#include

#include "libsoc_gpio.h"

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

/* Aşağıdaki kod parçası, bu örneğin tüm 96Board'larda çalışmasını sağlar */

imzasız int LED_1; // elektro iman

unsigned int BUTTON_1;//ilk sensör

unsigned int BUTTON_2;//ikinci sensör unsigned int BUTTON_3;// kapat unsigned int BUTTON_4;//üçüncü sensör

yapı Kullanıcısı{

char kullanıcı adı[20]; karakter şifresi[20]; }Kullanıcı;

yapı Veritabanı{

char Makale_Adı[20]; karakter Konumu[20]; }Veri tabanı;

int sensör1;

int sensör2; int sensör3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

karakter kullanıcı adı[50];

karakter şifresi[50];

char EvetHayır[40];

DOSYA *pFILE;

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

int koşu = 1;

_attribute_((yapıcı)) statik boşluk _init()

{ board_config *config = libsoc_board_init(); BUTTON_1 = libsoc_board_gpio_id(config, "GPIO-A");//fists sensörü BUTTON_2 = libsoc_board_gpio_id(config, "GPIO-C");// ikinci sensör BUTTON_3 = libsoc_board_gpio_id(config, "GPIO-D"); // rafı kapat BUTTON_4 = libsoc_board_gpio_id(config, "GPIO-B"); // üçüncü sensör // BUTTON_5 = libsoc_board_gpio_id(config, "GPIO-E");

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

libsoc_board_free(yapılandırma); } /* 96Boards özel kodunun sonu */

int ana()

{ gpio *led_1, *button_1, *button_2, *button_3, *button_4; //int dokunma; yapı Kullanıcı Karina; struct Kullanıcı Yöneticisi; strcpy(Karina.kullanıcıadı, "Karina Valverde"); strcpy(Karina.password, "Daha Uzun Dikey"); strcpy(Yönetici.kullanıcıadı, "Patron"); strcpy(Yönetici.şifre, "ITESM"); struct Veritabanı Aracı; struct Veritabanı Kalemi; yapı Veritabanı Örneği; strcpy(Araç. Makale_Adı, "Araç"); struct Veritabanı Aracı; struct Veritabanı Kalemi; yapı Veritabanı Örneği; strcpy(Araç. Makale_Adı, "Araç"); strcpy(Kalem. Makale_Adı, "Kalem"); strcpy(Vaka. Makale_Adı, "Vaka"); 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))

{ başarısız ol; } 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) != ÇIKTI)

|| (libsoc_gpio_get_direction(button_1) != GİRİŞ) || (libsoc_gpio_get_direction(button_2) != GİRİŞ) || (libsoc_gpio_get_direction(button_3) != GİRİŞ) || (libsoc_gpio_get_direction(button_4) != GİRİŞ)) { hataya git; } 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(Tool. Location, "Rafta Bulunur"); } else if (sensor1 == 0){ strcpy(Tool. Location, "Bu Rafa Asla Yerleştirilmemiştir"); } if (sensor2 ==1){ strcpy(Pen. Location, "Rafta Bulunur"); } else if (sensor2 == 0){ strcpy(Pen. Location, "Bu Rafa Asla Yerleştirilmemiştir"); } if (sensor3 ==1){ strcpy(Case. Location, "Rafta Bulunur"); } else if (sensor3 == 0){ strcpy(Case. Location, "Bu Rafa Asla Yerleştirilmemiştir"); } while(çalışıyor) { libsoc_gpio_set_level(led_1, YÜKSEK); printf("Lütfen kullanıcı adını giriniz: "); scanf("%s", kullanıcı adı); printf("Lütfen şifreyi giriniz: "); scanf("%s", şifre); if (strcmp(kullanıcı adı, "Karina") == 0 && strcmp(şifre, "Uzun") == 0){ libsoc_gpio_set_level(led_1, DÜŞÜK); libsoc_gpio_set_level(led_1, DÜŞÜK); 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, YÜKSEK); if (sensor1 == 1 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, Karina.username); }else if (sensor1 == 0 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, "Rafta Yerleştirildi"); } if (sensor2 == 1 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, Karina.username); }else if (sensor2 == 0 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, "Rafta Yerleştirildi"); }

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

strcpy(Case. Location, Karina.username); }else if (sensor3 == 0 && sensor3 != sensor3_last_state){ strcpy(Case. Location, "Rafta Yerleştirildi"); } }else if (strcmp(kullanıcı adı, "Boss") == 0 && strcmp(parola, "ITESM") == 0){ printf(" Veritabanı ile bir metin dosyası oluşturmak istiyor musunuz? [Evet/Hayır] "); scanf("%s", EvetHayır); if ((strcmp(EvetHayır, Evet) == 0))){ //Manager_user(pFILE); pFILE = fopen("Veritabanı.txt", "w"); fprintf(pFILE, "%s", "-------Rack'in Veritabanı ----- \n"); fprintf(pFILE, "%s", "Makalenin Adı:"); fprintf(pFILE, "%s", Araç. Makale_Adı); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Makalenin Konumu:"); fprintf(pFILE, "%s", Araç. Konum); fprintf(pFILE, "%s", "\n"); fprintf(pFILE, "%s", "Makalenin Adı:"); fprintf(pFILE, "%s", Kalem. Makale_Adı); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Makalenin Konumu:"); fprintf(pFILE, "%s", Kalem. Konum); fprintf(pFILE, "%s", "\n");

fprintf(pFILE, "%s", "Makale Adı:");

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

fclose(pFILE);

}

printf("Erişim Engellendi\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); }

Adım 11: Programı çalıştırın

Adım 12: Sonuçlar

Proje gelecek vaat ediyor, çünkü çok etkili bir şekilde gelişebilir, sensörler RFID´S etiketleri için değiştirilebilir ve aynı zamanda RFID ile malzemeden kimin sorumlu olduğunu izlemek için kimlik kartları kullanmak mümkündür.

Önerilen: