Table des matières:

Synthèse vocale rétro. Partie : 12 IoT, Domotique : 12 étapes (avec photos)
Synthèse vocale rétro. Partie : 12 IoT, Domotique : 12 étapes (avec photos)

Vidéo: Synthèse vocale rétro. Partie : 12 IoT, Domotique : 12 étapes (avec photos)

Vidéo: Synthèse vocale rétro. Partie : 12 IoT, Domotique : 12 étapes (avec photos)
Vidéo: Caméra sans fil WIFI à 5€ incroyable ! DIY Vidéosurveillance Raspberry Pi [Chmaude77 - EP03] 2024, Juillet
Anonim
Image
Image
Synthèse vocale rétro. Partie: 12 IoT, Domotique
Synthèse vocale rétro. Partie: 12 IoT, Domotique

Cet article est le 12e d'une série sur la domotique Instructables documentant comment créer et intégrer un dispositif de synthèse vocale rétro IoT dans un système domotique existant, y compris toutes les fonctionnalités logicielles nécessaires pour permettre le déploiement réussi dans un environnement domestique.

L'image 1 montre le synthétiseur vocal IoT terminé et l'image 2 montre tous les composants utilisés dans le prototype qui ont été réduits en facteur de forme pour entrer dans le produit final.

La vidéo montre l'appareil en action (pendant les tests).

introduction

Comme mentionné ci-dessus, cet Instructable détaille comment fabriquer un appareil de synthèse vocale rétro IoT et est basé sur le General Instruments SP0256-AL2.

Son objectif principal est d'ajouter une synthèse vocale «à l'ancienne» à un réseau IoT. Pourquoi « old school » me demanderez-vous ? Eh bien, parce que j'étais dans les années 80 lorsque ces choses ont été fabriquées pour la première fois et j'en ai interfacé une à mon BBC Micro, donc pour moi, il y a un certain degré de nostalgie autour du SP0256-AL2.

Je préfère de loin le défi d'essayer de comprendre ce que dit cette voix de Dalek plutôt que d'écouter les tons suaves d'un écho hipster d'Amazon ou de Siri. Où est le défi dans ce que je vous demande ?

Oh, et sans parler du fait que j'ai aussi un « sac de chargement » de circuits intégrés « SP0256-AL2 » qui traînent.

L'appareil est également capable de lire la température et l'humidité locales, ce qui étend davantage l'instrumentation ambiante de mon infrastructure IoT existante en se connectant au réseau IoT basé sur MQTT/OpenHAB détaillé dans cette série sur la domotique (HA), en s'appuyant sur le code réutilisé tiré d'ici.

Au cœur de son cœur se trouve un ESP8266-07 qui est responsable des communications MQTT et du contrôle de toutes les fonctionnalités du système (accès à la carte SD, contrôle des LED, détection de la température/humidité, contrôle du volume, synthèse vocale). L'appareil est entièrement configurable via des fichiers texte stockés sur un carte SD locale, bien que les paramètres d'étalonnage et de sécurité du réseau puissent également être programmés via des publications MQTT distantes.

De quelles pièces ai-je besoin ?

Voir la nomenclature ici

De quel logiciel ai-je besoin ?

  • IDE Arduino 1.6.9,
  • Arduino IDE configuré pour programmer l'ESP8266-07 (le même que celui-ci). Configurez ensuite l'IDE comme indiqué dans la description détaillée fournie dans le croquis du logiciel ici,
  • Python v3.5.2 si vous souhaitez utiliser la capacité de test automatisé, détails ici

De quels outils ai-je besoin ?

  • Microscope au moins x3 (pour soudure CMS),
  • Outil de sertissage de connecteur Molex (pour connecteurs JST),
  • Fer à souder SMD (avec stylo à flux liquide et soudure fourrée),
  • Tournevis (divers),
  • Pistolet thermique,
  • Perceuses (divers),
  • Fraise à main,
  • Fichiers (divers),
  • Dremel (morceaux divers),
  • Étau robuste (petit et grand, comme un compagnon de travail noir et decker),
  • Scalpel,
  • Pieds à coulisse (utilisés pour mesurer la fabrication et utiles pour le dimensionnement des composants PCB),
  • Clés et tourne-écrous (divers),
  • Pince à épiler solide (pour la soudure CMS),
  • Scie à métaux junior,
  • Perceuse (avec divers forets),
  • Pince fine (pointe et nez retroussé),
  • Fraises à ras,
  • DMM avec contrôle de continuité sonore,
  • Portée numérique à double canal (pratique pour le débogage des signaux)

