[PYTHON] Contrôlez les ampoules LED depuis un micro-ordinateur (Intel Edison) (1)

Certaines ampoules LED du marché peuvent changer de couleur et émettre des sons via Bluetooth. Normalement, il est contrôlé depuis l'application smartphone attachée, mais j'ai contesté le contrôle du micro-ordinateur (Intel Edison).

En premier lieu

À la fin de l'année dernière, j'ai participé au concours de développement informatique Mashup Awards. Cette fois, la deuxième fois que j'ai participé, j'ai créé et demandé un système de toilettes IoT utilisant l'IA (chatbot) et des capteurs (Article connexe ). Une des fonctions du système est une fonction de "surveillance", et si les toilettes sont trop longues, le robot demandera "Est-ce que ça va?", Et si le couvercle est laissé ouvert, "N'est-il pas laissé vide?" Je vais vous exhorter.

Afin de réaliser cette fonction de guidage vocal, nous avons utilisé une ampoule LED avec une fonction de haut-parleur au lieu d'un haut-parleur Bluetooth à fonction unique, mais nous avons dit que "cela facilite la gestion de l'alimentation" et "elle peut être installée au plafond des toilettes et le son peut facilement passer". En plus des mérites, j'ai pu l'utiliser de manière intéressante, comme "changer la couleur en fonction de la langue parlée (exemple: jaune pour attirer l'attention)".

En ce qui concerne les ampoules LED contrôlables, Philips Hue vient à l'esprit en premier, mais pour Hue, qui ne peut contrôler que la lumière, les ampoules LED de type connexion Bluetooth qui peuvent contrôler à la fois le son et la lumière peuvent être utilisées de manière plus intéressante que l'art. J'ai pensé, alors j'ai décidé de résumer la méthode de contrôle ici.

Chose que tu veux faire

slide.png

Dans cet article, nous écrirons d'abord jusqu'à la 1ère étape, et dans les articles suivants, nous écrirons la 2ème étape.

environnement

DSC_0203.JPG

J'ai utilisé Mi Pow PLAYBULB comme ampoule LED (le nom du modèle BT100 est imprimé sur le corps principal). En fait, j'ai essayé plusieurs autres modèles d'ampoules LED contrôlées par Bluetooth, mais je n'ai pas pu analyser le protocole de communication ni le contrôler.

En tant que micro-ordinateur, j'ai utilisé Intel Edison, qui peut fonctionner avec une batterie USB et est facile à manipuler. Je ne l'ai pas essayé, mais je pense que le même contrôle peut être obtenu avec Raspberry Pi 3 et PC.

Procédure de contrôle

[1] Préparation Bluetooth côté micro-ordinateur (Edison)

On suppose que le Wifi d'Intel Edison a déjà été configuré (si vous le souhaitez, vous pouvez également définir ici). La version du micrologiciel est la suivante.

root@edison:~# uname -a
Linux edison 3.10.98-poky-edison+ #1 SMP PREEMPT Mon Jun 6 14:32:08 PDT 2016 i686 GNU/Linux

Dans le même temps, activez Bluetooth. Si vous redémarrez Edison, il sera à nouveau désactivé, donc Je l'ai configuré pour être automatiquement activé au démarrage en faisant référence à this.

root@edison:~# rfkill unblock bluetooth
root@edison:~# rfkill list
...
2: bcm43xx Bluetooth: bluetooth
        Soft blocked: no
        Hard blocked: no

[2] Vérifiez la connexion de l'ampoule LED (PLAYBULB)

On suppose que l'ampoule LED est insérée dans la douille et que la couleur peut être modifiée à partir de l'application de contrôle dédiée PLAYBULB pour smartphones. Tout d'abord, vérifiez si vous pouvez voir PLAYBULB depuis la console Intel Edison.

root@edison:~# bluetoothctl 
[NEW] Controller 98:4F:EE:04:28:48 edison [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller 98:4F:EE:04:28:48 Discovering: yes
[NEW] Device DB:22:4B:13:AC:E6 PLAYBULB COLOUR LED    <--Fonction ampoule LED
[NEW] Device AC:E6:4B:13:E4:9F PLAYBULB COLOUR        <--Fonction haut-parleur

Puisque PLAYBULB a deux fonctions, une ampoule LED et un haut-parleur, vous pouvez en vérifier deux en tant qu'appareil. Notez l'adresse du côté de l'ampoule LED.

[3] Installation de gatttools

Ensuite, installez les outils (gatttools) requis pour le contrôle sur Intel Edison.

Bluetooth a des profils pour divers appareils (profil HID pour la souris et le clavier, profil A2DP pour la voix, etc.), mais PLAYBULB a le profil d'attribut générique (GATT), qui est le profil standard pour Bluetooth LE. ) Est utilisé pour le contrôle. [Article explicatif sur l'utilisation de gatttools sur Intel Edison](https://software.intel.com/en-us/articles/using-the-generic-attribute-profile-gatt-in-bluetooth-low-energy-with- your-intel-edison) est sur le site officiel, il n'y a donc pas de problème avec cette rue. Pour référence, je publierai la commande à portée de main.

root@edison: wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz
root@edison: tar -xf bluez-5.43.tar.xz
root@edison: cd bluez-5.43
root@edison: ./configure --prefix=/usr/local --disable-systemd -disable-udev
root@edison: make
root@edison: make install
root@edison: cp ./attrib/gatttool /usr/local/bin
root@edison: export PATH=$PATH:/usr/local/bin
root@edison: gatttool 
Usage:
  gatttool [OPTION...]
...

Je vais l'utiliser fréquemment à l'avenir, alors je l'ai copié dans / usr / local / bin et l'ai mis dans le chemin.

[4] Essayez de contrôler

À propos du contrôle des appareils avec le profil Bluetooth LE GATT

--Pour un handle spécifique (comme une adresse appelée Attribute Handle)

Je pense que c'est une image. Commençons par changer la couleur de l'ampoule. Après gatttool -b, spécifiez l'adresse du côté de l'ampoule LED qui a été vérifiée avec bluetoothctl plus tôt.

root@edison:~# gatttool -b DB:22:4B:13:AC:E6 -I
[DB:22:4B:13:AC:E6][LE]> connect
Attempting to connect to DB:22:4B:13:AC:E6
Connection successful
[DB:22:4B:13:AC:E6][LE]> char-write-cmd 0x001b 00ff0000  <--rouge
[DB:22:4B:13:AC:E6][LE]> char-write-cmd 0x001b 0000ff00  <--vert
[DB:22:4B:13:AC:E6][LE]> char-write-cmd 0x001b 000000ff  <--Bleu
...

DSC_0036.png

La couleur a-t-elle changé? Dans ce qui précède, le contrôle est effectué en écrivant 4 octets de données dans la poignée (0x001b) qui contrôle la couleur, mais vous pouvez également spécifier des modèles de clignotement, etc. Le tableau de correspondance est présenté ci-dessous.

Mode d'éclairage (0x001b)

Byte Effect
0 Niveau de blanc
1 Niveau rouge
2 Niveau vert
3 Niveau bleu

Mode clignotant / fondu (0x0019)

Byte Effect
0 Reserve?
1 Niveau rouge (en une seule couleur)
2 Niveau vert (couleur unique)
3 Niveau bleu (couleur unique)
4 0x00 :Clignotant une couleur
0x01 :Fondu monochromatique
0x02 :Arc-en-ciel clignotant
0x03 :Fondu arc-en-ciel
5 Reserve?
6 Vitesse d'effet(0x00 le plus rapide)
7 Reserve?

** Attention **: Ce tableau de correspondance n'est pas officiellement diffusé, mais est calculé par une analyse indépendante, il peut donc être incorrect ou changer selon le modèle. De plus, il existe un risque d'endommagement du produit en définissant des paramètres non prévus par le fabricant. Veuillez le faire à vos risques et périls.

Résumé

L'ampoule LED (PLAYBULB) peut désormais être pilotée depuis le micro-ordinateur (Intel Edison) en envoyant une commande de contrôle selon le profil Bluetooth LE GATT.

Cependant, la méthode ci-dessus ne peut pas être appliquée car il est nécessaire d'émettre des commandes de contrôle. Ensuite, nous allons contester le contrôle en utilisant le langage de programmation (Python).

Recommended Posts

Contrôlez les ampoules LED depuis un micro-ordinateur (Intel Edison) (1)
Contrôle des ampoules LED à partir d'un micro-ordinateur (Intel Edison) (2)
Contrôlez le panneau LED Matrix depuis ROS
Réception de la télécommande infrarouge avec Intel Edison
Démarrage Intel Edison
Envoyer la valeur du capteur d'accélération d'Eaglet + Intel Edison à Kinesis