Orodha ya maudhui:

Taa ya Smart (TCfD) - Upinde wa mvua + Kionyeshi cha Muziki: Hatua 7 (na Picha)
Taa ya Smart (TCfD) - Upinde wa mvua + Kionyeshi cha Muziki: Hatua 7 (na Picha)

Video: Taa ya Smart (TCfD) - Upinde wa mvua + Kionyeshi cha Muziki: Hatua 7 (na Picha)

Video: Taa ya Smart (TCfD) - Upinde wa mvua + Kionyeshi cha Muziki: Hatua 7 (na Picha)
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Julai
Anonim
Image
Image
Mchoro wa Mzunguko
Mchoro wa Mzunguko

Mradi huu unafanywa kwa kozi ya Teknolojia ya Ubunifu wa Dhana huko TUDelft

Bidhaa ya Mwisho ni taa ya msingi ya ESP-32 na imeunganishwa na seva. Kwa mfano, taa ina kazi mbili; athari ya upinde wa mvua ambayo hutoa mwangaza wa rangi inayobadilisha kuelekea kwenye mazingira yake na pili mwoneko sauti ambapo saizi za LED "hucheza" kulingana na viwango vya sauti. Mfumo umeunganishwa na wifi na mtumiaji anaweza kuchagua ni athari gani anayotaka kutoka kwa taa kupitia WIFI.

Microchip ya ESP-32 ya bei rahisi hutupatia wasindikaji wenye nguvu, sensa ya ukumbi iliyojengwa, sensor ya joto, sensor ya kugusa na pia wifi na uwezo wa Bluetooth. Pamoja na hili, Wakati athari mbili tu zilichaguliwa kwa mradi huu, Maana ya taa hii "nzuri" haina kikomo. Ingetumika kuonyesha hali ya hewa kwa mtumiaji, au hali ya joto ya chumba, taa yenyewe inaweza kutenda kama kengele au inaweza kutoa mwangaza wa jua uliotuliza karibu na kitanda chako ikiiga kuchomoza kwa jua kwa uzoefu mzuri wa kuamka.

Hatua ya 1: Nyenzo Inahitajika

Arduino esp32

Sensor ya sauti

Njia nne za Bi-Directional Logic Level converter

Neopixel imesababisha 2m 60 iliyoongozwa / m

Waya za jumper

Cable ndogo ya USB na adapta

Uunganisho wa mtandao

Hatua ya 2: Mchoro wa Mzunguko

Mchoro wa mzunguko ulichorwa na mzunguko ulifanywa ipasavyo kama ilivyopewa

mchoro hapa chini.

Hatua ya 3: Msimbo wa Arduino

Hapa, kwanza nambari ya visasisho ilitengenezwa. Kisha, nambari mbili za mfano

; "Neoplxel RGBW nyota"; na "simpleWebServerWifi" ilibadilishwa na kuunganishwa ndani ya nambari ya kuona. Ingawa nambari hiyo bado ni buggy wakati mwingine (mwangaza ulioongozwa kwa nasibu mara kwa mara). Iteration ijayo ya nambari (mara tu tutakapopata muda wa kutosha) itasasishwa.

# pamoja

#ifdef _AVR_

# pamoja

# mwisho

usomaji wa hesabu = 5;

usomaji wa ndani [kusoma kwa hesabu];

int kusomaIndex = 0;

jumla = 0;

wastani = 0;

int micPin = 33;

#fafanua PIN 4

#fafanua NUM_LEDS 120

#fafanua NURU 100

Ukanda wa Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

byte neopix_gamma = {

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 126, 127, 129, 131, 133, 135, 137, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 167, 169, 171, 173, 175, 177, 180, 182, 184, 186, 189, 191, 193, 196, 198, 200, 203, 205, 208, 210, 213, 215, 218, 220, 223, 225, 228, 231, 233, 236, 239, 241, 244, 247, 249, 252, 255 };

# pamoja

# pamoja

char ssid = "yakoNetwork"; // SSID mtandao wako (jina)

char pass = "neno la siri"; // nywila yako ya mtandao

int muhimuIndex = 0; // nambari yako ya ufunguo wa mtandao (inahitajika tu kwa WEP)

hali ya = WL_IDLE_STATUS;

Seva ya WiFiServer (80);

kuanzisha batili ()

