Résolu - Même programme fonctionne sur UNO et pas sur NANO

Bonjour,
J’ai voulu reproduire un projet de matice de LED qui affiche du texte voir Projet
Du coup j’ai réalisé ce projet avec un arduino UNO (officiel) et tout a bien fonctionné.
Pour une question d’encombrement, j’ai voulu passé sur un Arduino NANO(officiel) et là surprise, rien ne se passe, j’essaye sur une 2ème NANO mais rien ne se passe non plus.
J’ai essayé plusieurs téléversement mais rien n’y fait.

Si vous avez des idées je suis preneur.
Merci.

faire ça dans le code c’est assez ballot…

SoftwareSerial ESP_BT(0,1); //Define PIN11 & PIN12 as RX and TX pins
...
  Serial.begin(115200);
  ESP_BT.begin(9600);

les pins 0 et 1 sont déjà le port série matériel, donc autant utiliser Serial

vous n’avez pas la console série ouverte ?

Bonjour et merci de prendre du temps pour mon problème,

Pourquoi l’affichage sur la matrice fonctionne très bien avec l’UNO c’est à dire les transferts autant par le PC que par le Bluetooth alors que rien ne s’affiche avec le NANO??

le UNO est un peu plus résistant au niveau du port série (pins 0 et 1) si deux terminaux sont connectés dessus

mettez le ESP_BT sur d’autres pins…

J’ai changé les pins du port série(7,8), je téléverse sur UNO, ça marche très bien, et je téléverse sur NANO et toujours rien…
Je viens de me rendre compte que sur le moniteur série j’ai des infos (Texte, Couleur rgb…) pour le UNO
Alors que pour le NANO je n’ai rien (pour le bon port COM et la bonne vitesse de transfert…)
Mon NANO(officiel) est reconnu dans les gestionnzire de periph comme USB SERIAL PORT, est-ce un problème???

est-ce que le nano fonctionne avec un programme tout bête utilisant le port série ?

oui, si j’envoie un blink, ça marche…

de plus si j’envoie un blink avec un simple serial.println(“on”) et off je vois bien le resultat dans la console.

vous pouvez poster le nouveau code et décrire les connexions telles qu’elles sont

À part le circuit qui fait l’interface entre le RX, le TX et l’USB, la pièce essentielle, c’est-à-dire le microcontrôleur, est le même → atmega328p.
La réaction des deux cartes au même programme devrait être identique sauf s’il y avait d’autres modifications que nous ne connaissons pas.

  • USB sur UNO soit : atmega16U2 ( fabricant arduino) soit ch340 (clones), exceptionnellement un CI prolific
  • USB sur nano soit : FT232 (rare et fab arduino), ch340 (très courant), exceptionnellement un CI prolific

Attention, il existe des vendeurs “truands” en Asie qui vendent sous l’appellation “nano” des cartes identiques, mais avec un microcontrôleur atmega168 qui est légèrement différent et surtout qui possède moins de mémoire. Elles sont (très) légerement moins chères.

