dimanche 19 décembre 2010
Nouveau lave-linge
Je n'ai pas pu sauver mon ancienne machine, elle est finalement devenue schizophrène. Je n'ai pas trop de temps pour en faire la réparation, j'en achète donc une neuve chez But.
Mon choix s'est arrêté sur une WD-12591BDH de LG:
-grand volume (10Kg) avec capacité variable automatique.
-mécanisme fiable avec son moteur à entraînement direct.
voila la bête.
Voici son moteur, différemment au système habituel, le moteur est directement monté sur l'arbre du tambour, de plus il s'agit d'une technologie brushless et donc sans aucune usure.
On peut noter l'absence de masse pour équilibré sur le dessus du tambour.
On a un groupe de deux pompes, une pour l'évacuation, l'autre pour renvoyer l'eau dans le tambour, évitant ainsi de perdre une grande partie de lessive qui tombe directement dans le conduit de pompage, comme dans les modèles courant de machine.
Contrairement à ce qui a causé la perte de mon ancienne machine, les PCB sont tropicalisés.
Tropicalisation faite par coulage de silicone cristal
lundi 22 novembre 2010
Défonceuse
Ce weekend je me suis procuré une défonceuse.
J'ai débuté par un enrouleur pour les lignes de mon cerf-volant, puis un fusil d'assaut, un FAMAS, en bois pour mon neveu.
dimanche 21 novembre 2010
Meuble pour évier sous SketchUp/les portes
dimanche 7 novembre 2010
Meuble pour évier sous SketchUp/plomberie
Branchement de l'arrivée d'eau et évacuation avec un kit différent de celui livré avec l’évier pour libérer un maximum de place.
lundi 1 novembre 2010
vendredi 29 octobre 2010
mardi 26 octobre 2010
Meuble pour évier sous SketchUp
J'ai l'intention d’installer cet évier, j'en profite pour faire un essai de SketchUp.
dimanche 22 août 2010
dimanche 15 août 2010
Clef USB password: communication
Ce weekend, création de l'interface de communication des codes.
J'utilise la recopie d’état des LED "num" et "cap" du clavier, comme cela je suis sûr que les codes ne seront pas divulgués par une application du PC, et beaucoup plus dur à un keylogger à pirater.
Je recrée une sorte de liaison SPI au travers des 2 LED.
Cotée PC j'ai fait une application en Visual C++ qui envoi des codes de touche virtuel Cotée pic une fonction décodage et sauvegarde de la chaîne de caractères à la réception du caractère null a l'emplacement 0x010000 et 0x010070 de la flashrom une petite correction de la fonction écriture qui doit écrire par mots de 16 bits au lieu par octet, le fonctionnement était aléatoire hors simulateur.
lundi 9 août 2010
Clef USB password: correctif sauvegarde
Petit correctif au niveau de la sauvegarde en flash :
void flash_mem_clear( unsigned short long adresse)
void flash_mem_text_to_rom(unsigned char *ramptr, unsigned short long adresse)
void flash_mem_flash_to_text(unsigned char *ramptr, unsigned short long adresse)
Au lieu de :
void flash_mem_clear( int adresse)
void flash_mem_text_to_rom(unsigned char *ramptr, int adresse)
void flash_mem_flash_to_text(unsigned char *ramptr, int adresse)
Les "int" sont codé sur 16 bits donc la mémoire flash supérieure à 0x00FFFF n'était pas utilisable, pire une écriture en 0x010000 donnait une écriture en 0x000000 et là le firmware devient inutilisable.
dimanche 8 août 2010
Clef USB password: traduction ASCII>>touches
Je vais donc utiliser une chaîne de caractères, de l'ASCII.
Je traduis les caractères ASCII vers code clavier :
unsigned char touche_clavier_traduit(unsigned char caractere){
switch(caractere){
case 'a':
case 'A':
return touche_A;
case 'b':
case 'B':
return touche_B;
..................ainsi de suite
Avec les constantes :
#define touche_Q 4
#define touche_B 5
#define touche_C 6
#define touche_D 7
#define touche_E 8
#define touche_F 9
..................ainsi de suite
samedi 7 août 2010
Clef USB password : sauvegarde en flash
Maintenant, je veux pouvoir sauvegarder les codes, ces PIC ne possèdes pas d'EEPROM donc sauvegarde en mémoire programme.
Je pourrai utiliser la déclaration "rom unsigned char chaine1[]="bonjour";".
Mais le problème c'est que pour réécrire une chaîne il faut effacer la zone avec le programme qui y est contenu.
J'ai donc fait des fonctions d'écriture en flash.
Je suis parti des procédures en assembleur du datasheet pic18f87J50 section "6-flash program memory"
Soit les fonctions :
void flash_mem_clear( int adresse){
TBLPTRU=(adresse>>16) & 0xFF;
TBLPTRH=(adresse>>8) & 0xFF;
TBLPTRL=adresse & 0xFF;
//efface un secteur de 1024 byte (0x400)
EECON1bits.WREN=1;
EECON1bits.FREE=1;
INTCONbits.GIE=0;
EECON2=0x55;
EECON2=0x0AA;
EECON1bits.WR=1;
INTCONbits.GIE=1;
}
void flash_mem_text_to_rom(unsigned char *ramptr, int adresse){//unsigned char *ramptr
do{
TBLPTRU=(adresse>>16) & 0xFF;
TBLPTRH=(adresse>>8) & 0xFF;
TBLPTRL=adresse & 0xFF;
TABLAT=*ramptr++;
_asm TBLWT _endasm
EECON1bits.WPROG=1;
EECON1bits.WREN=1;
INTCONbits.GIE=0;
EECON2=0x55;
EECON2=0x0AA;
EECON1bits.WR=1;
INTCONbits.GIE=1;
EECON1bits.WPROG=0;
EECON1bits.WREN=0;
adresse++;
}while(*ramptr);
TBLPTRU=(adresse>>16) & 0xFF;
TBLPTRH=(adresse>>8) & 0xFF;
TBLPTRL=adresse & 0xFF;
TABLAT=*ramptr++;
_asm TBLWT _endasm
EECON1bits.WPROG=1;
EECON1bits.WREN=1;
INTCONbits.GIE=0;
EECON2=0x55;
EECON2=0x0AA;
EECON1bits.WR=1;
INTCONbits.GIE=1;
EECON1bits.WPROG=0;
EECON1bits.WREN=0;
}
void flash_mem_flash_to_text(unsigned char *ramptr, int adresse){
TBLPTRU=(adresse>>16) & 0xFF;
TBLPTRH=(adresse>>8) & 0xFF;
TBLPTRL=adresse & 0xFF;
while(*ramptr){
_asm TBLRDPOSTINC _endasm
*ramptr++=TABLAT;
}
_asm TBLRDPOSTINC _endasm
*ramptr++=TABLAT;
}
Programme de test :
#include
#include "string.h"
#include "stdio.h"
#include "sauvegarde_flash_mem.h"
unsigned char txt_ram[100] = "abcdefghijklmnopqrstuvwxyzxxxxxxxxxxxxxxxxxxxxxxxx";
unsigned char txt_ram2[100] = "texte en ram222222222222222222222222222222222222222222222222222";
void main (void)
{
fprintf(_H_USER,"\nstart\n");
printf("\nstart\n");
printf("txt_ram=%s\n",txt_ram);
printf("txt_ram2=%s\n",txt_ram2);
flash_mem_clear( 0x002000);
flash_mem_text_to_rom(&txt_ram,0x002000 );
flash_mem_text_to_rom(&txt_ram2,0x0023F0 );
flash_mem_flash_to_text(&txt_ram, 0x0023F0);
printf("\n");
printf("txt_ram=%s\n",txt_ram);
printf("txt_ram2=%s\n",txt_ram2);
while (1)
;
}
mercredi 4 août 2010
Clef USB password: code fonctionnel
J'ai changé à l'arrache le début de la fonction :
void Keyboard(void)
{
static unsigned char key = 4;//4
static unsigned char position = 0;
static unsigned char texte[100];
texte[0]=4;
texte[1]=5;
texte[2]=6;
texte[3]=7;
texte[4]=8;
texte[5]=43;//tab
texte[6]=9;
texte[7]=10;
texte[8]=11;
texte[9]=88;//enter
texte[10]=0;//fin
//Check if the IN endpoint is not busy, and if it isn't check if we want to send
//keystroke data to the host.
if(!HIDTxHandleBusy(lastINTransmission))
{
if(sw2==0)//sw2//Switch3IsPressed()
{
//Load the HID buffer
hid_report_in[0] = 0;
hid_report_in[1] = 0;
hid_report_in[2] = texte[position];//key++
hid_report_in[3] = 0;//0
hid_report_in[4] = 0;
hid_report_in[5] = 0;
hid_report_in[6] = 0;
hid_report_in[7] = 0;
if(texte[position]==0)
{
// while(sw2==0);;
key = 40;
hid_report_in[2] = 0;//key++
}else{
position++;
}
//Send the 8 byte packet over USB to the host.
lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x08);
}
else
{
//Load the HID buffer
hid_report_in[0] = 0;
hid_report_in[1] = 0;
hid_report_in[2] = 0; //Indicate no character pressed
hid_report_in[3] = 0;
hid_report_in[4] = 0;
hid_report_in[5] = 0;
hid_report_in[6] = 0;
hid_report_in[7] = 0;
//Send the 8 byte packet over USB to the host.
lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x08);
position = 0;
key = 4;
}
}
Ce qui a pour effet de tapé :
abcde[tabulation]fgh[enter]
Il y a plus qu'à traduire des touches pour que ça marche.
lundi 2 août 2010
THT expérience #013 : Fil néon
dimanche 1 août 2010
Clef USB password: clavier en qwerty
En mettant Windows en clavier EN (alt + maj) j'obtiens la série dans l'ordre :
abcdefghijklmnopqrstuvwxyz1234567890 -=[]\\;'`,./
Au lieu de :
qbcdefghijkl,noparstuvzxyw&é"'(-è_çà )=^$**mù²;:!
Alors que j'ai changé le descripteur 0x0409(US) par 0x040C(FR).
Windows attribut les touches suivant leurs emplacements physiques théorique
le code envoyé au pc correspond à l'appui et relâchement de chaque touche alors que sur cet autre projet un code d'appui et un code de relâchement est généré :
adaptateur manettes Playstation vers mini DIN de PC-AT.
samedi 31 juillet 2010
Clef USB password : mise en route
Bon, je suis allé chercher les cordons.
Pour le programmateur c'est un adaptateur de ma fabrication, l'ICD a une sortie en RJ45.
Lancement du programme ->périphérique non reconnu
c'est dû à ce que j'ai changé le quartz de 12 Mhz par un oscillateur de 48 Mhz->rajout des directives :
#if defined(oscillateur48mhz)
#pragma config PLLDIV = 12 //Divide by 12 (48 MHz oscillator input)//config pour oscillateur 48 mhz
#pragma config FOSC = HS //config pour oscillateur 48 mhz
#endif
#if defined(quartz12mhz)
#pragma config PLLDIV = 3 // (12 MHz crystal used on this board)//config pour quartz 12 mhz
#pragma config FOSC = HSPLL // Firmware must also set OSCTUNE to start PLL!//config pour quartz 12 mhz
vendredi 30 juillet 2010
Clef USB password : démarrage
Je veux faire une clef USB qui me permettrait de saisir mes loging/password, en gros je veux faire un bouton sur USB qui me tape pour moi mes logging et passwords. Pour le développement je vais utiliser un module PIM pic18F87J50, une fois le programme fait je le porterait vers un pic26J50 qui est plus facile à souder et intégrer dans une clef-USB Le module PIM pic18F87J50 a l'avantage d'avoir un port USB et pas besoin d'alimentation puisque qu'il est auto alimentée par l'USB, je n'ai que du soft à écrire.
http://radiospares-fr.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=564197
http://radiospares-fr.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=6669999
Pour la programmation j'utilise un ICD2 plus MPLAB IDE avec l'option MCC18 (langage C):
http://radiospares-fr.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=4670754
J'ai installé le "MCHP microchip application libraries" cela installe toutes les librairies de fonctions spéciales avec les programmes d'exemples :
Je vais partir de l'exemple "USB Device - HID - Keyboard" qui semble être un clavier d'une touche par module pic/USB, reconnu par le système d'exploitation donc pas de drivers à installer. Le montage pourrait aller sur n'importe quel PC.
Après avoir redéfini les chemins des outils de compilation l'exemple compile mais je n'ai pas pensé à prendre les cordons pour la programmation et l'USB donc je vous dirai plus tard le fonctionnement.
lundi 26 juillet 2010
dimanche 25 juillet 2010
samedi 10 juillet 2010
Inscription à :
Articles (Atom)