Aller au contenu


7hibault

Inscrit(e) (le) 26 août 2019
Déconnecté Dernière activité juin 13 2022 06:14
-----

Sujets que j'ai initiés

Instabilité de carte ITEAD PN532 avec le clone Arduino Uno

30 mai 2022 - 12:13

Bonjour à tous,

 

Je suis sur un projet avec

- un clone Arduino Uno

- des lecteurs NFC ITEAD PN532

 

J'ai réussi à faire fonctionner ces cartes ensemble, en utilisation la librairie Adafruit PN532.

 

Le problème est que la détection des cartes NFC est instable, et dépend de l'alimentation. J'alimente l'arduino par USB. Lorsque celui-ci est connecté à une source sur secteur (PC sur secteur, batterie externe sur secteur), ça fonctionne 2/3 du temps. Lorsque celui-ci est connecté à un source hors secteur (batterie externe), l'arduino s'allume et exécute son code, mais la détection des cartes NFC ne fonctionne pas.

 

C'est-à-dire, l'exécution du code suivant affiche "Didn't find PN53x board"

nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (!versiondata) {
  Serial.print("Didn't find PN53x board");
  set_error_state();
}

J'ai également ajouté des LEDs qui s'allument en rouge lorsque cette partie du code est atteinte. C'est ce qu'il se passe lorsque le montage est alimenté par batterie externe.

 

Je suis toujours débutant en électronique et les aspects alimentation me dépassent un peu. Vous voyez quelque chose qui pourrait causer ce comportement ? On m'a dit que ça pourrait être le niveau d'alimentation des cartes NFC qui est mauvais, mais j'aimerais bien comprendre pourquoi si c'est ça, le comportement changerait en fonction de l'alimentation USB.

 

 

Le schéma ressemble à ça

 

Fichier joint  multi_nfc_join.png   303,44 Ko   31 téléchargement(s)

 

Dans mon montage final, j'ai 4 cartes.

 

Un code minimal de setup qui reproduit cette erreur serait

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
#include <FastLED.h>

FASTLED_USING_NAMESPACE

#define DATA_PIN    9
#define LED_TYPE    WS2811
#define COLOR_ORDER RGB
#define NUM_LEDS    4
CRGB leds[NUM_LEDS];

#define BRIGHTNESS          96
#define FRAMES_PER_SECOND  120

#define N_BOARDS (4)

Adafruit_PN532 nfc_1(2, 5, 3, 4);
Adafruit_PN532 nfc_2(2, 5, 3, 6);
Adafruit_PN532 nfc_3(2, 5, 3, 7);
Adafruit_PN532 nfc_4(2, 5, 3, 8);
Adafruit_PN532 boards[N_BOARDS] = {nfc_1, nfc_2, nfc_3, nfc_4};

void setup_nfc(Adafruit_PN532 nfc, int i) {
  Serial.println((String)"Setting up board #"+i);
  delay(5000);
  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.print("Didn't find PN53x board");
    set_error_state();
  }
  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  
  // configure board to read RFID tags
  nfc.SAMConfig();
}

void set_error_state() {
  for (int i = 0; i < NUM_LEDS; i++) {
      leds[i] = CRGB::Red; 
  }
  FastLED.show(); 
  delay(1000);
  while(1); // halt
}

void setup(void) {
  Serial.begin(115200);
  while (!Serial) delay(100);

  // Setup LEDs
  FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
  FastLED.clear();
  FastLED.show();

  // Setup NFC boards
  for (int i = 0; i < N_BOARDS; i++) {
    setup_nfc(boards[i], i);
  }

  delay(3000); // 3 second delay for recovery  
}

void loop(void) {
  // do stuff...
}

PS: si vous êtes sur le forum Arduino, vous verrez peut-être également mon message en anglais. Entre mes imprécisions liées au fait que je suis débutant et les pertes en traduction, je commence à avoir une impression d'illégitimité croissante à y demander de l'aide...


Pourquoi mes LEDs flashent au lieu de s'allumer en continu?

25 janvier 2022 - 11:03

Bonjour tout le monde!

 

Je travaille sur un projet de wearable avec un arduino et des LEDs adressables que je vais contrôler avec des potentiomètres. J'ai fait fonctionner ça sur un breadboard et je me suis lancé dans la soudure pour essayer de rendre le truc utilisable hors d'un atelier.

 

C'est ma première fois donc j'ai rencontré pas mal de problématiques. La première étant : ça ne marche pas :king:

 

Les LEDs s'allument en flash puis s'éteignent.

 

Fichier joint  arduinoflash.gif   7,37 Mo   34 téléchargement(s)

 

J'ai aucune idée de comment débuguer ça. Ca fonctionnait sur breadboard, donc je sais pas si j'ai mal fait mes soudures, si j'ai inversé des composants, mal fait mon câblage, changé le code par inadvertance... J'ai essayé de simplifier le code de l'arduino au minimum avec 2 librairies différentes, j'ai le même résultat donc je pense pas que ce soit ça (1 et 2) mais sait-on jamais. Le câblage est censé être celui ci.

 

Fichier joint  schematic.jpg   98,48 Ko   35 téléchargement(s)

 

J'ai soudé ça comme j'ai pu les composants sur la board.

 

Fichier joint  IMG_20220123_000104.jpg   133,03 Ko   38 téléchargement(s)Fichier joint  IMG_20220123_000057.jpg   111,32 Ko   37 téléchargement(s)

 

Mon autre problématique, plus mineure mais que j'aimerais bien améliorer tout de même, c'est que je galère à faire mes soudures. J'ai vu des tutos qui disent qu'il faut chauffer les connectiques qu'on cherche à souder et y appliquer l'étain. Sauf que quand je fais ça, ça fonctionne pas. Donc à la place j'ai appliqué l'étain sur le fer, ça coule par capilarité sur le point à souder, je laisse un peu chauffer pour que ça s'étale et ça a l'air de faire le taff. Mais ça rend tout le process un peu compliqué et j'ai peur que ça fasse de mauvaises soudures. En gros l'étain ne fond pas sur la pointe. Egalement, la pointe a l'air de se desserrer, c'est normal? Bref je fais un peu n'importe quoi. PS: j'ai acheté le kit de robot maker.

 

Si vous avez des idées je serais preneur parce que j'ai aucune idée de comment avancer sur le sujet. Merci beaucoup!


Traqueur solaire sans batterie

26 août 2019 - 09:22

Bonjour à tous !

 

Je suis ingénieur informatique débutant en robotique avec des connaissances limitées en mécanique et électronique.

 

Je cherche à faire un traqueur solaire en utilisant le minimum de composant, et notamment sans batterie. L'objectif est de faire tourner un plateau de manière à orienter ce qui est fixé dessus vers le soleil.

 

C'est un projet qui me semble assez classique, mais je me suis ajouté quelques contraintes:

  • Minimiser le coût et le nombre de composants
  • Autonomie énergétique
  • J'ai déjà une table tournante que je veux réutiliser
  • Ce qui sera fixé sur le plateau peut être relativement lourd (par exemple un séchoir solaire), mais peut être plus ou moins aligné autour de l'axe de rotation
  • Le système n'a pas besoin d'être tout le temps actif, il peut se réveiller de temps en temps pour faire son travail

J'envisage quelque chose du type:

  • 4 photorécepteurs pour suivre la luminosité
  • Une contrôleur arduino, j'ai repéré l'AirBoard qui m'a semblée sympa pour son autonomie
  • Un pont en H pour contrôler un moteur DC
  • Un moteur DC pour faire tourner la table
  • Une cellule PV pour alimenter le moteur

 

J'ai joint un pseudo-schéma électronique (désolé, il n'est sûrement pas conventionnel, mais j'espère qu'il reste compréhensible):

 

Fichier joint  IMG_20190826_095252.jpg   68,58 Ko   70 téléchargement(s)

 

Les problématiques que je rencontre avant d'acheter mes composants pour commencer à bidouiller:

 

1. Alimentation du moteur

 

Sachant que si j'ai une AirBoard, elle n'aura pas besoin d'alimentation supplémentaire, et que le moteur n'a pas besoin de tourner tout le temps (disons que s'il arrive à tourner 1 fois / demi-heure ça passe) ,

  • Est-ce que ça peut suffire d'alimenter le moteur DC uniquement par le panneau solaire?
  • Est-ce que ça risque d'abîmer les composants?
  • Si ça ne suffit pas, la solution est d'ajouter une batterie derrière le panneau solaire pour lisser le courant?
  • Est-ce que je passe à côté de quelque chose?

 

2. Dimensionnement du moteur

 

Sachant que je dispose déjà d'une table tournante,

  • En théorie, si le centre de gravité est au dessus de l'axe de rotation, la moindre force appliqué au plateau devrait permettre de le faire tourner, n'est-ce pas?
  • En pratique, cela suppose qu'il n'y a ni frottements, ni erreur de fabrication / placement du poids (ce qui, me connaissant, est irréaliste :ignat_02:) ; comment évaluer cela de manière pragmatique et réaliste?

 

Merci de m'avoir lu et pour les discussions à venir !

 


Présentation

26 août 2019 - 08:50

Salut !

 

Ça faisait longtemps que je n'avais pas posté sur un forum, ça me fait plaisir de m'y remettre !

 

Qui suis-je?

 

J'ai 28 ans, je suis ingénieur en informatique et j'habite la région grenobloise.

 

Je maîtrise: la programmation

Je ne maîtrise pas: la mécanique, l'électronique (j'ai des vieux souvenirs de lycée/prépa)

 

Pourquoi suis-je ici?

 

Ca fait un moment que j'ai des idées de projets dans la tête qui sont limités par mes compétences en électronique. J'espère qu'échanger avec une communauté passionnée me permettra d'apprendre plein de choses et réaliser mes projets

 

A bientôt sur le forum :)