
İçindekiler:
- Adım 1: Malzemeler
- Adım 2: MDF'deki Çekmece Parçalarını 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
- Adım 5: Matkap Arka Taraftaki Çekmeceden Delikler Açarken Delik Sensörün Boyutunda Olmalıdır
- Adım 6: Her Sensörü CNY 70 Bakır Tellerle Kaynaklayın. (4 Kez Daha fazla tekrarlayın)
- Adım 7: Sensör İçin Özel Bir Devre Kullanılı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)
- Adım 9: Devreyi Breadboard'dan Asma Kat'a Bağlayın
- Adım 10: Kodu Yazın veya Kopyalayın
- Adım 11: Programı çalıştırın
- Adım 12: Sonuçlar
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13

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)

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

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

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

Adım 7: Sensör İçin Özel Bir Devre Kullanılı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)

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




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:
Akıllı Masa LED Işık - Arduino ile Akıllı Aydınlatma - Neopiksel Çalışma Alanı: 10 Adım (Resimlerle)

Akıllı Masa LED Işık | Arduino ile Akıllı Aydınlatma | Neopixels Çalışma Alanı: Artık evde çok fazla zaman geçirdiğimiz, sanal olarak çalıştığımız ve çalıştığımız bir gün, öyleyse neden çalışma alanımızı özel ve akıllı bir aydınlatma sistemi Arduino ve Ws2812b LED'leri ile büyütmeyelim. Burada size Smart'ınızı nasıl oluşturacağınızı gösteriyorum. Masa LED Işık o
Kullanılmayan Akıllı Telefonu Akıllı Ekrana Dönüştürün: 6 Adım (Resimlerle)

Kullanılmayan bir Akıllı Telefonu Akıllı Ekrana Dönüştürün: Deze öğreticisi, Hollanda'da çok iyi. Kullanılmayan (eski) bir akıllı telefonunuz var mı? Bu kolay adım adım öğreticiyi izleyerek Google E-Tablolar ve biraz kağıt kalem kullanarak akıllı bir ekrana dönüştürün. Bitirdiğinizde
SONOFF Akıllı Anahtarlarla Akıllı Stor Perdeler Nasıl Kendin Yapılır?: 14 Adım

SONOFF Akıllı Anahtarlarla Akıllı Stor Perde Kendin Yap Nasıl Yapılır?: Sıradan stor perdelerinizi/panjurlarınızı akıllı hale getirmek için SONOFF akıllı anahtarlarında Kilitleme Modundan yararlanın Çoğunuz bunun sabahları storları/panjurları çekmenizin bir angarya olduğunu kabul edecek mi? ve akşam aşağı çekmek? Her neyse, ben
Entegre Envanter Yönetim Sistemi: 10 Adım (Resimlerle)

Entegre Envanter Yönetim Sistemi: Kilerimdeki her şeyi takip etmenin her zaman uygun fiyatlı bir yolunu istedim, bu yüzden birkaç ay önce tam da bunu yapacak bir proje üzerinde çalışmaya başladım. Amaç, kullanımı çok kolay olan basit, uygun fiyatlı bir sistem yapmaktı
Envanter - Hızlı Bilgisayar Tanılaması Artık Yerini Aldı, Aşağıya Bakın: 6 Adım

Envanter - Hızlı Bilgisayar Teşhisi Artık Yerini Aldı, Aşağıya Bakın: Önünüzde olmayan bir bilgisayarda çalışmanız gerekirse, doğru bir envantere ihtiyacınız var. Bu talimat, tamamen bir meslektaşının bir bilgisayar için sürücü bulmakta zorlanması nedeniyle ortaya çıktı. Aida32 kişisel kullanacağım http://majorgeeks.com