「Raspberry Pi」カテゴリーアーカイブ

【ラズパイ】e-Paperを使ってみる。

今回購入したのはこちら。

e-Paperです。

HATになっているので、GPIOのピンを刺すと、ラズパイゼロの大きさにピッタリはまります。

使用する方法はこちらに書いてあるのですが。

https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT_(B)_Manual#Introduction

使用するためには、ラズパイの設定でSPIを有効にする必要があります。

sudo raspi-config

必要なPythonモジュールをインストール

sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev

サンプルのダウンロードはGitHubからチェックアウトする方法と、

圧縮ファイルをダウンロードして解凍する方法が記載されていますが、

どちらか一方だけで大丈夫です。

git clone https://github.com/waveshare/e-Paper.git
cd e-Paper/RaspberryPi_JetsonNano/

あとはデモ用のプログラムを実行するだけなのですが、

美味く実行できない事件が発生。

cd python/examples/
python3 epd_2in13b_V4_test.py

おそらくサンプルのバグだと思うのですが、

python3 epd_2in13b_V3_test.py

で上手く実行できました。

次回はサンプルコードの解析を行いたいと思います。

【ラズパイ】0~9の数字を表示する

7セグLEDの桁を4桁に変更しました。

それに伴い、回路も修正。

さて、実際にプログラミを作成していきます。

まずは初期化。

def initialize():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17, GPIO.OUT)
    GPIO.setup(27, GPIO.OUT)
    GPIO.setup(22, GPIO.OUT)
    GPIO.setup(10, GPIO.OUT)
    GPIO.setup(9, GPIO.OUT)
    GPIO.setup(11, GPIO.OUT)
    GPIO.setup(5, GPIO.OUT)
    GPIO.setup(14, GPIO.OUT)
    GPIO.setup(15, GPIO.OUT)
    GPIO.setup(18, GPIO.OUT)
    GPIO.setup(23, GPIO.OUT)
    GPIO.setup(24, GPIO.OUT)


def clear():
    GPIO.output(17, GPIO.LOW)
    GPIO.output(27, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(5, GPIO.LOW)
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO.LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)

LEDを点灯させるのですが、GPIOの番号では分かりづらいので、LEDの番号に置き換え。

def ledA():
    GPIO.output(17, GPIO.HIGH)

def ledB():
    GPIO.output(27, GPIO.HIGH)

def ledC():
    GPIO.output(22, GPIO.HIGH)

def ledD():
    GPIO.output(10, GPIO.HIGH)

def ledE():
    GPIO.output(9, GPIO.HIGH)

def ledF():
    GPIO.output(11, GPIO.HIGH)

def ledG():
    GPIO.output(5, GPIO.HIGH)

これを使って、数字0~9を点灯する処理を作っていきます。


def output0():
    clear()
    ledA()
    ledB()
    ledC()
    ledD()
    ledE()
    ledF()

def output1():
    clear()
    ledB()
    ledC()

def output2():
    clear()
    ledA()
    ledB()
    ledG()
    ledE()
    ledD()

def output3():
    clear()
    ledA()
    ledB()
    ledG()
    ledC()
    ledD()

def output4():
    clear()
    ledF()
    ledB()
    ledG()
    ledC()

def output5():
    clear()
    ledA()
    ledF()
    ledG()
    ledC()
    ledD()

def output6():
    clear()
    ledA()
    ledF()
    ledG()
    ledC()
    ledE()
    ledD()

def output7():
    clear()
    ledA()
    ledB()
    ledC()

def output8():
    clear()
    ledA()
    ledB()
    ledC()
    ledD()
    ledE()
    ledF()
    ledG()

def output9():
    clear()
    ledA()
    ledB()
    ledC()
    ledD()
    ledF()
    ledG()

【ラズパイ】7セグLEDを試す。

久しぶりのラズパイ。

以前は、温湿度計の測定結果をLCDに表示されていたのですが、

配線が壊れまして、

直巣のめんどくさい、となって、そのまま放置していました。

しかし、7セグLEDを使用したらどうだろう?と思いまして、試してみることにしました。