Salut,
J’essaye de résumé avec les éléments que j’ai pu rassembler depuis mon 1er post.
Matériels utilisés:
Arduino nano v3
Arduino UNO REV3
Module bluetooth DSD Tech HC-05
Schema de branchement
Donc lorsque je fais ce branchement sur le UNO, tout se passe bien et lorsque que je le fais sur le NANO rien ne se passe.
Donc j’ai fais plusieurs essais avec J-M-L Jackson(que je remercie) et rien n’y a changé. pour mon dernier essai j’ai changé la ligne:
“SoftwareSerial ESP_BT(0,1); //Define PIN11 & PIN12 as RX and TX pins”
en
“SoftwareSerial ESP_BT(7,8); //Define PIN11 & PIN12 as RX and TX pins”
et après recâblage, tout fonctionne sur le UNO mais pas sur le NANO.
Petite précision, j’ai 2 UNO(genuine) et 2 NANO(genuine) donc j’ai aussi fait l’essai sur les autres board et même résultat, UNO → Ok, NANO → NOK.
Autre précision, j’ai aussi fais l’essai de ne pas alimenter le UNO par l’usb et ça marche(pas de conflit Tx-Rx, et en reproduisant cette opération sur le NANO, toujours rien.
D’autres solutions??

commencez par faire simple pour voir si la communication BT fonctionne bien

débranchez TOUT du Nano

connectez les pins Arduino D2 <–> BT Tx et Arduino D3 <–> BT Rx
Alimentez le HC-05 à par sa pin Vcc connectée au 5V de l’Arduino et joignez les GND
branchez l’Arduino avec votre câble USB à votre PC

lancez l’IDE, choisissez le bon type de carte et le port de communication
compilez et chargez ce code

#include <SoftwareSerial.h>
const byte rxPin = 2; // la pin de réception des données Arduino  D2 <--> BT Tx
const byte txPin = 3; // la pin d'émission des données Arduino    D3 <--> BT Rx
SoftwareSerial BTSerial(rxPin, txPin); 

void setup() {
  Serial.begin(115200);
  BTSerial.begin(9600);
}

void loop() {
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
}

Ouvrez le moniteur série à 115200 bauds et jouez avec l’application qui doit être appairée avec le module BT.
testez la même chose sur le UNO

voyez vous des messages dans le moniteur ?

hello
effectivement, je suis tombé sur ce cas
une nano dans laquelle je ne pouvais pas téléverser. pour finalement regler le choix arduino sur 168 et non sur 328P ou 328P ancien bootloader

arnaque ou pas, en tous cas, c’est prévu par arduino

Quand c’est clairement indiqué, c’est un choix honnête.
Quand c’est écrit en caractères minuscules et là où on ne les attend pas c’est une arnaque.

Que ce soit prévu dans l’IDE n’a rien à voir avec le respect du client.

Re tout le monde,
Je viens de tester avec la manip de J-M-L et tout fonctionne, que ce soit sur le UNO ou le NANO les même valeurs s’affiche dans la console…
Donc on peut en deduire que la liaison BT fonctionne bien sur les 2 et que le téléversement aussi.
Du coup j’ai réessayé mon 1er code sur les 2 mais même résultat, UNO → OK, NANO -->NOK

Je vais essayer de faire d’autre test maintenant que je sais tout ça. n’hésitez pas si vous avez d’autres pistes.

Bonne nouvelle, c’est que le montage de base fonctionne

donc soit il y a un soucis dans le logiciel fourni (je n’ai pas regardé leur code), soit il y a un souci matériel lié au ruban

pouvez vous confirmer que sur le Nano vous connectez bien le GND de la carte avec le GND du HC05 ET le GND du ruban ? pouvez aussi confirmer que le ruban est alimenté séparément et pas à partir de la pin 5V de la carte ?

Alors je confirme que tous les GND sont connectés ensemble, je confirme aussi que l’alimentation du ruban est à part mais que les GND sont connectés ensemble…
Du coup j’ai fais un autre essai avec une nano elegoo et même résultat je précise que sur l’elegoo j’ai essayé le prog de base bluetooth cité plus haut et ça marche.
Du coup j’ai mis un voltmètre entre la sortie de cde du ruban, sortie 7 et le GND: pour le UNO j’ai 0.67v et pour le NANO j’ai 0.17v est-ce possible que ce soit une histoire de voltage de sortie???
Même si j’imagine que c’est une fréquence en sortie pour l’adressage du ruban.

Il vous faudrait un oscilloscope pour tracer ce qu’il se passe sur la pin data. La tension que vous. Oyez ne veut pas dire grand chose c’est une sorte de tension moyenne d’une broche qui oscille vite.
Ça ne vient sans doute pas de là

Bonjour,
J’ai fait de nouveaux tests…
Je connecte le UNO sur une alim, et le ruban à LED sur une autre avec les GND connectés ensemble. Je ne connecte pas le module HC-05(Bluetooth) et je téléverse le prog cité plus haut et tout fonctionne à merveille le text par défaut défile bien sur le ruban.
Je fais la même chose, même branchement même téléversement avec le NANO et là, plus rien sur le ruban!!!
Donc on ne peut pas dire que cela vient du module HC-05(Bluetooth)…
De plus pour aller plus loin j’ai essayé plusieurs librairies sur le NANO, dont Adafruit neoPixel titletest qui fonctionnent très bien!!! donc pas un problème de puissance en sortie du NANO ni de téléversement.
Je ne vois vraiment pas ce qui cloche!!! J’ai remarqué que les pins TX et RX sont inversés entre un UNO et un NANO est-ce que cela pourrait provoquer un problème dans le programme???

Merci de m’aider à comprendre ce problème :disappointed_relieved:

Du coup j’ai trouvé :smiley: !!! A grand coup de Serial.println() comme moyen de debuggage…
Je pense que le problème venait du fait que l’on essaye de lire des valeurs dans l’EEPROM à l’initialisation du programme alors que l’EEPROM était vierge vu que ma NANO était neuve… alors que j’ai déjà fait plein de projets avec ma UNO(du coup des valeurs dans l’EEPROM).
Du coup j’ai mis en commentaire toute la partie de lecture de L’EEPROM pour le 1er téléversement ce qui à permis d’afficher le texte par defaut, puis je me suis connecté en bluetooth et j’ai envoyé un texte, par l’appli sur le mobile, pour qu’il soit écrit dans l’EEPROM. Ensuite j’ai “dé-commenté” la partie lecture de l’EEPROM dans le programme et retéléversé le programme de base et là; la magie à opérée!!! Ca marche!!!

Voici la partie que j’ai mise en commentaire…

Je pense qu’il y a un problème dans le while si quelqu’un a une idée pour m’éviter de faire cette manip pour chaque Arduino neuf cela serait vraiment super cool.

  char data[100]; //Max 100 Bytes
   int len=0;
    char k;
   String Text= "";
  k=EEPROM.read(50);
  Serial.println(k);
  while(k != '\0' && len<500)   //Read until null character
  {    
    k=EEPROM.read(50+len);
    data[len]=k;
    Text+=k;
    len++;
  }

  data[len]='\0';

Si cela peut aider quelqu’un c’est avec grand plaisir que je réexpliquerai la solution à mon problème.