Proyecto puerta de gallinero con BH1750 y Arduino Pro Mini

Hola Compañeros y compañeras!! me he liado a construir un gallinero el principio:

Y ya terminado:

Quiero que los animalitos estén seguros por la noche porque hay mucho gato suelto por la zona, así que me he liado con una trampilla que baje y suba sola. Si te fijas mucho en la parte izquierda abajo en el marco de la puerta hay una apertura y ahí es donde voy a poner la trampilla de las gallinas.

El sketch esta casi a punto me falta de parar el motor cuando llega a su sitio pero no se como:

/* Sketch para subir y bajar la puerta de un gallinero con el sensor de iluminacion BH1750  
  y un puente H L293D */

#include <Wire.h>
#include <BH1750.h>

BH1750 Luxometro;

// Pines y variables del sensor BH1750
uint16_t Lux_noche=20; // La medida a la que consideramos que es de noche 
uint16_t Lux_dia=30;  // de 20 a 30 lo dejamos a modo de histeresis para evitar parpadeo
int pinVerde=8;      // Pin 8 para led Verde         
int pinRojo=7;      // Pin 7 para led Rojo
uint16_t lux;      // Variable que almacena lectura del sensor luminico

// Pines Arduino para controlar motor derecho de L293D
int derRojo = 5;   // pin 5 a cable VCC
int derNegro = 6; // Pin 6 a cable GND
int vel = 255;   // Velocidad del motor de 0 a 255

void setup() {
  
  Serial.begin(9600);
  Serial.println("Inicializando sensor...\n");
  delay(1000);
  Luxometro.begin(BH1750_CONTINUOUS_HIGH_RES_MODE); // Inicializamos el sensor
  
  pinMode(pinRojo, OUTPUT);     // Led rojo = Noche = puerta cerrada
  pinMode(pinVerde, OUTPUT);   // Led verde = dia = puerta abierta
  digitalWrite(pinRojo, LOW); // Iniciamos los leds apagados
  digitalWrite(pinVerde, LOW);

}

void loop() {

   medirLX();
   delay(1000);

  if(lux < Lux_noche) // Si luxometro detecta menos de 20lx (noche)
  {
    bajarPuerta();
  }
  else if (lux > Lux_dia) // Si el luxometro detecta mas de 30lx (dia)
  {
    subirPuerta();
  }

}

void medirLX() {
  lux = Luxometro.readLightLevel();//Realizamos una lectura del sensor
  Serial.print("Luz(iluminancia): ");
  Serial.print(lux);
  Serial.println(" lx\n");
  return;
}

void bajarPuerta() {
  
  Serial.println(" Noche  - Bajando puerta");
  digitalWrite(pinRojo, HIGH);   // Enciende el rojo
  digitalWrite(pinVerde, LOW);  // Apaga el verde
     
  // analogWrite(derNegro, vel); //atras
  // analogWrite(derRojo, 0); 
  return;
}

void subirPuerta(){
  
  Serial.println(" Dia - Subiendo puerta");
  digitalWrite(pinRojo, LOW);      // Apaga el rojo
  digitalWrite(pinVerde, HIGH);   // Enciende el verde

 // analogWrite(derNegro, 0); //adelante 
 // analogWrite(derRojo, vel); 
  return;
}

Como ven según este sketch el motor no para al igual que el led…

¿Como harían ustedes que el motor baje o suba solo unos segundos?

Acepto consejos, cualquier ayuda es bienvenida yo estoy sin ideas, por aquí tengo un sensor infrarrojo por si ayuda…

NOTA: quiero subir y bajar la puerta con una cuerda atada al motor pasando por una polea y atada a la puerta.

Materiales:

Motor de 6V con su batería sacados de un triciclo de niño si puede con 15 kilos puede subir la trampilla.
2 paneles solares de 5v 240mA 1.2W conectados en serie para tener 10v 240mA y poder cargar la batería de 6v.
Arduino uno
Led verde
Led rojo.
Sensor lumínico BH1750
Puente H L293D

puedes usar microswitch ,sensor magnetico o reed switch a modo de final de carrera para delimitar los recorridos de la trampilla.El funcionamiento por tiempos te puede fallar si algo falla mecanicamente ,tambien pueden fallar los finales de carrera ,claro ,pero puedes implementar una rutina de tiempo que empiece al comenzar la subida o bajada y si dentro de un tiempo prudencial no se ha llegado a los finales de carrera se active algun tipo de alarma.
http://www.banggood.com/10pcs-Reed-Switch-MagSwitch-Normally-Open-Magnetic-Induction-Switch-p-940055.html?rmmds=search
http://www.banggood.com/search/microswitch.html

