İçindekiler:

Dev LED - Adam Savage Takip: 13 Adım (Resimlerle)
Dev LED - Adam Savage Takip: 13 Adım (Resimlerle)

Video: Dev LED - Adam Savage Takip: 13 Adım (Resimlerle)

Video: Dev LED - Adam Savage Takip: 13 Adım (Resimlerle)
Video: Akıllı adamın hali başka❗️#kaza #crash 2024, Temmuz
Anonim
Dev LED - Adam Savage'ı İzleme
Dev LED - Adam Savage'ı İzleme
Dev LED - Adam Savage'ı İzleme
Dev LED - Adam Savage'ı İzleme
Dev LED - Adam Savage'ı İzleme
Dev LED - Adam Savage'ı İzleme

Burada, Twitter, YouTube ve Twitch uyarı lambası olarak işlev görmesi amaçlanan Giant LED'in bir yorumunu bulacaksınız. Benim için asıl amaç, Adam Savage ve test edilen ekibin tweet'leri, videoları veya twitch akışları olduğunda bir uyarı sağlamak ve adil olmak gerekirse, Robert Cowan, Marty the Mechanic ve daha fazlası gibi takip ettiğim birkaç kişi daha.

Açıkçası telefonumda veya dizüstü bilgisayarımda twitter, twitch vb. Web kancaları Ayrıca, her gün yeterli sayıda kayıtla güncellenip güncellenmediklerini bana bildirmek için işle ilgili bazı Biq Query tablolarından güncellemeler alacak şekilde yapılandırdım.

Adafruit, denemek istediğim Adafruit IO adında bir hizmete sahip ve Wemos D1 Mini 3 sürümü hakkında bazı güzel sözler duyduktan sonra tüm yıl boyunca ESP8266'yı yeniden denemek ve yeniden ele almak istedim. Astro73 tarafından bir şey üzerinde bir LED tasarımı. Bununla başladım ve ölçek için biraz elden geçirdim ve ayrıca tabana bir basma düğmesi ve diğer bazı kozmetik değişiklikler ekledim. Remix'i burada bulabilirsiniz

Ayrıca, IFTTT alexa tetikleme kelimesinin ortaya çıkmasıyla birlikte artık Alexa üzerinden sesle kontrol edilebilir.

Adım 1: Malzemeler

Bunlardan birini yapmak istiyorsanız, parça listesi oldukça küçüktür ve aynı zamanda nispeten ucuzdur. Beklemeye aldırmazsanız, ana parçaları yurtdışından temin edebilir ve maliyeti daha da azaltabilirsiniz. Ancak ana bileşen, Dev LED kasası ve tabanıdır. Bir 3D yazıcınız varsa, hazırsınız, yoksa parçaları yazdıracak birkaç çevrimiçi yazıcı şirketi yoksa. Sadece 3 tane var, bu da oldukça ucuz olmalı.

1. Wemos D1 Mini R3

2. Neopiksel 8 LED

3. Siyah PETG'de baskılı taban ve bacaklar

4. Şeffaf PLA'da baskılı lens ve ışık tutucu

5. Basmalı Düğme Anahtarı 12mm kare x1

6. Yuvarlak Düğme Kapağı x1

7. Güç için USB kablosu ve adaptör

8. M3x20 düğme kafası

9. M3 Somun

10. M2x8mm cıvata x2

11. M2 Somun x2

12. Biraz Siyah, Kırmızı ve Sarı tel

13. 300-500 Ohm Direnç

14. Küçük ısı büzüşmeli parça

Diğer ESP cihazlarını, hatta bir Huzzah'ı kullanabilirsiniz, ancak kasa, montaj delikleri olan ve yapıştırmaya gerek duymayan mini için tasarlanmıştır.

2. Adım: Araçlar

Bunu oluşturmak ve inşa etmek için aşağıdakilere ihtiyacınız olacak

1. 3D yazıcı

2. 1.5 mm ve 2 mm Alyen anahtarı

3. Havya ve lehim

4. Tel kesiciler

5. Pliers

6. Mizah anlayışı

7. Düzeltme için neşter

3. Adım: Kod Gereksinimleri

