Algas Verdes V3 – spirulina?

menu principal |Algas Verdes |

Durante interactivos?’16 y como parte de exhibición de los 10 años de interactivos? del Medialab-Prado, se estuvo ensamblando la “versión 3” del proyecto Algas Verdes. Hace seis años Algas Verdes hizo parte de interactivos?’10:cienciadebarrio donde la primera versión fue construida.

La version 3 se trata de un fotobioreactor casero (un objeto para el cultivo de cianobacterias) de código y hardware abierto con el cual se puede visualizar y controlar las condiciones de cultivo de Algas Verdes  en este caso de la especie “spirulina” y/o “chlorella”. Permite controlar el flujo de aire (co2), luz artificial y recolección de biomasa, como también monitorear condiciones del ambiente en tiempo real como pH del medio, humedad y temperatura. Al ser una plataforma abierta, esta versión puede ser replicada e intervenida, por lo que se planea como un punto de inicio y referente para los interesados en la experimentación en Alga Cultura casera.

Esta versión será en un principio usada y testeada por el grupo de investigación permasource de Chema Blanco en el Mediaba-Prado en colaboración a distancia de  librepensante.org.
——–
During  interactivos?’16, as part of the 10th anniversary of interactivos?’ of the Medialab-Prado Madrid, this third version of the Algas Verdes (Green Algae) project had been prototyped. Six years ago the first Algas Verdes’ mock-up was part of interactivos?’10:cienciadebarrio where the project has started.

This version (v3) is about a every-day open-source photobioreactor (an electronic to cultivate cyanobacteria) that visualizes and controls the condition of harvesting to green algae in this case “spiruline” and/or “chrollela”. It allows to program times of air (co2), artificial light and biomass collection, as well as be able to show data from internal atmosphere as pH from water, humidity and temperature.

This mock-up will be tested by permasource led to Chema Blanco from Medialab-Prado. It is a open source platform, this version allows to be replicated and rebuilding.

 

Prototype developed/exhibited in Medialab-Padio as part of 10th anniversary of interactivos?’ program

muestra/exhibition

algas verdes v3algas verdes v3

algas verdes v3

algas verdes v3

algas verdes v3

algas verdes v3algas verdes v3

 

Sensores / entradas y salidas

algas verdes v3
algas verdes v3
algas verdes v3algas verdes v3

Construcción/building

algas verdes v3

algas verdes v3
algas verdes v3
algas verdes v3
algas verdes v3

Materiales

arduino pro mini + programador FTDI  + bomba de aire 6v + bomba de agua + pHmetro sensor                                      + temperatura y humedad sensor + pantalla 1.44″ 128×128 + Interruptor de palanca pequeño + relevo dos canales + florero 22cms + desclorinador + cargador solar 5v

algas verdes v3

Nutrientes (mínimo)

bicarbonato de sodio       8g/L
sal marina (spirulina)      5g/L
nitrato de potasio             2g/L
sulfato de potasio             1g/L

algas verdes v3

Código

/*
algas verdes v3
por: hamilton mestizo
http://librepensante.org/algasverdes
GPLv3
*/
#include "Timer.h" //https://github.com/JChristensen/Timer
#include ////https://github.com/adafruit/DHT-sensor-library
#include
#include
#include //https://github.com/sumotoy/TFT_ILI9163C
Timer t;
int counter=0;
#define __CS 10
#define __DC 9
#define __RST 8
TFT_ILI9163C display = TFT_ILI9163C(__CS, __DC, __RST);
dht DHT;
#define DHT11_PIN 5
int wpin=2; //salida agua
int apin=3;//salida aire
int bot=4;//botón encendido de agua
#define SensorPin A2 //pH meter Analog input
#define Offset 0.00 //deviation compensate
//#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth 40 //times of collection
int pHArray[ArrayLenth]; //Store the average value of the sensor feedback
int pHArrayIndex=0;
void setup(void)
{
Serial.begin(9600);
display.begin(); //display
display.setBitrate(24000000);
uint16_t time = millis();
time = millis() - time;
pinMode(bot,INPUT);
pinMode(wpin,OUTPUT);
pinMode(apin,OUTPUT);
digitalWrite(wpin,1);
digitalWrite(apin,1);
pinMode(7,OUTPUT); // display on
digitalWrite(7, HIGH);
pinMode(6,OUTPUT); //led display on
digitalWrite(6, HIGH);
display.clearScreen(0x640); // intro
display.setCursor(5, 5);
display.setTextSize(2);
display.println("ALGAS");
display.print("VERDES ");
display.setTextSize(1);
display.println("V3");
display.println( " ");
display.println("spirulina?");
display.setTextSize(1);
display.println( "");
display.println( "");
display.println( " ");
display.println( "Hamilton Mestizo");
display.println( "librepensante.org");
display.println("2016 ");
delay(2000);
t.every(10000, timer); // timer 10seg
int chk = DHT.read11(DHT11_PIN); // sensor de temperatura y y humedad
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
display.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
display.print("Time out error,\t");
break;
case DHTLIB_ERROR_CONNECT:
display.print("Connect error,\t");
break;
case DHTLIB_ERROR_ACK_L:
display.print("Ack Low error,\t");
break;
case DHTLIB_ERROR_ACK_H:
display.print("Ack High error,\t");
break;
default:
display.print("Unknown error,\t");
break;
}
}
void loop()
{
phsensor();
int botsig=digitalRead(4); //encendido bomba de agua
t.update(); //reloj-timer
if(botsig==1){watering();}else{digitalWrite(wpin,1);}//encendido bomba de agua
}
int acounter=0; //contador de tiempo agua
int screencounter=0; //contador de tiempo pantalla
int adata; //potenciometro agua
// reloj agua
void clock(){
display.setCursor(0, 0);
display.setTextColor(0x640);
display.setTextSize(1);
display.print("minutos de espera... ");
display.setCursor(0, 40);
display.setTextColor(0x0000);
display.setTextSize(1);
display.println(" ");
display.println(" ");
display.println(" ");
display.print("tiempo max aire. ");
display.println(adata/60);
display.print("transcurridos... ");
display.println(acounter/60);
}
static float pHValue,voltage; //dato del sensor de pH
//datos sensores en display
void sensor(){
display.setCursor(0, 0);
display.setTextColor(0x640);
display.setTextSize(1);
display.print("sensores... ");
display.setCursor(0, 40);
display.setTextColor(0x0000);
display.setTextSize(2);
//pH
display.print("pH");
display.setTextSize(1);
display.print(".....");
display.println(pHValue);
display.println(" ");
display.println(" ");
display.println(" ");
display.print("humedad...... ");
display.println(DHT.humidity, 1);
display.print("temperatura.. ");
display.println(DHT.temperature, 1);
}
int var=1;
//reloj temporizador (10seg)
void timer(){
display.clearScreen(0xFFFF);
acounter=acounter+10;
adata=analogRead(A3);
adata=map(adata, 0, 1023, -10, 3600);
if(acounter>=adata){
acounter=0;
airbump();
}
//carga de información en la pantalla
screencounter=screencounter+1;//10seg
if(screencounter>=1){var++;screencounter=0;}
switch(var){
case 1:
pre();
break;
case 2:
clock();
break;
case 3:
sensor();
break;
}
if(var>2){var=0;}
}
//ciclo agua
void watering(){
display.setCursor(40, 20);
display.setTextSize(2);
display.setTextColor(0x5D1C);
display.println("Ciclo");
display.setCursor(40, 40);
display.println("Agua");
digitalWrite(wpin,0);
}
//ciclo aire
void airbump(){
display.setCursor(40, 20);
display.setTextSize(2);
display.setTextColor(0x5D1C);
display.println("Ciclo");
display.setCursor(40, 60);
display.println("Aire");
digitalWrite(apin,0);
delay(5000);
digitalWrite(apin,1);
}
//información
void pre(){
display.setCursor(5, 5);
display.setTextSize(2);
display.println("ALGAS");
display.print("VERDES ");
display.setTextSize(1);
display.println("V3");
display.println( " ");
display.println("spirulina?");
display.setTextSize(1);
display.println( " ");
display.println( " ");
display.println( " ");
display.println( " ");
display.println( " ");
display.println( "librepensante.org ");
display.println("2016 ");
}
void phsensor(void){
pHArray[pHArrayIndex++]=analogRead(SensorPin);
if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
pHValue = 3.5*voltage+Offset;
}
double avergearray(int* arr, int number){
int i;
int max,min;
double avg;
long amount=0;
if(number<=0){
display.println("Error number for the array to avraging!/n");
return 0;
}
if(number<5){ //less than 5, calculated directly statistics
for(i=0;i<number;i++){
amount+=arr[i];
}
avg = amount/number;
return avg;
}else{
if(arr[0]<arr[1]){
min = arr[0];max=arr[1];
}
else{
min=arr[1];max=arr[0];
}
for(i=2;i<number;i++){
if(arr[i]<min){
amount+=min; //arrmax){
amount+=max; //arr>max
max=arr[i];
}else{
amount+=arr[i]; //min<=arr<=max
}
}
}
avg = (double)amount/(number-2);
}
return avg;
}
Hardware

2 thoughts on “Algas Verdes V3 – spirulina?

  1. Hola, Como estas, estoy haciendo una incubadora de bebes y me llamo la atención el sensor que estas utilizando, podria tener mas información sobre ti proyecto? mi telefono es 3112661498 y mi correo es casilvaca@unal.edu.co

    Agradezco tu amable atención

    1. Hola. Gracias por el interés. El sensor que uso es el DHT11 puede medir temperatura y humedad al tiempo. El microcontrolador es un Arduino mini pro, uso la libreria DHTlib para este tipo de sensores.

Leave a Reply

Your email address will not be published. Required fields are marked *