Bouilloire WiFi à la maison, ou comment rendre une bouilloire ordinaire vraiment intelligente

image

Préface



Si vous lisez mon article précédent ( Running line on Arduino ), vous savez probablement déjà que nous avons la possibilité de faire des projets de cours sur le matériel dans notre université. Et moi, inspiré par mon travail précédent, j'ai décidé d'essayer à nouveau de faire quelque chose de mes propres mains. Ce n'est que maintenant que le sujet aurait dû être plus sérieux. Au fait, j'ai commencé à penser à quoi faire pendant les vacances d'hiver, c'est-à-dire avant le semestre. Je voulais faire quelque chose d'intéressant et d'utile à la fois.


Rechercher une idée



Une fois, dans une paire sur les principes fondamentaux de la protection de l'information, nous avions un sujet lié à la propriété intellectuelle et aux brevets. L'enseignant nous a donné la tâche de délivrer un brevet pour tout appareil selon toutes les exigences et a cité une bouilloire wifi comme exemple.
Il a dit - et oublié. Et tout le monde a oublié, mais dans ma tête ce sujet est resté. Et quand est venu le temps de réfléchir à ce qu'il fallait faire comme cours au cours du prochain semestre, je me suis souvenu de cette théière.

La première chose que j'ai décidé de voir, c'est ce qui a déjà été fait. Et quelle a été ma surprise quand j'ai vu qu'il n'y avait que trois modèles de mannequins avec prise en charge du contrôle WiFi, et que deux d'entre eux appartiennent à la même société. Il s'agissait de Smarter iKettle 1.0 et 2.0 et du Russian Polaris PWK 1792CGL.

image

Il est intéressant de noter que presque toutes les maisons ont des bouilloires électriques ordinaires, et il y en a si peu. En comparant les fonctionnalités offertes par iKettle et Polaris, j'ai fait une liste des plus nécessaires. Voici ce qui s'est passé:

  1. allumer / éteindre à partir d'un smartphone;
  2. régler n'importe quelle température pour chauffer l'eau;
  3. la capacité de connaître la température actuelle;
  4. suivre le volume actuel d'eau dans la bouilloire;
  5. avertissement et protection contre la mise en marche avec un petit volume d'eau;
  6. réglage de l'heure de réveil automatique;
  7. avis de préparation;


Cela semble réel, il est temps de se mettre au travail.

Rechercher les composants requis



Puisqu'il n'était pas possible de fabriquer une bouilloire complètement nouvelle, il a été décidé de modifier une bouilloire électrique ordinaire prête à l'emploi. Juste à la maison était une bouilloire orpheline avec un interrupteur cassé.

Donc, la fondation est déjà là, pensai-je.

Maintenant, je devais commencer à chercher des composants pour le matériel. Comme il y avait déjà peu d'expérience de travail avec Arduino, j'ai décidé de tout implémenter dessus. De plus, Arduin elle-même et ses modules sont peu coûteux.

Comme je devais insérer toute la partie du contrôle de la bouilloire à l'intérieur de la bouilloire, le choix s'est porté sur l'Arduino Nano. Il est petit et possède une interface pour connecter un câble, contrairement au Pro Mini, qui doit être flashé via UART.

image

Le composant principal d'une bouilloire wifi est, bien sûr, un module wifi. La recherche sur Internet de quelque chose de abordable et de nombreux didacticiels a abouti à l'ESP8266. À savoir, sur la version 01. J'ai regardé que c'était bon marché (environ 2 $) et il y avait beaucoup d'instructions pour se connecter. Arrêté dessus. Quant au module lui-même, la phrase ici est bonne: bon marché et joyeuse. Mais plus à ce sujet plus tard.

image

Pour contrôler la température, nous avions besoin d'une sorte de capteur de température étanche. J'ai trouvé une thermistance NTC étanche sur aliexpress, qui peut résister à des températures de plus de 100 degrés. J'ai également trouvé un exemple de travail avec lui, alors j'ai décidé rapidement.

image

Il était nécessaire de décider comment allumer la bouilloire à un moment donné, bien sûr, vous pouvez faire l'horloge du programme sur Arduino et allumer la bouilloire lorsque l'heure coïncide, mais cela fonctionnerait de manière instable, et si le programme était réinitialisé accidentellement, tout irait mal. Par conséquent, une horloge en temps réel est venue à la rescousse ici. À savoir DS1307. Ils ont une alimentation indépendante (à partir d'une batterie 3 V), et il y avait également une puce de mémoire EEPROM 32K bits sur le module sur lequel je m'arrêtais, que j'ai utilisé pour économiser à temps.

image

Oh oui, puisque la bouilloire devrait maintenant s'allumer par programmation, elle avait également besoin d'un relais à 1 canal.

image

Quant au capteur de niveau de liquide, il devait être fait manuellement. Détails ci-dessous.

Du reste, plusieurs résistances de dénominations différentes étaient encore nécessaires, une planche à pain pour les tests, une carte de circuit imprimé pour l'installation réelle, le câblage, un fer à souder avec flux et soudure, et la part du lion de la patience.

Début du développement



Étant donné que le projet est une bouilloire wifi, la première chose que je voulais et dont j'avais besoin pour gérer le module wifi. Dès que le colis est arrivé, je l'ai immédiatement déballé et j'ai commencé à me connecter.

J'ai trouvé un tas d'exemples sur Internet. Tout est comme il se doit, régulateur de tension 3,3 V, diviseurs de tension pour RX et TX. J'ai tout rassemblé par exemple, je le connecte - ça n'a pas volé! Un tas de texte a été affiché sur le moniteur du port COM, car il s'est avéré que le module était constamment réinitialisé. Il ne répond pas aux commandes AT envoyées. L'auteur de l'article fonctionne, moi non.

Quelle est la question? J'ai essayé de rechercher d'autres schémas de connexion, et ainsi de suite, etc., mais le module est toujours réinitialisé ou n'affiche rien. Et partout, il est écrit en police rouge: "Ne vous appliquez pas au module 5 V, sinon il échouera." Alors la recherche de solutions a parfois duré le soir, je pensais déjà à acheter un autre module, mais j'ai décidé de vérifier la tension avec un multimètre.

Il s'est avéré que lorsque le module est connecté à 3,3 V, la tension chute en dessous de 3,2 V. Il semble que, eh bien, ça tombe et tombe. J'ai décidé de l'alimenter à partir d'une autre source d'alimentation et il s'est avéré que le module fonctionne normalement avec une tension supérieure à 3,2 V, et en dessous, cela ne suffit pas et il est constamment réinitialisé.

En conséquence, à mes risques et périls, je l'ai connecté à 5 V et tout a fonctionné et fonctionne toujours bien.



Il n'y avait pas de tels problèmes avec d'autres composants.

Après avoir découvert le wifi, j'ai dû décider quoi faire avec le capteur de niveau de liquide. Googler, j'ai trouvé un article dans lequel l'auteur a fait un capteur d'humidité du sol. Lorsque le sol sèche, la résistance du capteur augmente et la tension au port analogique d'Arduino augmente. En détectant un changement de tension, l'apparition d'un liquide peut être détectée. Au lieu de deux contacts, 6 ont été utilisés pour déterminer le niveau de liquide dans mon projet. L'un d'eux est connecté à la sortie 5 V et le reste aux entrées analogiques et aux résistances 10 kΩ à GND.

Voici des photos des tests.




Voici quel capteur de niveau est le résultat.



La prochaine chose que j'ai testée est l'horloge en temps réel. Mais travailler avec eux est fondamentalement simple. Pour régler l'heure et obtenir des informations à ce sujet, j'ai utilisé exclusivement des exemples fournis avec la bibliothèque pour travailler avec DS1307.

En conséquence, lorsque tout a été assemblé sur une planche à pain, nous avons obtenu un tel croisement entre les fils et les modules. Au fait, sur ces photos, il y a un autre capteur de température.



Pour commencer



Maintenant, tout cela devait être soudé sur la carte de circuit imprimé. Il n'y a rien de spécial à commenter, donc seulement une photo. Comme vous pouvez le voir, un autre bouton a été ajouté pour que vous puissiez allumer la bouilloire non seulement à partir d'un smartphone, mais aussi de la manière habituelle.





Ensuite, vous devez tout placer à l'intérieur de la bouilloire.






Un insert en amiante a été ajouté pour protéger tous les intérieurs de la surchauffe.



Certes, le boîtier devait être légèrement surélevé avec un insert en plastique supplémentaire.




Passez maintenant à la partie mobile.



Quant à l'application, puisqu'elle a été développée sous Android OS, il était initialement prévu d'utiliser Android Studio. Mais pour étudier les nouvelles technologies, il a été décidé d'utiliser une plate-forme prête à l'emploi pour développer des programmes dans le domaine de l'Internet des objets. En conséquence, le choix s'est porté sur le produit Evothings - Evothings Studio.

image

Voici ses principaux avantages:

- Un grand nombre d'exemples standard sur le travail avec différents modules (Wifi, Bluetooth);
- développement d'applications utilisant JS, HTML, CSS, qui vous permet d'écrire un code qui fonctionnera également sur Android et iOS, c'est-à-dire la liaison à une seule plate-forme disparaît;
- facilité de test de l'application: une application est installée sur le smartphone pour prévisualiser son développement, et tous les messages de test et les messages d'erreur sont affichés dans le programme sur l'ordinateur;
- Une grande quantité d'informations sur Internet sur le développement en utilisant JS, HTML, CSS;

Dans ce studio Evothings, il y avait un exemple d'allumer la LED en transmettant une demande d'allumage via l'ESP8266. J'ai décidé de prendre cet exemple comme base, car il y avait la chose la plus précieuse pour moi - la communication avec le module WiFi via la prise tcp. Et de la même manière que la demande d'allumage de la LED a été transmise, j'ai fait une demande pour mettre à jour les capteurs de la bouilloire, pour régler l'heure de mise en marche, régler la température, etc.

Ensuite, j'ai foiré les notifications de disponibilité et une petite quantité d'eau, l'avantage est que tout à notre époque est facilement googlé. Le résultat est une telle application (une bonne chose est de faire l'interface d'application en utilisant CSS):







Une brève description de l'interaction du smartphone et de la bouilloire



La communication entre le serveur et le client s'effectue via le module WiFi. Lorsque vous allumez le module de contrôle de la bouilloire, le module WiFi commence à distribuer un réseau appelé artKettle. Cela se fait à l'aide des commandes AT côté serveur. Ainsi, par exemple, pour mettre le module en mode point d'accès, il doit envoyer la commande AT + CWMODE = 2. Ensuite, à l'aide de ces commandes, vous devez attribuer des paramètres réseau, autoriser la connexion de plusieurs appareils et obtenir l'adresse IP du wifi lui-même.

Du côté client, la connexion se fait via un port spécifique et par l'adresse IP du module wifi à l'aide de chrome.tcp.socket.

Après avoir connecté le client au serveur, vous pouvez contrôler la bouilloire depuis votre smartphone. Prenons l'exemple de l'allumage de la bouilloire.

Lorsque vous cliquez sur le bouton d'alimentation dans l'application artKettle, la fonction correspondante de l'inclusion de app.kettleOn () est appelée. A l'intérieur de cette fonction, deux lignes sont transférées côté serveur:

app.sendString('H');
app.sendString('U');


Vient ensuite le travail déjà du côté d'Arduino. Après que la première ligne arrive avec le caractère «H», le code suivant est exécuté:
if(message.indexOf("H") >= 0 && waterDetected())  {
      digitalWrite(POWER_PIN, LOW); 
      IS_ON = true;
      Serial.println("ON");
      sendCIPData(0, "ON"); 
}


Tout d'abord, il vérifie s'il y a de l'eau dans la bouilloire en appelant la méthode waterDetected (). Envisagez l'option lorsque de l'eau est présente dans la bouilloire.

Un niveau de basse tension est appliqué à la broche de commande du relais, ce qui correspond à son inclusion, c'est-à-dire le circuit de puissance se ferme:
digitalWrite(POWER_PIN, LOW); 


Ensuite, l'indicateur est défini pour indiquer que la bouilloire est allumée et un message sur la sortie vers le moniteur du port série s'affiche.

Après cela, une fonction est appelée qui transmet un message de réponse au côté client que l'inclusion entière a réussi:

sendCIPData(0, "ON");


Côté client, après avoir vérifié le message entrant, le bouton d'alimentation est réglé sur l'état On:
if (buf.substr(0, 2) == "ON") {
	app.setButtonOn();
}


Après cela, le message texte est traité avec le caractère «U» envoyé du client au serveur. Ici, d'une manière similaire à l'inclusion, les informations sur la température actuelle et le volume de liquide dans la bouilloire sont mises à jour.

Ainsi, une communication bidirectionnelle entre le client et le serveur est organisée, de sorte que l'un d'eux connaît l'état de l'autre à un moment donné.

Conclusion



À la suite du projet de cours, une modification a été développée pour une bouilloire électrique conventionnelle, qui permet de la contrôler à partir d'un smartphone via wifi. Maintenant, cette théière peut être attribuée aux représentants de l'Internet des objets. Nous avons réussi à implémenter pleinement toutes les fonctions, alors maintenant cette bouilloire a les caractéristiques suivantes:

- marche / arrêt à partir d'un smartphone;
- régler n'importe quelle température pour chauffer l'eau;
- la possibilité de connaître la température actuelle;
- suivre le volume actuel d'eau dans la bouilloire;
- avertissement et protection contre la mise en marche avec un petit volume d'eau;
- régler l'heure d'activation;
- notification de disponibilité;

Les avantages du projet mis en œuvre sont l'accessibilité de la base de l'élément, car tout ce dont vous avez besoin se trouve dans les magasins de composants électroniques, l'extensibilité du projet. Étant donné que la bouilloire possède tous les capteurs nécessaires installés, elle peut être modifiée par programme et pas pire que les analogues. Étant donné la polyvalence du module wifi utilisé, vous pouvez le connecter à Internet et organiser le contrôle de la bouilloire, n'importe où dans le monde, et en utilisant le service en ligne pour le traitement des messages SMS, vous pouvez organiser l'inclusion par SMS. C'est-à-dire le projet est encore très extensible, il existe des opportunités pour cela, mais elles n'ont pas été mises en œuvre, car elles ne faisaient pas partie des objectifs du projet en cours d'élaboration.

Bien sûr, le projet présente des inconvénients. Le premier est le fonctionnement instable du module Wifi. Un module perd parfois son réseau, commence à réinitialiser les paramètres ou ne traite tout simplement pas les signaux entrants. De plus, ce sont des problèmes populaires parmi les utilisateurs de ce module. Le deuxième inconvénient est l'absence d'arrêt mécanique de la bouilloire. L'arrêt est implémenté dans le logiciel; lorsque le point d'ébullition est atteint, le circuit se brise à l'aide d'un relais. Si le programme plante soudainement, la bouilloire peut ne pas s'éteindre. Le troisième inconvénient est le problème de la surveillance de la température de chauffage. Ainsi, par exemple, si vous éteignez la bouilloire à une température de 60 degrés, le chauffage dix continuera à dégager de la chaleur, et après un certain temps, la température de l'eau sera déjà d'environ 70 degrés. Mais cela est corrigé en faisant des ajustements au programme.

Source: https://habr.com/ru/post/fr393785/


All Articles