Armando47

From ciapini
Revision as of 16:33, 24 May 2013 by Cesco (talk | contribs) (→‎uC)
Jump to navigation Jump to search

Device crittografico tascabile

modem piccolo, economico e a basso consumo per lo scambio a bassa velocita' di dati cifrati su canali rumorosi half-duplex con banda passante da 1Hz a 5khz.

i mezzi fisici usabili possono essere

chi e' interessato a una parte se la prenoti!

  • gnugo: FEC, interleaver, hardware
  • ciaby: dds
  • ema: aprs



Livello fisico

Caratteristiche del mezzo trasmissivo

  • e' sempre broadcast
  • banda 40 Hz - 5 kHz
  • puo avere SNR infimi
  • e' sempre half-duplex
  • puo' avere tempi di commutazione lunghi
  • non ha meccanismi di collision detect
  • puo' essere possibile la rilevazione di canale occupato
  • puo' presentare condizioni di terminale nascosto

Caratteristiche elettriche

input e output sbilanciati standard consumer line-level −10 dBV con impedenza 10kohm


Modulazione

Implementa schemi di modulazione ASK, PSK, QAM o FSK , con costellazioni di dimensione da 2 a 32, frequenza massima 8khz.

FSK

La modulazione si fa facilmente con un accumulatore di fase.

http://cgit.brokenbydesign.org/cgit.cgi/armando.git/plain/dds.c

La demodulazione è fattibile in linea di principio con:

  • FFT: si prende un blocco di campioni, si fa la FFT e si misurano le energie nei bin corrispondenti alle frequenze di ciascun simbolo. Se il segnale ha però una banda stretta rispetto alla banda totale dei dati, calcolare tutti i bin è uno spreco inutile; inoltre la FFT deve avere una risoluzione sufficiente almeno a mappare le diverse frequenze in bin diversi, e questo richiede una quantità sufficiente di campioni. Se questa quantità supera di molto il numero di campioni per simbolo, questo sistema non funziona.
  • Banco di filtri adattati: se ci sono N simboli (N frequenze) si costruiscono N filtri narrow-band centrati sulle frequenze corrispondenti. I dati vengono filtrati con ciascun filtro e si ottengono in uscita le N ampiezze, che formano un vettore che rappresenta il simbolo. Questo sistema dovrebbe andare bene se non ci aspettiamo portanti troppo ballerine; in particolare la fluttuazione della portante non deve portare una frequenza sopra al filtro di quella vicina.
  • Misura della variazione di fase: si costruisce una portante e si demodula il segnale in modo che le frequenze dei simboli siano centrate sulla DC. Si moltiplica ciascun campione demodulato con il complesso coniugato del campione precedente. La fase di questo prodotto rappresenta la variazione della fase del segnale tra i due campioni, ovvero la frequenza del segnale, che quindi è direttamente mappabile nel simbolo corrispondente. Questo metodo dovrebbe essere computazionalmente banale e abbastanza robusto a derive della portante; se necessario, dovrebbe permettere un tracking semplice della portante stessa.

Hardware

PCB

il circuito stampato + componenti avra spessore minimo (6 mm), e dovrebbe essere abbastanza piccolo (8-10 cm2)

Connessioni

sulla scheda si potrebbero mettere semplicemente i vari header


Connettore GPIO

header 2 pin, ad uso generico (radiocomandi)

1 GPIO0
2 GPIO1

Seriale

header 1x5 pin

l'UART puo avere due modalita': una per l'in-band (cioe solo ed esclusivamente i dati trasmessi e ricevuti) e l'altra per out-of-band (tutta la gestione, i menu ecc).

per astrarre l'interfaccia e permettere l'uso di terminali piu avanzati, tutta la roba lato lcd e tastiera dovrebbe essere accessibile via seriale (una specie di tty).

se l'alimentazione fosse via usb, verrebbe da se... mettere un ft232 ed esporre una seriale via usb. un ft232rl e' un ssop28 e costa circa due euri. fornisce anche una 3.3v regolata di 50mA, che puo essere ok per alimentare il device dall'esterno.


1 U1_CTS UART1 clear to send.
2 U1_RTS UART1 ready to send.
3 U1_RX UART1 receive.
4 U1_TX UART1 transmit.
5 U1_GND Ground

Connettore modulazione

espone i simboli in maniera digitale

output:

1 OSB0 Out Symbol Bit 0
2 OSB1 Out Symbol Bit 1

Connettore programmazione

Serve per poter programmare il pic una volta installato. Vanno ai rispettivi pin sul uC.

Pin Funzione Nome
1 Abilitazione programmazione ICSP_MCLR
2 Positivo. Dev'essere interrompibile con jumper VDD
3 Negativo VSS
4 Dati programmazione ICSP_DATA
5 Clock programmazione ICSP_CLOCK
6 Non usato Aux

Componenti interni

  • processore: dspic33fj128gp802 oppure dsPIC33FJ128GP804 se i piedini non ci bastano
  • 2 regolatori 3.3v
  • quarzo 8mhz
  • quarzo 32khz
  • op-amp filtro antialias 4khz
  • op amp uscita
  • condensatori di livellamento vari
  • condensatore tampone per cambio pile
  • FET di controllo carica batterie


uC

deve avere:

  • primitive DSP
  • ADC >=12bit
  • DAC >=12bit
  • UART

candidati:

  • dsPIC33FJ128GP802 esiste anche in case non-smd
  • dsPIC33FJ128GP804 ha piu piedini

se serve piu' velocita' si puo usare un dsPIC33EP128GP502, ma non ha ADC a bordo

mappa pin dsPIC33FJ128GP802

http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en532298

  • RAM: 16K
  • Flash: 128K
  • Timers: 5
  • UART: 2
Pin Funzione Nome porta sul uC
1 MCLR MCLR
2 GPIO0 AN0/VREF+/CN2/RA0
3 GPIO1 AN1/VREF-/CN3/RA1
4 Dati ICSP PGED1/AN2/C2IN-/RP0(1)/CN4/RB0
5 Clock ICSP PGEC1/ AN3/C2IN+/RP1(1)/CN5/RB1
6 AN4/C1IN-/RP2/CN6/RB2
7 AN5/C1IN+/RP3/CN7/RB3
8 V - VSS
9 Xtal 32MHz OSC1/CLKI/CN30/RA2
10 Xtal 32MHz OSC2/CLKO/CN29/PMA0/RA3
11 Xtal 32.768 kHz SOSCI/RP4(1)/CN1/PMBE/RB4
12 Xtal 32.768 kHz SOSCO/T1CK/CN0/PMA1/RA4
13 V + VDD
14 U1RX registro RPINR18 PGED3/ASDA1/RP5 /CN27/PMD7/RB5
15 U1CTS registro RPINR18 PGEC3/ASCL1/RP6(1)/CN24/PMD6/RB6
16 PTT INT0/RP7(1)/CN23/PMD5/RB7
17 U1TX TCK/SCL1/RP8(1)/CN22/PMD4/RB8
18 U1RTS TDO/SDA1/RP9(1)/CN21/PMD3/RB9
19 V - VSS
20 10 uF tantalio verso VSS VCAP
21 PGED2/TDI/RP10(1)/CN16/PMD2/RB10
22 PGEC2/TMS/RP11(1)/CN15/PMD1/RB11
23 DAC left + AN12/DAC1RP/RP12(1)/CN14/PMD0/RB12
24 DAC left - AN11/DAC1RN/RP13(1)/CN13/PMRD/RB13
25 ADC Audio In AN10/DAC1LP/RTCC/RP14(1)/CN12/PMWR/RB14
26 ADC Vbatt In AN9/DAC1LN/RP15(1)/CN11/PMCS1/RB15
27 V - analogico AVSS
28 V + analogico AVDD


Protocolli

armando e' in grado di parlare differenti protocolli


APRS

Automatic Packet Reporting System, e' un sistema di localizzazione a pacchetti che usa un protocollo AX.25 in modalita senza connessione su una modulazione afsk Bell 202 a 1200 bps

sarebbero utili 3 modalita APRS

  • client, che riceve dalla UART stringhe NMEA e le trasmette in aprs
  • digipeater, che ritrasmette i messaggi APRS ricevuti
  • gateway, che manda via UART i messaggi APRS ricevuti

Qui c'è vita morte e miracoli dell'aprs, con relative specifiche:

http://www.aprs.org/

la prima reference: ftp://ftp.tapr.org/aprssig/aprsspec/spec/aprs101/APRS101.pdf

sw da cui è possibile attingere: http://info.aprs.net/index.php?title=Software

Per fortuna ci sono delle bellissime librerie in c++

http://sourceforge.net/projects/libaprs/

http://sourceforge.net/projects/ax25/

https://code.google.com/p/trackuino/ (solo invio) c'e' una versione in gcc-C, progetto vivo

  • nei file trackuino-firmware-1.4/trackuino/ax25.cpp e trackuino-firmware-1.4/trackuino/aprs.cpp sembra esserci quel che serve


https://sites.google.com/site/ki4mcw/Home/arduino-tnc (solo ricezione)

http://aprsdroid.org/ (invia e riceve, codice utilizzabile?) AGH! e' scritto in SCALA.. mi sa di no

arNet

Il protocollo di comunicazione specifico di armando e' ArNet

ANI

client e server Push-To-Talk ID e selective calling.

tipi di ANI

  • Motorola’s MDC-1200
  • Kenwood’s FleetSync
  • Harris’ G-Star (aka GE-Star)
  • DTMF
  • 5-Tone

letture:


Firmware

voci di configurazione

  1. modulazione
    1. tipo di modulazione
      1. fsk
        1. bw in Hz uint16
      2. psk
      3. frequenza centrale uint16
      4. dimensione costellazione uint8
      5. simboli per secondo uint8
  2. ptt
    1. manuale/automatico
    2. tempo di guardia attacco in ms uint8
    3. tempo di guardia stacco in ms uint8
  3. protocollo
    1. arNet
      1. indirizzo uint8
      2. alias ricezione uint8
      3. router bool
        1. priorita uint8
        2. ttl uint8
      4. chiave 256 bit
    2. aprs
  4. interfaccia
    1. auto power off
    2. backlight



generatore OTP

dato che abbiamo un rtc l'apparato potrebbe fare da one time password generator. usiamo la chiave come seme? che implementazioni ci sono?

letteratura:

stringa di configurazione

la configurazione dell'apparato deovrebbe essere importabile ed esportabile come una stringa esadecimale

anche la chiave crittografica sara una stringa di 16 caratteri esadecimali

PIN/PUC

quando il device andra in sleep sara necessario un pin di 4 caratteri per risvegliarlo

dopo 5 tentativi sbagliati, il device dimentica la chiave crittografica.


Mezzi fisici

Powerline