Problème pour transférer d'une Arduino uno sur une Nano Evry

Bonjour
alors j'ai un programme qui tourne sur une Arduino uno , mais je voudrais le mettre sur une Nano Evry pour gain de place et aussi pour la prise USB plus petite.
Mais impossible , j'ai une erreur a chaque vois et ça tourne en rond .

voici l'erreur qui ce répète

avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: jtagmkII_getsync(): sign-on command: status -1

je vous met au aussi le code , c'est pour station meteo pour un observatoire.

je vous la première partie ,car il a des onglets et je sais pas comment le mettre un dossier complet.

/*  Firmware for a weather sensor device streaming the data as JSON documents.

    Copyright (C) 2019 Wolfgang Reissenberger <sterne-jaeger@t-online.de>

    This application is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    Based upon ideas from indiduinoMETEO (http://indiduino.wordpress.com).
*/


#include <ArduinoJson.h>

/* ********************************************************************

  Edit config.h to configure the attached sensors

*********************************************************************** */
#include "config.h"
#include "version.h"

// sensor measuring duration
struct {
  unsigned long bme_read;
  unsigned long dht_read;
  unsigned long mlx90614_read;
  unsigned long tsl237_read;
  unsigned long tsl2591_read;
  unsigned long davis_read;
} sensor_read;


/**
   Update all sensor data
*/
void updateSensorData() {

  // reset all timers
  sensor_read = { 0, 0, 0, 0, 0, 0};
  unsigned long start = 0;

#ifdef USE_DAVIS_SENSOR
  start = millis();
  readAnemometer();
  sensor_read.davis_read = millis() - start;
#endif //USE_DAVIS_SENSOR

#ifdef USE_BME_SENSOR
  start = millis();
  updateBME();
  sensor_read.bme_read = millis() - start;
#endif //USE_BME_SENSOR

#ifdef USE_DHT_SENSOR
  start = millis();
  updateDHT();
  sensor_read.dht_read = millis() - start;
#endif //USE_DHT_SENSOR

#ifdef USE_MLX_SENSOR
  start = millis();
  updateMLX();
  sensor_read.mlx90614_read = millis() - start;
#endif //USE_MLX_SENSOR

#ifdef USE_TSL237_SENSOR
  start = millis();
  updateTSL237();
  sensor_read.tsl237_read = millis() - start;
#endif //USE_TSL237_SENSOR

#ifdef USE_TSL2591_SENSOR
  start = millis();
  updateTSL2591();
  sensor_read.tsl2591_read = millis() - start;
#endif //USE_TSL2591_SENSOR
}

/**
   Send current sensor data as JSON document to Serial
*/
String getSensorData(bool pretty) {
  const int docSize = JSON_OBJECT_SIZE(6) + // max 6 sensors
                      JSON_OBJECT_SIZE(1) + // token data
                      JSON_OBJECT_SIZE(4) + // BME280 sensor
                      JSON_OBJECT_SIZE(3) + // DHT sensors
                      JSON_OBJECT_SIZE(3) + // MLX90614 sensor
                      JSON_OBJECT_SIZE(3) + // TSL237 sensor
                      JSON_OBJECT_SIZE(7) + // TSL2591 sensor
                      JSON_OBJECT_SIZE(6);  // Davis Anemometer
  StaticJsonDocument < docSize > weatherDoc;

  unsigned long start = 0;

#ifdef USE_DAVIS_SENSOR
  serializeAnemometer(weatherDoc);
#endif //USE_DAVIS_SENSOR

#ifdef USE_BME_SENSOR
  serializeBME(weatherDoc);
#endif //USE_BME_SENSOR

#ifdef USE_DHT_SENSOR
  serializeDHT(weatherDoc);
#endif //USE_DHT_SENSOR

#ifdef USE_MLX_SENSOR
  serializeMLX(weatherDoc);
#endif //USE_MLX_SENSOR

#ifdef USE_TSL237_SENSOR
  serializeTSL237(weatherDoc);
#endif //USE_TSL237_SENSOR

#ifdef USE_TSL2591_SENSOR
  serializeTSL2591(weatherDoc);
#endif //USE_TSL2591_SENSOR

  String result = "";
  if (pretty)
    serializeJsonPretty(weatherDoc, result);
  else
    serializeJson(weatherDoc, result);

  return result;
}


String getCurrentVersion() {
  StaticJsonDocument <JSON_OBJECT_SIZE(1)> doc;
  doc["version"] = METEORADIO_VERSION;

  String result = "";
  serializeJson(doc, result);

  return result;
}

String getReadDurations() {
  StaticJsonDocument <JSON_OBJECT_SIZE(6)> doc;
#ifdef USE_BME_SENSOR
  if (bmeData.status)        doc["BME"]              = sensor_read.bme_read;
#endif //USE_BME_SENSOR
#ifdef USE_DHT_SENSOR
  if (dhtData.status)        doc["DHT"]              = sensor_read.dht_read;
#endif //USE_DHT_SENSOR
#ifdef USE_MLX_SENSOR
  if (mlxData.status)        doc["MLX90614"]         = sensor_read.mlx90614_read;
#endif //USE_MLX_SENSOR
#ifdef USE_TSL237_SENSOR
  if (tsl237Data.status)     doc["TSL237"]           = sensor_read.tsl237_read;
#endif //USE_TSL237_SENSOR
#ifdef USE_TSL2591_SENSOR
  if (tsl2591Data.status)    doc["TSL2591"]          = sensor_read.tsl2591_read;
#endif //USE_TSL2591_SENSOR
#ifdef USE_DAVIS_SENSOR
  if (anemometerData.status) doc["Davis Anemometer"] = sensor_read.davis_read;
#endif //USE_DAVIS_SENSOR

  String result = "";
  serializeJson(doc, result);

  return result;
}


// translate the sensor configurations to a JSON document
String getCurrentConfig() {
  const int docSize = JSON_OBJECT_SIZE(4) + // max 4 configurations
                      JSON_OBJECT_SIZE(2) + // DHT sensors
                      JSON_OBJECT_SIZE(3) + // Davis Anemometer
                      JSON_OBJECT_SIZE(3) + // WiFi parameters
                      JSON_OBJECT_SIZE(1) + // Arduino
                      JSON_OBJECT_SIZE(2);  // buffer
  StaticJsonDocument <docSize> doc;

#ifdef USE_WIFI
  // currently, we have memory info only available for ESP8266
  JsonObject arduinodata = doc.createNestedObject("Arduino");
  arduinodata["free memory"] = freeMemory();
#endif

#ifdef USE_DHT_SENSOR
  JsonObject dhtdata = doc.createNestedObject("DHT");
  dhtdata["pin"]  = DHTPIN;
  dhtdata["type"] = DHTTYPE;
#endif

#ifdef USE_DAVIS_SENSOR
  JsonObject davisdata               = doc.createNestedObject("Davis Anemometer");
  davisdata["wind speed pin"]        = ANEMOMETER_WINDSPEEDPIN;
  davisdata["wind direction pin"]    = ANEMOMETER_WINDDIRECTIONPIN;
  davisdata["wind direction offset"] = ANEMOMETER_WINDOFFSET;
#endif

#ifdef USE_WIFI
  JsonObject wifidata = doc.createNestedObject("WiFi");
  wifidata["SSID"] = esp8266Data.ssid;
  wifidata["connected"] = WiFi.status() == WL_CONNECTED;
  if (WiFi.status() == WL_CONNECTED)
    wifidata["IP"]        = WiFi.localIP().toString();
  else
    wifidata["IP"]        = "";
#endif

  String result = "";
  serializeJson(doc, result);

  if (doc.isNull())
    return "{}";
  else {
    return result;
  }
}

unsigned long lastSensorRead;

void setup() {
  Serial.begin(BAUD_RATE);
  // wait for serial port to connect. Needed for native USB
  while (!Serial) continue;

  // sensors never read
  lastSensorRead = 0;

#ifdef USE_DAVIS_SENSOR
  initAnemometer();
#endif //USE_DAVIS_SENSOR

#ifdef USE_TSL237_SENSOR
  initTSL237();
#endif //USE_TSL237_SENSOR

#ifdef USE_WIFI
  initWiFi();

  if (WiFi.status() == WL_CONNECTED) {
    server.on("/", []() {
      server.send(200, "application/json; charset=utf-8", getSensorData(false));
    });

    server.on("/w", []() {
      server.send(200, "application/json; charset=utf-8", getSensorData(false));
    });

    server.on("/p", []() {
      server.send(200, "application/json; charset=utf-8", getSensorData(true));
    });

    server.on("/c", []() {
      server.send(200, "application/json; charset=utf-8", getCurrentConfig());
    });

    server.on("/v", []() {
      server.send(200, "application/json; charset=utf-8", getCurrentVersion());
    });

    server.on("/r", []() {
      reset();
      server.send(200, "application/json; charset=utf-8", getCurrentVersion());
    });

    server.on("/t", []() {
      server.send(200, "application/json; charset=utf-8", getReadDurations());
    });

    server.onNotFound([]() {
      server.send(404, "text/plain", "Ressource not found: " + server.uri());
    });

    server.begin();

  }
#endif

  // initial readout all sensors
  updateSensorData();

}

String input = "";

void parseInput() {
  // ignore empty input
  if (input.length() == 0)
    return;

  switch (input.charAt(0)) {
    case 'v':
      Serial.println(getCurrentVersion());
      break;
    case 'w':
      Serial.println(getSensorData(false));

      break;
    case 'c':
      Serial.println(getCurrentConfig());
      break;
    case 'p':
      Serial.println(getSensorData(true));

      break;
    case 't':
      Serial.println(getReadDurations());
      break;
#ifdef USE_WIFI
    case 's':
      if (input.length() > 2 && input.charAt(1) == '?')
        parseCredentials(input.substring(2));
      disconnectWiFi();
      initWiFi();
      break;
    case 'd':
      disconnectWiFi();
      break;
    case 'r':
      reset();
      break;
#endif
  }

}

/**
   Command loop handling incoming requests and returns a JSON document.

   'v' - send current version
   'w' - send current weather sensor values
   'p' - send current weather sensor values (pretty printed)
   't' - send sensor read durations
   'c' - send sensor configuration settings
*/
void loop() {

  byte ch;
  String valStr;
  int val;

#ifdef USE_WIFI
  wifiServerLoop();
#endif

#ifdef USE_TSL237_SENSOR
  updateTSL237();
#endif //USE_TSL237_SENSOR

#ifdef USE_DAVIS_SENSOR
  updateAnemometer();
#endif //USE_DAVIS_SENSOR

  if (Serial.available() > 0) {
    ch = Serial.read();

    if (ch == '\r' || ch == '\n') { // Command received and ready.
      parseInput();
      input = "";
    }
    else
      input += (char)ch;
  }

  // regularly update sensor data
  unsigned long now = millis();
  if (abs(now - lastSensorRead) > MAX_CACHE_AGE) {
    updateSensorData();
    lastSensorRead = now;
  }

  delay(50);
}

Du coup voila , ci qqun a une idée .......
Merci et bientot
Chrsitophe

Postez l’intégralité du message que vous voyez lors de la compilation

Assurez vous bien sûr d’avoir choisi la bonne carte

Alors pour la carte c'est la bonne config, car je peux mettre un autre code dessus.

Je ne peux pas poster le message complet, car ça tourne en rond et quand je stop, j'ai plus que ce massage.

Est-ce que tu veux le fichier complet , je peux rajouter tous les onglets.

Redis moi, par contre je peux le faire que en fin de journée.
A+

La compilation ne tourne pas en rond. C’est ce message qu’il serait intéressant de voir, dans son intégralité

Pour poster le code si c’est trop de fichiers vous attachez un zip à votre post

weatherradio.zip (12.6 KB)
voila le fichier complet

Et le message :wink:

In file included from C:\Users\garag\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_I2CDevice.h:5:0,
                 from C:\Users\garag\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_I2CDevice.cpp:1:
C:\Users\garag\Documents\ArduinoData\packages\arduino\hardware\megaavr\1.8.7\libraries\Wire\src/Wire.h: In member function 'bool Adafruit_I2CDevice::_read(uint8_t*, size_t, bool)':
C:\Users\garag\Documents\ArduinoData\packages\arduino\hardware\megaavr\1.8.7\libraries\Wire\src/Wire.h:64:12: note: candidate 1: size_t TwoWire::requestFrom(int, int, int)
     size_t requestFrom(int, int, int);
            ^~~~~~~~~~~
C:\Users\garag\Documents\ArduinoData\packages\arduino\hardware\megaavr\1.8.7\libraries\Wire\src/Wire.h:62:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t, bool)
     size_t requestFrom(uint8_t, size_t, bool);
            ^~~~~~~~~~~
Le croquis utilise 23562 octets (47%) de l'espace de stockage de programmes. Le maximum est de 49152 octets.
Les variables globales utilisent 648 octets (10%) de mémoire dynamique, ce qui laisse 5496 octets pour les variables locales. Le maximum est de 6144 octets.
avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description

il semble que la bibliothèque d'Adafruit crée une confusion sur la fonction requestFrom() mais ça devrait aller. (vous avez aussi plusieurs variables non utilisées dans les warning)

la ligne

avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description

est informative mais normalement le chargement doit se passer ensuite non ?

je ne vois pas dans votre post l'erreur que vous signaliez au début

avrdude: jtagmkII_getsync(): sign-on command: status -1

ouvrez et chargez le code de blink(). est-ce que vous avez le même message ? est-ce que la LED clignote ?

sinon changez de port USB sur votre ordinateur (c'est quoi comme OS ?) et changez le câble USB histoire de voir si le souci vient de là

hello
alors visiblement j'arrive pas a installer aucun programme dessus ?
pourtant je peux lire la version de la carte!
j'ai toujours ce message a la fin

avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description

Avez vous un autre arduino pour teste le câble et le port usb ?

oui
je peux récupérer les info de la carte

j'ai changer de carte et meme message
avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description

Un autre type d’arduino ?

Est-ce que tu "vois" l'arduino dans le gestionnaire de périphériques, au niveau des ports COM. Si oui, sous quel intitulé ?

Il semblerait que ce soit un problème de carte ou bootloader défectueux(se) : voir ici ou ici

Bon je comprend plus rien , j'ai pris 2 carte a mon boulot, une uno et l'evry pour faire des essais .
Résultat j'ai installer IDE et j'ai voulut mettre un petit programme dessus pour voir si j'arrivais a faire qqch sur la carte , résultat j'ai une erreur identique sur les deux cartes (que j'ai pas chez moi) il me dis ceci :
avrdude: ser_open(): can't open device "\.\COM4": Acc�s refus�.

je précise que je vois la carte sur le bon port et le nom de la carte figure.

Bon je vais essayer quand je rentre chez moi.
Je vous redis
A+

Bon alors voila,
Depuis mon PC , pas de soucis pour installer le code sur une Uno
mais voici le message quand je met sur la Evry

home/nafa/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp: In member function 'bool Adafruit_I2CDevice::_read(uint8_t*, size_t, bool)':
/home/nafa/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp:191:79: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
   size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len, (uint8_t)stop);
                                                                               ^
In file included from /home/nafa/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.h:5:0,
                 from /home/nafa/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp:1:
/home/nafa/.arduino15/packages/arduino/hardware/megaavr/1.8.7/libraries/Wire/src/Wire.h:64:12: note: candidate 1: size_t TwoWire::requestFrom(int, int, int)
     size_t requestFrom(int, int, int);
            ^~~~~~~~~~~
/home/nafa/.arduino15/packages/arduino/hardware/megaavr/1.8.7/libraries/Wire/src/Wire.h:62:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t, bool)
     size_t requestFrom(uint8_t, size_t, bool);
            ^~~~~~~~~~~
Le croquis utilise 23530 octets (47%) de l'espace de stockage de programmes. Le maximum est de 49152 octets.
Les variables globales utilisent 645 octets (10%) de mémoire dynamique, ce qui laisse 5499 octets pour les variables locales. Le maximum est de 6144 octets.
avrdude: jtagmkII_set_devdescr(): timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description
avrdude: jtagmkII_paged_write(): timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_paged_write(): timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_paged_write(): timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_paged_write(): timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_paged_write(): timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_paged_write(): fatal timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  
avrdude: jtagmkII_program_disable(): timeout/error communicating with programmer (status -1)
 ***failed;  

A bientot

Ca, ce n'est pas une erreur, ça peut être ignoré

As-tu bien suivi toutes ces étapes d'installation ?

Autres explications ici :

Vérifie que tu as bien installé comme indiqué dans ces liens.

bon alors j'ai bien essayer ,mais cela fonctionne toujours pas.
Est-ce que vous avez une de ses carte et vous etes arrivé a faire qqch avec ?
je comprend pas pourquoi c'est ci compliquer , si seulement il existait une Nano sans slots , cela aurai été plus simple pour moi.

Non, je ne connais pas cette carte non plus

j'arrive pas a comprendre pourquoi c'est si différent que la nano normal !!

Ici une discussion qui compare les deux

Et un site avec des infos intéressantes pour le configurer :

notamment ceci :

alors j'y suis arrivé , je me suis borné sur le message rouge qui marque

avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description

mais quand j'ai vu que sur la démo aussi je me suis dis que cela devais quand meme fonctionné , mais que j'interrogeais une commande rien se passai et je pensais que cela venais du message .
Mais NON, j'ai mis la mauvaise valeurs de bauds .
Mais quand meme du coup pourquoi se message si cela fonctionne .

Merci pour votre temps !!!!