Files
2026-09-14 12:43:38 +02:00

30 lines
1.0 KiB
Python
Executable File

from RPi import GPIO
import time, argparse
import numpy as np
parser = argparse.ArgumentParser(description='Analyze RF signal for Nexa codes')
parser.add_argument('-g', dest='gpio', type=int, default=27, help='GPIO pin (Default: 27)')
parser.add_argument('-s', dest='secs', type=int, default=3, help='Seconds to record (Default: 3)')
parser.add_argument('--raw', dest='raw', action='store_true', default=False, help='Output raw samples')
parser.add_argument('-f', dest='file',default="data.npy", help='Data file (Default: data.npy)')
args = parser.parse_args()
times = []
GPIO.setmode(GPIO.BCM)
GPIO.setup(args.gpio, GPIO.IN)
GPIO.add_event_detect(args.gpio, GPIO.BOTH,
callback=lambda ch: times.append(time.perf_counter_ns()//1000))
time.sleep(args.secs)
GPIO.remove_event_detect(args.gpio)
GPIO.cleanup()
# Calculate difference between consecutive times
diff = [b-a for a,b in zip(times, times[1:])]
np.save(args.file, diff)
if args.raw: # Print a raw dump
for d in diff: print(d, end='\n' if d>5e3 else ' ')