Arduino vs Pm3200

Salve a tutti ragazzi, premetto che questi bene o male sono i primi lavori che faccio con arduino ma durante lo stafge che sto facendo adesso bene o male è la mia mansione.

Il mio problema è il seguente:
Devo collegare il mio arduino uno ad una scheda PM3200 in modo da poter leggere i valori ripresi dalla scheda tramite Arduino. Sto utilizzando il ModBus 485. Il problema che mi si pone è questo:

ho preso un o script come base di lavoro e mentre vedevo se compilasse o meno mi è comparso un messaggio di errore.

Script

// Include these libraries for using the RS-485 and Modbus functions
#include <ModbusMaster485.h>
#include <RS485.h>
#include <SPI.h>

// Instantiate ModbusMaster object as slave ID 1
ModbusMaster485 node(254);

// Define one addres for reading
#define address 101

// Define the number of bytes to read
#define bytesQty 2

void setup()
{

  // Power on the USB for viewing data in the serial monitor
  Serial.begin(115200);
  delay(100);
  // Initialize Modbus communication baud rate
  node.begin(19200);

  // Print start message
  Serial.println("Modbus communication over RS-485");
  delay(100);
}


void loop()
{
  // This variable will store the result of the communication
  // result = 0 : no errors
  // result = 1 : error occurred
  int result =  node.readHoldingRegisters(address, bytesQty);

  if (result != 0) {
    // If no response from the slave, print an error message
    Serial.println("Communication error");
    delay(1000);
  }
  else {

    // If all OK
    Serial.print("Read value : ");

    // Print the read data from the slave
    Serial.print(node.getResponseBuffer(0));
    delay(1000);
  }

  Serial.print("\n");
  delay(2000);

  // Clear the response buffer
  node.clearResponseBuffer();

}

Errore

Arduino:1.6.12 (Windows 8.1), Scheda:"Arduino/Genuino Uno"

C:\Users\Giuseppe\Documents\Arduino\libraries\RS485\RS485.cpp:30:24: fatal error: ../SPI/SPI.h: No such file or directory

 #include "../SPI/SPI.h"

                        ^

compilation terminated.

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

E quella libreria dove l'hai presa ?
Potrebbe essere una libreria vecchia, fatta per un vecchio IDE.

Quelle del ModBus485 le ho prese da qui essendo le uniche che sono riuscito a trovare:

"https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/"

Quella SPI.h invece l' ho presa dal gestore delle librerie

La SPI NON va presa … è una libreria di base dell’IDE sempre presente !!!

Prova a correggere il file che è nella cartella RS485, RS485.cpp … modifica le rige 29 e 30:

#include "Arduino.h"
#include "…/SPI/SPI.h"

in

#include <Arduino.h>
#include <SPI.h>

Guglielmo

Comunque … chi ha scritto quella libreria sarebbe bene che si ripassase un po’ le regole del pre-processore …

#include
This variant is used for system header files. It searches for a file named file in a standard list of system directories. You can prepend directories to this list with the ‘-I’ option.

#include "file"
This variant is used for header files of your own program. It searches for a file named file first in the directory containing the current file, then in the quote directories and then the same directories used for . You can prepend directories to the list of quote directories with the ‘-iquote’ option.

Guglielmo

Libreria di febbraio 2014. Inoltre non vorrei compilasse con IDE su Raspy, dove di solito c'e' una versione vecchia di IDE (a meno che non la aggiorni a manina)

Ok ora l' errore è cambiato ed il risultato è questo:

Arduino:1.6.12 (Windows 8.1), Scheda:"Arduino/Genuino Uno"

Lo sketch usa 3.468 byte (10%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 533 byte (26%) di memoria dinamica, lasciando altri 1.515 byte liberi per le variabili locali. Il massimo è 2.048 byte.
avrdude: ser_open(): can't open device "\\.\COM1": Impossibile trovare il file specificato.


Problema di caricamento sulla scheda. Guarda http://www.arduino.cc/en/Guide/Troubleshooting#upload per suggerimenti

Hai specificato nell'IDE la porta seriale a cui è connesso Arduino ? ? ?

Guglielmo

Ok questo non sapevo nemmeno si dovesse fare, potreste darmi istruzioni in merito?

Bhe ... intanto, essendo queste proprio le BASI, direi che potresti cominciare con leggere QUESTO e proseguire con QUESTO ...

... poi, comunque, nel IDE, Tools -> Board per selezionare la giusta board che usi, e Tools -> Port per selezionare la porta a cui è connessa.

Guglielmo

Si, il problema è che la board sono sicuro sia un' Arduino uno. Mentre non posso selezionare la porta. Ho provato a fare come dice qui nel learning ma la porta mi rimane inselezionabile.

Sono riuscito a risolvere il problema della board. Ora il dramma è che collegando il tutto al Pm3200 mi viene dato questo errore

Arduino:1.6.12 (Windows 8.1), Scheda:"Arduino/Genuino Uno"

Lo sketch usa 3.468 byte (10%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 533 byte (26%) di memoria dinamica, lasciando altri 1.515 byte liberi per le variabili locali. Il massimo è 2.048 byte.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
Errore durante il caricamento dello sketch

M4nu3l:
Si, il problema è che la board sono sicuro sia un' Arduino uno ....

Non capisco ...
... tu hai un vero Arduino/Genuino UNO su cui devi caricare il tuo programma, giusto ? O stai cercando di caricarlo su un'altra board compatibile ? :o

Guglielmo

Prima mi hanno passato una geekcreit compatibile con arduino uno, ora invece un arduino uno vero e proprio. Il problema dell' errore però rimane.

L'errore indica che l'IDE NON riesce a comunicare con il bootloader normalmente presente su Arduino ...
... non è che quell'Arduno che ti hanno dato è stato usato altre volte, magari programmandolo via ISP e NON c'è più il bootloader a bordo ?

Verifica anche il cavo USB ... abbiamo avuto svariati casi di problemi dovuti alla cattiva qualità del cavo ...

E comunque, la porta Win 8.1, te la doveva vedere subito ... ::slight_smile:

Guglielmo

L' arduino è stato usato altre volte, ora sto vedendo la situazione con il mio responsabile. Anche cambiando il cavo la situazione non cambia.

Abbiamo risolto il problema cambiando i 2 switch che sono posti sullo shield. Ora il programma pare funzionare con l' unica problemino che non mi da risultati se non per queste informazioni:

Lo sketch usa 3.468 byte (10%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 533 byte (26%) di memoria dinamica, lasciando altri 1.515 byte liberi per le variabili locali. Il massimo è 2.048 byte.

Lascia stare al momento il tuo programma e verifica che l'arduino funzioni correttamente e carichi bene i programmi ...
... IDE -> Files -> Examples -> 01.Basic -> Blink ... caricalo e vedi se il led su Arduino comincia a lampeggiare.

Se SI, vuol dire che il collegamento funziona e che il caricamento dei programmi non ha problemi ...
... da li in poi ... sono problemi nel tuo codice.

Guglielmo

Sono problemi del codice allora. Vedo di capire quale possa essere il problema.