De quelles compétences ai-je besoin ?

  • Beaucoup de patience,
  • Une grande dextérité manuelle et une excellente coordination main/œil,
  • Excellentes compétences en soudure,
  • Excellentes compétences de fabrication,
  • La capacité de visualiser en 3 dimensions,
  • Une certaine connaissance du développement logiciel avec 'C' (si vous voulez comprendre le code source),
  • Une certaine connaissance de Python (comment installer et exécuter des scripts, si vous souhaitez utiliser les tests automatisés),
  • Connaissance d'Arduino et de son IDE,
  • Bonne connaissance de l'électronique,
  • Une certaine compréhension de votre réseau domestique.

Sujets couverts

  • Manuel de l'Utilisateur
  • Aperçu du circuit
  • Fabrication et assemblage de PCB
  • Fabrication
  • Présentation du système logiciel
  • Présentation du logiciel
  • Étalonnage du capteur
  • Convention de nommage des rubriques MQTT
  • Débogage et recherche de pannes
  • Tester la conception
  • Conclusion
  • Références utilisées

Series LinksTo Part 11: Console de bureau IoT. Partie: 11 IoT, Domotique

Étape 1: Manuel d'utilisation

Manuel de l'Utilisateur
Manuel de l'Utilisateur
Manuel de l'Utilisateur
Manuel de l'Utilisateur
Manuel de l'Utilisateur
Manuel de l'Utilisateur

L'image 1 ci-dessus montre l'avant du Retro Speech Synthesizer et l'image 2 l'arrière.

Avant du boîtier

  1. Grille de haut-parleur
  2. Prise pour écouteurs 3,5 mm: Le haut-parleur principal est désactivé lorsque la prise 3,5 mm est insérée.
  3. LED rouge: Cette LED s'allume pendant qu'un mot est prononcé lorsque la parole a été initiée via une requête
  4. LED bleue: cette LED s'allume pendant qu'un mot est prononcé lorsque la parole a été initiée via une requête MQTT IoT.

Arrière du boîtier

  1. Bouton de réinitialisation: utilisé pour réinitialiser l'appareil ESP8266-07 IoT.
  2. Bouton Flash: Lorsqu'il est utilisé en conjonction avec le bouton de réinitialisation, il permet de re-flasher l'ESP8266-07.
  3. Prise d'antenne WiFi (SMA Plug): Pour l'antenne WiFi externe donnant le moins d'atténuation du chemin RF car la fermeture est en aluminium.
  4. Port de programmation externe: pour supprimer le besoin de dévisser le boîtier pour accéder à l'ESP8266-07 à des fins de reprogrammation. Les broches de programmation de l'ESP8266-07 ont été sorties vers le port de programmation externe. L'image 3 est l'adaptateur de programmation.
  5. LED verte: C'est la LED du système IoT et est utilisée pour indiquer l'état de diagnostic de l'appareil et démarrer et pendant le fonctionnement.
  6. Capteur de température/humidité externe (AM2320)
  7. Emplacement pour carte SD: il contient toutes les données de configuration/sécurité ainsi que les pages du serveur Web.
  8. Prise d'alimentation 2.1mm 6vdc

Étape 2: Présentation du circuit

Aperçu du circuit
Aperçu du circuit
Aperçu du circuit
Aperçu du circuit

Le dispositif Retro Speech Synth comprend deux PCB;

  • RetroSpeechSynthIoTBoard: Il s'agit d'un PCB ESP8266-07/12/12E/13 générique et réutilisable
  • RetroSpeechSynthBoard: Il s'agit d'un PCB générique SP0256-AL2

