Relais I2C à 8 canaux via contrôle WLAN (WiFi) avec serveur Web ESP8266 sur le réseau – Serveur d’impression
#comprendre
#comprendre
#comprendre
#comprendre
#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: //
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: //
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