projets:cctv_disco:start

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:cctv_disco:start [2021/11/22 11:39]
admin [Références et liens]
projets:cctv_disco:start [2022/04/06 17:31] (Version actuelle)
risbo [Photos et médias]
Ligne 15: Ligne 15:
   * https://www.youtube.com/watch?v=YIt121zebMM   * https://www.youtube.com/watch?v=YIt121zebMM
   * Tutoriel ESP8266 :   * Tutoriel ESP8266 :
-  * https://maker.pro/esp8266/tutorial/esp8266-tutorial-how-to-control-anything-from-the-internet +  * https://www.electro-info.ovh/premiers-pas-avec-arduino-d1-mini 
-  * https://www.instructables.com/Control-ESP8266-Over-the-Internet-from-Anywhere/+  * https://randomnerdtutorials.com/esp8266-web-server/ 
  
 ===== Notes techniques et matériaux ===== ===== Notes techniques et matériaux =====
  
-  * Esp 32 +  * **ESP32 cam** [[https://www.amazon.fr/XTVTX-ESP32-CAM-Bluetooth-ESP32-CAM-MB-compatible/dp/B093GSCBWJ/ref=sr_1_2_sspa?keywords=esp32+cam&qid=1637572898&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExVFlWMFU3VUdITTBJJmVuY3J5cHRlZElkPUEwNzc5OTg2MTBLODAzWTkyUTNYSSZlbmNyeXB0ZWRBZElkPUEwMjMwMzMyMlMzUVpVSU9SUVpUTiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=|Chez amazon]] 
-  Camera shield esp 32 +la camera envoie un flux video en wifi...eventuellement avec Motioneye (sur linux) on peut ajouter des fonction de detection mouvement/face etc...  mais c'est sur linux et complexe.
-  esp8266 +
-  led de couleur assez puissantes +
-  booster 5V-12v +
-  * lecteur mp3 pour arduino + ampli + enceinte   OU  enceinte bluetooth powerbank+
  
 +  * **ESP8266 :** Permet de commander en wifi l'allumage de LED et d'un module mp3 via une page web.
  
-**ESP32 cam** [[https://www.amazon.fr/XTVTX-ESP32-CAM-Bluetooth-ESP32-CAM-MB-compatible/dp/B093GSCBWJ/ref=sr_1_2_sspa?keywords=esp32+cam&qid=1637572898&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExVFlWMFU3VUdITTBJJmVuY3J5cHRlZElkPUEwNzc5OTg2MTBLODAzWTkyUTNYSSZlbmNyeXB0ZWRBZElkPUEwMjMwMzMyMlMzUVpVSU9SUVpUTiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=|Chez amazon]]+  * **Lecteur Redmp3** [[https://www.amazon.fr/HLLR-multiprises-amplificateur-monaural-Haut-Parleur/dp/B09M347LCM/ref=sr_1_6?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=module+mp3+arduino+UART&qid=1637573964&sr=8-6|Amazon]] (se declenche avec une arduino ou esp..) necessite une carte micro SD et necessite un ampli et enceinte pour faire :!: un son assez puissant.... ou enceinte bluetooth...batterie integrée. Fonctionne avec librairie Redmp3.h 
  
-la camera envoie un flux video en wifi...eventuellement avec Motioneye (sur linuxon peut ajouter des fonction de detection mouvement/face etc...  mais c'est sur linux et complexe.+  * :!: **Led 4mm** [[https://www.amazon.fr/BOJACK-couleurs-pi%C3%A8ces-assored-Transparent/dp/B07RTWQSJB/ref=sr_1_1_sspa?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=led+4mm&qid=1637574016&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzTlBMVUJGWEUzNFpHJmVuY3J5cHRlZElkPUEwMjE4MzA2M0NCMFJPQk5MN1JVQyZlbmNyeXB0ZWRBZElkPUEwNzg1MTEzMjJSOTc1VU5QOTdaTiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=|Amazon]]  ne seront pas puissante a cette taille.... ou COB 3W (necessitant radiateur) [[https://fr.aliexpress.com/item/4001197438816.html?src=google&src=google&memo1=freelisting&albch=shopping&acnt=248-630-5778&isdl=y&slnk=&plac=&mtctp=&albbt=Google_7_shopping&aff_platform=google&aff_short_key=UneMJZVf&albagn=888888&isSmbAutoCall=false&needSmbHouyi=false&albcp=10191220526&albag=107473525328&trgt=1284054470089&crea=fr4001197438816&netw=u&device=c&albpg=1284054470089&albpd=fr4001197438816&gclid=CjwKCAiAnO2MBhApEiwA8q0HYcGiRxQ_a_-R3cDrbKuW4i2Z3E9pK4Vlkhx3w2dXck8m3Jbc1fTYIhoCy1wQAvD_BwE&gclsrc=aw.ds|Ali]] ? 
 + 
 +  * Jumper 
 +  * Breadboard 
 +  * Powerbank et peut être booster... 
 +  * Enceinte Bluetooth si besoin son fort 
 + 
 + 
 + 
 +==== Esp8266 page web controle ==== 
 +Voir part 1 : https://randomnerdtutorials.com/esp8266-web-server/ 
 + 
 +  - Dans arduino IDE ajouter http://arduino.esp8266.com/stable/package_esp8266com_index.json  dans fichiers /preferences 
 +  - Ensuite dans outils/Gerer les bibliotheque ajouter ESP8266 
 +  - choisir Outils/type de carte : LOLIN(WEMOS) D1 D2 Mini 
 +  - Et utiliser le code fourni sur la page en mettant votre ssid et mdp de votre wifi... 
 + 
 +Attention les GPIO du WEMOS D1 sont pas les meme que les numero de pins : voir Pinout diagram ici : https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/ 
 + 
 + 
 +==== Code ==== 
 +Code qui cree une pageweb avec deux boutons, déclenchant allumage de deux led et lancant fichier mp3. 
 +L'url de la page est donné en serie. (en l'occurence ici : 192.168.0.125) 
 + 
 +<code c+> 
 +/MP3 lib 
 +#include <SoftwareSerial.h> 
 +#include "RedMP3.h" 
 + 
 +#define MP3_RX 12//RX of Serial MP3 module connect to D7 of wemos 
 +#define MP3_TX 13//TX to D8, wemos 
 +MP3 mp3(MP3_RX, MP3_TX); 
 + 
 +int8_t track  = 0x01;//the first song in the TF card 
 +int8_t track2  = 0x02;//the first song in the TF card 
 +int8_t volume = 0x1a;//0~0x1e (30 adjustable level) 
 + 
 + 
 + 
 +// Load Wi-Fi library 
 +#include <ESP8266WiFi.h> 
 +  
 +// Replace with your network credentials 
 +const char* ssid     = "Artnum"; 
 +const char* password = "artnum123"; 
 +  
 +// Set web server port number to 80 
 +WiFiServer server(80); 
 +  
 +// Variable to store the HTTP request 
 +String header; 
 +  
 +// Auxiliar variables to store the current output state 
 +String output5State = "off"; 
 +String output4State = "off"; 
 +  
 +// Assign output variables to GPIO pins 
 +const int output5 = 5; 
 +const int output4 = 4; 
 +  
 +// Current time 
 +unsigned long currentTime = millis(); 
 +// Previous time 
 +unsigned long previousTime = 0;  
 +// Define timeout time in milliseconds (example: 2000ms = 2s) 
 +const long timeoutTime = 2000; 
 +  
 +void setup() { 
 +  Serial.begin(115200); 
 +  // Initialize the output variables as outputs 
 +  pinMode(output5, OUTPUT); 
 +  pinMode(output4, OUTPUT); 
 +  // Set outputs to LOW 
 +  digitalWrite(output5, LOW); 
 +  digitalWrite(output4, LOW); 
 +  
 +  // Connect to Wi-Fi network with SSID and password 
 +  Serial.print("Connecting to "); 
 +  Serial.println(ssid); 
 +  WiFi.begin(ssid, password); 
 +  while (WiFi.status() != WL_CONNECTED) { 
 +    delay(500); 
 +    Serial.print("."); 
 +  } 
 +  // Print local IP address and start web server 
 +  Serial.println(""); 
 +  Serial.println("WiFi connected."); 
 +  Serial.println("IP address: "); 
 +  Serial.println(WiFi.localIP()); 
 +  server.begin(); 
 +
 +  
 +void loop(){ 
 +  WiFiClient client = server.available();   // Listen for incoming clients 
 +  
 +  if (client) {                             // If a new client connects, 
 +    Serial.println("New Client.");          // print a message out in the serial port 
 +    String currentLine = "";                // make a String to hold incoming data from the client 
 +    currentTime = millis(); 
 +    previousTime = currentTime; 
 +    while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected 
 +      currentTime = millis();          
 +      if (client.available()) {             // if there's bytes to read from the client, 
 +        char = client.read();             // read a byte, then 
 +        Serial.write(c);                    // print it out the serial monitor 
 +        header += c; 
 +        if (c == '\n') {                    // if the byte is a newline character 
 +          // if the current line is blank, you got two newline characters in a row. 
 +          // that's the end of the client HTTP request, so send a response: 
 +          if (currentLine.length() == 0) { 
 +            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) 
 +            // and a content-type so the client knows what's coming, then a blank line: 
 +            client.println("HTTP/1.1 200 OK"); 
 +            client.println("Content-type:text/html"); 
 +            client.println("Connection: close"); 
 +            client.println(); 
 +  
 +            // turns the GPIOs on and off 
 +            if (header.indexOf("GET /5/on") >= 0) { 
 +              Serial.println("GPIO 5 on"); 
 +              output5State = "on"; 
 +              digitalWrite(output5, HIGH); 
 +              mp3.playWithVolume(track2,volume);   // nommer bien 001xxx.mp3 
 +              delay(50);
  
-**ESP8266 :** Permet de commander en wifi l'allumage de LED et d'un module mp3.+               
 +            } else if (header.indexOf("GET /5/off") >= 0) { 
 +              Serial.println("GPIO 5 off"); 
 +              output5State = "off"; 
 +              digitalWrite(output5, LOW); 
 +              mp3.stopPlay(); 
 +              delay(50);
  
-**Lecteur mp3** (se declenche avec une arduino ou esp..) necessite une carte micro SD ! +               
-[[https://www.amazon.fr/HLLR-multiprises-amplificateur-monaural-Haut-Parleur/dp/B09M347LCM/ref=sr_1_6?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=module+mp3+arduino+UART&qid=1637573964&sr=8-6|Lien externe]] +            } else if (header.indexOf("GET /4/on") >0) { 
-necessite un ampli et enceinte pour faire :!: un son assez puissant.... ou enceinte bluetooth...batterie integrée..+              Serial.println("GPIO 4 on"); 
 +              output4State = "on";
  
-:!: **Led 4mm**   ne seront pas puissante a cette taille.... +              //Actions  
-[[https://www.amazon.fr/BOJACK-couleurs-pi%C3%A8ces-assored-Transparent/dp/B07RTWQSJB/ref=sr_1_1_sspa?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=led+4mm&qid=1637574016&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzTlBMVUJGWEUzNFpHJmVuY3J5cHRlZElkPUEwMjE4MzA2M0NCMFJPQk5MN1JVQyZlbmNyeXB0ZWRBZElkPUEwNzg1MTEzMjJSOTc1VU5QOTdaTiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=|Lien externe]]+              digitalWrite(output4, HIGH); 
 +              mp3.playWithVolume(track,volume);   // nommer bien 001xxx.mp3 
 +              delay(50);
  
 +                            
 +            } else if (header.indexOf("GET /4/off") >= 0) {
 +              Serial.println("GPIO 4 off");
 +              output4State = "off";
 +              digitalWrite(output4, LOW);
 +              mp3.stopPlay();
 +              delay(50);
 +            }
 + 
 +            // Display the HTML web page
 +            client.println("<!DOCTYPE html><html>");
 +            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
 +            client.println("<link rel=\"icon\" href=\"data:,\">");
 +            // CSS to style the on/off buttons 
 +            // Feel free to change the background-color and font-size attributes to fit your preferences
 +            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
 +            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
 +            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
 +            client.println(".button2 {background-color: #77878A;}</style></head>");
 + 
 +            // Web Page Heading
 +            client.println("<body><h1>ESP8266 Web Server</h1>");
 + 
 +            // Display current state, and ON/OFF buttons for GPIO 5  
 +            client.println("<p>GPIO 5 - State " + output5State + "</p>");
 +            // If the output5State is off, it displays the ON button       
 +            if (output5State=="off") {
 +              client.println("<p><a href=\"/5/on\"><button class=\"button\">ON</button></a></p>");
 +            } else {
 +              client.println("<p><a href=\"/5/off\"><button class=\"button button2\">OFF</button></a></p>");
 +            } 
 + 
 +            // Display current state, and ON/OFF buttons for GPIO 4  
 +            client.println("<p>GPIO 4 - State " + output4State + "</p>");
 +            // If the output4State is off, it displays the ON button       
 +            if (output4State=="off") {
 +              client.println("<p><a href=\"/4/on\"><button class=\"button\">ON</button></a></p>");
 +            } else {
 +              client.println("<p><a href=\"/4/off\"><button class=\"button button2\">OFF</button></a></p>");
 +            }
 +            client.println("</body></html>");
 + 
 +            // The HTTP response ends with another blank line
 +            client.println();
 +            // Break out of the while loop
 +            break;
 +          } else { // if you got a newline, then clear currentLine
 +            currentLine = "";
 +          }
 +        } else if (c != '\r') {  // if you got anything else but a carriage return character,
 +          currentLine += c;      // add it to the end of the currentLine
 +        }
 +      }
 +    }
 +    // Clear the header variable
 +    header = "";
 +    // Close the connection
 +    client.stop();
 +    Serial.println("Client disconnected.");
 +    Serial.println("");
 +  }
 +}
 +</code>
  
-===== Photos et médias=====+{{:projets:cctv_disco:capture_d_ecran_2022-03-05_111300.png?400|{{:projets:cctv_disco:img_4082.jpg?400|{{:projets:cctv_disco:img_4082.jpg?400|{{:projets:cctv_disco:screenshot_20220223-235110_samsung_internet.jpg?400|}}}}}}}}===== Photos et médias=====
 Code pour afficher les images du projet : Code pour afficher les images du projet :
 {{gallery>?&crop&lightbox }} {{gallery>?&crop&lightbox }}
  • projets/cctv_disco/start.1637577572.txt.gz
  • Dernière modification: 2021/11/22 11:39
  • de admin