Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Páry a rodiny, které jsou kvůli velké vzdálenosti odloučeny, často pociťují touhu po spojení. Crystal House je postaven pro páry a rodiny, aby se navzájem propojili pomocí světel. Crystal Houses jsou propojeny wifi signály. Když stisknete tlačítko na jednom Crystal House, ostatní světla Crystal House přijmou signál a zapnou se. Je to snadné a zábavné! Budu procházet krok za krokem od použitých materiálů/nástrojů, budování/testování obvodu pomocí Arduina a budování struktury Crystal House
Krok 1: Díly, nástroje, spotřební materiál
- Smontované peří Huzzah ESP8266 (dvě)
- Poloviční prkénko Perma-Proto (dvě)
- Lithiová baterie -3,7 1200 mAh (dvě)
- Mini zapínací/vypínací tlačítkový spínač (čtyři)
- Mini tlačítko NeoPixel (čtyři)
- Breadboard Wire
- Páječka a páječka
- Odstraňovač drátů
- Nástroj z třetí ruky
- Čtvercová dřevěná tyč
- Akrylový list
- Čistý křišťálový kámen
- Průhledný papír
- super lepidlo
Krok 2: Schéma zapojení a kód
// Instructables Internet of Things Ukázkový kód třídy // Kombinace vstupů a výstupů // Dvě tlačítka odesílají příkazy do kanálu AIO // LED a vibrační motor (nebo jakýkoli digitální výstup) flah/buzz podle dat kanálu // // Upraveno Becky Stern 2017 // na základě příkladů z Adafruit IO Arduino Library: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit investuje čas a prostředky poskytováním tohoto otevřeného zdrojového kódu. // Podporujte prosím Adafruit a hardware s otevřeným zdrojovým kódem nákupem // produktů od Adafruit! // // Napsal Todd Treece pro Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Licencováno pod licencí MIT. // // Veškerý výše uvedený text musí být součástí jakékoli redistribuce. #zahrnout
-
#define NeoPIN1 15
// Parametr 1 = počet pixelů v pásu // Parametr 2 = Počet pinů Arduina (většina je platná) // Parametr 3 = příznaky typu pixelu, sčítejte podle potřeby: // NEO_KHZ800 bitový tok 800 KHz (většina produktů NeoPixel s WS2812 LED diody) // NEO_KHZ400 400 KHz (klasické 'v1' (ne v2) pixely FLORA, ovladače WS2811) // NEO_GRB Pixely jsou zapojeny pro bitový tok GRB (většina produktů NeoPixel) // Pixely NEO_RGB jsou zapojeny pro bitový tok RGB (pixely v1 FLORA, ne v2) // NEO_RGBW Pixely jsou zapojeny pro bitový tok RGBW (produkty NeoPixel RGBW) Adafruit_NeoPixel strip = Adafruit_NeoPixel (2, NeoPIN1, NEO_GRB + NEO_KHZ800);
/************************ Konfigurace IO Adafruit ********************* *********
/ navštivte io.adafruit.com, pokud si potřebujete vytvořit účet, // nebo pokud potřebujete svůj klíč Adafruit IO. #define IO_USERNAME "Vaše uživatelské jméno" #define IO_KEY "Vaše IO_KEY"
/******************************* Konfigurace WIFI **************** *********************/
#define WIFI_SSID „Vaše 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číná zde ******************** **********/
#include #include #include #include
// #define LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 // #define MOTOR_PIN 5 // tento pin potřebuje PWM
// stav tlačítka int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;
// nastavit 'digitální' feed AdafruitIO_Feed *command = io.feed ("příkaz"); AdafruitIO_Feed *command2 = io.feed ("command2");
neplatné nastavení () {strip.setBrightness (60); strip.begin (); strip.show (); // Inicializace všech pixelů na 'off' // nastavení kolíků tlačítek jako vstupů s interním pull-up rezistorem pinMode (BUTTON1_PIN, INPUT_PULLUP); pinMode (BUTTON2_PIN, INPUT_PULLUP); // nastavit pin LED a kolík motoru jako digitální výstupy // pinMode (MOTOR_PIN, OUTPUT); // pinMode (LED_PIN, VÝSTUP);
// spusťte sériové připojení Serial.begin (115200);
// připojení k serveru io.adafruit.com Serial.print ("Připojení k Adafruit IO"); io.connect (); // nastavení obsluhy zpráv pro kanál 'příkaz'. // funkce handleMessage (definovaná níže) // bude volána vždy, když je // přijata zpráva z adafruit io. příkaz-> onMessage (handleButton1); command2-> onMessage (handleButton2);
// počkejte na připojení while (io.status () <AIO_CONNECTED) {Serial.print ("."); zpoždění (500); }
// jsme připojeni Serial.println (); Serial.println (io.statusText ());
// zajistěte, aby všechny kanály okamžitě dostaly své aktuální hodnoty command-> get (); command2-> get (); }
prázdná smyčka () {
// io.run (); je vyžadován pro všechny skici. // vždy by měl být přítomen v horní části funkce smyčky //. udržuje klienta připojeného k // io.adafruit.com a zpracovává veškerá příchozí data. io.run ();
// uchopte aktuální stav tlačítka. // musíme převrátit logiku, protože // používáme 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, pokud se hodnota nezměnila, pokud (button1current == button1last && button2current == button2last) return;
// uložení aktuálního stavu do 'digitálního' feedu na adafruit io Serial.print ("stav tlačítka odeslání 1 ->"); Serial.println (button1current); příkaz-> uložit (button1current);
// uložení aktuálního stavu do 'digitálního' feedu na adafruit io Serial.print ("stav tlačítka odeslání 2 ->"); Serial.println (button2current); command2-> save (button2current);
// uložení posledního stavu tlačítka button1last = button1current; button2last = button2current; }
// tato funkce je volána vždy, když je z Adafruit IO přijata zpráva 'příkazu //. bylo připojeno k // příkazovému kanálu ve funkci setup () výše. void handleButton1 (data AdafruitIO_Data *) {
int příkaz = data-> toInt ();
if (příkaz == 1) {// rozsvítí první pixel Serial.print ("přijato z příkazu (tlačítko 1) <-"); Serial.println (příkaz); // analogWrite (MOTOR_PIN, 200); // zpoždění (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (0, strip. Color (200, 100, 0)); // Žlutý proužek.show (); } else {Serial.print ("přijato z příkazu (tlačítko 1) <-"); Serial.println (příkaz); strip.setPixelColor (0, strip. Color (0, 0, 0)); // off strip.show (); }} // tato funkce je volána vždy, když je od Adafruit IO přijata zpráva 'příkazu //. bylo připojeno k // příkazovému kanálu ve funkci setup () výše. void handleButton2 (data AdafruitIO_Data *) {
int příkaz2 = data-> toInt ();
if (command2 == 1) {// rozsvítí první pixel Serial.print ("přijato z příkazu2 (tlačítko 2) <-"); Serial.println (příkaz2); // analogWrite (MOTOR_PIN, 200); // zpoždění (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (1, strip. Color (255, 128, 128)); // Žlutý proužek.show (); } else {Serial.print ("přijato z příkazu2 (tlačítko 2) <-"); Serial.println (příkaz2); strip.setPixelColor (1, strip. Color (0, 0, 0)); // off strip.show (); }}
Krok 3: Stavba obvodu od prototypu k pájenému
Doporučil bych vám vyzkoušet na prkénku a otestovat obvod. Protože stavíme dvě zařízení, mohli jsme testovat na dvou prkénkách. Neopixel a tlačítko on.off jsem připájel k prototypovacímu drátu, protože jeho použití je snazší. Později můžete prototypovací dráty snadno pájet.
Poté, co uspějeme s prototypovacím obvodem, je čas postavit náš skutečný obvod. Používám prkénko Perma-proto, protože je menší a připojení obvodu bude mnohem lepší než obvod prototypů. Pokud jde o pájení, vyžaduje to hodně trpělivosti. Ještě to nevzdávej! Dostáváte se tam!
Jakmile dokončíte obvod a nahrajete kód do svého ESP8266, obě zařízení by měla fungovat, jak jsme zmínili na začátku.
Krok 4: Forma a materiál
Nyní vytvoříme náš Crystal House!
Nakrájejte dřevěnou tyč na 6 palců. Potřebujeme celkem 18 kusů. Protože chci od těchto dvou krystalových domů nějakou variaci, použil jsem 7 kusů v jednom a 9 kusů v druhém. Nalepte dílky do krabicové konstrukce. Vystřihl jsem dva akrylové listy na 6 x 6 palců a vlepil je do spodní části Krystalových domů.
Jakmile dokončíte strukturu domů. Pojďme vyzdobit domy! Odstřihl jsem kousek průhledného barevného papíru a nalepil je na akrylový list. Poté jsem použil několik čirých plastových krystalů a nalepil je na základnu. Protože mám ve spodní části krystalů průhledný barevný papír, krystaly se odrážejí do různých barev.
Krok 5: Nyní použijme krystalové domy
Darujte svému milovanému krystalový dům, který jste vyrobili. Řekněte jim, že jsou důležití! Vnější strukturu můžete kdykoli upravit pomocí různých materiálů a barev. Dej mi vědět jak to jde!