Carte IoT de synthétiseur vocal rétro

Cette carte permet soit de souder directement un ESP8266-07/12/12E/13, soit des douilles au pas de 0,1 accueillant un PCB porteur ESP8266.

La carte a été conçue pour étendre ses E/S via une connexion I2C et peut prendre en charge les niveaux d'alimentation 3v3 ou 5v via Q1, Q2, R8-13.

La connexion à la carte s'effectue via l'un des deux en-têtes J2 et J4, un ruban DIL IDC à 8 voies ou JST/Molex à 5 voies.

U2 et U3 provision 3.3v et 5v à bord de la régulation de l'alimentation. Alternativement, si une plus grande capacité de courant est requise, des régulateurs shunt série hors carte peuvent être connectés via les connecteurs J10 et J11 respectivement.

Les connecteurs J1 et J3 offrent la prise en charge des cartes SD externes via SPI. J1 a été conçu pour un Molex à 8 voies et J3 a une broche directe pour la prise en charge de la compatibilité des broches pour un PCB de carte SD standard avec prise en charge 3v3 ou 5v.

Carte de synthèse vocale rétro

Le contrôle de cette carte s'effectue via une connexion conforme I2C 5v via J1, J5 ou J6, un connecteur JST/Molex à 4 voies, DIL IDC à 8 voies ou un connecteur à ruban IDC à 8 voies.

U2 MPC23017 fournit l'interface I2C vers parallèle à U3 le SP0256-AL2 et les LED D1 (vert), D2 (rouge) et D3 (bleu). La sortie du Speech Synth est envoyée à l'ampli audio CR1 TBA820M via le potentiomètre analogique RV1 ou le potentiomètre numérique U1 MCP4561.

Digital Pot U1 est également contrôlé via I2C compatible 5v.

Remarque: L'appareil ESP8266-07 a été choisi car il dispose d'un connecteur RF IPX intégré permettant d'ajouter une antenne WiFi externe au boîtier en aluminium.

Étape 3: Fabrication et assemblage de PCB

Fabrication et assemblage de PCB
Fabrication et assemblage de PCB
Fabrication et assemblage de PCB
Fabrication et assemblage de PCB
Fabrication et assemblage de PCB
Fabrication et assemblage de PCB
Fabrication et assemblage de PCB
Fabrication et assemblage de PCB

Les images 1 et 2 montrent les sous-ensembles PCB terminés et câblés situés sur le substrat du boîtier en aluminium.

Les deux PCB ont été conçus à l'aide de Kicad v4.0.7, fabriqués par JLCPCB et assemblés par mes soins et montrés ci-dessus sur les photos 3 à 13.

Étape 4: fabrication

Fabrication
Fabrication
Fabrication
Fabrication
Fabrication
Fabrication

L'image 1 montre une disposition de style Haynes Manual de toutes les pièces préfabriquées avant l'assemblage final.

Les photos 2 … 5 montrent divers clichés lors de la fabrication de l'enceinte avec des jeux minimes.

Étape 5: Présentation du système logiciel

Présentation du système logiciel
Présentation du système logiciel
Présentation du système logiciel
Présentation du système logiciel

Ce dispositif de synthèse vocale rétro IoT contient six composants logiciels clés, comme indiqué sur la photo 1 ci-dessus.

Carte SD

