- Gerekli Bileşenler
- APDS9960 RGB ve Hareket Sensörü
- Devre şeması
- Kod Açıklama
- Hareket Kontrollü Dokunmadan Kaldırmanın Test Edilmesi
Corona salgınının yaşandığı bu dönemde asansörler herkesin aynı düğmelere dokunduğu yüksek riskli bir yer haline geldi. Pek çok yerde insanlar, kaldırma düğmelerine basmak için pompa kağıdı, kürdan veya sıhhi mendil kullanmak gibi asansör düğmeleriyle teması önlemek için püf noktaları keşfettiler.
Bu nedenle, Otomatik dezenfektan makinesi, temassız sıcaklık izleme ve Sosyal mesafe dedektörü gibi önceki Corona güvenlik projelerimizin devamında, burada Arduino Nano'yu kullanarak Hareket kontrollü bir Asansör prototipi oluşturacağız.
Bu Temassız Asansör Arduino Nano, bir APDS9960 Hareket Sensörü ve bir OLED ekran modülü kullanıyor. Hareket tabanlı bu kontrol paneli ile bir el hareketi yaparak asansörünüzü kolayca kontrol edebilirsiniz. APDS9960 Sensörü, hareketleri okumak için kullanılır. YUKARI ve AŞAĞI hareketleri kat numarasını ayarlamak için kullanılır, sol hareket asansör kapısını kapatmak ve kat numarasına göre asansörü hareket ettirmek ve kapıyı açmak için Sağ hareket kullanılır.
Gerekli Bileşenler
- Arduino Nano
- OLED Ekran Modülü
- APDS9960 RGB ve Hareket Sensörü
- Breadboard
- Atlama Telleri
APDS9960 RGB ve Hareket Sensörü
APDS9960 RGB ve Hareket Algılama Modülü, yerleşik bir APDS-9960 sensörü, UV ve IR engelleme filtreleri, farklı yönlere duyarlı dört ayrı diyot ve I2C uyumlu bir arayüzle birlikte gelen küçük bir ara panodur. Bu sensör, ortam ışığı ve renk ölçümü, yakınlık algılama ve dokunmasız hareket algılama için kullanılabilir. 10 ila 20 cm hareket algılama aralığına sahiptir ve bir mikrodenetleyiciyi, robotu ve diğer birçok projeyi kontrol etmek için kullanılabilir.
Özellikleri:
- Çalışma Gerilimi: 2.4V - 3.6V
- Çalışma Aralığı: 4-8in (10-20cm).
- I2C Arayüzü (I2C Adresi: 0x39).
- Ortam Işığı ve RGB Renk Algılama, Yakınlık
- Optik Modülde Algılama ve Hareket Algılama
- 400 kHz'e kadar Veri Hızlarıyla I2C-bus Hızlı Mod Uyumlu Arayüz.
Devre şeması
APDS9960 kullanan Temassız Asansör için Devre Şeması aşağıda verilmiştir.
Arduino Nano’yu APDS9960 Sensörü ve OLED Ekran ile arayüz oluşturuyoruz. Hem APDS9960 Sensörün hem de OLED Ekranın VCC ve GND pinleri Arduino'nun 3.3V ve GND'sine bağlanır. APDS9960 Sensör ve OLED Ekranın SCL ve SDA pinleri ise sırasıyla Arduino'nun A5 ve A4 pinlerine bağlanır.
OLED ve APDS9960 Pimi |
Arduino Nano Pimi |
VCC |
3.3v |
GND |
GND |
SCL |
A5 |
SDA |
A4 |
Arduino kullanan Hareket kontrollü Asansör için tam kurulum şu şekilde görünecektir:
OLED ekran ve diğer mikro denetleyicilerle arabirimi hakkında daha fazla bilgi edinmek için bağlantıyı takip edin.
Kod Açıklama
APDS9960 kullanan Temassız Asansör için tam kod sayfanın sonunda verilmiştir. Burada kodun bazı önemli kısımlarını açıklıyoruz. Bu programda APDS9960 ve Adafruit_SH1106 kütüphanelerini kullanacağız. APDS9960 kitaplığı, Arduino IDE'den indirilebilir. Kitaplığı indirmek için Sketch> Library Manager> Search'e gidin ve ardından Arduino APDS9960'ı girin . İken Adafruit_SH1106 kütüphane buradan indirilebilir.
Her zamanki gibi gerekli tüm kitaplıkları ekleyerek kodu başlatın. Adafruit_SH1106.h , orijinal Adafruit kütüphanesinin değiştirilmiş sürümüdür.
#Dahil etmek
Sonraki satırlarda, kullanıcının gitmek istediği mevcut katı ve kat numarasını depolamak için değişkenleri tanımlayın.
int floornum = 0; int geçerlifloor = 0;
Bundan sonra, YUKARI Ok, Aşağı Ok, Kapıyı Aç ve Kapıyı Kapat resimleri için bit eşlemlerini girin. Bir görüntünün HEX kodu, Image2cpp gibi bir dönüştürücü kullanılarak oluşturulabilir. Image2cpp'nin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için bu Arduino QR kod üreteci eğitimini izleyin.
const imzasız char up PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, …………………………… ………………………………………………………..}; const işaretsiz karakter azaltma PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, …………………………… ………………………………………………………..}; const unsigned char dooropen PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xe0,, ………………………… …………………………………………………………..};
İçinde setup () işlevi hata ayıklama amacıyla 9600 baud hızı ile seri Monitör başlat. Ardından sonraki satırlarda OLED ekranı ve APDS9960 sensörünü aşağıdaki gibi begin () yöntemiyle başlatın:
Serial.begin (9600); if (! APDS.begin ()) {Serial.println ("APDS9960 sensörünü başlatma hatası!"); } Serial.println ("Hareketler algılanıyor…"); display.begin (SH1106_SWITCHCAPVCC, 0x3C);
Ekranı ve sensörü başlattıktan sonra, ekran arabelleğini clearDisplay () yöntemiyle temizleyin ve display.setTextSize () ve display.setTextColor () yöntemlerini kullanarak yazı tipi boyutunu ve rengini ayarlayın.
display.setTextSize (2); display.setTextColor (BEYAZ); display.clearDisplay (); display.display ();
Boş döngü () içinde , herhangi bir hareket yapılıp yapılmadığını sürekli kontrol edin. Evet ise, hareket değerlerini okuyun ve hangi hareketin (YUKARI, AŞAĞI, SAĞ, SOL) olduğunu kontrol edin ve ilgili okumayı seri monitörde yazdırın. YUKARI ve AŞAĞI hareketleri, kullanıcının gitmek istediği kat numarasını ayarlamak için kullanılır. Sol hareket, kapıyı açmak için Sağ hareket kullanılırken asansör kapısını kapatmak ve asansörü kat numarasına göre hareket ettirmektir.
eğer (APDS.gestureAvailable ()) {int jest = APDS.readGesture (); switch (hareket) {case GESTURE_UP: Serial.println ("Detected UP hareketi"); display.clearDisplay (); floornum ++; ev1(); kırmak; case GESTURE_DOWN: Serial.println ("DOWN hareketi algılandı"); display.clearDisplay (); floornum -; ev1(); kırmak; case GESTURE_LEFT: Serial.println ("Detected SOL hareket"); display.clearDisplay (); Başlat(); kırmak; case GESTURE_RIGHT: Serial.println ("Algılanan SAĞ hareket"); display.clearDisplay (); ev1(); kırmak; varsayılan: ara; }
Home1 () fonksiyonu bir asansör için eve görüntü çizmek için kullanılır. Bu bir Yukarı ok, aşağı ok, Kapıyı Aç, Kapıyı Kapat işaretleri ve mevcut kat numarasından oluşur. drawBitmap () işlevi, görüntüleri OLED ekranına çizmek için kullanılır. DrawBitmap () işlevinin sözdizimi aşağıda verilmiştir:
drawBitmap (int16_t x, int16_t y, bitmap, int16_t w, int16_t h, renk);
Nerede:
int16_t x, int16_t y OLED ekranın X ve Y koordinatlarıdır
bitmap, bitmapin adıdır
int16_t w, int16_t h görüntünün yüksekliği ve ağırlığıdır.
void home1 () {display.setCursor (101,23); display.println (floornum); display.drawBitmap (23, 0, uparrow, 40, 18, WHITE); display.drawBitmap (26, 46, downarrow, 40, 18, WHITE); display.drawBitmap (0, 15, kapı açık, 29, 30, BEYAZ); display.drawBitmap (60, 15, kapalı kapı, 29, 30, BEYAZ); display.display (); }
Start () işlevi, yukarı ya da aşağı asansör hareket ettirmek için kullanılır. Bunun için mevcut kat numarası, kullanıcının gitmek istediği kat numarası ile karşılaştırılır. Kat numarası mevcut kat numarasından büyükse. asansör yukarı doğru hareket edecek ve kat numarası mevcut kat no. daha sonra asansör aşağı doğru hareket edecektir. Asansör hem mevcut kat no. ve kat no. aynıdır.
void start () {while (floornum> currentfloor) {Serial.println ("UP gidiyor"); currentfloor ++; display.drawBitmap (0, 0, yukarı, 100, 64, BEYAZ); display.setCursor (101,23); display.println (currentfloor); display.display (); display.clearDisplay (); gecikme (2000); } while (floornum <currentfloor) {Serial.println ("Aşağı gidiyor"); currentfloor--; display.drawBitmap (0, 0, aşağı, 100, 64, BEYAZ); display.setCursor (101,23); display.println (currentfloor); display.display (); display.clearDisplay (); gecikme (2000); } if (floornum == currentfloor) {Serial.println ("Ulaşıldı"); display.clearDisplay (); ev1(); Serial.print (currentfloor); }}
Hareket Kontrollü Dokunmadan Kaldırmanın Test Edilmesi
Donanım ve kod hazır olduğunda, Arduino Nano yu dizüstü bilgisayara bağlayın ve aşağıda verilen kodun tamamını yükleyin. Gördüğünüz gibi, OLED varsayılan olarak Asansör Kullanıcı Arayüzünü gösterecektir.
Şimdi, gitmek istediğiniz zemini ayarlamak için aşağıdaki videoda gösterildiği gibi elinizi yukarı veya aşağı sallayın. Ardından, asansörün o kata gitmesini onaylamak için sol hareketi yapın. Asansörü durdurmak istiyorsanız, elinizle doğru hareketi yapın.
Bu proje için tam çalışma videosu ve kodu aşağıda verilmiştir. Umarım bu projeyi oluşturmaktan zevk almışsınızdır. Bu proje ile ilgili herhangi bir sorunuz varsa, lütfen yorum bölümüne bırakın.