[PYTHON] Machen wir ein IoT-Shirt mit Lambda, Kinesis, Raspberry Pi [Teil 1]

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.

Slide022.png

Wenn der Unbehaglichkeitsindex 85 oder höher ist, ist das T-Shirt heiß und dampfig, und ich möchte die Meldung "Kuse" anzeigen.

Slide047.png

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

Slide024.png

LED Matrix Teile

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

Slide027.png

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 alt

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

LED Matrix Schriftart

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

Slide028.png

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

LED Matrix Anzeigeprogramm

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)

Temperatur- / Feuchtigkeitssensor

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

Slide025.png

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/

T-Shirt Test

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

Zusammenfassung

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.

Haftungsausschluss

Dies ist eine individuelle Meinung und hat nichts mit dem Unternehmen zu tun.

Recommended Posts

Machen wir ein IoT-Shirt mit Lambda, Kinesis, Raspberry Pi [Teil 1]
Machen Sie eine Regenschirmerinnerung mit Raspberry Pi Zero W.
Machen Sie einen in die Klimaanlage integrierten Personal Computer "airpi" mit Raspberry Pi 3!
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Versuchen Sie, ein Objekt mit RaspberryPi zu erkennen ~ Teil 1: Vergleich der Erkennungsgeschwindigkeit ~
Lassen Sie uns eine App erstellen, die ähnliche Bilder mit Python und Flask Part1 durchsuchen kann
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Lass uns Raspberry Pi machen?
DigitalSignage mit Raspberry Pi
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Machen Sie ein Auto mit automatischem Fahrroboter mit Raspberry Pi3 B + und Ultraschall-Abstandssensor HC-SR04
Spielen Sie mit dem Raspberry Pi Zero WH-Kameramodul Teil 1
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Verbinden Sie Raspberry Pi mit "Python" mit der Alibaba Cloud IoT Platform
Mutter pflanzt mit Raspberry Pi
Machen wir Othello mit wxPython
Lassen Sie uns ein Errbot-Plugin erstellen
Lassen Sie uns mit VPN (WireGuard) von außerhalb Ihres Hauses auf Ihren Home Rasp Pie zugreifen.
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Erstellen Sie einen Effektor für Videokonferenzen mit Spout + OpenCV + dlib (Teil 1).
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Serielle Kommunikation mit Raspberry Pi + PySerial
Machen wir einen Blockbruch mit wxPython
Machen wir Othellos KI mit Chainer-Teil 1-
Probieren Sie L Chika mit Himbeerpi
Aufbau eines VPN-Servers mit Raspberry Pie
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Machen wir Othellos KI mit Chainer-Teil 2-
Machen Sie Scrapy exe mit Pyinstaller
Verwenden einer Webkamera mit Raspberry Pi
Erstellen Sie eine MQTT Publisher Box Teil 2
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Lassen Sie uns ein Bilderkennungsmodell mit Ihren eigenen Daten erstellen und spielen!
Erstellen Sie einen Socket mit einer Ethernet-Schnittstelle (eth0, eth1) (Linux, C, Raspberry Pi).