Il s'agit du système de fichier flash SD SPI externe et est utilisé pour contenir les informations suivantes (voir photo 2 ci-dessus);

  • Icônes et 'Page d'accueil de configuration de synthèse vocale' index.htm: servi par l'appareil IoT lorsqu'il est incapable de se connecter à votre réseau WiFi IoT (généralement en raison d'informations de sécurité incorrectes ou d'une première utilisation) et fournit à l'utilisateur un moyen de configurer à distance les capteurs sans avoir besoin de re-flasher le nouveau contenu SD. Il contient également index1.htm, mqtt.htm et sp0256.htm, ce sont les pages Web desservies localement accessibles via un navigateur Web permettant un contrôle limité du synthétiseur vocal sur
  • Informations de sécurité: elles contiennent les informations utilisées à la mise sous tension par l'appareil IoT pour se connecter à votre réseau WiFi IoT et à MQTT Broker. Les informations soumises via la 'Page d'accueil de la configuration de Speech Synth' sont écrites dans ce fichier ('secvals.txt').
  • Informations d'étalonnage: les informations contenues dans les fichiers (« calvals1.txt » et « calvals2.txt ») sont utilisées pour étalonner les capteurs de température/humidité embarqués si nécessaire. Les constantes d'étalonnage peuvent être écrites sur l'appareil IoT via les commandes MQTT d'un courtier MQTT ou en flashant à nouveau la carte SD. 'calvals1.txt' se rapporte au capteur AM2320 et 'calvals2.txt' au DHT22.
  • Valeurs système configurables par l'utilisateur: les informations contenues dans ce fichier (« confvals.txt »), choisies par l'utilisateur, contrôlent certaines réponses du système, telles que le niveau de volume numérique initial, l'annonce automatique « système prêt » sur l'abonnement au courtier MQTT, etc.

Serveur mDNS

Cette fonctionnalité est invoquée lorsque l'appareil IoT n'a pas réussi à se connecter à votre réseau WiFi en tant que station WiFi et est devenu à la place un point d'accès WiFi semblable à un routeur WiFi domestique. Dans le cas d'un tel routeur, vous vous y connectez généralement en saisissant l'adresse IP de quelque chose comme 192.168.1.1 (généralement imprimée sur une étiquette apposée sur la boîte) directement dans la barre d'URL de votre navigateur, après quoi vous recevrez une page de connexion à saisir. le nom d'utilisateur et le mot de passe pour vous permettre de configurer l'appareil. Pour l'ESP8266-07 en mode AP (mode point d'accès), l'appareil utilise par défaut l'adresse IP 192.168.4.1, mais avec le serveur mDNS en cours d'exécution, vous n'avez qu'à entrer le nom convivial « SPEECHSVR.local » dans la barre d'URL du navigateur pour voir la 'Page d'accueil de la configuration du synthétiseur vocal'.

Client MQTT

Le client MQTT fournit toutes les fonctionnalités nécessaires pour: connectez-vous à votre courtier MQTT de réseau IoT, abonnez-vous aux sujets de votre choix et publiez des charges utiles sur un sujet donné. En bref, il fournit les fonctionnalités de base de l'IoT.

Serveur Web

Ce serveur Web a deux objectifs;

  1. Si l'appareil IoT ne parvient pas à se connecter au réseau WiFi dont le SSID, le P/W, etc. est défini dans le fichier d'informations de sécurité contenu sur la carte SD, l'appareil deviendra un point d'accès. Une fois connecté au réseau WiFi fourni par le point d'accès, la présence d'un serveur Web HTTP vous permet de vous connecter directement à l'appareil et de modifier sa configuration via l'utilisation d'un navigateur Web HTTP. Page Web de la page d'accueil qui se trouve également sur la carte SD.
  2. Une fois que l'appareil de synthèse vocale rétro IoT s'est connecté au réseau WiFi et au courtier MQTT, s'il y est accédé, le serveur Web HTTP servira automatiquement une page Web HTTP permettant un contrôle limité de l'appareil IoT pour prononcer une sélection de phrases fixes et la possibilité de cyclez les deux LED avant rouge et bleue.

Station Wi-Fi

Cette fonctionnalité donne à l'appareil IoT la possibilité de se connecter à un réseau WiFi domestique à l'aide des paramètres du fichier d'informations de sécurité, sans cela, votre appareil IoT ne pourra pas s'abonner/publier sur le courtier MQTT.

Point d'accès Wi-Fi

La possibilité de devenir un point d'accès WiFi est un moyen par lequel l'appareil IoT vous permet de vous y connecter et d'effectuer des modifications de configuration via une station WiFi et un navigateur (comme Safari sur l'iPad d'Apple). Ce point d'accès diffuse un SSID = « SPEECHSYN » + les 6 derniers chiffres de l'adresse MAC de l'appareil IoT. Le mot de passe de ce réseau fermé est nommé de manière imaginative « MOT DE PASSE »

Étape 6: Présentation du logiciel

Présentation du logiciel
Présentation du logiciel
Présentation du logiciel
Présentation du logiciel
Présentation du logiciel
Présentation du logiciel

Préambule

Pour compiler avec succès ce code source, vous aurez besoin d'une copie locale du code et des bibliothèques décrites ci-dessous à l'étape 12, Références utilisées. Si vous ne savez pas comment installer une bibliothèque Arduino, allez ici.

Aperçu

Le logiciel utilise la machine à états comme indiqué sur la photo 1 ci-dessus (copie complète de la source dans mon référentiel GitHub ici). Il y a 5 états principaux comme indiqué ci-dessous;

  • INIT

    Cet état d'initialisation est le premier état entré après la mise sous tension

  • NONCONFIG

    Cet état est entré si après la mise sous tension un fichier secvals.txt invalide ou manquant est détecté. Pendant cet état, la page de configuration est visible

  • EN ATTENTE NO

    Cet état est transitoire, entré alors qu'il n'existe pas de connexion réseau WiFi

  • EN ATTENTE MQTT

    Cet état est transitoire, entré après qu'une connexion au réseau WiFi a été établie et tant qu'il n'existe aucune connexion à un courtier MQTT sur ce réseau

  • ACTIF

    Il s'agit de l'état de fonctionnement normal entré une fois qu'une connexion réseau WiFi et une connexion MQTT Broker ont été établies. C'est pendant cet état que la température, l'indice de chaleur et l'humidité du dispositif de synthèse vocale rétro IoT sont régulièrement publiés au courtier MQTT. Dans cet état, la page d'accueil Speech Synth est visible

Les événements contrôlant les transitions entre les états sont décrits dans la photo 1 ci-dessus. Les transitions entre les états sont également régies par les paramètres SecVals suivants;

  • 1ère adresse IP du courtier MQTT. Sous forme décimale pointée AAA. BBB. CCC. DDD
  • 2e port de courtier MQTT. Sous forme d'entier.
  • La troisième connexion MQTT Broker tente d'être établie avant de passer du mode STA au mode AP. Sous forme d'entier.
  • 4e SSID du réseau Wi-Fi. Sous forme de texte libre.
  • 5e mot de passe du réseau Wi-Fi. Sous forme de texte libre.

Comme mentionné ci-dessus, si l'appareil IoT ne parvient pas à se connecter en tant que station WiFi au réseau WiFi dont le SSID et le P/W sont définis dans secvals.txt conservé sur la carte SD, l'appareil IoT deviendra un point d'accès. Une fois connecté à ce point d'accès, il affichera la "Page d'accueil de la configuration du synthétiseur vocal" comme indiqué ci-dessus dans l'image 2 (en entrant soit "SPEECHSVR.local" ou 192.168.4.1 dans la barre d'adresse URL de votre navigateur). Cette page d'accueil permet la reconfiguration du dispositif de synthèse vocale rétro IoT via un navigateur

Accès à distance dans l'état ACTIF

Une fois connecté au courtier MQTT, il est également possible de recalibrer et de reconfigurer l'appareil via les publications thématiques MQTT. Le fichier calvals.txt a un accès R/W et secvals.txt a un accès en écriture uniquement exposé.

De plus, comme mentionné ci-dessus, une fois en mode actif, il est possible d'accéder au Speech Synth via une interface HTTP en entrant 'SPEECHSVR.local' ou 192.168.4.1 dans la barre d'adresse URL de votre navigateur. Cette interface basée sur HTTP permet un contrôle de base du Speech Synth. Les photos 3, 4 et 5 montrent les pages Web disponibles.

Débogage utilisateur

