Machine à café: Amazon Alexa et Raspberry Pi

Machine à café: Amazon Alexa et Raspberry Pi

Tu as déjà demandé à Alexa de te préparer un café? Oui, et j’ai eu une réponse négative… Alexa, peux-tu me préparer un café? Lorsque ma machine à café est tombée en panne cet été et que nous en avons acheté une nouvelle, c’était sans danger pour moi de commencer à la bricoler et de la faire flipper, sans perdre les tasses de café si importantes par jour.La machine que j’ai peut vous préparer quatre types de café: le café ordinaire, le cappuccino, le macchiato et le café au lait. Il y a un réservoir d'eau et de lait et vous installez des tablettes de café. Cela semblait assez facile à contrôler, mais pas aussi simple qu'un simple relais de commutation pour l'alimentation.C'est le plan:Comme je n’ai pas d’Amazon Echo, j’utilise le Raspberry Pi pour envoyer une communication vocale à Alexa. Mais cela peut être remplacé par tout ce qui est connecté au service Alexa Voice (Amazon Echo, Amazon Tap, Invoxia Triby, Pebble Core, Nucleus, EchoSim.io, etc.) .Alexa enverra des commandes à la base de données (avec Lambda et IoT). Raspberry Pi.Le Raspberry Pi effectuera l’interaction avec la machine à café pour lire l’état de la machine en écoutant les sélections de voyants et les capteurs, et changer l’état de la machine en insérant des pressions de bouton.Je l'ai? Ok, voici comment la machine à café fonctionne:Introduction aux options de ma machine à café

ALERTE DE SÉCURITÉ

Une machine à café fonctionne sur 230 V et fait bouillir de l'eau (pour le café, elle est d'environ 90 ° C). Si vous ne faites pas attention, cela peut être très dangereux. Débranchez toujours la machine et attendez qu'elle soit refroidie avant de l'ouvrir!Connecter directement les circuits du Raspberry Pi à la machine à café n’est pas sûr, même si vous ne connectez que les terrains. Les circuits imprimés de la machine à café fonctionnent à 5V et la framboise à 3,3V. J'ai utilisé des optocoupleurs pour séparer les deux circuits et les laisser parler (voir l'explication plus loin).

Nomenclature détaillée:

Avant de pouvoir commencer à construire, vous devrez visiter votre magasin electronica préféré. Et un supermarché pour du café et du lait.Tarte aux framboises (J'ai utilisé une v3)Machine à café Philips Senseo (J'ai utilisé un Latte Select)Pour la partie service vocal Alexa:Bouton (commutateur momentané) Certaines DEL + résistances correspondantesPour la partie machine à café:18 optocoupleurs (j’ai utilisé 4N35) 18 résistances (11x 1kΩ et 7x 220Ω) Cobbler pour connecter le Raspberry Pi au câble IDE de la carte graphique et Cobbler modifié (ou assistant auxiliaire) pour la connexion de la machine à café à la carte graphiquePour le café:Tampons de café Senseo (j'ai utilisé Dark Roast) Milk pour le cappuccino, le macchiato et le latte

Machine à café électronique

Ici, le plaisir commence, casser la machine à café! Vraiment, ces employés de Philips savent comment assembler une machine, pour que vous ne vous sépariez pas après coup (sans avoir au préalable lu le manuel de maintenance). Je devais utiliser une perceuse pour obtenir la base lâche de la partie de la machine. Mais le résultat est OK. J'ai trouvé trois circuits imprimés où je dois établir mes connexions! La machine offre quatre choix de café, le café ordinaire a trois forces et vous pouvez sélectionner le nombre de tasses.L'UI de la machine à café
En commençant par le couvercle; Le choix et la force ont leur propre ensemble de LED et pour les deux, il y a un bouton dans le couvercle avec un côté haut et bas. À l’intérieur, vous pouvez voir les voyants et les boutons, et à l’arrière, j’ai soudé mes fils au circuit imprimé: 1/3 • À l’avant, vous pouvez voir les voyants et les boutons
Pour ce projet, j’ai ignoré les 2 voyants et le bouton du milieu, c’est pour les processus de nettoyage. Pour la base, le même principe est utilisé: il y a 3 boutons avec les voyants correspondants. Au milieu, on / off, à gauche une tasse, à droite, deux gobelets. À l'intérieur, à nouveau à l'avant du circuit imprimé, se trouvent les boutons et les voyants, et à l'arrière, les fils soudés: 1/3 • La face avant avec les boutons et les LED (remarquez la connexion 230V à gauche!)
Et encore un circuit imprimé, cette fois pour les 3 capteurs: couvercle ouvert / fermé (interrupteur), réservoir de lait (capteur HAL) et niveau d’eau (capteur HAL). De ce circuit imprimé, je prends également les connexions 5V et GROUND. Jaune pour les capteurs, vert et blanc pour 5V et GND
Moment d'apprentissage: Étant donné que je travaille avec des optocoupleurs, je ne peux mesurer que l’activation / la désactivation, pas un signal analogique. Donc, après avoir passé quelques heures à dépanner et à utiliser diverses résistances (et à faire sauter un optocoupleur), je me suis concentré sur la connexion du capteur de couvercle pour ce projet. J'ai mentionné que ma machine était en panne, le capteur de niveau d'eau s'est avéré être le problème. (Le capteur HAL n'était plus activé par l'aimant à l'intérieur du réservoir d'eau). Comme j'ai maintenant le fil du capteur qui est à 2.5V pour 1 tasse et 3.5V pour 2 tasses, je l'ai connecté à 5V pour le laisser penser qu'il y a toujours beaucoup d'eau. Avec une perceuse, j'ai fait un trou pour faire sortir les fils du couvercle, a pris un outil multiple avec une scie pour couper certaines parties du couvercle. Ensuite, vous avez collé un en-tête IDE d’un vieux PC et y avez soudé les fils: 1/5 • A utilisé une perceuse pour faire sortir les fils du boîtier du circuit imprimé
La même chose a été faite pour la base, en connectant à la fois la base et les capteurs. Un câble IDE génial de mon ancien PC est utilisé pour acheminer tous les fils vers la carte de commande. Un câble IDE élégant pour connecter le couvercle à la base et à la planche à pain
Moment d'apprentissage: L'utilisation d'un câble IDE pour se connecter à la machine à café à la planche à pain semblait très facile. Un câble IDE est, comme un câble GPIO, un ruban à 40 fils. Alors j'ai pris un cordonnier et aller, non? Non… l'EDI a interconnecté des fils GND ailleurs que sur l'en-tête GPIO. Je devais donc faire correspondre ceux-ci. Ensuite, il y a une torsion dans le câble qui enlève également certaines connexions. Et ai-je mentionné qu'ils ont 1 broche de moins au centre du connecteur? Mais j'ai réussi à obtenir tous les 10 LED, 7 boutons, 3 capteurs, 5V et GND. Plus tard, lorsque je souderai tout cela sur une carte permanente, j'utiliserai un assistant de dérivation, qui me sauvegardera les interconnexions GPIO GND.

Planche à pain: machine à café

Pour connecter la machine à café au Raspberry Pi, j'ai utilisé une planche à pain pour essayer facilement les connexions. Toutefois, comme indiqué dans la mise en garde de sécurité, ne mélangez pas les connexions de la machine à café avec le Raspberry Pi. Vous pouvez le faire en utilisant des relais de commutation ou des optocoupleurs. Pour la sécurité des deux circuits, j'ai utilisé des optocoupleurs. OptocoupleursIl existe de nombreuses bonnes explications sur Internet, et pour donner des crédits à leur appartenance, j’ai utilisé cette vidéo pour m’informer: "Utilisation d’optocoupleurs avec le Raspberry Pi" de Gaven MacDonald. En bref, reportez-vous à l’image: IR Diode (left ): L’anode est connectée à PWR, la cathode via une résistance à GND.Phototransistor (à droite): Collecteur à la broche GPIO (avec une résistance de tirage interne), l’émetteur est connecté à GND.Lorsque la diode IR est alimentée et s'allume ', le phototransistor ferme le circuit.http: //raspberrypihobbyist.blogspot.nl/2012/09/gpio-input-circuit_19.html
Le concept derrière "l'écoute" de la LEDCôté machine à café: Prenez les points de soudure où la LED est sur 5V, c'est-à-dire avant la résistance, et la masse. Heureusement, ils partagent le même GND. Je n'avais donc besoin que de connecter un fil par LED et d'en avoir un partagé. Le fil du fil de la LED ira à l'optocoupleur. De l'optocoupleur, le résisteur ira à la terre GND.Raspberry Pi: Une broche est connecté à GNDL'autre est connectée à une broche GPIO avec une résistance interne.Lorsque la DEL est allumée, l'optocoupleur est alimenté et commence à émettre de la lumière du côté de la machine à café, permettant ainsi à l'alimentation du côté de Raspberry Pi de circuler. Comme il y a maintenant beaucoup de courant, cela sera reconnu comme un changement du côté de GPIO. Les interruptions déclencheront une action dans mon script Python.Le concept derrière "appuyer" sur les boutonsCôté machine à café: Prenez les points de soudure où le bouton est sur le côté commutation et le 5V. Encore une fois, ils partagent le même 5V, donc je n'avais besoin que de connecter 1 fil par bouton et d'en avoir un partagé. Le fil de commutation ira à l'optocoupleur. Depuis l'optocoupleur, l'autre fil ira à 5V.Raspberry Pi côté: Une broche est connecté à GND avec une résistance.L'autre est connectée à une broche GPIO.Mon script Python définit le GPIO sur HIGH pendant 0,2 seconde et renvoie LOW par la suite.Comme le courant circule à présent, l'optocoupleur commence à émettre de la lumière au niveau de la framboise Côté Pi, permettant également à la machine à café de s’alimenter. Pour la machine à café, ceci est reconnu comme une pression sur un bouton.CircuitsSur la planche à pain, vous pouvez voir très clairement où les deux circuits sont séparés: la moitié supérieure est la machine à café et la moitié inférieure la framboise. Les CI blancs au milieu sont les optocoupleurs
Planche à pain: Alexa PiPour Alexa Pi, il me faut un interrupteur momentané (ou un bouton), 3 DEL. Le bouton permet d'activer le microphone. Le voyant rouge indique que le microphone est en cours d’enregistrement. Le voyant bleu indique que l'enregistrement est chargé dans Alexa et que nous attendons une réponse. Lorsque le son reçu est lu, le voyant vert s’allume. Une fois que le projet a atteint la phase finale, j’ai déplacé ceux-ci de la carte d’affichage vers le boîtier Raspberry Pi.

Matériel final

Pour plus de sécurité, j'ai mis les planches à pain dans une boîte. Le café est fait avec de l'eau, et l'eau + l'électricité ne jouent pas très bien ensemble … Box pour garder les planches à pain à l'abri de l'eau
Voici le résultat final complet: la machine à café configurée dans ma cuisine

Logiciel: interface utilisateur vocale

Voyons d’abord le concept de toutes les interactions (voir également le schéma ci-joint): interface utilisateur virtuelle entre tous les services Amazon, le Raspberry Pi et ma machine à café.
Lecture de gauche à droite:Tarte aux framboises a un orateur, microphone, une bouton et certaines LEDs. Ceci répond aux exigences d'utilisation des services vocaux Alexa (l'activation vocale n'est autorisée que sur l'Echo, je dois donc utiliser un bouton). En tant que programme python pour gérer cela, j’ai utilisé la mise en oeuvre AlexaPi.Ok, commande enregistrée. Un fichier audio est maintenant chargé sur Service vocal Amazon Alexa.AVS fait un discours en texte et pousse cela dans un Kit de compétences Amazon Alexa.ASK reconnaît les commandes et les pousse à AWS Lambda, basé sur la configuration d’Intents que j’ai réalisée sur ASK.AWS Lambda est une plate-forme de programmation dans laquelle j’ai configuré un script python pour traiter les intentions reçues. Il lit le AWS IoT données de ma chose, et télécharge également de nouvelles données à ma chose. AWS IoT est le courtier de données qui envoie des messages «Delta» aux abonnés. Le Tarte aux framboises est abonné à ma Chose et reçoit donc les messages Delta. Il parle à travers GPIO avec le Cafetière pour connaître l'état et appliquer les messages Delta en tant que commandes à la machine à café. Pour communiquer avec AWS IoT, j'ai utilisé les bibliothèques python fournies par Amazon sur Github à la fois sur Raspberry Pi et AWS Lambda. Raison, j’ai utilisé la bibliothèque sur l’implémentation Lambda pour des raisons de cohérence et parce que je n’ai pas réussi à faire fonctionner boto3. Cela signifie que 3 programmes sont impliqués: Alexa Voice Services et Alexa Skills Kit, en connexion avec AWS Lambda et AWS IoTAlexa Pi (modifié). Sur le Raspberry PiCoffee Machine traitant sur le Raspberry Pi Pour les faire fonctionner, j’ai lu de nombreux forums et essayé de nombreux exemples, mais cela m’a pris un certain temps à le faire fonctionner. Pour vous aider à ne pas tomber des mêmes obstacles, Voici mes moments d'apprentissage:Le Certificat de l'autorité de certification Amazon Root est bien caché. Vous pouvez le trouver ici: AWS IoT Device SDK pour Python (et inclus dans mon fichier source complet) .En Lambda, je n’ai pas pu obtenir boto3 travailler comme cela ne nécessite pas de certificat et IoT fait. Alors j'ai fini par inclure le AWSIoTPythonSDK avec mon projet, également bon pour la cohérence entre le Raspberry Pi et Lambda. Comme j'ai inclus un module, je dois maintenant télécharger le projet complet sous forme de fichier ZIP. Lorsque vous connectez plusieurs programmes au même objet IoT, lisez DELTA et écrivez REPORTED and DESIRED, différents ID AWSIoTMQTTShadowClient sont nécessaires (tous les exemples que j'ai trouvés appartenaient à 1 programme utilisant 1 ID, ce qui me fait me retrouver dans des déconnexions et des files d'attente)

Logiciel: configuration Amazon

Nous commençons par configurer la partie Amazon qui existe entre plusieurs services qui se parlent, et vous générez ici les connexions et les certificats dont vous aurez besoin ultérieurement. Vous aurez besoin d'un compte pour Amazon Developer Services et Amazon Web Services.1) Service vocal AlexaAccédez au site Web Alexa Voice Service et créez vous-même une configuration comme celle-ci. Les informations du profil de sécurité sont nécessaires dans votre configuration Alexa Pi.1 / 4 • La configuration de base de votre service vocal Alexa
2) IoTAccédez au site Web AWS IoT et créez 3 ressources: une chose, une stratégie et un certificat. Ce certificat est nécessaire pour la configuration Lambda et votre configuration Raspberry.1 / 4 • Créez 3 ressources
3) AWS LambdaAccédez au site Web AWS Lambda et créez vous-même une fonction. Insérez les certificats dans le fichier zip et modifiez les entrées **** dans le fichier python pour refléter vos certificats et ARN.1 / 4 • Créez une fonction Lambda
4) Kit de compétences Alexa:Accédez au site Web Alexa Skills Kit et créez votre compétence avec des intentions d'interaction, des types d'emplacement et des énoncés d'énoncés.1 / 6 • Choisissez le modèle d'interaction personnalisé.

Logiciel: Configuration de Raspberry Pi

Je suppose que vous avez un Raspberry Pi en état de marche, y compris une bibliothèque GPIO et Python. Pour l’environnement de développement, j’utilise Adafruit WebIDE, également facile si vous n’êtes pas sûr de vos bibliothèques, elles installent tout ce dont vous avez besoin. Vous n’avez pas besoin de SPI, il est peut-être même préférable de le désactiver car nous utilisons toutes les broches GPIO disponibles. Quelques réglages de base que vous souhaitez effectuer sur votre Raspberry Pi, mettez à jour Raspberry Pi avec la dernière mise à jour de greatestudo apt-get
sudo apt-get update
Dans mon projet, je n'enregistre pas les scripts pour qu'ils s'exécutent automatiquement, vous devrez les démarrer manuellement (cela facilite l'arrêt du script, l'ajustement du code, le démarrage du script).Configuration d'Alexa PiEnsuite, nous avons créé Alexa Pi. J'ai pris la source Alexa Pi des ressources Github de Sam Machin (et d'autres) (https://github.com/sammachin/AlexaPi) et des (modifications non encore validées) de Mason Stone (https://github.com/ maso27 / AlexaPi) et apporté des modifications.Avec leur implémentation, les fonctionnalités utilisées pour écouter les mots-clés (non autorisés pour une implémentation Alexa AVS) et la fonctionnalité de radio en ligne incluse, j'ai coupé une partie de leurs fonctionnalités, pour en revenir au cœur. J'ai également apporté quelques améliorations à la détection d'activation vocale afin de détecter le moment où je parle / répondais à Alexa. Une fois que vous avez appuyé sur le bouton, le microphone est activé et le voyant rouge s'allume à 20%. La détection d'activation vocale est également lancée. Il attend que vous parliez, allume le voyant rouge à 100% et enregistre votre voix. Une fois que vous arrêtez de parler, le voyant revient à 20% et après 3 secondes de silence, l'enregistrement est arrêté. Le fichier enregistré est chargé sur AVS et le voyant bleu s'allume. Une fois la réponse reçue et lue, le voyant vert s’allume. Si Alexa attend une réponse, le microphone est activé et le voyant rouge s'allume, ce qui permet de relancer ce cercle.Cette version modifiée est jointe à ce projet.Pour activer Alexa Pi, installer les bibliothèques et exécuter l'installation, la dernière étape consiste à ouvrez un navigateur et terminez la création du jeton Alexa: sudo setup.sh
Moment d'apprentissage: Sur le Raspberry Pi, le son ne passe PAS, par défaut, par la prise 3,5 mm, mais utilise AUTO ou HDMI, me laissant dans un silence vide. Assurez-vous donc que la prise jack 3,5 mm est la valeur par défaut: sudo amixer cset numid = 3 1
Dans le code, ajustez la broche GPIO utilisée pour votre bouton et vos voyants. Les informations d'identification pour Alexa sont extraites du fichier creds.py généré lors de l'installation. Une fois que tout est installé, démarrez AlexaPi.py. Alexa attend maintenant votre entrée vocale!Configuration de la machine à caféEnsuite, sur le Raspberry Pi, configurez le script de la machine à café. Installez AWSIoTPythonSDK: installation sudo pip AWSIoTPythonSDK
Téléchargez vos fichiers et n'oubliez pas d'inclure vos 2 certificats AWS IoT! Dans le code, apportez des modifications pour inclure vos certificats et l'ombre IoT à interroger.Une fois que tout est installé, démarrez CoffeeMachine.py. Le programme commencera à interroger AWS IoT pour obtenir des commandes.

Maintenant je suis prêt à demander à ma machine à café de me fabriquer quelque chose!

Vous devriez déjà avoir commencé les deux scripts Python sur votre Raspberry Pi, alors allez-y, demandez à Alexa de vous préparer du café. Démonstration de ma machine à café à commande vocaleSi vous souhaitez contrôler ma machine à café, voici la compétence Alexa!

Changements pour la certification

(Edit 2016-09-09) Pendant le processus de certification, j'ai reçu quelques questions et apporté des modifications pour améliorer mes compétences. Comme ils étaient importants moments d'apprentissage pour moi, je veux les partager avec vous:La compétence peut désormais prendre votre commande à partir de la première ligne de commande:La première version était: Vous: "Alexa, démarrez la machine à café", Alexa: "Bienvenue … quel type de café voulez-vous …", Vous: "Cappuccino s'il vous plait", Alexa "J'aime le cappuccino, avez-vous mis …. "La nouvelle version est: Vous:" Alexa, demande à Coffee Machine de me fabriquer un cappuccino ", Alexa" Bienvenue, j'aime le cappuccino, as-tu mis dans … "Différents ID AWSIoTMQTTShadowClientMes compétences ont tendance à être erronées lorsque vous exécutez trop d'actions dans un court laps de temps. Vous vous souvenez de mon commentaire à propos des différents ID AWSIoTMQTTShadowClient? Ils n'étaient pas encore assez différents … J'ai mis en œuvre une méthode encore plus unique en incluant les derniers chiffres de l'ID de demande Alexa dans l'ID Lambda. Maintenant, plusieurs utilisateurs peuvent travailler en même temps et faire de nombreuses commandes dans le délai imparti de 5 secondes 🙂Résultat: compétence a été certifié!

Laisser un commentaire