Abstract Verwenden Sie Lambda und Kinesis, um intelligente T-Shirts mit LED-Matrizen zu erstellen. Der erste Teil erklärt, wie man ein T-Shirt macht.
Das T-Shirt ist über MQTT mit dem auf AWS basierenden Service verbunden, berechnet den Unbehaglichkeitsindex basierend auf den vom Temperatur- / Feuchtigkeitssensor gesammelten Daten und sendet eine Nachricht an die LED-Matrix, um anzuzeigen, wenn bestimmte Bedingungen erfüllt sind. Ich werde.
Wenn der Unbehaglichkeitsindex 85 oder höher ist, ist das T-Shirt heiß und dampfig, und ich möchte die Meldung "Kuse" anzeigen.
Dann werde ich erklären, wie man ein T-Shirt macht.
Raspberry Pi Type B+ Der Raspberry Pi dient zur Steuerung der LED-Matrix und des Temperatur- / Feuchtigkeitssensors. Für Raspberry Pi Type B + ist eine 40-polige E / A verfügbar. Die LED wurde über GPIO und der Temperatur- / Feuchtigkeitssensor über USB angeschlossen. Raspberry Pi verkauft für rund 5.000 Yen. Es ist bequem, einen in der Familie zu haben (* ´Д`) Raspberry Pi
Die LED-Matrix ist mit 64 (8x8) LEDs verbunden und wird vom Raspberry Pi über GPIO gesteuert. Mit einer Technik namens Dynamische Beleuchtung können Sie 64 LEDs mit GPIO 16-Pin problemlos steuern.
Diesmal wurden 64 LEDs einzeln auf die Platine gelötet. Wenn Sie ein flexibles Board verwenden, werden Sie sich weniger unwohl fühlen, wenn Sie es auf einem T-Shirt installieren. Ein weiterer guter Punkt ist, dass es leicht mit einer Schere geschnitten werden kann. Flexibles Board
Die Verkabelung selbst ist die gleiche wie bei dem von Akizuki Denshi verkauften Gerät, daher denke ich, dass es ohne Schwierigkeiten durch Löten unter Bezugnahme auf den folgenden Schaltplan montiert werden kann. Es kostet jedoch viel Zeit und Mühe, so dass ich nur Geduld habe. Akizuki Electronic LED Matrix
In Bezug auf den obigen Schaltplan sind die LED-Anode (13,3,4,10,6,11,15,16 im Schaltplan) und die Kathode (links 9,14,8,12,1,7, Schaltplan) Insgesamt 16 Pins (2,5) werden an den GPIO des Raspberry Pi angeschlossen. GPIO hat einen Ausgang von 3,3 V, wandeln Sie also den LED-Strom um und schließen Sie einen Widerstand von ca. 300 Ω direkt an.
GPIO (19, 13, 16, 5, 22, 27, 17, 4) → R (300 Ω) x8 → Anoden (13, 3, 4, 10, 6, 11, 15, 16 im Schaltplan) → LEDx64 → Kathode (Schaltplan links 9, 14, 8, 12, 1, 7, 2, 5) → GPIO (18, 23, 24, 25, 12, 16, 20, 21)
Übrigens habe ich den Raspberry Pi und die LED-Matrix mit einem Flachkabel verbunden. Flachkabel werden in Teileläden in Metern verkauft. Da der GPIO-Anschluss von Raspberry pi 40-polig ist, ist es bequem, ihn mit einem 40-adrigen Flachkabel anzuschließen. Flachkabelkörper
Das Crimpen des Steckers und des Flachkabels ist aufgrund der speziellen Ausrüstung teuer, aber es ist überraschend einfach, mit einer universellen Kraft zu crimpen. Ich legte mein Gewicht mit einem gespaltenen Essstäbchen darauf und quetschte es. Flachkabelanschluss
Die auf der LED-Matrix angezeigten Zeichen werden als 8 x 8 Punkte angezeigt. Eine Möglichkeit besteht darin, eine Matrix zu erstellen, die die Zeichen selbst darstellt und in Punkten anzeigt. Diesmal verwenden wir jedoch eine 8-Punkt-Schriftart namens Misaki Font. Misaki-Schriftart
BDF-Datei herunterladen, um sie in Python-Code zu konvertieren. Konvertieren Sie wie folgt in das BDF-Format:
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''
#·····Fortsetzung folgt
Ich habe es hier bemerkt, aber so wie es ist, wird die Codeliste des JIS-Arrays ausgegeben, so dass es notwendig ist, sie in ein UTF8-Array zu konvertieren. Da ich jedoch nicht viel Zeit hatte, entschied ich mich, nur alphanumerische Zeichen, Hiragana und Katakana (nicht Kanji) zu unterstützen, und konvertierte es mit dem letzten geheimen Excel des Ingenieurs in ein UTF8-Array. Da es während der Konvertierung hässlich war, werde ich nur den Schriftkonvertierungscode des Ausgabeergebnisses belassen.
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
Sie können mit GPIO eine Meldung in der LED-Matrix mit dem folgenden Code anzeigen. Das folgende Video ist hilfreich für das Prinzip der LED-Matrix. Sie können die GPIO-Steuerung auch von Python aus verstehen. 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"Hallo Sekai"
display_message(str)
Für den Temperatur- / Feuchtigkeitssensor haben wir USBRH verwendet, das von Straberry Linux Co, Ltd. vertrieben wird. https://strawberry-linux.com/catalog/items?code=52002
Sie können die Temperatur und Luftfeuchtigkeit ermitteln, indem Sie usbrh wie folgt ausführen.
$ sudo usbrh
$ 29.68 41.41
Informationen zur Installation und Verwendung finden Sie in den folgenden Artikeln. http://hitoriblog.com/?p=9835 http://www.infiniteloop.co.jp/blog/2013/02/raspberrypitem/
https://www.youtube.com/watch?v=YxEnnobXkWY
Es ist ein Artikel für den Lambda-Adventskalender, aber ich habe noch nicht über Lambda gesprochen ... Ich bin erschöpft, also treffen wir uns im zweiten Teil.
Dies ist eine individuelle Meinung und hat nichts mit dem Unternehmen zu tun.
Recommended Posts