Pendant la séquence de démarrage, le voyant vert du système de l'appareil IoT à l'arrière du boîtier donne le retour de débogage suivant;

  • 1 Flash court: Aucun fichier de configuration situé sur la carte SD (secvals.txt)
  • 2 clignotements courts: l'appareil IoT tente de se connecter au réseau WiFi
  • Éclairage continu: l'appareil IoT tente de se connecter à MQTT Broker
  • Éteint: l'appareil est actif.

Fonctionnalité du dispositif de synthèse vocale rétro IoT à l'état ACTIF

Une fois dans l'état ACTIF, l'ESP8266 entre dans une boucle continue appelant les fonctions suivantes; timer_update(), checkTemperatureAndHumidity() et handleSpeech(). Le résultat net a été conçu pour présenter à l'utilisateur une interface HTTP ou MQTT, entretenir de manière transparente son processeur vocal intégré avec des phonèmes à la demande et publier des valeurs paramétriques ambiantes locales sur MQTT.

Une liste complète de tous les abonnements et publications thématiques, y compris les valeurs de charge utile, est incluse dans le code source.

Étape 7: Étalonnage du capteur

Étalonnage du capteur
Étalonnage du capteur

Lors de la mise sous tension de l'appareil IoT, dans le cadre de la séquence de démarrage, deux fichiers nommés "cavals1.txt" et "cavals2.txt" sont lus à partir de la carte SD.

Le contenu de ces fichiers sont des constantes d'étalonnage comme indiqué ci-dessus dans la photo 1.

  1. 'cavals1.txt': Utilisé par l'AM2320 externe
  2. 'cavals2.txt': Utilisé par le DHT22 interne

Ces constantes d'étalonnage sont utilisées pour ajuster les lectures acquises par les deux capteurs pour les aligner sur un appareil de référence. Il existe une autre valeur qui définit une stratégie de rapport pour chaque appareil et est décrite ci-dessous avec la procédure suivie pour étalonner les capteurs.

Stratégie de rapport

Ce paramètre détermine la manière dont le capteur à distance signale les changements paramétriques ambiants locaux. Si une valeur de 0 est sélectionnée, le capteur à distance publiera tout changement constaté dans la température ou l'humidité chaque fois que le capteur respectif est lu (environ toutes les 10 secondes). Toute autre valeur retardera la publication d'un changement de 1…60 minutes. La modification de ce paramètre permet d'optimiser le trafic réseau MQTT. Il convient de noter que les données de température et d'humidité du DHT22 sont lues en alternance en raison des limitations du capteur.

Étalonnage de la température

Pour calibrer le capteur de température, j'ai suivi le même processus que celui décrit ici à l'étape 4, encore une fois en utilisant une simple relation y=mx+c. J'ai utilisé la température IoT, le capteur d'humidité n ° 1 comme appareil de référence. Les valeurs du capteur sont en degrés Celsius.

Étalonnage de l'humidité

Comme je ne possède aucun moyen d'enregistrer avec précision ou même de contrôler l'humidité ambiante locale, pour étalonner le capteur, j'ai utilisé une approche similaire à celle ci-dessus à l'étape 4, en utilisant à nouveau le capteur n ° 1 comme référence. Cependant, ce qui précède, j'ai récemment trouvé un excellent article sur le Web décrivant comment calibrer les capteurs d'humidité. Je pourrais bien essayer cette approche dans le futur. Les valeurs du capteur sont en % d'humidité relative.

Étape 8: Convention de nommage des rubriques MQTT

Convention de nommage des rubriques MQTT
Convention de nommage des rubriques MQTT
Convention de nommage des rubriques MQTT
Convention de nommage des rubriques MQTT

Comme mentionné dans un précédent Instructable (ici), je me suis installé sur la convention de nommage du sujet décrite dans la photo 1 ci-dessus.

À savoir, 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Ce n'est pas parfait mais cela permet d'appliquer des filtres utiles pour voir toutes les sorties de capteur pour un sujet paramétrique donné, permettant ainsi une comparaison facile comme dans la photo 2 ci-dessus avec MQTTSpy.

Ce projet est le premier cas où un seul appareil contient plus d'une source d'origine du même type de publication. c'est à dire. Deux capteurs de température/humidité, provenant de sous-appareils internes et externes.

