Мазмуну:

Гигант LED - Адам Саважга көз салуу: 13 кадам (Сүрөттөр менен)
Гигант LED - Адам Саважга көз салуу: 13 кадам (Сүрөттөр менен)

Video: Гигант LED - Адам Саважга көз салуу: 13 кадам (Сүрөттөр менен)

Video: Гигант LED - Адам Саважга көз салуу: 13 кадам (Сүрөттөр менен)
Video: Giant LED operation 2024, Июль
Anonim
Giant LED - Tracking Adam Savage
Giant LED - Tracking Adam Savage
Giant LED - Tracking Adam Savage
Giant LED - Tracking Adam Savage
Giant LED - Tracking Adam Savage
Giant LED - Tracking Adam Savage

Бул жерде сиз Twitter, YouTube жана Twitch эскертүү лампасы катары иштөө үчүн кайрадан арналган Гигант LEDдин котормосун таба аласыз. Бул мен үчүн башкы максат - Адам Саваждын жана сыналган команданын твиттери, видеолору же агымдары болгондо эскертүү берүү жана адилеттүү болуу үчүн, мен ээрчиген башка эки адам Роберт Коуан, Марти Механик жана башкалар.

Албетте, мен телефонумда же ноутбугумда twitter, twitch ж. Webhooks менде ошондой эле жумушка байланышкан кээ бир Biq Query таблицаларынан жаңыртууларды алуу үчүн конфигурацияланган, алар күн сайын жетиштүү сандагы жазуулар менен жаңыртылганбы же жокпу, мага кабарлаш үчүн.

Адафрутта Adafruit IO деген кызмат бар, мен аны сынап көргүм келген жана мен Wemos D1 Mini релизиндеги кээ бир жакшы сөздөрдү уккандан кийин ESP8266 менен кайра иштөө үчүн жыл бою мааниси бар болчу. Astiver73 тарабынан нерселердин биринде LED үчүн дизайн. Мен муну менен баштадым жана масштаб үчүн бир аз иштеп чыктым, ошондой эле базага баскычты жана башка косметикалык өзгөрүүлөрдү кошуу үчүн. Ремиксти бул жерден таба аласыз

Мындан тышкары, аны азыр Alexa аркылуу башкарууга болот, ошондой эле IFTTT alexa триггер сөзүнүн келиши менен.

1 -кадам: Ингредиенттер

Эгерде сиз булардын бирин жасоону кааласаңыз, анда бөлүктөрдүн тизмеси өтө кичине жана ошондой эле арзан. Эгерде сиз күтүүнү каалабасаңыз, анда негизги бөлүктөрүн чет өлкөдөн алып келип, чыгымды дагы азайта аласыз. Бирок негизги ингредиент - Гигант LED корпусу жана базасы. Эгерде сизде 3D принтер болсо, анда баары даяр, эгер жок болсо, анда бөлүктөрдү басып чыгаруучу бир нече онлайн принтер компаниялары бар. Болгону 3 гана бар, ошондуктан бул дагы абдан арзан болушу керек.

1. Wemos D1 Mini R3

2. Neopixel 8 LED

3. Кара PETG менен басылган база жана буттар

4. Ачык PLA басылган линза жана жарык кармагыч

5. Push Button Switch 12mm чарчы x1

6. Тегерек баскычтын капкагы x1

7. USB үчүн коргошун жана бийлик үчүн адаптер

8. M3x20 баскычынын башы

9. M3 Nut

10. M2x8mm болт x2

11. М2 гайка x2

12. Кээ бир Кара, Кызыл жана Сары зымдар

13. 300-500 Ом резистору

14. Кичи бөлүк ысыктан

Сиз башка ESP түзмөктөрүн, ал тургай Хуззаны колдоно аласыз, бирок корпус мини үчүн иштелип чыккан, ал тешикчелери бар жана аны жабыштыруудан сактайт.

2 -кадам: Куралдар

Муну түзүү жана куруу үчүн сизге төмөнкүлөр керек болот

1. 3D принтер

2. 1,5 мм жана 2 мм Аллен ачкычы

3. Паяльник жана ширетүүчү

4. Wirecutters

5. Пилс

6. юмор сезими

7. Кыркуу үчүн скальпель

3 -кадам: Код талаптары

