Difference between revisions of "AI kvetinac"
Line 47: | Line 47: | ||
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 | + | 700 - 950 vo vode<br/><br/> |
Zdrojový kód na meranie vlhkosti a poslanie e-mailu: | Zdrojový kód na meranie vlhkosti a poslanie e-mailu: |
Revision as of 17:25, 22 September 2018
Contents
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 ukazka 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
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 hodnôt
output_value += 86;
String subject = "Nízka vlhkosť pôdy"; //Predmet e-mailu
if (output_value < 100) {
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("nazov1@nazov2.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 = "a3ZldGluYWMuZXZ6ZW5AZ21haWwuY29t";
const char* EMAILBASE64_PASSWORD = "cG9sZWplbXZzZXRrbw==";
const char* FROM = "kvetina.evzen@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
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.