[PYTHON] Faisons une chemise IoT avec Lambda, Kinesis, Raspberry Pi [Partie 1]

Abstract Utilisez Lambda et Kinesis pour créer des T-shirts intelligents avec des matrices LED. La première partie explique comment faire un T-shirt.

Le T-shirt est lié au service construit sur AWS via MQTT, calcule l'indice d'inconfort en fonction des données collectées à partir du capteur de température / humidité et envoie un message à la matrice LED pour l'afficher lorsque certaines conditions sont remplies. Je vais.

Slide022.png

Si l'indice d'inconfort est égal ou supérieur à 85, le T-shirt est chaud et embué et j'aimerais afficher le message "Kuse".

Slide047.png

Ensuite, je vous expliquerai comment faire un T-shirt.

Raspberry Pi Type B+ Le Raspberry Pi est utilisé pour contrôler la matrice LED et le capteur de température / humidité. L'E / S à 40 broches est disponible pour le Raspberry Pi Type B +. La LED était connectée via GPIO et le capteur de température / humidité était connecté via USB. Raspberry Pi se vend environ 5000 yens. Il est pratique d'en avoir un dans la famille (* ´Д`) Raspberry Pi

Slide024.png

Pièces LED Matrix

La matrice de LED est connectée à 64 (8x8) LED et est contrôlée par le Raspberry Pi via GPIO. En utilisant une technique appelée éclairage dynamique, vous pouvez facilement contrôler 64 LED avec GPIO 16 broches.

Cette fois, 64 LED ont été soudées à la carte une par une. Si vous utilisez une planche flexible, vous ressentirez moins d'inconfort lorsque vous l'installez sur un T-shirt. Un autre bon point est qu'il peut être facilement coupé avec des ciseaux. Carte flexible

Slide027.png

Le câblage lui-même est le même que l'appareil vendu par Akizuki Denshi, donc je pense qu'il peut être monté sans difficulté par soudure en se référant au schéma ci-dessous. Cependant, cela prend beaucoup de temps et d'efforts, donc je n'ai que de la patience. Matrice LED électronique Akizuki alt

En référence au schéma de circuit ci-dessus, l'anode LED (13,3,4,10,6,11,15,16 sur le schéma de circuit) et la cathode (à gauche 9,14,8,12,1,7, schéma de circuit) Au total, 16 broches (2,5) seront connectées au GPIO du Raspberry pi. GPIO a une sortie de 3,3 V, donc convertissez le courant de la LED et connectez directement une résistance d'environ 300 Ω.

GPIO (19, 13, 16, 5, 22, 27, 17, 4) → R (300Ω) x8 → Anoden (13, 3, 4, 10, 6, 11, 15, 16 sur le schéma du circuit) → LEDx64 → Cathode (Schéma du circuit gauche 9, 14, 8, 12, 1, 7, 2, 5) → GPIO (18, 23, 24, 25, 12, 16, 20, 21)

Au fait, j'ai connecté le Raspberry pi et la matrice LED avec un câble plat. Les câbles plats sont vendus en mètres dans les magasins de pièces détachées. Comme le connecteur GPIO du Raspberry pi est à 40 broches, il est pratique de se connecter avec un câble plat à 40 cœurs. Corps de câble plat

Le sertissage du connecteur et du câble plat est coûteux en raison de l'équipement spécial, mais il est étonnamment facile à sertir avec une force universelle. J'ai mis mon poids dessus avec une baguette fendue et je l'ai sertie. Connecteur de câble plat

Police de la matrice LED

Les caractères affichés sur la matrice LED sont affichés sous forme de 8x8 points. Une façon est de créer une matrice qui représente les caractères par vous-même et de les afficher en points, mais cette fois, nous utiliserons une police à 8 points appelée Misaki Font. Police Misaki

Slide028.png

Télécharger le fichier BDF pour convertir en code Python. Convertissez au format BDF comme suit:

font_converter.py


import sys
print 'codes = {'
data = u''
for line in sys.stdin:
	items = line[0:-1].split(' ')
	if items[0] == 'STARTCHAR':
		code_char = items[1]
	if items[0] == 'ENCODING':
		code = items[1]
		data = u''
#·····à suivre

Donc, j'ai remarqué ici, mais comme c'est le cas, la liste de codes du tableau JIS est sortie, il est donc nécessaire de la convertir en tableau UTF8. Cependant, je n'avais pas beaucoup de temps, j'ai donc décidé de ne prendre en charge que les caractères alphanumériques, hiragana et katakana (pas kanji), et je l'ai converti en un tableau UTF8 en utilisant le dernier secret Excel de l'ingénieur. Comme c'était moche lors de la conversion, je ne laisserai que le code de conversion de police du résultat de sortie.

font.py


codes = {
        32: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  ],
        33: [ 0x40, 0x40, 0x40, 0x40, 0x00, 0x40, 0x00, 0x00,  ],
        34: [ 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  ],
        35: [ 0xa0, 0xe0, 0xa0, 0xa0, 0xe0, 0xa0, 0x00, 0x00,  ],
        36: [ 0x40, 0xe0, 0xc0, 0x60, 0xe0, 0x40, 0x00, 0x00,  ],
        37: [ 0x00, 0x80, 0x20, 0x40, 0x80, 0x20, 0x00, 0x00,  ],
#〜〜〜〜〜
        8736: [ 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x7e, 0x00,  ],
        8735: [ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7e, 0x00,  ],
        8895: [ 0x00, 0x02, 0x06, 0x0a, 0x12, 0x22, 0x7e, 0x00,  ],
        8757: [ 0x00, 0x44, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,  ],
        8745: [ 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00,  ],
        8746: [ 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00,  ],
}

https://gist.github.com/shimy/f23b54c0f57d7b325e23

Programme d'affichage LED Matrix

Vous pouvez afficher un message dans la matrice LED avec GPIO avec le code suivant. La vidéo suivante sera utile pour le principe de la matrice LED. Vous pouvez également comprendre le contrôle GPIO de Python. Raspberry Pi Project: The LED Matrix

control.py


# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
import font as font
import os
import sys

###### GPIO Initialization #####
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)

cathodes = [4,17,27,22,5,6,13,19]
anodes = [18,23,24,25,12,16,20,21]

for cathode in cathodes:
    GPIO.setup(cathode, GPIO.OUT)
    GPIO.output(cathode, 0)

for anode in anodes:
    GPIO.setup(anode, GPIO.OUT)
    GPIO.output(anode, 0)

###### Display message #####
def display_message(str):
    sleeptime = 0.001
    speed = 8
    half = 4
    full = 8
    matrix_height = 8
    matrix_width = 0

    for idx in range(len(str)):
        char_code = ord(str[idx])
        if char_code < 1000:
            matrix_width += half
        else:
            matrix_width += full

    matrixes = matrix_height*['']

    for idx in range(len(str)):
        char_code = ord(str[idx])
        if font.codes.has_key(char_code):
            hex_pattern = font.codes[char_code]
        else:
            hex_pattern = font.codes[9632]

        for n in range(matrix_height):
            if char_code < 1000:
                bits_str = format(hex_pattern[n]>>4, '04b')
            else:
                bits_str = '{0:08b}'.format(hex_pattern[n])
            bits_str = bits_str.replace('0', '.').replace('1', 'o')
            bits_str = bits_str.replace('.', '1').replace('o', '0')
            matrixes[n] += bits_str

    try:
        pattern = matrix_height*['']
        for cnt in range(len(matrixes[0])-matrix_height):
            
            for row_no in range(matrix_height):
                pattern[row_no] = matrixes[row_no][cnt:cnt+matrix_height]

            os.system('clear')
            print '\n'.join(pattern).replace('0', 'o').replace('1', ' ')

            for pause in range(speed):
                for i in range(8):
                    for j in range(8):
                        GPIO.output(cathodes[j], int(pattern[i][j]))
                    
                    GPIO.output(anodes[i],1)
                    time.sleep(sleeptime)
                    GPIO.output(anodes[i],0)

    except KeyboardInterrupt:
        GPIO.cleanup()

##### main #####
str = u"Bonjour Sekai"
display_message(str)

Capteur de température / humidité

Pour le capteur de température / humidité, nous avons utilisé USBRH, qui est vendu par Straberry Linux Co, Ltd. https://strawberry-linux.com/catalog/items?code=52002

Slide025.png

Vous pouvez obtenir la température et l'humidité en exécutant usbrh comme suit.

$ sudo usbrh
$ 29.68 41.41

Vous pouvez découvrir comment l'installer et l'utiliser en vous référant aux articles suivants. http://hitoriblog.com/?p=9835 http://www.infiniteloop.co.jp/blog/2013/02/raspberrypitem/

Test de t-shirt

Screen Shot 2014-12-22 at 12.19.21 AM.png https://www.youtube.com/watch?v=YxEnnobXkWY

Résumé

C'est un article pour le calendrier de l'Avent Lambda, mais je n'ai pas encore parlé de Lambda ... Je suis épuisé, alors rencontrons-nous dans la deuxième partie.

Avertissement

Ceci est une opinion individuelle et n'a rien à voir avec l'entreprise.

Recommended Posts

Faisons une chemise IoT avec Lambda, Kinesis, Raspberry Pi [Partie 1]
Faire un rappel de parapluie avec Raspberry Pi Zero W
Fabriquez un climatiseur intégré à un ordinateur personnel "airpi" avec Raspberry Pi 3!
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
Faire une minuterie de lavage-séchage avec Raspberry Pi
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Fabriquez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 3
Essayez de détecter un objet avec RaspberryPi ~ Partie 1: Comparaison de la vitesse de détection ~
Créons une application capable de rechercher des images similaires avec Python et Flask Part1
IoT facile pour démarrer avec Raspeye et MESH
Visualisons la pièce avec tarte aux râpes, partie 1
Faisons Raspberry Pi?
DigitalSignage avec Raspberry Pi
Exploitons GPIO de Raspeye avec Python CGI
Fabriquez une voiture robotique à conduite automatique avec Raspberry Pi3 B + et capteur de distance à ultrasons HC-SR04
Jouez avec le module de caméra Raspberry Pi Zero WH Partie 1
Créez des jeux LCD (16x2) avec Raspberry Pi et Python
Connectez Raspberry Pi à Alibaba Cloud IoT Platform avec «Python»
Plantes Mutter avec Raspberry Pi
Faisons Othello avec wxPython
Faisons un plugin Errbot
Accédons à votre tarte à la râpe domestique depuis l'extérieur de votre maison avec VPN (WireGuard)
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
Faire une boussole d'affichage kanji avec Raspberry Pi et Sense Hat
Créez un effecteur pour la visioconférence avec Spout + OpenCV + dlib (Partie 1)
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
[Raspberry Pi] Contrôle du moteur pas à pas avec Raspberry Pi
Utilisez vl53l0x avec RaspberryPi (python)
Commande de servomoteur avec Raspberry Pi
Communication série avec Raspberry Pi + PySerial
Faisons une rupture de bloc avec wxPython
Faisons l'IA d'Othello avec Chainer-Part 1-
Essayez L Chika avec raspberrypi
Construire un serveur VPN avec Raspberry Pie
Essayez de déplacer 3 servos avec Raspeye
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Faisons l'IA d'Othello avec Chainer-Part 2-
Créer un exe Scrapy avec Pyinstaller
Utiliser une webcam avec Raspberry Pi
Créer une boîte de publication MQTT Partie 2
[Python + PHP] Créez un moniteur de température / humidité / pression avec Raspberry Pi
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
Créons un modèle de reconnaissance d'image avec vos propres données et jouons!
Créer une socket avec une interface Ethernet (eth0, eth1) (Linux, C, Raspberry Pi)