İçindekiler:

IOToilet: 7 Adım (Resimlerle)
IOToilet: 7 Adım (Resimlerle)

Video: IOToilet: 7 Adım (Resimlerle)

Video: IOToilet: 7 Adım (Resimlerle)
Video: GECE 3'te TUVALET ADAM SKİBİDİ TOİLET GÜVENLİK KAMERALARINA YAKALANDI !! (ŞOKE OLUCAKSINIZ) 2024, Kasım
Anonim

IOToilet, günlük tuvalet kağıdı kullanımımızı takip eden ve bu ölçümleri gösteren istatistiklerin toplanmasına izin veren ilk akıllı tuvalet kağıdı tutucusudur. Ve sorabileceğiniz günlük tuvalet kağıdı kullanımımı neden önemsemeliyim? Görünüşe göre karın sağlığımız, özellikle de sindirim döngüsü, hem fiziksel hem de zihinsel sağlığımızla çok ilgili. Örneğin, bu konuyu detaylandıran güzel bir TED konuşması (bu arada birkaç tanesinden biri):

İlk başta klibini yukarıda görebileceğiniz (2. konum) bir marka ajansı için bu cihazdan 10 adet yapmakla görevlendirildim, büyük bir şirket için amaçlı bir pazarlama kampanyası için. Başlangıçta, aşırı yaratıcı başka bir akıldan umutsuzca bir müşteri hesabı kazanmaya çalışan bir fikir olarak reddettim, ancak bu cihaz aracılığıyla toplanan bilgilerin değerini anlayana kadar yavaş yavaş içimde büyüdü.

Yapı, müvekkilimin EBay'den aldığı, tuvalet kağıdı tutucusuna yerleştirilmiş bir ses kayıt cihazı olan mevcut bir donanıma dayanıyordu. Doğru form faktörüne ve bir hoparlör, cihazı tetiklemek için bir hareket sensörü, tuvalet kağıdının kendisini tutmak için yaylar, pil bölmesi ve bir açma-kapama düğmesi gibi zaten yerleşik tüm gerekli çevre birimlerine sahipti, bu yüzden memnuniyetle seçtim Kendim modellemek ve basmak yerine bu hazır ürünü kullanmak.

Adım 1: Araçlar ve Malzemeler

Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler

Kullanılan malzemeler:

Tuvalet kağıdı tutacağı

Wemos D1 Mini

ATTiny85 çip, DIP paketleme

2 x 2n2222 transistör

220 Ohm direnç

2*1KOhm direnç

MPU6050 ivmeölçer

PCB'mi kullanmama durumunda isteğe bağlı:

Wemos prototipleme kalkanı

tel, lehim vb.

Kullanılan aletler:

Kesme diskli Dremel

