websocket

Buongiorno,
ho scaricato da internet un sw arduino websocket, la cartella contiene file .h e .cpp, sono 8 elementi.
partendo dal fatto che ho appena cominciato col mondo arduino, vorrei capire alcune cose, forse basilari:

  1. differenze tra .h e .cpp., cosa cambia nel senso di programmazione? devo utilizzare entrambi i file?
  2. ho letto che posso importare i file .h (e presumo anche .cpp) basta trascinare il file nella schermata di arduino, ho provato a farlo e funziona. finora ho sempre fatto programmi con un unico sketch, ma se devo fare programmi con più sketch come funziona? cosa devo fare?
  3. qualcuno ha qualche suggerimento sulle websocket e di come fare programmi?

Grazie mille a tutti

Buona serata

Ciao! Ho letto qualche tuo messaggio e la tua presentazione :slight_smile:

Facciamo subito chiarezza, arduino non è un PC, non ha un sistema operativo e quello che trovi per arduino è molto diverso da qualcosa che trovi per un PC.
Arduino per la comunicazione in rete si limita a ricevere e trasmettere caratteri.

I file .h "header file" e file sorgente .cpp "sorgente C++" servono il primo per le dichiarazioni e il secondo per le definizioni. Su arduino vengono usate praticamente solo per le librerie, per cui se vuoi informarti cerca su google "come creare una libreria per arduino".

Su arduino se devi fare programmi con più file si usano più schede dell IDE e non file .h e .cpp, ma sono tutti file .ino.

Se sei interessato alla programmazione in C o C++ e vuoi approfondire, non puoi farlo sul forum, sul forum non si insegna il linguaggio, ma cercare documentazione, puoi trovare anche qualcosa in rete.

Puoi iniziare da qui
http://share.dschola.it/castigliano/elettronici/5f/Materiali/ARDUINO/Tiziana%20Marsella%20-%20Programmare%20Arduino.pdf

Fermo restando quello che dice @torn24, quello che hai scaricato molto probabilmente non è un "programma", ma è una libreria, che probabilmente contiene qualche esempio (magari se mettesi un link!).
Le librerie vanno installate (basta copiare la cartella) nella sotto cartella "libraries" di arduino, oppure si può usare l'apposita funzionalità dal menu Strumenti.

Detto questo, spero tu sappia che con solo Arduino, non puoi gestire connessioni TCP, come minino hai bisogno di una Ethernet Shield, ma anche questo può non essere sufficiente, nel senso che a seconda di quello che devi fare, potrebbe essere meglio usare degli ESPnn!

Detto questo, come @torn24, ho letto i tuoi post, dove continui a chiedere di comunicazione (di qualunque tipo) tra Java e un microcontrollore; ora, se accetti un consiglio, l'unica cosa che devi chiedere è, cosa mi consigliate per realizzare questo determinato progetto?

Mi spiego, il problema non è far comunicare un pc con un microcontrollore, ma il modo in cui i due mondi si debbano interfacciare dipende essenzialmente da quello che devi trasferire e a che distanza, e da questo dipende anche l'hardware lato micro.
Banalmente, se devi traferire alcuni bytes a breve distanza, potrebbe bastare Arduino e un cavo, oppure un modulo bluetooth, ma se cambiano il tipo di dato e la distanza, allora l'hardware cambia!

Naturalmente, alla base di partenza per la realizzazione di un progetto simile, c'è un minimo di conoscenza del linguaggio lato Arduino/ESPnn, ma anche lato pc, quindi forse prima di imbarcarti in un progetto che prevede la trasmissione dati, come dice @torn24, è il caso che studi almeno le basi della programmazione Arduino realizzando progetti più semplici.

In ogni caso, quando cerchi aiuto, inizia con lo spiegare cosa vuoi realizzare.

Federico

[OT] PS
... ma in definitiva, ti chiami Andrew o Simona? Non che faccia differenza, per il forum, che non fa distinzione di sesso, razza, religione, etc, sei solo Simiyj, ma è curioso l'uso delle due due firme ::slight_smile:

torn24:
Su arduino se devi fare programmi con più file si usano più schede dell IDE e non file .h e .cpp, ma sono tutti file .ino.

Ma anche no. Puoi avere il tuo .ino che è il programma principale ovviamente, ma è possibile aggiungere all'interno dello stesso progetto tutti i file .h e .cpp che ti servono, questi ultimi saranno ovviamente delle classi che il programma .ino (uno o più) usa per istanziare i suoi oggetti.

Detto questo, suppongo anche io che l'amico abbia scaricato una libreria e non un programma, e credo che sia QUESTA. In tal caso, deve iniziare a studiare la libreria, e provare qualcuno degli esempi inclusi.

Credo però che abbia cercato "socket" perché non sappia bene cosa sia disponibile e cosa si usa frequentemente con arduino. Personalmente è la prima volta che sento socket associato ad arduino :slight_smile:

Normalmente per fare comunicare arduino con uno smartphone si usa un modulo bluetooth e relativa libreria, il tutto poi si riduce a una comunicazione seriale "trasmissione e ricezione caratteri".

Se si vuole comunicare arduino in rete si usa una sheda ethernet e relativa libreria, e anche li si riduce il tutto a trasmissione e ricezione di caratteri.

Se cerchi le librerie trovi esempi ad esempio webclient e webserver con arduino.

torn24:
Personalmente è la prima volta che sento socket associato ad arduino :slight_smile:

Anche io, ma non è impossibile. Tra l'altro in quella libreria che ho linkato nel mio precedente post si legge:

A library for writing modern websockets applications with Arduino (ESP8266 and ESP32).
The library provides simple and easy interface for websockets work (Client and Server).

Quindi è quella la libreria che teoricamente dovrebbe aver caricato.

Detto questo, però, concordo con te: anche io sospetto che stia cercando di fare qualcosa per comunicare ma che non abbia idea di cosa fare con Arduino.

#Simiyj> se ci spieghi meglio COSA vuoi fare, magari possiamo dirti COME poterlo fare...

Io avevo trovato questa che pare proprio implementare il protocollo WebSocket (con alcune limitazioni)

a WebSocket Server and Client for Arduino based on RFC6455.
Supported Hardware
ESP8266 Arduino for ESP8266
ESP32 Arduino for ESP32
ESP31B
Particle with STM32 ARM Cortex M3
ATmega328 with Ethernet Shield (ATmega branch)
ATmega328 with enc28j60 (ATmega branch)
ATmega2560 with Ethernet Shield (ATmega branch)
ATmega2560 with enc28j60 (ATmega branch)

ma concordo con voi in merito alle reali esigenze dell'OP (#2)

Federico