Nouvelles:

Le Forum est maintenant chiffré (préambule https). Bien sûr, des liens externes insérés dans les sujets vont demeurer inchangés. Mais la composition des pages du Forum est désormais sécurisée. Si des problèmes d'affichage surviennent, veillez à vider votre cache pour ce site.

Menu principal
Menu

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Voir les contributions Menu

Messages - Manu

#1
J'aimerais partager ce nouveau projet avec vous.  :)

Il s'agit d'un écran ili9341 & ESP32 qui permet de surveiller l'état d'un système d'énergie solaire, grâce au protocole VE. Direct disponible sur les appareils Victron Energy. Ajoutez également un capteur de courant pour le chargeur dépourvu de VE. Direct et une sortie est également incluse pour activer un relais.


Le code & Schéma et les détails sont disponibles sur mon github:
https://github.com/ManuUniverso/Solar-Monitor

Dans ce cas, je repousse les limites de ce que je suis capable de faire en programmation, donc si quelqu'un a des idées pour améliorer le code, welcome.




J'en profite pour vous laisser quelques images supplémentaires bonus pour les bidouilleurs !  8)



les entrailles de la machine

LDR







N'hésitez pas à laisser un commentaire si vous pensez pouvoir apporter quelque chose d'intéressant au projet ou si vous avez des questions.
Chao !!! ;D



VE Direct Protocol
https://www.victronenergy.com/upload/documents/VE.Direct-HEX-Protocol-Phoenix-Inverter.pdf
https://community.victronenergy.com/storage/attachments/20859-mppt-hex-protocol.pdf
https://www.victronenergy.com/upload/documents/VE.Direct-Protocol-3.33.pdf

Display ili9341
https://www.youtube.com/watch?v=hcMU5H6vzxI
ESP32
https://www.youtube.com/watch?v=2NgkTLpHAKk



#2
Peut-être utile aussi:

EB_#507 Analyse - Un Atténuateur Ajustable de Haut-Parleur?
https://www.youtube.com/watch?v=X-IP8Ld8Whs
#3
Bonjour, un module avec un relais suffirait si la consommation des lumières n'est pas très élevée. Puis un détecteur de mouvement PIR, Ultrasons ou même par le son. Voici quelques vidéos qui pourraient vous guider.

EB_#232 Mini-Plaquette - Sonde de Distance aux Ultrasons HC-SR04
https://www.youtube.com/watch?v=QgEkTRFNrEs

EB_#517 Mini-Plaquette - Reconnaissance Vocale V3 de Elechouse - Pour Arduino
https://www.youtube.com/watch?v=5UcZDmEbal8

P.I.R Sensor
https://www.youtube.com/results?search_query=PIR+arduino

Donc il faudra:

alim 5V  (un vieux chargeur USB suffirait)
Modulo Sensor
Relai 5Vcc 220V (L'image n'est qu'un exemple d'un relais 5V, je n'achetez jamais dans ce magasin)



Parfois, le module n'aura pas assez de puissance pour activer le relais (mA). J'utilise la broche d'activation "enable" pour activer le bec qui à  son tour active le relais j'ajout cela entre le module et le relai:


N'oubliez pas de bien séparer le circuit basse tension 5vcc de celui 220va.
#4
En recherchant ces mots-clés, vous trouverez peut-être quelque chose qui vous intéresse:
"drowsiness detection"

Exemple:
https://www.youtube.com/results?search_query=drowsiness+detection
#5
Bonjour à  tous,

Voici une petite astuce qui consiste à  activer une prise connectée (en l'occurrence un modèle Meross MSS310) avec un arduino ou esp32 par exemple, sans perdre son usage normal et ses fonctions d'origine.

On distingue deux gros circuits à  l'intérieur de la prise. Un avec alimentation et commande de relais, un autre plus petit qui traite la connexion réseau (vertical sur la photo).


Ce que j'ai réussi à  localiser. Le plus intéressant bien sûr, est la ligne qui active le relais lorsqu'il est à  un niveau haut de 3.3v.Ici je suppose RX pour la fonction qui mesure la consommation dispo sur l'app mais je ne l'ai pas vérifié.

Désolé, sur cette photo, le violet est le supposé RX mais dans l'assemblage ESP32 sur les photos suivante, j'utilise cette couleur pour GND.

Il faut couper la piste. Connectez ensuite la sortie de la carte d'origine et celle de l'esp32 à  cette piste. J'ai ajouté une diode 1N5711 pour chacun pour éviter que si l'ESP32 est à  un niveau haut, cela n'endommage pas la petite plaque d'origine de la prise a niveau bas, par exemple.




Exemple avec un ESP32, deux diodes 1N5711 et 5 fils.

Violet   GND
Rouge  3.3v
verte sortie ESP32 pour activer le relais (avec diode)
verte sortie Prise   pour activer le relais (avec diode)
bleu sortie finale qui regroupe les deux précédentes

VertESP32 + VertePrise   = Bleu
       0       +       0          = 0
       0       +       1          = 1
       1       +       0          = 1
       1       +       1          = 1

Code simple pour activer le relais par intermittence juste pour vérifier le fonctionnement. Je ne suis pas programmeur, il existe des moyens plus élégants de le faire sans doute, mais cela fonctionne.

//TEST RELAY HIGH=ON en ESP32
//Relay---------------------------------------------------
#define RelayPin 32                                                      // Pin D32 GPIO32
#define RelayLevelON HIGH                                                 // Relay activated in high
#define RelayLevelOFF LOW                                               // Relay disable in low
#define msPinSet 500
#define msON 3000
#define msOFF 3000
#define msLoop 50

void RelayPinSet(){
  pinMode(RelayPin, OUTPUT);                                             // configure pin in output mode to activate relay
  delay(msPinSet);
  digitalWrite(RelayPin, RelayLevelOFF);                                 // Turno OFF relay
  delay(msPinSet);
  Serial.println("RelaySetPin");   
}

void RelayON(){
  digitalWrite(RelayPin, RelayLevelON);                                  // Turno ON relay go to "#define RelayLevelON" to change HIGH or LOW for your relay activated
  delay(msON);                                                           // minimum turn ON time check the relay initial start
  Serial.println("Relay ON");   
}

void RelayOFF(){
  digitalWrite(RelayPin, RelayLevelOFF);                                 // Turno OFF relay go to "#define RelayLevelOFF" to change HIGH or LOW for your relay disabled
  delay(msOFF);     
  Serial.println("Relay OFF");   
}


void setup() {
  Serial.println("Setup START");   
  RelayPinSet();                                                        // Set output & HIGH
  Serial.println("Setup END");   
}

void loop(){
  RelayON();                                                            // Relay ON
  RelayOFF();                                                           // Relay OFF
  delay(msLoop);
}



Bien sûr, si vous utilisez un arduino nano por exemple, il faut tenir compte du fait que le niveau logique ici est de 3.3v, pas de 5v, et il faut rajouter un "converter" pour plus d'infos, voir cette vidéo.

EB_#264 Mini-Plaquette - Conversion de niveaux logiques de bus
https://www.youtube.com/watch?v=7N1shxJ8k7I

#6

Les commentaires sont toujours bien appréciés, Merci papyblue.

écrans chinois Oled:
D'autant plus que j'ai dû cacher l'énorme bouton d'origine de l'ampli.


( image made in http://arifidenza.it/Forum/topic.asp?ARCHIVE=true&TOPIC_ID=312055  )
#7
Bonjour,

Je me promenais dans le magasin Lidl et j'ai trouvé ce multimètre Parkside pour un peu moins de 12 €. Je voulais avoir un multimètre "martyr" pour les pratiques contraires à  "l'éthique", alors j'ai décidé de l'acheter.

Mais quand vous rentrez chez vous, insérez la batterie et tournez la roue et ...bip!, hold et... bip!
Bref, à  chaque fois que l'on touche un bouton ou que l'on change la molette de sélection, un son strident et trop puissant me dérangeait les oreilles.

J'ai donc décidé de voir ce que je pouvais faire pour y remédier et voici ma solution.







  ::) Comme vous pouvez le voir, j'ai finalement mis un potentiomètre en série avec le buzzer.

Avec une résistance de700ohm = son moyen
                                    1Kohm = son faible
                                  18Kohm = son très faible à  peine audible.

Logiquement il n'est pas nécessaire d'y mettre un si petit potentiomètre. Choisir une résistance à  votre goût sera le mieux je pense.

Bonus track:  ;)
#8
Bonjour,
Récemment, j'ai ajouté un onduleur 24v 3000 Victron Energy à  l'installation, profitant de cette amélioration, J'ai mis à  jour le "contrôle solaire" avec maintenant un ESP32. Avec des alarmes en cas de fusible défectueux, basse tension, ampérage trop élevé,... entre autres.

Solar Control Center v2.0 (ESP32)






Version 3420x2600
https://i.ibb.co/1TCQyB0/IMG-20220916-165822-01-01.jpg

Board:

Attention à  ne pas trop étamer les pistes et à  les chauffer, la pcb pourrait se plier avec la chaleur.

alimentation externe au cas où: (régler même tension que le BEC de la board):


vue de face tout assemblé:


Gardez à  l'esprit que les ADC ne doivent pas avoir de tension présente lors de la mise sous tension de l'ESP32. Allumez d'abord l'ESP32, puis appliquez une tension aux entrées ADC. Pour faciliter cela, j'ai dû ajouter des connecteurs.
En théorie, ajouter une diode 1N5711 entre l'entrée de chaque ADC et GND pourrait résoudre le problème, mais je ne l'ai pas essayé.

Le code:

/*
* Solar Control Center v2.0 (ESP32) by Manu 2022-09-23 16:31
*
* ESP32 Devkit V1 WROOM32 30PINS   Pins Reference https://lastminuteengineers.com/esp32-pinout-reference/
*
* Oled 128x64 pin 5V GND      21, 22                       SDA, SCL
* Current Sensor Analog Read  34, 35, 32                   HCS LSP 50A, 25A, 20A
* Voltage Meter  Analog Read  27, 14, 12, 33, 25, 26       Check Fuse, PV, Bat  (amélioration a faire a+ 1N5711)
* Voltage Ref ADC             13, 15                       GND, 3.3v on board (not use)
* LED Alarm                   2, 4, 5
* VU meter Watt               23, 19
* Battery LiFePO4  PylonTech UP2500 Nominal 25.6v / 2840Wh nominal / 2550Wh usable / 23v discharge / charge 28.8 / 56A contin. / 100A peak 15sec /
*
* This helps to ADC Read  Inspired by https://www.youtube.com/Électro-Bidouilleur -> EB_#501 https://www.youtube.com/watch?v=5SlQFSFdu68
* This helps to structure Inspires by https://www.youtube.com/c/PhilippeDemerliac_Cyrob
*/

//OLED-----------------------------------
#include <SPI.h>
#include <U8g2lib.h>                      // Display Libr.
#define DspLight 200                      // Display Contrast 0min - 255max
#define DspFont2 u8g2_font_logisoso16_tf  // Fonts size 19x23  list:https://github.com/olikraus/u8g2/wiki/fntgrplogisoso
#define DspLine1 23                       // Cursor position first line                   & Fuse Msg Alarm
#define DspLine2 43                       //                 second line Charge   ">>>>>" & Volt Msg Alarm
#define DspLine3 64                       //                 third line  BatLevel ".   ." & Amp  Msg Alarm
//Serial---------------------------------
#define SerialSet 9600                    // Serial baude           
//Led------------------------------------
#define LedON 50                          // Led brightness
//Delay----------------------------------
#define msLoop 500                        // Delay ms Loop
#define msLedAlarm1 650                   //          Led blink
#define msLedAlarm2 300                   //          Led blink
#define msADC 50                          //          between each reading of the adc
//PIN------------------------------------
  //input
#define PinC1 32                          // Current Sensor 20A INP    MPPT -> BAT
#define PinC2 35                          //                25A OUT            BAT  -> LIGHTING HOME
#define PinC3 34                          //                50A OUT            BAT  -> INVERTER
#define PinF1 14                          // Volt Sensor    60A Fuse   GENERAL         BAT -> 60AFuse
#define PinF2 27                          //                50A Fuse   INVRT                  60AFuse -> 50AFuse Inverter
#define PinF3 26                          //                20A Fuse   LIGHTING HOME                  -> 20AFuse Lighting Home
#define PinPVa 25                         //                PVa (Photovoltaic Panel A)
#define PinPVb 33                         //                PVb (Photovoltaic Panel B)
#define PinBat 12                         // Volt Battery
#define PinAdc0 13                        //                GND  input     "to calibrate ADC not used in this version" 
#define PinAdc4095 15                     //                3.3V input     "to calibrate ADC not used in this version" 
#define InputNbr 11                       // Number of input pins
  //output
#define PinLed1 2                         // led indicating ALARM Fuse MPPT   
#define PinLed2 4                         //                           Inverter
#define PinLed3 5                         //                           Battery
#define PinVUout 19                       // Vu battery output meter amp
#define PinVUinp 23                       //                   meter voltage
#define OutputNbr 5                       // Number of output pins
//Battery--------------------------------
#define BatVMax 29.2                      // Voltage Max limit possible damage
#define BatVFull 28.8                     //         Full
  //#define BatvNominal 25.6              //         Nominal (not use)
#define BatVEmpty 23                      //         Empty
#define BatVMin 21                        //         Min limit possible damage
#define BatAMaxOut 40                     // Current Max Continuous output From BAT to INVRT LIGHT ... UP2500 pylontech 56A
  //#define BatAMaxIn 10                  //         Max            input  From MPPT to BAT charge (not use)
//VUMeter--------------------------------
#define VUMin 0                           // PWM value Watts min VU  PWM 0   = aproxi 0v
#define VUMax 255                         //                 max         255          5v o 3.3v
//Range Drop Voltage Fuse----------------
#define F1VDrop 2                         // Limit of voltage drop in the fuse to activate the alarm Battery
#define F2VDrop 2                         //                                                         Inverter
#define F3VDrop 2                         //                                                         Lighting Home
//ADC------------------------------------
  //10Kohm - 1Kohm 35v max 
#define C1Zero 2867                       // RAW value when 0A pass through the              20ASensor MPPT
#define C2Zero 2901                       // 0A Dali Lighting Home                           25ASensor Lighting Home
#define C3Zero 2872                       // 0VA Inverter VIctron Energy Phoenix 24v 3000 &  50ASensor Inverter
#define C1R  176                          // RAW value when 1A pass through the 20ASensor
#define C2R  132                          //                                    25ASensor
#define C3R  90                           // 3.54 = 1VA aproxi                  50ASensor
#define F1FromMin 2664                    // RAW value of the adc with the min ToMin voltage of interest
#define F1FromMax 2993                    //                               max ToMax
#define F2FromMin 2662                    // RAW value of the adc with the min ToMin voltage of interest
#define F2FromMax 2993                    //                               max ToMax
#define F3FromMin 2682                    // RAW value of the adc with the min ToMin voltage of interest
#define F3FromMax 3021                    //                               max ToMax
#define BatFromMin 2660                   // RAW value of the adc with the min ToMin voltage of interest               
#define BatFromMax 2994                   //                               max ToMax
#define ToMin 2560                        // mV =25.60v Nominal voltage    reference of the min interest value   
#define ToMax 2848                        // mV =28.48V Floatation voltage                  max
  //22kohm - 1.5kohm 50v max               
#define PVaFromMin 337                    // RAW value of the adc with the min PVToMin voltage of interest
#define PVaFromMax 3256                   //                               max PVToMax
#define PVbFromMin 273                    //                               min
#define PVbFromMax 3220                   //                               min
#define PVToMin 600                       // 6v  reference of the min interest value
#define PVToMax 4500                      // 45v                  max 
  //Others
#define ADCResol 12                       // ADC Resolution 12 bits
#define Decimal 100                       // map() cannot handle decimal, from mV to V
#define ADCsampl 256                      // Number of samples to be accumulated to more accurately measure the mean value
#define Zero 0                            // Zero
//Display--------------------------------
  //Msg
#define MsgStart "SOLAR CENTER"
#define MsgF1Fault "FUSIB BATTERY"
#define MsgF2Fault "FUSI INVERTER"
#define MsgF3Fault "FUSI LiGHTING"
#define MsgVBatHIGH " V ALTA!"
#define MsgVBatLOW " V  BAJA!"
#define MsgVBatlow " V   baja"
#define MsgVBathigh " V  alta"
#define MsgABatHIGH "A ALTO !"
  //Decimal Show Display
#define DecimalAbat 0                     // Amp  0 = from 10.23A to 10A
#define DecimalVbat 1                     // Volt 1        25.61v    25.6v

//INPUT----------
float C1=0;
float C2=0;
float C3=0;
float F1=0;
float F2=0;
float F3=0;
float VpvA=0;
float VpvB=0;
float Vbat=0;
float Ain=0;
float AOut=0;
byte PinInput[InputNbr]={PinC1, PinC2, PinC3, PinF1, PinF2, PinF3, PinPVa, PinPVb, PinBat, PinAdc0, PinAdc4095};
//OUTPUT---------
uint8_t VUout=0;
uint8_t VUinp=0;
uint8_t Led1=0;
uint8_t Led2=0;
uint8_t Led3=0;
byte PinOutput[OutputNbr]={PinLed1, PinLed2, PinLed3, PinVUout, PinVUinp};
uint8_t x=0;
float Value=0;

U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

void SerialBaude(){
  Serial.begin(SerialSet);
  Serial.print("Serial Baude: ");
  Serial.println(SerialSet);
}

void u8g2Init(){
  u8g2.begin();                       
  u8g2.setContrast(DspLight);
  DisplayStart();
  DisplayLine2();
  u8g2.print(MsgStart);
  DisplayEnd();
  Serial.println("Display Begin: U8g2 Oled");
  delay(1000);
}

void ConfigPins(){
  for(x=Zero;x<InputNbr;x++){       // input
    pinMode(PinInput[x], INPUT);
    Serial.print(PinInput[x]);
    Serial.println(" INPUT MODE");                                                               
  }
x=Zero;
  for(x=Zero;x<OutputNbr;x++){       // output
    pinMode(PinOutput[x], OUTPUT);
    analogWrite(PinOutput[x], Zero);
    Serial.print(PinOutput[x]);
    Serial.println(" OUTPUT MODE");     
  }
x=Zero;
}

void ADCCalibration(){
  analogReadResolution(ADCResol);                                 // Fixer la résolution ADC à  12 bits
}

float readADC(unsigned char inputPin){
  float adcVal = Zero;
  for (unsigned int i = Zero; i < ADCsampl; i++){  // Pour augmenter la résolution de n bits, 4n fois le nombre d'échantillons doivent être accumulés.
    adcVal += analogRead(inputPin);                // Additon des valeurs lues pour compiler la moyenne
  }
  return adcVal / ADCsampl;                        // Renvoi de la division finale par le nombre d'échantillons, produisant la lecture moyenne.
}

void ReadValue(){
//Current Sensor
  Value = (readADC(PinC1) - C1Zero) / C1R;
  C1 =Value;
  Serial.print("AmpMPPT:");  // 20A
  Serial.print(C1,1);
  Serial.print("A ");
  delay(msADC);
  Value = (readADC(PinC2) - C2Zero) / C2R;
  C2 =Value;
  Serial.print("  AmpLIGHT:"); // 25A
  Serial.print(C2,1);
  Serial.print("A ");
  delay(msADC);
  Value = (readADC(PinC3) - C3Zero) / C3R;
  C3 =Value;
  Serial.print("  AmpINVRT:");  // 50A
  Serial.print(C3,1);
  Serial.print("A ");
  delay(msADC);
  Ain=C1;                          // Amp input   MPPT --> BAT
  AOut=(C2+C3);                    // Amp output           BAT --> LIGHT + INVRT

//FUSE
  Value = map(readADC(PinF1), F1FromMin, F1FromMax, ToMin, ToMax);
  F1 = Value/Decimal;
  Serial.print("  F1:");
  Serial.print(F1,2);
  Serial.print("V  ");
  delay(msADC);
  Value = map(readADC(PinF2), F2FromMin, F2FromMax, ToMin, ToMax);
  F2 = Value/Decimal;
  Serial.print("  F2:");
  Serial.print(F2,2);
  Serial.print("V  ");
  delay(msADC);
  Value = map(readADC(PinF3), F3FromMin, F3FromMax, ToMin, ToMax);
  F3 = Value/Decimal;
  Serial.print("  F3:");
  Serial.print(F3,2);
  Serial.print("V  ");
  delay(msADC);

//Photovolt A & B
  Value = map(readADC(PinPVa), PVaFromMin, PVaFromMax, PVToMin, PVToMax);
  VpvA = Value/Decimal;
  Serial.print("  PVa:");
  Serial.print(VpvA,2);
  Serial.print("V");
  delay(msADC);
  Value = map(readADC(PinPVb), PVbFromMin, PVbFromMax, PVToMin, PVToMax);
  VpvB = Value/Decimal;
  Serial.print("  PVb:");
  Serial.print(VpvB,2);
  Serial.print("V");
  delay(msADC);

//VBAT
  Value = map(readADC(PinBat), BatFromMin, BatFromMax, ToMin, ToMax);
  Vbat = Value/Decimal;
  Serial.print("  Vbat:");
  Serial.print(Vbat,2);
  Serial.println("V");
}

void CheckFuse(){
DisplayLine1();
  if(F1<Vbat-F1VDrop){
    Serial.println("FuseBat     FAULT");
    u8g2.print(MsgF1Fault);
    Led1on();
    Led2off();
    Led3off();
    delay(msLedAlarm1);
  }else if(F2<Vbat-F2VDrop){
    Serial.println("FuseInvrt   FAULT");
    u8g2.print(MsgF2Fault);
    Led1off();
    Led2on();
    Led3off();
    delay(msLedAlarm1);
  }else if(F3<Vbat-F3VDrop){
    Serial.println("FuseLight   FAULT");
    u8g2.print(MsgF3Fault);
    Led1off();
    Led2off();
    Led3on();
    delay(msLedAlarm1);
  }else{
    Serial.println("FUSE OK");
  }
Led1off();
Led2off();
Led3off();
}

void CheckVBat(){
DisplayLine2();
Serial.print("BATTERY:   ");
Serial.print(Vbat,1);
Serial.print("V  ");
Serial.print(AOut,0);
Serial.print("Aoutput ");
Serial.print(Ain,0);
Serial.println("Ainput ");
  if((Vbat<BatVFull) && (Vbat>BatVEmpty)){
    Led1off();
    Led2off();
    Led3off();
    delay(msLedAlarm2);
    if(Ain>Zero){                           // Amp discharge Level from ">    "
      if(Ain<0.5){                          //                          ">>   "
        u8g2.print(">");                    //                          ">>>  "
      }else if(Ain<1){                       
        u8g2.print(">>");
      }else if(Ain<2){
        u8g2.print(">>>");
      }else if(Ain<3){
        u8g2.print(">>>>");
      }else if(Ain<4){
        u8g2.print(">>>>>");
      }else if(Ain<5){
        u8g2.print(">>>>>>");
      }else if(Ain<6){
        u8g2.print(">>>>>>>");
      }else if(Ain<7){
        u8g2.print(">>>>>>>>");
      }else if(Ain<8){
        u8g2.print(">>>>>>>>>");
      }else{
        u8g2.print(">>>>>>>>>>>");
      }
    }
  }else if(Vbat>=BatVMax){
   Serial.println("HIGH");
   u8g2.print(Vbat,DecimalVbat);
   u8g2.print(MsgVBatHIGH);
    Led1on();
    Led2on();
    Led3on();
    delay(msLedAlarm2);
  }
  else if (Vbat<=BatVMin){
    Serial.println("LOW");
    if(Vbat<10){
      u8g2.print(" ");
    }
    u8g2.print(Vbat,DecimalVbat);
    u8g2.print(MsgVBatLOW);
    Led1on();
    Led2on();
    Led3on();
    delay(msLedAlarm2);
  }
  else if(Vbat<BatVEmpty){
   Serial.println("low");
    if(Vbat<10){
      u8g2.print(" ");
    }
    u8g2.print(Vbat,DecimalVbat);
    u8g2.print(MsgVBatlow);
    Led1on();
    Led2on();
    Led3off();
    delay(msLedAlarm2);
  }
  else{  // Vbat>Full
    Serial.println("high");
    u8g2.print(Vbat,DecimalVbat);
    u8g2.print(MsgVBathigh);
    Led1on();
    Led2on();
    Led3off();
    delay(msLedAlarm2);
  }
}

void CheckABat(){
DisplayLine3();
  if(AOut>BatAMaxOut){
    Serial.print("Ouput HIGH: ");
    Serial.print(AOut,DecimalAbat);
    Serial.println("A");
    u8g2.print("  ");
    u8g2.print(AOut,DecimalAbat);
    u8g2.print(MsgABatHIGH);
    Led1on();
    Led2on();
    Led3on();
    delay(msLedAlarm2);
  }else{
    Led1off();
    Led2off();
    Led3off();
    if(x>Zero){
      u8g2.print(".");                          // Battey Level blink from ".     "  to  "        ."
      x=Zero;                                   //                                   to  "      .  "
    }                                           //                                   to  "    .    "
    else{
      if(Vbat>27.76){
        u8g2.print("            .");           
        x=1;
      }else if(Vbat>27.04){
        u8g2.print("         .");
        x=1;
      }else if(Vbat>26.32){
        u8g2.print("      .");
        x=1;
      }else if(Vbat>25.60){
        u8g2.print("    .");
        x=1;
      }else{
        u8g2.print("  .");
        x=1;
      }
    }
  }
}

void DisplayStart(){
  u8g2.clearBuffer();
  u8g2.setFont(DspFont2);
}

void DisplayLine1(){
  u8g2.setCursor(Zero,DspLine1);
}

void DisplayLine2(){
  u8g2.setCursor(Zero,DspLine2);
}

void DisplayLine3(){
  u8g2.setCursor(Zero,DspLine3);
}

void DisplayEnd(){
  u8g2.sendBuffer();
}

void Led1on(){
  analogWrite(PinLed1,LedON);
  Serial.println("Led1: ON ");
}

void Led2on(){
  analogWrite(PinLed2,LedON);
   Serial.println("Led2: ON ");
}

void Led3on(){
  analogWrite(PinLed3,LedON);
  Serial.println("Led3: ON ");
}

void Led1off(){
  analogWrite(PinLed1, Zero);
}

void Led2off(){
  analogWrite(PinLed2, Zero);
}

void Led3off(){
  analogWrite(PinLed3, Zero);
}

void VUshow(){
  VUout=map(AOut,Zero,BatAMaxOut,VUMin,VUMax);      // VUout = Amp  BAT output --> Lighting & Inverter ( not mppt charge input consider )
  VUinp=map(Vbat,BatVEmpty,BatVFull,VUMin,VUMax);      // VUinp = Volt BAT
  analogWrite(PinVUout, VUout);
  analogWrite(PinVUinp, VUinp);
  Serial.print("PWM   [Amp:");
  Serial.print(VUout); 
  Serial.print("]    [Volt:");
  Serial.print(VUinp);
  Serial.println("]");
}

void setup(){
  SerialBaude();
  u8g2Init();
  ConfigPins();
  ADCCalibration();
}

void loop(){
  ReadValue();    // Sensor Value
  DisplayStart();
   CheckVBat();   // Volt
   CheckABat();   // Amp
   CheckFuse();   // Fuse
  DisplayEnd();
  VUshow();
delay(msLoop);
}
#9
Bonjour,
Je voulais juste partager ce tableau que j'ai trouvé sur un vieux livre Radio Handbook

Filtre passe-bas & un filtre passe-haut  < 1Mhz

0  - C1 C3 C5 valeurs communes
x  - C1 C3 valeurs communes  C5 valeurs moins communes
â–² - C1 C5 valeurs moins communes C3 valeurs communes



#10
Bonjour,
Je voulais partager cette nouvelle qui apporte une approche différente de l'apprentissage de l'électronique.

Pour ceux d'entre vous qui ont le Game Pass Xbox, il inclut désormais ce jeu pour apprendre a coder, entre autres.
(Pour le moment uniquement sur PC & pas encore traduit en français ).

https://www.xbox.com/fr-fr/games/store/shenzhen-i-o/9p1jhj127hr4
Description

CRÉEZ DES CIRCUITS. ÉCRIVEZ DU CODE. RTFM.
●   Créez des circuits en utilisant divers composants provenant de divers fabricants, tels que des microcontrôleurs, des portes logiques de mémoire et des écrans LCD.
●   Écrivez du code dans un langage assembleur puissant et compact où toutes les instructions peuvent être correctement exécutées.
●   Lisez le manuel inclus, qui comprend plus de 30 pages de dé références et de diagrammes techniques.
●   Apprenez à  connaître les différents personnages hauts en couleur de votre nouvel employeur, 深圳龙è...¾ç§'技有限å...¬å¸ (Shenzhen Longteng Electronics Co., Ltd.), situé dans la capitale électronique du monde.
●   Devenez créatif ! Concevez et créez vos propres jeux et appareils dans la sandbox.
●   L'ingénierie n'est pas si facile ! Prenez une pause et jouez à  une toute nouvelle variante du solitaire.




Équipe Dev:
https://www.zachtronics.com/

#11
Bonjour,
Je voulais partager cette méthode, pour réaliser des liens direct pour écouter la radio.
(Par exemple depuis un esp32+vs1053)

Tout d'abord chercher la station radio sur ce site depuis Firefox:
https://onlineradiobox.com/
Exemple RTL France



faites un clic droit et sélectionnez "inspecter"



choisissez l'onglet "réseau"



appuyez maintenant sur le bouton de "play" et le lien ci-dessous apparaîtra double clic dessus et voilà  !




Cette astuce je l'ai trouvé ici:
https://www.youtube.com/watch?v=1q_RzSqv410




Bonus Tracks:

Radio Vinci Autoroutes Ouest Centre
https://str0.creacast.com/radio_vinci_autoroutes_1

Radio Vinci Autoroutes Côte d'Azur
https://str0.creacast.com/radio_vinci_autoroutes_7

Radio Vinci Autoroutes Alpes Provence
https://str0.creacast.com/radio_vinci_autoroutes_6

Radio Vinci Autoroutes Languedoc
https://str0.creacast.com/radio_vinci_autoroutes_4

Radio Vinci Autoroutes Auvergne
https://str0.creacast.com/radio_vinci_autoroutes_5

Radio Vinci Autoroutes Grand Ouest
https://str0.creacast.com/radio_vinci_autoroutes_2

Radio Vinci Autoroutes A355
https://ice.creacast.com/radio_vinci_autoroutes_a355

Radio Vinci Autoroutes Sud-Ouest
https://str0.creacast.com/radio_vinci_autoroutes_3

Radio Vinci Autoroutes Perche - Pays de la Loire
https://ice.creacast.com/radio_vinci_autoroutes_cofiroute_r2

Radio Vinci Autoroutes Version Pop-Rock
https://listen.radioking.com/radio/424771/stream/478231

Radio Vinci Autoroutes Version Classique
https://listen.radioking.com/radio/461024/stream/516290

Radio Vinci Autoroutes Française
https://listen.radioking.com/radio/394513/stream/448327

Chérie FM
https://scdn.nrjaudio.fm/fr/30201/mp3_128.mp3?origine=radiobox&cdn_path=adswizz_lbs12&access_token=b2a70296661745ed8b0ba6f76174c9af

Europe1
http://ais-live.cloud-services.paris:8000/europe1.mp3?

Jazz & Soul Radio
https://jazzradio.ice.infomaniak.ch/jazzradio-high.aac

Vibration
https://vibrationenfrancais.ice.infomaniak.ch/vibrationenfrancais-128.mp3

Alouette
https://alouette.ice.infomaniak.ch:80/alouette-high.mp3

Funk
https://gene-wr05.ice.infomaniak.ch/gene-wr05.aac

Virgin Radio
https://ais-live.cloud-services.paris:8443/virgin.aac

skyrock
https://icecast.skyrock.net/s/natio_aac_64k

france inter
https://icecast.radiofrance.fr/franceinter-midfi.mp3

rtl
https://streamer-02.rtl.fr/rtl-1-44-128

Choi Radio X Quebec
http://icecast-choi.rncm.ca/choi.aac

france bleu
https://icecast.radiofrance.fr/fb1071-midfi.mp3

france culture
https://icecast.radiofrance.fr/franceculture-midfi.mp3

france info
https://icecast.radiofrance.fr/franceinfo-midfi.mp3

fun radio
https://streamer-03.rtl.fr/fun-1-44-128

rire et chanson
https://scdn.nrjaudio.fm/fr/57970/mp3_128.mp3?origine=radiobox&aw_0_1st.station=Rire-Chansons-ROCK-AND-RIRE&cdn_path=adswizz_lbs7&adws_out_a2&access_token=36090ade1a5847d4a8137c648505e05d
#12
Bonjour papyblue
Je vois que c'est au-delà  de mes capacités


j'ai démonté ce haut-parleur bluetooth. A l'intérieur il y a deux plaques une noire et l'autre verte. Une pour les leds de l'écran et les commandes "rotary encoder". Une autre qui contient la partie qui génère l'audio (lecteur microsd, input jack3.5mm,bluetooth)

Je voulais éliminer l'écran (board noire) et les encodeurs rotatifs. Ainsi pouvoir utiliser uniquement des push boutons + arduino (et la board verte) pour le contrôle on, off, play, stop, next, etc... au lieu des encodeurs rotatifs. Les câbles que j'essaie de décoder et qui communiquent entre les deux cartes indiquent RX2 et TX2(sur la board verte), j'ai donc supposé que c'était UART.

(   Source Photos: https://estebon.mx/?p=202  )




Je suis un peu découragée je pense que je vais tourner la page pour le moment.

Merci d'être toujours à  l'écoute   ;)
#13
Bonjour à  tous,
J'essaie de lire un signal que je suppose UART. Mais pourquoi deux signaux différents renvoient la même valeur (0x75) de decodage ?   :o
Mon objectif est de copier ces signaux et de les simuler avec un arduino.

(J'ai essayé tous les réglages, il n'est qu'à  115200, il affiche 3 trames de lectures pour chaque signal)





Merci
#14
Bonjour !

Énergie Solaire chez soi: Charger USB
L'éclairage de ma maison fonctionnant à  100% uniquement avec de l'énergie solaire, je constate un surplus de capacité de batterie. Ce n'était pas prévu à  l'origine mais je vais ajouter quelques bricolles pour profiter de cette énergie. Dans ce cas un triple chargeur USB à  charge lente.


Voici le schéma qui m'a pris plusieurs jours à  concevoir. Des logiciels avancés tres complex tels que Paint ont été nécessaires.
Entre l'interrupteur et la batterie il faut placer un fusible qui manque sur le schéma.


Liste des composants :
-Comme boîtier une horloge
-Un régulateur de tension de vbat a 14v
-trois  régulateur de tension de 14v à  5v  500mA
-un interrupteur
-portefusible & fusible 2A
-Cable
-Deux connecteurs XT60 h & m
-Des filtres de ferrite
-Trois Connecteurs USB
-PCB Board à  couper

Pour le câble princiapl batterie->horloge je n'ai pas de photos. Mais placez simplement le porte-fusible (un fusible 2A suffit) du câble le plus près possible de la batterie (dans mon cas LiFePo4 26v)avec le xt60H côte horloge. Ensuite, le connecteur xt60 M sur le câble de l'horloge.

Placer l'interrupteur dans le boitier avec ses câbles dejapret pour faciliter le montage. (pas de photo, mais voire les vis noire nylon)

Souder le bec XL7015 qui sert de premier étage (vbat a 14v) préalablement réglé sur 14v et du ruban kapton pour l'isoler.
Bec buck stepdown regulateur de tension ....

J'ai changé le potentiomètre par une résistance.

Mettez les connecteurs USB dans la boîte.
J'ai également mis des filtres en ferrite sur chaque câble positif.


Ajustez la sortie des trois modules XL4015 à  5v 500mA max et dessoudez la résistance qui alimente les 3 leds pour éviter une consommation inutile.Un peu de kapton  :o


Maintenant, la partie la plus difficile et l'erreur que j'ai commise. La boîte trop
petite était très difficile pour emboîter les trois modules à  l'intérieur. Très élégant  ???


Maintenant, remettez le ruban qui relie le capot arrière aux boutons de l'horloge et alimenter l'horloge avec le +- du 5v


Ferméz le tout avec beucoup de style.... :o

Un peu de colle chaude noire et ni vu ni connu...

Les principales erreurs pour ceux qui veulent faire quelque chose de similaire :
-boîte trop petite
-Le bec de la premier étape Xl7015 chauffe un peu ( 32ºC sur le boitier ) mais c'est raisonnable on peut s'en servir sans problème.
Seulement quand les trois USB sont en pleine charge.

Et voilà  ! Chat marche ;D




Bye

Pour la petite histoire pendant que j'écrivais tout ça, j'ai eu le droit à  une coupure du courant general et il m'aura fallu tout réécrire. Je vais devoir connecter ce pc d'une manière ou d'une autre au solaire   ??? ::)  ..et le routeur ...et le moniteur ...