Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal

Caméra espion pour oiseaux

Démarré par Riroms86, Mai 16, 2019, 12:58:25 PM

« précédent - suivant »

Riroms86

Bonjour à  tous

Je suis nouveau ici, je fais quelques projets arduino surtout pour ma fille qui à  4 ans a des demandes bien spécifiques comme la dernière : "Papa ce serait bien qu'on ai un nichoir pour les oiseaux et qu'on puisse voir les bébés dedans"... "euh oui ma chérie mais il faut que papa se renseigne d'abord"  :) :o. Alors me voilà , je me renseigne. Electro-Bidouilleur m'a dit via faceboock de passer la tête ici et que peut-être des aficionados pourraient m'aider. Alors voilà , voici le projet. Je suis novice alors s'il vous plait, de la bienveillance.

Je me lance donc dans l'espionnage d'oiseaux via une caméra incrustée dans un nichoir. Voilà  ce que je n'ai jamais fais en arduino, de la vidéo pour espionner des être vivants.
Sachant que ce nichoir serait dans un arbre ou sur ma maison à  4 ou 6 mètres du sol, je ne me vois pas tirer dans mon jardin ou sur ma maison un câble d'alimentation ni un câble vidéo (je ne suis pas seul a occuper les lieux). C'est pour ça que je pensais plutôt à  une batterie rechargeable que je pourrais recharger en l'enlevant d'un boitier au pied de l'arbre et un module WIFI... en plus pour pas que cela ne consomme trop, je pensais également éteindre la caméra quand on ne la regarde pas et pour que ce projet ne soit pas réservé seulement à  mes connaissances et ma fille, je pensais mettre l'URL au niveau de la rue et que le badaud pendant sa pérégrination, puisse se connecter pour voir cette fascisante nature se dévoiler devant ses yeux Zébahis. Mais alors voilà , comment faire ?

Après avoir trainer sur le forum arduino, voilà  ce que j'ai.

Je vais passer par un module ESP 32 et un caméra OV2640 (DX95) (d'ailleurs je ne trouve pas ce modèle dans FRITZING donc si quelqu'un avait ça en stock, je suis preneur). J'essaye de faire un shéma pour les branchements, je le mettrais si des personnes veulent bien vérifier ou m'aider a le faire.



J'ai aussi un panneau solaire de 6v 4.5w 720 mA, une batterie 3.7v 5000mah et un module Lipo chargeur solaire.

Enfin, il me reste d'un ancien projet, un protecteur contre les surintensités 2x3.7 3A et un module booster de charge 10 W

Ainsi que cet essai de code mélangeant plusieurs projets trouvés à  droite et à  gauche. Je le mets plus bas car c'est long.

Donc voila.
Tout ça pour essayer de monter mon projet.
Pour info je suis dans un fablab et donc tout cela sera partagé a d'autres passionnés.
Sinon, pour le nichoir, c'est bon, la LPO m'a déjà  fournit des plans et tout expliquée.

Merci d'avance pour votre aide.

Le code donc :

#include "OV2640.h"
#include <WiFi.h>
#include <WebServer.h>
#include <WiFiClient.h>

OV2640 cam;
WebServer server(80);

const char *ssid =     "<your wifi ssid>";         // Entrer le nom du wifi
const char *password = "<your wifi password>";     // Entrer le password du wifi

void handle_jpg_stream(void)
{
  WiFiClient client = server.client();
  String response = "HTTP/1.1 200 OK\r\n";
  response += "Content-Type: multipart/x-mixed-replace; boundary=frame\r\n\r\n";
  server.sendContent(response);

  while (1)
  {
    cam.run();
    if (!client.connected())
      break;
    response = "--frame\r\n";
    response += "Content-Type: image/jpeg\r\n\r\n";
    server.sendContent(response);

    client.write((char *)cam.getfb(), cam.getSize());
    server.sendContent("\r\n");
    if (!client.connected())
      break;
  }
}

void handle_jpg(void)
{
  WiFiClient client = server.client();

  cam.run();
  if (!client.connected())
  {
    Serial.println("fail ... \n");
    return;
  }
  String response = "HTTP/1.1 200 OK\r\n";
  response += "Content-disposition: inline; filename=capture.jpg\r\n";
  response += "Content-type: image/jpeg\r\n\r\n";
  server.sendContent(response);
  client.write((char *)cam.getfb(), cam.getSize());
}

void handleNotFound()
{
  String message = "Server is running!\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  server.send(200, "text/plain", message);
}

void setup()
{
  Serial.begin(115200);
  while (!Serial)
  {
    ;
  }

  camera_config_t camera_config;
  camera_config.ledc_channel = LEDC_CHANNEL_0;
  camera_config.ledc_timer = LEDC_TIMER_0;
  camera_config.pin_d0 = 17;
  camera_config.pin_d1 = 35;
  camera_config.pin_d2 = 34;
  camera_config.pin_d3 = 5;
  camera_config.pin_d4 = 39;
  camera_config.pin_d5 = 18;
  camera_config.pin_d6 = 36;
  camera_config.pin_d7 = 19;
  camera_config.pin_xclk = 27;
  camera_config.pin_pclk = 21;
  camera_config.pin_vsync = 22;
  camera_config.pin_href = 26;
  camera_config.pin_sscb_sda = 25;
  camera_config.pin_sscb_scl = 23;
  camera_config.pin_reset = 15;
  camera_config.xclk_freq_hz = 20000000;
  camera_config.pixel_format = CAMERA_PF_JPEG;
  camera_config.frame_size = CAMERA_FS_SVGA;

  cam.init(camera_config);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(F("."));
  }
  Serial.println(F("WiFi connected"));
  Serial.println("");
  Serial.println(WiFi.localIP());

  server.on("/", HTTP_GET, handle_jpg_stream);
  server.on("/jpg", HTTP_GET, handle_jpg);
  server.onNotFound(handleNotFound);
  server.begin();
}

void loop()
{
  server.handleClient();