Serveur d'impression

Relais I2C à 8 canaux via contrôle WLAN (WiFi) avec serveur Web ESP8266 sur le réseau – Serveur d’impression

Le 3 mai 2019 - 6 minutes de lecture

#comprendre

#comprendre

#comprendre

#comprendre // bibliothèque I2C

#include "Index.h" // contient le code HTML de la page Web d'index

// const char indexHtml[5423]= ;

carboniser ssid[[[[32] = "1234 0";

carboniser phrase secrète[[[[64] = "567890 0";

carboniser sortie = 0; // états d'action

carboniser IC = 32; // Adresse du CI I2C

int je. Port;

ESP8266WebServer *serveur; // pointeur sur le serveur de classes d'objets

EspClass esp; // object esp à réinitialiser

vide installer() // Exécuter une fois au démarrage

Câble,commencer(2. 0); // Initialisation du bus I2C GPIO2-Data GPIO0-Clock

Câble,Réglage de l'horloge(1000); // Freqenz I2C bus

// état initial 1111 11111 (relais désactivé)

Câble,commencer la transmission(IC); // adresse IC

Câble,écrire(~sortie); // Envoi d'octets les données sont inverties

Câble,transmission finale(); // condition d'arrêt I2C

En série,commencer(115200);

En série,imprimer(" R n") ;

EEPROM,commencer(66); // initialise EEPROM avec 64 octets

marque de saut:

// lire Eeeprom

pour (je = 0; je < 32; je++) ssid[[[[je] = EEPROM,lis(je);

pour (je = 32; je < 64; je++) phrase secrète[[[[je 32] = EEPROM,lis(je);

Port = EEPROM,lis(64);

Port + = EEPROM,lis(65) * 256;

// si l'EEPROM est vide

si (ssid[[[[0] == 255)

En série,imprimer("SSID non configuré r n") ;

En série,imprimer(Continuer avec "Entrée " r n ") ;

tandis que (!En série,disponible())rendement(); // attend que le feuilleton arrive

InputEEPR(); // Sous-programme de configuration du WiFi

aller à marque de saut;

Wifi,Mode(WIFI_STA); // mode station

Wifi,commencer(ssid. phrase secrète);

tandis que (Wifi,statut() ! = WL_CONNECTED) // attente de la connexion

retard(500);

En série,impression(".");

si (En série,disponible()) InputEEPR(); // sortie si quelque chose en série a été reçu

// puis entrez le nom et le mot de passe wlan

serveur = Nouveau ESP8266WebServer(Port); // Crée l'objet serveur et passe le pointeur

En série,imprimer("");

En série,impression("Attaché à ");

En série,imprimer(ssid);

En série,impression("Adresse IP:");

En série,imprimer(Wifi,LocalIP());

// connecte les événements

serveur->sur("/". Ereignis_Index);

serveur->sur("/Schalte.php". Ereignis_Befehl);

serveur->commencer(); // démarre le serveur

En série,impression("HTTP Server a démarré sur le port:");

En série,imprimer(Port);

vide Ereignis_Befehl() // exécuter quand "http: ///schalte.php "a été appelé

chaîne relaisNr = serveur->mal("relais"); // reçoit le relais no

int z = relaisNr,toInt(); // convertit une chaîne en entier

z; // 1 abzien, car les bits dans l'octet proviennent de 0 zerzaelt

chaîne Etat = serveur->mal("Commutateur");

si (Etat == "1") Bitset(sortie. z); // lors de l'activation, définissez le bit

si (Etat == "0") BITCLEAR(sortie. z); // Si vous voulez désactiver, réinitialisez le bit

carboniser k = 0; // Variable temporaire pour l'opération XOR

si (Etat == "2") sortie ^ = Bitset(k. z); // Commute le relais habituel avec XOR

Câble,commencer la transmission(IC); // adresse IC I2C

Câble,écrire(~sortie); // inverser l'octet, avec "0" les relais sont activés

Câble,transmission finale(); // condition d'arrêt I2C

// Serial.println (String (int (sortie)));

serveur->transmission(200. "Texte simple". chaîne(int(sortie)) ); // envoyer la réponse au navigateur internet

vide Ereignis_Index() // exécuter quand "http: /// "a été appelé

serveur->transmission(200. "Texte / html". index html); // HTML Websie est dans "Index.h"

vide boucle()

si (En série,disponible()) InputEEPR(); // si la série reçoit quelque chose

serveur->gérer le client(); // traiter les événements du serveur

vide InputEEPR() // L'accès WLAN et le port sont configurés ici

chaîne texte = ""; // variable pour le numéro de port sous forme de texte

carboniser inser; // variable pour RS232 caractères reçus

inser = En série,lis();

si (inser ! = 13) revenir; // si PAS "entrer" puis quitte le sous-programme

boucle:

En série,imprimer("");

En série,imprimer("S'il vous plaît changer pour changer");

En série,impression("1er SSID:");

En série,imprimer(ssid);

En série,impression("2ème mot de passe:");

En série,imprimer(phrase secrète);

En série,impression("3. Port du serveur:");

En série,imprimer(Port);

En série,imprimer("4ème sortie");

En série,imprimer("5. Réinitialiser");

En série,imprimer("");

tandis que (!En série,disponible()) rendement(); // attend que quelque chose soit reçu

inser = En série,lis(); // recevoir la sélection

commutateur (inser) // exécuter comme approprié

Cas & # 39; 1 & # 39;:

En série,imprimer("Entrée SSID:");

pour (je = 0; je < 32; je++)

tandis que (!En série,disponible()) rendement(); // attend que quelque chose soit reçu

inser = En série,lis();

En série,écrire(inser);

si (inser == & # 39; R & # 39;) // Quand la ligne est complétée

EEPROM,écrire(je. & # 39; 0 & # 39;); // définit la fin de chaîne

Pause; // laisse la boucle

autre EEPROM,écrire(je. inser); // a reçu le caractère suivant

En série,imprimer(" R nOK");

EEPROM,commettre(); // Décrivez la mémoire EEPROM en termes de technologie

pour (je = 0; je < 32; je++) ssid[[[[je] = EEPROM,lis(je); // charge les nouvelles données dans les variables

Pause;

Cas & # 39; 2 & # 39;:

En série,imprimer("Saisir mot de passe:");

pour (je = 32; je < 64; je++)

tandis que (!En série,disponible()) rendement();

inser = En série,lis();

En série,écrire(inser);

si (inser == & # 39; R & # 39;)

EEPROM,écrire(je. & # 39; 0 & # 39;);

Pause;

autre EEPROM,écrire(je. inser);

En série,imprimer(" R nOK");

EEPROM,commettre();

pour (je = 32; je < 64; je++) phrase secrète[[[[je 32] = EEPROM,lis(je);

Pause;

Cas & # 39; 3 & # 39;:

En série,imprimer("Port d'entrée:");

pour (je = 0; je < 5; je++)

tandis que (!En série,disponible()) rendement(); // attend que quelque chose soit reçu

inser = En série,lis();

En série,écrire(inser);

si (inser == & # 39; R & # 39;) Pause; // Quand la ligne est terminée, quitte pour la boucle

autre texte + = (carboniser)inser;

texte + = & # 39; 0 & # 39;; // définit la fin de chaîne

En série,imprimer(" R nOK");

Port = texte,toInt(); // Crée un entier à partir de texte

carboniser* p;

p = réinterpréter_cast<carboniser*>(&Port); // crée un tableau d'octets à partir d'un entier

EEPROM,écrire(64. p[[[[0]); // et sauvegarder dans l'EEPROM

EEPROM,écrire(65. p[[[[1]);

EEPROM,commettre();

Port = EEPROM,lis(64); // charge les nouvelles données dans les variables

Port + = EEPROM,lis(65) * 256;

Pause;

Cas & # 39; 4 & # 39;:

Wifi,commencer(ssid. phrase secrète);

revenir; // sortie du sous-programme InputEEPR ()

Pause;

Cas & # 39; 5 & # 39;:

esp,réinitialiser();

Pause;

défaut:

Pause;

aller à boucle; // Après être entré, retournez au menu

Commentaires

Laisser un commentaire

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