[PYTHON] Ich habe gelernt, wie die Infrarot-Fernbedienung mit Raspberry Pi funktioniert

Ich war mir nie des mir bekannten Fernbedienungsmechanismus für Fernseher und Klimaanlagen bewusst, aber ich lernte den Mechanismus für die Verwendung der Infrarot-Fernbedienung in der elektronischen Arbeit. Ich habe auch versucht zu überprüfen, wie die Kommunikation tatsächlich mit Raspeye erfolgt.

** Was ich benutzt habe **

Kommunikationsformat der Infrarot-Fernbedienung

Erstens gibt es ungefähr drei Kommunikationsformate für die Infrarotfernbedienung.

Da die diesmal verwendete Fernbedienung im NEC-Format war, werden wir uns darauf konzentrieren.

NEC-Format

Im NEC-Format ist T = 562 [μs] eine Zeiteinheit. Die Daten '0' und '1' werden auf diese Weise dargestellt.

format0&1.jpg

Und die gesamte Kommunikation ist grob in vier Codes unterteilt. format.jpg

Lassen Sie uns nun tatsächlich einen Raspeltorte verwenden und prüfen, ob dies der Fall ist.

Infrarot-Fernbedienungsanalyse

Wir werden die Infrarot-Fernbedienung mit der Bezeichnung Car mp3 analysieren, die häufig in elektronischen Arbeitsstarter-Kits enthalten ist. <img width="150" alt="carMp3.jpg ", src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551611/1c27be81-e637-922e-e676-f516271f3ba6.jpeg "> Zuerst machen wir eine Schaltung.

1. 1. Schaltung erstellen

Das diesmal verwendete Infrarot-Empfängermodul ist VS1838B. vs1838b.jpg Die Pins von VS1838B befinden sich links OUT, GND in der Mitte und VCC rechts. Da die minimale VCC 2,7 V und die maximale 5,5 V beträgt, schließen Sie sie an 3,3 V an, ohne einen Widerstand einzufügen. Verbinden Sie diesmal OUT mit PIN 21.

circuit.jpg

2. Quellcode erstellen

Dies ist der Quellcode, der die Zeit (μs) ausgibt, wenn das Signal EIN / AUS ist.

irAnalysis.py


import RPi.GPIO as GPIO
import time

IR_PIN = 21

def timeMeasure():
    maxTime = 1 #sec
    prevState = GPIO.input(IR_PIN)
    startTime = time.perf_counter()
    while time.perf_counter() - startTime < maxTime:
        nowState = GPIO.input(IR_PIN)
        if nowState != prevState:
            endTime = time.perf_counter()
            elapsedTime = (endTime - startTime) * 1000000 #microsec
            return round(elapsedTime)
    return None

def analysis():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(IR_PIN, GPIO.IN)
    GPIO.wait_for_edge(IR_PIN, GPIO.BOTH)
    try:
        while True:
            elapsedTime = timeMeasure()
            if elapsedTime is None:
                break
            else:
                print(elapsedTime)

    except KeyboardInterrupt:
        GPIO.cleanup(IR_PIN)
    GPIO.cleanup(IR_PIN)

if __name__ == '__main__':
    analysis()

3. 3. Ausgabeanalyse

Ich habe das vorherige Programm ausgeführt und auf der Infrarot-Fernbedienung die Nummer 0 gedrückt. Da die Fernbedienung im NEC-Format war, überprüfen Sie die Ausgabe, während Sie sie mit dem Format vergleichen.

Zunächst können Sie im NEC-Format zuerst den Lesercode erhalten.

Lesercode

Weil T 562 μs beträgt 16T ist 16*562=8992(μs)

8T 8*562=4496(μs) Es wird.

Die ersten beiden Ausgabezeilen sehen folgendermaßen aus.

python


9338
4294

Die Werte liegen nahe beieinander.

Als nächstes kommt der benutzerdefinierte Code.

Benutzerdefinierter Code

'0': 1T EIN, 3T AUS Wenn EIN 562 μs und AUS 562 μs ist

'1': 1T EIN, 1T AUS Wenn EIN 562 μs und AUS 1686 μs ist

Diesmal lautet der benutzerdefinierte Code also 0000 0000 1111 1111.

Ab der dritten Zeile bis zur Mitte der Ausgabe

python


484 #'0'
461
543 #'0'
478 
546 #'0'
478
543 #'0'
480
545 #'0'
486
548 #'0'
471
538 #'0'
479
546 #'0'
478
544 #'1'
1604
546 #'1'
1596
544 #'1'
1600
544 #'1'
1600
536 #'1'
1602
544 #'1'
1601
485 #'1'
1578
496 #'1'
1596

Als nächstes kommt der Datencode.

Datencode

Der Datencode lautet 0110 1000, gefolgt von der invertierten 1001 01111.

python


520 #'0'
466
529 #'1'
1587
328 #'1'
1543
335 #'0'
426
449 #'1'
1589
527 #'0'
468
512 #'0'
442
463 #'0'
460
------Von hier aus umkehren--------
521 #'1'
1573
506 #'0'
467
539 #'0'
484
532 #'1'
1586
460 #'0'
438
527 #'1'
1603
479 #'1'
1575
464 #'1'
1588

Code wiederholen

Es scheint, dass 1T, 71T, 16T, 4T zuerst wiederholt werden und dann 1T, 172T, 16T, 4T wiederholt werden. Dies unterscheidet sich ein wenig vom Format, kann jedoch für jedes Produkt unterschiedlich sein.

python


472
40106 
9203
2024
---------------
234
96804
9194
2128
----Wiederholung----
466
96856
9161
2097
----Wiederholung----
451
96858
9212
2168

Es wurde festgestellt, dass die Kommunikation gemäß dem NEC-Format durchgeführt wurde, obwohl die numerischen Werte mit Ausnahme des Wiederholungscodes geringfügig unterschiedlich waren.

Recommended Posts

Ich habe gelernt, wie die Infrarot-Fernbedienung mit Raspberry Pi funktioniert
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Servomotorsteuerung mit Raspberry Pi
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Infrarot-Fernbedienungsempfang mit Intel Edison
Verwenden Sie Python auf Raspberry Pi 3, um die LED mit Schaltersteuerung zu beleuchten!
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Beobachten Sie die Futago-Meteorgruppe mit Raspberry Pi4
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
GPGPU mit Raspberry Pi
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Verwendung von Raspeye Relay Module Python
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
Steuern Sie bürstenlose Motoren mit GPIO von Raspberry Pi Zero
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Ich wollte den Motor mit einer Raspeltorte laufen lassen, also habe ich versucht, das Motor Driver Board von Waveshare zu verwenden
Steuern Sie die Anzeige des RGB LED Matirix Lightning Bulletin Boards mit Raspberry Pi 3B + frei
Es war großartig, die Python-Datei in Raspberry Pi mit der Remote-Funktion von Atom zu bearbeiten
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Spielen Sie mit dem Raspberry Pi Zero WH-Kameramodul Teil 1
Ich habe versucht, Movidius NCS mit Python von Raspberry Pi3 auszuführen
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
Ich habe die Daten von Raspberry Pi an GCP gesendet (kostenlos)
Mutter pflanzt mit Raspberry Pi
Ich habe mit Raspberry Pi gesprochen
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Ich möchte Python GUI ausführen, wenn Raspberry Pi startet
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Probieren Sie L Chika mit Himbeerpi
Ich habe untersucht, wie das Zielfernrohr aussieht
Ich mochte den Tweet mit Python. ..
Aufbau eines VPN-Servers mit Raspberry Pie
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Ein Memo zur einfachen Verwendung des Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi 2
[Ich habe den Raspberry Pi (1) berührt] Ich habe die grundlegenden Funktionen der Minecraft Pi Edition (Vorabversion 2015.5.23) zusammengefasst.
[Elektronische Arbeit] Ich habe mit Raspberry Pi einen Suica Touch-Sounddetektor hergestellt
Hinweis: Ich möchte die Heimautomation mit Home Assistant + Raspberry Pi + Sensor Nr. 1 durchführen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Ich habe versucht, die Netzwerkbandbreite und -verzögerung mit dem Befehl tc zu steuern
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts