Serveur d'impression

Arduino – Serveur WiFi – Serveur d’impression

Le 7 octobre 2019 - 6 minutes de lecture

Wifi Serveur Web

Dans cet exemple, vous utiliserez votre Wifi Shield et votre carte Arduino ou Genuino pour créer un serveur Web simple. En utilisant le Wifi bibliothèque, votre appareil pourra répondre à une requête HTTP avec votre Wifi bouclier. Après avoir ouvert un navigateur et navigué vers votre Wifi L'adresse IP du bouclier, votre conseil répondra avec juste assez de HTML pour qu'un navigateur affiche les valeurs d'entrée des six broches analogiques.

Cet exemple est écrit pour un réseau utilisant le cryptage WPA. Pour WEP ou WPA, modifiez l'appel Wifi.begin () en conséquence.

Matériel requis

  • Arduino Wifi Bouclier
  • Carte Arduino ou Genuino compatible avec le bouclier
  • (en option) Six capteurs analogiques connectés aux broches analogiques 0-5

Circuit

le Wifi Le bouclier utilise les broches 10, 11, 12 et 13 pour la connexion SPI au HDG104 module. La broche numérique 4 est utilisée pour contrôler la broche de sélection esclave sur la carte SD.

Vous devriez avoir accès à un réseau sans fil 802.11b / g qui se connecte à Internet pour cet exemple. Vous devrez modifier les paramètres réseau dans l'esquisse pour qu'ils correspondent au SSID de votre réseau.

Pour les réseaux utilisant WPA / WPA2 Le cryptage personnel, vous avez besoin du SSID et du mot de passe. Le bouclier ne se connectera pas aux réseaux utilisant WPA2 Cryptage d'entreprise.

Les mots de passe réseau WEP sont des chaînes hexadécimales appelées clés. Un réseau WEP peut avoir 4 clés différentes; une valeur "Index clé" est attribuée à chaque clé. Pour les réseaux cryptés WEP, vous avez besoin du SSID, de la clé et du numéro de clé.

image développée en utilisant Fritzing. Pour plus d'exemples de circuits, voir la page du projet Fritzing

Dans l’image ci-dessus, la carte Arduino ou Genuino serait empilée sous la Wifi bouclier.

Attention

Cet exemple ne nécessite pas de carte SD. Si une carte SD est insérée mais non utilisée, il est possible que le dessin se bloque, car la broche 4 est utilisée comme SS (actif bas) du SD et, lorsqu'elle n'est pas utilisée, configurée par défaut comme INPUT. Deux solutions possibles:

  • retirez la carte SD;
  • ajoute ces lignes de code dans le setup ()

pinMode(4, SORTIE);
digitalWrite(4, HAUTE);

Code

/ *
Serveur Web WiFi

Un serveur Web simple qui affiche la valeur des broches d'entrée analogiques.
en utilisant un bouclier WiFi.

Cet exemple est écrit pour un réseau utilisant le cryptage WPA. Pour
WEP ou WPA, modifiez l’appel Wifi.begin () en conséquence.

Circuit:
* Bouclier WiFi attaché
* Entrées analogiques reliées aux broches A0 à A5 (en option)

créé le 13 juillet 2010
par dlf (Metodo2 srl)
modifié le 31 mai 2012
par Tom Igoe

* /

#comprendre
#comprendre

carboniser ssid[[[[] = "votre réseau"; // votre SSID de réseau (nom)
carboniser passer[[[[] = "secretPassword"; // votre mot de passe réseau
int keyIndex = 0; // votre numéro d'index de clé de réseau (nécessaire uniquement pour WEP)

int statut = WL_IDLE_STATUS;

Serveur WiFiServer(80);

vide installer()
// Initialise le port série et attend que le port s'ouvre:
En série.commencer(9600);
tandis que (!En série)
; // attend que le port série se connecte. Nécessaire pour le port USB natif uniquement

// vérifie la présence du bouclier:
si (Wifi.statut() == WL_NO_SHIELD)
En série.imprimer("Bouclier WiFi non présent");
// ne continue pas:
tandis que (vrai);

String fv = Wifi.version du firmware();
si (fv ! = "1.1.0")
En série.imprimer("Veuillez mettre à jour le firmware");

// tentative de connexion au réseau Wifi:
tandis que (statut ! = WL_CONNECTED)
En série.impression("Tentative de connexion au SSID:");
En série.imprimer(ssid);
// Connexion au réseau WPA / WPA2. Modifiez cette ligne si vous utilisez un réseau ouvert ou WEP:
statut = Wifi.commencer(ssid, passer);

// attend 10 secondes pour la connexion:
retard(10000);

serveur.commencer();
// vous êtes connecté maintenant, alors imprimez le statut:
printWifiStatus();

vide boucle() {
// écoute les clients entrants
Client WiFiClient = serveur.disponible();
si (client) {
En série.imprimer("Nouvelle cliente");
// une demande http se termine par une ligne vide
bool currentLineIsBlank = vrai;
tandis que (client.lié())
si (client.disponible())
carboniser c = client.lis();
En série.écrire(c);
// si vous êtes arrivé au bout de la ligne (reçu une nouvelle ligne
// caractère) et la ligne est vide, la requête http est terminée,
// afin que vous puissiez envoyer une réponse
si (c == ' n' && currentLineIsBlank)
// envoie un en-tête de réponse http standard
client.imprimer("HTTP / 1.1 200 OK");
client.imprimer("Content-Type: text / html");
client.imprimer("Connexion: proche"); // la connexion sera fermée après l'achèvement de la réponse
client.imprimer("Actualiser: 5"); // actualise la page automatiquement toutes les 5 secondes
client.imprimer();
client.imprimer("");
client.imprimer("");
// affiche la valeur de chaque broche d'entrée analogique
pour (int canal analogique = 0; canal analogique < 6; canal analogique++)
int lecture de capteur = analogiqueRead(canal analogique);
client.impression("entrée analogique");
client.impression(canal analogique);
client.impression(" est ");
client.impression(lecture de capteur);
client.imprimer("
"
);

client.imprimer("");
Pause;

si (c == ' n')
// tu commences une nouvelle ligne
currentLineIsBlank = vrai;
autre si (c ! = ' r')
// vous avez un personnage sur la ligne en cours
currentLineIsBlank = faux;



// donne le temps au navigateur Web pour recevoir les données
retard(1);

// ferme la connexion:
client.Arrêtez();
En série.imprimer("client déconnecté");
}
}

vide printWifiStatus()
// affiche le SSID du réseau auquel vous êtes connecté:
En série.impression("SSID:");
En série.imprimer(Wifi.SSID());

// affiche l'adresse IP de votre bouclier WiFi:
IPAddress ip = Wifi.localIP();
En série.impression("Adresse IP: ");
En série.imprimer(ip);

// affiche la force du signal reçu:
longue rssi = Wifi.RSSI();
En série.impression("force du signal (RSSI):");
En série.impression(rssi);
En série.imprimer("dBm");

Voir également:

Dernière révision 2018/08/23 par SM

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.