Cuprins:

Casa de cristal: 5 pași
Casa de cristal: 5 pași

Video: Casa de cristal: 5 pași

Video: Casa de cristal: 5 pași
Video: Marish - Dacă n-ai o moldoveancă | Official Music Video 2024, Noiembrie
Anonim
Image
Image
Casa de cristal
Casa de cristal

Cuplurile și familiile care sunt separate din cauza distanței mari simt deseori dorul de a se conecta. Crystal House este construită pentru ca cuplurile și familiile să se conecteze între ele prin intermediul luminilor. Case de cristal sunt conectate cu semnale wifi. Când apăsați butonul de pe o casă de cristal, luminile celeilalte case de cristal primesc semnalul și vor fi aprinse. Este ușor și distractiv de făcut! Voi parcurge pas cu pas materialele / instrumentele utilizate, construirea / testarea circuitului folosind Arduino și construirea structurii Casei de cristal

Pasul 1: Piese, instrumente, consumabile

  • Pene Huzzah ESP8266 asamblate (două)
  • Perma-Proto Panou de jumătate (două)
  • Baterie litiu -3,7 1200mAh (două)
  • Mini comutator cu buton de pornire / oprire (patru)
  • Mini buton NeoPixel (patru)
  • Breadboard Wire
  • Fier de lipit și lipit
  • Dispozitiv de sârmă
  • Instrumentul de mână a treia
  • Baston de lemn pătrat
  • Foaie acrilică
  • Piatra de cristal limpede
  • Hârtie transparentă
  • super-lipici

Pasul 2: Schema circuitului și codul

Diagrama circuitului și codul
Diagrama circuitului și codul

// Cod de eșantion clasă pentru Internetul obiectelor instructabile // Combinarea intrărilor și ieșirilor // Două butoane trimit comenzi către fluxul AIO // LED și motorul vibrator (sau orice ieșire digitală) flah / buzz în funcție de datele de alimentare // // Modificat de Becky Stern 2017 // pe baza exemplelor din Adafruit IO Arduino Library: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit investește timp și resurse oferind acest cod sursă deschisă. // Vă rugăm să susțineți Adafruit și hardware open source achiziționând // produse de la Adafruit! // // Scris de Todd Treece pentru Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Licențiat sub licența MIT. // // Tot textul de mai sus trebuie să fie inclus în orice redistribuire. #include

  1. #define NeoPIN1 15

    // Parametrul 1 = numărul de pixeli din bandă // Parametrul 2 = numărul pinului Arduino (majoritatea sunt valide) // Parametrul 3 = steaguri de tip pixel, adăugați la nevoie: // NEO_KHZ800 800 KHz bitstream (majoritatea produselor NeoPixel cu WS2812 LED-uri) // NEO_KHZ400 400 KHz (clasic 'v1' (nu v2) pixeli FLORA, drivere WS2811) // NEO_GRB Pixeli sunt conectați pentru fluxul de biți GRB (majoritatea produselor NeoPixel) // NEO_RGB Pixelii sunt conectați pentru fluxul de biți RGB (v1 pixeli FLORA, nu v2) // NEO_RGBW Pixelii sunt conectați la fluxul de biți RGBW (produse NeoPixel RGBW) Adafruit_NeoPixel strip = Adafruit_NeoPixel (2, NeoPIN1, NEO_GRB + NEO_KHZ800);

    / ************************ Adafruit IO Configuration ********************* *********

    / vizitați io.adafruit.com dacă trebuie să vă creați un cont, // sau dacă aveți nevoie de cheia Adafruit IO. #define IO_USERNAME "Numele dvs. de utilizator" #define IO_KEY "Your IO_KEY"

    / ******************************** Configurare WIFI **************** ********************** /

    #define WIFI_SSID "Wifi-ul tău" #define WIFI_PASS "Parola ta"

    #include "AdafruitIO_WiFi.h" AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

    / ************************ Codul principal începe aici ********************* ********** /

    #include #include #include #include

    // # define LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 // # define MOTOR_PIN 5 // acest pin are nevoie de capacitate PWM

    // starea butonului int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;

    // configurați fluxul „digital” AdafruitIO_Feed * comanda = io.feed („comandă”); AdafruitIO_Feed * command2 = io.feed ("command2");

    void setup () {strip.setBrightness (60); strip.begin (); strip.show (); // Inițializați toți pixelii la „dezactivat” // setați pinii butoanelor ca intrări cu pinMode intern cu rezistență pull-up (BUTTON1_PIN, INPUT_PULLUP); pinMode (BUTTON2_PIN, INPUT_PULLUP); // setați pinul LED și pinul motorului ca ieșiri digitale // pinMode (MOTOR_PIN, OUTPUT); // pinMode (LED_PIN, OUTPUT);

    // porniți conexiunea serială Serial.begin (115200);

    // conectați-vă la io.adafruit.com Serial.print („Conectarea la Adafruit IO”); io.connect (); // configurați un handler de mesaje pentru fluxul „comandă”. // funcția handleMessage (definită mai jos) // va fi apelată ori de câte ori este primit // un mesaj de la adafruit io. command-> onMessage (handleButton1); command2-> onMessage (handleButton2);

    // așteptați o conexiune în timp ce (io.status () <AIO_CONNECTED) {Serial.print ("."); întârziere (500); }

    // suntem conectați Serial.println (); Serial.println (io.statusText ());

    // asigurați-vă că toate fluxurile primesc imediat valorile curente comanda-> get (); command2-> get (); }

    bucla nulă () {

    // io.run (); este necesar pentru toate schițele. // ar trebui să fie întotdeauna prezent în partea de sus a buclei // funcției. menține clientul conectat la // io.adafruit.com și procesează orice date primite. io.run ();

    // apucați starea curentă a butonului. // trebuie să răsturnăm logica pentru că // folosim INPUT_PULLUP. if (digitalRead (BUTTON1_PIN) == LOW) {button1current = 1; } if (digitalRead (BUTTON2_PIN) == LOW) {button2current = 1; } if (digitalRead (BUTTON2_PIN) == HIGH && digitalRead (BUTTON1_PIN) == HIGH) {button1current = 0; button2current = 0; }

    // returnează dacă valoarea nu s-a modificat dacă (button1current == button1last && button2current == button2last) returnează;

    // salvați starea curentă în fluxul 'digital' de pe adafruit io Serial.print ("trimiterea stării butonului 1 ->"); Serial.println (button1current); comanda-> salvare (buton1current);

    // salvați starea curentă în fluxul 'digital' de pe adafruit io Serial.print ("starea butonului de trimitere 2 ->"); Serial.println (button2current); command2-> save (button2current);

    // stochează starea ultimului buton button1last = button1current; button2last = button2current; }

    // această funcție este apelată ori de câte ori se primește un mesaj de „comandă” // de la Adafruit IO. a fost atașat la // feedul de comandă din funcția setup () de mai sus. void handleButton1 (date AdafruitIO_Data *) {

    comanda int = date-> toInt ();

    if (comanda == 1) {// aprinde primul pixel Serial.print ("primit de la comandă (butonul 1) <-"); Serial.println (comandă); // analogWrite (MOTOR_PIN, 200); // întârziere (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (0, strip. Color (200, 100, 0)); // Bandă galbenă.show (); } else {Serial.print ("primit de la comandă (butonul 1) <-"); Serial.println (comandă); strip.setPixelColor (0, strip. Color (0, 0, 0)); // off strip.show (); }} // această funcție este apelată ori de câte ori se primește un mesaj de „comandă” // de la Adafruit IO. a fost atașat la // fluxul de comandă din funcția setup () de mai sus. void handleButton2 (date AdafruitIO_Data *)

    int command2 = data-> toInt ();

    if (comanda2 == 1) {// aprinde primul pixel Serial.print ("primit de la comanda2 (butonul 2) <-"); Serial.println (comanda2); // analogWrite (MOTOR_PIN, 200); // întârziere (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (1, strip. Color (255, 128, 128)); // Bandă galbenă.show (); } else {Serial.print ("primit de la comanda2 (butonul 2) <-"); Serial.println (comanda2); strip.setPixelColor (1, strip. Color (0, 0, 0)); // off strip.show (); }}

Pasul 3: Construcția circuitului de la prototip la lipit

Construcția circuitului de la prototip la lipit
Construcția circuitului de la prototip la lipit
Construcția circuitului de la prototip la lipit
Construcția circuitului de la prototip la lipit

V-aș încuraja să încercați o placă pentru a testa circuitul. Deoarece construim două dispozitive, am putea testa pe două panouri. Am lipit Neopixel și butonul on.off pe un fir de prototipare, deoarece este mai ușor de utilizat. Mai târziu, puteți lipi cu ușurință firele de prototipare.

După ce vom reuși cu circuitul de prototipare, este timpul să ne construim circuitul real. Folosesc placa de protecție Perma-proto, deoarece este mai mică, iar conexiunea circuitului va fi mult mai bună decât circuitul de prototipare. Când vine vorba de lipire, este nevoie de mulți pacienți. Nu renunțați încă! Ajungi acolo!

Odată ce ați terminat circuitul și ați încărcat codul în ESP8266, cele două dispozitive ar trebui să funcționeze așa cum am menționat la început.

Pasul 4: Formă și material

Formă și material
Formă și material
Formă și material
Formă și material
Formă și material
Formă și material
Formă și material
Formă și material

Acum să facem casa noastră de cristal!

Tăiați bățul de lemn în 6 inci. Avem nevoie de 18 piese în total. Din moment ce vreau unele variații de la aceste două case de cristal, am folosit 7 bucăți într-una și 9 bucăți în cealaltă. Lipiți piesele într-o structură de cutie. Am tăiat două foi acrilice la 6 x 6 inci și le-am lipit în fundul Caselor de Cristal.

Odată ce ați terminat structura caselor. Hai să decorăm casele! Am tăiat o bucată de hârtie colorată transparentă și le-am lipit pe foaia de acril. După aceea, am folosit câteva cristale transparente de plastic și le-am lipit pe bază. Deoarece am o hârtie colorată transparentă în partea de jos a cristalelor, cristalele sunt reflectate la diferite culori.

Pasul 5: Acum să folosim casele de cristal

Acum să folosim casele de cristal
Acum să folosim casele de cristal
Acum să folosim casele de cristal
Acum să folosim casele de cristal

Dă-i iubitei tale casa de cristal pe care ai făcut-o. Spune-le că sunt importante! Puteți oricând modifica structura exterioară folosind diferite materiale și culori. Lasă-mă să știu cum merge!

Recomandat: