İçindekiler:
- Adım 1: Her Şey Nasıl Çalışır: Tasarım Seçenekleri Açıklandı
- Adım 2: Parçalar - Beyinler: Mikrodenetleyici ve Ekran
- 3. Adım: Parçalar - Optik: Bir Uzlaşma Bulma
- Adım 4: Parçalar - Hepsini Tutacak Bir Kap
- Adım 5: Modülümüz için bir Protokol Oluşturma
- Adım 6: Kod: ESP32 Tarafı
- 7. Adım: Kod: Android Tarafı
- Adım 8: Sırada Ne Var?
- Adım 9: Sonuç ve Özel Teşekkürler
Video: Akıllı Motosiklet HUD Prototipi (adım adım Navigasyon ve Çok Daha Fazlası): 9 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Selam !
Bu Instructables, motosiklet kasklarına monte edilmek üzere tasarlanmış bir HUD (Heads-Up Display) platformunu nasıl tasarladığımın ve inşa ettiğimin hikayesidir. "Haritalar" yarışması bağlamında yazılmıştır. Ne yazık ki, bu projeyi yarışmanın son teslim tarihine kadar zamanında tamamlayamadım, ancak yine de ilerlememi paylaşmak ve bunu yaparken elde ettiğim tüm deneme yanılmaları belgelemek istedim.
Bu proje fikri aklıma ilk olarak birkaç yıl önce, motosikletlere başladığımda geldi ve sürüşlerimi daha keyifli hale getirmek için hangi teçhizatı almam gerektiğini araştırmaya başladım. O zamanlar, sürüş sırasında bazı temel GPS navigasyonu almanın en iyi yolunun akıllı telefonunuzu temelde bisikletinizin gidonuna takmak olduğu beni şaşırttı. Kendi kendime, bu tür bilgileri anında almanın kesinlikle daha iyi bir yolu olabileceğini düşündüm.
İşte o zaman aklıma geldi: Bir baş üstü ekran, sürüş sırasında telefonunuzun pilini boşaltmadan ve onu elementlere maruz bırakmadan navigasyon almanın yolu olabilir.
Zamanla, bu fikir aklımda olgunlaştı ve her zaman önümde bir HUD bulundurmanın basit navigasyondan çok daha fazla kullanıma izin vereceğini düşündüm. Bu yüzden planım platformu herkese açık ve modüler hale getirmek, böylece herkes ihtiyaç duyduğu bilgileri kendi HUD'larında görüntüleyen bir modül oluşturabilir.
Bu görevi yerine getiren ticari olarak temin edilebilen ürünler olmasına rağmen, benim platformum kadar modüler ürünler yoktur ve ayrıca biraz pahalı olma eğilimindedirler. Her neyse, bu projeye hoş geldiniz.
Şu an ne işe yarıyor
Belirtildiği gibi, bu proje hala geliştirme aşamasındadır ve şu anda çalışmakta olan da budur.
- Bir akıllı telefon ve bir ESP32 tabanlı kart arasındaki iletişim (telefon uyanık)
- Optik tasarım tamamlandı (uzun vadede küçük ayarlamalar gerekebilir)
- Mapbox navigasyon SDK'sını kullanan Android navigasyon uygulaması:
- Kullanıcının bir harita üzerindeki konumunu ve ayrıca ondan hedefe giden bir rotayı hesaplayabilme ve gösterebilme
- Bir Bluetooth cihazına bağlanabilme özelliği (cihazın MAC adresi şu anda sabit kodlanmıştır)
- Seri Bluetooth aracılığıyla yaklaşan manevra bilgilerinin çıkarılması ve gönderilmesi de dahil olmak üzere gerçek zamanlı navigasyon özelliği (şimdilik yalnızca dönüşleri destekler)
Ne işe ihtiyacı var
Bu liste, HUD'nin kullanım amacı için kesinlikle gerekli olan ancak henüz uygulanmaya hazır olmayan öğeleri içerir.
- Genel tasarım (Kask eki, reflektörün açı ayar mekanizması,..)
- Android uygulaması:
- Rota dışı algılama ve düzeltmeyi uygulayın
- Kullanıcının hedef adresi girmesi için yeteneği
- Ara noktalar?
- Ergonomi / Estetik
Gereçler:
Temeller
- esp32 tabanlı bir geliştirme kurulu
- Herhangi bir yeni android akıllı telefon (Bluetooth etkin)
- Bir SSD1306 veya diğer etkinleştirilmiş 96" OLED ekran (benimki 128x64 pikseldi, bkz. "Beyinler: Mikrodenetleyici ve Ekran" bölümü)
- Bir reflektör (herhangi bir akrilik/cam/pleksiglas parçası yapacaktır)
- Bir Fresnel lens (benimkinin F. uzunluğu yaklaşık 13 cm idi, bkz. "Lens seçimi" bölümü)
Aletler
- Havya
- Ekmek tahtası
- Birkaç atlama kablosu
- 3d yazıcı / 3d baskı hizmeti
Adım 1: Her Şey Nasıl Çalışır: Tasarım Seçenekleri Açıklandı
Heads Up Display'in temel fikri, birinin görüşünün önünde bir görüntü sergilemektir, böylece yaptıkları her şeye (uçak pilotluğu ya da motosiklet sürme, bizim işimiz olacak olan) gözlerini kaçırmalarına gerek kalmaz. örnek olay).
Optik
Teknik olarak, bu, kullanıcının gözlerinin önüne bir ekran koyarak doğrudan gerçekleştirilebilir. Ancak, bir ekran şeffaf değildir ve bu nedenle kullanıcının görüşünü engeller. Ardından ekranı yansıtıcı bir yüzeyin önüne yerleştirebilirsiniz; bu, ekranın içeriğini yansıtırken aynı zamanda kullanıcının önünde ne olduğunu görebileceği kadar şeffaftır.
Bununla birlikte, bu yaklaşımın büyük bir kusuru vardır: gerçek ekran genellikle kullanıcının gözlerine, kullanıcının gerçekten odaklanması gerekenden daha yakındır (örneğin, önündeki yol). Bu, yansıtıcı yüzeyde ne olduğunu okumak için kullanıcının gözlerinin ekranın gözlerine olan mesafesine (diyelim ki 20 cm) uyum sağlaması ve ardından öndeki yola odaklanmak için tekrar uyum sağlaması gerektiği anlamına gelir. (~2/5 metre). Tüm bu işlemin aldığı zaman, yola bakmak için harcanması gereken değerli bir zamandır ve sık sık uyum sağlamak, yalnızca birkaç dakika sonra kullanıcı için rahatsız edici olabilir.
Bu yüzden ekran ile reflektör arasına bir lens eklemeye karar verdim. Bu lens, dikkatli bir şekilde seçilirse, ekranın sanal bir görüntüsünün (yukarıdaki şemaya bakınız) oluşturulmasına izin vermelidir, bu daha sonra kullanıcının gözlerinden gerçekte olduğu gibi daha uzakta görünecek ve böylece daha az ani uyarlamalar (veya hiçbiri, mükemmel bir senaryoda). Bu tasarım, kullanıcının reflektöre hızlı bir şekilde bakmasına, ihtiyaç duyduğu bilgileri almasına ve anında tekrar yola bakmasına olanak tanır.
Akıllı telefonun rolü
Bütün bir navigasyon uygulamasını tek başına ESP32 üzerinde denemek ve uygulamak gerçekçi olmadığı için, bununla ilgilenecek bir android uygulaması yapmaya karar verdim. Uygulamanın daha sonra ESP32'ye kullanıcının hedefine ulaşmak için ne yapması gerektiğini söylemesi gerekir ve ESP32 bu bilgiyi HUD aracılığıyla iletir ("Modül nasıl çalışır" şekline bakın).
Adım 2: Parçalar - Beyinler: Mikrodenetleyici ve Ekran
Yukarıda belirtildiği gibi, modülümün gerçek konumlandırma, izleme ve gerçek zamanlı navigasyonu hesaplamasını sağlamadan navigasyon bilgilerini görüntülemesini planladım. kullanıcının telefonu bunun yerine modülle iletişim kuracak ve daha sonra HUD'da görüntülenecek bilgileri gönderecektir.
Kullanıcının telefonu ile modül arasındaki iletişimi kolaylaştırmak için bu proje için ESP32 tabanlı bir kart kullanmayı seçtim. Bu seçim, entegre Bluetooth özelliklerine sahip bu özel modülün yanı sıra birkaç başka ilginç özellikten (kullanımı kolay Uçucu Olmayan Depolama, çift çekirdekli CPU, OLED ekranı gerçekten I2C aracılığıyla sürmek için yeterli RAM, …) nedeniyle oldu. Dikkate aldığım ESP32'ye dayalı PCB tasarlamak nispeten basittir. Ayrıca, seçimimi kesinlikle etkileyen ESP32 ile devreleri kullanma ve tasarlama konusunda profesyonel deneyimim var.
Ekran seçimi temel olarak, mümkün olduğunca küçük olmakla birlikte, y kullanımınız için yeterince parlak olacağını bulabildiğim her şeye geldi. Amacım çok minimalist ve basit bir kullanıcı arayüzüne sahip olmak olduğu için ekranın piksel sayısı konusunda çok endişeli değildim.
Ekran sürücüsünün, görüntü yansıtmaya izin veren bir kitaplık tarafından desteklenmesi gerektiğine dikkat edilmelidir. Bunun nedeni, görüntülenen görüntünün lensten geçtiğinde ters çevrilmesi ve reflektörde görünmesi ve görüntülenenleri manuel olarak tersine çevirmek zorunda kalmamak, inşaatçılar olarak omuzlarımızdan büyük bir yüktür.
3. Adım: Parçalar - Optik: Bir Uzlaşma Bulma
Bu projeye ilk başladığımda ne aradığım hakkında hiçbir fikrim olmadığı için bu projenin optiklerine yaklaşmak oldukça zordu. Biraz araştırmadan sonra, yapmak istediğimin OLED ekranımın gerçekte olduğundan daha uzakta görünen bir "sanal görüntüsünü" oluşturmak olduğunu anladım. Bu sanal görüntünün oluşması için ideal mesafe, sürücünün yaklaşık 2-5 metre önünde olacaktır ve bu, sürüş sırasında odaklandığımız nesnelere (diğer arabalar, yoldaki tümsekler vb.)).
Bu amaca ulaşmak için bir Fresnel lens kullanmayı seçtim, çünkü bunlar oldukça büyük, ucuz, projem için yeterince iyi bir odak uzaklığı sunuyor gibi görünüyorlar ve basit makasla kesilebiliyorlar (ki durum böyle değil). daha rafine yuvarlak şekilli cam lensler). Fresnel lensler, görme bozukluğu olan kişilerin okumalarına yardımcı olmak için çok uygun oldukları için "cep büyüteci" veya "okuma kartı büyüteci" gibi isimler bulunabilir.
Temel olarak, buradaki hile, aşağıdakiler arasında doğru uzlaşmayı bulmakla ilgiliydi:
- Makul bir sanal görüntü mesafesine sahip olmak (yani, HUD'nin kullanıcıya ne kadar uzak görüneceği veya kullanıcının HUD'da ne olduğunu görmek için gözlerini ne kadar uzağa ayarlaması gerektiği)
- Ekrandaki metnin mercek tarafından çok büyütülmemesi (temelde bir büyüteçtir)
- OLED ekran ile lens arasında, aksi takdirde çok hacimli bir modüle yol açabilecek makul bir mesafeye sahip olmak
Ben şahsen amazon'dan birkaç farklı lens sipariş ettim ve F. uzunluğu yaklaşık 13 cm olan birini seçmeden önce ilgili odak uzunluklarını belirledim. OLED-Lens mesafesi 9cm olan bu F.uzunluğunun reflektörümde bana tatmin edici bir görüntü verdiğini buldum (yukarıdaki son birkaç resme bakın).
Çizimlerimde göreceğiniz gibi, görüntülenen metne düzgün bir şekilde odaklanabilmek için, bu resimleri çeken kamera, uzaktaki bir nesneye odaklanıyormuş gibi ayarlamalıdır, bu da reflektörle aynı düzlemdeki her şeyin bulanık görünmesine neden olur.. HUD'umuz için tam olarak istediğimiz şey bu.
Lens tutucu için 3d dosyaları burada bulabilirsiniz.
Adım 4: Parçalar - Hepsini Tutacak Bir Kap
Bu Talimatları yazarken, baş üstü ekranın her parçasını tutacak gerçek kap tam olarak tasarlanmamıştır. Bununla birlikte, genel şekli ve belirli sorunlara nasıl yaklaşılacağı hakkında birkaç fikrim var (bir reflektörün nasıl sabit tutulacağı ve 100+ km/s rüzgara dayanması gibi). Bu hala çok fazla devam eden bir çalışma.
Adım 5: Modülümüz için bir Protokol Oluşturma
Navigasyon talimatlarını telefondan geliştirme panosuna göndermek için, gerekli verileri telefondan kolayca göndermeme ve alındıktan sonra işlenmesini kolaylaştırmama izin verecek kendi iletişim protokolümü bulmam gerekiyordu.
Bu Talimatları yazarken, modülle gezinmek için telefondan iletilmesi gereken bilgiler şunlardı:
- Yaklaşan manevranın türü (basit dönüş, döner kavşak, başka bir yola birleşme, …)
- Yaklaşan manevranın kesin talimatları (manevra türüne bağlı olarak: bir dönüş için sağ/sol; bir döner kavşak için hangi çıkış, …)
- Yaklaşan manevradan önce kalan mesafe (şimdilik metre cinsinden)
Bu verileri aşağıdaki çerçeve yapısını kullanarak düzenlemeye karar verdim:
:tip.talimatlar, mesafe;
Bu güzel bir çözüm olmasa da, ESP32 tarafında kodlamayı kolaylaştıran protokolümüzün her alanını kolayca ayırmamızı ve ayırt etmemizi sağlar.
Gelecekteki özellikler için bu protokole başka bilgilerin (tam gün ve saat veya kullanıcının telefonunda çalınan müzik gibi) eklenmesi gerekebileceğini akılda tutmak önemlidir. şimdi olduğu gibi mantık inşa etmek.
Adım 6: Kod: ESP32 Tarafı
ESP32'nin kodu şu anda oldukça basittir. OLED ekranının kolay kontrolünü sağlayan U8g2lib kitaplığını kullanır (görüntülenen görüntünün aynalanmasını sağlarken).
Temel olarak, tüm ESP32'nin yaptığı, uygulama gönderdiğinde Bluetooth aracılığıyla seri verileri almak, ayrıştırmak ve bu verileri veya bu verilere dayalı resimleri görüntülemek (yani, "sola/sağa dön" cümlesi yerine bir ok görüntülemek). İşte kod:
/*Bir android uygulamasından HUD'yi seri bluetooth aracılığıyla kontrol etme programı*/#include "BluetoothSerial.h" //Seri Bluetooth için Başlık Dosyası, varsayılan olarak Arduino'ya eklenecektir#include #ifdef U8X8_HAVE_HW_SPI#include #endif# ifdef U8X8_HAVE_HW_I2C#include #endif//OLED kitaplık oluşturucu, ekranınıza göre değiştirilmelidirU8G2_SSD1306_128X64_ALT0_F_HW_I2C u8g2(U8G2_MIRROR, /* reset=*/ U8X8_PIN_NONE); // Makine algılandı_alan değerleri + değişken#define manevraField 1#define komutlarıField 2#define DistanceField 3#define endOfFrame 4int algılandı_field = endOfFrame;BluetoothSerial serialBT; // Bluetoothchar incoming_char için nesne;char manevrası[10];char komutları[10];char uzaklığı[10];char tempManeuver[10];char tempInstructions[10];char tempDistance[10];int nbr_char_maneuver = 0;int nbr_char_instructions = 0;int nbr_char_distance = 0;boolean fullsentence = false;void setup() { Serial.begin(9600); // Seri monitörü 9600 baud'da başlat u8g2.begin(); // OLED kontrolünü başlat serialBT.begin("ESP32_BT"); // Bluetooth Sinyal gecikmesinin adı(20); Serial.println("Bluetooth Aygıtı Eşleştirmeye Hazır");}void loop() { if (serialBT.available() && !fullsentence) // Bluetooth ile alınan karakterler serial { incoming_char = serialBT.read(); Serial.print("Alınan:"); Serial.println(gelen_char); } switch (algılanan_alan) { case manevraField: Serial.println("Algılanan alan: manevra"); if (incoming_char == '.') // Sonraki alan algılandı {Detection_field = TalimatlarField; } else { // Manevra türü bilgi dizisini doldurun manevra[nbr_char_maneuver] = incoming_char; nbr_char_maneuver++; } kırmak; case TalimatlarıField: Serial.println("Algılanan alan: Talimatlar"); if (incoming_char == ', ') // Sonraki alan algılandı {Detected_field = DistanceField; } else { // Talimatları doldurun bilgi dizi talimatları[nbr_char_instructions] = incoming_char; nbr_char_instructions ++; } kırmak; case DistanceField: Serial.println("Algılanan alan: Distance"); if (incoming_char == ';') // Çerçeve Sonu algılandı { algılanan_alan = endOfFrame; Serial.print("manevra:"); Serial.println(manevra); Serial.print("talimatlar:"); Serial.println(talimatlar); Serial.print("mesafe:"); Seri.println(mesafe); tam cümle = doğru; update_Display(); // Tam kare alındı, ayrıştırıldı ve alıcı verisini görüntüle } else { // Mesafe bilgisini diziyle doldurun mesafe[nbr_char_distance] = incoming_char; nbr_char_mesafe ++; } kırmak; case endOfFrame: if (incoming_char == ':') tespit_alanı = manevraField; // Yeni çerçeve algılandı ara; varsayılan: // Hiçbir şey kesmeyin; } delay(20);}void update_Display(){ // Olası çakışmaları önlemek için her karakter dizisini önbelleğe alın memcpy(tempManeuver, manevra, nbr_char_maneuver); memcpy(tempInstructions, talimatlar, nbr_char_instructions); memcpy(tempMesafe, uzaklık, nbr_char_mesafe); ayrıştırmaÖnbelleği(); // Karakter dizilerini ayrıştır ve işle fullsentence = false; // Cümle işlendi, bir sonrakine hazır}void parseCache(){ u8g2.clearBuffer(); // dahili belleği temizle u8g2.setFont(u8g2_font_ncenB10_tr); // uygun bir yazı tipi seçin // karakter dizileri -> substring() işlevini kullanmak için dize zorunlu String manevraString = tempManeuver; Dizi talimatlarıString = tempInstructions; //Protokol burada uygulanıyor. Şimdilik sadece dönüşleri destekliyor. if (maneuverString.substring(0, 4) == "turn") { // Serial.print("TURN DETECTED"); if (instructionsString.substring(0, 5) == "right") { // Belirli talimatları kontrol edin ve buna göre görüntüleyin u8g2.drawStr(5, 15, "-"); } else if (instructionsString.substring(0, 4) == "left") { // Belirli komutları kontrol edin ve buna göre görüntüleyin u8g2.drawStr(5, 15, "<---"); } else u8g2.drawStr(5, 15, "Hata."); // Geçersiz komutlar alanı } /* Diğer manevra tiplerini uygula (döner kavşaklar vb.) * else if (tempManeuver == "rdbt"){ * *] */ u8g2.drawStr(5, 30, tempDistance); // Kalan mesafeyi göster u8g2.sendBuffer(); // dahili belleği ekrana aktarın // Bir sonraki okumadan önce tüm karakter dizilerini sıfırla memset(manevra, 0, 10); memset(talimatlar, 0, 10); memset(mesafe, 0, 10); memset(tempManevra, 0, 10); memset(tempInstructions, 0, 10); memset(tempDistance, 0, 10); // Dizilerdeki eleman sayısını sıfırla nbr_char_distance = 0; nbr_char_instructions = 0; nbr_char_maneuver = 0;}
7. Adım: Kod: Android Tarafı
Akıllı telefon uygulaması için Mapbox'ın navigasyon SDK'sını kullanmaya karar verdim, çünkü sıfırdan bir navigasyon haritası oluşturmak söz konusu olduğunda birçok kullanışlı özellik sunuyor. Ayrıca, bu modülün çalışmasına kesinlikle yardımcı olan birçok faydalı dinleyicinin kullanılmasına izin verir. Ayrıca, Bluetooth seri iletişimini bir araya getirmeyi çok daha kolay hale getirdiği için, android için harry1453'ün android-bluetooth-serial kitaplığını da kullandım.
Bu uygulamayı evde oluşturmak istiyorsanız, ayda belirli sayıda isteğe kadar ücretsiz olan bir Mapbox erişim belirteci almanız gerekir. Bu jetonu koda koymanız ve uygulamayı kendi tarafınızda oluşturmanız gerekecek. Ayrıca kendi ESP32'nizin Bluetooth MAC adresini de kodlamanız gerekecektir.
Halihazırda uygulama, mevcut konumunuzdan haritada tıklayabileceğiniz herhangi bir konuma sizi yönlendirebilir. Ancak girişte belirtildiği gibi, dönüşlerden başka herhangi bir manevrayı desteklemez ve henüz rota dışı işlemleri yapmaz.
Kaynak kodunun tamamını github adresimde bulabilirsiniz.
Adım 8: Sırada Ne Var?
Artık uygulama, kullanıcısını belirli bir rotada gerçekten yönlendirecek kadar işlevsel olduğuna göre (belirlenen rotadan herhangi bir sapma yoksa), ana odak noktam akıllı telefon uygulamasını geliştirmek ve modülü bir geçerli navigasyon cihazı. Bu, ekran kapalıyken bile telefondan Bluetooth iletişiminin etkinleştirilmesini ve diğer manevra türlerini (kavşaklar, birleştirme,…) desteklemeyi içerir. Kullanıcı orijinal rotadan saparsa, yeniden yönlendirme özelliği de uygulayacağım.
Bütün bunlar bittiğinde, konteyneri ve bağlantı mekanizmasını geliştireceğim, 3 boyutlu yazdıracağım ve modülü ilk çalıştırma için deneyeceğim.
Her şey yolunda giderse, uzun vadeli hedefim, bu projenin gömülü elektroniği için nihai üründe çok fazla alan kazandıracak özel bir PCB tasarlamak.
Gelecekte bu modüle saat göstergesi ve kullanıcı bir metin mesajı veya arama aldığında bir simgenin görünmesini sağlayan bir telefon bildirim alarmı da dahil olmak üzere başka özellikler de ekleyebilirim. Son olarak, büyük bir müzik hayranı olarak bu modüle Spotify yetenekleri eklemeyi çok isterim. Ancak, zamanın bu noktasında, bu sadece sahip olmak güzel.
Adım 9: Sonuç ve Özel Teşekkürler
Girişte de belirtildiği gibi, bu proje bitmekten çok uzak olsa da, bir başkasına ilham verebileceğini umarak gerçekten dünyayla paylaşmak istedim. AR ve HUD'lara gerçekten çok fazla hobi ilgisi olmadığı için bu konudaki araştırmamı da belgelemek istedim, ki bu utanç verici.
Artırılmış gerçeklik projesi bu modülün yapımında bana çok ilham veren Awall99 ve Danel Quintana'ya çok teşekkür etmek istiyorum.
İlginiz için hepinize teşekkür ederim, yakın gelecekte bu proje iyileştirildiğinde bir güncelleme yayınlayacağımdan emin olabilirsiniz. Bu arada, sonra görüşürüz!
Önerilen:
Otomatik Sulama, İnternet Bağlantısı ve Çok Daha Fazlası Olan Harika Sera: 7 Adım (Resimlerle)
Otomatik Sulama, İnternet Bağlantısı ve Çok Daha Fazlası Olan Harika Sera: Bu Talimatlara Hoş Geldiniz. Mart ayının başında bir bahçe dükkanındaydım ve bazı seralar gördüm. Ve zaten uzun zamandır bitki ve elektronik ile bir proje yapmak istediğim için devam ettim ve bir tane satın aldım: https://www.instagram.com/p
Daha Az Alanda Daha Fazla Marul Yetiştirmek Veya Uzayda Marul Yetiştirmek, (Daha Fazla veya Daha Az).: 10 Adım
Daha Az Alanda Daha Fazla Marul Yetiştirmek Veya… Uzayda Büyüyen Marul, (Daha Fazla veya Daha Az).: Bu, Instructables aracılığıyla gönderilen Growing Beyond Earth, Maker Yarışması'na profesyonel bir başvurudur. Uzay mahsulü üretimi için tasarım yapmaktan ve ilk Instructable'ımı göndermekten daha fazla heyecanlanamazdım. Başlamak için yarışma bizden
Çok Akıllı Değil Ama Çok Sağlıklı Ama Biraz Ürpertici Ayna: 5 Adım (Resimlerle)
Çok Akıllı Değil Ama Çok Sağlıklı Yine de Biraz Ürpertici Ayna: Bir aynaya ihtiyacınız var ama evinize başka bir akıllı nesne eklemek istemiyor musunuz? O halde bu Pek Akıllı Değil Ama Çok Sağlıklı Yine de Biraz Ürpertici Ayna tam size göre
Not Defteri'nde Oyun Yapma ve Çok Daha Fazlası: 10 Adım
Not Defteri'nde Oyun Yapma ve Çok Daha Fazlası: Bu benim ilk talimatım. Bu yüzden herhangi bir öneriniz varsa lütfen yorum yapın. Haydi başlayalım! Not defteri kelimesini duyduğumuzda aklımıza bir şeyleri not etmek için bazı sıkıcı gereksiz uygulamalar geliyor. Peki not defteri bundan çok daha fazlası
Daha Güvenli Daha Güvenli: Tren İstasyonlarını Daha Güvenli Hale Getirmek: 7 Adım
Daha Güvenli Daha İyi: Tren İstasyonlarını Daha Güvenli Hale Getirmek: Bugün birçok tren istasyonu, güvenlik eksikliği, bariyerler ve gelen trenin uyarısı nedeniyle güvensizdir. Bunun düzeltilmesi gerektiğini gördük. Bu sorunu çözmek için Safer Better'ı yarattık. Titreşim sensörleri, hareket sensörleri kullandık ve