Para el reed switch y el sensor hall se necesitaria tambien imanes.Lo mas fiable son los microswitch.

De que motor hablas? No dices nada del tipo de motor.

Que rápido así da gusto pasar por aquí. Muchas gracias chicos.

surbyte hola compañero espero que la vida te trate bien, perdona no di suficientes datos del motor es un motor DC a 6V con un sistema reductor que soporta mas de 20k es lo mas parecido a un servo de rotación continua:

José creo que has dado en la diana amigo tengo varios reed switch e imanes de neodimio usare dos de cada para la parada cundo suba y baje.

Agradezco mucho la ayuda y para demostrarlo dejare detallado el proyecto por si ayuda a alguien mas.

Lo dicho es un placer volver al foro. y no descarto hacer alguna pregunta mas, un abrazo!

Creo que lo tengo voy a hacer unas pruebas si ven algo raro me comentan que aun soy novato:

/* Sketch para subir y bajar la puerta de un gallinero con el sensor de iluminacion BH1750  
 y un puente H L293D */

#include <Wire.h>
#include <BH1750.h>

BH1750 Luxometro;

// Pines y variables del sensor BH1750
uint16_t Lux_noche=20; // La medida a la que consideramos que es de noche 
uint16_t Lux_dia=30;  // de 20 a 30 lo dejamos a modo de histeresis para evitar parpadeo

uint16_t lux;      // Variable que almacena lectura del sensor luminico

// Pines Arduino para controlar motor derecho de L293D
int derRojo = 5;   // pin 5 a cable VCC
int derNegro = 6; // Pin 6 a cable GND
int vel = 155;   // Velocidad del motor de 0 a 255

// pines para finales de carrera con reedSwitch
const int reedSwitch1 = 12; // Pin conectado a reedswitch1 = puerta arriba
const int LedRojo_reedSwitch1 = 9; // LED pin que indica el estado high del reedSwitch1
const int reedSwitch2 = 11; // Pin conectado a reedswitch1 = puerta arriba
const int LedVerde_reedSwitch2 = 10;

void setup() {
 
 Serial.begin(9600);
 Serial.println("Inicializando sensor...\n");
 delay(1000);
 Luxometro.begin(BH1750_CONTINUOUS_HIGH_RES_MODE); // Inicializamos el sensor

 //reedswitch1
 pinMode(reedSwitch1, INPUT_PULLUP);
 pinMode(LedRojo_reedSwitch1, OUTPUT);
 //reedSwitch2
 pinMode(reedSwitch2, INPUT_PULLUP);
 pinMode(LedVerde_reedSwitch2, OUTPUT);
}

void loop() {

  medirLX();
  delay(1000);

 if(lux < Lux_noche) // Si luxometro detecta menos de 20lx (noche)
 {
   bajarPuerta();
 }
 else if (lux > Lux_dia) // Si el luxometro detecta mas de 30lx (dia)
 {
   subirPuerta();
 }

}

void medirLX() {
 lux = Luxometro.readLightLevel();//Realizamos una lectura del sensor
 Serial.print("Luz(iluminancia): ");
 Serial.print(lux);
 Serial.println(" lx\n");
 return;
}

void bajarPuerta() {
 
 Serial.println(" Noche  - Bajando puerta");

 int proximityBOTTON = digitalRead(reedSwitch1); // Read the state of the switch
 if (proximityBOTTON == LOW) // If the pin reads low, the switch is closed.
 {
   Serial.println("Switch closed");
   digitalWrite(LedVerde_reedSwitch2, HIGH); // Turn the LED on
   analogWrite(derNegro, 0); //para el motor 
   analogWrite(derRojo, 0);
 }
 else
 {
   Serial.println("Switch Open");
   digitalWrite(LedVerde_reedSwitch2, LOW); // apaga el LED 
   analogWrite(derNegro, vel); //atras
   analogWrite(derRojo, 0);
 }
    

 return;
}

void subirPuerta(){
 
 Serial.println(" Dia - Subiendo puerta");

 
 int proximityTOP = digitalRead(reedSwitch1); // Read the state of the switch
 if (proximityTOP == LOW) // If the pin reads low, the switch is closed.
 {
   Serial.println("Switch closed");
   digitalWrite(LedRojo_reedSwitch1, HIGH); // Turn the LED on
   analogWrite(derNegro, 0); //para el motor 
   analogWrite(derRojo, 0);
 }
 else
 {
   Serial.println("Switch Open");
   digitalWrite(LedRojo_reedSwitch1, LOW); // apaga el LED 
   analogWrite(derNegro, 0); //adelante 
   analogWrite(derRojo, vel);
 }

 return;
}

Simpre con los pulsadores, switches o lo que fuere electromecánico como mínimo observa el cambio de estado y no solo el estado.
Te lo sugiero para un caso y luego lo implementas para ambos
Agrega a las definiciones

 // define a proximityBOTTON y proximityBOTTONant como int y globales.

void bajarPuerta() {
 Serial.println(" Noche  - Bajando puerta");
 proximityBOTTON = digitalRead(reedSwitch1); // Read the state of the switch
 if (!proximityBOTTON && proximityBOTTONant) {  // si paso de 1 a 0
     Serial.println("Switch closed");
     digitalWrite(LedVerde_reedSwitch2, HIGH);     // Turn the LED on
     analogWrite(derNegro, 0); //para el motor 
     analogWrite(derRojo, 0);
 }
 else if (proximityBOTTON && !proximityBOTTONant) { // si paso de 0 a 1
    Serial.println("Switch Open");
    digitalWrite(LedVerde_reedSwitch2, LOW); // apaga el LED 
    analogWrite(derNegro, vel); //atras
    analogWrite(derRojo, 0);
 }
 proximityBOTTONant = proximityBOTTON;
 return;
}

Al menos si hay rebotes no hará cosas raras.

OK señor entendido, guardamos el estado para que no se lie. Casi todo lo que se es gracias a ti, te lo agradezco mucho surbyte. Voy a dejar el esquema de conexiones disculparme pero he cambiado de photoshop a krita que es la única aplicación que me ataba a windows así que me voy adaptando.

Esquema de conexiones: (Clik derecho → ver imagen. Para tamaño completo!)

Video funcionando:

Librería BH1750

Usaremos una de varias librerías que podemos encontrar en Internet, usaremos la librería BH1750 escrita por Christopher Laws, librería que la pueden descargar en:

Código:

Para este proyecto partimos de la base y el sketch de ejemplo de esta web

/* Sketch para subir y bajar la puerta de un gallinero. 

Materiales:

· Sensor de iluminacion BH1750 + dos resistencias de 1kΩ
· Un puente H L293D
· Dos reed switch + dos resistencias de 10kΩ
· Un imán de neodimio 
· Dos led + 2 resistencias de 220 Ω */

#include <Wire.h>
#include <BH1750.h>

BH1750 Luxometro;

// Pines y variables del sensor BH1750
uint16_t Lux_noche=20; // La medida a la que consideramos que es de noche 
uint16_t Lux_dia=30;  // de 20 a 30 lo dejamos a modo de histeresis para evitar parpadeo
uint16_t lux;        // Variable que almacena lectura del sensor luminico

// Pines Arduino para controlar motor derecho de L293D
int derRojo = 5;   // pin 5 a cable VCC
int derNegro = 6; // Pin 6 a cable GND
int vel = 255;   // Velocidad del motor de 0 a 255

// pines para finales de carrera con reedSwitch
const int reedSwitch1 = 12; // Pin conectado a reedswitch1 = sube puerta
const int LedVerde_reedSwitch1 = 10; // LED verde accionado cuando la puerta sube o esta arriba
const int reedSwitch2 = 8; // Pin conectado a reedswitch2 = baja puerta 
const int LedRojo_reedSwitch2 = 9; // LED rojo accionado cuando la puerta baja o esta abajo

// Variables para guardar el estado de los Reed Switch
int proximityBOTTON;
int proximityBOTTONant;
int proximityTOP;
int proximityTOPant;

void setup() {
  
  Serial.begin(9600);
  Serial.println("Inicializando sensor...\n");
  delay(1000);
  
  Luxometro.begin(BH1750_CONTINUOUS_HIGH_RES_MODE); // Inicializamos el sensor

  //reedswitch1
  pinMode(reedSwitch1, INPUT_PULLUP);
  pinMode(LedVerde_reedSwitch1, OUTPUT);
  //reedSwitch2
  pinMode(reedSwitch2, INPUT_PULLUP);
  pinMode(LedRojo_reedSwitch2, OUTPUT);
}

void loop() {

   medirLX();
   delay(1000);

  if(lux < Lux_noche) // Si luxometro detecta menos de 20lx (noche)
  {
    bajarPuerta();
  }
  else if (lux > Lux_dia) // Si el luxometro detecta mas de 30lx (dia)
  {
    subirPuerta();
  }

}

void medirLX() {
  
  lux = Luxometro.readLightLevel();   //Realizamos una lectura del sensor
  Serial.print("Luz(iluminancia): "); 
  Serial.print(lux); 
  Serial.println(" lx\n");
  return;
}

void bajarPuerta() {
  
  Serial.println("Es de Noche ");

 proximityBOTTON = digitalRead(reedSwitch2); // Leemos el estado del reedSwitch2
 
 if (!proximityBOTTON && proximityBOTTONant) // If the pin reads low, the switch is closed.
 {
   Serial.println("Switch closed Puerta Abajo");
   digitalWrite(LedRojo_reedSwitch2, HIGH); // Turn the LED on

   analogWrite(derNegro, 0); //para el motor
   analogWrite(derRojo, 0);
 }
 else if (proximityBOTTON && !proximityBOTTONant)
 {
   Serial.println("Switch Open Bajando Puerta");
   digitalWrite(LedVerde_reedSwitch1, LOW); // apaga el LED 
   digitalWrite(LedRojo_reedSwitch2, HIGH); // Turn the LED on
   analogWrite(derNegro, vel); //atras
   analogWrite(derRojo, 0);
 }
  proximityBOTTONant = proximityBOTTON;  
  return;
}

void subirPuerta(){
  
  Serial.println("Es de Dia ");

  
  proximityTOP = digitalRead(reedSwitch1); // Leemos el estado del reedSwitch1
  
  if (!proximityTOP && proximityTOPant) // If the pin reads low, the switch is closed.
  {
    Serial.println("Switch1 closed Puerta Arriba");
    digitalWrite(LedVerde_reedSwitch1, HIGH); // enciende el LED

    analogWrite(derNegro, 0); //para el motor 
    analogWrite(derRojo, 0);
  }
  
  else if (proximityTOP && !proximityTOPant)
  {
    Serial.println("Switch1 Open Puerta Subiendo");
    digitalWrite(LedVerde_reedSwitch1, HIGH); // enciende el LED
    digitalWrite(LedRojo_reedSwitch2, LOW); // apaga el LED
    analogWrite(derNegro, 0); //adelante 
    analogWrite(derRojo, vel);
  }
  proximityTOPant = proximityTOP;
  return;
}

Agradecimientos a Jose por la idea de los reed switch Y a surbyte por su ayuda y por implementar el monitoreo del estado de los interruptores.

Lo siguiente sera hacerlo en un Arduino Mini pro y añadir un panel solar con su batería.

Hay algo que no entiendo en el código antiguo sin guardar el estado del switch, siempre me decía por el monitor serial subiendo puerta... puerta arriba.. y se imprimía con cada lectura del sensor lumínico.

Ahora guardando el estado del switch solo dice una vez bajando puerta y puerta abajo el resto de lecturas solo muestra por serial la medida del sensor de luz.

Claro porque las cosas ocurren una sola vez, ya que no ves el estado como tu hacías sino la transición del estado de 0 a 1 o de 1 a 0.

Ok, entiendo lo que me dices muchas gracias de nuevo por aclarar mis dudas.

A ver si mi mujer encuentra los paneles solares, dice que el niño estaba jugando con ellos y los guardo, pero no se acuerda donde jajaja en cuanto los tenga termino el proyecto.

Usare una batería la del triciclo de donde he sacado el motor, la batería es de 6V 12AH, las placas solares son dos de 5v 240mA 1.2W conectados en serie para tener 10v 240mA ¿Supongo que cargara la batería no? total solo se va a usar el motor 2 veces al día.

Un saludo Y muchas gracias de nuevo.

Si la va a cargar pero sin un cargador que regule tensión y corriente intentará llegar a 10V no te parece?

Si es verdad si lo ponemos tal cual me cargare la batería. Tengo que ver como lo hago no tengo mucha idea de como hacer un cargador.

Solo se me ocurre poner un divisor de voltaje para el monitoreo de la batería y cuando este cargada... (ni idea jaja) pues o poner un relé que corte la carga o derivarlo a otra batería para vigilar el gallinero, no se si necesito algo mas para cargar la batería.

Necesito vigilar la zona eso si... el otro día me robaron todas las olivas. Si saltan la valla por 3 olivos que tengo en cuanto vean gallinas no voy a ver ni un huevo.

He pensado algo sencillo como sensores pir y un modulo SD para guardar imágenes cuando detecte movimiento, en cuanto denuncie a un par de pillos seguro que se lo piensan dos veces en saltar la valla.

Gracias por el interés surbyte un abrazo.

Piensa en que los asusta, tal vez barreras IR y generar algun efecto luminoso o sonido que los altere. Hay que investigar.
Eso también te va a despertar o sobre saltar a ti pero la idea es preservar las gallinas no?

Cargador de baterias de 12V hay por todos lados. Tal vez mejor comprarlo.
sino mira esto pero es muy básico Simple Arduino Battery Charge Controller - YouTube

Aunque ponga alarma no me voy a enterar porque mi casa esta a 2 kilómetros de donde están las gallinas pero si seria buena idea incluir una alarma para asustarlos.

He estado mirando cargadores por aliexpress y hay muchos desde 5€ hasta unos 30€ que son los mejores la verdad que por el precio que tienen no merece la pena hacer uno seguramente los compre, no voy a usar la batería del coche a 6V porque necesito también una bomba para regar el huerto desde el pozo. Mejor comprare un panel solar a 18v y una batería de 12v que me simplifica todo y puedo enchufar mas cosas. Cuando tenga el material terminare este post como dios manda.

Muchas gracias por todo siempre es un placer hablar contigo. Un saludo.

Bueno pues yo creo que tengo un poco mas claro el asunto y para no complicar mucho el tema he decidido hacer unos cambios con lo que tenia a mano por casa para hacer la puerta del gallinero. Básicamente lo que cambio es la batería y el motor.

Voy a usar dos baterías que tengo de Li-ion 3.7v que están nuevas una para Arduino pro mini y la otra de reserva por si falla la principal o hay muchos días de sombra, que donde vivo lo dudo pero si hablamos de animales vivos toda precaución es poca, El motor es un servo AS3103 360 grados de rotación continua, presento la idea para que vean un poco como quiero montarlo:

La carga de las baterías se hace con los paneles en un día ahora tengo que montar todo y a ver como responde voy a hacer las pruebas en casa hasta que este seguro de que la idea funciona. Ayer deje Arduino NANO conectado a la batería toda la noche para ver si aguanta y de 3.7V que tenia cuando la puse por la noche, se quedo en 3.5 por la mañana... claro que no tenia nada mas conectado hay que hacer mejores pruebas.

El cargador de litio es el de el esquema de conexiones con estas características:

Charge module: Linear charging
Current: 1A
Charge precision: 1.5%
Input voltage: 4.5V-5.5V
Full charge voltage: 4.2V
Led indicators: red is charging, green is full charged
Input interface: mini USB
Work temperature: -10℃ to +85℃
Inverse polarity: NO
Weight: 5g
Size: 25 x 19 x 10mm

Por eso quiero usar las baterías de teléfono que tengo por aquí porque son de 3.7V y su carga máxima es de 4.2V perfecto para el cargador que tengo.

Las pruebas de carga han ido bien no ha explotado jajaja pero cuando las dos baterías estén cargadas no se que hacer con la energía que genere.

El motor lo he probado con la batería y tiene fuerza suficiente para levantar la puerta total solo se usa dos veces al día yo creo que las baterías van a estar siempre cargadas.

"se agradecen de corazón las sugerencias y consejos"

Un abrazo gente!

Te sugiero añadir una protección de sobre-descarga de la batería ( Over-discharge protection ). Las baterías de litio cuando bajan de 3.3V quedan inservibles, por eso deberías añadir una protección que corte el suministro de energía cuando el voltaje llegue a 3.3V para evitar la rotura de la batería.

Un saludo :slight_smile:

Puff menos mal que me has avisado no tenia ni idea, muchas gracias Alvaro.

Después de tu consejo he dejado descargarse mi teléfono hasta apagarse y me daba una lectura de 3.4V Supongo que sera por no jugar con el limite.

De todas formas creo que he leído en alguna ocasión que no hay que dejar que el teléfono se quede sin batería que hay que cargarlo cuando estamos a un 20% ó 30% de batería para que dure mucho mas tiempo y alargar la vida útil. (hablo del teléfono porque usa la misma bateria)

¿Cual creen ustedes que seria el limite optimo de descarga? Teniendo en cuenta que quiero cuidar la batería con cariño

PD: Muy interesante tu propuesta si señor, me ha gustado mucho tu consejo Alvaro!

Siguiendo el consejo de Álvaro me dispongo a medir el voltaje de la batería con el pro mini es el modelo a 5V y gracias a la web de prometec he cogido este ejemplo de suso y lo he modificado para leer el voltaje de la batería.

El caso es que no se si estoy haciendo las cosas bien funcionar... funciona pero no se si es correcto lo que estoy haciendo.

La primera duda es si esta bien alimentar Arduino pro mini 5V con esta batería de 3.7V por el pin raw.

La segunda es con el código para leer el voltaje según el tester las medidas coinciden pero no se si es correcto hacerlo así:

byte LecturaAnalog=A0;
float VoltajeEnBateria=0.0;
float Ajuste= 0.07; // Ajuste para que muestre el voltaje real 
int PorcentajeDeCarga=0;
int MedidaAnalogica=0;


void setup() {

Serial.begin(9600);
}

void loop() {

MedidaAnalogica = analogRead(LecturaAnalog); // Leemos A0 y guarda en MedidaAnalogica

VoltajeEnBateria= (((MedidaAnalogica*5.0)/1023.0) + Ajuste);// Convertimos a valor con decimales

PorcentajeDeCarga=((VoltajeEnBateria*100) - 320); // Fórmula para mostrar el Porcentaje De Carga 

Serial.print("Voltaje: "); Serial.print(VoltajeEnBateria);Serial.print("   ");
Serial.print("Carga: "); Serial.print(PorcentajeDeCarga); Serial.println("%");
delay(1000);
}

Esto es lo que muestra el serial "Voltaje: 4.10 Carga: 89%" y la verdad es que es real pero no se si hay mejores maneras de hacerlo.

Espero que puedan despejar mis dudas de novato.

EDITO:

Nada macho a mi estas cosas me vuelven loco, resulta que cuando el modulo de carga llena la batería y llega a los 4.20v el led verde se enciende peeero la lectura de arduino cambia a 4.08 esta claro que algo hay mal cuando me pasa esto me da ganas de dar cabezazos contra la pared :frowning:

PD: La que me ha liado Alvaro_Pelon jajaja

La primera duda es si esta bien alimentar Arduino pro mini 5V con esta batería de 3.7V por el pin raw.

Algo no te dice que esta mal?
Si tienes un pro mini de 5V deberás alimentarlo al menos con 6.5V. Dejame confirmarlo pero si busca Arduino Pro mini encuentras esto:

Power

The Arduino Pro Mini can be powered with an FTDI cable or breakout board connected to its six pin header, or with a regulated 3.3V or 5V supply (depending on the model) on the Vcc pin. There is a voltage regulator on board so it can accept voltage up to 12VDC. If you’re supplying unregulated power to the board, be sure to connect to the “RAW” pin on not VCC.
The power pins are as follows:
RAW For supplying a raw voltage to the board.
VCC The regulated 3.3 or 5 volt supply.
GND Ground pins.

Si tiene regulador debes entregarle 6.5V.
Este es el esquema de un MINI PRO 5V circuito esquemático
Usa un regulador de Microchip el MIC5205
Será un MIC5205-5.0BM5 para 5V y un MIC5205-3.3BM5 para 3.3V.
Para maxima corriente de salida requieren una tensión de entrada mínima de 257 a 350mV
Es decir, si tu MINI PRO es de 5V requieres 5.35V a la entrada RAW para que funcione el regulador.

Si algo me decía que esta mal, pero tampoco entiendo bien porque, sabia que funciona a 5v pero físicamente tu le pones la batería a 3.7V y el cacharro funciona.

Así que con un MIC5205 regula de 3 a 5v? Lo veo un poco difícil para el nivel que tengo la verdad.

Algo de este rollo no funcionaria 3v to 5v step up?

Como se complican las cosas macho cuando uno quiere hacer algo tan pequeño y no dejan de salir problemas. Al final no voy a poder aprovechar nada de lo que tengo. Me veo comprando otra batería... o bueno tengo 2 si las junto tengo 7.4V quizá con otro regulador de carga diferente... que lio tengo, me pego horas buscando cosas y al final me lio mas jajaja