Il prend également en charge des groupements logiques de fonctionnalités raisonnablement extensibles au sein d'un appareil IoT donné.

Lors de la mise en œuvre de ces sujets dans le logiciel, j'ai utilisé des chaînes de sujets codées en dur avec des identifiants numériques fixes et intégrés pour chaque périphérique, au lieu de générer dynamiquement les sujets au moment de l'exécution afin d'économiser de la RAM et de maintenir des performances élevées.

Remarque: si vous ne savez pas comment utiliser MQTTSpy, consultez ici « Configuration d'un courtier MQTT ». Partie 2: IoT, Domotique'

Étape 9: Débogage et recherche de pannes

Débogage et recherche de pannes
Débogage et recherche de pannes

Dans l'ensemble, pour mes projets de loisirs, j'ai tendance à construire, dans la mesure du possible, un prototype matériel représentatif sur lequel le logiciel est développé. J'ai rarement des problèmes lors de l'intégration du logiciel dans le matériel de la plate-forme finale.

Cependant, à cette occasion, je suis tombé sur un étrange défaut intermittent par lequel certains phonèmes sonnaient mais d'autres non.

Après un débogage initial du PCB Speech Synth à l'aide d'un Arduino Uno pour rechercher des phonèmes et prouver que cette carte fonctionnait, j'ai examiné les lignes I2C entre le PCB IoT et le PCB Speech Synth. Voir photo 1 ci-dessus.

Vous pouvez clairement voir le « dent de scie »/bord exponentiel du signal I2C sur les traces.

C'est généralement une indication que les valeurs de rappel I2C sont trop élevées, empêchant la tension de ligne de se rétablir assez rapidement dans un circuit à drain ouvert.

En guise de « travail de contournement », j'ai mis en parallèle les deux résistances de rappel smt R12 et R13 avec 10Ks pour donner 4K7 et bien sûr, le Speech Synth « a pris vie »

Ce type d'échec est à l'opposé de ce qui peut arriver lors du débogage de ce type de projets. En général, la plupart des modules basés sur I2C achetés sur Ebay ont tendance à être livrés avec des tractions 10K ou 4K7 déjà installées. Si vous avez l'intention d'utiliser > 5 modules I2C, chacun avec des tractions 4K7, alors la charge globale est de 940R, ce qui sera trop important pour l'étage de sortie du maître. La solution serait de dessouder tous les ensembles de résistances de rappel sur chaque module, sauf un. De préférence celui qui est physiquement le plus éloigné du maître.

Un conseil utile et à garder à l'esprit lors de la conception d'électronique avec des appareils I2C.

Étape 10: Tester la conception

Image
Image
Tester la conception
Tester la conception
Tester la conception
Tester la conception

Les tests ont été effectués en utilisant deux méthodologies; Manuel et automatisé.