これを実際に回路に組み込んでみた。

思った以上に配線汚い。

7セグLEDの回路図はこんなかんじ。

下の7端子はラズパイのGPIOに接続。

上の3端子は、トランジスタのコレクタに接続します。

トランジスタのベースには、GPIO14,15,18を接続します。

エミッタはGNDに接続します。

これは、フラッシュ型になっていまして、3桁を異なる値にするためには、出力を点滅するように操作することによって、表示を実現する仕組み。

トランジスタはその出力をコントロールするためのスイッチです。

この回路でLED点灯を確認したので、実際の処理を作っていきます。

【ALEXAスキル開発】どうも、今のままではAlexa連携はできないっぽい。

あれからAlexaからWebAPIを実行する方法を探ってみたのですが、

結論から言うと、今のままでは無理っぽいです。

理由は、WebAPIを実行するためには、インターネットからHTTPSでアクセスできることが条件と言うことです。

https://developer.amazon.com/ja-JP/docs/alexa/custom-skills/host-a-custom-skill-as-a-web-service.html

今の環境下では、テレビの赤外線を使用しているラズパイはローカルネットワーク環境下でのみ実行可能で、インターネットからアクセスしようにも、プロバイダー(ビッグローブ)側で自宅IPへの直アクセスもブロックされているっぽいのです。

外からアクセスする手段が無い以上、どうすることもできません。

Arduinoだとこんな感じで使用できるみたいです。

https://dev.classmethod.jp/articles/smart-home-skill/

なので、Alexaスキル開発は一旦中断。

ただ、テレビの赤外線通信はこのままではもったいないので、別の活用法を考えてみたいと思います。

リモコンが無くても、PCやスマホからコントロールできるようにするとか。

ちょっとそっちの方で進めてみましょうか。

他にやることないし。

【ラズパイ】WebAPIで赤外線信号を送信する

結局は、ほとんどの信号をmode2コマンドでトレースして、赤外線信号データを登録しました。

https://github.com/takishita2nd/tv_ir/blob/master/tv.conf

全てきちんと動作することを確認しています。

これをWebAPIで実行できるように、簡易httpサーバをpythonで作成します。

すでにやってきたことなので、サクッと作成。

import json
import time
import threading
import subprocess

from http.server import BaseHTTPRequestHandler
from http.server import HTTPServer
from http import HTTPStatus
from typing import TypeVar
from urllib.parse import urlparse

PORT = 8000

def __main__():
    thread = threading.Thread(target=httpServe)
    thread.start()
    
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        return

def httpServe():
    handler = StubHttpRequestHandler
    httpd = HTTPServer(('',PORT),handler)
    httpd.serve_forever()

class StubHttpRequestHandler(BaseHTTPRequestHandler):
    server_version = "HTTP Stub/0.1"
    thread = None
    aviFilename = ""

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def do_POST(self):
        content_len = int(self.headers.get('content-length'))
        requestBody = json.loads(self.rfile.read(content_len).decode('utf-8'))
        command = requestBody['contents']['command']
        args = ['irsend', 'SEND_ONCE', 'tv', command]
        res = ""
        try:
            res = subprocess.run(args, stdout=subprocess.PIPE)
        except:
            ""

        response = { 'status' : 200 }
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        responseBody = json.dumps(response)

        self.wfile.write(responseBody.encode('utf-8'))

__main__()

これに対して、PostmanというWebAPIを送信するツールを使って、リクエストを送ります。

これで動きました。

【ラズパイ】赤外線信号の学習

えっと、

配線を間違えたせいで、赤外線受信モジュールが壊れました。

まぁ、もう一個あったので、そちらに交換しましたが。

そして、もう一つ、

前回のやり方だと、TVが反応してくれるコマンドもあれば、反応してくれないコマンドもありました。

むしろ、反応してくれないコマンドの方が多い。

なので、やり方を変えます。

こちらの記事を参考にしました。

https://qiita.com/amaebi-tabetai/items/211b9c6f751c96ff1fd7