Bu yüzden, yapıya dalmadan önce, buna dahil etmek istediğim bazı gereksinimlerin ana hatlarını vereceğim. Bunların çoğu başlamadan önce aklımdaydı ve deneyeceğim şeyi bulmak için birkaç akış çizdim. Devam ederken, ele almak istediğim hizmetlerle ilgili bazı sorunlar keşfettim.

Gereksinimler.

LED'in yeni bir tweet veya video yayınlandığında bana göstermesini ve ayrıca belirli bir Twitch kanalı başladığında ortaya çıkmasını istedim. Ayrıca alarmın iptal edene kadar devam etmesini istedim, böylece bir süre uzakta olursam, ben yokken neler olduğunu bilebilirim. Ayrıca, yazılımı yeniden başlatmak zorunda kalmadan Wi-Fi erişimi için yapılandırılabilir olmasını da istedim. Ortaya çıkan son bir şey de, olaylara canlı olarak yanıt vermenin yanı sıra, kendisine beslenen verilerin durumunu her 15 dakikada bir kontrol etmem gerekiyordu.

Bu nedenle, temel bilgiler hazır olduğunda, sıradaki şey, her bir parçanın nasıl yürütüleceğini bulmaktı. Hangi parçanın hangi tür yazılım veya platform tarafından ele alınacağına dair fikirlerimi aşağıda görebilirsiniz.

1. Adafruit IO, bu uyarılar için beslemeleri ayarlamak için kullanılır, buradan bir hesap alabilirsiniz

Bunu, IFTTT'den mesajlar göndereceğim bir mesaj kuyruklama servisi olarak kullanacağım ve ardından Dev LED, bu mesajları alabilmesi için alır.

2. IFTTT, https://ifttt.com/ ve bu, seçilen Twitter, YouTube ve Twitch kanallarını taramak için kullanılır ve ardından olayı Adafruit IO'ya gönderir.

3. Bu beslemeleri okumak için ESP8266 kodu ve bu, standart Arduino IDE (v1.8.8) kullanılarak ESP8266'ya yakılır.

4. Adafruit IO beslemelerini okumak ve Neopixel'i aydınlatmak için ESP8266'ya yüklenen Arduino kodu

5. Arduino kodu, uyarıyı silmek için bir düğmeyi okumak için

6. WiFi bağdaştırıcısını ESP'yi yeniden yakmak zorunda kalmadan yapılandırın ve bunun için Tzapu'nun WiFi Manager kitaplığını kullandım, https://github.com/tzapu/WiFiManager Adafruit IO kitaplıkları.

Adım 4: Adafruit IO'yu Ayarlama

Adafruit IO'yu Kurma
Adafruit IO'yu Kurma

Burada oluşturduğunuz erişim anahtarlarına ve ayrıca IFTTT'nin olay göndereceği yayınları oluşturmanız gerekeceğinden bu ilk adımdır. Hem bunu hem de IFTTT hesabını kurabilir ve bu projenin Arduino kısmına geçmeden önce hemen hemen her şeyi ayarlayabilir ve çalıştırabilirsiniz.

Adafruit örneklerini kopyalamak yerine temel bilgileri burada https://learn.adafruit.com/gmailbox/adafruit-io-se… bulabilirsiniz, bu da kurulumunuzu sağlayacaktır.

Ardından GIANT LED için aşağıdaki beslemeleri varsayılan kanallara eklemeniz gerekecektir.

1. renk - bu, Alexa gibi bir şeyle rengi uzaktan değiştirmemizi sağlar

2. seğirme

3. twitter hayranı

4. youtube hayranı

Daha sonra giriş aramadıysanız yeni bir grup oluşturmanız gerekir, ardından bu gruba ayrıca dijital adlı bir besleme oluşturun. Bu, bu cihazın kullanımını başka amaçlar için genişletmek istiyorsak, düğmeye basmanın etkisini de görmemizi sağlayacaktır.

Ayrıca isterseniz bu noktada gösterge paneli ile oynamaktır, böylece bilgi ve arıza bulma amaçlı bu beslemeleri ona ekleyebilirsiniz.

Adım 5: IFTTT'yi Ayarlama

