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.
Ensuite, je me suis un peu emporté et fait cette étagère avec le reste de planche qui me reste des travaux de ma maison.
Le tout fait en un dimanche après-midi.

dimanche 21 novembre 2010

Meuble pour évier sous SketchUp/les portes

 

 
Suite et fin de ce meuble, installation des deux portes avec des charnières invisibles. 
Pour la finition des portes j'ai utilisé une défonceuse pour arrondir les angles.
Il me restera plus qu'à traiter le bois.

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

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. 
 La prise en main est facile, voici ce que j'ai pu faire en quelques heures :
  L’évier est lourd et peut contenir une grande quantité d'eau. 
J'opte donc pour une structure en profilé d'acier avec un habillage de bois.

dimanche 22 août 2010

Lightning-hunter #004

Un bel orage que j'ai vu arriver de très loin en Vendée avec un vent au sol contraire à son déplacement, les premières images prises au sec, les suivantes sous la pluie battante.

Mode d'emploi en "français"

On vient de me montrer ce mode d'emploi, bien plus impressionnant que l'objet qui l'accompagne.

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) ; }

Sauvegarde txt_ram à l'adresse 0x002000, txt_ram2 a l'adresse 0x0023F0, txt_ram est chargé par la valeur à l'adresse 0x0023F0 soit la valeur de txt_ram2.

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

Fait avec une chute de câble twisté isolé au téflon et kapton, le fil s'échauffe très vite
Sur un melon.
Et la video.

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.
Le PC envoi un état vers le pic, en rajoutant ce code, j'ai une recopie d’état des num lock et cap lock du clavier du PC sur les LED de la platine : 
if(hid_report_out[0] & 0x01) {mLED_1_On();}else{mLED_1_Off();} 
if(hid_report_out[0] & 0x02) {mLED_2_On();}else{mLED_2_Off();}

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 
#endif 

 Périphérique reconnu, j'appuie sur le BP de la platine, un caractère par coup. 
J’obtiens la série "qbcdefghijkl,noparstuvzxyw&é"'(-è_çà"

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.
 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.

samedi 10 juillet 2010

KAP : Saint-Pompain vu du ciel

Point commun : les piscines
Après les battages les champs ont un aspect de velours côtelé