Difference between revisions of "AI kvetinac"

From Digitálne technológie výroby
Jump to: navigation, search
 
(2 intermediate revisions by the same user not shown)
Line 27: Line 27:
 
=== Zdrojový kód ===
 
=== Zdrojový kód ===
  
Zdroj na program na meranie vlhkosti: http://www.geeetech.com/wiki/index.php/Moisture_sensor
+
Zdroj na program na meranie vlhkosti: http://www.geeetech.com/wiki/index.php/Moisture_sensor<br/><br/>
 
 
 
Zdrojový kód na meranie vlhkosti:
 
Zdrojový kód na meranie vlhkosti:
 
<source>
 
<source>
Line 43: Line 42:
 
}
 
}
 
</source>
 
</source>
 
 
Popis hodnôt:<br/>
 
Popis hodnôt:<br/>
 
0 - 300 suchá pôda<br/>
 
0 - 300 suchá pôda<br/>
 
300 - 700 vlhká pôda<br/>
 
300 - 700 vlhká pôda<br/>
 
700 - 950 vo vode<br/><br/>
 
700 - 950 vo vode<br/><br/>
 
+
Zdroj na program na poslanie e-mailu: https://www.instructables.com/id/ESP8266-GMail-Sender/<br/><br/>
Zdroj na program na poslanie e-mailu: https://www.instructables.com/id/ESP8266-GMail-Sender/
 
 
 
 
Zdrojový kód na meranie vlhkosti a poslanie e-mailu:
 
Zdrojový kód na meranie vlhkosti a poslanie e-mailu:
 
<source>
 
<source>
Line 119: Line 115:
 
{
 
{
 
     output_value = analogRead(sensor_pin);
 
     output_value = analogRead(sensor_pin);
     output_value = map(output_value,550,0,0,100);    //Prekonvertovanie hodnôt
+
     output_value = map(output_value,550,0,0,100);    //Prekonvertovanie hodnoty
 
     output_value += 86;
 
     output_value += 86;
 
     String subject = "Nízka vlhkosť pôdy";    //Predmet e-mailu
 
     String subject = "Nízka vlhkosť pôdy";    //Predmet e-mailu
     if (output_value < 100) {
+
     if (output_value < 50) {   //E-mail sa pošle, ak vlhkosť je menšia ako 50
 
         connection_state = WiFiConnect();
 
         connection_state = WiFiConnect();
 
         if(!connection_state)  // if not connected to WIFI
 
         if(!connection_state)  // if not connected to WIFI
Line 141: Line 137:
 
}
 
}
 
</source><br/>
 
</source><br/>
 
 
Zdrojový kód na prihlásenie sa do e-mailovej schránky:
 
Zdrojový kód na prihlásenie sa do e-mailovej schránky:
 
<source>
 
<source>
Line 180: Line 175:
 
};
 
};
 
#endif // G_SENDER
 
#endif // G_SENDER
</source><br/>
+
</source>
 
+
Prihlasovacie meno a heslo do e-mailovej schránky musí byť vo formáte Base64, zakódovať ich je možné tu: https://www.base64encode.org/<br/><br/>
Prihlasovacie meno a heslo do e-mailovej schránky musí byť vo formáte Base64, zakódovať ich je možné tu: https://www.base64encode.org/
+
Všetky zdrojové kódy sú tu: https://drive.google.com/open?id=1tqq9l1Db_eAtwcCYC1cZGMcMdwE7F74a
 
 
Všetky zdrojové kódy sú tu:
 
  
 
== Verzia 2 ==
 
== Verzia 2 ==

Latest revision as of 13:47, 23 September 2018

Verzia 1

Čo?

Kvetináč asymetrického tvaru so senzorom vlhkosti, ktorý pošle na mobil správu keď ho treba poliať.

Prečo?

Často sa stáva, že človek zabudne poliať kvet, čomu by mohla pomôcť pripomienka na mobil. A pekne to vyzerá.

Ako?

Kvetináč chcem po vrstvách vyrezať laserom z preglejky, nalepiť na seba a nalakovať.

1. namodelovať 3D model vo Fusion
2. narezať model horizontálnymi rezmi
3. uložiť pohľady zvrchu na jednotlivé vrstvy ako 2D objekty STL
4. vyrezať 2D objekty z preglejky pomocou lasera
5. zlepiť a nalakovať

Model

3D model vo Fusion (rozmery horný priemer 11cm, dolný 8cm):

- Link na drive: https://drive.google.com/open?id=196svqlxRyQzkgTIjKLfy3PDOV-QP6fuS
- Fusion ukážka https://a360.co/2GG2G03

Zdrojový kód

Zdroj na program na meranie vlhkosti: http://www.geeetech.com/wiki/index.php/Moisture_sensor

Zdrojový kód na meranie vlhkosti:

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    Serial.print("Vlhkost: ");
    Serial.println(analogRead(0)); 
    delay(100);
}

Popis hodnôt:
0 - 300 suchá pôda
300 - 700 vlhká pôda
700 - 950 vo vode

Zdroj na program na poslanie e-mailu: https://www.instructables.com/id/ESP8266-GMail-Sender/

Zdrojový kód na meranie vlhkosti a poslanie e-mailu:

#include <ESP8266WiFi.h>
#include "Gsender.h"

#pragma region Globals
const char* ssid = "nazov";                      // Názov WIFI siete
const char* password = "heslo";                  // Heslo WIFI siete
uint8_t connection_state = 0;                    // Pripojené do WIFI siete alebo nie
uint16_t reconnect_interval = 10000;             // Ak nie je pripojené, počkať určitý čas a skúsiť znova
int sensor_pin = A0; 
int output_value;
#pragma endregion Globals

uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr)
{
    static uint16_t attempt = 0;
    Serial.print("Connecting to ");
    if(nSSID) {
        WiFi.begin(nSSID, nPassword);  
        Serial.println(nSSID);
    } else {
        WiFi.begin(ssid, password);
        Serial.println(ssid);
    }

    uint8_t i = 0;
    while(WiFi.status()!= WL_CONNECTED && i++ < 50)
    {
        delay(200);
        Serial.print(".");
    }
    ++attempt;
    Serial.println("");
    if(i == 51) {
        Serial.print("Connection: TIMEOUT on attempt: ");
        Serial.println(attempt);
        if(attempt % 2 == 0)
            Serial.println("Check if access point available or SSID and Password\r\n");
        return false;
    }
    Serial.println("Connection: ESTABLISHED");
    Serial.print("Got IP address: ");
    Serial.println(WiFi.localIP());
    return true;
}

void Awaits()
{
    uint32_t ts = millis();
    while(!connection_state)
    {
        delay(50);
        if(millis() > (ts + reconnect_interval) && !connection_state){
            connection_state = WiFiConnect();
            ts = millis();
        }
    }
}

void setup()
{
    Serial.begin(115200);
}

void loop()
{
    output_value = analogRead(sensor_pin);
    output_value = map(output_value,550,0,0,100);    //Prekonvertovanie hodnoty
    output_value += 86;
    String subject = "Nízka vlhkosť pôdy";    //Predmet e-mailu
    if (output_value < 50) {    //E-mail sa pošle, ak vlhkosť je menšia ako 50
        connection_state = WiFiConnect();
        if(!connection_state)  // if not connected to WIFI
        Awaits();          // constantly trying to connect
        Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
        String s = "Vlhkosť pôdy je: " + (String) output_value + "%";    //Obsah e-mailu
        if(gsender->Subject(subject)->Send("meno@nazov.com", s))    //Názov e-mailovej adresy
        {
            Serial.println("Message send.");
        } else {
            Serial.print("Error sending message: ");
            Serial.println(gsender->getError());
        }
        Serial.print(output_value);
        Serial.println("%");
    }
    delay(15000);
}

Zdrojový kód na prihlásenie sa do e-mailovej schránky:

/* Gsender class helps send e-mails from Gmail account
*  using Arduino core for ESP8266 WiFi chip
*  by Boris Shobat
*  September 29 2016
*/
#ifndef G_SENDER
#define G_SENDER
#define GS_SERIAL_LOG_1         // Print to Serial only server responce
//#define GS_SERIAL_LOG_2       //  Print to Serial client commands and server responce
#include <WiFiClientSecure.h>

class Gsender
{
    protected:
        Gsender();
    private:
        const int SMTP_PORT = 465;
        const char* SMTP_SERVER = "smtp.gmail.com";
        const char* EMAILBASE64_LOGIN = "bWVub0BnbWFpbC5jb20=";    //Zakódovaný reťazec "meno@gmail.com"
        const char* EMAILBASE64_PASSWORD = "aGVzbG8=";    //Zakódovaný reťazec "heslo"
        const char* FROM = "meno@gmail.com";
        const char* _error = nullptr;
        char* _subject = nullptr;
        String _serverResponce;
        static Gsender* _instance;
        bool AwaitSMTPResponse(WiFiClientSecure &client, const String &resp = "", uint16_t timeOut = 10000);

    public:
        static Gsender* Instance();
        Gsender* Subject(const char* subject);
        Gsender* Subject(const String &subject);
        bool Send(const String &to, const String &message);
        String getLastResponce();
        const char* getError();
};
#endif // G_SENDER

Prihlasovacie meno a heslo do e-mailovej schránky musí byť vo formáte Base64, zakódovať ich je možné tu: https://www.base64encode.org/

Všetky zdrojové kódy sú tu: https://drive.google.com/open?id=1tqq9l1Db_eAtwcCYC1cZGMcMdwE7F74a

Verzia 2

Čo?

Drevený rohový kvetináč z preglejky, ktorého predná strana pripomína rebrá. Vznikla z pôvodnej vlnitej štruktúry symetrickým otáčaním každej druhej vrstvy.

Prečo?

Ako?

Najprv sme vytvorili 3D model kvetináča použitím softvéru Autodesk Fusion 360. Následne sme jednotlivé vrstvy sprojektovali do dolnej podstavy a rozložili ich do 3 štvorcov s rozmermi 60x60 cm, ktoré predstavovali veľkosť nášho materiálu, konkrétne preglejky

Názorná ukážka

Kvetináč bol vymodelovaný použitím sofvéru Autodesk Fusion 360. Nižšie je názorná ukážka modelu. Link na google drive, kde je uložených viacero pohľadov.

3D Model