Mundarija:

Gigant LED - Odam Savajni kuzatish: 13 qadam (rasmlar bilan)
Gigant LED - Odam Savajni kuzatish: 13 qadam (rasmlar bilan)

Video: Gigant LED - Odam Savajni kuzatish: 13 qadam (rasmlar bilan)

Video: Gigant LED - Odam Savajni kuzatish: 13 qadam (rasmlar bilan)
Video: GEOGRAFIYA O'QITUVCHISI VA UNING GIGANT ZAVODI (TO'LIQ VIDEO) Keng Makon 2024, Iyul
Anonim
Gigant LED - Odam Savajni kuzatish
Gigant LED - Odam Savajni kuzatish
Gigant LED - Odam Savajni kuzatish
Gigant LED - Odam Savajni kuzatish
Gigant LED - Odam Savajni kuzatish
Gigant LED - Odam Savajni kuzatish

Bu erda siz Twitter, YouTube va Twitch ogohlantirish chiroqlari vazifasini bajarishga mo'ljallangan Giant LED-ni topasiz. Men uchun asosiy maqsad - bu Adam Savage va sinovdan o'tgan jamoaning tvitlari, videolari yoki tebranishlari bo'lganida ogohlantirish berish va adolatli bo'lish uchun men Robert Kovan, Mexanik Marti va boshqalar kabi ergashgan boshqa odamlar.

Shubhasiz, men telefonimda yoki noutbukda twitter, twitch va boshqalarni ishlatardim, lekin juda ko'p xizmatlar va bildirishnomalar borki, men hammasini o'chirib qo'yaman, bundan tashqari, telefon soat 22:00 dan keyin jim rejimga o'tadi, chunki u ham ishlaydi. Vebhooks menda har kuni etarli miqdordagi yozuvlar bilan OK yangilanganmi yoki yo'qligini bilish uchun ish bilan bog'liq bo'lgan ba'zi Biq Query jadvallaridan yangilanishlarni olish uchun tuzilgan.

Adafruit-da Adafruit IO deb nomlangan xizmat bor, men sinab ko'rmoqchi edim va men butun yil davomida Wemos D1 Mini versiyasida yaxshi so'zlarni eshitganimdan so'ng ESP8266 ni qayta sinab ko'rishni xohladim. Hammasi men topdim. Astro73 tomonidan bir narsaga ega LED uchun dizayn. Men shundan boshladim va uni miqyosi uchun biroz qayta ishladim, shuningdek, tayanch tugmachasini va boshqa kosmetik o'zgarishlarni qo'shdim. Remixni bu erda topishingiz mumkin

Bundan tashqari, hozirda Alexa orqali IFTTT alexa trigger so'zining paydo bo'lishi bilan ovozni boshqarish mumkin.

1 -qadam: ingredientlar

Agar siz ulardan birini qilmoqchi bo'lsangiz, qismlar ro'yxati juda kichik va ayni paytda juda arzon. Agar siz kutishga qarshi bo'lmasangiz, asosiy qismlarni chet eldan olib kelishingiz va xarajatlarni yanada kamaytirishingiz mumkin. Ammo asosiy tarkibiy qism - ulkan LED korpus va taglik. Agar sizda 3D printer bo'lsa, unda hamma narsa tayyor, agar bo'lmasa, qismlarni chop etadigan bir nechta onlayn -printer kompaniyalari mavjud. Faqat 3tasi bor, shuning uchun ham ancha arzon bo'lishi kerak.

1. Wemos D1 Mini R3

2. Neopixel 8 LED

3. Qora PETGda bosilgan taglik va oyoqlar

4. Shaffof PLAda bosilgan linzalar va yorug'lik ushlagichi

5. 12 mm kvadrat x1 tugmachali tugma

6. Dumaloq tugmachali qopqoq x1

7. Quvvat uchun USB sim va adapter

8. M3x20 tugma boshi

9. M3 yong'oq

10. M2x8mm murvat x2

11. M2 yong'oq x2

12. Ba'zi qora, qizil va sariq simlar

13. 300-500 Ohm qarshilik

14. Issiqlik o'lchovining kichik bo'lagi

Siz boshqa ESP qurilmalaridan, hatto huzzadan ham foydalanishingiz mumkin, lekin korpus mini teshiklari uchun mo'ljallangan bo'lib, u teshiklari bor va uni yopishtirishdan saqlaydi.

2 -qadam: asboblar

Buni yaratish va qurish uchun sizga quyidagilar kerak bo'ladi

1. 3D printer

2. 1,5 mm va 2 mm Allen kaliti

3. Lehimlash temir va lehim

4. Yirtqichlar

5. Pense

6. Hazil tuyg'usi

7. Kesish uchun skalpel

3 -qadam: Kod talablari

Shunday qilib, biz qurilishga kirishdan oldin, men o'zim kiritmoqchi bo'lgan ba'zi talablarni bayon qilmoqchiman. Bularning ko'pini men boshlashdan oldin yodda tutgan edim va nima qilmoqchi ekanligimni aniqlash uchun bir nechta oqimlarni chizdim. Bu davom etar ekan, men hal qilmoqchi bo'lgan xizmatlar bilan bog'liq ba'zi muammolarni aniqladim.

Talablar.

Men LEDni yangi tvit yoki video joylashtirilganda ko'rsatishini xohlardim, shuningdek, Twitch -ning o'ziga xos kanali ishga tushganda paydo bo'ladi. Men ogohlantirishni bekor qilmaguncha davom etishini xohlardim, shunda men bir muncha vaqt bo'lmaganimda, men bo'lmaganimda nima bo'lganini bilardim. Men, shuningdek, dasturiy ta'minotni qayta yuklamasdan, Wi-Fi-ga kirishni sozlashni xohlardim. Oxirgi narsa - voqealarga jonli javob berishdan tashqari, har 15 daqiqada unga berilgan ma'lumotlarning holatini tekshirish kerak edi.

Shunday qilib, asoslar bilan, keyingi narsa, har bir qism qanday bajarilishini aniqlash edi. Siz mening fikrlarimni quyida ko'rishingiz mumkin, qaysi qismi qaysi turdagi dasturiy ta'minot yoki platforma tomonidan boshqariladi.

1. Adafruit IO, bu ogohlantirishlar uchun kanallarni sozlash uchun ishlatiladi, siz bu erda hisobni olishingiz mumkin

Men buni xabarlarni navbatga yozish xizmati sifatida ishlataman, u erda men IFTTT -dan xabar yuboraman, keyin Giant LED bu xabarlarni qabul qilishi mumkin, shunda u ularga ta'sir qilishi mumkin.

2. IFTTT, https://ifttt.com/ va bu tanlangan Twitter, YouTube va Twitch kanallarini skanerlash uchun ishlatiladi va keyin tadbirni Adafruit IO ga yuboradi.

3. Bu tasmalarni o'qish uchun ESP8266 kodi va bu standart Arduino IDE (v1.8.8) yordamida ESP8266ga yoziladi.

4. Adafruit IO tasmalarini o'qish va Neopixelni yoqish uchun ESP8266 -ga yuklangan Arduino kodi.

5. Ogohlantirishni o'chirish uchun tugmani o'qish uchun Arduino kodi

6. ESPni qaytarmasdan turib, Wi -Fi adapterini sozlash imkoniyatiga ega bo'ling va buning uchun men Wi -Fi menejeri Tzapu, https://github.com/tzapu/WiFiManager tomonidan WiFi menejeri kutubxonasidan foydalandim, lekin sozlash imkoniyatlari biroz o'zgarishi kerak edi. Adafruit IO kutubxonalari.

4 -qadam: Adafruit IO ni sozlash

Adafruit IO ni o'rnatish
Adafruit IO ni o'rnatish

Bu birinchi qadam, chunki sizga bu erda yaratiladigan kirish kalitlari kerak bo'ladi, shuningdek, IFTTT voqealarni yuboradigan tasmalarni yaratishingiz kerak bo'ladi. Siz ushbu va IFTTT hisobini o'rnatishingiz va Arduino loyihasiga o'tishdan oldin hamma narsani sozlashingiz va ishlashingiz mumkin.

Adafruit misollarini nusxalashning o'rniga, https://learn.adafruit.com/gmailbox/adafruit-io-se… asoslarini bu erda topishingiz mumkin.

Keyin GIANT LED uchun siz standart kanallarga quyidagi kanallarni qo'shishingiz kerak bo'ladi

1. rang - bu bizga Alexa kabi rangni masofadan o'zgartirish imkonini beradi

2. qimirlash

3. twitterfan

4. youtubefan

Agar siz hali kirishni chaqirmagan bo'lsangiz, siz yangi guruh yaratishingiz kerak, keyin bu guruhga raqamli deb nomlangan kanal ham yarating. Agar biz ushbu qurilmadan boshqa maqsadlarda foydalanishni kengaytirmoqchi bo'lsak, bu tugmani bosish ta'sirini ham ko'rishga imkon beradi.

Agar siz hozirda asboblar panelida o'ynashni xohlasangiz, uni ma'lumot va xatolarni aniqlash maqsadida qo'shishingiz mumkin.

5 -qadam: IFTTT -ni sozlash

IFTTT ni sozlash
IFTTT ni sozlash
IFTTT ni sozlash
IFTTT ni sozlash

Siz shuningdek Adafruit qo'llanmasiga amal qilishingiz mumkin, https://learn.adafruit.com/gmailbox/ifttt-setup. Keyin siz Twitter, youtube va twitch harakatlarini tanlab, tomosha ro'yxatlarini o'rnatishingiz va keyin ularni tegishli kanallarga yuborishingiz mumkin. Men oddiy videoni ilova qildim, shunda u qanchalik tez bo'lishi mumkinligini ko'rasan.

Bundan tashqari, agar siz Alexa -ning LED rangini ovoz bilan boshqarishni xohlasangiz, hozirda Amazon Alexa appleti mavjud. Ulardan birini o'rnatish uchun dasturni tanlang va ko'k so'zini tanlang, so'ng uni rang deb nomlangan Adafruit kanaliga ulang va shu kanalga yuboriladigan ma'lumot sifatida 0000ff kiriting. Agar xohlasangiz, GIANT LED -ga qo'shimcha buyruqlarni qaytarishingiz yoki qayta yuklashingiz mumkin.

IFTTT tetikini o'rnatayotganda siz yuboriladigan ma'lumotlarni tanlashingiz kerak va bu IFTTTda "ingredientlar" deb nomlanadi. Bizga kerak bo'lgan birinchi qism bu "Foydalanuvchi nomi", keyin bo'sh joy va keyin "CreatedAt"

Biz ikkala elementni ham tanlaymiz, shunda ma'lumotlar ESP8266 ga kelganda, biz uning yangi tvit ekanligini va bir xil foydalanuvchilarning oldingi tvitlaridan farq qilishini aniqlaymiz. Bu nimani yoqtirishini ilova qilingan rasmdan ko'rishingiz mumkin.

6 -qadam: ESP8266 taxtalarini Arduino IDE -ga o'rnatish

Bu erda ishlar biroz murakkabroq va ularni tartibga solish uchun biroz ko'proq vaqt kerak bo'ladi. ESP8266 -dan tashqari sizga Adafruit IO kutubxonalari ham kerak bo'ladi va siz ular uchun ushbu qo'llanmani bajarishingiz mumkin.

learn.adafruit.com/gmailbox/arduino-setup

Bu erda ESP8266 taxtalarini qanday qo'shish haqida oddiy tushuntirish mavjud

Arduino IDE -ning eng so'nggi versiyasiga ishonch hosil qilishni unutmang va men buni yozish paytida 1.8.8 dan foydalanganman.

Biz foydalanadigan boshqa kutubxona bu SimpleTimer, chunki bu bizga taymerni o'rnatishga imkon beradi, shuning uchun biz vaqti -vaqti bilan tasmalarni tekshirib turamiz, buning uchun ko'rsatmalarni https://playground.arduino.cc/Code/SimpleTimer# da topishingiz mumkin. Yuklab oling

7 -qadam: WiFi menejeri kutubxonasini o'rnatish

WiFi -ni masofadan sozlash konfiguratsiyasini olish uchun biz Tzapu Wi -Fi menejeridan foydalanamiz, bu haqda batafsil ma'lumot va kutubxonalarni qanday o'rnatish mumkin, bu erda, github.com/tzapu/WiFiManager

Bu tashqi kutubxonalarning juda oddiy o'rnatilishi va bu variant Arduino IDE asboblari bo'limining kutubxonani boshqarish bo'limida.

8 -qadam: ESP8266 kodi - disk raskadrovka yordamida

// Bu kod bosma bayonotlarni o'z ichiga oladi, shuning uchun siz uning ishlashini ketma -ket monitor orqali kuzatishingiz mumkin

// Adafruit IO RGB LED chiqish misoliga asoslanib // Adafruit vaqtni va resurslarni ushbu ochiq kodli kod bilan ta'minlaydi. // Iltimos, Adafruit -dan // mahsulotlarini sotib olish orqali Adafruit va ochiq manbali uskunalarni qo'llab -quvvatlang! // // Adafruit Industries uchun Todd Treece tomonidan yozilgan // Mualliflik huquqi (c) 2016-2017 Adafruit Industries // MIT litsenziyasi bo'yicha litsenziyalangan. // // Yuqoridagi barcha matnlar har qanday qayta taqsimotga kiritilishi kerak. // soddalashtirgichdan foydalanadi https://playground.arduino.cc/Code/SimpleTimer#Do… // https://playground.arduino.cc/Code/SimpleTimer#Do… // Ajax Jones kodining qolgan qismi https:// playground.arduino.cc/Code/SimpleTimer#Do // https://playground.arduino.cc/Code/SimpleTimer#Do… // ******************* ******* Konfiguratsiya *******************************/ #IO_USERNAME "ni belgilang" sizning IO Foydalanuvchi nomi "#IO_KEY" ning IO kalitini "// bo'sh qoldiring, chunki biz ularni Wi -Fi menejeri orqali olamiz, shu tarzda yaxshi ishlayotgandek tuyuladi #WIFI_SSID" ni belgilang "" #WIFI_PASSni aniqlang "" // biz buni AdafruitIO kabi qo'shmaymiz. uning versiyasini kiriting // #o'z ichiga //https://github.com/esp8266/Arduino // kutubxona uchun zarur #qo'shish #qo'shish #"WiFiManager.h" ni qo'shish //https://github.com/tzapu/WiFiManager # SimpleTimer taymerini o'z ichiga oladi; #"AdafruitIO_WiFi.h" ni qo'shing AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS); // ************************ NeoPixel konfiguratsiyasi ********************** ********* // #"Adafruit_NeoPixel.h" ni qo'shish #PIXEL_PIN 5ni belgilash #PIXEL_COUNT ni belgilash 8 int NUM_LEDS = PIXEL_COUNT; #dexin PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel piksel = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE); // Asosiy ranglar va standart rang long default_color = 865554; uzun RED_color = 2689027; // qizil #290803 uzun Yashil_rang = 865554; // yashil #0d3512 uzunlikdagi BLUE_color = 856117; // ko'k #0d1035 uzun PURPLE_color = 2364968; // binafsha rang #241628 uzun BRIGHTRED_color = 15990784; // yorqin qizil #f40000 // ------------------------------------------ ---------------------------------------------- // vaqt https://www.safaribooksonline.com/library/view/arduino-cookbook-2nd/9781449321185/ch12.html https://playground.arduino.cc/Code/SimpleTimer#Do… https:// o'yin maydonchasidan olingan. arduino.cc/Code/SimpleTimer#Do… const oneSecond = 1000; // soniya - ming millisekund const const oneMinute = oneSecond * 60; const long fiveMinutes = oneMinute * 5; const long o'n beshMinutes = beshMinutes * 3; const long oneHour = o'n beshMinutes * 4; // Bizga eng yoqadigan Twitter foydalanuvchilari yonadi va biz tanlagan boshqa tvitlar String SuperTweet = {"ajaxjones", "donttrythis", "prodnose", "testcom"} rangini o'zgartiradi. String SuperTuber = {"sinovdan o'tgan", "kovan", "marti"}; // ogohlantirish holatini o'rnatadi, shuning uchun biz LEDlarning asosiy halqasida miltillashni davom ettira olamiz, bool WHIZZY_TWEET = false; boiz WHIZZY_TUBER = noto'g'ri; boiz WHIZZY_TWITCH = noto'g'ri; // Oxirgi tvit va youtube -ni saqlaydi, shuning uchun biz xizmatni vaqti -vaqti bilan ikki marta tekshirishga majburlashimiz mumkin String lasttweet = ""; Oxirgi qator = ""; Oxirgi satr = ""; // raqamli pin 5, bu biz ogohlantirish ranglarini tiklash uchun foydalanadigan tugma #define BUTTON_PIN 4 // tugma holatini, lekin biz interupt bool current = false tugmachasini qidirayotganimizda ishlatmaganmiz. bool last = false; // "rang" tasmasini o'rnating, shunda biz talablarga muvofiq ranglarni sinab ko'rishimiz va yuborishimiz mumkin yoki Alexa trigger AdafruitIO_Feed *color = io.feed ("rang") dan foydalanishimiz mumkin; // "twitterfan" tasmasini o'rnating - Blue AdafruitIO_Feed *twitter = io.feed ("twitterfan"); // "youtubefan" tasmasini o'rnating - Red AdafruitIO_Feed *youtube = io.feed ("youtubefan"); // "tebranish" tasmasini o'rnating - Binafsha AdafruitIO_Feed *twitch = io.feed ("burish"); // "raqamli" tasmani o'rnatish AdafruitIO_Feed *digital = io.feed ("input.digital"); // ------------------------------------------------ ----------------------------------------- void setup () {// ni o'rnating tugma pimi kirish sifatida, biz INPUT_PULLUP -dan foydalanamiz, chunki pinMode tashqi qarshiligini ishlatishga hojat yo'q (BUTTON_PIN, INPUT_PULLUP); // tugmani biriktirish uchun ISR vektoriga uzilishni biriktiring attachInterrupt (digitalPinToInterrupt (BUTTON_PIN), handleInterrupt, FALLING); // Serialni ishga tushiring va ketma -ket monitor ochilishini kuting, keyin io.adafruit.com Serial.begin (115200) ga ulaning; while (! Seriyali); // neopixel boshlang'ich piksellari.begin (); // Ichki holatni qizil rangga qo'ying, shunda biz oflaynda ekanligimizni bilib olamiz va setAll (0xf4, 0x00, 0x00); // qizil // sinov uchun, bu WiFi WiFi.printDiag (Serial) holatini ko'rsatadi; WiFiManager wifiManager; // oldingi Wi -Fi tarmog'iga ulanishda chaqiriladigan qayta qo'ng'iroqni o'rnatish muvaffaqiyatsiz tugadi va kirish nuqtasi rejimiga kiradi wifiManager.setAPCallback (configModeCallback); // saqlangan sozlamalarni tiklang, Wi -Fi menejerini sinovdan o'tkazishga majburlash uchun keyingi qatorga izoh qoldirmang // telefon yoki planshetdan foydalanib ulkan LED tarmog'ini qidiring //wifiManager.resetSettings (); // konfiguratsiya portali o'chirilgunga qadar tanaffusni belgilaydi // hammasini qayta urinish yoki uyquga o'tkazish uchun foydalidir // soniyalarda wifiManager.setTimeout (240); if (! wifiManager.autoConnect ("GIANT LED")) {Serial.println (F ("ulanib bo'lmadi va taymut tugadi"))); // tiklash va qaytadan urinib ko'ring kechiktirish (3000); ESP.reset (); kechikish (1000); } // sinov uchun biz ulanish uchun to'g'ri ma'lumotlarga ega ekanligimizni ko'rishimiz mumkin //Serial.println (WiFi. SSID ()); //Serial.println(WiFi.psk());//WiFi.begin(WIFI_SSID, WIFI_PASS); // while (WiFi.status ()! = WL_CONNECTED) {// kechiktirish (500); //Serial.print ("."); //} Serial.println (); Serial.println (F ("Wi -Fi ulangan")); Serial.println (F ("IP -manzil:")); Serial.println (WiFi.localIP ()); // endi biz Serial.print IO xizmatiga ulanamiz (F ("Adafruit IO ga ulanish")); io.connect (); // "rang" tasmasi uchun xabar ishlovchilarini o'rnating. color-> onMessage (handleMessage); // "twitterfan" tasmasi uchun xabar ishlovchilarini o'rnating. twitter-> onMessage (twitterMessage); // "youtubefan" tasmasi uchun xabar ishlovchilarini o'rnating. youtube-> onMessage (youtubeMessage); // "tebranish" tasmasi uchun xabar ishlovchilarini o'rnating. twitch-> onMessage (twitchMessage); // ulanishni kuting (io.status () <AIO_CONNECTED) {Serial.print (F (".")); kechikish (500); } // biz bog'langanmiz Serial.println (); Serial.println (io.statusText ()); //Serial.println(sizeof(SuperTweet)); //Serial.println(sizeof(SuperTweet [0]))); // Biz kutayotgan Twitter hisoblari ro'yxatini chop eting (bayt idx = 0; idx <sizeof (SuperTweet) / sizeof (SuperTweet [0]); idx ++) {Serial.print (F ("SuperTweet [")); Serial.print (idx); Serial.print ("] = '"); Serial.print (SuperTweet [idx]); Serial.println ("'"); } // Biz kutayotgan YouTube hisoblari ro'yxatini chop eting (bayt idx = 0; idx get (); // tasmalarning mavjud holatlarini so'rang, shuning uchun youtube ishga tushganda resetni bosish kerak bo'ladi. -> olish (); twitter-> olish (); twitch-> olish (); uchun (int i = 0; i olish (); twitter-> olish (); twitch-> olish (); Serial.print ("ba'zi tvitlar olish"); Serial.print ("ish vaqti (lar):"); Serial.println (millis () / 1000);} // ---------------- -------------------------------------------------- ---------------------- void loop () {// io.run (); barcha chizmalar uchun kerak. io.run (); taymer. run (); if (WHIZZY_TWEET == true) {RunningLights (0x0d, 0x10, 0x35, 250);} if (WHIZZY_TUBER == rost) {RunningLights (0x29, 0x08, 0x03, 250);} if (WHIZZY_TWITCH == rost)) {RunningLights (0x24, 0x16, 0x28, 250);}} // --------------------------------- -------------------------------------------------- ------ // interupni tugma bosilganda ogohlantirishni o'chirishga sozlang va Internetdagi bo'sh joyni tekshiringInterrupt () {WHIZZY_TWEET = yolg'on; WHIZZY_TUBER = noto'g'ri; WHIZZY_TWITCH = noto'g'ri; joriy = rost; // hozirgi holatini adafruit io-dagi 'input.digital' tasmasiga yuboring, shunda biz uni raqamli ko'rishimiz mumkin-> saqlash (joriy); uchun (int i = 0; i ")); Serial.print (joriy); Serial.print (F (" va standart rang ")); Serial.println (default_color); joriy = noto'g'ri; raqamli-> saqlash (joriy)); while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (500); setAll (0xeb, 0xfb, 0x03); // Sariq ebfb03}} // -------------- -------------------------------------------------- ------------------------- // bu "twitter" xabari kelganida chaqiriladi-LEDni "Blue" void twitterMessage (AdafruitIO_Data *ma'lumotlari) ga o'rnating. {String tweeter = (data-> toString ()); tweeter.toLowerCase (); if ((lasttweet! = Tweeter) && (tweeter! = "")) {Lasttweet = tweeter; setAll (0x0d, 0x10, 0x35); // Serial.print (F ("Tweet:")); Serial.print (tweeter); // tweet ko'k rangini o'rnating (bayt idx = 0; idx = 0) {// tweets whizzy #0d1035 WHIZZY_TWEET = true; Serial.print ("by"); Serial.print (SuperTweet [idx]);}} Serial.println ("");}} // --------- -------------------------------------------------- ---------------------------- - // bu "youtube" xabari kelganida chaqiriladi- LEDni RED void youtubeMessage (AdafruitIO_Data *data) ga o'rnating {String tuber = (data-> toString ()); tuber.toLowerCase (); if ((lasttube! = tuber) && (tuber! = "")) {lasttube = tuber; setAll (0x29, 0x08,0x03); // youtube qizil rangini o'rnating 290803 Serial.print (F ("Youtube:")); Serial.println (tuber); // favqulodda Youtuber -ni tekshiring (bayt idx = 0; idx = 0) {// O'z videolarini xiralashtirishga ruxsat bering #0d1035 WHIZZY_TUBER = rost; Serial.print ("tomonidan"); Serial.print (SuperTuber [idx]); }} Serial.println (""); }} // ---------------------------------------------- ------------------------------------------- // bu har doim a deb nomlanadi "Twitch" xabari keladi - LEDni PURPLE void twitchMessage (AdafruitIO_Data *data) ga o'rnating {String twitch = (data-> toString ()); twitch.toLowerCase (); if ((lasttwitch! = twitch) && (twitch! = "")) {lasttwitch = twitch; setAll (0x24, 0x16, 0x28); // Twitch binafsha rangini o'rnating #241628 Serial.print (F ("Twitch:")); Serial.println (burish); // Sevimli Twitcher uchun chek yo'q, biz faqat bitta WHIZZY_TUBER = true ga amal qilamiz; Serial.println (""); }} // ---------------------------------------------- ------------------------------------------- // bu funksiya har doim chaqiriladi "Rangli" xabar qabul qilinadi // u oxirgi rang tasmasi qiymatining bekor qilinishiga asoslanib ishga tushirishda standart rangni o'rnatadi.: ")); Serial.println (ma'lumotlar-> qiymat ()); uzun rang = ma'lumotlar-> toNeoPixel (); // default_color = rang; Serial.print (F ("HEX uzoq vaqt olindi:")); Serial.println (rang); uchun (int i = 0; i <PIXEL_COUNT; ++ i) {piksel.setPixelColor (i, rang); } showStrip (); } // ----------------------------------------------- -------------------------------------------- RunningLights (bayt qizil, bayt yashil), ko'k bayt, int WaveDelay) {int Pozitsiya = 0; uchun (int j = 0; j <NUM_LEDS; j ++) {Manzil ++; // = 0; // Lavozim + Baho; uchun (int i = 0; i <NUM_LEDS; i ++) {setPixel (i, ((gunoh (i + pozitsiya) * 127 + 128) / 255) * qizil, ((sin (i + pozitsiya) * 127 + 128) / 255)*yashil, ((gunoh (i + pozitsiya)*127 + 128) / 255)*ko'k); } showStrip (); kechikish (WaveDelay); }} // ---------------------------------------------- ------------------------------------------- // Neopixel tartiblari bekor qilingan setAll (bayt qizil, bayt yashil, bayt ko'k) {for (int i = 0; i getConfigPortalSSID ()); // konfiguratsiya rejimiga kirdi, Neo Pixel -ni binafsha rangga qo'ying #241628 = 2364968 // setAll (0x24, 0x16, 0x28); setAll (0xeb, 0xfb, 0x03); // Sariq ebfb03}

9 -qadam: Hammasini birgalikda lehimlash

Hammasini birgalikda lehimlash
Hammasini birgalikda lehimlash
Hammasini birgalikda lehimlash
Hammasini birgalikda lehimlash
Hammasini birgalikda lehimlash
Hammasini birgalikda lehimlash

Ushbu dizayndagi hamma narsa lehimlangan va ularni boshqarish oson bo'lishi kerak. Ishni osonlashtirish uchun men 3 xil rangli simlardan foydalandim va birinchi navbatda WEMOS -ga neopiksel uchun simni o'lchash. Men ularni o'rab oldim va kichkina issiqlikni qisib qo'ydim, so'ng ularni linzalarga lehimlab qo'ydim, shunda u linzalarga tekis tushadi.

Tugma keyingi edi va taglikka mahkam o'rnashadi. Tugmaning bir tomoni Gnd -ga o'tadi va u neopikselning Toprak simlari bilan birga buriladi. Keyin men ularni konserva qildim va ularni WEMOS -ning asosiy piniga lehimladim.

Neopixel uchun quvvat manbai 5v PInga o'tadi. Neopikseldagi signal simlari yoki Di (ma'lumotlar) Wemos piniga D1 sifatida lehimlanadi. 300-500 Ohm qarshilikni ketma-ket kiritishni taklif qiladigan ba'zi saytlar bor, lekin hozircha menda hech qanday muammo yo'q edi, shuning uchun hozircha bu to'g'ridan-to'g'ri aloqa.

Yaxshi amaliyotni ta'minlash uchun va Adafruit kabi saytlarning tavsiyasi bilan men 330R rezistorini dioplastikali diapazonli ketma -ket qo'ydim. Bu halqadagi birinchi LEDning sehrli piksellarni chiqarishiga yo'l qo'ymaslik va simni kesish va rezistorni qo'yish orqali amalga oshiriladi. Issiqlik o'lchagichining kichik bo'lagi har qanday qisqa yo'lni to'xtatadi. Siz rezistorni juda qisqa qilib kesib qo'yishingiz va har bir uchiga halqa qo'yishingiz va sim bilan ham shunday qilishingiz mumkin.

Tugma uchun boshqa sim to'g'ridan -to'g'ri D2 piniga o'tadi. Chiqib ketish qarshiligiga hojat yo'q, chunki bu dasturiy ta'minotda bu pinga qarshi PULLUP buyrug'i qo'yiladi.

Bu erda hamma narsa bor.

10 -qadam: 3D chop eting

Bu erda biz ulkan LED uchun foydalanadigan STL fayllari biriktirilgan. Fayllar astro73 -ning remiksi/qayta ishlanishi bo'lib, siz barcha fayllarni https://www.thingiverse.com/thing:3290837 saytidan olishingiz mumkin.