irrecordというコマンドを使用して、赤外線のデータを何回か入力させて、正しい信号に直してくれることができるみたいです。

irrecord --disable-namespace -f -d /dev/lirc1 --driver default ~/lircd.conf

受信機をlirc1にしているので、こちらを使用します。

pi@raspberrypi:~ $ irrecord --disable-namespace -f -d /dev/lirc1 --driver default ~/lircd.
conf
Using raw access on device /dev/lirc1

irrecord -  application for recording IR-codes for usage with lirc
Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

This program will record the signals from your remote control
and create a config file for lircd.

A proper config file for lircd is maybe the most vital part of this
package, so you should invest some time to create a working config
file. Although I put a good deal of effort in this program it is often
not possible to automatically recognize all features of a remote
control. Often short-comings of the receiver hardware make it nearly
impossible. If you have problems to create a config file READ THE
DOCUMENTATION at https://sf.net/p/lirc-remotes/wiki

If there already is a remote control of the same brand available at
http://sf.net/p/lirc-remotes you might want to try using such a
remote as a template. The config files already contains all
parameters of the protocol used by remotes of a certain brand and
knowing these parameters makes the job of this program much
easier. There are also template files for the most common protocols
available. Templates can be downloaded using irdb-get(1). You use a
template file by providing the path of the file as a command line
parameter.

Please take the time to finish the file as described in
https://sourceforge.net/p/lirc-remotes/wiki/Checklist/ an send it
to  <lirc@bartelmus.de> so it can be made available to others.

Press RETURN to continue.

Checking for ambient light  creating too much disturbances.
Please don't press any buttons, just wait a few seconds...

No significant noise (received 0 bytes)

Enter name of remote (only ascii, no spaces) :
Enter name of remote (only ascii, no spaces) :tv
Using tv.lircd.conf as output filename

Now start pressing buttons on your remote control.

It is very important that you press many different buttons randomly
and hold them down for approximately one second. Each button should
generate at least one dot but never more than ten dots of output.
Don't stop pressing buttons until two lines of dots (2x80) have
been generated.

Press RETURN now to start recording.
................................................................................

Please enter the name for the next button (press <ENTER> to finish recording)
channel1

Now hold down button "channel1".
Timeout (10 seconds), try again (29 retries left).

Now hold down button "channel1".

Please enter the name for the next button (press <ENTER> to finish recording)


Successfully written config file tv.lircd.conf

Press RETURN now to start recording.のところで、学習するボタンをひたすら押し続ける。

それが終われば、コマンド名に名前をつけて終了。

作成されたconfファイルには、こんな感じになっていました。

      begin raw_codes

          name channel1
             9082    4465     624     508     619     514
              621     514     622     515     621     515
              596     541     621    1645     596     541
              640    1636     588    1671     621    1645
              595    1671     596    1683     585    1671
              594     543     564    1703     566    1703
              593     548     560     571     565     573
              563     571     564     572     564     572
              564     572     563     572     563    1708
              567    1696     564    1702     564    1708
              560    1702     576    1692     565    1700
              565

      end raw_codes

これを、前回と同じように/etc/lirc/lircd.conf.d/tv.confに記入して、lircdを再起動。

これで、コマンドが動くことを確認しました。

こっちのやり方の方が確実かもしれない。

【ラズパイ】lircを使用した赤外線信号のトレースと送信

動いた。😄

lircのインストール

$ sudo apt-get install lirc

/boot/config.txtを書き換える。

今回は受信信号をGPIO21、赤外線LEDをGPIO20に接続しています。

# Uncomment this to enable infrared communication.
dtoverlay=gpio-ir,gpio_pin=21
dtoverlay=gpio-ir-tx,gpio_pin=20

/etc/lirc/lirc_options.confを書き換える。

まずはリモコンの信号を受信してデータを取るので、deviceは/dev/lirc1を記入する。

[lircd]
nodaemon        = False
driver          = default
device          = /dev/lirc1

lircdを一時停止。

$ sudo service lired stop

リモコンの信号を読み取る。

以下のコマンドを入力後、リモコンのボタンを押す。

今回は音量UPのボタンを押してみた。

mode2 -d /dev/lirc1 > volup.txt

volup.txtには、いかの様に出力されました。

space 16777215
pulse 9059
space 4508
pulse 632
space 501
pulse 635
space 506
pulse 681
space 455
pulse 682
space 456
pulse 630
space 505
pulse 632
space 505
pulse 584
space 1684
pulse 681
space 455
pulse 584
space 1684
pulse 584
space 1684
pulse 584
space 1684
pulse 585
space 1684
pulse 585
space 1685
pulse 640
space 1581
pulse 689
space 1627
pulse 611
space 524
pulse 611
space 1658
pulse 615
space 523
pulse 615
space 1655
pulse 614
space 522
pulse 615
space 1655
pulse 613
space 1654
pulse 614
space 524
pulse 613
space 527
pulse 609
space 525
pulse 611
space 1658
pulse 588
space 549
pulse 608
space 1660
pulse 589
space 548
pulse 589
space 548
pulse 589
space 1679
pulse 592
space 1677
pulse 590
space 1675
pulse 594
pulse 13407
space 63383
space 40258
pulse 9119
space 2190
pulse 643
pulse 21195
space 121207
space 97010
pulse 9169
space 2141
pulse 688
pulse 22186

このデータの中から、一番最初の

space 16777215

と、後半の

pulse 13407
space 63383
space 40258
pulse 9119
space 2190
pulse 643
pulse 21195
space 121207
space 97010
pulse 9169
space 2141
pulse 688
pulse 22186

の部分は、いらないデータなので削除。

※基本的にpulseから始まり、pulse→space→pulse→・・・と続くので、データの数は必然的に奇数となる。なので、それに当てはまらない部分は余計なデータ。

/etc/lirc/lircd.conf.d/配下に、任意の名前.confでファイルを作成。

$ vi /etc/lirc/lircd.conf.d/tv.conf

ファイルの中身はこんな感じ。

begin remote
 name tv
 flags RAW_CODES
 eps 30
 aeps 100
 gap 200000
 toggle_bit_mask 0x0

 begin raw_codes
 name volup
 9059 4508 632 501 635 506 681 455 682 456 630 505 632 505 584 1684 681
 455 584 1684 584 1684 585 1684 585 1685 640 1581 689 1627 611 524 611 1658 615
 523 615 1655 614 522 615 1655 613 1654 614 524 613 527 609 525 611 1658
 588 549 608 1660 589 548 589 548 589 1679 592 1677 590 1675 594

 name voldown
 9087 4478 609 526 588 550 609 527 588 549 609 526 610 527 608 1659 611
 526 610 1659 608 1658 612 1661 606 1658 608 1660 607 1660 611 526 611 1658 610
 527 609 1659 610 1658 608 1659 609 1662 606 528 608 528 608 530 610 1658
 608 528 608 530 608 526 610 529 608 1658 609 1659 608 1657 610
 end raw_codes
end remote

2行目のnameはファイル名と合わせた方が混乱が少ない。

begin raw_codesの中にname コマンド名を記入し、次の行に信号データのみを羅列。※エディターの置換機能を使えば簡単

赤外線を送信する。

/etc/lirc/lirc_options.confを書き換える。

送信を行うので、lirc0に書き換える。

[lircd]
nodaemon        = False
driver          = default
device          = /dev/lirc0

lircdを起動。

$ sudo service lired start

confの中身にエラーがあれば以下のコマンドでエラーが出力される。

$ sudo systemctl status lircd.service

以下のコマンドで作成したファイルが見えればOK。

$ irsend LIST '' ''

devinput-32
devinput-64
tv

赤外線LEDをテレビに向けて、コマンドを入力する。

$ irsend SEND_ONCE tv volup
$ irsend SEND_ONCE tv voldown

ようやくテレビが反応してくれました。

参考にしたサイト。

https://deviceplus.jp/hobby/entry_y18/

http://yukidfg.jpn.ph/2018/02/23/%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E3%82%92%E8%B5%A4%E5%A4%96%E7%B7%9A%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3%E3%81%AB%E3%81%97%E3%81%A6%E5%AE%B6%E9%9B%BB%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B/

