abaissé quoi ... tu attendais quoi ?
nous avons tous peu ou prou d'expérience , et ton cas n'est pas unique.
bref tu as eu des conseils , et tu as les clef en main
-----
abaissé quoi ... tu attendais quoi ?
nous avons tous peu ou prou d'expérience , et ton cas n'est pas unique.
bref tu as eu des conseils , et tu as les clef en main
bonsoir, bon j'ai une question est ce que tu peux encore changer de sujet je veux dire CHOISIR un autre sujet ?
bonsoir,c'est pas moi qui change le sujet c'est le responsable de la socièté même si en changeant il sais pas si ça va marcher ou nn :/
Peut être que je t'ai mal compris ...
En général, quand je prends le temps d'expliquer les choses, c'est que dans le fond, j’essaie d'aider la personne !
J'explique gentiment les choses et la manière de commencer un projet.
Et ... de temps en temps, je pousse un peu fort pour faire un électrochoc pour faire réagir, comme je l'ai fait avec toi.
Désolé si je t'ai blessé ! Mais faut que tu te ressaisisses et faut te mettre au boulot.
Je pense que nous sommes tous là pour la même chose, s'entraider !
Depuis que je suis sur ce site, que je trouve superbe, j'ai posté très peu de sujets auxquels je n'ai pas eu d'aide.
Mais ce n'est pas grave, j'ai pris goût à aider les autres, quand c'est demandé poliment et quand c'est pour un point précis.
Personnellement, je me refuse à faire le travail à la place des autres ...
Toi, comme je l'ai dis au début, je ne sais toujours pas sur quoi tu butes (sur tout peut être, dans ce cas ce n'est pas normal)
Bon courage.
Mickael
moi je veux pas que vous faites mon travail...
j'ai demandé juste de me guider me mettre sur la bonne route quoi ...
et j'ai demandé ça poliment !!
Si tu veux travailler sur des PIC, regardes : http://www.microchip.com/pagehandler...ools/home.html
Il y a de très bons exemples pour débuter !
Par contre, je ne sais pas si Microchip est la base la plus simple, mais moi je travaille à 80% avec leur Kits et j'ai fait pas mal de formation aux Ulis.
Pour ceux qui ne connaissent pas : http://secure.microchip.com/rtcv2/SearchClasses.aspx
N'hésites pas s'il te faut d'autres conseils ...
Je suis actuellement sur un projet avec plusieurs compteurs d'eau qui renvoient les débits instantanés et cumulés par liaison radio sur un concentrateur qui récupère et stock les données. Ce dernier est relié à internet via une liaison Ethernet.
Il y a beaucoup de boulot, mais le site Microchip est riche en information !
la première des choses je crois qu'il est impératif que tu parles avec le directeur de la société pour prendre ton cas en charge .
deuxièmement si tu es libre de choisir le thème de ton PFE je te conseille d'opter vers réalisation à base de PIC, la solution la plus adéquate est de chercher dans les magazines d'électronique car le programme qui est généralement en C est fourni, donc tu sera amenée à faire que la réalisation, et même si tu ne sais pas souder ce n'est pas si compliqué que cela, pour le circuit imprimé tu peux facilement l'avoir il ne dépasse pas 30 euros ( pour des petites maquettes ).
et si tu t'y connais en programmation tu peux faire une interface avec le java ou bien le C++ , un programme qui a un rapport directe avec ton domaine d'étude, si tu fais de l'informatique industrielle par exemple tu peux faire un programme pour la commande d'un automate programmable industriel ..
si et seulement si tu est coincée avec ce projet bah je te conseille vivement de commencer à faire le nécessaire et surtout à rédiger un cahier de charge : écrir clairement ce que tu veux faire, étape par étape puis poser des questions directes et précise
Bonjour,
puisqu'il ne te reste que 3 semaines, il peut être intéressant d'abandonner les PICs, et de basculer sur une plateforme prévue pour développer rapidement, genre arduino + ethernet shield, qui permettent de faire ce que tu veux très rapidement, il y a notamment un exemple sur le site officiel (http://arduino.cc/en/Reference/Ethernet) qui donne le code complet permettant de faire des requêtes HTTP.
Courage, c'est dans ces moments d'urgence que tu as la possibilité de te démarquer![]()
j'ai fais un schéma qui contient un pic 16F874 avec un enc28J60 et rj45 !
j'ai travaillé sur isis mais j'ai pas trouvé rj45 donc j'ai passé travailler sous eagle
j'essaye de m'adapter à l'environnement
qu'en pensez vous ?
j'en pense que tu mes la charrue avant les bœufs...
te jeter sur un shéma AVANT de savoir ce qu'il y a à faire (perso j'ai pas encore pigé... au bout de 40 messages !)
ne ne pas avoir fait de synoptique
de ne pas avoir dessiné l’algorithme du logiciel
ne ne pas avoir précisé les protocoles...
c'est foncer dans le mur en klaxonnant.
Je suis pressée par le temps je dois avancer ...
le responsable s'en fou de moi ...
j'ai pas trouvé le temps pour parler avec lui ...
est ce que vous pouvez me dire quels sont les choses ou les mots clés que dois je savoir ...
avant de passer au programmation j'ai pensé à faire un schéma
ce schéma me permet de se connecter à internet ...
ce shéma ne permet rien du tout , tant que le soft n'est pas rédigé....
questions : combien vaut Vcc ?
observation : un shéma avec l'alim en bas et la masse en haut va à l'encontre de toute les habitudes
de dessin , et va décourager les lecteurs.
Vcc vaut 5v Le schéma doit simuler une connexion réseau entre la carte avec pic et une équipement... Je veux savoir si ce schéma est "bon"... Une fois cette étape finie, je vais écrire le code bien sûr.... s'il vous plaît, ce schéma est "bon"?
sans connaitre le soft , il est impossible de répondre , ne serai-ce que parce qu’on ne connais pas
l'attribution des pinoches du pic.
AJOUT , je ne vois aucune capas de découplage sur l'alim des circuits,
ce qui est chercher les ennuis.
d'autre part , tu nous cause de led qui répondent à l'interrogation du serveur...
où donc sont elles ?
c'est facile d'ajouter les leds ça cause pas un grand problème ...
le problème persiste au niveau de l'assurance de connexion ...
j'ai trouvé un code qui rend le pic "un serveur" ...
je vois qu'il est un peu compliqué ...
#define Spi_Ethernet_HALFDUPLEX 0
#define Spi_Ethernet_FULLDUPLEX 1
/****************************** ******************************
* ROM constant strings
*/
const unsigned char httpHeader[] = "HTTP/1.1 200 OK\nContent-type: " ; // HTTP header
const unsigned char httpMimeTypeHTML[] = "text/html\n\n" ; // HTML MIME type
const unsigned char httpMimeTypeScript[] = "text/plain\n\n" ; // TEXT MIME type
unsigned char httpMethod[] = "GET /";
/*
* web page, splited into 2 parts :
* when coming short of ROM, fragmented data is handled more efficiently by linker
*
* this HTML page calls the boards to get its status, and builds itself with javascript
*/
const char *indexPage = // Change the IP address of the page to be refreshed
"<meta http-equiv=\"refresh\" content=\"3;url=http://192.168.1.60\">\
<HTML><HEAD></HEAD><BODY>\
<h1>PIC + ENC28J60 Mini Web Server</h1>\
<a href=/>Reload</a>\
<script src=/s></script>\
<table><tr><td valign=top><table border=1 style=\"font-size:20px ;font-family: terminal ;\">\
<tr><th colspan=2>ADC</th></tr>\
<tr><td>AN2</td><td><script>document.write( AN2)</script></td></tr>\
<tr><td>AN3</td><td><script>document.write( AN3)</script></td></tr>\
</table></td><td><table border=1 style=\"font-size:20px ;font-family: terminal ;\">\
<tr><th colspan=2>PORTB</th></tr>\
<script>\
var str,i;\
str=\"\";\
for(i=0;i<8;i++)\
{str+=\"<tr><td bgcolor=pink>BUTTON #\"+i+\"</td>\";\
if(PORTB&(1<<i)){str+=\"<td bgcolor=red>ON\";}\
else {str+=\"<td bgcolor=#cccccc>OFF\";}\
str+=\"</td></tr>\";}\
document.write(str) ;\
</script>\
" ;
const char *indexPage2 = "</table></td><td>\
<table border=1 style=\"font-size:20px ;font-family: terminal ;\">\
<tr><th colspan=3>PORTD</th></tr>\
<script>\
var str,i;\
str=\"\";\
for(i=0;i<8;i++)\
{str+=\"<tr><td bgcolor=yellow>LED #\"+i+\"</td>\";\
if(PORTD&(1<<i)){str+=\"<td bgcolor=red>ON\";}\
else {str+=\"<td bgcolor=#cccccc>OFF\";}\
str+=\"</td><td><a href=/t\"+i+\">Toggle</a></td></tr>\";}\
document.write(str) ;\
</script>\
</table></td></tr></table>\
This is HTTP request #<script>document.write(REQ)</script></BODY></HTML>\
" ;
/****************************** *****
* RAM variables
*/
unsigned char myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} ; // my MAC address
unsigned char myIpAddr[4] = {192, 168, 1, 60 } ; // my IP address
unsigned char gwIpAddr[4] = {192, 168, 1, 1 } ; // gateway (router) IP address
unsigned char ipMask[4] = {255, 255, 255, 0 } ; // network mask (for example : 255.255.255.0)
unsigned char dnsIpAddr[4] = {192, 168, 1, 1 } ; // DNS server IP address
unsigned char getRequest[15] ; // HTTP request buffer
unsigned char dyna[30] ; // buffer for dynamic response
unsigned long httpCounter = 0 ; // counter of HTTP requests
/****************************** *************
* functions
*/
/*
* put the constant string pointed to by s to the ENC transmit buffer.
*/
/*unsigned int putConstString(const char *s)
{
unsigned int ctr = 0 ;
while(*s)
{
Spi_Ethernet_putByte(*s++) ;
ctr++ ;
}
return(ctr) ;
}*/
/*
* it will be much faster to use library Spi_Ethernet_putConstString routine
* instead of putConstString routine above. However, the code will be a little
* bit bigger. User should choose between size and speed and pick the implementation that
* suites him best. If you choose to go with the putConstString definition above
* the #define line below should be commented out.
*
*/
#define putConstString Spi_Ethernet_putConstString
/*
* put the string pointed to by s to the ENC transmit buffer
*/
/*unsigned int putString(char *s)
{
unsigned int ctr = 0 ;
while(*s)
{
Spi_Ethernet_putByte(*s++) ;
ctr++ ;
}
return(ctr) ;
}*/
/*
* it will be much faster to use library Spi_Ethernet_putString routine
* instead of putString routine above. However, the code will be a little
* bit bigger. User should choose between size and speed and pick the implementation that
* suites him best. If you choose to go with the putString definition above
* the #define line below should be commented out.
*
*/
#define putString Spi_Ethernet_putString
/*
* this function is called by the library
* the user accesses to the HTTP request by successive calls to Spi_Ethernet_getByte()
* the user puts data in the transmit buffer by successive calls to Spi_Ethernet_putByte()
* the function must return the length in bytes of the HTTP reply, or 0 if nothing to transmit
*
* if you don't need to reply to HTTP requests,
* just define this function with a return(0) as single statement
*
*/
unsigned int Spi_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength)
{
unsigned int len = 0 ; // my reply length
unsigned char i ; // general purpose char
if(localPort != 80) // I listen only to web request on port 80
{
return(0) ;
}
// get 10 first bytes only of the request, the rest does not matter here
for(i = 0 ; i < 10 ; i++)
{
getRequest[i] = Spi_Ethernet_getByte() ;
}
getRequest[10] = 0 ;
if(memcmp(getRequest, httpMethod, 5)) // only GET method is supported here
{
return(0) ;
}
httpCounter++ ; // one more request done
if(getRequest[5] == 's') // if request path name starts with s, store dynamic data in transmit buffer
{
// the text string replied by this request can be interpreted as javascript statements
// by browsers
len = putConstString(httpHeader) ; // HTTP header
len += putConstString(httpMimeTypeScr ipt) ; // with text MIME type
// add AN2 value to reply
intToStr(ADC_Read(2), dyna) ;
len += putConstString("var AN2=") ;
len += putString(dyna) ;
len += putConstString(";") ;
// add AN3 value to reply
intToStr(ADC_Read(3), dyna) ;
len += putConstString("var AN3=") ;
len += putString(dyna) ;
len += putConstString(";") ;
// add PORTB value (buttons) to reply
len += putConstString("var PORTB=") ;
intToStr(PORTB, dyna) ;
len += putString(dyna) ;
len += putConstString(";") ;
// add PORTD value (LEDs) to reply
len += putConstString("var PORTD=") ;
intToStr(PORTD, dyna) ;
len += putString(dyna) ;
len += putConstString(";") ;
// add HTTP requests counter to reply
intToStr(httpCounter, dyna) ;
len += putConstString("var REQ=") ;
len += putString(dyna) ;
len += putConstString(";") ;
}
else if(getRequest[5] == 't') // if request path name starts with t, toggle PORTD (LED) bit number that comes after
{
unsigned char bitMask = 0 ; // for bit mask
if(isdigit(getRequest[6])) // if 0 <= bit number <= 9, bits 8 & 9 does not exist but does not matter
{
bitMask = getRequest[6] - '0' ; // convert ASCII to integer
bitMask = 1 << bitMask ; // create bit mask
PORTD ^= bitMask ; // toggle PORTD with xor operator
}
}
if(len == 0) // what do to by default
{
len = putConstString(httpHeader) ; // HTTP header
len += putConstString(httpMimeTypeHTM L) ; // with HTML MIME type
len += putConstString(indexPage) ; // HTML page first part
len += putConstString(indexPage2) ; // HTML page second part
}
return(len) ; // return to the library with the number of bytes to transmit
}
/*
* this function is called by the library
* the user accesses to the UDP request by successive calls to Spi_Ethernet_getByte()
* the user puts data in the transmit buffer by successive calls to Spi_Ethernet_putByte()
* the function must return the length in bytes of the UDP reply, or 0 if nothing to transmit
*
* if you don't need to reply to UDP requests,
* just define this function with a return(0) as single statement
*
*/
unsigned int Spi_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength)
{
unsigned int len ; // my reply length
// reply is made of the remote host IP address in human readable format
byteToStr(remoteHost[0], dyna) ; // first IP address byte
dyna[3] = '.' ;
byteToStr(remoteHost[1], dyna + 4) ; // second
dyna[7] = '.' ;
byteToStr(remoteHost[2], dyna + 8) ; // third
dyna[11] = '.' ;
byteToStr(remoteHost[3], dyna + 12) ; // fourth
dyna[15] = ':' ; // add separator
// then remote host port number
WordToStr(remotePort, dyna + 16) ;
dyna[21] = '[' ;
WordToStr(destPort, dyna + 22) ;
dyna[27] = ']' ;
dyna[28] = 0 ;
// the total length of the request is the length of the dynamic string plus the text of the request
len = 28 + reqLength;
// puts the dynamic string into the transmit buffer
Spi_Ethernet_putBytes(dyna, 28) ;
// then puts the request string converted into upper char into the transmit buffer
while(reqLength--)
{
Spi_Ethernet_putByte(toupper(S pi_Ethernet_getByte())) ;
}
return(len) ; // back to the library with the length of the UDP reply
}
/*
* main entry
*/
void main()
{
ADCON1 = 0x0B ; // ADC convertors will be used with AN2 and AN3
CMCON = 0x07 ; // turn off comparators
PORTA = 0 ;
TRISA = 0xff ; // set PORTA as input for ADC
PORTB = 0 ;
TRISB = 0xff ; // set PORTB as input for buttons
PORTD = 0 ;
TRISD = 0 ; // set PORTD as output
/*
* starts ENC28J60 with :
* reset bit on RC0
* CS bit on RC1
* my MAC & IP address
* full duplex
*/
Spi_Init();
Spi_Ethernet_Init(&PORTC, 0, &PORTC, 1, myMacAddr, myIpAddr, Spi_Ethernet_FULLDUPLEX) ;
// dhcp will not be used here, so use preconfigured addresses
SPI_Ethernet_confNetwork(ipMas k, gwIpAddr, dnsIpAddr) ;
while(1) // do forever
{
/*
* if necessary, test the return value to get error code
*/
Spi_Ethernet_doPacket() ; // process incoming Ethernet packets
/*
* add your stuff here if needed
* Spi_Ethernet_doPacket() must be called as often as possible
* otherwise packets could be lost
*/
}
}
je suis pas nulle ...
je voulais pas que vous pensez que je ne peux rien faire ...
mais j'ai vous déjà dis que j'ai réussis d'allumer les leds avec le 16f et mm avec le 18f
et aussi en cliquant sur certaines touches du clavier via le RS232 ...
et tout ça je l'ai jamais fais à l'école ...
mais c'est pas ça qui compte à la fin ...
c'est la réalisation du sujet demandé qui compte ...
j'aimerais bien savoir ce que tu as fait en fac....
c'est laquelle ?
c'est en tunisie !!
pour ce qui est de ton soft , le mieux est de le tester...
je le simuler sur le mikroc ...
le code est correcte mais j'arrive pas à le comprendre ...
et si vous parlez de le tester sur le pic je vous informe que la simulation sur eagle ne marche pas ...
ça se teste en vrai grandeur , le reste c’est des foutaises....
si ton montage s'inscrit par une requête DHCP sur le réseau , c'est bon
Dernière modification par PIXEL ; 17/05/2013 à 14h49.
Je dirais, oui. Le schéma est peut être correct ( j'ai pas bien vérifié ). tu t'ai basé sur ça mais en mikroC ? ==> http://www.mikroe.com/download/eng/d...et_library.htm ( ça peut t'aider)
Mais si tu veux te facilité la vies utilise les PIC 18, 24 ou 32 pour avoir une librairies gratuit et prête à utiliser : ==> http://www.microchip.com/stellent/id...param=en535724
Si tu utilises mikroC , oublies le 2éme lien.
Pour le code , c'est des routines de "SPI Protocol" qui envoie des requêtes en TCP/IP pour établir une connexion.
Est ce que tu as déjà codé en HTML ? Est ce que tu connais les couches de TCP/IP ?
ouiii j'ai déjà codé en HTML ..
et je connais aussi les couches de TCP/IP
et qu'as-tu PRATIQUEMENT manipulé sur le sujet ?
j'ai rien fais du pratique tout est théorique rien que sur des logiciels ...
Mais si tu as pris quelques secondes ( bon une dizaines .! ) , tu concluras que ce code permet de créer UNE page web en 2 parties ( le contenu de *indexPage" et "*indexPage2" ). C'est tout !
Pour les détails de la page, c'est à toi de le vérifier par ton bagages HTML (essaye au moins )