Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Parovi i obitelji koji su razdvojeni zbog velike udaljenosti često osjećaju čežnju za povezivanjem. Kristalna kuća izgrađena je za parove i obitelji koji se međusobno povezuju svjetlima. Kristalne kuće povezane su wifi signalima. Kada pritisnete gumb na jednoj kristalnoj kući, svjetla druge kristalne kuće primaju signal i bit će uključene. Lako je i zabavno za napraviti! Proći ću korak po korak od korištenih materijala/alata, izgradnje/ispitivanja kruga pomoću Arduina i izgradnje strukture Kristalne kuće
Korak 1: Dijelovi, alati, potrošni materijal
- Sklopljeno pero Huzzah ESP8266 (dva)
- Perma-Proto ploča veličine pola (dvije)
- Litijeva baterija -3,7 1200mAh (dvije)
- Mini prekidač za uključivanje/isključivanje (četiri)
- Mini gumb NeoPixel (četiri)
- Breadboard Wire
- Lemilica i lemljenje
- Skidač žice
- Alat iz treće ruke
- Kvadratni drveni štap
- Akrilni lim
- Bistri kristalni kamen
- Prozirni papir
- super ljepilo
Korak 2: Dijagram i kod
// Primjer koda klase Interneta instrukcija koje se može uputiti // Kombiniranje ulaza i izlaza // Dva gumba šalju naredbe na AIO feed // LED i vibracijski motor (ili bilo koji digitalni izlaz) flah/zujanje prema podacima feeda // // Izmijenila Becky Stern 2017 // temeljeno na primjerima iz Adafruit IO Arduino knjižnice: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit ulaže vrijeme i resurse pružajući ovaj otvoreni izvorni kod. // Molimo vas da podržite Adafruit i hardver otvorenog koda kupnjom // proizvoda od Adafruit! // // Napisao Todd Treece za Adafruit Industries // Autorska prava (c) 2016 Adafruit Industries // Licencirano pod licencom MIT -a. // // Sav gornji tekst mora biti uključen u bilo kakvu preraspodjelu. #uključi
-
#define NeoPIN1 15
// Parametar 1 = broj piksela u traci // Parametar 2 = Arduino broj pina (većina je ispravna) // Parametar 3 = zastavice tipa piksela, zbrajajte se prema potrebi: // NEO_KHZ800 800 KHz bitstream (većina proizvoda NeoPixel w/WS2812 LED diode) // NEO_KHZ400 400 KHz (klasični 'v1' (ne v2) FLORA pikseli, upravljački programi WS2811) // NEO_GRB Pikseli su ožičeni za GRB bitstream (većina proizvoda NeoPixel) // NEO_RGB Pikseli su ožičeni za RGB bitstream (v1 FLORA piksela, nije v2) // NEO_RGBW Pikseli su ožičeni za RGBW tok bitova (NeoPixel RGBW proizvodi) Adafruit_NeoPixel traka = Adafruit_NeoPixel (2, NeoPIN1, NEO_GRB + NEO_KHZ800);
/************************ Adafruit IO konfiguracija ********************** *********
/ posjetite io.adafruit.com ako trebate stvoriti račun, // ili ako vam je potreban vaš Adafruit IO ključ. #define IO_USERNAME "Vaše korisničko ime" #define IO_KEY "Vaš IO_KEY"
/******************************* WIFI konfiguracija **************** **********************/
#define WIFI_SSID "Vaš WiFi" #define WIFI_PASS "Vaša lozinka"
#include "AdafruitIO_WiFi.h" AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/************************ Glavni kod počinje ovdje ********************* **********/
#include #include #include #include
// #define LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 // #define MOTOR_PIN 5 // ovom pinu je potrebna PWM sposobnost
// stanje gumba int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;
// postavljanje 'digitalnog' feeda AdafruitIO_Feed *command = io.feed ("naredba"); AdafruitIO_Feed *naredba2 = io.feed ("naredba2");
void setup () {strip.setBrightness (60); strip.begin (); strip.show (); // Inicijaliziranje svih piksela na "isključeno" // postavljanje pinova gumba kao ulaze s unutarnjim pull-up otpornikom pinMode (BUTTON1_PIN, INPUT_PULLUP); pinMode (BUTTON2_PIN, INPUT_PULLUP); // LED pin i pin motora postavite kao digitalne izlaze // pinMode (MOTOR_PIN, OUTPUT); // pinMode (LED_PIN, OUTPUT);
// pokretanje serijske veze Serial.begin (115200);
// povezivanje s io.adafruit.com Serial.print ("Spajanje na Adafruit IO"); io.connect (); // postavljanje rukovatelja porukama za feed 'naredbe'. // funkcija handleMessage (definirana u nastavku) // bit će pozvana kad god se poruka // primi od adafruit io. naredba-> onMessage (handleButton1); command2-> onMessage (handleButton2);
// čekamo vezu while (io.status () <AIO_CONNECTED) {Serial.print ("."); kašnjenje (500); }
// povezani smo Serial.println (); Serial.println (io.statusText ());
// pobrinite se da svi izvori odmah dobiju svoje trenutne vrijednosti command-> get (); command2-> get (); }
void loop () {{100} {101}
// io.run (); je potrebno za sve skice. // uvijek bi trebao biti na vrhu vaše petlje // funkcije. održava klijenta spojenim na // io.adafruit.com i obrađuje sve dolazne podatke. io.run ();
// zgrabite trenutno stanje gumba. // moramo preokrenuti logiku jer // koristimo 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; }
// vraćamo ako se vrijednost nije promijenila if (button1current == button1last && button2current == button2last) return;
// sprema trenutno stanje u 'digitalni' feed na adafruit io Serial.print ("status tipke za slanje 1 ->"); Serial.println (button1current); naredba-> spremi (button1struja);
// sprema trenutno stanje u 'digitalni' feed na adafruit io Serial.print ("status tipke za slanje 2 ->"); Serial.println (button2current); command2-> spremi (button2current);
// spremi stanje zadnjeg gumba button1last = button1current; button2last = button2current; }
// ova funkcija se poziva kad god se primi poruka 'naredbe' // od Adafruit IO -a. bio je priložen // feedu naredbi u gornjoj funkciji setup (). void handleButton1 (podaci AdafruitIO_Data *) {
int naredba = podaci-> toInt ();
if (naredba == 1) {// svijetli prvi piksel Serial.print ("primljeno od naredbe (gumb 1) <-"); Serial.println (naredba); // analogWrite (MOTOR_PIN, 200); // odgoda (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (0, strip. Color (200, 100, 0)); // Žuta traka.show (); } else {Serial.print ("primljeno iz naredbe (gumb 1) <-"); Serial.println (naredba); strip.setPixelColor (0, strip. Color (0, 0, 0)); // isključeno strip.show (); }} // ova funkcija se poziva kad god se primi poruka 'naredbe' // od Adafruit IO -a. pripojen je // feedu naredbi u gornjoj funkciji setup (). void handleButton2 (podaci AdafruitIO_Data *) {
int naredba2 = podaci-> toInt ();
if (command2 == 1) {// svijetli prvi piksel Serial.print ("primljeno od command2 (gumb 2) <-"); Serial.println (naredba2); // analogWrite (MOTOR_PIN, 200); // odgoda (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (1, strip. Color (255, 128, 128)); // Žuta traka.show (); } else {Serial.print ("primljeno od naredbe2 (gumb 2) <-"); Serial.println (naredba2); strip.setPixelColor (1, strip. Color (0, 0, 0)); // isključeno strip.show (); }}
Korak 3: Konstrukcija kruga od prototipa do lemljenja
Potičem vas da isprobate ploču za testiranje kruga. Budući da gradimo dva uređaja, mogli bismo testirati na dvije ploče. Lemio sam Neopixel i gumb za uključivanje / isključivanje na žicu za izradu prototipa jer je lakša za upotrebu. Kasnije možete jednostavno spajati žice za izradu prototipova.
Nakon što uspijemo s prototipnim krugom, vrijeme je za izgradnju našeg pravog kruga. Koristim Perma-proto ploču s opcijama jer je manja i veza kruga bit će mnogo bolja od sklopa za izradu prototipova. Što se tiče lemljenja, potrebno je puno strpljenja. Ne odustaj još! Stižeš tamo!
Nakon što završite svoj krug i učitate kôd u svoj ESP8266, dva uređaja bi trebala raditi kako smo spomenuli na početku.
Korak 4: Oblik i materijal
Sada napravimo našu Kristalnu kuću!
Drveni štap izrežite na 6 inča. Trebamo ukupno 18 komada. Budući da želim neke varijacije od ove dvije kristalne kuće, upotrijebio sam 7 komada u jednom i 9 komada u drugom. Zalijepite komade u okvir kutije. Izrezao sam dva akrilna lima na 6 x 6 inča i zalijepio ih na dno Kristalnih kućica.
Nakon što dovršite strukturu kuća. Ukrasimo kuće! Izrezao sam komad prozirnog papira u boji i zalijepio ih na akrilni list. Nakon toga sam upotrijebio neke prozirne plastične kristale i zalijepio ih na podlogu. Budući da na dnu kristala imam prozirni papir u boji, kristali se reflektiraju u različitim bojama.
Korak 5: Koristimo sada kristalne kuće
Dajte svom voljenom kristalnu kuću koju ste napravili. Recite im da su važni! Vanjsku strukturu uvijek možete promijeniti različitim materijalima i bojama. Javi mi kako ide!