Homepage - Pré-commander - FAQ - Mise à jour - Technique

Hardware

 

 

D1,D2,D3: LEDs 940nm 5mm
Q1,Q2,Q3: Transistors NPN SOT89
U1: ATTiny25(V)
U2: 24AA/LC128 EEPROM I²C 16ko
J1: Alimentation
J2: Jack mise a jour
J3: Signal LEDs

 

Essai de transmission

 

Symboles line out: http://en.wikipedia.org/wiki/Line_level#Line_out

Mise a jour:

N'éditez pas le fichier de mise a jour (avec un éditeur audio par exemple).
Le codage ne permet pas de "découper" facilement son contenu pour le réorganiser. Ceci ne provoquera que des erreurs pendant la mise a jour.

Technologie ZOB™ (Zero Out of Bounds): permet de vérifier un minimum l'intégrité des mises a jour, et d'empêcher de griller les LEDs par erreur.

 

Fichiers de mise a jour

Attention, les fichiers doivent être en stéréo avec la piste droite muette !

Les données sont codées par distance d'impulsions.
Les impulsions durent 13 échantillons (295us) et prennent la forme suivante afin de réduire les harmoniques et pour pouvoir être détectées après une inversion (comme certaines cartes son le font):

Le premier bloc d'impulsions sert de calibration temporelle. Il faut au minimum 128 écarts (129 impulsions) pour que la mesure soit validée. Une moyenne est faite et l'écart sera utilise comme valeur pivot pour différencier les 0 et les 1.
Il faut donc que l'écart de calibration soit a peu près entre les écarts pour les 0 et pour les 1.

 

De base, l'écart de calibration est de 14 échantillons (318us).
L'écart des 0 est de 8 échantillons (181us).
L'écart des 1 est de 22 échantillons (499us).
181+499=680, 680/2=340, pas loin de 318us.

Après le bloc de calibration, un silence de 2.1ms est nécessaire (2.048ms en réalité).
De base, ce silence est de 114 échantillons soit 2.58ms.

Les données suivent, octet par octet. Chaque octet est séparé par un écart "0", pour laisser le temps au uTVBG de le traiter.

Le code de départ est 0xCA, 0xCA, 0x96 (oui c'est très mature !). Ensuite, un octet indique la commande:

Exemple de données complètes pour le test de communication (sans la calibration):

Pour les mises a jour, c'est un peu plus complique:

Après le commande 0xD2, suivent deux octets indiquant le nombre de blocs de 64 octets (pages de l'EEPROM) a mettre a jour. Attention, comme la dernière page de l'EEPROM est utilisée pour des données internes, il n'est possible que de mettre a jour 63 pages dans la liste B, soit 4032 octets. La liste A accepte 64 pages.

Après ces deux octets suivent les 64 octets a inscrire dans l'EEPROM. Puis un code de fin de page:
0x81,0x81,0x81,0x5A,0xFF, et une somme de vérification sur un octet (seulement sur les 64 octets).
La suite de codes 0x81 permet de donner le temps a l'EEPROM d'écrire la page.

Une fois toutes les pages transmises, le code de fin de mise a jour est transmis: 0xB0,0x0B (très mature aussi). Et finalement une somme de vérification de toutes les pages sur 2 octets.

Ainsi, une mise a jour de 2 pages par exemple est constituée comme suit:

Format des données pour les codes: A venir (très similaire au format de Ladyada).

 

Circuit de mise a jour

Compose de C1, R4 et R5. Tension d'alimentation divisée par 0.548.
A 3V: 1.64V

Le comparateur de tension du µC est utilise avec la référence interne de 1.1V.

Le niveau crête a crête standard des sorties audio d'ordinateur est dans les environs de 2V.
A 3V avec le volume au max: 1.64-(2/2)=0.64V.

Niveau minimum de la tension d'alimentation: 1.2/0.548 = ~2.2V (avec marge de 100mV).

Niveau p-p minimum en fonction de la tension d'alimentation:

((VCC*0.548)-1.05)*2 avec 50mV de marge:
A 2.5V: 590mV
A 2.8V: 920V
A 3V: 1.15V
A 3.5V: 1.7V
A 4V: 2.3V (plus possible !)

Tension d'alimentation max avec 2Vp-p en audio:
((2/2)+1.05)/0.548 = 3.74V

Avec 1Vp-p en audio:
((1/2)+1.05)/0.548 = 2.83V