Le premier, manuel et généralement utilisé lors du développement initial du code, utilisait MQTT Spy pour exercer tous les sujets souscrits disponibles et vérifier les réponses publiées (représentées dans l'image 2 ci-dessus). Comme il s'agit d'un processus manuel, il peut prendre du temps et être sujet à des erreurs au fur et à mesure que le développement du code progresse, bien que l'exécution manuelle permette une couverture à 100 %.

MQTTSpy a été choisi pour les tests manuels car il s'agit d'un excellent outil pour formater manuellement une charge utile donnée et la publier facilement sur n'importe quel sujet. Il affiche également un journal clair et horodaté qui est très utile pour le débogage (photo 3 ci-dessus).

La seconde approche automatisée a été adoptée car le code source est devenu plus complexe (> 3700 lignes). Une complexité accrue signifie des cycles de test manuels plus longs et des tests plus complexes. Afin d'améliorer la fiabilité, le déterminisme et la qualité des tests, des tests automatisés ont été utilisés via un gestionnaire de tests python (photo 1). Voir l'étape #10 dans ce Instructable sur la façon dont les tests automatisés ont été introduits. Une copie complète des tests automatisés utilisés dans ce Instructable est disponible ici.

Une vidéo de la séquence de test automatisée en fonctionnement est présentée ci-dessus. La séquence exécute les étapes suivantes;

  • Automatisé via MQTT

    • Connectez-vous au backbone MQTT et annoncez « System Ready »
    • LED verte d'exercice
    • LED rouge d'exercice
    • LED bleue d'exercice
    • Vérifiez que Digital Pot fonctionne
    • Parler en utilisant des phonèmes
    • Parler en utilisant des codes hexadécimaux pour les phonèmes
    • Parlez en utilisant des codes pour les phrases fixes
    • Un peu d'amusement avec Dr Who et les Daleks.
  • Manuellement via
    • LED bleue d'exercice
    • LED rouge d'exercice
    • Prononcez des phrases fixes « Steven Quinn », « Prêt pour le système » et « Hello World »
    • Avoir le serveur HTTP, servir

      • Détails sur la puce de synthèse vocale
      • Détails MQTT

Étape 11: Conclusion

Conclusion
Conclusion

Bien que cela ait demandé beaucoup d'efforts avec des fichiers et des perceuses, etc., en particulier pour la grille du haut-parleur, je pense que le résultat est esthétique et se range dans un joli petit boîtier. J'aurais pu le rendre plus petit, mais il aurait fallu qu'il aille sur un seul PCB et je l'ai délibérément divisé en deux afin de pouvoir réutiliser les PCB à une date ultérieure pour d'autres projets. C'est donc un heureux compromis.

Le logiciel fonctionne bien, l'appareil IoT fonctionne de manière stable depuis un certain temps maintenant sans aucun problème.

J'ai surveillé la température et l'humidité via Grafana et comparé avec un appareil co-localisé. Les deux valeurs ambiantes sont bien corrélées, ce qui implique que l'étalonnage est raisonnable (ou du moins qu'elles sont similaires).

Je me suis arrêté avant d'implémenter la commande word ("WFD/SpeechTH/1/Word/Command") parce que je manquais de temps et que je devais passer à autre chose. Je pourrais bien y revenir si et quand j'ai mis en place une base de données MySQL. En ce moment, j'utilise InfluxDB.

Étape 12: Références utilisées

Les sources suivantes ont été utilisées pour assembler cet Instructable; Code source pour le dispositif de synthèse vocale rétro IoT (cela contient une copie de tout)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Par: Nick O'Leary
  • Objectif: Permet à l'appareil de publier ou de s'abonner à des sujets MQTT avec un courtier donné
  • De:

DHT.h

  • Par: Adafruit
  • Objectif: bibliothèque Arduino pour les capteurs de température et d'humidité DHT11DHT22, etc.
  • De:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Par: Adafruit
  • Objectif: bibliothèque Arduino pour AM2320, etc. Capteur de température et d'humidité
  • De:

MCP4561_DIGI_POT.h

  • Par: Steve Quinn
  • Objectif: Bibliothèque Arduino pour potentiomètre numérique MCP4561
  • De:

Adafruit_MCP23017.h

  • Par: Steve Quinn
  • Objectif: Bibliothèque Arduino pour l'extenseur de port I2C MCP23017. Il s'agit d'une fourchette GITHub d'Adafruit-MCP23017-Arduino-Library, par Adafruit.
  • De:

pour s'amuser

https://haynes.com/fr-fr/

Fabrication de PCB

https://jlcpcb.com/

Installation de bibliothèques Arduino supplémentaires

https://www.arduino.cc/en/Guide/Bibliothèques

Comment vérifier et calibrer un capteur d'humidité

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/?utm_source=All+About+Circuits+Members&utm_campaign=ffeee38e54-EMAIL_CAMPAIGN_2017_12_06&utm_medium=email&utm5529487501e /

Fiche technique SP0256-AL2

https://www.futurebots.com/spo256.pdf

Boutique de puces vocales

https://www.speechchips.com/shop/

Concours Arduino 2019
Concours Arduino 2019
Concours Arduino 2019
Concours Arduino 2019

Finaliste du concours Arduino 2019

Conseillé: