Posté le 25/10/2013 00:08
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 222 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 26/10/2013 01:01 | #
Donc au niveau de l'arduino tu sais déjà comment envoyer un email ? car le plus simple est que la "tête pensante" soit l'arduino. Et la calto sert juste de clavier et d'écran.
Citer : Posté le 27/10/2013 14:56 | #
Les add-ins en général ça va mais jusqu’à un certain niveau et serial monitor fait parti du niveau supérieur
Mon but serais de récupérer seulement ce qui permet d'envoyer des messages pour ensuite l'appeler afin envoyer des chaîne de caractère a l'arduino (identifiant, message, sujet, ...)
J'ai fait mon propre add-in pour remplir ces chaînes mais je comprends pas trop comment fait ensuite ton add-in pour les envoyer ...
Voila mon programme arduino a modifier un tout petit peu mais avec ça j'envois des mail sans problèmes (mais ça marche seulement sur les boites laposte.net pour des raisons de sécurité )
#include <Ethernet.h>
// Local network configuration:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x**, 0x** };
byte ip[] = { 192,168,0, *** };
byte server[] = { 193, 251, 214, 114 }; // SMTP server
String ServerName = "laposte.net";
// Mail data:
String Body = "Salut ca va ?";
int time = 1000;
int wait = 1000;
String ServerResponse="";
EthernetClient client;
void setup(){
Serial.begin(9600);
Serial.println("Program started, waiting for router...");
delay(time); /* allow the router to identify the Arduino before the Arduino connects to the internet */
Serial.println("Starting network module...");
Ethernet.begin(mac, ip);
delay(2000);
Serial.println("connecting...");
if (client.connect(server, 25)) {
Serial.println("connected");
SendMsg("HELO " + ServerName); /* say hello*/
SendMsg("AUTH PLAIN ");
SendMsg("*****"); /* Username*/
SendMsg("mail from: <****@laposte.net>"); /* identify sender */
SendMsg("rcpt to: <****@laposte.net>"); /* identify recipient */
SendMsg("DATA");
SendMsg("To: ****@laposte.net"); /* recipient in message header */
SendMsg("From: ****@laposte.net"); /* seder name in message header */
SendMsg("Subject: Arduino"); /* insert subject */
SendMsg(""); /* empty line */
SendMsg(Body); /* insert body */
SendMsg(""); /* empty line */
SendMsg("."); /* end mail */
SendMsg("QUIT"); /* terminate connection */
client.println();
} else {
Serial.println("connection failed");
}
}
void loop(){
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
void GetResponse() {
if (client.available()) {
char c = client.read();
while (client.available()) { // Store command char by char.
ServerResponse +=c;
c = client.read();
}
Serial.println("<<<" + ServerResponse);
ServerResponse="";
}
}
void SendMsg(String m) {
client.println(m);
Serial.println(">>>" + m);
delay(wait); /* wait for a response */
GetResponse();
}
Citer : Posté le 30/10/2013 23:57 | #
Pour les envoyer, il y a des syscall qui sont dans le couple de fichier .h/.src de mon projet (je sais plus exactement le nom, mais c'est en rapport avec la communication série). Dans le ficheir h tu as les prototypes des fonctions qui pourront déjà te renseigner un peu. Et sinon tu recherche les noms sur google et sinon il y a la doc de simon lothar qui pourra t'aider, prend le fichier pdf.
Désolé je peux pas vraiment t'aider plus j'ai pas trop le temps en ce moment :/
Citer : Posté le 31/10/2013 10:06 | #
Ok pas grave
Vais essayer de me débrouiller comme un grand
Ajouté le 06/02/2014 à 19:04 :
Bon j'arrive déjà a afficher l'adresse de l'envoyeur (en fait c'est celle a laquelle est envoyée la réponse mais bon )
Pour afficher le nombre de messages non-lu, il fait se mettre en envoie de nombre dans Serial Monitor de Ziqumu et appuyer sur 0. Pour afficher l'envoyeur, il faut taper le numéro du message (par exemple 1)
Attention, -il faut que le serveur POP soit compatible mais en tout cas ça marche avec laposte.net
-il faut remplacer les "****" par vos identifiants (2 fois) et mettre votre adresse IP et votre adresse MAC
Le Rx de la casio se branche sur le port 5 et le Tx sur le port 6
Le code Arduino:
#include <Ethernet.h>
#include <Arduino.h>
#include <SoftwareSerial.h>
char sender[100];
short nombreDeMessages;
short ancienNombreDeMessages;
int nouveauxmessages=0;
int receptionOctet=0;
int numMessage=0;
// A remplacer par votre adresse IP et votre adresse MAC
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,177 };
// A remplacer si vous n'etes pas chez laposte.net
byte server[] = { 193,251,214,115 }; // pop.laposte.net
EthernetClient client;
SoftwareSerial serialCalc(5, 6); // RX, TX
void setup(){
Serial.begin(9600);
serialCalc.begin(9600);
Serial.println("Arduino allumee");
serialCalc.write("Arduino allumee");
serialCalc.println();
Serial.println("Demmarage du shield...");
Ethernet.begin(mac, ip);
nombreDeMessages = ancienNombreDeMessages = -1;
delay(2000);
}
void loop (){
Serial.println("Attente instruction...");
do{
receptionOctet = serialCalc.read();
}while(receptionOctet==-1);
receptionOctet-=48;
Serial.println(receptionOctet);
serialCalc.println();
// Compter les messages
if(receptionOctet==0){
nombreDeMessages = NombreDeMessages ();
nouveauxmessages=nombreDeMessages-ancienNombreDeMessages;
if (nombreDeMessages == -1){
Serial.println ("Erreur !");
serialCalc.write("Erreur !");
serialCalc.println();
}
else{
if (nombreDeMessages != ancienNombreDeMessages){
Serial.print ("Vous avez ");
Serial.print (nouveauxmessages);
Serial.print (" nouveaux messages");
Serial.println();
serialCalc.write(nouveauxmessages);
serialCalc.write(" nouveaux mails");
serialCalc.println();
}
else{
Serial.println ("Pas de nouveaux messages...");
serialCalc.write("Pas de nouveau mail");
serialCalc.println();
}
}
ancienNombreDeMessages = nombreDeMessages;
}
// Afficher l'envoyeur du message
if(receptionOctet>=1 && nombreDeMessages>=1){
Serial.println (nombreDeMessages);
if(nombreDeMessages>=receptionOctet) numMessage=receptionOctet;
GetSender1();
Serial.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXX");
for(int i=13;sender[i]!='\0';i++){
Serial.print(sender[i]);
serialCalc.write(sender[i]);
}
Serial.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXX");
}
}
short NombreDeMessages (){
short nombre;
Serial.println("connecting...");
if (client.connect(server, 110)){
Serial.println("connected");
serialCalc.write("connected");
serialCalc.println();
GetResponse1Line ();
SendMsg ("user ****");
GetResponse1Line ();
SendMsg ("pass ****");
GetResponse1Line ();
SendMsg ("list");
nombre = GetResponseMultiLine () - 2;
SendMsg ("quit");
GetResponse1Line ();
client.stop ();
}
else{
Serial.println("connection failed");
nombre = -1;
}
return nombre;
}
void GetResponse1Line (){
char c, prevC;
bool finLigne;
// initialisation des variables
prevC = c = 0;
Serial.print ("S: ");
do{
// on met de côté le dernier caratère reçu (0 lors du 1er passage dans la boucle)
prevC = c;
// tant qu'on n'a rien reçu, on attend
while (!client.available());
// lecture et affichage du caractère
c = client.read();
Serial.print (c);
// si ce caratère est LF (10) et que le précédent était CR (13), alors on a rencontré la fin de la ligne
finLigne = c == 10 && prevC == 13;
}
while (!finLigne); // si fin de ligne, on sort - sinon on continue
}
short GetResponseMultiLine (){
char c, prevC, prevPrevC;
bool finLigne;
bool finReponse;
short longueurLigne;
short nombreLignes;
// initialisation des variables
prevPrevC = prevC = c = 0;
finReponse = false;
nombreLignes = 0;
Serial.print ("S: ");
do{
longueurLigne = 0;
do{
// on met de côté le dernier et l'avant-dernier caratères reçus (0 lors du 1er passage dans la boucle)
prevPrevC = prevC;
prevC = c;
// tant qu'on n'a rien reçu, on attend
while (!client.available());
// lecture et affichage du caractère
c = client.read();
Serial.print (c);
// si ce caratère est LF (10) et que le précédent était CR (13), alors on a rencontré la fin de la ligne
finLigne = c == 10 && prevC == 13;
// on incrémente le compteur de longueur de ligne
longueurLigne++;
}while (!finLigne); // si fin de ligne, on sort - sinon on continue
// on incrémente le compteur de nombre de ligne
nombreLignes++;
// si la ligne comportait 3 caractères et que le 1er était '.' (et donc par conséquent les deux autres sont forcément 'CR' et 'LF'), c'est la dernière ligne de la réponse
finReponse = longueurLigne == 3 && prevPrevC == '.';
}while (!finReponse); // si fin de réponse, on sort - sinon on continue
return nombreLignes; // on renvoie le nombre de lignes reçues
}
void SendMsg (char *m){
client.println (m);
Serial.print ("A: ");
Serial.println (m);
}
void GetSender1(){
Serial.println("connecting...");
if (client.connect(server, 110)){
Serial.println("connected");
serialCalc.write("connected");
serialCalc.println();
GetResponse1Line ();
SendMsg ("user ****");
GetResponse1Line ();
SendMsg ("pass ****");
GetResponse1Line ();
GetSender();
SendMsg ("quit");
GetResponse1Line ();
client.stop ();
}
else{
Serial.println("connection failed");
serialCalc.write("Erreur !");
serialCalc.println();
}
}
void GetSender (){
char c, prevC, prevPrevC;
bool finLigne;
bool finReponse;
short longueurLigne;
short nombreLignes;
prevPrevC = prevC = c = 0;
finReponse = false;
nombreLignes = 0;
Serial.print ("A: ");
Serial.print("top ");
Serial.print(numMessage);
Serial.println(" 1");
client.print("top ");
client.print(numMessage);
client.println(" 1");
Serial.print ("S: ");
do{
longueurLigne = 0;
do{
prevPrevC = prevC;
prevC = c;
while (!client.available());
c = client.read();
Serial.print (c);
// enregistrement caractere du sender
if(nombreLignes==1) sender[longueurLigne]=c;
finLigne = c == 10 && prevC == 13;
longueurLigne++;
}while (!finLigne);
nombreLignes++;
finReponse = longueurLigne == 3 && prevPrevC == '.';
}while (!finReponse);
}
Citer : Posté le 06/02/2014 19:10 | #
Bien, ton truc m'a l'air sympa
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 30/04/2014 15:17 | #
si ça marche, je suis preneur.
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 30/04/2014 15:19 | #
Ca marche par contre il te faut une arduino et un shield ethernet
Citer : Posté le 30/04/2014 15:20 | #
arduino nano ? ça vas ?
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 30/04/2014 15:21 | #
Je suis épater
Je me suis pas lancer en C vu que j'ai pas trop le temps actuellement, mais pour mon information, ça fait combien de temps que tu programme en C ?
Citer : Posté le 30/04/2014 15:23 | #
Ben au moment ou j'ai mis ce topic je connaissait rien au C
C'est pour ca que j'ai eu du mal a comprendre Ziqumu
Arduino nano tu peux pas mettre de shield si ?
(Je parle de ce shield)
Citer : Posté le 30/04/2014 15:35 | #
Pas avec la nano non, elle est trop petite
Citer : Posté le 30/04/2014 15:46 | #
le modèle minimum,c est quoi ?
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 30/04/2014 15:47 | #
Uno je pense
Ajouté le 30/04/2014 à 15:47 :
Apres tu peux tenter de connecter un shield a la nano mais je pense que t'aura du mal
Citer : Posté le 30/04/2014 15:50 | #
mouais. pas faux.
bon. je commande un kit de base arduino pour mon anniv '
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 30/04/2014 15:51 | #
En plus avec le MMORPG de DS ca va claquer si on tous une carte avec shield 8)
Citer : Posté le 30/04/2014 15:55 | #
yep. les parties multijoueurs de malade
il faudra limite un site avec les seveurs libres
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 30/04/2014 16:12 | #
Mais je me posais une question : quelle est l'utilité de développer un M.M.O.R.P.G. sur calculatrice si il faut brancher cette dernière à l'ordinateur ? Autant développer le jeu directement sur le P.C....
Dois-je vous rappeler l'avantage des jeux sur calculatrice ? Vous vous rendrez au lycée avec une carte Arduino ?
Citer : Posté le 30/04/2014 16:14 | #
why not ?
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 30/04/2014 16:15 | #
Ben une Arduino UNO est bien plus discrète qu'un PC portable...
Bon après si y'a 5 câbles qui en partent, je dis pas
Mais c'est surtout pour pouvoir dire "on l'a fait ! 8) " (et accessoirement avant les TI-fans )
Citer : Posté le 30/04/2014 16:25 | #
et bim ! un point en plus pour les casio fan !
-attitude au moment de la reussite-
Je suis de l'autre coté de la manche maintenant. Yay.