ATTiny dev board (firmware'i rahatça yüklemek için)

USB Minik ISP programcısı

üçgen tornavida, bu kiti kullandım:

2. Adım: Orijinal Birimi Dağıtma

Orijinal Birimi Parçalama
Orijinal Birimi Parçalama
Orijinal Birimi Parçalama
Orijinal Birimi Parçalama
Orijinal Birimi Parçalama
Orijinal Birimi Parçalama

Orijinal tuvalet kağıdı milini aldıktan sonra, üçgen bir tornavida kullanarak kasasını açtım ve orijinal PCB'yi çıkardım, hoparlörü ayırdım ve mümkün olduğunca çok kabloyu ona bağlı bıraktım.

Daha sonra orijinal PCB'den LED'i ve eğim sensörünü daha sonra yeni devreye gömülmek üzere lehimledim. Hasar verebileceğinden eğim anahtarını aşırı ısıtmamaya dikkat edin. Benimki griydi, ancak orijinal cihazdan çıkarırken iyi bir çekim yapmadığım için ağdan bir fotoğraf kullanmak zorunda kaldım (yukarıya bakın), yeşil olduğu yerde. Sadece küçük bir detay.

Kasayı açıp elektroniği çıkardıktan sonra, orijinal PCB'yi yerinde tutmak için kullanılan fazla plastiği, bu küçük plastik rafları ve 4 vidalı borudan birini çıkarmak için bir Dremel kullandım. İsterseniz bunu montaj aşamasına erteleyebilirsiniz, ancak her durumda biraz plastik düzeltme gerekecektir.

Adım 3: Devre Açıklaması

Devre Açıklaması
Devre Açıklaması
Devre Açıklaması
Devre Açıklaması

İşte devrenin arkasındaki mantık hakkında biraz:

Pillerin uzun süre dayanması için aktivasyonlar arasında Wemos D1 Mini'ye hem MPU6050 ivmeölçeri hem de ESP8266 işlemciyi uyku moduna geçirmek zorunda kaldım. Birincisi, MPU6050'yi açıp kapatan bir transistör kullanılarak kolayca yapıldı.

Not: Başlangıçta, ana işlemciyi uyandıracak bir kesme sinyali göndermek için programlayabileceğimi düşündüm. Ne yazık ki, bunu gerçekleştirmenin bir yolunu bulamadım, MPU6050'nin uygun kayıtlarını yapılandırmak, hala mümkün olup olmadığını bilmediğim zor bir işti…

İkinci seçeneğim, ESP'yi uyandırmak için orijinal üniteyle birlikte verilen eğim anahtarını kullanmaktı. Mekanizmayı etkinleştirmek/devre dışı bırakmak için bir transistör kullanarak önce yukarıdaki fotoğraflarda anlatıldığı gibi doğrudan Wemos RESET pinine bağladım. Transistör tabanı yüksek olduğunda, GND eğim anahtarından geçebilir ve geçici olarak RESET pimine bağlanmasına neden olarak MCU sıfırlamasına neden olabilir (görünüşe göre bir ESP'yi derin uykudan uyandırmanın tek yolu budur). Daha sonra, MCU uyuduğu sürece bu bacağın YÜKSEK olduğu ve uyanır uyanmaz D0'ın DÜŞÜK'e geri döndüğü ve sıfırlama mekanizmasını devre dışı bıraktığı öncülünü izleyerek D0'ı transistör tabanına bağladım. Ne de olsa, tuvalet kağıdı tutucusu ilk kez hareket etmeye başladığında, tekrarlayan bir sıfırlamaya ihtiyacım yoktu.

Ancak, keşfettiğim şey, MCU sıfırlandıktan sonra D0 piminin DÜŞÜK'e, yaklaşık 200 ms'ye dönmesi oldukça uzun zaman alıyor. Bu, MCU uyurken tuvalet kağıdı tutucusunu yeterince hızlı döndürürsem, olması gerektiği gibi turları saymak yerine birden fazla RESET'in gerçekleşeceği anlamına geliyordu.

Bu yüzden bu yeni durumu bazı ayrık bileşenlerle (kapasitörler, transistörler vb.) çözmeye çalıştım ama soruna sadece kısmi bir çözüm bulabildim.

Sonunda, eğim anahtarı tarafından uykudan uyandırılacak olan bir ATTiny85 olan başka bir MCU ekledim, ardından ESP8266'yı uyandırdım ve tekrar uyumadan önce bir süre bekledim. Bunun muhtemelen soruna en ekonomik çözüm olmadığını biliyorum, ancak bir son teslim tarihim vardı…

Ayrıntılı çözümü eklediğim şemada görebilirsiniz. Lütfen 10K dirençlerin 1K ile değiştirildiğini unutmayın, çünkü 10k dirençler transistörlerin tamamen açılması için çok yüksek.

Adım 4: ATTiny85'in Hazırlanması

ATTiny85'in hazırlanması
ATTiny85'in hazırlanması

Daha önce bir ATTiny85 programlamadıysanız, korkmayın! Sevgili Arduino IDE'yi kullanmak sizi sonuna kadar götürebilir. Arduino IDE'nin nasıl yapılandırılacağına ilişkin bu talimatlarla başlayın:

github.com/SpenceKonde/ATTinyCore/blob/mas…

Ardından, USBTinyISP için sürücüleri buradan yükleyin:

learn.adafruit.com/usbtinyisp/drivers

Şimdi, ekli test kodunu yükleyin: WakeOnExternalInterruptTest.ino

ve bağlayın (bkz. ATTiny85 Pinout şeması):

1. Pim 3 ile toprak arasındaki incelik düğmesi

2. Pin 2 ile toprak arasında seri bağlı bir led ve 220 Ohm direnç

Sonraki, Programlayıcı olarak USBTinyISP'yi seçin (Araçlar -> Programlayıcı altında) ve test çizimini tahtaya yükleyin.

LED 5 kez yanıp sönmeli, ardından çip uyku moduna geçmelidir. Düğmeye basmak, uyanmasına ve bu diziyi tekrarlamasına neden olacaktır.

İşe aldın mı? harika! Son devrede kullanılmak üzere son "Uyandırıcı" taslağını ATTiny'ye yükleyin.

Adım 5: Wemos Kalkanını İnşa Etme

Wemos Kalkanını İnşa Etmek
Wemos Kalkanını İnşa Etmek
Wemos Kalkanını İnşa Etmek
Wemos Kalkanını İnşa Etmek
Wemos Kalkanını İnşa Etmek
Wemos Kalkanını İnşa Etmek
Wemos Kalkanını İnşa Etmek
Wemos Kalkanını İnşa Etmek

Yani, kalkanı inşa etmek için seçebileceğiniz 3 seçeneğiniz var:

1. Wemos için standart bir ön kalkan kullanın ve devreyi bunun üzerine lehimleyin.

2. Ekli EAGLE dosyalarına dayalı olarak bir PCB üretin.

3. Benden size posta yoluyla gönderebileceğim bir PCB isteyin (Birkaç tane var, maliyeti neredeyse sıfır).

Her halükarda, PCB'ye geçmeden önce devreyi bir devre tahtası üzerinde kurmanızı tavsiye ederim!

PCB seçeneklerini kullanıyorsanız, siyah kabloyu fotoğraftaki gibi kartın ön veya arka tarafına bağladığınızdan emin olun (ikincisi benim için en iyi sonucu verdi). Bu tel, GND'yi Wemos'tan ATTiny85'e bağlar ve onsuz uyanma gerçekleşmez.

Resimlere iyi bakın ve eklediğim açıklamaları okuyun, bu kadarı yeterli olacaktır.

Adım 6: Wemos'u Hazırlama

Arduino IDE'yi bir Wemos panosunu programlamak için hiç kullanmadıysanız, pano yöneticisini yükleyerek ve burada açıklandığı gibi Araçlar -> Pano menüsünde panoyu seçerek başlayın:

github.com/esp8266/Arduino

Kodun doğru bir şekilde yüklendiğinden emin olarak, yanıp sönen taslağı panonuza yükleyerek başlayın.

7. Adım: Hepsini Bir Araya Getirmek

Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy
Hepsini bir araya koy

Kalkanı Wemos'a takın. Lehimleyebilirsiniz, ancak herhangi bir sorun durumunda Wemos ile kalkan arasında geçici bağlantıya izin verecek Wemos'a lehimlenmiş dişi başlıklar kullanmanızı öneririm. Ünitenin plastik kabuğa sığması için montajın son aşamasında dişi başlığın inmesi gerekeceğini unutmayın. Ayrıca, işleri biraz daha karmaşık hale getirmek için, Wemos'a kalkan bağlandığında kod yüklemenin devre dışı bırakılma olasılığı yüksektir. Bu fenomenle tutarlı olmayan bir şekilde karşılaştım ve araştırmak için zamanım olmadı.

Tavsiye sözü: önceden plan yapın.

Şimdi, Test Ediliyor!

Kurulduktan sonra, BlinkAccelerometer test çizimini Wemos'a yükleyerek başlayın ve MPU6050 LED'ini açıp kapattığından emin olun. Değilse, MPU6050'ye güç sağlamaktan sorumlu olan transistörün kablolarını kontrol edin. Tabanı Wemos'un D5 pinine, kolektör ivmeölçerin GND'sine ve Verici ortak GND'ye bağlanmalıdır.

Ardından, TurnCountTest1 çizimini Wemos panosuna yükleyin ve Seri Monitörü açın. Monitörde sunulan ivmeölçerden gelen verileri görmelisiniz. Çalışmıyorsa, saati ve veri kablolarını kontrol edin: CLK, D1'e ve DATA, D2'ye bağlanmalıdır.

Şimdi eğim anahtarını karttaki belirlenmiş deliklere lehimleyin (açıklamalara bakın), dönüş eksenine dik olduğundan emin olun, böylece iş mili döndürmek iki ucu arasındaki bağlantıyı kapatıp açar.

Ardından, Pil 3V girişini Wemos VCC'ye ve eksi terminalini Wemos GND'ye bağlayın. Anahtarı açmanın üniteyi açtığından emin olun. Son olarak, hoparlörü GND'ye ve Wemos'un D4 pinine bağlayın.

Son kodu Wemos'a yükleyin - SmartWipe adlı bir çizim. Bir seri monitör açın ve ünitenin 3 dakika sonra uyku moduna geçtiğinden ve eğim anahtarının hareket ettirilmesiyle uyandığından emin olun (karşılık gelen mesajlar monitörde görünmelidir).

Wemos'un uyanık olduğu süreyi azaltmak istiyorsanız (esas olarak test amaçlı), params.h'de tanımlanan WIFI_CONFIGURATION_IDLE_TIMEOUT değerini azaltın ve taslağı tahtaya yükleyin. Wemos'un derin uykuya geçmesinden sonra, eğim anahtarının hareket ettirilmesinin ATTiny'nin uyanmasına neden olduğundan (LED tarafından sinyal verilir), bu da Wemos'u uyandırdığından emin olun.

Parametrenin değerini tekrar 180000L (milisaniye cinsinden 3 dakika) olarak değiştirin ve Wemos'un XXXXXXX'in çipin MAC adresinden alınacağı IOToilet_XXXXXXXX adlı bir Hotspot açtığından emin olun. Bir akıllı telefon kullanarak bu Wifi'ye bağlanın ve bir kayıt formuna (Captive Portal adı verilen bir mekanizma) yönlendirilmeniz gerekir. Ayrıntıları doldurun, özellikle önemli olan yerel kablosuz ağınızın SSID'si ve şifresidir ve formu gönderin. Ünite daha sonra verilen kimlik bilgilerini kullanarak ağa bağlanmayı denemeli ve başarılı olursa hoparlörde artan 3 ses çalmalıdır. Wifi'ye bağlanırken bir sorun olsaydı, 3 azalan ses çalınır. Bundan sonra, Wemos hareketle uyanana kadar derin uykuya dalmalıdır.

Son olarak: Uçtan uca Sistem testi.

Tuvalet kağıdı tutucusunu dönme ekseni boyunca birkaç tur döndürün, ardından sabit bir yüzeye yerleştirin (rulo kullanımının sona erdiğini bildirmek ve veri yüklemesini tetiklemek için). Rulo sayısının buluta gönderilmesi için yaklaşık 10 saniye bekleyin, ardından https://smartwipe-iot.appspot.com/ adresine gidin ve Sorgu'ya tıklayın. Bulutta kayıt ayrıntılarınızı ve son kullanım rulo sayınızı görmelisiniz! Sistemdeki benzersiz kimliğiniz olan uuid'inizi Wemos'unuzun MAC adresinden aldığınızdan emin olun.

Yalnızca istatistiklerinizi JSON biçiminde çıkarmak istiyorsanız, şuna benzer bir URL kullanın:

smartwipe-iot.appspot.com/api?action=query&uuid=1234567890

sadece uuid'i sizinkiyle değiştirin.

Google App motorunda barındırılan web uygulaması için tüm kaynakları ekledim, böylece verilere daha fazla gizlilik kazanmak isteyen kullanıcılar, kendi Google kullanıcılarına dağıtabilir, kimlik doğrulama ekleyebilir vb.

Her şey çalıştığında, elektronik aksamı plastik kabuğa yerleştirin, plastiği gerektiği gibi bir dremel ile düzeltin. Tüm parça gövdeye güzel bir şekilde oturmalıdır.

Sorun? Bana yaz!

BİRLEŞİK YAPIYORUZ!

Önerilen: