bschwind / ir-slinger

A small C library for sending infrared packets on the Raspberry Pi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IR receiver receive diff signal

muyinliu opened this issue · comments

Code to send raw data:

#include <stdio.h>
#include "irslinger.h"

int main(int argc, char *argv[])
{
    uint32_t outPin = 17;            // The Broadcom pin number the signal will be sent on
    int frequency = 38000;          // The frequency of the IR signal in Hz
    double dutyCycle = .5;         // The duty cycle of the IR signal. 0.5 means for every cycle,
                                    // the LED will turn on for half the cycle time, and off the other half

    int codes[] = {4344, 4437, 493, 1682, 496, 586, 463, 1709, 495, 1683, 494, 580, 494, 581, 496, 1684, 465, 605, 496, 580, 493, 1688, 464, 607, 493, 582, 495, 1681, 496, 1681, 495, 580, 496, 1681, 496, 581, 492, 1705, 458, 1714, 496, 1668, 495, 1685, 465, 603, 495, 1682, 501, 1675, 469, 1713, 490, 583, 493, 581, 495, 582, 494, 581, 492, 1685, 493, 581, 494, 580, 495, 1690, 489, 1680, 495, 1681, 495, 580, 507, 569, 494, 581, 493, 582, 495, 581, 495, 580, 495, 581, 495, 579, 495, 1683, 470, 1715, 498, 1700, 461, 1690, 490, 1688, 494, 5249, 4372, 4436, 500, 1673, 496, 585, 490, 1683, 495, 1713, 477, 580, 480, 583, 493, 1686, 496, 573, 492, 582, 522, 1656, 493, 582, 494, 580, 495, 1681, 496, 1681, 496, 580, 496, 1680, 494, 583, 493, 1681, 497, 1685, 490, 1684, 494, 1690, 492, 576, 498, 1695, 466, 1720, 483, 1676, 470, 622, 471, 588, 465, 603, 495, 580, 493, 1685, 494, 579, 495, 580, 496, 1681, 468, 1710, 474, 1704, 492, 581, 469, 609, 493, 584, 492, 580, 469, 607, 496, 579, 494, 581, 494, 592, 508, 1667, 494, 1683, 463, 1717, 484, 1683, 469, 1707, 495};

    int result = irSlingRaw(
        outPin,
        frequency,
        dutyCycle,
        codes,
        sizeof(codes) / sizeof(int));

    return result;
}

receive signal like this:

Using driver default on device /dev/lirc0
space 4176174
pulse 0
space 24
space 15
space 24
space 27
space 26
space 25
pulse 14
space 4339
space 4218
space 26
space 25
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1466
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 370
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 468
space 1518
space 26
space 26
space 26
space 30
space 23
space 25
space 26
pulse 9
space 521
space 1465
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 542
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 389
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1468
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 468
space 414
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 509
space 374
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 518
space 1473
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 468
space 416
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 365
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 1464
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1465
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 541
space 364
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 521
space 1463
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 365
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 1488
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 469
space 1496
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1452
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 541
space 1469
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 491
space 411
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 1490
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 1458
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 494
space 1496
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 366
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 364
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 365
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 521
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 1493
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 364
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 540
space 365
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1474
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 496
space 1487
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 496
space 1488
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 377
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 497
space 387
space 26
space 26
space 26
space 26
space 27
space 25
space 26
pulse 9
space 521
space 364
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 518
space 366
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 542
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 498
space 386
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 1491
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 491
space 1523
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 521
space 1482
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 469
space 1498
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 1471
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 541
space 5033
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 4339
space 4244
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 541
space 1457
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 521
space 370
space 23
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1467
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1497
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 469
space 388
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 470
space 391
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 1470
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 356
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 390
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 546
space 1440
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 365
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 10
space 519
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 496
space 1488
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 518
space 1466
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 522
space 361
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 1463
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 542
space 366
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 1489
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 1468
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 1492
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 541
space 1474
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 360
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 1478
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 468
space 1529
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 1460
space 24
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 492
space 407
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 470
space 396
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 469
space 411
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 497
space 387
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 494
space 1494
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 494
space 388
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 519
space 1466
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 494
space 1493
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 490
space 1513
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 494
space 391
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 492
space 394
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 368
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 496
space 388
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 492
space 392
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 520
space 363
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 389
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 519
space 376
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 8
space 520
space 1451
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 495
space 1491
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 468
space 1526
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 514
space 1468
space 26
space 26
space 26
space 26
space 26
space 26
pulse 13
space 514
space 1492
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9
space 520

That's not really much information to go off of, I'm afraid I can't help much.

Are you sure your receiver code is functioning correctly? I would test it against a known signal from a remote, and try sending the same exact signal with ir-slinger.

I use sudo mode2 -d /dev/lirc0 to record infrared code.

But code like this record the same codes as output:

import RPi.GPIO as GPIO
import math
import os
from datetime import datetime
from time import sleep

# This is for revision 1 of the Raspberry Pi, Model B
# This pin is also referred to as GPIO23
INPUT_WIRE = 16

GPIO.setmode(GPIO.BOARD)
GPIO.setup(INPUT_WIRE, GPIO.IN)

while True:
    value = 1
    # Loop until we read a 0
    while value:
        value = GPIO.input(INPUT_WIRE)

    # Grab the start time of the command
    startTime = datetime.now()

    # Used to buffer the command pulses
    command = []

    # The end of the "command" happens when we read more than
    # a certain number of 1s (1 is off for my IR receiver)
    numOnes = 0

    # Used to keep track of transitions from 1 to 0
    previousVal = 0

    while True:

        if value != previousVal:
            # The value has changed, so calculate the length of this run
            now = datetime.now()
            pulseLength = now - startTime
            startTime = now

            command.append((previousVal, pulseLength.microseconds))

        if value:
            numOnes = numOnes + 1
        else:
            numOnes = 0

        # 10000 is arbitrary, adjust as necessary
        if numOnes > 10000:
            break

        previousVal = value
        value = GPIO.input(INPUT_WIRE)
    
    print "----------Start----------"
    for (val, pulse) in command:
        print val, pulse
    print "-----------End-----------\n"

    print "Size of array is " + str(len(command))

compare with correct mode2 record result:

space 4176174
pulse 0
space 24
space 15
space 24
space 27
space 26
space 25
pulse 14
space 4339  4344 space
space 4218
space 26
space 25
space 26
space 26
space 26
space 26
space 26    
pulse 9     4437 pulse
space 519    493 space
space 1466
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9     1682 pulse
space 519    496 space
space 370
space 26
space 26
space 26
space 26
space 26
space 26
space 26
pulse 9      586 pulse
space 468    463 space
space 1518
space 26
space 26
space 26
space 30
space 23
space 25
space 26
pulse 9     1709 pulse
...

What does your circuit for the infrared LED look like?

Raspberry Pi 3, circuit like this(the left one is the sender, the right one is the receiver):
img_20170921_204420

Ah, is there a transistor on that LED module? It may be that the Pi doesn't have enough current to drive the LED well enough

But using irsend command send signal(same raw codes in the config file) record the same codes as sent.

That's a bit peculiar then. If it's a newer version of Raspbian it's possible something has changed that breaks this library but I wouldn't know, I'm on a version from last year.

It's also possible that the way the signal is sent with this library is interfering with the receiver's ability to receive with the correct timing. Do you have another raspberry pi or other device which can receive and print signals? This is something quite hard for me to debug without being there to look at it.

Sorry. I don't have other device to accomplish your test.

Luckily the Midea Air Conditioner can receive the signal sent by ir-slinger correctly...

Oh! So the signal sent from ir-slinger actually works? That's a pretty strong indication that trying to run the sender and the receiver at the same time is causing a conflict on system resources or something to that effect.

ir-slinger uses pigpio which does a lot of low level work to send these signals with microsecond precision. It may be different from how lirc operates so it's possible that pigpio is interrupting lirc receiving tasks to the point where it can't get usable data. That's just a complete guess, I'm not 100% sure what's going on here.

It doesn't seem like conflict. Because in both case(1: irsend send and mode2 receive, 2: ir-slinger send and mode2 receive), sender and receiver work at the same time.

Maybe just because the way to send data of pigpio and lirc is different.

It's weird that when darkness comes, mode2 record the same codes of ir-slinger as irsend. I will do more test such as changing duty cycle.

Closing for now as there isn't yet a clear indication of a bug in ir-slinger.