Armando47: Difference between revisions

From ciapini
Jump to navigation Jump to search
No edit summary
 
(122 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Device crittografico tascabile
[[Category:Telecom]]
[[File:Aardvark2 (PSF).png]]
''modem 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.
modem piccolo, economico e a basso consumo per la comunicazione digitale a bassa velocita' su canali rumorosi half-duplex con banda passante da 1Hz a 5khz.


i mezzi fisici usabili possono essere  
{{Special:PrefixIndex/{{FULLPAGENAME}}/}}
* radio(pmr, cb, hf)
 
* rame(linee PSTN, doppino, linea elettrica)
== Caratteristiche del mezzo trasmissivo ==
* ottico (su fibra o in aria http://ronja.twibright.com/)
 
* sempre broadcast
* banda 1 Hz - 5 kHz
* puo avere SNR infimi
* e' half-duplex
* puo' avere tempi di commutazione R/T lunghi
* non ha meccanismi di collision detect
* puo' non essere possibile la rilevazione di canale occupato
* puo' presentare condizioni di terminale nascosto
* puo contenere uno o piu' canali
 
esempi di mezzi fisici usabili possono essere:
* radio(pmr, cb, vhf, hf)
* rame
** RS485
** Powerline
* ottico
** fibra
** in aria
* acustico
* acustico
* idroacustico
* idroacustico
Line 12: Line 32:
* neutroni
* neutroni
* neutrini
* neutrini
* onde gravitazionali (http://astronomyonline.org/Astrobiology/SETIAlternatives.asp)
* onde gravitazionali
* piccioni
* piccioni, topi, cani, blatte
 
chi e' interessato a una parte se la prenoti!
 
* gnugo: FEC, interleaver, hardware
* ciaby: dds
* ema: aprs
 
 
----


== Livello fisico ==
== Caratteristiche ==
 
=== Alimentazione ===
=== Caratteristiche del mezzo trasmissivo ===
3.3v DC
 
* 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 ===


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


=== Modulazione ===
=== Modulazione ===


Implementa schemi di modulazione ASK, PSK, QAM o FSK , con costellazioni di dimensione da 2 a 32, frequenza massima 8khz.
Implementa squalsiasi combinazione di ASK, PSK, e FSK, con costellazioni di dimensione da 2 a 16, frequenza massima 5khz (campionamento a 20khz).
 
==== 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)
 
* http://www.pcbproject.it/
 
=== Connessioni ===
 
sulla scheda si potrebbero mettere semplicemente i vari header
 
 
==== Connettore GPIO ====
 
header 2 pin, ad uso generico (radiocomandi)
 
{|style="color:orange; background-color:#eeeeee;" cellpadding="10" cellspacing="0" border="1"
||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.
 
 
{|style="color:green; background-color:#eeeeee;" cellpadding="10" cellspacing="0" border="1"
||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:
 
{|style="color:blue; background-color:#eeeeee;" cellpadding="10" cellspacing="0" border="1"
||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.
 
{| style="color:green; background-color:#ffffcc;" cellpadding="10" cellspacing="0" border="1"
!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
 
{|style="color:green; background-color:#ffffdd;" cellpadding="10" cellspacing="0" border="1"
!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||ADC audio In|| ||AN4/C1IN-/RP2/CN6/RB2
|-
|7||ADC Vbatt In|| ||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||U1TX|| ||INT0/RP7(1)/CN23/PMD5/RB7
|-
|17||U1RTS|| ||TCK/SCL1/RP8(1)/CN22/PMD4/RB8
|-
|18|| || ||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||DAC right +|| ||AN10/DAC1LP/RTCC/RP14(1)/CN12/PMWR/RB14
|-
|26||DAC right -|| ||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:
* https://en.wikipedia.org/wiki/Selective_calling
 
 
 
== Firmware ==
=== voci di configurazione ===
 
# modulazione
## tipo di modulazione
### fsk
#### bw in Hz uint16
### psk
### frequenza centrale ''uint16''
### dimensione costellazione ''uint8''
### simboli per secondo ''uint8''
# ptt
## manuale/automatico
## tempo di guardia attacco in ms ''uint8''
## tempo di guardia stacco in ms ''uint8''
# protocollo
## arNet
### indirizzo ''uint8''
### alias ricezione ''uint8''
### router ''bool''
#### priorita ''uint8''
#### ttl ''uint8''
### chiave 256 bit
## aprs
# interfaccia
## auto power off
## 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:
* https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm
* https://otpd.googlecode.com/svn-history/r77/trunk/cardops/totp.c
* https://www.yubico.com/products/yubikey-hardware/yubikey/
* https://code.google.com/p/yubikey-personalization/
 
=== 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 ==
Il symbol rate va da 1 a 1200 baud/s


=== Powerline ===
=== UART ===
2 seriali UART 9600N1 con livelli TTL 3.3v


* https://it.wikipedia.org/wiki/Powerline
=== GPIO ===
* https://it.wikipedia.org/wiki/LonWorks
8 GPIO con acquisizione analogica e output PWM
* https://en.wikipedia.org/wiki/KNX_%28standard%29
* https://en.wikipedia.org/wiki/G.hn

Latest revision as of 20:41, 28 September 2016

Aardvark2 (PSF).png modem tascabile

modem piccolo, economico e a basso consumo per la comunicazione digitale a bassa velocita' su canali rumorosi half-duplex con banda passante da 1Hz a 5khz.

Caratteristiche del mezzo trasmissivo

  • sempre broadcast
  • banda 1 Hz - 5 kHz
  • puo avere SNR infimi
  • e' half-duplex
  • puo' avere tempi di commutazione R/T lunghi
  • non ha meccanismi di collision detect
  • puo' non essere possibile la rilevazione di canale occupato
  • puo' presentare condizioni di terminale nascosto
  • puo contenere uno o piu' canali

esempi di mezzi fisici usabili possono essere:

  • radio(pmr, cb, vhf, hf)
  • rame
    • RS485
    • Powerline
  • ottico
    • fibra
    • in aria
  • acustico
  • idroacustico
  • induzione magnetica
  • neutroni
  • neutrini
  • onde gravitazionali
  • piccioni, topi, cani, blatte

Caratteristiche

Alimentazione

3.3v DC

Porte audio

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

Modulazione

Implementa squalsiasi combinazione di ASK, PSK, e FSK, con costellazioni di dimensione da 2 a 16, frequenza massima 5khz (campionamento a 20khz).

Il symbol rate va da 1 a 1200 baud/s

UART

2 seriali UART 9600N1 con livelli TTL 3.3v

GPIO

8 GPIO con acquisizione analogica e output PWM