Message reçu par bluetooth HC05 instable du type "LU⸮⸮⸮US⸮"

Bonjour

Je suis débutant dans la programmation d'Arduino. Je suis en train de fabriquer une lampe basée sur une maquette 1/100 d'une Falcon 9 imprimée maison. La lampe a pour fonction de s'allumer en mode réveil ou bien de façon classique.

J'utilise une Arduino Uno + Module bluetooth HC-05 et un module horloge RTC DS3231 + 29 leds WS2812B. J'ai un code assez volumineux d'environ 500 lignes, qui me permet de gérer tous les paramètres d'allumages : Allumage On/Off, dates et heures d'allumage du réveil, durée du réveil, réglage de la date et de l'heure, un compteur de temps millis() et sa fonction de réinitialisation, et des effets sur les LED pour imiter les flammes des moteurs de la fusée. J'envoie tous ces paramètres depuis une appli Android "Bluetooth Electronics".

Tous ces paramètres fonctionnaient à merveille avec une LED, et j'ai testé la lampe en mode réveil pendant une semaine : RAS j'étais content.

Depuis que j'ai raccordé 29 LED en tout, le module Bluetooth ne semble plus lire les messages envoyés correctement. Par exemple, sur le moniteur je lis les messages reçus suivants (Horloge_LED_4.ino) :

18:21:56.912 -> LUM_1
18:21:57.564 -> ⸮UM_0
18:21:58.172 -> LUM_1
18:21:58.729 -> LUM_0
18:21:59.286 -> ⸮UM_1
18:21:59.796 -> LUS⸮
18:22:00.354 -> LUM_1
18:22:00.909 -> LU⸮⸮

Avec un code basique (Horloge_LED.ino), le module Bluetooth reçois bien les messages que je lui envoie :
18:24:53.993 -> LUM_1
18:24:54.502 -> LUM_0
18:24:54.917 -> LUM_1
18:24:55.241 -> LUM_0
18:24:55.473 -> LUM_1
18:24:55.659 -> LUM_0
18:24:55.888 -> LUM_1

Ca fait quelques heures que je cherche, je ne trouve pas. Je vous demande pas de vous tartiner le code qui est long (et pas optimisé je pense ::)). Je vous mets tout de même les deux .ino à disposition pour les plus courageux.

Ma question : est ce que l'un de vous a déjà eu ce genre de retour bizarre du module Bluetooth ? Est ce que ca pourrait être lié au nombre de LEDS (J'ai essayé d'en piloter 5 uniquement, ne résout pas le problème).

Merci pour votre aide

Horloge-LED_4.ino (16.6 KB)

Horloge-LED.ino (3.48 KB)

Les LEDs consomment de l'ordre de 60mA soit près de 2A au total.
Comment tout ça est-il alimenté ? Le problème peut venir de l'alimentation insuffisante pour le module BT en présence des LEDs.

Je suis sur mon iPhone, je ne peux pas lire les .ino (vaut mieux dans ce cas les attacher avec le suffixe .txt comme ça on peut les ouvrir)

Une hypothèse: Si votre module BT est en SoftwareSerial, plus vous augmentez le nombre de WS2812B, plus il risque de perdre des données car la pression des interruptions est forte (gros challenge de timing sur ces LEDs).

Solution: Passez le module BT sur le port série matériel (mais plus de console série dans l’IDE) ou prenez des LEDs qui ne sollicitent pas autant le matériel comme des APA102.

Bonjour

lesept : J'utilise soit un port USB 3.0 de PC, soit une alim 5V 2,1A. Ma conso totale est d'environ 1,9A quand les LED sont toutes allumées. Ceci dit le problème a lieu quand les LED sont éteintes.

J-M-L : J'ai physiquement branché qu'une seule LED et en effet, les messages reçus sont corrects. C'est bien le branchement des 29 LEDS, mêmes éteintes, qui interagit avec le module HC-05. Quels sont les pinout qui permettent de passer en port série matériel plutôt que Software Serial ? Est ce que je dois modifier l'initialisation suivante du module HC-05 ?

#include <SoftwareSerial.h> //Bibliothèque pour HC-05
SoftwareSerial HC05(2, 3);

Votre Arduino Uno n'a qu'un seul port HardwareSerial, sur les pins 0 (Rx) et 1(Tx).

idéalement il faudrait brancher le HC-05 sur ces pins (en croisant Rx et Tx).

-> il faudrait virer tout ce qui est Serial.begin() et Serial.print() de debug bien sûr

-> vous pouvez conserver le code qui parle au module BT en enlevant

#include <SoftwareSerial.h> //Bibliothèque pour HC-05
SoftwareSerial HC05(2, 3);

et en faisant juste#define HC05 Serialà la place pour conserver le nom HC05

-> il faut débrancher le module BT pendant le téléchargement du code (rien sur les pin 0 et 1). rebranchez une fois le code téléversé et appuyez sur reset pour redémarrer l'Arduino.

Ca fonctionne parfaitement ! Merci beaucoup JML pour votre aide :smiley:

Super

Bonsoir, les modifications permettent d'allumer les LED en On/Off correctement. Finalement je me rends compte que la fonction réveil ne marche plus.
Il semblerait que les modifications ont affecté le fonctionnement du module RTC3231.

Un rappel des modifications effectuées :
J'ai supprimé ces lignes:

#include <SoftwareSerial.h>
SoftwareSerial HC05(2, 3);

void setup()
{
Serial.begin(9600)
}

que j'ai remplacé (comme proposé) par :

#define HC05 Serial
void setup()
{
HC05.begin(9600);
}

Allumage des LED OK, fonction réveil non OK

J'ai donc essayé de remettre certaines lignes en plus des nouvelles, comme suit, mais le réveil ne fonctionne pas :

#include <SoftwareSerial.h>
#define HC05 Serial
#include "RTClib.h" //Bibliothèque module RTC
RTC_DS3231 rtc;

void setup()
{
Serial.begin(9600); //Toujours nécessaire pour l'horloge RTC ?
HC05.begin(9600);
rtc.begin();
}

Allumage des LED OK, fonction réveil non OK

Je remets le code en PJ au cas ou. Une idée pour refaire fonctionner la RTC ?

Horloge_LED_5.ino (15.7 KB)

la RTC n'utilise pas le port Série.

que retourne l'appel à rtc.begin() ?

les exemples proposent de tester

if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    while(true);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    // When time needs to be set on a new device, or after a power loss, the
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

Bonsoir,

J'ai testé votre code et j'ai pu me rendre compte le module RTC fonctionnait bien. En fait le problème venait d'un espace " " qui s'était logé dans ma commande pour régler l'heure... ::slight_smile:

Merci pour votre aide, en espérant que ce soit la dernière fois que je vous en demande pour ce projet :wink:

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