Salve a tutti.
Come da titolo vorrei creare questo progettino da presentare all'esame di stato che avrò al termine del mio percorso di studi di elettronica. Inizialmente mi era venuto in mente di fare un goniometro diitale ma, date le mie scarse/scarsissime conoscenze in ambito ho deciso di ripiegare su una pianta parlante che mi pare un progetto più d'impatto per una commissione.
L'idea di base è questa
Un sensore di uminidtà nel terreno che rileva l'umidità del terriccio. Se la terra è secca un display a matrice di punti rappresenta una faccina triste e un display lcd mostra il livello di umidità e il messaggio di dover annaffiare la pianta. In caso contrario la faccina felice e il valore di umidità della pianta.
Ho aperto questo topic per avere un vostro parere e dei consigli durante il progetto perchè, nonostante l'idea iniziale sia questa e i miei doecenti dicano che basti, mi pare un progetto molto facile, perciò vorrei aggiungerci anche dei led rossi e verdi dietro la pianta che si illuminano in corrispondenza dello stato cattivo o buono dell'umidità della terra e, soprattutto, creare un collegamento con lo smartphone per comunicare, attraverso una notifica, lo stato della terra e se questa ha bisogno di essere annaffiata.
Mi affido a voi e lascio a voi i commenti, ringraziandovi in anticipo
[UPDATE 1]
Ho finalmente avuto qualche giorno libero per poter lavorare al progetto.
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int livelloacqua = 0;
int umiditaterra = 0;
#define LEDV1 9
#define LEDV2 10
#define LEDR1 11
#define LEDR2 12
void setup() {
lcd.begin(16, 2);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
lcd.clear();
}
void loop() {
lcd.setCursor(0, 0);
livelloacqua = analogRead(A0);
if (livelloacqua < 160) {
lcd.setCursor(0, 0);
lcd.print("Riempire acqua ");
}
if (livelloacqua >= 130) {
lcd.setCursor(0, 0);
lcd.print("Acqua OK ");
}
umiditaterra = analogRead(A1);
if (umiditaterra > 500) {
lcd.setCursor(0, 1);
lcd.print("Annaffiare ");
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
}
if (umiditaterra < 500) {
lcd.setCursor(0, 1);
lcd.print("Pianta OKAY ");
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
}
Questo è quello che ho combinato.
Essenzialmente la parte facile del progetto l'ho fatta. Ho collegato i vari sensori e ho scritto tutto sul display. Ho anche fatto un circuito di potenza per poter comandare l'elettrovalvola con un mosfet IRF540N ma il problema è che per funzionare bene necessita comunque di una piccola pressione e, quindi, non è adatta al lavoro "di caduta" come l'avevo pensato. Consigli su qualche elettrovalvola che fa al caso mio?
Inoltre avevo in mente di realizzare la notifica sul dispositivo ma, per rendere il rpgetto più carino e "multipiatta" come dicono i gamer avevo pensato di notificare lo stato della pianta tramite un accoun twitter (ho già installatro sopra la board la shiel ethernet). Ho fatto una prva ma ricevo diversi errori con il mac address.
-->
Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
Prova_twitter:6: error: invalid digit "9" in octal constant
byte mac[] = { E0,91,F5,42,09,4B };
^
Prova_twitter:6: error: 'E0' was not declared in this scope
byte mac[] = { E0,91,F5,42,09,4B };
^
Prova_twitter:6: error: 'F5' was not declared in this scope
byte mac[] = { E0,91,F5,42,09,4B };
^
Prova_twitter:6: error: unable to find numeric literal operator 'operator""B'
byte mac[] = { E0,91,F5,42,09,4B };
^
exit status 1
invalid digit "9" in octal constant
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.