IFTTT'yi Ayarlama
IFTTT'yi Ayarlama
IFTTT'yi Ayarlama
IFTTT'yi Ayarlama

Adafruit rehberini https://learn.adafruit.com/gmailbox/ifttt-setup adresinden de takip edebilirsiniz. Ardından, izleme listelerinizi oluşturmak için Twitter, youtube ve twitch eylemlerini seçebilir ve ardından bunları ilgili yayınlara gönderebilirsiniz. Ne kadar hızlı olabileceğini görebilmeniz için basit bir video ekledim.

Ek olarak, LED'inizin rengini Alexa ile sesli olarak kontrol etmek istiyorsanız, artık bir Amazon Alexa uygulaması var. Bunlardan birini ayarlamak için uygulamayı seçin ve mavi kelimesini seçin, ardından ayarladığınız renk adı verilen Adafruit beslemesine bağlayın ve o kanala gönderilecek veri olarak 0000ff girin. İsterseniz bu şekilde GIANT LED'e sıfırlama veya yeniden başlatma gibi ekstra komutlar da iletebilirsiniz.

IFTTT tetikleyicisini kurarken, gönderilen verileri seçmeniz gerekir ve buna IFTTT'de "İçindekiler" denir. İhtiyacımız olan ilk parça "KullanıcıAdı", sonra bir boşluk ve ardından "CreatedAt"

Veriler ESP8266'ya ulaştığında bunun yeni bir tweet olup olmadığını ve aynı kullanıcıların önceki tweet'lerinden farklı olup olmadığını tespit edebilmemiz için her iki öğeyi de seçiyoruz. Bunun nasıl olması gerektiğini ekteki resimden görebilirsiniz.

Adım 6: ESP8266 Kartlarını Arduino IDE'ye Takma

Burası işlerin biraz daha zor olduğu ve çözülmesi biraz daha zaman alabileceği yerdir. ESP8266'ya ek olarak Adafruit IO kitaplıklarına da ihtiyacınız var ve bunlar için bu kılavuzu takip edebilirsiniz.

learn.adafruit.com/gmailbox/arduino-setup

Burada da ESP8266 kartlarının nasıl ekleneceğine dair basit bir açıklama var

Arduino IDE'nizin de en son sürüme kadar olduğundan emin olmayı unutmayın ve bunu yazarken 1.8.8 kullanıyordum.

Kullandığımız diğer bir kitaplık da SimpleTimer'dır, çünkü bu, beslemeleri periyodik olarak kontrol edebilmemiz için bir arka plan zamanlayıcısı kurmamıza izin verecektir, bununla ilgili talimatlar use simpletimer https://playground.arduino.cc/Code/SimpleTimer# adresinde bulunabilir. İndirmek

7. Adım: WiFi Yönetici Kitaplığını Yükleme

WiFi kurulumunun uzaktan konfigürasyonunu alabilmemiz için Tzapu Wifi Yöneticisini kullanacağız, bununla ilgili detaylar ve kütüphanelerin nasıl kurulacağı burada bulunabilir, github.com/tzapu/WiFiManager

Bu, harici kitaplıkların oldukça basit bir kurulumudur ve seçenek zaten Arduino IDE araçları bölümünüzün Kitaplığı yönet bölümündedir.

8. Adım: ESP8266 Kodu - Hata Ayıklamalı Yazdırma ile

// Bu kod, çalışmasını Seri monitör aracılığıyla izleyebilmeniz için yazdırma ifadeleri içerir.

// Adafruit IO RGB LED Çıkış Örneğine Dayalı // Adafruit, bu açık kaynak kodunu sağlayarak zamana ve kaynaklara yatırım yapar. // Lütfen Adafruit'ten // ürünleri satın alarak Adafruit ve açık kaynaklı donanımları destekleyin! // // Todd Treece tarafından Adafruit Industries için yazılmıştır // Telif hakkı (c) 2016-2017 Adafruit Industries // MIT lisansı altında lisanslanmıştır. // // Yukarıdaki tüm metinler herhangi bir yeniden dağıtıma dahil edilmelidir. // simpletimer kullanır https://playground.arduino.cc/Code/SimpleTimer#Do… // https://playground.arduino.cc/Code/SimpleTimer#Do… // kodun geri kalanı Ajax Jones https:// oyun alanı.arduino.cc/Code/SimpleTimer#Yap // https://playground.arduino.cc/Code/SimpleTimer#Yap… // ******************* ******* Yapılandırma ****************************************/ #define IO_USERNAME "IO'nuz Kullanıcı adı" #define IO_KEY "GÇ Anahtarınız" // onları Wifi Yöneticisinden alacağımız için boş bırakın, bu şekilde iyi çalışıyor gibi görünüyor #define WIFI_SSID "" #define WIFI_PASS "" // AdafruitIO'nun yapacağı gibi bunu dahil etmiyoruz sürümünü dahil et //#include //https://github.com/esp8266/Arduino //kütüphane için gerekli #include #include #include "WiFiManager.h" //https://github.com/tzapu/WiFiManager # SimpleTimer zamanlayıcı dahil; #include "AdafruitIO_WiFi.h" AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS); //************************** NeoPixel yapılandırmaları ************************* *********// #include "Adafruit_NeoPixel.h" #define PIXEL_PIN 5 #define PIXEL_COUNT 8 int NUM_LEDS = PIXEL_COUNT; #define PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel piksel = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE); // Ana renkler ve varsayılan renk long default_color = 865554; uzun RED_color = 2689027; // kırmızı #290803 uzun GREEN_color = 865554; // yeşil #0d3512 uzun MAVİ_renk = 856117; // mavi #0d1035 uzun PURPLE_color = 2364968; // mor #241628 uzun BRIGHTRED_color = 15990784; // parlak kırmızı #f40000 // ------------------------------------------ ----------------------------------------------- //zaman https://www.safaribooksonline.com/library/view/arduino-cookbook-2nd/9781449321185/ch12.html https://playground.arduino.cc/Code/SimpleTimer#Do… https://playground adresinden alınan fikir. arduino.cc/Code/SimpleTimer#Do… const uzun bir Saniye = 1000; // bir saniye bin milisaniyedir const long oneMinute = oneSecond * 60; const uzun beşDakika = birDakika * 5; const uzun onbeşDakika = beşDakika * 3; const uzun birSaat = onbeşDakika * 4; // Twitter En sevdiğimiz kullanıcılar ve bunlar yanıp sönecek ve seçtiğimiz diğer tüm tweetler sadece rengini değiştirecek String SuperTweet = { "ajaxjones", "donttrythis", "prodnose", "testedcom"}; String SuperTuber = {"test edildi", "cowan", "marty"}; // ana döngüdeki LED'leri yanıp sönmeye devam edebilmemiz için uyarı durumunu ayarlar bool WHIZZY_TWEET = false; bool WHIZZY_TUBER = yanlış; bool WHIZZY_TWITCH = yanlış; // Son tweet'i ve youtube'u kaydeder, böylece hizmeti her seferinde iki kez kontrol etmemizi sağlar ve ardından String lasttweet =""; string lasttube =""; string lasttwitch =""; // digital pin 5, bu uyarı renklerini sıfırlamak için kullandığımız buton #define BUTTON_PIN 4 // buton durumu, gerçekten o kadar kullanılmıyor, çünkü interupt butonu aradığımız için bool current = false; bool son = yanlış; // istek üzerine renkleri test edip gönderebilmemiz için veya Alexa tetikleyici AdafruitIO_Feed'i kullanabilmemiz için 'renk' beslemesini ayarlayın *color = io.feed("color"); // 'twitterfan' beslemesini ayarla - Blue AdafruitIO_Feed *twitter = io.feed("twitterfan"); // 'youtubefan' beslemesini ayarla - Red AdafruitIO_Feed *youtube = io.feed("youtubefan"); // 'twitch' beslemesini ayarla - Purple AdafruitIO_Feed *twitch = io.feed("twitch"); // 'dijital' beslemeyi ayarla AdafruitIO_Feed *digital = io.feed("input.digital"); // ------------------------------------------------ -------------------------------------------- void setup() { // giriş olarak buton pini, harici dirençler kullanmak zorunda olmadığımız için INPUT_PULLUP kullanıyoruz pinMode(BUTTON_PIN, INPUT_PULLUP); // AttachInterrupt(digitalPinToInterrupt(BUTTON_PIN), handleInterrupt, FALLING); düğmesi için ISR vektörüne bir kesme ekleyin; // Seriyi başlatın ve seri monitörün açılmasını bekleyin, ardından io.adafruit.com'a bağlanın Serial.begin(115200); while (! Seri); // neopiksel başlangıç pikselleri.begin(); // İlk durumu kırmızıya ayarlayın, böylece çevrimdışı olduğumuzu ve çalıştığımızı bilelim setAll(0xf4, 0x00, 0x00); // kırmızı // test için, bu WiFi WiFi.printDiag(Serial); WiFiManager wifiManager; //önceki bir WiFi'ye bağlanma başarısız olduğunda çağrılan geri aramayı ayarla ve Erişim Noktası moduna girer wifiManager.setAPCallback(configModeCallback); //kaydedilmiş ayarları sıfırla, bağlanabilmeniz için WiFi Yöneticisini test etmeye zorlamak için bu sonraki satırın yorumunu kaldırın //görünecek olan Dev LED ağını aramak için telefon veya tabletinizi kullanın //wifiManager.resetSettings(); //yapılandırma portalı kapanana kadar zaman aşımını ayarlar //hepsini yeniden denemek veya uyku moduna geçirmek için kullanışlıdır //saniyeler içinde wifiManager.setTimeout(240);if (!wifiManager.autoConnect("DEV LED")) { Serial.println (F("bağlanamadı ve zaman aşımına uğradı")); //reset ve tekrar deneyin delay(3000); ESP.reset(); gecikme(1000); } // test için bağlanmak için doğru kimlik bilgilerine sahip olup olmadığımızı görebiliriz //Serial.println(WiFi. SSID()); //Serial.println(WiFi.psk());//WiFi.begin(WIFI_SSID, WIFI_PASS); //while (WiFi.status() != WL_CONNECTED) { //delay(500); //Seri.print("."); //} Seri.println(); Serial.println(F("WiFi bağlandı")); Serial.println(F("IP adresi: ")); Serial.println(WiFi.localIP()); // şimdi IO hizmetine bağlanıyoruz Serial.print(F("Adafruit IO'ya Bağlanıyor")); io.connect(); // 'renk' beslemesi için bir mesaj işleyici ayarlayın. color->onMessage(handleMessage); // 'twitterfan' beslemesi için bir mesaj işleyici ayarlayın. twitter->onMessage(twitterMessage); // 'youtubefan' beslemesi için bir mesaj işleyici ayarlayın. youtube->onMessage(youtubeMessage); // 'twitch' beslemesi için bir mesaj işleyici ayarlayın. twitch->onMessage(twitchMessage); // bir bağlantı bekleyin while (io.status() < AIO_CONNECTED) { Serial.print(F(".")); gecikme(500); } // bağlıyız Serial.println(); Serial.println(io.statusText()); //Serial.println(sizeof(SuperTweet)); //Serial.println(sizeof(SuperTweet[0])); // Beklediğimiz Twitter hesaplarının bir listesini yazdırın (byte idx = 0; idx < sizeof(SuperTweet) / sizeof(SuperTweet[0]); idx++) { Serial.print(F("SuperTweet[")); Serial.print(idx); Serial.print("] = '"); Serial.print(SüperTweet[idx]); Seri.println("'"); } // Beklediğimiz YouTube hesaplarının bir listesini yazdırın (byte idx = 0; idx get(); // beslemelerin mevcut durumlarını isteyin, bu yüzden başlarken sıfırlamaya basmanız gerekecek youtube ->get(); twitter->get(); twitch->get(); for (int i = 0; i get(); twitter->get(); twitch->get(); Serial.print("birkaç tweet almak"); Serial.print(" çalışma süresi(ler): "); Serial.println(millis() / 1000); } // ---------------- -------------------------------------------------- ----------------------- void loop() { // io.run(); tüm çizimler için gereklidir. io.run(); timer. run(); if (WHIZZY_TWEET == true) { RunningLights(0x0d, 0x10, 0x35, 250); } if (WHIZZY_TUBER == true) { RunningLights(0x29, 0x08, 0x03, 250); } if (WHIZZY_TWITCH == doğru) { Koşu Işıkları (0x24, 0x16, 0x28, 250); } } // --------------------------------- -------------------------------------------------- ------ // düğmeye basıldığında uyarıyı silmek için kesintiyi ayarlayın ve internet void handleInterrupt() { WHIZZY_TWEET = YANLIŞ; WHIZZY_TUBER = yanlış; WHIZZY_TWITCH = yanlış; akım = doğru; // mevcut durumu adafruit io'daki 'input.digital' beslemesine gönder, böylece onu görebiliriz digital->save(current); for (int i = 0; i ")); Serial.print(geçerli); Serial.print(F(" ve varsayılan renk ")); Serial.println(varsayılan_renk); akım = yanlış; dijital->kaydet(geçerli); while (WiFi.status() != WL_CONNECTED) { gecikme(500); setAll(0xeb, 0xfb, 0x03); // Sarı ebfb03 } } // -------------- -------------------------------------------------- ------------------------- // bu, bir 'twitter' mesajı geldiğinde çağrılır - LED'i Mavi olarak ayarlayın void twitterMessage(AdafruitIO_Data *data) { String tweeter = (data->toString()); tweeter.toLowerCase(); if ((lasttweet != tweeter) && (tweeter != "")) { lasttweet = tweeter; setAll(0x0d, 0x10, 0x35); // Tweet mavi rengini ayarla Seri.print(F("Tweet: ")); Serial.print(tweeter); // (byte idx = 0; idx = 0) için favori tweeter olup olmadığını kontrol edin { // tweetler vızıltı #0d1035 WHIZZY_TWEET = true; Serial.print(" by "); Serial.print(SuperTweet[idx]); } } Serial.println(""); } } // --------- -------------------------------------------------- ---------------------------- -- // bu, bir 'youtube' mesajı geldiğinde çağrılır - LED'i KIRMIZI olarak ayarlayın void youtubeMessage(AdafruitIO_Data *data) { String tuber = (data->toString()); tuber.toLowerCase(); if ((lasttube != yumru) && (yumru !="")) { lasttube = yumru; setAll(0x29, 0x08,0x03); // youtube kırmızı rengini ayarla 290803 Serial.print(F("Youtube: ")); Serial.println(yumru); // (byte idx = 0; idx = 0) için favori Youtuber'ı kontrol et { // Videolarını harika yapalım #0d1035 WHIZZY_TUBER = true; Seri.print (" ile "); Serial.print(SuperTuber[idx]); } } Serial.println(""); } } // ---------------------------------------------- ------------------------------------------- // ne zaman bir 'twitch' mesajı geliyor - LED'i PURPLE olarak ayarlayın void twitchMessage(AdafruitIO_Data *data) { String twitch = (data->toString()); twitch.toLowerCase(); if ((lasttwitch != seğirme) && (seğirme !="")) { lasttwitch = seğirme; setAll(0x24, 0x16, 0x28); // seğirme mor rengini ayarla #241628 Serial.print(F("Twitch: ")); Seri.println(seğirme); // Favori bir Twitcher için kontrol yok sadece bir tane takip ediyoruz WHIZZY_TUBER = true; Seri.println(""); } } // ---------------------------------------------- ------------------------------------------- // bu işlev ne zaman çağrılır bir 'renk' mesajı alındı // başlangıçta varsayılan rengi son renk besleme değerine göre ayarlayacak void handleMessage(AdafruitIO_Data *data) { // RGB değerlerini ve onaltılık değerini yazdır Serial.print(F("Alınan HEX değeri): ")); Serial.println(veri->değer()); uzun renk = data->toNeoPixel(); //varsayılan_renk = renk; Serial.print(F("Alınan HEX uzun: ")); Seri.println(renk); for (int i = 0; i < PIXEL_COUNT; ++i) { piksel.setPixelColor(i, color); } showStrip(); } // -------------------------------------------------- ------------------------------------------ void RunningLights(bayt kırmızı, bayt yeşil, bayt mavi, int WaveDelay) { int Konum = 0; for (int j = 0; j < NUM_LEDS; j++) { Konum++; // = 0; //Konum + Oran; for (int i = 0; i < NUM_LEDS; i++) { setPixel(i, ((sin(i + Position) * 127 + 128) / 255)*red, ((sin(i + Position) * 127 + 128) / 255)*yeşil, ((sin(i + Konum) * 127 + 128) / 255)*mavi); } showStrip(); gecikme (Dalga Gecikmesi); } } // ---------------------------------------------- ------------------------------------------- // Neopixel rutinleri void setAll(bayt kırmızı, bayt yeşil, bayt mavi) { for (int i = 0; i getConfigPortalSSID()); //yapılandırma moduna girildi, Neo Pixel'i mor olarak ayarla #241628 = 2364968 // setAll(0x24, 0x16, 0x28); setAll(0xeb, 0xfb, 0x03); // Sarı ebfb03 }

Adım 9: Hepsini Birlikte Lehimleme

Hepsini Birlikte Lehimlemek
Hepsini Birlikte Lehimlemek
Hepsini Birlikte Lehimlemek
Hepsini Birlikte Lehimlemek
Hepsini Birlikte Lehimlemek
Hepsini Birlikte Lehimlemek

Bu tasarımdaki her şey birlikte lehimlenmiştir ve yönetimi oldukça kolay olmalıdır. İşleri kolaylaştırmak için 3 farklı renkli kablo kullandım ve ilk şey neopiksel için WEMOS'a giden kabloyu ölçmek. Onları ördüm ve küçük bir parça ısıyla daralan makaron koydum ve daha sonra mercekte düz durması için gösterildiği gibi lehimledim.

Sıradaki düğmeydi ve tabana tam oturacak. Düğmenin bir tarafı Gnd'ye gider ve bu, neopikselin Topraklama kablosuyla birlikte bükülür. Daha sonra onları kalayladım ve WEMOS'un topraklama pimine tek parça olarak lehimledim.

Neopixel'in güç kablosu 5v PIN'e gider. Neopikselin sinyal kablosu veya Di (veri girişi), Wemos pinine D1 olarak lehimlenmiştir. Bununla seri olarak 300-500 Ohm'luk bir direnç eklemeyi öneren bazı siteler var, ancak henüz bir problem yaşamadım, bu yüzden şimdilik sadece doğrudan bağlantı.

İyi uygulamayı sağlamak için ve Adafruit gibi sitelerin tavsiyesi üzerine Di hattı ile neopiksele seri olarak bir 330R direnç koydum. Halkadaki ilk LED'in sihirli perileri salmasını önlemek içindir ve basitçe kabloyu kesip bir direnç koyarak yapılır. Küçük bir ısı büzüşmesi herhangi bir kısa devreyi durduracaktır. Direnci oldukça kısa kesebilir ve her iki uca bir çember koyabilir ve aynısını tel ile yapabilirsiniz.

Düğmenin diğer teli doğrudan D2 pimine gider. Bu, yazılım içinde bu pime bir PULLUP komutu koyarak işlendiğinden, bir çekme direncine gerek yoktur.

Temelde hepsi bu kadar.

Adım 10: 3D Baskı

Giant LED için kullandığımız STL dosyaları ektedir. Dosyalar astro73'ün bir remiksi/yeniden işlenmesidir ve tüm dosyaları https://www.thingiverse.com/thing:3290837 adresinden de alabilirsiniz.

Bacaklar ve taban için Prusa i3'te gerçekten iyi çalışan bir Sunlu PETG+ filament kullandım ve %10 veya %20 gyroid dolgu kullandım.

LED'in kendisi için Sunlu şeffaf PLA kullanıyorum ve eşmerkezli üst ve alt katmanlarla yaklaşık %10 dolgu kullanıyorum.

Her birinde Slic3r'de yalnızca stok Prusa PET ve Prusa PLA ayarlarını kullanıyorum ve hepsi iyi sonuç verdi. Bacaklarımda biraz ip var ama üzerlerine bir kaynak makinesi sürüyorum ve ip kayboluyor:)

Adım 11: Dev LED Montajı

Dev LED Montajı
Dev LED Montajı
Dev LED Montajı
Dev LED Montajı
Dev LED Montajı
Dev LED Montajı

Tüm parçalar gerçekten kolayca bir araya geliyor, vidanın şeyi bir arada tutmasını sağlamak için tabana bir M3 somunu bastırmanız gerekiyor. Ayrıca NeoPixel'i önce bacaklardan WEMOS'a bağlamanız gerekir. Bazı konektörleri nasıl takacağımı düşünüyordum ama gelecekte parçalanmayacağına karar verdim.

Objektif, bacaklara sadece bir itmeyle oturur ve bunlar da tek bir M3x20mm cıvata ile tabana cıvatalanır. Güzel ve özgürce hareket etmesi için düğme deliğinin içinde bir bıçak gezdirmeniz gerekebilir. Wemos, alttan vidalanmış 2 adet M2x8 lokma cıvata ile yerinde tutulur.

Bitirmek için, gerekirse kaymayı durdurmak için tabana bir parça keçe yapıştırabilirsiniz.

Adım 12: Kurulum ve Çalıştırma Talimatları

Image
Image
Kurulum ve Çalıştırma Talimatları
Kurulum ve Çalıştırma Talimatları
Kurulum ve Çalıştırma Talimatları
Kurulum ve Çalıştırma Talimatları

Her şey hazır ve yüklenen yazılım ile usb'ye biraz güç verin ve DEV LED yanmalı ve LED KIRMIZI olacak ve ardından sarı renge dönüşecektir. Bu, çevrimdışı olduğunu ve wifi yapılandırmasını beklediğini gösterir. GIANT LED wifi ağı için bir telefon veya benzeri bir görünüm kullanarak bağlanın ve WiFi Manager ekranını alacaksınız. Yerel bölgenizi taramış olacak ve sadece wifi bilgilerinizi gireceksiniz, ESP yeniden başlatılacak ve şimdi yeşil bir ışıkla çevrimiçi olacaksınız. Ayrıca bu noktada IO'ya bağlanacak ve daha önceki mesajları görmediği için uyarı ışıkları yanacaktır. Düğmeye birkaç kez basın ve GIANT LED artık güncellemelerin gelmesi için hazırdır.

Bu noktada Adafruit IO panosuna gidebilir ve her bir beslemeye biraz veri ekleyebilir ve ışıkların uyarı moduna geçtiğini görebilirsiniz.

İyi eğlenceler !

Adım 13: Dev LED Başka Ne Yapabilir?

Dev LED Başka Ne Yapabilir?
Dev LED Başka Ne Yapabilir?
Dev LED Başka Ne Yapabilir?
Dev LED Başka Ne Yapabilir?

Bunun gibi bir tasarımın temellerine sahip olduğunuzda ve IFTTT ile onu birçok şey için kullanabilirsiniz. Gmail gelen kutusu uyarısı kolay bir uyarıdır ve Adafruit ayrıca Webhooks ile çalıştığı için diğer programlar da ona veri gönderebilir. Bir iş projesinin parçası olarak bazı Big Query veri yüklemelerini takip etmek için şu anda ayarlanmış bir tane var.

Ayrıca buton ile diğer DEV LED'lere de sinyal vermek için kullanabilirsiniz, farklı evlerde bir tane bulundurabilir ve diğer tarafın butona basmasını sağlamak için ışığı iptal etmek için uzaktan gösterge olarak kullanabilirsiniz.

Akışa veri göndermenin web kancası yöntemiyle ilgili yararlı bir bağlantı burada. Bu durumda bir IFTTT uygulaması kullanıyor, ancak python ile bir CURL yöntemini kolayca kullanabilirsiniz.

io.adafruit.com/blog/notebook/2018/11/26/f…

Aslında LED'i bazı metin içeriğiyle desteklemek için tabana bir OLED 128x32 sığdırmak bile mümkün ve şu anda bunun üzerinde çalışıyorum ve STL'leri güncelleyeceğim ve IO'yu bununla kullanmak için kodu sağlayacağım.

Önerilen: