Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Páry a rodiny, ktoré sú kvôli veľkej vzdialenosti odlúčené, často pociťujú túžbu po spojení. Crystal House je postavený pre páry a rodiny, aby sa navzájom spájali prostredníctvom svetiel. Kryštálové domy sú prepojené wifi signálmi. Keď stlačíte tlačidlo na jednom kryštálovom dome, ostatné svetlá kryštálového domu prijmú signál a zapnú sa. Je to ľahké a zábavné! Budem krok za krokom prechádzať od použitých materiálov/nástrojov, budovania/testovania obvodu pomocou Arduina a budovania štruktúry Crystal House
Krok 1: Diely, nástroje, spotrebný materiál
- Zostavené perie Huzzah ESP8266 (dve)
- Perma-Proto polovičný pekáč (dva)
- Lítiová batéria -3,7 1200 mAh (dve)
- Mini zapínač/vypínač (štyri)
- Mini tlačidlo NeoPixel (štyri)
- Kruhový drôt
- Spájkovačka a spájkovačka
- Odstraňovač drôtov
- Nástroj z tretej ruky
- Štvorcová drevená palica
- Akrylový list
- Čistý krištáľový kameň
- Priehľadný papier
- super lepidlo
Krok 2: Schéma zapojenia a kód
// Instructables Internet of Things Vzorový kód triedy // Kombinácia vstupov a výstupov // Dve tlačidlá odosielajú príkazy do kanála AIO // LED a vibračný motor (alebo akýkoľvek digitálny výstup) flah/buzz podľa údajov kanála // // Upravila Becky Stern 2017 // na základe príkladov z knižnice Adafruit IO Arduino Library: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit investuje čas a zdroje tým, že poskytuje tento otvorený zdrojový kód. // Podporte prosím Adafruit a hardvér s otvoreným zdrojovým kódom nákupom // produktov od Adafruit! // // Napísal Todd Treece pre Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Licencované pod licenciou MIT. // // Všetky texty uvedené vyššie musia byť zahrnuté v akejkoľvek redistribúcii. #zahrnúť
-
#define NeoPIN1 15
// Parameter 1 = počet pixelov v páse // Parameter 2 = Počet pinov Arduino (väčšina je platná) // Parameter 3 = vlajky typu pixelov, sčítajte podľa potreby: // NEO_KHZ800 800 KHz bitstream (väčšina produktov NeoPixel s WS2812 LED diódy) // NEO_KHZ400 400 KHz (klasický „v1“(nie v2) pixely FLORA, ovládače WS2811) // Pixely NEO_GRB sú zapojené pre bitový tok GRB (väčšina produktov NeoPixel) // Pixely NEO_RGB sú zapojené pre bitový tok RGB (pixely v1 FLORA, nie v2) // NEO_RGBW Pixely sú zapojené pre bitový tok RGBW (produkty NeoPixel RGBW) Adafruit_NeoPixel strip = Adafruit_NeoPixel (2, NeoPIN1, NEO_GRB + NEO_KHZ800);
/************************ Konfigurácia Adafruit IO ********************* *********
/ navštívte io.adafruit.com, ak si potrebujete vytvoriť účet, // alebo ak potrebujete kľúč AdOruit IO. #define IO_USERNAME "Vaše používateľské meno" #define IO_KEY "Vaše IO_KEY"
/******************************************************************************* *********************/
#define WIFI_SSID „Vaša wifi“#define WIFI_PASS „Vaše heslo“
#include "AdafruitIO_WiFi.h" AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/************************* Hlavný kód začína tu ******************** **********/
#include #include #include #include
// #define LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 // #define MOTOR_PIN 5 // tento pin potrebuje PWM
// stav tlačidla int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;
// nastavenie 'digitálneho' kanála AdafruitIO_Feed *command = io.feed ("príkaz"); AdafruitIO_Feed *command2 = io.feed ("command2");
void setup () {strip.setBrightness (60); strip.begin (); strip.show (); // Inicializácia všetkých pixelov na 'vypnuté' // nastavenie kolíkov tlačidiel ako vstupov s vnútorným zdvíhacím odporom pinMode (BUTTON1_PIN, INPUT_PULLUP); pinMode (BUTTON2_PIN, INPUT_PULLUP); // nastavenie led kolíka a kolíka motora ako digitálnych výstupov // pinMode (MOTOR_PIN, OUTPUT); // pinMode (LED_PIN, VÝSTUP);
// spustenie sériového pripojenia Serial.begin (115200);
// pripojenie na io.adafruit.com Serial.print („Pripojenie k Adafruit IO“); io.connect (); // nastavenie obsluhy správ pre informačný kanál 'príkaz'. // funkcia handleMessage (definovaná nižšie) // sa bude volať vždy, keď bude // prijatá správa z adafruit io. príkaz-> onMessage (handleButton1); command2-> onMessage (handleButton2);
// čakať na spojenie while (io.status () <AIO_CONNECTED) {Serial.print ("."); oneskorenie (500); }
// sme pripojení Serial.println (); Serial.println (io.statusText ());
// uistite sa, že všetky kanály okamžite získajú svoje aktuálne hodnoty command-> get (); command2-> get (); }
prázdna slučka () {
// io.run (); je potrebný pre všetky náčrty. // vždy by mal byť prítomný v hornej časti funkcie loop //. udržuje klienta v spojení s // io.adafruit.com a spracováva všetky prichádzajúce údaje. io.run ();
// uchopenie aktuálneho stavu tlačidla. // musíme obrátiť logiku, pretože // používame 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; }
// návrat, ak sa hodnota nezmenila, ak (button1current == button1last && button2current == button2last) return;
// uloženie aktuálneho stavu do 'digitálneho' kanála na adafruit io Serial.print ("stav tlačidla odoslania 1 ->"); Serial.println (button1current); príkaz-> uložiť (button1current);
// uloženie aktuálneho stavu do 'digitálneho' kanála na adafruit io Serial.print ("stav tlačidla odoslania 2 ->"); Serial.println (button2current); príkaz2-> uložiť (button2current);
// uloženie posledného stavu tlačidla button1last = button1current; button2last = button2current; }
// táto funkcia sa volá vždy, keď je z IO Adafruit prijatá správa „príkazu“//. bol pripojený k // príkazovému kanálu vo funkcii setup () vyššie. void handleButton1 (údaje AdafruitIO_Data *) {
int príkaz = data-> toInt ();
if (príkaz == 1) {// rozsvieti prvý pixel Serial.print ("prijaté z príkazu (tlačidlo 1) <-"); Serial.println (príkaz); // analogWrite (MOTOR_PIN, 200); // zdržanie (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (0, strip. Color (200, 100, 0)); // Yellow strip.show (); } else {Serial.print ("prijaté z príkazu (tlačidlo 1) <-"); Serial.println (príkaz); strip.setPixelColor (0, strip. Color (0, 0, 0)); // off strip.show (); }} // táto funkcia sa volá vždy, keď je z IO Adafruit prijatá správa „príkazu“//. bol pripojený k // príkazovému kanálu vo funkcii setup () vyššie. void handleButton2 (údaje AdafruitIO_Data *) {
int príkaz2 = data-> toInt ();
if (command2 == 1) {// rozsvieti prvý pixel Serial.print ("prijaté z príkazu2 (tlačidlo 2) <-"); Serial.println (príkaz2); // analogWrite (MOTOR_PIN, 200); // zdržanie (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (1, strip. Color (255, 128, 128)); // Yellow strip.show (); } else {Serial.print ("prijaté z príkazu2 (tlačidlo 2) <-"); Serial.println (príkaz2); strip.setPixelColor (1, strip. Color (0, 0, 0)); // off strip.show (); }}
Krok 3: Konštrukcia obvodu od prototypu k spájkovanému
Povzbudil by som vás, aby ste vyskúšali obvod a vyskúšali obvod. Keďže staviame dve zariadenia, mohli sme testovať na dvoch doskách. Neopixel a tlačidlo on.off som spájkoval na prototypovací drôt, pretože sa používa jednoduchšie. Neskôr môžete prototypovacie vodiče ľahko spájkovať.
Potom, čo uspejeme s prototypovacím obvodom, je čas postaviť náš skutočný obvod. Používam doštičku Perma-proto, pretože je menšia a pripojenie obvodu bude oveľa lepšie ako prototypovací obvod. Pokiaľ ide o spájkovanie, vyžaduje to veľa trpezlivosti. Ešte to nevzdávaj! Dostávate sa tam!
Akonáhle dokončíte svoj obvod a nahráte kód do svojho ESP8266, tieto dve zariadenia by mali fungovať, ako sme uviedli na začiatku.
Krok 4: Forma a materiál
Teraz si vyrobme náš Kryštálový dom!
Palicu na drevo nakrájajte na 6 palcov. Potrebujeme celkom 18 kusov. Pretože chcem nejakú variáciu z týchto dvoch kryštálových domov, použil som 7 kusov v jednom a 9 kusov v druhom. Prilepte kúsky do krabicovej konštrukcie. Dva akrylové listy som narezal na 6 x 6 palcov a vlepil ich do spodnej časti Kryštálových domov.
Akonáhle dokončíte štruktúru domov. Vyzdobme domy! Odrezala som kúsok priehľadného farebného papiera a prilepila ich na akrylový list. Potom som použil niekoľko priehľadných plastových kryštálov a prilepil ich na základňu. Keďže v spodnej časti kryštálov mám priehľadný farebný papier, kryštály sa odrážajú do rôznych farieb.
Krok 5: Teraz použime kryštálové domy
Darujte svojmu milovanému kryštálový dom, ktorý ste vyrobili. Povedzte im, že sú dôležití! Vonkajšiu štruktúru môžete kedykoľvek upraviť pomocou rôznych materiálov a farieb. Dajte mi vedieť, ako to prebieha!