Plantas de oficina sedientas de tweets
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicaciones y servicios en línea
| ||||
| ||||
|
Acerca de este proyecto
Motivación
Aquí en Andium, estamos muy emocionados de habernos mudado finalmente a nuestro nuevo espacio de oficina. Lo hemos decorado con paredes cubiertas de pizarrones, nueva tecnología brillante y todas las comodidades del hogar. ¡Comenzó a sentirse como en casa especialmente cuando colocamos un puñado de estos amigos de hojas verdes por todo el espacio!
Solo que nos olvidamos de regarlos y en una semana más o menos nuestros amigos frondosos comenzaron a verse así ...
Fallar.
Somos una empresa de IoT, somos mejores que esto. ¿Cómo es que nuestras plantas no están conectadas a Internet? Con suerte, antes de que sea demasiado tarde para este pequeño, armé una solución usando nuestro escudo anduinoWiFi e IFTTT. ¡Es hora de dar voz a nuestras plantas!
Comenzando
Si tienes un pulgar verde, probablemente ya hayas dejado de leer, pero si eres como yo y necesitas darles a tus plantas la capacidad de pedir piedad digitalmente y gritar por un poco de agua, entonces estás en el lugar correcto.
Para dar voz a sus plantas, necesitará un Arduino Due, o Zero, un protector anduinoWiFi (o cualquier otro Arduino conectado a WiFi que pueda hablar con Adafruit IO) y, por último, un 'Sensor capacitivo de humedad del suelo'. Ah, y un vaso de agua. (Dáselo a tu planta cuando hayamos terminado, te lo agradecerán por correo electrónico ahora).
Sensor de humedad
El sensor de humedad del suelo es bastante bueno, no hay muchos sensores en los que se le anime a sumergirse en tierra húmeda, así que disfrútelo mientras pueda. Sin embargo, no demasiado, tome nota de esta línea ...
Hagas lo que hagas, no sumerjas el sensor debajo de esa línea blanca. Nada arriba tolerará demasiado bien la exposición a la humedad, así que tenga cuidado al regar sus plantas que contienen este sensor.
Si hizo clic en la siguiente foto de arriba, es posible que se pregunte por qué tengo el sensor sumergido en un vaso de agua. Bueno, ¡no te lo preguntes más!
Cómo calibrar el 'sensor capacitivo de humedad del suelo'
Nuestro sensor capacitivo tiene tres cables que conectaremos al pin analógico A1 de 3.3v (rojo), tierra (negro) y (señal azul). Cuando calibremos nuestro sensor, registraremos la lectura de capacitancia cuando el sensor esté completamente seco, y luego tomaremos una segunda lectura cuando el sensor esté sumergido (¡hasta la línea blanca!) En un vaso de agua. Esto nos da nuestros umbrales extremos de humedad relativa de 0-100%.
Conecte su sensor, ejecute este boceto y anote sus resultados. Como referencia, mi dryVal era 807 y mi wetVal era 415.
int inputPin =A1; configuración vacía () {Serial.begin (115200); retraso (3000); } bucle vacío () {Serial.print ("Valor bruto:"); Serial.println (readHumidity ()); retraso (3000); } int readHumidity () {int sensorVal =analogRead (inputPin); return sensorVal; }
Una vez que tenga estos dos números, estará listo para configurar el mapeo de humedad relativa. ¡Considérese calibrado!
El bosquejo
#include #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include "AnduinoLCD.h" // Parámetros de WiFi #define WLAN_SSID "Andium" #define WLAN_PASS "tal vez su contraseña // Adafruit IO #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "yourusernname" #define AIO_KEY "dosifje0j230fj32lksdfj230ff23" Cliente WiFiClient; Adafruit_MQTT_Client mqtt (&cliente, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); / ***************************** Feeds ****************** ********************* / // Configuración de alimentación para temperatura Adafruit_MQTT_Publish humedadVal =Adafruit_MQTT_Publish (&mqtt, AIO_USERNAME "/ feeds / officePlants"); / * Crea una instancia de AnduinoLCD * / AnduinoLCD LCD =AnduinoLCD (ST7735_CS_PIN, ST7735_DC_PIN, ST7735_RST_PIN); int inputPin =A1; const int dryVal =807; const int wetVal =415; int humedad =0; int humedadPrev =0; int relHumidity =0; configuración vacía () {Serial.begin (115200); retraso (3000); // Conéctese a WiFi y Adafruit.IO connectToWiFi (); connectToAdafruit (); // Inicializar LCD LCD.begin (); LCDinit (); } void loop () {// ping adafruit io unas cuantas veces para asegurarse de que permanecemos conectados if (! mqtt.ping (3)) {// reconectar a adafruit io if (! mqtt.connected ()) connect (); } humedad =readHumidity (); // convierte int temp a char array char b [4]; String str; str =String (humedad); for (int i =0; i =0) mqtt.disconnect (); Serial.println (F ("Reintentando conexión ...")); retraso (1000); } Serial.println (F ("Adafruit IO Connected!")); } void displayHumidity (int humedad, int humidtyPrev) {// borra el valor obsoleto LCD.setTextColor (ST7735_BLACK); LCD.setTextSize (2); LCD.setTextWrap (verdadero); LCD.setCursor (40,60); LCD.setTextSize (5); LCD.print (humedadPrev); LCD.setTextSize (2); LCD.print ("%"); // Imprimir nuevo valor LCD.setTextColor (ST7735_WHITE); LCD.setTextSize (2); LCD.setTextWrap (verdadero); LCD.setCursor (40,60); LCD.setTextSize (5); LCD.print (humedad); LCD.setTextSize (2); LCD.print ("%"); } void connectToWiFi () {// Conectarse al punto de acceso WiFi. retraso (10); Serial.print (F ("Conectando a")); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); while (WiFi.status ()! =WL_CONNECTED) {retraso (500); Serial.print (F (".")); } Serial.println (F ("¡WiFi conectado!")); } void connectToAdafruit () {// conectarse a adafruit io connect (); } void LCDinit () {LCD.setBacklight (ON); LCD.fillScreen (ST7735_BLACK); // limpia la pantalla LCD.showBanner (); // cargar Andium Banner LCD.setTextColor (ST7735_WHITE); LCD.setTextSize (2); LCD.setTextWrap (verdadero); LCD.setCursor (0,40); LCD.print ("Humedad:"); } int readHumidity () {int sensorVal =analogRead (inputPin); relHumidity =mapa (sensorVal, dryVal, wetVal, 0, 100); Serial.println ("relHumidity"); Serial.print (relHumidity); return relHumidity; }
Copie y pegue este boceto en su IDE y asegúrese de tener instaladas estas bibliotecas.
- WiFi101
- Adafruit_MQTT
- AnduinoLCD
Además de su calibrado personalmente ...
const int dryVal =807; const int wetVal =415;
valores húmedo y seco. Hacia la parte inferior del boceto cuando leemos Humedad () usamos estos valores para mapear 0-100% de humedad relativa. Así que ahora nuestros valores leerán 0% cuando estén secos y 100% cuando estén completamente saturados.
relHumidity =map (sensorVal, dryVal, wetVal, 0, 100);
Si todo va bien y su arduino se conecta a WiFi y Adafruit IO, debería comenzar a ver lecturas cada 10 minutos. Aquí hay una instantánea de nuestras lecturas de hoy.
No se preocupen por esos valores atípicos el día de hoy, también estaba publicando mientras leía mi capacitancia bruta no mapeada para determinar mis valores secos y húmedos.
Genial, ahora cada 10 minutos publicamos nuestra lectura de humedad del suelo. Ahora realmente no me importa cuáles sean las lecturas hasta que tenga que salvar a mis plantas de morir y regarlas. Usemos IFTTT para establecer un nivel de humedad umbral y configurar la notificación que se enviará para recordarnos que debemos regar nuestras plantas.
Umbral IFTTT
Usando IFTTT, establecí un umbral tal que cuando la humedad relativa del suelo cae por debajo del 20%, nuestras plantas sedientas se comunicarán con nosotros a través de Twitter (@andiumPlants) solicitando ser regadas. Aquí hay un vistazo a la configuración.
¡Eso es todo!
¿Qué sigue?
¡Eso te lo dejo a ti! ¿De qué otra manera podemos dar voz a nuestras plantas de forma creativa y evitar que nuestra fauna falle. ¡Coge un anduinoWiFi y un sensor de suelo y empieza a hacer!
Código
Anduino
Una biblioteca Arduino para el escudo de Andium (Anduino). Transforma tu Arduino en un AndiumNode.https://github.com/andium/AnduinoProceso de manufactura