Tutorial de desarrollo de aplicaciones de Portapack (13) Control del coche de control remoto OOK

 Recientemente, vi que un extranjero encontró un programa rf-car en github, y me sentí muy interesante si quería moverlo a portapack.

Recuerde que antes había un tutorial similar en hackrf.net, que corresponde a gr-remotecar en github.

Encontré mi propio auto con control remoto y planeo analizar la señal.

La parte superior del diagrama de flujo se usa para recibir y analizar la señal del control remoto, y la parte inferior se usa para la transmisión, deshabilítela temporalmente.

Presioné el frente izquierdo, el trasero izquierdo, el frente derecho y el trasero derecho a su vez, me deformé, disparé varios botones y obtuve varios diagramas de señales.

Delantero izquierdo: 1011110000100000101111000010000010

Trasera izquierda: 000001000010111100000100001011110000010

Delantero derecho: 101111000000000110111100000000011011110

Posterior derecha: 000010001011110000001000101111000000100

Deformación: 111100000001001011110000000100101111000

Lanzamiento: 000111100110000000011110011000000001111

Luego, lo resumí:

Delantera izquierda: 1011110000100000 Trasera
izquierda: 1011110000010000
Delantera derecha: 1011110000000001 Trasera
derecha: 1011110000001000
Deformación: 1011110000000100 Disparos
: 1111001100000000

La mayoría de ellos comienzan con 101111, que equivale a un preámbulo, seguido de un lote de 0 más un 1 en diferentes posiciones, similar a un hot.

Puedo consultar el tutorial de hackrf.net para generar archivos iq con código python y luego usar gnuradio para ejecutarlos.

import struct

SAMP_RATE=10e6
TIME_TOTAL = int(1 * SAMP_RATE) #s

TIME0 = int(0.5e-3 * SAMP_RATE)
TIME1 = int(1.50e-3 * SAMP_RATE)


MIN=struct.pack('B',0)
MAX=struct.pack('B',64)

'''
1011110000100000

1:
    WriteFrame(MAX,TIME1,f)
    i += TIME1
    WriteFrame(MIN,TIME0,f)
    i += TIME0
0:
    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1
'''

def WriteFrame(value,quantity,f):
    j = 0
    while j < quantity:
        f.write(value) #i
        f.write(value) #q
        j += 1

def main():
    f = open('w.iq','wb')

    i = 0

    WriteFrame(MAX,TIME1,f)
    i += TIME1
    WriteFrame(MIN,TIME0,f)
    i += TIME0

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME1,f)
    i += TIME1
    WriteFrame(MIN,TIME0,f)
    i += TIME0

    WriteFrame(MAX,TIME1,f)
    i += TIME1
    WriteFrame(MIN,TIME0,f)
    i += TIME0

    WriteFrame(MAX,TIME1,f)
    i += TIME1
    WriteFrame(MIN,TIME0,f)
    i += TIME0

    WriteFrame(MAX,TIME1,f)
    i += TIME1
    WriteFrame(MIN,TIME0,f)
    i += TIME0

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME1,f)
    i += TIME1
    WriteFrame(MIN,TIME0,f)
    i += TIME0

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    WriteFrame(MAX,TIME0,f)
    i += TIME0
    WriteFrame(MIN,TIME1,f)
    i += TIME1

    f.close()        

if __name__ == "__main__":
    main()

El archivo generado al principio no estaba bien, primero observé con audacia y ajusté las variables MIN y MAX para hacer que la forma de onda tuviera el tamaño correcto. Luego leí el archivo iq obtenido con gnuradio y conecté el osciloscopio mientras transmitía, pero después de compararlo, encontré que el ancho de la forma de onda es diferente de la forma de onda del control remoto que recibí antes. Cambié la variable SAMP_RATE en el código de Python para hacer la transmisión real El ancho de la forma de onda es el mismo que el del control remoto. En cuanto a por qué es 10e6, no lo sé todavía, lo tengo todo junto.

Entonces, este lanzamiento puede controlar la rueda a la izquierda del automóvil para girar hacia adelante.

Luego usé el ook de portapack para iniciar la aplicación y edité el mismo gráfico de flujo. Luego ajusté una frecuencia de clk diferente y se puede lograr el mismo efecto ajustándola a unos 10 kHz.

Pero ya sea el lanzamiento de una computadora o el lanzamiento de un portapack o el lanzamiento del control remoto original, además del revólver hacia adelante, también impulsará la torreta para el lanzamiento. Recuerdo que cuando las ruedas izquierda y derecha avanzaban al mismo tiempo, no interferían con la torreta, y la secuencia 1010 lanzada también era diferente a las demás.

Creo que es posible usar el control remoto para presionar hacia adelante y hacia atrás al mismo tiempo, y aparecerán nuevas formas de onda. Luego lo probé y descubrí que era el caso.

Simultáneamente hacia adelante: 1111000010000100
Simultáneamente hacia atrás: 1111000001100000

Despedido: 1111001100000000

Se puede ver que el código inicial es diferente de otros botones, es 11110000 y hay dos 1. en el bit de datos, está cerca del código para disparar el disparo.

Más tarde también descubrí que el portapack se genera de acuerdo con la forma de onda de la señal de la rueda derecha hacia adelante.Puede ser útil si clk se ajusta a 11kHz, pero 10kHz no.

Usé gnuradio y otro hackrf para observar qué tipo de señal emite el portapack la primera forma de onda (girando hacia adelante)

Encontré que la forma de onda es muy extraña, pero en realidad puedo controlar el auto para que funcione de acuerdo con mis instrucciones.

datos:

Enlace: https://pan.baidu.com/s/1nlaQSLh8GNlIWKru700xfQ 
Código de extracción: wnan 
 

Video de demostración:

https://www.bilibili.com/video/BV12T4y157GJ/

Supongo que te gusta

Origin blog.csdn.net/shukebeta008/article/details/107954986
Recomendado
Clasificación