Problème interférence sur broche A0 du D1 mini

Bonjour à tous,

Sur un D1 mini, j'ai relié un NRF24 PA LNA avec sa carte d'alim et qui communique avec succès avec d'autre NRF24 mais sa provoque des interférences sur la broche A0 du D1 mini lorsque qu'elle est utilisé et sa passe la broche D4 à l'état bas. Est ce que si j'ajoute des condensateurs de découplage sa permettrais d'isoler mais comment calculer la valeur des condensateurs et ou les placer dans le circuit (sont-ils bien placer dans sur le schéma ?) ?

  • Sans le NRF24L01, les boutons branché sur D4 et A0 se comporte normalement
  • Si rien n'est relié branché A0, le bouton relié à D4 se comporte normalement

D3 -> Bouton
D4 -> Bouton 2
A0 -> Résistance Pull-up 10k -> Bouton 3
D0 -> CE (nRF24)
D8 -> CSN (nRF24)
D7 -> MO (nRF24)
D6 -> MI (nRF24)
D5 -> SCK (nRF24)
TX -> Résistance 1K -> RX DFPlayerMini
RX -> TX DFPlayerMini
D1 -> SCL PCF8574 -> SCL LCD 16x2
D2 -> SDA PCF8574 -> SDA LCD 16x2
PCF8574 -> Keypad 4x4

Merci par avance

Bonjour @brucekamuit

A0 : tentes un pullup de 1k Ohm et un condensateur de 100nF entre A0 et la masse

D4 : il s'agit en fait de GPIO2 qui ,sur ces cartes, est en général (pas sur toutes les copies) relié à la LED 'Builtin'
on peut supposer en l'absence de code fourni que tu agis sur la LED et mets ainsi à l'état bas GPIO2 (alias D4)

(D'autres sur ce forum auront peut être le courage d'analyser ton schéma dessin de câblage, j'y renonce, ma vue n'est pas adaptée à ce genre d'exercice. je ne me prononce donc pas sur la mainère dont les divers éléments sont alimentés)

@al1fch merci de ta réponse, je vais essayer avec une résistances de 1k et un condensateur de 100nF

Oui sur le D1 mini, D4 correspond au GPIO2 et qui est relié à la LED Builtin, mais je ne me sers pas de la led dans mon code

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DFRobotDFPlayerMini.h>
#include <SoftwareSerial.h>
#include <I2CKeyPad.h>
#include <Keypad.h>

#define CE_PIN  D0
#define CSN_PIN D8

#define BTN1       D3
#define BTN2       D4
#define BTN3       A0

#define DFMINI_TX       RX
#define DFMINI_RX       TX 
SoftwareSerial softwareSerial(DFMINI_RX, DFMINI_TX);

DFRobotDFPlayerMini player;

const uint64_t pipe = 0xE8E8F0F0E1LL;

RF24 radio(CE_PIN, CSN_PIN);

#define I2C_ADDR 0x27
#define LCD_COLS 20
#define LCD_ROWS 4

LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLS, LCD_ROWS);

const uint8_t KEYPAD_ADDRESS = 0x23;

I2CKeyPad keyPad(KEYPAD_ADDRESS);

char keymap[17] = "123A456B789C*0#D";

unsigned long lastKeyPressTime = 0;
unsigned long debounceDelay = 250;

bool isPlaying = false;
bool dfPlayerReady = false;

int volume = 30;

void setup() {
  Wire.begin( );
  Serial.begin(115200);

  pinMode(BTN1, INPUT_PULLUP);
  pinMode(BTN2, INPUT_PULLUP);

  keyPad.loadKeyMap(keymap);

  lcd.init();
  lcd.backlight();

  softwareSerial.begin(9600);
  if (player.begin(softwareSerial)) {
    player.volume(volume);
    dfPlayerReady = true;
  }

  radio.begin();
  radio.openWritingPipe(pipe);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
  radio.printDetails();
}

void loop() {
  char key = keyPad.getChar();

  if (keyPad.isPressed() && key != NO_KEY && (millis() - lastKeyPressTime) > debounceDelay) {
    lastKeyPressTime = millis();
    Serial.println(key);

    if (key == '#' && volume < 30) {
      volume++;
      lcd.setCursor(14, 0);
      lcd.print(volume);

      unsigned long previousMillis = millis();
      unsigned long interval = 1000;
      while(millis() - previousMillis < interval) {
      // Attendre
      }
      lcd.setCursor(14, 0);
      lcd.print("  ");
    } else if (key == '*' && volume > 0) {
      volume--;
      lcd.setCursor(0, 14);
      lcd.print(volume);

      unsigned long previousMillis = millis();
      unsigned long interval = 1000;
      while(millis() - previousMillis < interval) {
      // Attendre
      }
      lcd.setCursor(14, 0);
      lcd.print("  ");
    }

    if (isdigit(key)) {
      if (dfPlayerReady) {
          player.play(key);
          isPlaying = true;
        }
    }
    isPlaying = false;
  }


  if (digitalRead(BTN1) == LOW) {
    const char text[] = "Message 1";
    radio.write(&text, sizeof(text));
    Serial.println(text);
    Serial.println(digitalRead(BTN1));

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(text);

    if (dfPlayerReady) {
          player.play(1);
          isPlaying = true;
    }
    isPlaying = false;
  }

  if (digitalRead(BTN2) == LOW) {
    const char text[] = "Message 2";
    radio.write(&text, sizeof(text));
    Serial.println(text);
    Serial.println(digitalRead(BTN2));

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(text);

    if (dfPlayerReady) {
          player.play(2);
          isPlaying = true;
    }
    isPlaying = false;
  }

  if (analogRead(BTN3) < 512) {
    const char text[] = "Message 3";
    radio.write(&text, sizeof(text));
    Serial.println(text);
    Serial.println(analogRead(BTN3));

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(text);

    if (dfPlayerReady) {
          player.play(3);
          isPlaying = true;
    }
    isPlaying = false;
  }
}

Pour plus de lisibilité j'ai "simplifier" le schéma en ne laissant que ce qui est branché sur la broche A0

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.