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.
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".
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
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
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
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
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
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
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)
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
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/
https://www.youtube.com/watch?v=YxEnnobXkWY
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.
Ceci est une opinion individuelle et n'a rien à voir avec l'entreprise.
Recommended Posts