Ошентип, биз курулушка кирерден мурун, мен ага киргизгим келген кээ бир талаптарды айтып берейин. Булардын көбү башталардан мурун мен ойлогом жана мен аракет кылып жаткан нерсемди иштеп чыгуу үчүн бир нече агымдын эскизин түзмөкмүн. Убакыттын өтүшү менен мен кызматтар менен байланышкан кээ бир көйгөйлөрдү чечтим.

Талаптар.

Мен светодиод жаңы твит же видео жарыяланганда көрсөтүшүн кааладым, ошондой эле Twitchтин атайын каналы ачылганда пайда болот. Мен ошондой эле эскертмени жокко чыгармайынча улантуусун кааладым, эгер мен бир азга жок болсом, мен жокто болгонумду билмекмин. Мен ошондой эле программалык камсыздоону жаңыртпай туруп, Wi-Fiга кирүү үчүн конфигурацияланышын кааладым. Акыркы бир нерсе, окуяларга түз жооп берүүдөн тышкары, мага ар бир 15 мүнөт сайын берилүүчү маалыматтын абалын текшерүү керек болчу.

Ошентип, негиздери менен, кийинки нерсе ар бир бөлүк кантип аткарыларын иштеп чыгуу болду. Төмөндө менин идеяларымды көрө аласыз, кайсы бөлүк программалык камсыздоонун же платформанын кайсы түрү менен иштелет.

1. Adafruit IO, бул эскертүүлөр үчүн каналдарды орнотуу үчүн колдонулат, бул жерден эсеп ала аласыз

Мен муну билдирүү кезеги кызматы катары колдонгум келип жатат, анда мен ага IFTTTден билдирүүлөрдү жөнөтөм, анан Giant LED ал билдирүүлөрдү кабыл алат, ошондо ал аларга иштей алат.

2. IFTTT, https://ifttt.com/ жана бул тандалган Twitter, YouTube жана Twitch каналдарын сканерлөө үчүн колдонулат, андан кийин окуяны Adafruit IOго жөнөтөт.

3. Бул каналдарды окуу үчүн ESP8266 коду жана бул стандарттык Arduino IDE (v1.8.8) колдонуу менен ESP8266га күйүп кеткен.

4. Ardaino коду, Adafruit IO каналдарын окуу жана Neopixelди жарык кылуу үчүн ESP8266га жүктөлөт.

5. Arduino коду эскертмени тазалоо үчүн баскычты окуу

6. ESPти кайра жүктөбөстөн, WiFi адаптерин конфигурациялоого жөндөмдүү болуңуз жана бул үчүн мен WiFi менеджеринин китепканасын Tzapu, https://github.com/tzapu/WiFiManager колдондум, бирок орнотуу параметрлери бир аз өзгөрүүнү талап кылды. Adafruit IO китепканалары.

4 -кадам: Adafruit IO орнотуу

Adafruit IO орнотуу
Adafruit IO орнотуу

Бул биринчи кадам, анткени сиз бул жерде түзгөн кирүү ачкычтарына муктаж болосуз жана ошондой эле IFTTT окуяларды жөнөтө турган каналдарды түзүшүңүз керек. Сиз муну жана IFTTT эсебин орнотсоңуз болот жана бул долбоордун Arduino бөлүгүнө өтүүдөн мурун баарын орнотуп, иштей аласыз.

Adafruit мисалдарын көчүрүүнүн ордуна, негиздерин бул жерден таба аласыз https://learn.adafruit.com/gmailbox/adafruit-io-se… бул сизге орнотууга жардам берет.

Андан кийин GIANT LED үчүн төмөнкү каналдарды демейки каналдарга кошууңуз керек болот

1. түс - бул бизге Alexa сыяктуу бир нерсе менен алыстан түсүн өзгөртүүгө мүмкүндүк берет

2. титирөө

3. twitterfan

4. youtubefan

Андан кийин сиз жаңы топту түзүшүңүз керек, эгер сиз буга чейин киргизүү деп атаган эмес болсоңуз, анда бул топко дагы санарип деп аталган түрмөктү түзүңүз. Бул, эгерде биз бул түзмөктү башка максаттарда колдонууну кеңейтүүнү кааласак, баскычты басуунун эффектин көрөбүз.

Эгерде сиз дагы бул жерде маалымат панели менен ойноону кааласаңыз, анда ага бул каналдарды маалымат жана каталарды табуу максатында кошо аласыз.

5 -кадам: IFTTT орнотуу

IFTTT орнотулууда
IFTTT орнотулууда
IFTTT орнотулууда
IFTTT орнотулууда

Сиз ошондой эле бул жерде Adafruit жетектемесин ээрчип алсаңыз болот, https://learn.adafruit.com/gmailbox/ifttt-setup. Андан кийин, көрүү тизмелериңизди орнотуу үчүн Twitter, youtube жана twitch аракеттерин тандап, анан аларды тиешелүү каналдарга жөнөтө аласыз. Мен канчалык тез болорун көрүү үчүн жөнөкөй видеону тиркеп койдум.

Мындан тышкары, эгер сиз Alexa аркылуу LEDдин түсүн үн менен башкаргыңыз келсе, анда азыр Amazon Alexa апплети бар. Булардын бирин орнотуу үчүн колдонмону тандап, көк деген сөздү тандаңыз, андан кийин аны сиз орноткон Adafruit түрмөгүнө туташтырып, ошол каналга жөнөтүү үчүн 0000ff деп жазыңыз. Ошондой эле GIANT LEDине кошумча буйруктарды берсеңиз болот, эгер кааласаңыз, баштапкы абалга келтирүү же өчүрүп күйгүзүү.

IFTTT триггерин орнотуп жатканда, жөнөтүлгөн маалыматтарды тандооңуз керек жана бул IFTTTде "Ингредиенттер" деп аталат. Бизге керек болгон биринчи нерсе - "UserName", андан кийин боштук, анан "CreatedAt"

Биз эки нерсени тең тандайбыз, ошондуктан маалыматтар ESP8266га келгенде, биз анын жаңы твит экенин жана мурунку твиттерден ошол эле колдонуучулардын айырмасын аныктай алабыз. Бул тиркелген сүрөттөн эмнени жактырыш керек экенин көрө аласыз.

6 -кадам: Arduino IDEге ESP8266 такталарын орнотуу

Бул жерде нерселер бир аз татаалыраак жана иретке келтирүү үчүн бир аз көбүрөөк убакыт талап кылынышы мүмкүн. ESP8266дан тышкары сизге Adafruit IO китепканалары дагы керек жана бул үчүн бул колдонмону ээрчип алсаңыз болот.

learn.adafruit.com/gmailbox/arduino-setup

Бул жерде ESP8266 такталарын кантип кошуунун жөнөкөй түшүндүрмөсү бар

Сиздин Arduino IDE акыркы версияга чейин экенине ынанууну унутпаңыз жана мен муну жазуу учурунда 1.8.8 колдончумун.

Биз колдонгон дагы бир китепкана SimpleTimer болуп саналат, анткени бул бизге фондук таймерди орнотууга мүмкүндүк берет, андыктан биз мезгил -мезгили менен каналдарды текшере алабыз, бул боюнча көрсөтмөлөрдү simpletimer https://playground.arduino.cc/Code/SimpleTimer# сайтынан тапса болот. Жүктөө

7 -кадам: WiFi менеджер китепканасын орнотуу

WiFi орнотууларын алыстан конфигурациялоого мүмкүнчүлүк берүү үчүн, биз Tzapu Wifi Mangerди колдонобуз, бул жөнүндө жана китепканаларды кантип орнотуу керектигин бул жерден тапса болот, github.com/tzapu/WiFiManager

Бул тышкы китепканалардын абдан жөнөкөй орнотулушу жана бул параметр буга чейин Arduino IDE куралдар бөлүмүнүн Китепкананы башкаруу бөлүмүндө.

8 -кадам: ESP8266 коду - Мүчүлүштүктөрдү оңдоо менен

// Бул коддо басып чыгаруу боюнча билдирүүлөр камтылган, андыктан анын ишин Сериялык монитор аркылуу көзөмөлдөй аласыз

// Adafruit IO RGB LED чыгаруу мисалынын негизинде // Adafruit бул ачык булак кодун берүү менен убакытты жана ресурстарды сарптайт. // Adafruitтен // өнүмдөрдү сатып алуу менен Adafruit жана ачык булак жабдууларын колдоого алыңыз! // // Adafruit Industries үчүн Todd Treece тарабынан жазылган // Автордук укук (c) 2016-2017 Adafruit Industries // MIT лицензиясы боюнча лицензияланган. // // Жогорудагы бардык тексттер кайра бөлүштүрүүгө киргизилиши керек. // simpletimer колдонот https://playground.arduino.cc/Code/SimpleTimer#Do… // https://playground.arduino.cc/Code/SimpleTimer#Do… // калган коддору Ajax Jones https:// playground.arduino.cc/Code/SimpleTimer#Do // https://playground.arduino.cc/Code/SimpleTimer#Do… // ******************* ******* Конфигурация *********************************/ #аныктоо IO_USERNAME "сиздин IO Колдонуучунун аты " #IO_KEY" IO ачкычыңызды "// бош калтырыңыз, анткени биз аларды Wifi менеджери аркылуу ала алабыз, бул жол менен жакшы иштеп жаткандай көрүнөт #WIFI_SSIDди аныктоо" " #WIFI_PASSти аныктоо" "// биз муну AdafruitIO каалагандай кошпойбуз анын версиясын камтыйт // #камтыйт //https://github.com/esp8266/Arduino // китепкана үчүн керек #кошуу #кошуу #кошуу "WiFiManager.h" //https://github.com/tzapu/WiFiManager # SimpleTimer таймерин камтыйт; #"AdafruitIO_WiFi.h" кошуу AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS); // ************************ NeoPixel конфигурациялары ********************** ********* // #include "Adafruit_NeoPixel.h" #аныктоо PIXEL_PIN 5 #аныктоо PIXEL_COUNT 8 int NUM_LEDS = PIXEL_COUNT; #define PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel пиксель = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE); // Негизги түстөр жана демейки түс узак default_color = 865554; узун RED_color = 2689027; // кызыл #290803 узун GREEN_color = 865554; // жашыл #0d3512 узун BLUE_color = 856117; // көк #0d1035 узун PURPLE_color = 2364968; // кызгылт #241628 узун BRIGHTRED_color = 15990784; // ачык кызыл #f40000 // ------------------------------------------ ----------------------------------------------- // убакыт https://www.safaribooksonline.com/library/view/arduino-cookbook-2nd/9781449321185/ch12.html https://playground.arduino.cc/Code/SimpleTimer#Do… алынган https:// playground. arduino.cc/Code/SimpleTimer#Do… const long oneSecond = 1000; // секунд - миң миллисекунд const long oneMinute = oneSecond * 60; const long fiveMinutes = oneMinute * 5; const long fifteenMinutes = fiveMinutes * 3; const long oneHour = он бешМүнөт * 4; // Бизге эң жаккан Twitter колдонуучулары жаркырайт жана биз тандаган башка бардык твиттер String SuperTweet = {"ajaxjones", "donttrythis", "prodnose", "testcom"} түсүн өзгөртөт; String SuperTuber = {"сыналган", "кован", "marty"}; // сергек статусун коет, андыктан биз LEDлерди негизги циклде жаркырата беришибиз мүмкүн boiz WHIZZY_TWEET = false; бол WHIZZY_TUBER = жалган; bool WHIZZY_TWITCH = жалган; // Акыркы твитти жана youtube'ду сактайт, андыктан биз кызматты эки эсе текшерип туруу үчүн, String lasttweet = ""; String lasttube = ""; String lasttwitch = ""; // санарип пин 5, бул биз эскертүү түстөрүн баштапкы абалга келтирүү үчүн колдонгон баскыч #deutine BUTTON_PIN 4 // баскычтын абалы, чындыгында биз интерпутстук болдун учурдагы = жалган баскычын издеп жүргөндө колдонулган эмес. bool last = false; // "түс" түрмөгүн орнотуңуз, ошондо биз түстөрдү суроо -талап боюнча текшерип жана жөнөтө алабыз же Alexa триггерин колдоно алабыз AdafruitIO_Feed *color = io.feed ("түс"); // 'twitterfan' түрмөгүн орнотуу - Blue AdafruitIO_Feed *twitter = io.feed ("twitterfan"); // 'youtubefan' түрмөгүн орнотуңуз - Red AdafruitIO_Feed *youtube = io.feed ("youtubefan"); // 'twitch' түрмөгүн орнотуңуз - Purple AdafruitIO_Feed *twitch = io.feed ("ийри"); // "санарип" түрмөгүн орнотуу AdafruitIO_Feed *digital = io.feed ("input.digital"); // ------------------------------------------------ ----------------------------------------- void setup () {// the баскычы пин катары, биз INPUT_PULLUP колдонобуз, анткени pinMode тышкы каршылыгын колдонуунун кажети жок (BUTTON_PIN, INPUT_PULLUP); // ISR векторуна үзгүлтүктү тиркеңиз attachInterrupt (digitalPinToInterrupt (BUTTON_PIN), handleInterrupt, FALLING); // Сериалды баштаңыз жана сериялык монитордун ачылышын күтүңүз, андан кийин io.adafruit.com Serial.begin (115200) менен туташыңыз; while (! Сериялык); // неопиксел пикселдерди баштайт.begin (); // Интернеттин абалын кызылга коюңуз, ошондо биз оффлайнда экенибизди жана setAll иштеп жатканыбызды билебиз (0xf4, 0x00, 0x00); // кызыл // тестирлөө үчүн, бул WiFi WiFi.printDiag (Serial) статусун көрсөтөт; WiFiManager wifiManager; // мурунку WiFiга туташканда чакырылган кайра чалуу ишке ашпай калат жана Access Point режимине кирет wifiManager.setAPCallback (configModeCallback); // сакталган жөндөөлөрдү баштапкы абалга келтирүү, WiFi менеджеринин тестирлөөсүн мажбурлоо үчүн бул кийинки сапка комментарий бербеңиз // туташуу үчүн телефонуңузду же планшетиңизди колдонуп Giant LED тармагын издеңиз //wifiManager.resetSettings (); // конфигурация порталы өчүрүлгөнгө чейин тайм -аут коет // баарын кайра аракет кылуу же уктап калуу үчүн пайдалуу // секундада wifiManager.setTimeout (240); if (! wifiManager.autoConnect ("GIANT LED")) {Serial.println (F ("туташа алган жок жана тайм -аут"))); // баштапкы абалга келтирүү жана кайра аракет кылыңыз кечигүү (3000); ESP.reset (); кечигүү (1000); } // тестирлөө үчүн биз туташуу үчүн ишеним грамоталарыбыз бар экенин көрө алабыз //Serial.println (WiFi. SSID ()); //Serial.println(WiFi.psk());//WiFi.begin(WIFI_SSID, WIFI_PASS); // while (WiFi.status ()! = WL_CONNECTED) {// кечиктирүү (500); //Serial.print ("."); //} Serial.println (); Serial.println (F ("WiFi туташкан")); Serial.println (F ("IP дареги:")); Serial.println (WiFi.localIP ()); // азыр биз IO Serial.print кызматына туташабыз (F ("Adafruit IOго туташуу")); io.connect (); // "түс" түрмөгү үчүн билдирүү иштеткичти орнотуңуз. color-> onMessage (handleMessage); // 'twitterfan' түрмөгү үчүн билдирүү иштеткичти орнотуңуз. twitter-> onMessage (twitterMessage); // 'youtubefan' түрмөгү үчүн билдирүү иштеткичти орнотуңуз. youtube-> onMessage (youtubeMessage); // 'twitch' түрмөгү үчүн билдирүү иштеткичти орнотуңуз. twitch-> onMessage (twitchMessage); // байланышты күтө туруңуз (io.status () <AIO_CONNECTED) {Serial.print (F (".")); кечигүү (500); } // биз туташабыз Serial.println (); Serial.println (io.statusText ()); //Serial.println(sizeof(SuperTweet)); //Serial.println(sizeof(SuperTweet [0]))); // Биз күткөн Twitter эсептеринин тизмесин басып чыгарыңыз (idx = 0; idx <sizeof (SuperTweet) / sizeof (SuperTweet [0]); idx ++) {Serial.print (F ("SuperTweet [")); Serial.print (idx); Serial.print ("] = '"); Serial.print (SuperTweet [idx]); Serial.println ("'"); } // Биз күткөн YouTube каттоо эсептеринин тизмесин басып чыгарыңыз (байт idx = 0; idx get (); // түрмөктөрдүн учурдагы абалын сураңыз, андыктан ал баштапкы абалга келүүсүн басуу керек болот youtube -> алуу (); twitter-> алуу (); twitch-> алуу (); үчүн (int i = 0; i get (); twitter-> get (); twitch-> get (); Serial.print ("кээ бир твиттерди алуу"); Serial.print ("иштөө убактысы:"); Serial.println (миллис () / 1000);} // ---------------- -------------------------------------------------- ----------------------- void loop () {// io.run (); бардык эскиздер үчүн зарыл. io.run (); таймер. run (); if (WHIZZY_TWEET == true) {RunningLights (0x0d, 0x10, 0x35, 250);} if (WHIZZY_TUBER == true) {RunningLights (0x29, 0x08, 0x03, 250);} if (WHIZZY_TWITCH == true) {RunningLights (0x24, 0x16, 0x28, 250);}} // --------------------------------- -------------------------------------------------- ------ // интерпутту баскыч басылганда эскертмени тазалоо үчүн коюңуз жана интернеттин боштугун текшериңизInterrupt () {WHIZZY_TWEET = жалган; WHIZZY_TUBER = жалган; WHIZZY_TWITCH = жалган; учурдагы = чын; // учурдагы абалын adafruit io'догу 'input.digital' түрмөгүнө жөнөтүү үчүн, биз аны санарип көрө алабыз-> сактоо (учурдагы); for (int i = 0; i ")); Serial.print (current); Serial.print (F (" and default color ")); Serial.println (default_color); current = false; digital-> save (current); while (WiFi.status ()! = WL_CONNECTED) {кечигүү (500); setAll (0xeb, 0xfb, 0x03); // Yellow ebfb03}} // -------------- -------------------------------------------------- ------------------------- // бул "twitter" билдирүүсү келген сайын чакырылат-LEDди Blue void twitterMessage (AdafruitIO_Data *маалыматы) деп коюңуз {String tweeter = (data-> toString ()); tweeter.toLowerCase (); if ((lasttweet! = Tweeter) && (tweeter! = "")) {Lasttweet = tweeter; setAll (0x0d, 0x10, 0x35); // Твиттердин көк түсүн коюңуз Serial.print (F ("Tweet:")); Serial.print (tweeter); // (bayte idx = 0; idx = 0) үчүн фаворит твиттерди текшериңиз {// tweets whizzy #0d1035 WHIZZY_TWEET = true; Serial.print ("by"); Serial.print (SuperTweet [idx]);}} Serial.println ("");}} // --------- -------------------------------------------------- ---------------------------- - // бул "youtube" билдирүүсү келген сайын чакырылат- LEDди RED void youtubeMessage деп коюңуз (AdafruitIO_Data *data) {String tuber = (data-> toString ()); tuber.toLowerCase (); if ((lasttube! = tuber) && (tuber! = "")) {lasttube = tuber; setAll (0x29, 0x08,0x03); // Ютубдун кызыл түсүн коюңуз 290803 Serial.print (F ("Youtube:")); Serial.println (tuber); // фаворит Ютуберди текшериңиз (байт idx = 0; idx = 0) {// Алардын видеолорун #0d1035 WHIZZY_TUBER = чындыкка айландыралы; Serial.print ("by"); Serial.print (SuperTuber [idx]); }} Serial.println (""); }} // ---------------------------------------------- ------------------------------------------- // бул качан гана а деп аталат 'twitch' билдирүүсү келет - LEDди PURPLE void twitchMessage деп коюңуз (AdafruitIO_Data *data) {String twitch = (data-> toString ()); twitch.toLowerCase (); if ((lasttwitch! = twitch) && (twitch! = "")) {lasttwitch = twitch; setAll (0x24, 0x16, 0x28); // Кызгылт көк түстү коюу #241628 Serial.print (F ("Twitch:")); Serial.println (twitch); // Сүйүктүү Twitcher үчүн эч кандай текшерүү жок, биз бир гана WHIZZY_TUBER = true; Serial.println (""); }} // ---------------------------------------------- ------------------------------------------- // бул функция качан чакырылат "Түс" билдирүүсү кабыл алынат // ал акыркы түс берүүнүн мааниси жоктугунан башталганда демейки түсүн коёт Void handleMessage (AdafruitIO_Data *маалыматы) {// принтерде RGB баалуулуктарын жана hex маанисин Serial.print (F ("Алынган HEX мааниси): ")); Serial.println (data-> value ()); узун түс = data-> toNeoPixel (); // default_color = түс; Serial.print (F ("HEX long алынды:")); Serial.println (түс); үчүн (int i = 0; i <PIXEL_COUNT; ++ i) {piksel.setPixelColor (i, түс); } showStrip (); } // ----------------------------------------------- ------------------------------------------ RunningLights жараксыз (байт кызыл, байт жашыл, байт blue, int WaveDelay) {int Position = 0; for (int j = 0; j <NUM_LEDS; j ++) {Position ++; // = 0; // Кызмат + Баасы; үчүн (int i = 0; i <NUM_LEDS; i ++) {setPixel (i, ((sin (i + Position) * 127 + 128) / 255) * кызыл, ((sin (i + Position) * 127 + 128) / 255)*жашыл, ((күнөө (i + Позиция)*127 + 128) / 255)*көк); } showStrip (); кечигүү (WaveDelay); }} // ---------------------------------------------- ------------------------------------------- // Неопикселдин тартиби бекер setAll (байт кызыл, байт жашыл, көк байт) {үчүн (int i = 0; i getConfigPortalSSID ()); // конфигурация режимине кирди, Neo Pixel кочкул кызгылт #241628 = 2364968 // setAll (0x24, 0x16, 0x28); setAll (0xeb, 0xfb, 0x03); // Сары ebfb03}

9 -кадам: Бардыгын бирдикте ширетүү

Мунун баарын бирге бириктирүү
Мунун баарын бирге бириктирүү
Мунун баарын бирге бириктирүү
Мунун баарын бирге бириктирүү
Мунун баарын чогуу ширетүү
Мунун баарын чогуу ширетүү

Бул дизайндагы нерселердин бардыгы биригип, башкарууга оңой болушу керек. Мен 3 түрдүү түстөгү зымдарды жеңилдетүү үчүн колдондум жана биринчи нерсе WEMOSко неопикселдин зымын өлчөө. Мен аларды өрүп, жылуулукту кыскартуучу кичинекей бир бөлүктү койдум, андан кийин линзага тегиз жаткандай кылып аларды ширеттим.

Кнопка кийинки болчу жана базага тыгыз дал келет. Баскычтын бир жагы Gndге барат жана бул неопикселдин Жер зымы менен бирге бурулган. Мен андан кийин аларды калайлап, WEMOSтун жерге төөнөгүчүнө бирөө катары коштум.

Неопикселдин кубаттуулугу 5v PInге барат. Неопикселдин сигнал зымы же Ди (маалыматы) Wemos пинине D1 катары ширетилет. Муну менен катар 300-500 Ом резисторун киргизүүнү сунуштаган кээ бир сайттар бар, бирок азырынча менде эч кандай көйгөй болгон жок, ошондуктан азырынча анын түз байланышы.

Жакшы практиканы камсыз кылуу үчүн жана Adafruit сыяктуу сайттардын кеңеши боюнча мен 330R каршылыгын Диопровод менен катар кылып койгом. Бул рингдеги биринчи светодиоддун сыйкырдуу пиксилерди чыгарышына жол бербөө жана жөн эле зымды кесип, каршылыгын коюу менен жасалат. Жылуулуктун кичинекей бир бөлүгү ар кандай шортту токтотот. Сиз резисторду абдан кыска кесип, жөн эле ар бир учуна алкак салып, зым менен эле жасай аласыз.

Баскычтын башка зымы D2 пинге түз барат. Тартуу каршылыгынын кереги жок, анткени бул программалык камсыздоонун ичинде PULLUP буйругун ошол пинге каршы коюу менен иштейт.

Негизи мунун баары бар.

10 -кадам: Басып чыгарууну 3D

Бул жерде биз Giant LED үчүн колдонуп жаткан STL файлдары тиркелген. Файлдар astro73тун ремикси/кайра иштеши жана сиз бардык файлдарды https://www.thingiverse.com/thing:3290837 тартып алсаңыз болот.

Буттар жана база үчүн мен Sunlu PETG+ жипчесин колдондум, ал Prusa i3те абдан жакшы иштейт, мен 10 же 20% гироидди толтурууну колдондум.

Светодиоддун өзү үчүн мен Sunlu тунук PLAны колдонуп келе жатам жана 10% тегерегинде концентрацияланган жогорку жана астыңкы катмарлар менен толтурам.

Ар бири менен мен Slic3rдагы Prusa PET жана Prusa PLA акцияларын гана колдоном жана алардын баары жакшы иштеди. Мен бутума бир аз чыйрыгып жатам, бирок мен алардын үстүнө шампунду тагып, жип жок болуп кетет:)

11 -кадам: Гигант LED Ассамблеясы

Гигант LED Ассамблеясы
Гигант LED Ассамблеясы
Гигант LED Ассамблеясы
Гигант LED Ассамблеясы
Гигант LED Ассамблеясы
Гигант LED Ассамблеясы

Бардык бөлүктөр чынында эле оңой бириктирилет, бураманын нерсени кармап туруусуна мүмкүнчүлүк берүү үчүн базага M3 гайкасын басуу керек. Сиз ошондой эле NeoPixelди WEMOSко биринчи бутуңуздан өткөрүшүңүз керек. Мен кээ бир туташтыргычтарды кантип салууну ойлонуп жүрдүм, бирок келечекте ажырабайт деп чечтим.

Объектив - бул буттарга гана түшүүчү нерсе, алар өз кезегинде бир M3x20mm болт менен базага бекитилет. Сиз бычакты баскычтын тешигинин ичин тегеретип, ал жакшы жана эркин кыймылдашы керек болушу мүмкүн. Wemos 2 M2x8 розеткасынын астынкы бурамалары менен кармалып турат.

Аяктоо үчүн, эгер керек болсо, жылышууну токтотуу үчүн, кийиздин бир бөлүгүн базага чаптап койсоңуз болот.

12 -кадам: Орнотуу жана иштетүү инструкциялары

Image
Image
Орнотуу жана иштетүү инструкциялары
Орнотуу жана иштетүү инструкциялары
Орнотуу жана иштетүү инструкциялары
Орнотуу жана иштетүү инструкциялары

Баары даяр жана жүктөлгөн программалык камсыздоо менен USBге бир аз күчтү жумшаңыз жана GIANT LED келип, LED КЫЗЫЛ болуп, анан сары түскө өзгөрөт. Бул линиянын өчүрүлгөнүн жана wifi конфигурациясын күтүп жаткандыгын көрсөтөт. Телефонду же окшош көрүнүштү колдонуу менен GIANT LED wifi тармагы жана туташуу менен сиз WiFi менеджеринин экранын аласыз. Бул сиздин жергиликтүү аймакты сканерлеп, сиз жөн гана wifi маалыматыңызды киргизесиз, ESP кайра жүктөлөт жана сиз азыр жашыл жарык менен онлайнда болосуз. Ал ошондой эле IO менен туташат жана эскертүү чырактары мурунку билдирүүлөрдү көрө элек болгондуктан пайда болот. Баскычты бир нече жолу басыңыз жана GIANT LED жаңыртуулардын келүүсүнө даяр.

Сиз бул учурда Adafruit IO тактасына өтүп, ар бир түрмөккө кээ бир маалыматтарды кошуп, жарыктар эскертүү режимине өткөнүн көрө аласыз.

Көңүл ачуу !

13 -кадам: Гигант LED дагы эмне кыла алат

Гигант LED дагы эмне кыла алат
Гигант LED дагы эмне кыла алат
Гигант LED дагы эмне кыла алат
Гигант LED дагы эмне кыла алат

Мындай дизайндын негиздерине ээ болгондон кийин жана IFTTT менен аны көп нерсеге колдоно аласыз. Gmail кирүү кутусунун эскертүүсү оңой жана Adafruit Webhooks менен иштегендиктен, башка программалар ага маалыматтарды жөнөтө алышат. Менде азыр жумуш долбоорунун бир бөлүгү катары Big Query маалыматтарынын жүктөлүшүн көзөмөлдөө үчүн бирөө орнотулган.

Ошондой эле баскыч менен сиз аны башка GIANT LEDлерине сигнал берүү үчүн колдонсоңуз болот, сиз ар башка үйлөрдө болушуңуз мүмкүн жана аны алыскы индикатор катары колдонуп, экинчи тараптын жарыкты жокко чыгаруу үчүн баскычты басышын камсыздай аласыз.

Бул жерде тоютка маалыматтарды жөнөтүүнүн webhook ыкмасы боюнча пайдалуу шилтеме. Бул учурда ал IFTTT апплетин колдонуп жатат, бирок сиз python менен CURL ыкмасын оңой эле колдоно аласыз.

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

Чындыгында, LEDди кээ бир тексттик мазмун менен толуктоо үчүн OLED 128x32ди базага орнотууга да болот жана мен азыр бул боюнча иштеп жатам жана STLлерди жаңыртып, IOду колдонуу үчүн код менен камсыз кылам.

Сунушталууда: