Nell’articolo precedente dedicato alla Wifi Shield arduino hai visto come comtare il connettore SPI per la comunicazione tra la shield ed Arduino.
Passa ora a scaricare il software, installare le librerie sul tuo IDE e prova i primi esempi forniti.
Download delle librerie per la Wifi shield arduino
Il progetto della libreria è open-source, come la maggior parte dei progetti dedicati ad Arduino, e lo puoi scaricare qui.
nella pagina di download trovi 3 link, vedi figura sopra, il primo in basso è il progetto originale “Asynclabs WiFiShield library (IDE 0023)” scritto per l’IDE 0022 di Arduino, salendo trovi degli esempi da utilizzare con questa libreria ed infine il primo link contiene la libreria per la wifi shield arduino modificata sia per l’IDE 1.0 sia per la schield TiDiGino.
Scarica il software compatibile con la versione dell’IDE 1.0, almeno di non usare ancora un IDE 0022.
Decomprimi il file .zip ed ottieni una directory WIFI con al suo interno tutte le librerie utili e gli esempi da aggiungere al tuo IDE:
copia questa cartella nell’IDE, per farlo individua la dir in cui Arduino ha installato le librerie, sul mio Mac è:
/Users/mauroalfieri/Documents/Arduino/libraries/
in cui ho copiato tutta la dir WIFI così come decompressa:
Avvia l’IDE 1.0 di Arduino e verifica che le librerie per la wifi shield arduino siano presenti:
Primo sketch di esempio della wifi shield arduino
Il primo esempio che ho provato della libreria wifi shield arduino è stato: SimpleServer la curiosità di potermi collegare ad Arduino via Wifi e vedere che fosse lui a rispondere, le librerie contengono anche altri sketch che magari vedremo in occasione di altri progetti.
/* * A simple sketch that uses WiServer to serve a web page */ #include <WiServer.h> #define WIRELESS_MODE_INFRA 1 #define WIRELESS_MODE_ADHOC 2 // Wireless configuration parameters --------------------------- unsigned char local_ip[] = {192,168,1,2}; // IP address of WiShield unsigned char gateway_ip[] = {192,168,1,1}; // router or gateway IP address unsigned char subnet_mask[] = {255,255,255,0}; // subnet mask for the local network const prog_char ssid[] PROGMEM = {"ASYNCLABS"}; // max 32 bytes unsigned char security_type = 0; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2 // WPA/WPA2 passphrase const prog_char security_passphrase[] PROGMEM = {"12345678"}; // max 64 characters // WEP 128-bit keys // sample HEX keys prog_uchar wep_keys[] PROGMEM = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 2 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Key 3 }; // setup the wireless mode // infrastructure - connect to AP // adhoc - connect to another WiFi device unsigned char wireless_mode = WIRELESS_MODE_INFRA; unsigned char ssid_len; unsigned char security_passphrase_len; // End of wireless configuration parameters ------------------- // This is our page serving function that generates web pages boolean sendMyPage(char* URL) { // Check if the requested URL matches "/" if (strcmp(URL, "/") == 0) { // Use WiServer's print and println functions to write out the page content WiServer.print("<html>"); WiServer.print("Hello World!"); WiServer.print("</html>"); // URL was recognized return true; } // URL not found return false; } void setup() { // Initialize WiServer and have it use the sendMyPage function to serve pages WiServer.init(sendMyPage); // Enable Serial output and ask WiServer to generate log messages (optional) Serial.begin(57600); WiServer.enableVerboseMode(true); } void loop(){ // Run WiServer WiServer.server_task(); delay(10); }
Leggi le prime righe dello sketch e trovi le linee 07 ed 08 in cui definisci le due modalità in cui la wifi shiled arduino può operare, nel dettaglio:
INFRA: o infrastructure è la modalità in cui la wifi shield arduino si connette ad una rete wifi esistente come quella di casa o del tuo ufficio
ADHOC: è una modalità in cui arduino si collega ad una altro dispositivo wifi in modo dedicato.
Se hai letto il progetto Rover5 Leonardo WiRC ricorderai che la scheda WIRC realizza appunto una connessione di tipo AdHoc con il dispositivo di controllo ( iPad, iPhone, Android )
nell’esempio utilizzi la wifi shield arduino facendola connettere ad una rete WiFi preesistente e quindi in modalità Infrastructure.
Quindi procurati i dati di accesso della tua rete WiFi, su Mac apri le preferenze di rete
ora sai il nome della tua rete o ssid e lIP assegnato al computer, quindi la classe di indirizzi di rete, ti serve conoscere anche il tipo di cifratura utilizata, clicca su “Avanzate” e trova la tua rete:
sulla destra è riportato il tipo di cifratura, nel mio caso WPA.
Passa alla configurazione dello sketch, linee 10-37 racchiudono tutta la configurazione della network, in particolare concentrati sulle linee 12-15 per l’IP, il gateway, la netmask e il ssid:
unsigned char local_ip[] = {192,168,1,200}; unsigned char gateway_ip[] = {192,168,1,1}; unsigned char subnet_mask[] = {255,255,255,0}; const prog_char ssid[] PROGMEM = {"Alice-45748781"};
i parametri che vedi sono quelli relativi alla schermata presa dal Mac, ho cambiato l’IP prendendo quello successivo rispetto al Mac ( .199 -> .200 )
la linea 17: individua il tipo di crittografia essendo la mia una rete con crittografia WPA modifico la line a come:
unsigned char security_type = 3; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2
la linea 20: indica il tipo di chiave di sicurezza utilizzata, io ho configurato temporaneamente la mia rete wifi inserendo la stessa linea presente nello sketch della wifi shield arduino: 12345678;
linea 33:la puoi lasciare invariata, indica la modalità di connessione che per questo esempio è Infrastructure;
delle altre linee dello sketch non varia nulla e servono a far visualizzare sul browser la pagina web creata alle linee 45-47;
Ecco il risultato collegandoti con il browser ( firefox ) all’indirizzo 192.168.1.200:
Buon divertimento wifi !!!
125 commenti
2 ping
Vai al modulo dei commenti
Ciao Mauro,
volevo innanzitutto complimentarmi con te per i tutorial che metti a disposizione e per la chiarezza di esposizione.
Premetto che sono abbastanza profano in materia (anche se ho già realizzato un piccolo progetto)
ed in questo momento sono un po’ in difficoltà, potresti aiutarmi per favore?
Ho acquistato la wifi ethernet shield ed ho seguito le tue istruzioni qui sopra…
Purtroppo non ne vengo fuori perché sicuramente sbaglio qualcosa.
Le uniche cose che ho modificato sono quelle sotto riportate:
unsigned char local_ip[] = {192,168,1,200}; // IP address of WiShield
unsigned char gateway_ip[] = {192,168,1,1}; // router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0}; // subnet mask for the local network
const prog_char ssid[] PROGMEM = {“Digicom_F2CB”}; // max 32 bytes
unsigned char security_type = 2; // 0 – open; 1 – WEP; 2 – WPA; 3 – WPA2
// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {“PASSWORD DEL MIO ROUTER”}; // max 64 characters
In teoria dovrebbe essere giusto…
In realtà mi sorge il dubbio quando carico lo schetch su arduino; infatti ho installato il file aggiuntivo FTDI per la porta seriale ma non sono sicuro di usare quella giusta. Inoltre non c’è alcuna porta con scritto wireless…
Dove sto sbagliando?
Grazie per la tua disponibilità
Pierpaolo
Autore
Ciao Pierpaolo,
Il tuo router ha il DHCP impostato sulla rete 192.168.1.x attivo sulla rete wireless?
Mauro
Ciao Mauro,
le impostazioni del router in WiFi – TCP/IP sono:
configura IPv4 Utilizzo di DHCP
Indirizzo IPv4 192.168.1.3
Maschere di sottorete 255.255.255.0
Router 192.168.1.1
Non ho compilato nessun altro campo……..
Però non funziona….
Ho pensato ad utilizzare un’altro schetch SILPLE WEB SERVER WIFI e con questo riesco a visualizzare…
Ma che differenza c’è tra WiServer , WiClient … ???
Autore
Ciao Pierpaolo,
la differenza é importantissima:
WiServer rende Arduino un Server, ossia in grado di “servire” pagine HTML o rispondere ad un servizio;
WiClient rende Arduino in grado di collegarsi ad un server e ricevere una pagina HTML o un servizio.
In pratica al primo ti ci puoi collegare come Browser ed il secondo é simile ad un browser.
Mauro
Cavolo Mauro, mi sento proprio ignorante…
L’anno scorso ho conosciuto Arduino e mi è molto piaciuto.
Ho deciso quindi di realizzare un mio PRIMO PROGETTO: raffreddare i pannelli fotovoltaici con un sistema di irrigazione per valori di temperatura >25 gradi con determinate tempistiche… (Se hai piacere posso girarti la relazione che ho fatto in merito dove descrivo esattamente quello che ho fatto compresa la PCB MAIN…)
A distanza di un po’ di tempo ho fatto un corso su HTML e CSS ed ho realizzato un sito statico per la società di calcio che alleno. In realtà ritornano sempre fuori il PHP e MYSQL di cui non so proprio niente…
Adesso vorrei realizzare un sistema DOMOTICO che mi permetta attraverso un display appeso al muro e da remoto con IPhone di:
1) comandare saracinesche (motore 3 fili: AC salita e CB discesa; non saprei come fare)
2) comandare tende da sole
2) comandare climatizzatore (qualcosina ho già fatto…riesco a gestire un relè da IPad) in funzione di DHT11
3) sensore temperatura ed umidità DHT11 . (Da IPad riesco a visualizzare ed aggiornare i valori)
E adesso il difficile!
Vorrei connettermi da remoto con IPhone e controllare tutto, inoltre vorrei collegare un display tipo mini schermo touch…
Penso che sia un PROGETTO ENORME per le mie conoscenze…
Per questo vorrei chiederti qualche consiglio soprattutto sulla connessione da remoto, se utilizzare un Wiserver o WiClient…o qualsiasi cosa tu voglia suggerirmi…
Il materiale che ho a disposizione è una wifi Ethernet shield con arduino uno, DHT11, sensore PIR, modulo relè.
Ciao e Grazie
Pierpaolo
Autore
Ciao Pierpaolo,
progetto molto ambizioso ma non impossibile.
Io propenderei per altre tecnologie appoggiate ad Arduino per ottenere quello che desideri, sono più semplici.
In questi giorni sto testano Raspberry Pi, gentilmente donatami da un appassionato e lettore del Blog, Agostino.
Con Arduino devi scriverti tutto, ma proprio tutto da solo, compreso il webserver,
potrebbe essere un’esperienza interessante se la metti sul profilo didattico, non aspettarti di far tutto in quattro e quattrotto, avrai necessità di studiare molto.
Ti consiglio di procedere per gradi, parti dallo studio dei sensori, poi HTML/CSS/Php ed alla fine WiServer.
Mauro
Salve,
scusi se La importuno ma ho un grosso problema con ARDUINO che di seguito rapidamente cerco di esporLe.
Debbo sviluppre un dispositivo utilizzante ARDUINO che da remoto ed in area WIFI colloqui con un PC trasmettendo e ricevendo dati Analogici (Pressioni,Temperature etc.) e Digitali (Allarmi, Stati di Valvole etc.).
Ambiente operativo: MS-WINDOWS XP.
WIFI SHIELD montata su ARDUINO 1.0.5.
La Funzione Ping opera correttamente.
Fra gli esempi forniti dal Costruttore l’unico che opera correttamente è “ScanNetworks”.
Le svariate prove effettuate utilizzando gli esempi WIFI di ARDUINO che dovrebbero far dialogare la WIFI Shield con applicativi (quelli utilizzati sono sviluppati in ambielte MS-VB6 o MS-Visual Studio 2005) hanno tutte dato esito negativo.
L’applicativo Total Network Monitor rileva un Device di tipo ICMP-ping anzichè TCP-port e questo spiegherebbe il corretto funzionamento della sola funzione Ping.
Probabilmente il Firmware operante sulla WIFI Shield non viene da me usato correttamente.
Avrei bisogno di un Suo consiglio sulle modalità con le quali poter eliminare il problema la cui mancata soluzione mi costringerebbe a cambiare l’architettura remota del progetto.
La ringrazio anticipatamente per l’attenzione che mi vorrà dedicare.
ing.emilio lusardi
P.S.
Ho inviato svariate e-mail al Team di Arduino ma non ho avuto risposte.Spero questa volta di essere più fortunato.
Autore
Ciao Emilio,
mi piace rivolgermi in modo confidenziale con i lettori del Blog e chi chiede aiuto, ovviamente puoi fare altrettanto.
In merito al tuo problema vorrei aiutarti ma non ho compreso alcune cose su cui potrai darmi delucidazioni:
1. che tipo di protocollo stai utilizzando tra la WiFi ed il Pc?
2. chi fa da server e chi da client?
3. la rte pè una rete adhoc ( ossia creata da uno dei due apparati ) o è una wifi generata da un router?
4. arrivati al Pc queste rilevazioni come devono essere elaborate?
Se mi fornisce queste informazioni, in un commento, proverò a ragionare su come aiutarla.
Mauro
Salve,
Ti ringrazio per la sollecitudine con la quale mi hai risposto.
Spero che le seguenti risposte alle Tue domande siano sufficienti ed esaustive:
Domanda n.1
Uso un Modem TELECOM ADSL2+Voip/Wi-Fi
Modalità di cifratura WPA-PSK TKIP 256 bit
Protocollo WPA/WPA2
Collegamento Wi-Fi Tipo 802.11g
I messaggi presentati dal Monitor Seriale a seguito dell’attivazione
dell’esempio “WiFiUpdSendReceiveString” di ARDUINO sono:
(All’avvio)
Attemping to connect to SSID: ALICE-48840229
Port No.: 2390
(dopo circa dieci secondi)
Connected to wifi
SSID ALICE-48840229
IP Address: 192.168.1.235
MAC : 78:C4:E:1:C6:9C
signal strength (RSSSI) :-57dBm
Starting connection to Server
ID Socket: 1
(Attesa connessione e dati da un Server della Rete)
Invio di un UDP Socket da un PC connesso in Rete.
I dati non vengono acquisiti.
Il Socket inviato dal programma verso un’applicazione operante su un altro PC della Rete
viene invece acquisito.
Domanda n.2
Dipende dall’esempio ARDUINO utilizzato.
Domanda n.3
Si tratta una wifi generata dal router descritto in risposta alla domanda n.1.
Domanda n.4
Il SW dovrà processare i dati acquisiti.
Grazie per la Tua cortesia
Autore
Ciao Emilio,
così come lo descrivi il Pc fa da server aprendo un socket ed arduino fa da client, si collega al socket ed invia i dati, giusto?
Utilizza lo sketch Client e verifica se riesci a leggere i dati sul computer.
Mauro
Salve,
ho notato che l’elenco degli esempi da Te mostrato non coincide con quello riportato nei miei esempi.
Ho comunque provato ad eseguire l’esempio “A simple sketch ….” della Tua documentazione ma non sono stato in grado di farlo eseguire poichè il file “Wiserver.h” non era accessibile.
Ho quindi provato a fa eseguire lo sketch “Web client” contenuto nei miei esempi.
Lo sketch dovrebbe connettersi al WiFi Network “www.google.com” e rimanere in attesa della risposta.
L’esito è la presentazione periodica sullo schermo del video del seguente messaggio:
Attempting to connect to SSID: Alice-48840229
Attendo Tue consideraziooni.
Saluti
Autore
Ciao Emilio,
l’SSID a cui tenta di connetersi è corretto?
Il tipo di autorizzazione che hai impostato sulla WiFi Shield e sul Router è il medesimo?
Sembra un banale errore di connessione alla rete domestica a cui vuoi conneterti, potrebbe essere l’origine di tutti i tuoi problemi.
Mauro
Rieccomi,
l’SSID a cui tenta di connettersi è quello visualizzato a seguito della richiesta Windows:
“Visualizza reti senza fili disponibili”.
Le password settate sulla WiFi Shield e sul Router coincidono.
Provando infatti a modificare l’SSID o la Password si accende il LED Rosso (ERROR).
Se questi dati sono corretti si accende invece il LED Verde (LINK)
Mi sarebbe molto utile se Tu mi potessi inviare il file “WiServer.h” la cui mancanza
nel mio PC non mi consente di provare il funzionamento del Tuo Sketch.
Ho notato inoltre che questi contiene ed usa i seguenti parametri di configurazione :
#define WIRELESS_MODE_INFRA 1 *****
#define WIRELESS_MODE_ADHOC 2 *****
// Wireless configuration parameters —————————
unsigned char local_ip[] = {192,168,1,2};
// IP address of WiShield
unsigned char gateway_ip[] = {192,168,1,1}; *****
// router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0}; *****
// subnet mask for the local network
const prog_char ssid[] PROGMEM = {“ASYNCLABS”}; *****
// max 32 bytes
unsigned char security_type = 0; // 0 – open; 1 – WEP; 2 – WPA; 3 – WPA2 *****
// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {“12345678”}; // max 64 characters
dei quali quelli asteriscati non vengono usati dagli esempi ARDUINO in mio possesso.
In particolare la costante “security_type” che dalla documentazione del Modem Alice della TELECOM da me utilizato credo corrisponda alla dizione:
Modalità di cifratura = WPA-PSK TKIP 26 bit
ha nel Tuo Sketch il valore: 0 e non saprei quale valore associarle qualora lo Sketch operasse sul mio PC.
La PROGMEM corrisponde infine alla Password acquisita dalla documentazioe del Modem ?
Grazie e scusami se Ti sto annoiando.
emilio
Autore
Ciao Emilio,
I miei esempi e le librerie che ho utilizzato sono quelle distribuite dal produttore della shield, puoi scaricarli dal suo sito.
Se la tua shield non é la medesima mostrata, le difficoltà che incontri potrebbero essere dovuti ad altri fattori come l’incompatibilità delle librerie o degli sketch.
Mi sembra strano che il tuo sketch non usi i parametri di rete, come vedi nel mio sono usati.
Inoltre il parametro security_type dovresi impostarlo come sul modem, nel commento che segue il comando ci sono tutti i tipi di security.
Mauro
Salve,
credo che la Tua ipotesi di incompatibilità sia quella corretta.
Ho verificato però che connettendomi al sito ARDUINO.CC sono acquisibili le sketch da me utilizzate e che sono differenti da quelle che Tu presenti.
Scusami pertanto per la mia insistenza, potresti indicarmi i siti dai quali potrei acquisirle ?
emilio
Autore
Ciao Emilio,
forse ho fatto confusione, che shield stai utilizzando? è la stessa da me presentata?
Mauro
Salve,
ho finora usato gli esempi riportati nel sito Arduino.cc poichè non riesco a far eseguire
lo sketch da Te riportato che genera il seguente errore in corrispondenza dell’istruzione asteriscata:
#include
…..
…..
// This is our page serving function that generates web pages
boolean sendMyPage(char* URL) {
// Check if the requested URL matches “/”
if (strcmp(URL, “/”) == 0) {
// Use WiServer’s print and println functions to write out the page content
***** Wiserver.print(“”); *****
Messaggio di errore:
sketch_oct23a.ino: In function boolean void sendMyPage(char*)’:
sketch_oct23a:61:error ‘WiServer’ was not declared in this scope
WiServer.print(“Hello World!”);
WiServer.print(“”);
// URL was recognized
return true;
}
…..
…..
Ti sarei grato se potessi indicarmi la causa che genera l’errore.
emilio
Autore
Ciao Emilio,
innanzitutto non mi hai risposto alla domanda: che shield stai usando?
Non puoi prendere una shield differente da quella mostrata e utilizzare gli stesi sketch, dovrai usare librerie e sketch rilasciate per il tuo prodotto.
In secondo luogo, mi sembra che in fondo agli articoli c’è scritto di non incollare codice perché mi arriva illeggibile.
Infine il tuo errore evidenzia che non esiste la libreria WiServer, sei sicuro di averla caricata in arduino ed aver riavviato l’IDE dopo?
Mauro
Salve,
vedo che Ti stai arrabbiando ed hai ragione.
Shield ARDUINO utilizzata:
Hw: ARDUINO UNO R3
Sw: arduino-1.0.5
Tutto quello che so riguardo alla shield acquistata in Germania è:
Controller: AVR 32UC3 (32-Bit)
WLAN-Modul: HDG104 von H&D Wireless
Standard: 802.11b/g
Verschlüsselung: WEP und WPA2
Protokolle: TCP und UDP
Micro-SD-Karten-Slot: Ja
Micro-USB-Anschluss: Ja
ICSP-Anschluss: Ja
Debugging-Schnittstelle: über FTDI-Kabel
Betriebsspannung: 5 V
Le librerie e gli sketch rilasciati per ARDUINO sono quelle scaricate dal sito Arduino.cc.
Le informazioni in mio possesso non mi consentono di individuare le librerie e gli sketch rilasciati
per la WiFi shield e se queste differiscono da quelle già in mio possesso.
Per risolvere il problema penso quindi che la cosa più razionale potrebbe essere che io provveda
ad acquistare una nuova WiFi shield da Te consigliata.
Continua a scusarmi.
Autore
Ciao Emilio,
voglio aiutarti ma ho bisogno che ti mi dia le informazioni corrette per farlo altrimenti é tempo perso per entrambi.
Usare shield WiFi é un po’ più complesso rispetto ad altre shield in quanto oltre allo sketch ed alle librerie che utilizzi é necessario che tu abbia conoscenze approfondite di rete, connessioni, protocolli, ssid, crittografia, ecc…
Una cosa é certa il firmware rilasciato per una shield non é detto che possa andar bene per altre shield.
Quella che ho utilizzato io ha delle librerie scritte per questo integrato wifi dal produttore, questo le rende non compatibili con altre shield.
Il venditore della tua shield dovrebbe rilasciarti delle librerie specifiche, se non lo fa dovrai individuare il tipo di chip wifi ed i collegamenti e provare librerie scritte per il tuo wifi.
Se decidi di acquistare altre shield per il WiFi ti consiglio di acquistare direttamente la nuova arduino yún in cui il WiFi é già gestito dal firmware della scheda.
Mauro
Salve,
penso che sia utile concludere il forum in attesa della descrizione di ARDUINO YUN da Te anticipata .
Ti voglio però riassumere lo “stato dell’arte”.
1-Utilizzando gli esempi disponibili a seguito dell’installazione di ARDUINO 1.0.5 ho ottenuto il run corretto
solo dell’esempio “ScanNetworks” che presenta l’elenco delle reti acquisibili.
L’altro esempio da me utilizzato è stato “WiFiUdpSendReceiveString” che provvede ad aprire la connessione (WiFi.begin) ed a rimanere in attesa dell’arrivo di dati provenienti dall’esterno (Udp.parsePacket).
Per far operare l’esempio “WiFiUdpSendReceiveString” ho sviluppato un programma che dopo essersi connesso alla Shield (utilizzando il suo IP e la sua Porta) invia un Socket UDP contenente un set di caratteri ASCII.
Il risultato è stato:
– Accensione del LED LINK della Shield.
– Ricezione ed analisi (penso) del Socket.
– Invio di un carattere.
– Chiusura della connessione.
Il carattere ovviamente non è acquisibile essendo la connessione chiusa.
Mi viene il sospetto che sia illegale qualche dato contenuto dal Socket che però è stato preparato dall’OCX
Microsoft Winsock Control 6.0.
Inoltre la stessa procedura opera correttamente quando i dati vengono inviati ad un altro PC dove opera un
programma che agisce da server avente il compito di acquisire i dati.
2-Ho scaricato le librerie indicate nella Tua documentazione.
Ho individuato gli esempi ma non mi è stato possibile ottenerne la compilazione poichè ognuno ha generato un set di errori.
Questo è quanto potremmo ricontattarci in seguito.
Io però continuo a provare perchè il problema mi ha generato un “disturbo mentale”.
Scusami per il fastidio che Ti ho provocato.
saluti
emilio
Autore
Ciao Emilio,
scherzi ? Quello che tu definisci “disturbo” io lo chiamo curiosità ed é la base di tutti i miei progetti.
Continua così e sono certo che troverai la strada corretta per superare queste difficoltà con facilità.
Un solo dubbio: perché vuoi che sia Arduino a fare da server ed il Pc da client e non viceversa?
Mauro
Salve,
sono sempre il solito “rompiballe”.
Sto tentando di far funzionare uno sketch che provvede ad inviare una stringa di dati ASCII ad un PC.
Il programma (Microsoft Visual Studio 6.0) operante sul PC non rileva la ricezione dei dati.
Lo stesso programma opera invece correttamente se i dati vengono inviati da un altro PC operante sulla Rete.
Lo sketch è molto semplice e quindi è il programma operante sul PC a non operare correttamente quando i dati vengono inviati da una WiFi Shield.
Se questo fosse vero la causa dei malfunzionamenti sarebbe da ricercarsi sul SW operante sul PC.
Potresti indicarmi un programma sostitutivo a quello da me utilizzato?
Ti ringrazio anticipatamente.
emilio
Autore
Ciao Emilio,
che programma stai utilizzando?
Non uso Windows da 10 anni e di conseguenza programmi su Win.
Se non ricordo male esiste HyperTerminal che legge e scrive dati provenienti dalla porta seriale.
Mauro
Salve,
sono sempre io il testardo che sulla base dell’esortazione da Te fattami il 25 ottobre 2013 continua
a cercare di far parlare il PC con l’ARDUINO WiFi Sketch.
I risultati cui ad oggi sono pervenuto sono.
1-Su ARDUINO opera l’esempio WiFiUdpSendReceiveString (Arduino IDE 1.0.5) che:
a.Si connette alla rete WPA2 (WiFi.begin(ssid,pass)).
b.apre una connessione (Udp.begin(2390)).
c.attende l’arrivo di dati (int packetSize = Udp.parsePacket())
2-Sul PC (MS-Windows XP) opera un Task che:
a.apre una connessione con l’WiFi Shield (192.168.1.235:2390).
b.Invia una Stringa di caratteri ASCII.
Risultato:
Arrivo sul PC di n.1 carattere che però non è acquisibile poichè la Shield ha chiuso la connessione.
Questa considerazione è deducibile dal messaggio di errore che MS-Windows XP mi presenta sullo
schermo del video.
Il Messaggio di errore viene presentato anche quando modifico il numero della Porta di destinazione
(192.168.1.235:xxxx).
Ovviamente il messaggio non viene presentato se modifico l’IP Address di destinazione.
Deduco pertatno che probabilmente vi sia un malfunzionament del FirmWare ATMEL o nel SoftWare ARDUINO.
Infine il funzionamento del programma operante sul PC è stato a provato connettendolo ad un
programma ricevente operante su un altro PC connesso alla stessa Rete ed osservandone
il corretto comportamento.
Infine le stesse prove sono state effettuate non utilizzando ALICE ma un altro Modem (SITECOM) ed
ottenendo i medesimi risultati.
Continuo a provare.
Saluti
emilio
Autore
Ciao Emilio,
sono contento che tu sia testardo è una delle caratteristiche ci rende Makers: non ci arrendiamo difronte ai primi ostacoli.
Leggendo quello che scrivi mi viene un dubbio, la connessione che il Pc apre è di tipo UDP come quella aperta dalla WiFi Shield?
Mauro
Salve,
ho verificato nella speranza che la connessione NON fosse di tipo UDP ma purtroppo
l’istruzione “Winsock1(1).Protocol = sckUDPProtocol” mi ha fornito la certezza che la
connessione è di tipo UDP.
grazie
emilio
Autore
Ciao Emilio,
immagino che quella istruzione sia lato Pc, per cui entrambi i sistemi coinvolti parlano attraverso UDP.
Hai provato anche attraverso TCP?
Mauro
Salve,
continuano le mie prove che hanno interessato l’utilizzo dell’applicazione AxNetwork che consente
di inviare e quindi ricevere in WiFi stringhe utilizzando protocolli TCP/IP oppure UDP.
Le stesse prove sono state effettuate inviando stringhe ASCII verso un PC ricevente ed utilizzando
ogni volta uno dei due protocolli: il risultato è stato soddisfacente.
Lo stesso non è avvenuto inviando lo stesso set di stringhe all’WiFi Sketch.
Penso ora che lo Sketch non operi correttamente a causa di un malfunzionamento HW o SW.
Mi consiglieresti di acquistare un altro Scketch?
Grazie
emilio
Autore
Ciao Emilio,
gli sketch, che io sappia, non si acquistano di solito chi li realizza li mette a disposizione su internet gratuitamente.
Se ti riferisci alle shield WiFi ne esistono di tanti tipi io ho provato quella di questo articolo per le altre non saprei aiutarti.
Mauro
Salve,
scusa per l’errore intendevo WiFi Shield come mi hai giustamente corretto.
Non avendo voglia di continuare a perder tempo avrei ora bisogno di sapere se:
1-E’ possibile effettuare una connessione WiFi “affidabile” fra ARDUINO YUN ed un PC MS-WINDOWS XP.
2-L’antenna è incorporata.
3-E’ stato testato il set di esempi che penso siano scaricabili dal sito “www.arduino.cc”
grazie
emilio
Autore
Ciao Emilio,
io ho acquistato l’arduino yun ma non l’ho ancora provata.
Ti invito a leggere la documentazione arduino sul sito ufficiale e consultare il forum in cerca di chi ha già eseguito qualche test e può rispondere ai tuoi dubbi.
Mauro
Salve,
sono riuscito finalmente a far dialogare ARDUINO + WIFI SHIELD con la mia applicazione MS Windows XP.
Ti voglio ringraziare per il supporto che mi hai fornito.
Sarei felice di continuare la collaborazione.
emilio
Autore
Ciao Emilio,
sono contento che tu abbia ottenuto al comunicazione tra l’Arduino WiFi e la tua applicazione Windows.
Se vuoi pubblicare e condividere quello che hai ottenuto il blog è a tua disposizione.
Mauro
Ciao Mauro, Le scrivo per spiegarle il mio problema: da giorni sto cercando una soluzione, fattibile da un appassionato di arduino alle prime armi come me, quindi facilmente programmabile, sul collegamento tra arduino UNO e un iphone 5s SENZA dover collegare la shield arduino alla porta usb del pc. Spiego meglio: il mio scopo è quello di poter sviluppare progetti del tipo accendere una luce in casa tramite iphone quando sono in auto a 500-600 metri distante da casa; accendere un ventilatore nella mia camera da letto tramite iphone mentre sono a 2 isolati di distanza da casa; o far sì di poter leggere dei valori o dei dati sul mio iphone riguardanti uno o più sensori collegati ad arduino mentre io sono ad almeno 1 km di distanza da arduino stesso. Tutto questo SENZA che la ‘benedetta’ shield di arduino sia collegata al pc ma solamente alimentata da una batteria e posta in una scatola ‘solitaria’. Sul web trovo una marea di informazioni prolisse e specifiche, roba da ingegnere, quale NON sono ahimè, oppure trovo maree di video tutorial RIGOROSAMENTE in inglese dove mostrano risultati finiti ma senza spiegare il ragionamento che ha portato a quel risultato; oppure soluzioni di tipo touchosc ma con collegamento di arduino comunque a pc ( e questo non lo voglio). Ho sentito parlare di moduli xbee, però non li conosco e non so se sono semplici da programmare.Farebbero al caso mio secondo lei? la wifi shield di arduino andrebbe bene x fare tutte queste cose e comunque per un utilizzo privo di cavetterie a pc ma solo con router presente nella mia abitazione? un sistema touchosc può essere utilizzato a quelle distanze?
In attesa di una sua risposta la ringrazio. Michele
Autore
Ciao Michele,
ciò che vuoi realizzare è un bel progetto ma non semplice.
Per realizzarlo ti occorrono non solo competenze di elettronica e programmazione ma anche di networking.
Nulla che tu non possa imparare leggendo su internet, certo la maggior parte dei tutorial è internazionale e quindi in inglese.
Non esiste una soluzione già pronta ma al massimo tutta una serie di singoli esperimenti, anche sul mio blog, che spiegano fasi singole di progetti e che devi unire per realizzare il tuo progetto.
I moduli XBee sono descritti in alcuni miei articoli sia dal punto di vista del funzionamento sia della programmazione ma non adatti a quello che vuoi realizzare in quanto gli smartphone sono dotati solo di WiFi e Bluetooth per la comunicazione senza fili.
La wifi shield potrebbe essere un’ottima strada, richiede delle conoscenze di networking non solo per la sua programmazione ma anche per essere configurata adeguatamente. Se già disponi di un router io propenderei per una Ethernet shield che almeno è più semplice da utilizzare.
Mauro
intanto grazie mille x i preziosi consigli 🙂
A casa predispongo già di un router, quindi se la mia scelta fosse ethernet shield , questa, la posso configurare al mio router e una volta configurata posso usarla anche a pc spento?
Utilizzarla come webserver mi consente, tramite iphone ( x esempio) di gestirla inviando istruzioni o di ricevere dati e valori elaborati da ‘lei’ ? Che distanze posso coprire utilizzando una ethernet shield? C’è un applicazione da scaricare per poter gestirla da smartphone ( iphone, samsung, ecc.)?
Scusi x le tante domande ma sono ‘affamato’ di sapere del mondo di aduino e ritengo il suo un valido supporto! 🙂
saluti,
Michele
Autore
Ciao Michele,
La tua fame di conoscenza é un dono bellissimo, per saziarla o contribuire a farlo in parte ho scritto questo blog.
Certo prima di realizzare un progetto come quello che hai in mente ti servono conoscenza e tempo per acquisirla.
La Ethernet shield ti consente di non avere il Pc acceso per comunicare con Arduino, prova a leggere i miei articoli su questa scheda.
La copertura é data dal tuo router, la Ethernet shield non copre nulla é sono una scheda di rete.
Per gli smartphone io uso TouchOSC, che mi semplifica molto la vita, ma lato arduino devi scriverti tu lo sketch, trovi qualche esempio nei miei articoli.
Ti invito a leggere e comprendere tutti gli articoli del blog dedicati a led, sensori, Ethernet e TouchOSC per iniziare il tuo progetto, poi ti serviranno conoscenze di networking se già non le possiedi.
Mauro
ciao Mauro, scusa se propongo in questa sezione il mio problema , ma non sono riuscito a trovare qualche post su arduino e i relè 🙂
Sto cercando di sviluppare un progetto di accensione di una lampada (IRemote + telecomando) alimentata da 220v di casa tramite un relè pilotato da arduino. Il relè da me utilizzato è un songle SRC-05VDC-SH , appena piu sopra c’è scritto 1A 125VAC 1A 30VDC. Vorrei sapere se è giusto adoperare un relè del genere o se ho preso un ‘granchio’ nell’acquistarlo. Quando l’ho acquistato ( on line) era specificato nella sua descrizione: ”adatto x sperimentare arduino con una corrente 220V”.
Mi sono basato su di un progetto dimostrato su youtube di cui ripropongo una foto: http://carlopeluso.altervista.org/Progetti/cattura_ir_rele/_DSC0040.JPG . Ho aggiunto al progetto un diodo posto alla bobina del relè, sapendo che è buona norma utilizzare x proteggere il transistor. Noto che il relè usato dal ragazzo del video però non è quello che ho usato io, quindi chiedo appunto conferma sulla validità del mio adoperato, perchè con tutto montato il relè ‘ticchetta’ premendo i tasti programmati sul telecomando ( quindi presumo che sia il relè sia il programma caricato su arduino siano ok, il programma l’ho visto qui sul tuo blog tra l’altro ed è più chiaro di quello utilizzato dal ragazzo del video) però nn si accende e non si spegne nulla!!!
Sono veramente nel pallone e spero di uscire da questo ‘tunnel’ perchè ho tutto mantato correttamente ma non funziona ( e non c’è cosa peggiore!! 🙁 ).
grazie per i tuoi consigli, attendo risposta.
Michele
GRAZIE INFINITE!
Autore
Ciao Michele,
dalla scritta presente su relè non mi sembra adatto, i 125VAC non sono 220VAC forse é buono per la corrente d’oltreoceano che é 110VAC.
Data la tua conoscenza di elettronica ti consiglio di rivolgerti ad un rivenditore serio di componenti per arduino tipo robot-domestici.it che offre molti circuiti e schede con relè.
In merito all’articolo in cui aggiungi il commento mi sembra di capire che non hai dimestichezza neppure con il cerca dei siti o con google perché se avessi scritto relè nel mio sito avresti trovato di tutto di più tra esempi e shield montate adatte al tuo scopo.
Stesso discorso scrivendo IRremote avresti scoperto almeno 2 articoli dedicati agli IR.
Ti invito a fare questo tipo di ricerca e leggere la spiegazione dello sketch, controllare un relè é banale, basta portare HIGH il pin su cui lo hai collegato.
Mauro
se puoi consigliarmi un relè adatto al mio scopo te ne sarei grato 🙂
Autore
Ciao Michele,
Leggi la risposta al precedente commento.
Mauro
ciao Mauro,
hai ragione, ho fatto una ricerca come si deve e ho notato diversi post su relè e applicazioni ( quelli relativi all’IRemote li avevo già studiati qui sul tuo sito), chiedo scusa.
Ho trovato il problema sul mio circuito, ho invertito i collegamenti 220V – lampada sul relè.Quello che mi chiedo è perchè funziona normalmente se in relatà non sarebbe il relè giusto x lo scopo?.
Se il relè si eccitasse a 12 VDC anzichè 05 VDC ( come nel mio caso) è sufficiente collegarlo al pc x farlo funzionare o occorre alimentarlo esternamente incrementando l’alimentazione di arduino?
Grazie
Michele
Autore
Ciao Michele,
Innanzitutto ti chiedo di inserire i commenti relativi ai relè negli articoli sui relè, quelli su IR e Assorbimento ciascuno nell’articolo corrispondente. Questa attenzione aiuta me a capire su che articolo ci confrontiamo e gli altri utenti del blog a poterti aiutare o trarre informazioni.
Ti sembrerà strana la richiesta ma immagina che ogni giorno 1300 visitatori leggono i miei articoli, una parte commenta e chiede aiuto, altri mi aiutano a rispondere.
Tutto questo funziona solo se i commenti sono negli articoli corrispondenti, nessuno cercherebbe commenti sui relè nell’articolo sul WiFi e non ti può aiutare nessuno.
Per la tua richiesta:
se il relè si eccita a 12v devi fornirgli una alimentazione esterna tramite transistor, quest’ultimo sarà controllato da Arduino
Mauro
ciao, mi scusi per il disturbo, ma vorrei approfittare della sua grande conoscenza dell’Arduino per chiederle dei consigli che forse per lei saranno banalità ma per me saranno di grande aiuto.
Per svolgere un mio progetto, ho intenzione di utilizzare un modulo Bluetooth (HC-05, per esempio) per comandare Arduino tramite Android. I compiti affidati ad Arduino saranno: azionare 4 diversi servomotori (che lavorano individualmente ognuno per il proprio compito) e azionare, a scelta, uno tra 2 diversi pin.
La domanda che volevo porle è: cosa mi sa dire riguardo al modulo Bluetooth? come si programma in modo che attraverso il software per Android “Blueterm” io possa effettuare il controllo (apertura/chiusura servo, selezione pin da attivare)? non fraintenda, non le chiedo che mi scriva l’intero codice, ma le sarei grato se mi desse un consiglio o comunque un aiuto generale. spero in una sua risposta positiva
Cordiali saluti
Autore
Ciao Luca,
mi piacerebbe molto aiutarti e la tua premessa di voler solo consiglio è molto positiva perchè manifesta la tua voglia di imparare e fare da solo. Purtroppo non ho conscenze sui moduli bluetooth, non avendone ma acquistati, e per di più non possedendo un telefono android.
Posso aiutarti segnalandoti che un amico e appassionato ha realizzato qualche progetto con bluetooth e android e forse potrà darti lui qualche consiglio, possiede anche lui un sito http://www.lucadentella.it ed è molto disponibile.
Mauro
Ciao Mauro, come sempre navigando sul tuo sito mi vengono nuove idee per progetti con il “nostro” Arduino.
Avendo da tempo una scheda WiFi Arduino ho cercato di iniziare a muovermi nel mondo della domotica e come, sempre partendo dagli esempi già presenti. In particolare volevo assemblare un sistema che, collegandomi tramite WiFi e visualizzando una pagina ad un indirizzo internet, potesse accendere e spegnere due led. Il mio primo passo è stato quello di caricare l’esempio WIFIWebServer e vedere cosa succedeva. Riesco a collegarmi alla rete, ottengo il mio bell’indirizzo IP, lo digito all’interno di Explorer 8……e non riesco mai a visualizzare la pagina! Ottengo sempre “Impossibile visualizzare la pagina Web”. Premetto che lavoro con l’IDE 1.0.5 ed ho anche aggiornato il firmware della scheda WiFi (come consiglia il sito ufficiale e sopratutto leggendo su internet i vari blog). Sono giorni che non riesco ad uscire da questa situazione…..mi sarebbe rimasta la soluzione “martellata” sulla schede ma la vorei tenere per ultima!
🙁
Confido in un tuo aiuto!
Ciao e grazie
Fabio
Autore
Ciao Fabio,
così descritto sembra un problema di rete.
Sei certo di essere sulla stessa rete sia con Arduino WiFi sia con il dispositivo da cui ti colleghi con IE?
Ciao Mauro,
grazie per avere già risposto! Scusa se ti disturbo ma non riesco prorpio ad uscirne da questo problema!
Ho controllato sul router Alice WiFi e sulla sezione WiFi compare sia il mio PC che un dispositivo all’indirizzo IP che visualizzo sul monitor seriale (quindi dovrebbero essere collegati sulla stessa rete Pc e Arduino). Ma devo smanettare anche dentro il router?
Ciao
Autore
Ciao Fabio,
solitamente no se sei sulla stessa rete, potrebbe tuttavia intervenire il firewall di windows o altro tra il Pc ed arduino che impedisce di raggiungere l’IP.
Prova a:
2. a pingare l’arduino dal Pc
3. controllare che tu non abbia altri apparati di rete che possano essere configurati su un Ip simile
1. mettere un debug ( serial.println() ) all’interno della parte di connessione per controllare che il server capisce che c’è una connessione in arrivo dal Pc
Ciao Mauro,
ho fatto come tu mia hai detto:
ho controllato con ping e ottengo la risposta da Arduino;
non ci sono apparati con IP simili;
……per qunato riguarda il debug…..che intendi? Uso per ora il file di esempio della libreria WIFI WiFiWebServer dove posso mettere il controllo?
Grazie ancora dell’aiuto.
Fabio
Autore
Ciao Fabio, puoi mettere dei Serial.print durante l’esecuzione del codice per farti scrivere dove é arrivato, di solito all’interno di ogni if per cominciare e leggere dove arriva e dove si ferma.
Un momento…..rileggendo il programma c’è un Serial.println() dopo il comando:
WiFiClinet client =server.available();
if (client) {
Scusa Mauro ho sbagliato l’invio del messaggio!
ti volevo dire che nel programma c’è questa struttura:
void loop() {
// listen for incoming clients
WiFiClient client = server.available();
if (client) {
Serial.println(“new client”);
// an http request ends with a blank line
boolean currentLineIsBlank = true;
…………….
ed io non vedo la scritta new client nel monitor.
Potrebbe essere d’aiuto questa informazione?
Grazie
Autore
Ciao Fabio, debug fatto non superi l’informazione di verifica della chiamata al server devi indagare perché succede ma non penso dipenda da arduino, forse dal WiFi o dalla rete.
Ciao Mauro,
alla fine ho scoperto il problema! Se può essere di aiuto per altri utenti: ho aggiornato manualmente i drive del Atmel32uc3a1256 prendendoli dal programma Flip scaricato dal sito dell’Atmel.
Ora sembra tutto funzionare ma….avrei una domanda: le pagine si caricano molto lentamente (ho usato l’esempio e gli stessi file del tuo esempio). E’ normale?
Grazie sempre di tutto.
Fabio
Autore
Ciao Fabio, considera che arduino non possiede capacità computazionali paragonabili a quelle dei server web, é probabile che elaborare una risposta caricandola da una pagina molto pesante impieghi un po’ di più del previsto.
Prova a ottimizzare il codice HTML.
Salve e complimenti per il sito, la contattero’ a breve per un corso privato. ho lo stesso problema di fabio con la wifi shield, sono alle primissime armi, ķ p e la mia intenzione è accendere al momento un led da pagina html di windows explorer.premetto che la mia connessione wifi proviene da una chiavetta wifi tramite tablet, la shield wifi con lo sketch simply wifi della libreria si connette e il led verde si accende, sul monitor seriale mi da l’indirizzo ip e mi dice che se voglio vedere il risultato basta che digito l’indirizzo ip nel browser, lo faccio ma mi da errore, il problema può essere nella connessione? Non supporta quel tipo di connessione e dovrei provare con un router normale? Grazie e complimenti davvero, sto seguendo i suoi esempi e sono molto utili
Autore
Ciao Fabio,
il mio consiglio è lo stesso dato ad altri se non visualizzi la pagina è molto probabile si tratti di un problema di connesione tra Tablet e rete a cui è connesso arduino wifi.
Grazie per la risposta sarebbe cosi gentile da postarmi uno sketch per html in cui vedo un messaggio di testo digitando il codice ip sul browser in modo tale da verificare il problema
Autore
Ciao Fabio,
forse sarà un tutorial o un progetto che farò in futuro, non so dirti quando.
Ti consiglio di leggere tutti i miei articoli sulla realizzazione di un server html con Arduino per trovare qualche sketch che puoi adattare al tuo scopo.
Ho fatto controllare il tutto ad un amico che ne capisce di piu, ora proviamo ad aggiornare il firware come la guida del sito ufficiale, le farò sapere, può dipendere da quello? Il mio amico dice che non dialoga in html, io uso lo sketch della libreria, spero di poter risolvere, altrimenti penso seriamente di dover rinunciare con rammarico perché non ho soluzioni
Autore
Ciao Fabio,
l’intuizione potrebbe essere corretta.
Considera che se il problema è “pagina non trovata” potrebbe essere il firmware della wifi ce non ti serve la pagina html, se non ti risponde proprio la connessione è quasi certamente un problema network.
Il monitor Seriale in questi casi è il miglior amico che puoi avere.
Ciao Mauro,
sto cercando di fare inviare una mail ad arduino dopo un evento.
Ho uno shield WizFi210.
Vorrei poter inviare una mail al mio account google ma non so programma in C# ed in rete ho trovato degli esempio ma niente che funzioni.
Hai un codice esempio da potermi dare funzionante che usi SMTP o IMAP di google?
Ti ringrazio molto.
Autore
Ciao Angelo,
purtroppo no, nulla di già pronto.
Potresti consultare il metodo di invio mail via telnet che si usa di solito dai server linux e simulare una sequenza di comandi simile.
Mauro
Grazie Mauro.
Purtroppo i server di google con protocollo di sicurezza SSL non accettano chiamate da Telnet e quindi codici complementari.
Cercherò di aggirare il problema facendo inviare le mail ad un server web che “vede” i dati di arduino.
Ti ringrazio.
Ciao Mauro,
spero che non ti dispiaccia se ti do del tu anche se non ci consciamo.
Io volevo realizzare un progetto che mandi dei dati forniti da dei sensori collegati ad un arduino in una pagina web. Leggendo il programma mi sono sorti alcuni dubbi: l’if presente alla riga 49 che cosa controlla?
I dati posso mandarli utilizzando la seguente sintassi all’interno della funzione loop:
WiServer.print(dato);
dove dato è una variabile, ad esempio un double?
Infine che pin di arduino usa lo shield WiFi per comunicare?
Devo ancora effettuare questo acquisto e vorrei essere sicuro prima di procedere.
Grazie.
Andrea
Autore
Ciao Andrea,
puoi darmi del tu senza problemi.
Quando didi “un progetto che mandi dei dati ….in una pagina web” intendi un invio di dati ad una pagina che li registra ad esempio su un Db o intendi collegarti ad una pagina web generata dalla WiFi shield e vedere i valori raccolti in tempo reale?
Nel primo caso questo esempio non è adatto a fare ciò che desideri, devi usare uno sketch in cui arduino è client e non server.
La linea 49 controlla che nell’Url chiamato, essendo arduino server in questo caso, sia presente il carattere “/”;
Per i pin usati dalla shield fai riferimento al primo link presente in questa pagina ed al datasheet del produttore.
Ciao Mauro,
si scusami non mi sono espresso molto chiaramente, io intendevo collegarmi ad una pagina web generata dalla shield e vedere i dati raccolti.
Andrea
Autore
Ok Andrea,
a volte la stessa frase può avere diversi punti di vista.
Per vedere i dati puoi usare la tecnica che trovi in questo articolo che crea una pagina Web usando il metodo print() dell’oggetto wifi.
Ok capito!
Grazie per le risposte 🙂
Andrea
Ciao
devo inviare dei dati su intenet, ma non posso usare la ethernet shield che sarebbe la strada piu’ facile, perche’ non ho una connessione via cavo.
Posso seguire due strade, o la connessione con wi fi shield, ma non conosco certe password di rete (come const prog_char ssid[] PROGMEM = {“ASYNCLABS”};const prog_char security_passphrase[] PROGMEM = {“12345678”}; ) , oppure ho una chiavetta della tre con sim che lavora con un router TP LINK ordinato su ebay.
Per usare la wifi shield non ho tutte le password necessarie e ho molta confusione, perche come creo la web page dove visualizzero ‘ i dati che invio?
Per la chiavetta tre non serve nessuna password, quella si autoinstalla e funziona da se….
Avresti qualche consiglio?
ho provato a fare girare questo ma mi risponde errore
[ codice rimosso in automatico ]
ciao
Autore
Ciao Belinda,
noto la confusione.
L’SSID é il nome della tua rete WiFi, la pass-phrse é la passord é quella per accedervi.
Prima di intraprendere un progetto con Ethernet e WiFi valuta bene le competenze che ti occorrono, con arduino puoi realizzare delle pagine web ma devi scriverti gran parte del server che risponderà alle tue richieste e per farlo ti servono approfondite conoscenze di protocolli di rete e sistemi web.
Ti consiglio di leggere qualche articoli sulle pagine HTML ed arduino sul blog ed anche se applicate all’ethernet i concetti non cambiano per il wifi e qualche articolo in internet su come funziona la comunicazione client-server web in generale.
Io non ho capito perche’ collegandomi all indirizzo 192.168.1.200 dovrebbe apparirmi una pagina web…. il numero e’ semplicemente il successivo a quello con cui il mio wifi e’ connesso a internet?
Autore
Ciao Belinda,
Se leggi qualche articolo su come funzionano le reti internet e gli indirizzi IP capirai meglio. L’IP a cui devi puntare non é un numero casuale ma quello rilasciato dal tuo DHCP alla scheda WiFi connessa ad arduino.
Questa informazione la puoi ricavare dalla tabella DHCP del tuo router o altro apparato di rete con funzione DHCP.
Complimenti per i tuoi esperimenti.
Ho da poco acquistato arduino Uno a cui sto aggiungendo poco alla volta altre shield per poter ampliare la conoscenza su questo fantastico prodotto. Vengo al punto ho acquistato da qualche giorno la WiFi Shield, ho alcuni problemi a farla dialogare sia con Pc Windows (me la cavo abbastanza bene con vb.net, grazie anche all’aiuto di mio figlio) che con touchosc installato su un Ipad sto patricamente impazzendo, leggendo tutte le tue discussioni ho provato a scaricare diverse librerie ma nulla.
Rimango in attesa di una tua cortese risposta.
Autore
Ciao Guglielmo,
la parte network fuziona?
Si infatti usando gli sketch base tutto funziona, ho provato anche il ping e risponde correttamente. Il problema è che usando i vari programmi trovati su internet non riesco a capire come intercettare le stringhe che invio sia tramite vb.net che via touchosc da Ipad.
Ti ringrazio per aver preso in carico il mio problema.
Autore
Ciao. Guglielmo, io posso aiutarti solo per gli sketch scritti da me, per gli altri devi chiedere agli autori.
Scusa, ma ho provato anche il tuo sketch, da browser se digito l’IP della wifi shield mi dice che non è raggiungibile. Ho provato anche il tuo sketch quello relativo all’iphone con i sei led e touchosc, modificando i dati che anziché essere la ethernet e la wifi ma nulla. Stasera quando sono a casa ti invio gli sketch modificati (dovro’ vedere come fare, visto che non posso copiarli ed incollarli).
Autore
Ciao Guglielmo,
non correggo gli sketch che scrivete perché mi è impossibile farlo per tutti, per quello c’è il forum arduino.
Quello che posso fare e darti dei consigli se non capisci qualcosa sui miei sketch.
Da quello che mi scrivi il tuo problema sembra di networking e non di sketch per adesso non raggiungi neppure il tuo arduino, prova a verificare che sul router sia attestato arduino via wifi e che sia corretto l’IP assegnato e quello riconosciuto dal router.
hai ragione e ti chiedo scusa, ma la mia intenzione non era quella. Potrebbe essere un problema di networking, ho il router wifi di Vodafone (Vodafone station), ho attivato tutti i dispositivi tramite gli indirizzi MAC, se però pingando l’indirizzo IP dello shield da un pc ottengo una risposta secondo il tuo parere potrebbe essere comunque un problema di network.
Autore
Il ping, Guglielmo, ti dice che l’IP verso cui stai eseguendo il test esiste ma non è detto che sia raggiungibile con tutti i protocolli di rete o che abbia qualche software in ascolto sulla porta con cui vuoi comunicare.
Ad esempio se ti colleghi con un browser tenterai di accedere alla porta 80 ( HTTP ) del tuo progetto, verifica che sia aperta e raggiungibile dal pc da cui esegui il ping e funziona; poi verifica che risponda qualcosa.
Se tutti i test precedenti vanno a buon fine e ottieni un risultato non ti resta che mettere dei Serial.print nel codice arduino in corrispondenza della ricezione delle chiamate e verificare come avviene la comunicazione.
Ho risolto la parte connettiva, infatti usando simplewebserverwifi da browser riesco ad accendere e spegnere un led. Rimango dubbioso sulla parte di riconoscimento da parte di arduino delle stringhe inviate da osc.
Grazie per la pazienza che accordi a tutti noi novizi. Domani proveró ad adattare il tuo sketch alle librerie della nostra scheda wifi.
Autore
Ottimo Guglielmo, la stinga OSC, se usi la stessa libreria che ho usato io, è una stringa di testo con la formattazione indicata dal protocoloo OSC, a memoria è molto semplice come stringa.
Scusa se ti disturbo ancora secondo te posso usare le tue librerie anche se la mia shield è diversa dalla tua.
Autore
Ciao Gugliemo,
non c’è bisogno che ti scusi, il blog è qui proprio per scambiarci consigli 🙂
Ti riferisci alla libreria OSC? Se si, puoi usarla senza alcun problema è del tutto indipendente dalla shield che usi; si occupa solo di gestire il protocollo OSC.
No mi riferivo alla libreria della scheda, per la libreria di OSC ho parecchi problemi perché non trova dei file, l’ho sostituita con ArdOSC. Stasera provo e poi ti aggiorno.
Faccio estrema fatica a capire come funziona la libreria ArdOSC, visto che quella che usi tu continua a dare errori, mancanza di alcune file. Non demordo e continuo ad insistere prima o poi ne verrò a capo.
Autore
Ciao Guglielmo,
sei certo che gli errori non siano semplicemente dovuti alla versione dell’IDE ?
Se non ricordo male la libreria che ho utilizzato io è stata scritta per la version 0022 e dalla versione 1.0 sono cambiate alcune librerie aggiuntive di arduino.
Prova ad usare l’IDE 0022 se non ti servono funzioni dell’IDE 1.0.x
Forse ho avuto, almeno spero, una intuizione. su un programma, attraverso processing e seriale funziona le stringhe che ricevo da osc col WiFi sono le stesse che mi replica processing? Il WiFi comunica con arduino con il seriale? Quindi togliendo processing il wifi riceve e gira sulla seriale i dati giusto?
Speriamo che sia la volta buona.
Autore
Ciao Guglielmo,
non ho capito 🙁
Ok proverò a scaricare l’IDE 0022..
ho scaricato l’IDE 0022 ma compilando il tuo sketch compare il seguente errore:
In file included from sketch_aug0.cpp:2:
C:\Users\Guglielmo.Cocca\Desktop\arduino-0022\libraries\OSCClass/OSCClass.h:70:27: error: utility/types.h: No such file or directory
Autore
Ciao Guglielmo,
penso che la libreria che hai scaricato non sia completa o che l’installazione che ne hai eseguito non sia andata a buon fine.
Manca nella libreria la sottodirectory utility. Ho cercato parecchio ma sono tutte così.
Autore
Ciao Guglielmo,
cercando su google “arduino osc library” in cerca di aggiornamenti della libreria ho trovato come primo link questo:
http://playground.arduino.cc/Main/LibraryList
Nella pagina è presente la libreria OSCduino, che rimanda ad un sito in cui è descritto molto bene il suo funzionamento.
Non l’ho provata ma da una approfondita lettura del sito vedo che è compatibile con l’IDE 1.0 e successivi.
Inoltre è piena di esempi benfatti.
Salve Mauro,
sono uno studente alle prime armi con Arduino. Ho acquistato la wifi shield Rev.3 ART. CV11 (allego il link del prodotto in fondo al messaggio) e con essa vorrei realizzare un progetto che prevede l’acquisizione tramite una fotoresistenza del lampeggio del contatore e inviare i dati al pc in tempo reale (datalogger). Secondo te è fattibile?
La seconda domanda riguarda il router. E’ fattibile usare come router la web cube della 3?
Ti ringrazio anticipatamente per la tua disponibilità
…. ARDUINO-SHIELD-WiFi-Rev-3 …
Autore
Ciao Giorgio,
ti chiedo la cortesia di non inserire nei commenti link a rivenditori di materiale non ufficiali.
La wifi shield che segnali è quella ufficiale arduino, almeno dalle foto, per cui ciò che vuoi realizzare dovrebbe essere possibile anche se io in prima persona non ho mai provato a realizzarlo.
Alla seconda domanda non so rispondere non possedendo un router come quello che indichi, se è possibile avere un minimo di configurabilità su questo router come il port forwarding ed il dynamic dns penso sia possibile riuscire a ottenere quello che ti occorre.
Buongiorno Mauro,
Ho la necessità di sapere, prima di avventurarmi nel mio progetto e relativo studio delle singole parti, se è possibile comandare due motori passo passo tramite una app di android collegata ad Arduino con scheda bluetooth.
Se si! come affrontare lo studio e i relativi step.
grazie fin d’ora della tua disponibilità
Gian Maria
Autore
Ciao Gianmaria,
si è possibile ed anche in molteplici modi.
Io ti consiglio di studiare sia la parte relativa ai motori passo-passo con driver tipo la easydriver o simili, che semplificano lo sketch sia di studiare la comunicazione di tipo seriale, magari bluetooth, perché più semplice ed affidabile della wifi.
Ti consiglio l’uso di questa shield: http://www.lemontech.cc/it/lemontech-bluerelay-shield-per-arduino.html
Caro Mauro,
ti ringrazio della risposta data, ti spiego in poche parole quello che intendo fare.
recentemente nel mio condominio ci sono stati alcuni furti negli appartamenti con notevole semplicità e velocità.
in merito avevo pensato ad un catenaccio mosso da un motore passo passo governato tramite bluetooth e un’App di android; cosicché quando esco di casa, inserisco dall’esterno il catenaccio interno.
naturalmente il bluetooth deve essere configurato in modo da riconoscere oltre al mac address una password personale.
se ti viene in mente qualche suggerimento da darmi ti aspetto .
per il momento non mi resta che studiare.
Grazie e complimenti
Gian Maria
Autore
Ciao Gian Maria,
più di un motore, per il tuo progetto, potresti preferire un sistema con solenoide che funzioni tipo i vecchi blocca porte di una volta in cui un pistone mosso elettricamente, ed istantaneamente, si estende o si ritrae se gli fornisci energia o la interrompi.
Per controllare tali solenoidi puoi usare uno dei relay presenti sulla scheda che ti ho indicato.
Con l’altro relay potresti controllare un secondo sistema di chiusura, maggiore sicurezza, o accendere le luci al tuo rientro.
grazie per il consiglio,
avevo scartato questa possibilità perchè con il motore stepper posso trasformare la velocità in potenza con basso voltaggio, il tutto perchè in caso di mancanza di corrente possa intervenire una batteria ausiliare che credo non possa essere impiegata per un solenoide di cui mi parlavi. forse mi sbaglio.
inoltre c’è da considerare eventuali attriti nel momento degli innesti.
buona l’idea di poter accendere anche la luce.
grazie ancora
Gian Maria
Autore
Ciao Gianmaria,
non penso ad un solenoide che debba essere alimentato per mantenere la posizione, ma a qualcosa di elettromeccanico, che una volta posizionato resti tale fino al successivo invio di tensione.
In questo modo i consumi sono nettamente ridotti. Considera che anche il motore passo-passo o il servomotore devi alimentarli costantemente perchè mantengano la posizione e penso siano più soggetti a malfunzionamenti.
Grazie Mauro,
mi sto già acculturando con i tuoi corsi online e sto facendo una ricerca in internet per trovare dei blocca porta solenoidi. Finora ho trovato solo kit di 4 bloccaporta per auto con relativi telecomandi e centralina alimentata a 12 v. Al riguardo sto valutando la possibilità di usare quest’ultimi come soluzione finale.
Grazie ancora e spero di risentirti quando comincerò la compilazione del programma.
Autore
Ottimo Gian Maria,
il risultato finale deve soddisfarti.
In ogni caso se esistono dei kit con telecomando esisteranno anche i soli bloccaporta come ricambio per auto e facilmente reperibili.
Penso che una soluzione basata su cellulare ti eviti di portarti in giro un ulteriore telecomando.
Devo aggiornare il firmware della Arduino wifi shield. Mi sono procurato i file necessari ed eseguito tutti i passaggi descritti nel tuo tutorial solo che dopo l’invio del comando per l’aggiornamento l’esecuzione si blocca si blocca allo step 3:
“AtLibUsbDfu.dll not found”
Praticamente come se non leggesse la scheda.
In effetti dalla gestione dispositivi del pannello di controllo vedo un punto esclamativo sull’icona relativa.
Mi potresti dare una mano a risolvere il problema?
Grazie
Saluti
Autore
Ciao Andrea,
questa shield non mi risulta possa aggiornare il firmware.
Probabilmente tu possiedi la wifi shield originale arduino, mi aggiungi il commento nell’articolo che hai seguito così posso aiutarti.
Buonasera,
leggendo qualche pagina di questo interessantissimo sito mi son deciso a prendere lo starter kit ufficiale arduino! Siccome alla fine so gia’ dove andro’ a parare…. ho cominciato a informarmi su come collegare l’arduino al WiFi… Ma non ho avuto una piacevole sorpresa: davvero per collegare l’arduino al WiFi bisogna spendere la bellezza di 80€ ??? Perche’ i vari SHIELD di cui leggo in giro hanno quel prezzo!! Se fosse cosi’, a parte l’uso prettamente hobbistico/didattico, non vedrei molto spazio per un utilizzo concreto…
Autore
Ciao Mario,
di soluzioni WiFi ne esistono oggi molti tipi, con arduino e senza arduino, puoi leggere i miei ultimi articoli in merito.
Buonasera.
Per usare la libreria serve necessariamente la shield o vanno bene anche i moduli (come questo http://…../Modulo-ESP-01-ESP8266-WiFi-Transceiver )?
In questo caso a che pin deve essere collegato?
Grazie mille
Autore
Ciao Cristian,
in primo luogo ti chiedo di rispettare le regole del blog scritte in ogni articolo, inserire link a siti di aste e simili è vietato.
In ogni caso il modulo che hai indicato non c’entra nulla con questa libreria, ho scritto altri articoli che puoi leggere su questo modulo.
buonasera
sono profane di arduino ma ne ho sentito parlare bene e vorrei iniziare ad eseguire una applicazione,
vorrei fare un’applicazione usando il wifi per gestire l’apertura del cancello tramite applicazione su telefono android. sai darmi consigli? grazie in anticipo
Autore
Ciao Giuseppe,
non conosco il tuo livello attuale di competenze ma se, come scrivi, sei profano, inizierei con un progetto semplice e seguendo qualche corso, anche il mio corso on-line gratuito.
Ciao Mauro,
non riesco ad utilizzare la libreria con l’ide 1.6.12
Ci sono librerie aggiornate?
Grazie infinite.
Autore
Ciao Riccardo,
hai provato nella “Gestione Librerie” dell’IDE?
La libreria WiFI esiste in diverse forme adatte più o meno a ciascuna delle schede WiFi progettate dai diversi vendor.
Tu hai la medesima shield?
Ciao Mauro ho copiato il tuo codice nel mio ide arduino ho cambiato i valori per le impostazioni di rete che devo settare e quando carico il tutto su arduino mi da il seguente errore: ‘prog_char’ does not name a type
Ho provato a mettere const char ma non funzionava lo stesso. Come posso risolverlo? Grazie
Autore
Ciao Mario,
questa scheda è alquanto datata, la tua è la medesima?
Prova a chiedere al produttore una libreria aggiornata o usa un IDE con versione 1.0.5 o similare
Credo di no, la mia scheda si chiama esp13 shield. Ho provato a caricare su arduino un esempio che trovi neli esempi dell’ide di arduino e mi diceva tramite monitor seriale che la scheda no era presente. Cosa posso fare?
Autore
Ciao Mario,
devi usare codice, rilasciato dal produttore dell’Hw, adatto alla scheda che possiedi.
Purtroppo non puoi utilizzare librerie non adatte all’hw in tuo possesso.
Buon giorno Mauro,
volevo innanzi tutto farti i complimenti per la tua professionalità.
Mi presento: mi chiamo Antonio e da qualche tempo sto armeggiando con arduino mega R3 2560 e una wifi shield sempre acquistata da arduino.
Lo scopo del progetto sarebbe quello di connettere arduino, munito di shiled, al pc e trasferire messaggi midi che sono opportunamente creati lato arduino e grazie alla libreria AppleMidi.h spediti al pc.
Per farlo comunicare con il pc, è necessario (lato pc) un driver che crea una sessione midi virtuale. E’ tutto molto semplice in realtà, ma sono giorni (e notti) che perdo la testa perché non appeno creo la la sessione midi, dopo che la shield si è correttamente collegata al wifi di casa, quando cerco di aggiungere l’arduino con l’ip e la porta forniti dal DHCP, mi viene sempre sbattuta la porta in faccia dicendo che il dispositivo non ha risposto alla richiesta.
Ho provato a cambiare il codice, sostituendolo direttamente con uno degli esempi ufficiali inclusi nella libreria Wifi.h e che fa all’incirca quello che voglio ma il risultato è lo stesso. Ho provato infine a lanciare lo stesso esempio, modificato opportunamente per compatibilità, su una Huzzah esp8266 e funziona tutto perfettamente. Il mio problema è che devo utilizzare per forza la prima soluzione dovendo leggere up po di valori in input dai sensori e ho bisogno almeno di 2 input analogici e 6 digitali e la Huzzah non li ha.
Hai una vaga idea di quale potrebbe essere il problema? io ho davvero esaurito le mie soluzioni.
Grazie mille
Autore
Ciao Antonio,
il quesito è interessante ed ho voluto, eccezionalmente, approfondire quello che scrivi.
Non ho poruto provare la libreria, ache perché non la conosco e non ho modo di fare dei test con una architettura simile alla tua.
Ho trovato sul gitHub : The goal of this library is to enable an Arduino (with an Ethernet shield) or ESP8266 to particpate in an AppleMIDI session.
che mi fa dedurre l’impossibilità ad usare questa libreria con WiFi differenti dalla ESP8266 il che spiegherebbe anche perché con Huzzah funzioni.
Ciao Mauro grazie del tutorial!
LA mia domanda è se utilizzo l ultima versione di arduino uno Wi-Fi posso utilizzare il codice del tuo tutorial!
Autore
Ciao Simone,
devi verificare che non ci siano differenze di connessione tra la parte WiFi integrata e quella in shield e che le librerie siano compatibili.
[…] la GPRS shield. Per connettere il tuo progetto alla grande rete hai già letto come utilizzare la WiFi shield o Ethernet Shield ma quando non hai la possibilità di collegarti ad una rete già esistente puoi […]
[…] la GPRS shield. Per connettere il tuo progetto alla grande rete hai già letto come utilizzare la WiFi shield o Ethernet […]