{

Serial. Kuanza (9600); // kuanzisha mawasiliano ya serial

pinMode (9, OUTPUT); // weka hali ya pini ya LED

// angalia uwepo wa ngao:

ikiwa (WiFi.status () == WL_NO_SHIELD) {

Serial.println ("Ngao ya WiFi haipo");

wakati (kweli); // usiendelee

}

Kamba fv = WiFi.firmwareVersion ();

ikiwa (fv! = "1.1.0") {

Serial.println ("Tafadhali sasisha firmware");

}

// jaribio la kuungana na mtandao wa Wifi:

wakati (hadhi! = WL_CONNECTED) {

Serial.print ("Kujaribu kuungana na Mtandao uliopewa jina:");

Serial.println (ssid); // chapa jina la mtandao (SSID);

// Unganisha kwenye mtandao wa WPA / WPA2. Badilisha laini hii ikiwa unatumia mtandao wazi au wa WEP:

hadhi = WiFi. anza (ssid, pass);

// subiri sekunde 10 kwa unganisho:

kuchelewesha (10000);

}

kuanza server) (); // kuanza seva ya wavuti kwenye bandari 80

chapaWifiStatus (); // umeunganishwa sasa, kwa hivyo chapisha hali hiyo

}

{

Serial. Kuanza (9600);

strip.setBrightness (MWANGA);

strip. kuanza ();

onyesha (); // Anzisha saizi zote ili "kuzima"

pinMode (micPin, INPUT);

kwa (int thisReading = 0; hiiReading <numReadings; hiiReading ++) {

masomo [hiiKusoma] = 0;

}

}

upinde wa mvua utupu (uint8_t subiri) {

uint16_t i, j;

kwa (j = 0; j <256; j ++) {

kwa (i = 0; i

strip.setPixelColor (i, Gurudumu ((i + j) & 255));

}

onyesha ();

kuchelewesha (subiri);

}

}

Kionyeshi batili () {

jumla = jumla - usomaji [readIndex];

masomo [readIndex] = AnalogRead (micPin);

jumla = jumla + usomaji [readIndex];

somaIndex = somaIndex + 1;

ikiwa (somaIndex> = kusoma kwa nambari) {

somaIndex = 0;

}

wastani = jumla / hesabu za kusoma;

kuchelewesha (1);

int micpixel = (wastani-100) / 5;

Serial.println (micpixel);

ikiwa (micpixel> 0) {

{

kwa (int j = 0; j <= micpixel; j ++)

strip.setPixelColor (j, (micpixel * 2), 0, (90-micpixel), 0);

kwa (int j = micpixel; j <= NUM_LEDS; j ++)

strip.setPixelColor (j, 0, 0, 0, 0);

onyesha ();

}

}

ikiwa (kipaza sauti <0) {

kwa (int j = 0; j <= 20; j ++)

strip.setPixelColor (j, 0, 0, 50, 0);

onyesha ();

}

}

kitanzi batili () {

{

Mteja wa Wateja wa WiFi = seva haipatikani (); // sikiliza wateja wanaoingia

ikiwa (mteja) {// ikiwa unapata mteja, Serial.println ("mteja mpya"); // chapisha ujumbe nje ya bandari ya serial

Kamba ya sasaLine = ""; // fanya Kamba kushikilia data zinazoingia kutoka kwa mteja

wakati (mteja.meunganishwa ()) {// kitanzi wakati mteja ameunganishwa

ikiwa (mteja anapatikana ()) {// ikiwa kuna baiti za kusoma kutoka kwa mteja, char c = mteja.soma (); // soma ka, basi

Serial.write (c); // chapisha nje ya mfuatiliaji wa serial

ikiwa (c == '\ n') {// ikiwa baiti ni tabia mpya

// ikiwa laini ya sasa haina tupu, una herufi mbili mpya mfululizo.

// huo ndio mwisho wa ombi la mteja wa HTTP, kwa hivyo tuma jibu:

ikiwa (currentLine.length () == 0) {

// Vichwa vya HTTP kila wakati huanza na nambari ya kujibu (kwa mfano HTTP / 1.1 200 sawa)

// na aina ya yaliyomo ili mteja ajue kinachokuja, kisha laini tupu:

mteja.println ("HTTP / 1.1 200 OK");

mteja.println ("Aina ya Maudhui: maandishi / html");

mteja.println ();

// yaliyomo kwenye majibu ya HTTP ifuatavyo kichwa:

mteja.print ("Bonyeza hapa Washa athari ya Upinde wa mvua");

alama ya mteja ("Bonyeza hapa Washa Kionyeshi");

// Jibu la HTTP linaisha na laini nyingine tupu:

mteja.println ();

// kuvunja kitanzi cha wakati:

kuvunja;

} mwingine {// ikiwa una laini mpya, kisha wazi LineLine:

Mzunguko wa sasa = "";

}

} vingine ikiwa (c! = '\ r') {// ikiwa una kitu kingine chochote isipokuwa tabia ya kurudi kwa gari, LineLine + = c; // ongeza hadi mwisho wa LineLine

}

// Angalia kuona ikiwa ombi la mteja lilikuwa "GET / H" au "GET / L":

ikiwa (currentLine.endsWith ("GET / R")) {

Upinde wa mvua (10); // Athari ya Upinde wa mvua imewashwa

}

ikiwa (currentLine.endsWith ("GET / V")) {

Kionyeshi (); // Kionyeshi kimewashwa

}

}

}

// funga unganisho:

mteja.acha ();

Serial.println ("mteja ameondolewa");

}

}

uchapishaji batiliWifiStatus () {

// chapa SSID ya mtandao uliyoshikamana nayo:

Serial.print ("SSID:");

Serial.println (WiFi. SSID ());

// chapisha anwani yako ya IP ya ngao ya WiFi:

IPAddress ip = WiFi.localIP ();

Serial.print ("Anwani ya IP:");

Serial.println (ip);

// chapisha nguvu ya ishara iliyopokea:

rssi ndefu = WiFi. RSSI ();

Serial.print ("nguvu ya ishara (RSSI):");

Serial.print (rssi);

Serial.println ("dBm");

// chapisha mahali pa kwenda kwenye kivinjari:

Serial.print ( Ili kuona ukurasa huu ukifanya kazi, fungua kivinjari kwa

Serial.println (ip);

}

}

uint32_t Gurudumu (byte WheelPos) {

WheelPos = 255 - Magurudumu ya Magurudumu;

ikiwa (WheelPos <85) {

rangi ya kurudi (255 - WheelPos * 3, 0, WheelPos * 3, 0);

}

ikiwa (WheelPos <170) {

WheelPos - = 85;

kurudi strip. Rangi (0, WheelPos * 3, 255 - WheelPos * 3, 0);

}

WheelPos - = 170;

kurudi strip. Rangi (WheelPos * 3, 255 - WheelPos * 3, 0, 0);

}

uint8_t nyekundu (uint32_t c) {

kurudi (c >> 16);

}

uint8_t kijani (uint32_t c) {

kurudi (c >> 8);

}

uint8_t bluu (uint32_t c) {

kurudi (c);

}

}

//Serial.println (kipikseli);

}

Hatua ya 4: 3d Kuchapa Msingi wa Taa

Uchapishaji wa 3d Msingi wa Taa
Uchapishaji wa 3d Msingi wa Taa

Mfano wa 3d wa msingi wa taa ulipimwa, iliyoundwa na kuchapishwa na vipimo vikubwa vya kutosha kutoshea vifaa vyote vya umeme ndani ya sehemu ya msingi.

Hatua ya 5: Kiambatisho kilichoongozwa

Kiambatisho kilichoongozwa
Kiambatisho kilichoongozwa

Led's ziliviringishwa kwenye roll ya kadibodi na kuambatanishwa kwa kutumia mkanda wa pande mbili, shimo lilichimbwa sehemu ya chini kupitisha waya kupitia

Hatua ya 6: Ufungaji wa Taa

Ufungaji wa Taa
Ufungaji wa Taa

Ufungaji ulifanywa kwa kutafuta chupa ya uwazi na upana sawa kama msingi wa taa na urefu kama kiambatisho cha LED. Hii ilifunikwa na karatasi nene kwa mwangaza bora wa mwangaza. Vinginevyo, inawezekana kutumia glasi iliyohifadhiwa au mirija ya plastiki inayowaka kama uzio wa taa.

Hatua ya 7: Sanidi

Sanidi
Sanidi

Kila kitu kilikuwa kimeunganishwa pamoja na kukusanywa. Na taa ilikuwa tayari kwa upimaji !.

Ilipendekeza: