Table des matières:
- Étape 1: Pièces nécessaires
- Étape 2: Comment ça marche
- Étape 3: configuration du logiciel
- Étape 4: Configurer la carte Micro SD
- Étape 5: Conception des schémas et configuration du PCB
- Étape 6: Soudez-le
- Étape 7: L'enceinte
- Étape 8: Accès à l'interface utilisateur Web
- Étape 9: Réflexions finales
Vidéo: Assistant personnel : 9 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Dans ce instructable, je vais vous montrer comment vous pouvez utiliser la puissance de l'ESP8266, la créativité dans la conception et la programmation de logiciels, pour faire quelque chose de cool et éducatif.
Je l'ai nommé Assistant personnel, car il est au format de poche, vous parle et peut vous donner des informations utiles et (bien sûr) pas utiles (mais toujours intéressantes) sur la météo, l'heure et la date, les messages Gmail, la naissance vivante et taux de mortalité et etc.
J'ai essayé de garder le design simple. L'appareil dispose de deux interfaces utilisateur. Un bouton-poussoir physique et une application Web, auxquels l'utilisateur peut accéder à l'aide d'un navigateur Web et modifier les paramètres et la configuration de l'appareil.
Comment ça marche ? Les principaux composants de ce projet sont un microcontrôleur et un module de lecteur de musique. Notre microcontrôleur (NodeMCU) utilise la technologie WiFi pour se connecter à un point d'accès avec connexion Internet; afin qu'il puisse obtenir les données requises, les traiter et indiquer au lecteur de musique (DFPlayer Mini) quand quel fichier MP3 doit être lu.
Pour l'instant, c'est tout ce que vous devez savoir. Je vous donnerai des informations plus détaillées dans les prochaines étapes, alors ne vous inquiétez pas.
Étape 1: Pièces nécessaires
- NodeMCU ESP-12E (Interface USB vers série CP2102)
- DFPlayer Mini
- Bouton-poussoir momentané SPST
- Haut-parleur 8 ohms 2 watts
- Carte Micro SD (vous aurez besoin de quelques kilo-octets, donc la capacité n'a pas d'importance)
-
Écrous et boulons
- Écrous M3 (x6)
- Boulons M3 - 23 mm (x4)
- Boulons M3 - 15 mm (x2)
- 1N4148 Diode de signalisation (x1)
-
Résistances
- Résistance 1K (x1)
- Résistance 10K (x2)
Autres parties:
- PCB (vous pouvez commander un prototype en ligne ou visiter un magasin local)
-
Feuille acrylique découpée au laser
- Feuille transparente de 2 mm d'épaisseur
- Feuilles de 2,8 mm d'épaisseur deux couleurs différentes (orange et vert, rouge et vert, c'est à vous et les couleurs n'ont pas d'importance)
- Tout chargeur micro USB 5 volts (au moins) 1 ampère (pour alimenter l'appareil)
Étape 2: Comment ça marche
D'accord, je veux vous donner des informations plus détaillées sur le fonctionnement du logiciel.
Le logiciel se compose de certains services. Chaque service a ses propres modules. (Vous pouvez considérer un service comme une classe et ses modules comme ses méthodes). Chaque module, peut être considéré comme un objet exécutable. Ainsi, notre logiciel se compose de quelques objets exécutables.
Nous avons ici quelques services et sous-services ou leurs modules:
-
Gmail
Messages non lus
-
Temps
- Température actuelle
- État d'aujourd'hui
- Aujourd'hui Bas / Haut
- Condition de demain
- Demain Bas / Haut
- Prévisions de précipitations
- Lever du soleil
-
Temps
- Heure actuelle
- Date actuelle
-
Naissance et mort
- Naissance mondiale
- Mort du monde
Il y a une file d'attente circulaire qui contient des modules. Nous l'appelons File d'attente d'opération. J'ai dit, chaque module est un objet exécutable. Ainsi, lorsque vous appuyez sur le bouton poussoir de l'appareil, celui-ci examine la file d'attente des opérations et exécute le module (ou objet) suivant.
Vous pouvez modifier les membres de la file d'attente des opérations dans l'interface utilisateur Web que j'expliquerai plus tard. Pour l'instant, je vais vous donner un exemple. Considérez la file d'attente des opérations en cours comme suit:
FILE D'ATTENTE (Messages non lus | Prévision des précipitations | Heure actuelle)
Vous appuyez sur le bouton poussoir, les messages non lus doivent être exécutés.
FILE D'ATTENTE (Messages non lus | Prévisions de précipitations | Heure actuelle)
Ainsi, l'appareil utilisera les données qu'il a collectées (ici, le nombre de vos messages non lus récupérés dans le flux de l'API google mail) pour vous parler. Mais comment? Ici, NodeMCU dira au module MP3 quand il doit jouer quel morceau MP3 pour faire une phrase significative. Pour y parvenir, j'ai conçu différentes files d'attente, minuteries et algorithmes. (Si vous êtes un gars de C++ et que vous aimez les microcontrôleurs, vous pouvez étudier le code par vous-même.)
Alors, vous allez entendre, l'appareil se met à parler: Vous avez 4 messages non lus dans votre boîte de réception gmail.
Vous appuyez à nouveau sur le bouton poussoir, le module suivant sera la prévision des précipitations qui doit être gérée.
FILE D'ATTENTE (Messages non lus | Prévision des précipitations | Heure actuelle)
Alors, vous entendrez quelque chose comme: N'oubliez pas votre parapluie, il pleut demain. Et ainsi de suite… Encore un truc sympa: pour certains modules (comme la prévision des précipitations), vous pouvez vous attendre à des phrases aléatoires pour les mêmes états. Par exemple, si demain il y a des précipitations et qu'il pleut et pas de neige, vous pouvez vous attendre à "il y a possibilité de pluie demain", "apportez votre propre soleil, il pleut demain", "tut, tut, ressemble à de la pluie pour demain", ou …
Comment obtenons-nous des données différentes pour chaque service ?
-
Gmail
Messages non lusGoogle dispose d'une API puissante qui vous permet d'accéder à ses différents services, notamment Gmail. Mais, pour des raisons de sécurité, vous avez besoin de différentes méthodes d'authentification et d'autorisation comme OAuth. ESP8266 n'est pas si puissant pour exécuter différents algorithmes de hachage compliqués. J'ai donc utilisé une technologie de connexion plus ancienne et simple pour accéder à la boîte de réception Gmail. C'est Google Atom Feed qui peut également être utilisé par les lecteurs RSS. Nous envoyons une requête HTTP pour accéder au flux gmail et sa réponse est au format XML. Ainsi, nous comptons le nombre de messages non lus et l'utilisons dans notre programme
-
MétéoNous utilisons l'API Yahoo Weather pour obtenir différentes informations météorologiques. Récemment, tout comme Google, Yahoo a modifié son API météo, vous devrez donc utiliser les normes OAuth pour accéder à ses données. Malheureusement, ESP8266 ne peut pas gérer sa complexité, nous allons donc utiliser une astuce pour résoudre le problème. Au lieu d'accéder directement à l'API Yahoo Weather, nous enverrons notre demande à un fichier personnalisé sur un serveur. Notre fichier obtient des données de Yahoo Weather et nous les envoie simplement.
- Tomorrow ConditionTomorrow Condition vous dira si demain est plus chaud ou plus froid qu'aujourd'hui, ou là s'il n'y aura pas de changement sensible de température. Nous comparons « bas/haut d'aujourd'hui » avec « bas/haut de demain » pour y parvenir. Vous pouvez vérifier comment j'ai écrit cet algorithme et comment il fonctionne dans le fichier de bibliothèque du programme.
- Prévision des précipitations Si vous consultez la documentation Yahoo Weather, vous pouvez voir le tableau des codes de condition. Comme il est dit, les codes de condition sont utilisés dans la réponse pour décrire les conditions actuelles. Nous utiliserons demain les codes de condition et leurs significations pour savoir s'il y aura des précipitations et s'il s'agit de pluie ou de neige.
- TimeNTP signifie Network Time Protocol. C'est un protocole de mise en réseau pour la synchronisation d'horloge entre les systèmes informatiques. Puisque nous avons accès à Internet, nous utiliserons un client NTP pour obtenir l'heure d'un serveur NTP et le synchroniserons avec la minuterie interne ESP8266 (comme celle que vous utilisez avec millis () si vous êtes un gars Arduino).
- Naissance et décèsNous calculerons le nombre de naissances et de décès depuis le début de la journée (Grâce au client NTP, il est simple d'obtenir le nombre de secondes depuis le début de la journée). J'ai utilisé les taux mondiaux de natalité et de mortalité de l'écologie.
Étape 3: configuration du logiciel
Nous utiliserons Arduino IDE pour télécharger notre programme sur NodeMCU. Vous pouvez télécharger et installer le dernier Arduino IDE depuis leur site officiel:
Avant de commencer, vous devez configurer Arduino IDE pour Nodemcu. Je ne vais pas vous dire les étapes ici, car cela pourrait être hors sujet. Mais vous pouvez suivre les étapes et les explications de cet excellent instructable.
Notre programme a des dépendances de bibliothèque. Qu'est-ce qu'une dépendance logicielle ?
La dépendance est un terme général de génie logiciel utilisé pour désigner lorsqu'un logiciel repose sur un autre.
Voici une liste des bibliothèques Arduino dont vous avez besoin sur votre ordinateur pour pouvoir compiler le programme Personal Assistant:
- ArduinoJson
- DFRobotDFPlayerMini
- Client NTPC
Vous pouvez les télécharger un par un depuis leur page Github, puis extraire les fichiers zip dans le répertoire de la bibliothèque Arduino. Son chemin sur votre système est: C:\Users [votre-nom d'utilisateur] Documents\Arduino
J'ai écrit une bibliothèque pour garder le code propre et éviter la complexité. Téléchargez le fichier PersonalAssistant-Library.zip et extrayez-le dans le répertoire de la bibliothèque Arduino. Tout comme ce que vous avez fait pour ces trois bibliothèques auparavant.
Fichier YahooWeather.php
Étant donné que l'ESP8266 n'est pas assez puissant pour exécuter des algorithmes de hachage, nous ne pouvons pas l'utiliser directement pour envoyer des requêtes HTTP à l'API Yahoo Weather, sur la base des normes OAuth. Nous utiliserons donc un fichier entre notre appareil et l'API Yahoo Weather. Vous pouvez télécharger le fichier YahooWeather.zip, l'extraire et mettre le fichier YahooWeather.php sur un serveur Web. Par exemple, si votre domaine est example.com et que vous placez le fichier dans le répertoire api, votre point de terminaison api devient example.com/api/YahooWeather.php Vous enverrez des demandes de données météo à ce point de terminaison.
Le programme Sketch et le FFS (Flash File System)
Votre carte NodeMCU dispose d'un système de fichiers flash de 4 Mo pour le stockage des données. Alors, quand on l'a, pourquoi ne pas l'utiliser ?
Vous vous souvenez quand j'ai dit que notre appareil avait deux interfaces utilisateur ? À côté de ce bouton poussoir solitaire, notre deuxième interface utilisateur est une simple application Web. Avec cette application, vous pouvez manipuler la file d'attente des opérations en activant / désactivant chaque module, en modifiant les paramètres de service ou la configuration de l'appareil, comme la définition du SSID et du mot de passe WiFi. Nous allons stocker tous ces fichiers dans le système de fichiers Flash NodeMCU et exécuter un serveur Web léger pour gérer les demandes des utilisateurs à partir de leur navigateur Web.
Modification du fichier de configuration
Téléchargez le fichier PersonalAssistant-Sketch.zip et extrayez-le quelque part sur votre ordinateur. Ouvrez le fichier config.json qui se trouve:
PersonalAssistant/data/config.json
Vous pouvez utiliser n'importe quel éditeur de texte ou de code comme le bloc-notes, le bloc-notes ++, Atom, etc. Le fichier est une structure de données json, il s'agit donc d'une paire clé / valeur lisible par l'homme et vous pouvez facilement le modifier. Vous pouvez modifier ces champs:
-
Gmail
- nom d'utilisateur: votre nom d'utilisateur Gmail avec son @gmail.com
- mot de passe: votre mot de passe Gmail
-
Temps
- woeid: l'emplacement pour lequel vous souhaitez recevoir des informations météorologiques. le WOEID (Where On Earth IDentifier) est un identifiant de référence utilisé par Yahoo pour la localisation. Vous pouvez effectuer une recherche sur les emplacements WOEID dans ce lien.
- api: c'est le point de terminaison de l'API. Le lien vers votre fichier yahooweather.php.
- appId, consumerKey et consumerSecret: pour accéder à l'API Yahoo Weather, vous devez créer un projet dans la page des développeurs Yahoo. Cela vous donnera une clé de consommateur et un secret qui sont nécessaires pour utiliser l'API. Pour commencer, visitez la page Yahoo Weather Developer et créez une application.
-
Fuseau horaire
fuseau horaire: saisissez le fuseau horaire en fonction de votre emplacement. Il peut s'agir d'un nombre flottant positif ou négatif et son unité est l'heure
-
Wifi
- ssid: SSID de votre réseau.
- mot de passe: votre mot de passe réseau. NodeMCU utilisera le ssid et le mot de passe pour se connecter à votre réseau wifi.
Téléchargement de l'esquisse du programme et des données FFS
Connectez le NodeMCU à votre ordinateur à l'aide d'un câble micro-USB vers USB.
Ouvrez maintenant le fichier PersonalAssistant.ino qui se trouve:
PersonalAssistant/PersonalAssistant.ino
Dans Arduino IDE, dans Outils > Carte, sélectionnez NodeMCU 1.0 (module ESP-12E). Dans Outils > Port, sélectionnez le bon port. Il représente votre NodeMCU.
Maintenant, sélectionnez Outils> ESP8266 Sketch Data Upload, cela téléchargera le contenu du dossier de données sur l'ESP8266. Attendez quelques instants jusqu'à ce qu'il soit terminé. Ensuite, sélectionnez Sketch> Upload ou appuyez simplement sur les boutons Ctrl + U de votre clavier pour commencer à télécharger le programme. Attendez jusqu'à ce que vous voyiez le message « le téléchargement est terminé ».
Étape 4: Configurer la carte Micro SD
Nous utilisons une carte micro SD pour stocker les morceaux du fichier MP3. C'est NodeMCU qui décide quel fichier doit être lu à quelle heure et DFPlayer Mini l'aide à faire une phrase significative en décodant les fichiers MP3.
J'ai utilisé Amazon Polly pour générer les morceaux de voix dont j'avais besoin.
Amazon Polly est un service qui transforme le texte en discours réaliste, vous permettant de créer des applications qui parlent et de créer de toutes nouvelles catégories de produits compatibles avec la parole.
N'oubliez pas que notre appareil n'utilise pas l'API Amazon Polly pour parler dynamiquement. Nous avons des morceaux de voix statiques hors ligne, et en les rassemblant, nous faisons des phrases différentes.
J'ai utilisé ce site pour générer des fichiers MP3. La sortie vocale que j'ai sélectionnée était l'anglais américain / Salli.
La seule chose que vous devez faire est de télécharger le fichier microSD.zip, puis de l'extraire sur votre carte micro SD. Il contient tous les 78 fichiers MP3 requis.
Votre carte Micro SD est probablement livrée avec un adaptateur. Vous pouvez insérer votre carte Micro SD dans son adaptateur et l'attacher à votre ordinateur portable. Si votre ordinateur ne prend pas en charge la lecture de carte, vous devez utiliser un lecteur de carte externe.
Étape 5: Conception des schémas et configuration du PCB
J'ai conçu le schéma et la carte à l'aide d'Autodesk EAGLE. J'ai inclus les fichiers SCH et BRD dans PersonalAssistant-PCB.zip. Vous pouvez facilement l'éditer et/ou l'envoyer à un fabricant de PCB local ou en ligne pour commander et obtenir votre carte.
Une autre chose à mentionner est que l'ESP8266 fonctionne en 3.3v tandis que DFPlayer Mini fonctionne en 5v. Étant donné que ces deux modules doivent se parler via une interface série, nous ne pouvons pas connecter directement une sortie 5v à une entrée 3.3v car cela endommage votre ESP8266. Nous aurons donc besoin d'une conversion de niveau de 5v à 3,3v. Nous utilisons une diode de signal et une résistance de 10K pour y arriver.
Étape 6: Soudez-le
L'assemblage de la carte est assez simple car vous avez quelques composants. Suivez les schémas et les conceptions de la carte à l'étape 5 pour mettre facilement chaque élément à sa place correcte.
J'ai commencé par souder les résistances et la diode, car elles sont petites. Vous pouvez facilement couper leurs queues inutiles à l'aide d'un coupe-fil. De haut en bas, vous devez mettre des résistances de 1K, 10K et 10K.
Vous n'avez pas besoin de souder toutes les broches NodeMCU et DFPlayer Mini sur le PCB. Souder les broches avec un chemin suffit.
N'oubliez pas que les haut-parleurs et les diodes ont une polarité. Vous avez un haut-parleur et une diode dans vos composants. Pour la diode, le côté avec une ligne noire est son côté négatif ou la cathode.
Étape 7: L'enceinte
J'ai décidé de concevoir une enceinte de fantaisie d'une manière créative. J'étais inquiet à propos de sa forme étrange pendant la conception, mais à la fin, ce n'était pas si mal. Au moins, il ressemble à un piano à queue et se sent bien dans la main !
Au lieu de la forme cubique hexaèdre classique à 6 faces, j'ai conçu un boîtier multicouche. De bas en haut, chaque couche repose sur sa couche inférieure. (Je les ai nommés L0 à L6, de bas en haut)
Couleurs et épaisseur
Vous pouvez utiliser deux couleurs complémentaires pour créer le contraste le plus fort, comme:
- Rouge et vert
- Bleu et Orange
- Jaune et violet
- Bleu et jaune
J'ai utilisé de l'acrylique transparent pour la couche supérieure, afin que vous puissiez voir à l'intérieur de l'appareil.
L'épaisseur de la couche supérieure (couche 6) doit être de 2 mm. L'épaisseur des autres couches (couche 0 à couche 5) doit être de 4 mm. Si vous souhaitez utiliser un bouclier acrylique de 2,8 mm, comme je l'ai fait, il n'y a pas de problème. Mais vous devez couper deux séries du calque 1 et du calque 3 pour le décalage.
Pour assembler l'enceinte, commencez par la couche inférieure (L0). Placez la planche dessus, utilisez les boulons les plus courts et serrez-la à l'aide des écrous. Vous pouvez maintenant attacher les quatre boulons plus longs du bas de la couche-0. Quelque chose comme une tour. Ensuite, vous pouvez facilement continuer à monter d'autres couches dessus.
Remarque: vous pouvez utiliser une rondelle en option entre la couche inférieure et la planche.
J'ai également ajouté des textes d'information pour les ports de l'appareil (alimentation et carte micro SD). Vous pouvez utiliser la gravure au laser sur la couche supérieure.
J'ai inclus les formats de fichiers CDR et DXF. Vous pouvez les télécharger, les éditer et les utiliser pour la découpe laser.
Étape 8: Accès à l'interface utilisateur Web
Mettre l'appareil sous tension
Vous pouvez alimenter l'appareil à l'aide de n'importe quel chargeur micro USB 5v. Connectez le micro USB au port d'alimentation de l'appareil, c'est-à-dire l'entrée micro USB de votre NodeMCU.
Accéder à l'interface utilisateur
Vous souvenez-vous que nous avons téléchargé des fichiers dans le système de fichiers Flash ESP8266 ? Il est temps de l'utiliser. Tout ce dont vous avez besoin est l'adresse IP attribuée à ESP8266 sur le réseau. Il existe de nombreuses façons de trouver l'adresse IP. Je vais en lister quelques-uns ici:
- Dans la page de configuration de votre routeur, quelque part dans DHCP Lease List, vous pouvez voir la liste des appareils avec leurs adresses IP dans votre réseau.
- Dans Microsoft Windows et macOS, vous pouvez exécuter des commandes telles que arp -a dans le terminal.
- Sous Android et iOS, vous pouvez utiliser des applications comme Fing. (Android/iOS)
- Sous Linux, vous pouvez utiliser des outils comme Nmap.
Après avoir trouvé l'adresse IP, ouvrez-la à l'aide de votre navigateur Web. Vous pouvez manipuler la file d'attente des opérations en activant/désactivant les modules.
Étape 9: Réflexions finales
Ce projet a été très consommateur de temps et d'énergie. Vous pouvez ajouter de nombreuses autres options à Personal Assistant. J'ai laissé certaines parties ouvertes pour un développement futur. Certaines parties comme:
- Ajout de plus de services et de modules. Par exemple, compter des nombres, lancer un dé ou lancer une pièce.
- Une fois connecté au réseau, l'appareil peut énoncer l'adresse IP. Vous pouvez ajouter cette option pour simplifier le processus de recherche d'adresse IP.
- Ajout de la possibilité de modifier les paramètres WiFi dans le panneau de configuration Web.
- Ajout de la possibilité de modifier les paramètres de service dans le panneau de configuration Web. (Leur formulaire html est prêt. vous devez gérer les demandes)
- Ajout de plus de réponses vocales dans différents états de l'appareil.
- Ajout d'une page de connexion pour le panneau de contrôle basé sur le Web. Vous pouvez le faire en ajoutant/comparant des cookies dans les lignes d'en-tête
Et, j'aimerais connaître vos idées sur cette instructable.:)
Conseillé:
Persistance du personnel LED Vision : 11 étapes (avec photos)
Persistance de la vision du personnel LED : il est bien connu que même après qu'une lumière a été éteinte, l'œil humain continue de « voir » pendant une fraction de seconde. C'est ce qu'on appelle la persistance de la vision, ou POV, et cela permet de " peindre ". images en déplaçant rapidement une bande o
Assistant personnel - Intellect Machine : 7 étapes
Assistant personnel - Intellect Machine : Dans le monde trépidant d'aujourd'hui, on n'a pas suffisamment de temps pour rester en contact avec le monde extérieur et social. On peut ne pas avoir assez de temps pour obtenir des mises à jour quotidiennes concernant l'actualité ainsi que le monde social comme facebook ou gmail.One
Mona, mon assistant personnel robot animatronique : 4 étapes
Mona, My Personal Assistant Animatronic Robot: Mona, c'est un robot IA qui utilise watson Ai en arrière-plan, quand j'ai commencé ce projet, cela semble beaucoup plus compliqué que je ne le pensais, mais lorsque j'ai commencé à travailler dessus, les cours cognitifs d'ibm (s'inscrire ici) m'ont aidé moi beaucoup, si tu veux tu peux prendre le cours n
Assistant personnel basé sur Arduino. (BHAI) : 4 étapes
Assistant personnel basé sur Arduino. (BHAI) : Introduction : Fabriqué en collaboration avec Kundan Singh ThakurThis est mon premier instructable donc s'il vous plaît plier avec toutes les erreurs que j'ai pu faire. Laissez également des commentaires en cas de doute ou de problème. L'assistant personnel basé sur Arduino est comme votre vir
SEER - Assistant personnel intelligent basé sur InternetOfThings : 12 étapes (avec photos)
SEER - Assistant personnel intelligent basé sur InternetOfThings : Seer est un appareil qui jouera un rôle de rappel dans le domaine des maisons intelligentes et de l'automatisation. Il s'agit essentiellement d'une application de l'Internet des objets. du Raspberry Pi 3 modèle B avec une caméra intégrée