【ラズパイ】リモコンの赤外線通信を再現してみる。

まずは、前回のプログラムを元に、以下のようなプログラムを作成しました。

import RPi.GPIO as GPIO
import time

def __main__():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(21,GPIO.IN)
    try:
        while True:
            out = GPIO.input(21)
            if out == 0:
                print(1)
            else:
                print(0)
            time.sleep(0.0001)
    except KeyboardInterrupt:
        GPIO.cleanup()

__main__()

0.1ミリ秒周期で赤外線通信の受信信号を読み取って、0/1で出力するプログラムを作成してみました。

これを使用して、テレビのボリュームUP/DOWNの信号を読み取って、

こんなプログラムを作成して、赤外線LEDを点灯させるプログラムを作成。

import RPi.GPIO as GPIO
import time

pattern = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,
           0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
           0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,
           0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,0,
           0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,
           1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1]


def __main__():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(20,GPIO.OUT)
    try:
        for out in pattern:
            GPIO.output(20, GPIO.HIGH)
            time.sleep(0.0001)
        GPIO.output(20, GPIO.LOW)
    except KeyboardInterrupt:
        GPIO.cleanup()
    GPIO.cleanup()

__main__()

import RPi.GPIO as GPIO
import time

pattern = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
           0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,
           0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
           0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,
           0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,
           1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1]


def __main__():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(20,GPIO.OUT)
    try:
        for out in pattern:
            GPIO.output(20, GPIO.HIGH)
            time.sleep(0.0001)
        GPIO.output(20, GPIO.LOW)
    except KeyboardInterrupt:
        GPIO.cleanup()
    GPIO.cleanup()

__main__()

これで、リモコンの信号を再現できるはず!

そう思っていましたが、

テレビは何も反応しませんでした。

やっぱり考えは甘かったか。

そこで、ネットの情報を探してみると、

こんなサイトを見つけました。

https://deviceplus.jp/hobby/entry_y18/

リモコンの信号を読み取って、再現するライブラリがラズパイにあるらしい。

しかも、このサイトの中では、音声でテレビをコントロールしようともしている。

ならばこっちは、最終的にAlexaでコントロールできるようにしてしまおうか。

できるよね?

知らんけど。

いろいろ調べてみる。

【ラズパイ】リモコンの赤外線を受信してみる。

赤外線受信モジュールの出力をGPIO21番に接続し、

以下の様にプログラムを組んでみました。

import RPi.GPIO as GPIO
import time
import datetime

def __main__():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(21,GPIO.IN)
    GPIO.add_event_detect(21, GPIO.BOTH, callback=callback)
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        GPIO.cleanup()

def callback(channel):
    print(str(GPIO.input(21)) + " " + datetime.datetime.now().isoformat())

__main__()

GPIO21の信号が変わったタイミングで割り込みを発生し、そのときの出力値と時間を標準出力で表示させます。

ただ、このテレビのリモコン、電源ボタンを押しっぱなしにしないと信号が出ないみたいで、

で、なおかつ、押しっぱなしにすると信号が出続けるもので。

0 2020-11-24T10:14:30.712150
1 2020-11-24T10:14:30.718138
0 2020-11-24T10:14:30.765131
1 2020-11-24T10:14:30.765352
0 2020-11-24T10:14:30.804348
1 2020-11-24T10:14:30.812659
0 2020-11-24T10:14:30.817313
1 2020-11-24T10:14:30.817765
0 2020-11-24T10:14:30.818497
1 2020-11-24T10:14:30.818897
0 2020-11-24T10:14:30.819593
1 2020-11-24T10:14:30.820053
0 2020-11-24T10:14:30.820533
1 2020-11-24T10:14:30.821233
0 2020-11-24T10:14:30.821634
1 2020-11-24T10:14:30.822347
0 2020-11-24T10:14:30.822964
1 2020-11-24T10:14:30.823503
0 2020-11-24T10:14:30.824101
1 2020-11-24T10:14:30.824575
0 2020-11-24T10:14:30.826361
1 2020-11-24T10:14:30.826822
0 2020-11-24T10:14:30.827364
1 2020-11-24T10:14:30.827968
0 2020-11-24T10:14:30.829730
1 2020-11-24T10:14:30.830241
0 2020-11-24T10:14:30.832033
1 2020-11-24T10:14:30.832501
0 2020-11-24T10:14:30.834314
1 2020-11-24T10:14:30.834766
0 2020-11-24T10:14:30.836554
1 2020-11-24T10:14:30.837033
0 2020-11-24T10:14:30.838794
1 2020-11-24T10:14:30.839353
0 2020-11-24T10:14:30.841086
1 2020-11-24T10:14:30.841601
0 2020-11-24T10:14:30.842042
1 2020-11-24T10:14:30.842722
0 2020-11-24T10:14:30.844382
1 2020-11-24T10:14:30.845010
0 2020-11-24T10:14:30.845743
1 2020-11-24T10:14:30.846213
0 2020-11-24T10:14:30.847861
1 2020-11-24T10:14:30.848455
0 2020-11-24T10:14:30.849055
1 2020-11-24T10:14:30.849573
0 2020-11-24T10:14:30.850183
1 2020-11-24T10:14:30.850725
0 2020-11-24T10:14:30.852405
1 2020-11-24T10:14:30.852972
0 2020-11-24T10:14:30.853503
1 2020-11-24T10:14:30.854129
0 2020-11-24T10:14:30.854628
1 2020-11-24T10:14:30.855277
0 2020-11-24T10:14:30.855717
1 2020-11-24T10:14:30.856376
0 2020-11-24T10:14:30.858106
1 2020-11-24T10:14:30.858635
0 2020-11-24T10:14:30.859222
1 2020-11-24T10:14:30.859775
0 2020-11-24T10:14:30.861550
1 2020-11-24T10:14:30.862049
0 2020-11-24T10:14:30.863799
1 2020-11-24T10:14:30.864357
0 2020-11-24T10:14:30.864821
1 2020-11-24T10:14:30.865492
0 2020-11-24T10:14:30.867127
1 2020-11-24T10:14:30.867739
0 2020-11-24T10:14:30.869522
1 2020-11-24T10:14:30.870102
0 2020-11-24T10:14:30.871770
1 2020-11-24T10:14:30.872296
0 2020-11-24T10:14:30.912677
1 2020-11-24T10:14:30.921864
0 2020-11-24T10:14:30.923867
1 2020-11-24T10:14:30.924497
0 2020-11-24T10:14:30.972354
1 2020-11-24T10:14:30.981305
0 2020-11-24T10:14:30.985768
1 2020-11-24T10:14:30.986297
0 2020-11-24T10:14:30.986901
1 2020-11-24T10:14:30.987434
0 2020-11-24T10:14:30.987902
1 2020-11-24T10:14:30.988581
0 2020-11-24T10:14:30.989105
1 2020-11-24T10:14:30.989750
0 2020-11-24T10:14:30.990292
1 2020-11-24T10:14:30.990898
0 2020-11-24T10:14:30.991490
1 2020-11-24T10:14:30.992017
0 2020-11-24T10:14:30.992618
1 2020-11-24T10:14:30.993143
0 2020-11-24T10:14:30.994968
1 2020-11-24T10:14:30.995415
0 2020-11-24T10:14:30.995996
1 2020-11-24T10:14:30.996558
0 2020-11-24T10:14:30.998247
1 2020-11-24T10:14:30.998835
0 2020-11-24T10:14:31.000531
1 2020-11-24T10:14:31.001089
0 2020-11-24T10:14:31.002897
1 2020-11-24T10:14:31.003358
0 2020-11-24T10:14:31.005463
1 2020-11-24T10:14:31.005794
0 2020-11-24T10:14:31.007627
1 2020-11-24T10:14:31.007885
0 2020-11-24T10:14:31.009823
1 2020-11-24T10:14:31.010188
0 2020-11-24T10:14:31.010786
1 2020-11-24T10:14:31.011313
0 2020-11-24T10:14:31.013177
1 2020-11-24T10:14:31.013577
0 2020-11-24T10:14:31.014196
1 2020-11-24T10:14:31.014723
0 2020-11-24T10:14:31.016505
1 2020-11-24T10:14:31.016988
0 2020-11-24T10:14:31.017615
1 2020-11-24T10:14:31.018132
0 2020-11-24T10:14:31.018801
1 2020-11-24T10:14:31.019244
0 2020-11-24T10:14:31.021049
1 2020-11-24T10:14:31.021532
0 2020-11-24T10:14:31.022264
1 2020-11-24T10:14:31.022711
0 2020-11-24T10:14:31.023231
1 2020-11-24T10:14:31.023825
0 2020-11-24T10:14:31.024497
1 2020-11-24T10:14:31.024954
0 2020-11-24T10:14:31.026808
1 2020-11-24T10:14:31.027232
0 2020-11-24T10:14:31.027891
1 2020-11-24T10:14:31.028356
0 2020-11-24T10:14:31.030251
1 2020-11-24T10:14:31.030616
0 2020-11-24T10:14:31.032629
1 2020-11-24T10:14:31.032920
0 2020-11-24T10:14:31.033644
1 2020-11-24T10:14:31.034099
0 2020-11-24T10:14:31.035998
1 2020-11-24T10:14:31.036321
0 2020-11-24T10:14:31.038409
1 2020-11-24T10:14:31.038591
0 2020-11-24T10:14:31.040637
1 2020-11-24T10:14:31.040889
0 2020-11-24T10:14:31.085001
1 2020-11-24T10:14:31.090315
0 2020-11-24T10:14:31.142103
1 2020-11-24T10:14:31.143617
0 2020-11-24T10:14:31.317687
1 2020-11-24T10:14:31.317986
0 2020-11-24T10:14:31.320925
1 2020-11-24T10:14:31.321246
0 2020-11-24T10:14:31.321999
1 2020-11-24T10:14:31.322382
0 2020-11-24T10:14:31.324284
1 2020-11-24T10:14:31.324646
0 2020-11-24T10:14:31.325373
1 2020-11-24T10:14:31.325785
0 2020-11-24T10:14:31.326453
1 2020-11-24T10:14:31.326927
0 2020-11-24T10:14:31.327589
1 2020-11-24T10:14:31.328064
0 2020-11-24T10:14:31.329898
1 2020-11-24T10:14:31.330335
0 2020-11-24T10:14:31.330809
1 2020-11-24T10:14:31.331572
0 2020-11-24T10:14:31.333278
1 2020-11-24T10:14:31.333753
0 2020-11-24T10:14:31.335543
1 2020-11-24T10:14:31.336043
0 2020-11-24T10:14:31.336674
1 2020-11-24T10:14:31.337190
0 2020-11-24T10:14:31.338941
1 2020-11-24T10:14:31.339489
0 2020-11-24T10:14:31.341160
1 2020-11-24T10:14:31.341743
0 2020-11-24T10:14:31.343484
1 2020-11-24T10:14:31.343990

たぶん、この中に電源の信号パターンがあり、繰り返し送信されているものかと。

それと、この信号を再現させるために、大体0.1ミリ秒ごとに0/1のパターンデータを作成して、送信するっていう形の方が良いのかな。

ちょっとこれを元に考えてみます。

【ラズパイ】赤外線受信を試してみる。

前回は赤外線LED(送信側)を試しましたが、

今回は受信機側を試してみたいと思います。

ドキュメントにこう書いてありました。

受信部に向かって左から出力、GND、VCCということなので、

こういう回路を組んでみました。

出力に発行ダイオードと抵抗を繋げました。

この状態ではなにも信号は与えていませんが、

LEDが点灯しているのは、

この図を見ると、信号を受信したときに出力がHigh→Lowとなるようです。

試しに、エアコンのリモコンの信号を受信機に当ててみたいと思います。

微妙ですが変化があるようですね。

じゃあ、次はこの信号を読み取るプログラムを書いてみますか。