Oyoqlar va taglik uchun men Sunlu PETG+ filamentidan foydalandim, u Prusa i3 -da juda yaxshi ishlaydi va men 10 yoki 20% giroid to'ldirishni ishlatardim.

LEDning o'zi uchun men Sunlu shaffof PLA -dan foydalanganman va yuqori va pastki qatlamlarning konsentrik qatlamlari bilan taxminan 10% to'ldirishni ishlatganman.

Har birida men faqat Slic3r -dagi Prusa PET va Prusa PLA aktsiyalarini ishlataman va ularning hammasi yaxshi ishladi. Men oyoqlarimga ozgina tiqilib qolaman, lekin men ularning ustiga shamchiroq qo'yaman va simlar yo'qoladi:)

11 -qadam: ulkan LEDni yig'ish

Gigant LED yig'ilishi
Gigant LED yig'ilishi
Gigant LED yig'ilishi
Gigant LED yig'ilishi
Gigant LED yig'ilishi
Gigant LED yig'ilishi

Hamma qismlar bir -biriga juda oson birlashadi, vintni bir -biriga mahkam ushlab turishi uchun taglikka M3 somunini bosish kerak. Bundan tashqari, NeoPixel -ni WEMOS -ga avval oyoqlari orqali ulashingiz kerak. Men ba'zi ulagichlarni qanday qo'yish kerakligini o'ylardim, lekin kelajakda u ajralmaydi deb qaror qildim.

Ob'ektiv - bu oyoqlarga turtki bo'lib, ular o'z navbatida taglikka M3x20 mm murvat bilan mahkamlanadi. Tugma teshigining ichki tomonida pichoq bilan yurish kerak bo'lishi mumkin, shunda u yaxshi va erkin harakatlanadi. Wemos pastdan vidalanadigan 2 M2x8 soket murvat bilan ushlab turiladi.

Tugatish uchun, agar kerak bo'lsa, siljishni to'xtatish uchun taglikka bir bo'lak yopishtirib qo'yishingiz mumkin.

12 -qadam: O'rnatish va ishlatish bo'yicha ko'rsatmalar

Image
Image
O'rnatish va ishlatish bo'yicha ko'rsatmalar
O'rnatish va ishlatish bo'yicha ko'rsatmalar
O'rnatish va ishlatish bo'yicha ko'rsatmalar
O'rnatish va ishlatish bo'yicha ko'rsatmalar

Hammasi tayyor va yuklangan dasturiy ta'minot usbga bir oz kuch sarflasa, GIANT LED paydo bo'lishi kerak, LED esa qizil rangga o'tadi va keyin sariq rangga o'zgaradi. Bu shuni anglatadiki, u tarmoqdan tashqarida va wifi konfiguratsiyasini kutmoqda. Telefon yoki shunga o'xshash ko'rinishda GIANT LED wifi tarmog'ini qidiring va ulang, shunda siz WiFi menejeri ekranini olasiz. U sizning hududingizni skanerdan o'tkazadi va siz faqat Wi -Fi ma'lumotlarini kiritasiz, ESP qayta ishga tushadi va siz hozir yashil chiroq bilan onlayn bo'lasiz. U ayni paytda IO ga ulanadi va ogohlantirish chiroqlari yonadi, chunki u hali oldingi xabarlarni ko'rmagan. Tugmani bir necha marta bosing va GIANT LED endi yangilanishlar kelishiga tayyor.

Siz bu vaqtda Adafruit IO boshqaruv paneliga o'tishingiz va har bir tasmaga ba'zi ma'lumotlarni qo'shishingiz va chiroqlar ogohlantirish rejimiga o'tishini ko'rishingiz mumkin.

Maza qiling !

13 -qadam: Gigant LED boshqa nima qila oladi

Gigant LED boshqa nima qila oladi
Gigant LED boshqa nima qila oladi
Gigant LED boshqa nima qila oladi
Gigant LED boshqa nima qila oladi

Agar siz bunday dizaynning asoslariga ega bo'lsangiz va IFTTT yordamida siz undan ko'p narsalarda foydalanishingiz mumkin. Gmail -dan kelgan xabarlar qutisi haqida ogohlantirish juda oson va Adafruit ham Webhooks bilan ishlaganligi uchun boshqa dasturlar unga ma'lumotlarni yuborishi mumkin. Menda hozirda ish loyihasi doirasida Big Query ma'lumotlarining yuklanishini kuzatish uchun bittasi o'rnatilgan.

Bundan tashqari, tugma yordamida siz boshqa GIANT LED -larni signalizatsiya qilish uchun ham ishlatishingiz mumkin, siz uni har xil uylarda o'rnatishingiz va masofadan turib indikator sifatida ishlatishingiz mumkin.

Ma'lumotni tasmaga yuborishning webhook usuli bo'yicha foydali havola. Bu holda u IFTTT ilovasidan foydalanadi, lekin siz python bilan CURL usulini osongina ishlatishingiz mumkin.

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

Aslida, LEDni ba'zi matnli kontent bilan to'ldirish uchun OLED 128x32 ni bazaga o'rnatish mumkin, va men hozir bu ustida ishlayapman va STL -ni yangilab, IO -ni shu bilan birga kod bilan ta'minlayman.

Tavsiya: