Morse Attack

De Les Fabriques du Ponant
Aller à : navigation, rechercher


Présentation

Ce projet permet de convertir du texte rentré depuis une page web (créée par le wemos) en morse.

L'utilisateur peut ensuite utiliser le bouton pour émettre ce qu'il voulait dire en morse.

Il peut aussi improviser quelques mélodies stridentes pour des heures de fun !

Liste du matériel

  • deux piles de 1,5V et un boitier pour les piles
  • ou une batterie portable
  • fils électriques
  • une LED
  • un buzzer
  • un interrupteur
  • une carte wemos
  • un ordinateur avec l'IDE d'arduino

Équipe

  • Sarah Bucquet
  • Stephane Cordier
  • Nathan De Saint Just
  • Corentin Gaillard

Equipe au travail morse attack.jpg

Déroulement du projet

test des composants et conception du circuit Cablage morse attack.jpg

création de schéma pour découper la boite en 3D

Erreur lors de la création de la miniature : Fichier avec des dimensions supérieures à 12,5 MP


assemblage de la boite Boite morse attack.jpg

assemblage sur la boite Assemblage boite morse attack.jpg


Pendant ce temps, sur les ordinateurs...

création d'un réseau wifi et d'une page web par la carte Wifi morse attack.png

Ressources

  • schéma de câblage

Schéma de cablage morse attack.jpg

  • Code à mettre sur la wemos :

"""Pour que l'IDE arduino repère la wemos, il faut installer des bibliothèques, voir ce site :[1]"""

// on appelle la bibliothèque qui gère le Wemos D1 mini
#include <ESP8266WiFi.h> 

// Gestion du Wifi
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <ESP8266mDNS.h>
#include <WiFiClient.h> 

//Code de la page web
const char index_html[] PROGMEM={"<!DOCTYPE html>\n<html>\n<body>\n\n<SCRIPT LANGUAGE=\"JAVASCRIPT\">\n<!--\n\n//Morse code converter- By Luke Watson (luke@lukewatson.f2s.com)\n//Script featured on JK (http://javascriptkit.com)\n//Visit http://javascriptkit.com for this script and more\n\nvar charCodes=new Array(36); charCodes[\"a\"]=\". _\";\ncharCodes[\"b\"]=\"_ . . .\";\ncharCodes[\"c\"]=\"_ . _ .\";\ncharCodes[\"d\"]=\"_ . .\";\ncharCodes[\"e\"]=\".\";\ncharCodes[\"f\"]=\". . _ .\";\ncharCodes[\"g\"]=\"_ _ .\";\ncharCodes[\"h\"]=\". . . .\";\ncharCodes[\"i\"]=\". .\";\ncharCodes[\"j\"]=\". _ _ _\";\ncharCodes[\"k\"]=\"_ . _\";\ncharCodes[\"l\"]=\". _ . .\";\ncharCodes[\"m\"]=\"_ _\";\ncharCodes[\"n\"]=\"_ .\";\ncharCodes[\"o\"]=\"_ _ _\";\ncharCodes[\"p\"]=\". _ _ .\";\ncharCodes[\"q\"]=\"_ _ . _\";\ncharCodes[\"r\"]=\". _ .\";\ncharCodes[\"s\"]=\". . .\";\ncharCodes[\"t\"]=\"_\";\ncharCodes[\"u\"]=\". . _\";\ncharCodes[\"v\"]=\". . . _\";\ncharCodes[\"w\"]=\". _ _\";\ncharCodes[\"x\"]=\"_ . . _\";\ncharCodes[\"y\"]=\"_ . _ _\";\ncharCodes[\"z\"]=\"_ _ . .\";\ncharCodes[\"1\"]=\". _ _ _ _\";\ncharCodes[\"2\"]=\". . _ _ _\";\ncharCodes[\"3\"]=\". . . _ _\";\ncharCodes[\"4\"]=\". . . . _\";\ncharCodes[\"5\"]=\". . . . .\";\ncharCodes[\"6\"]=\"_ . . . .\";\ncharCodes[\"7\"]=\"_ _ . . .\";\ncharCodes[\"8\"]=\"_ _ _ . .\";\ncharCodes[\"9\"]=\"_ _ _ _ .\";\ncharCodes[\"0\"]=\"_ _ _ _ _\";\nvar temp=''\nfunction transmit(){\n//A compléter\n}\nfunction encode() {\ndocument.morsecode.chars.value=document.morsecode.chars.value.toLowerCase();\ndocument.morsecode.codebox.value=\"\";\ntemp=''\nvar chars=document.morsecode.chars.value.split(\"\");\n\nfor (a=0; a<chars.length; a++) {\nif (chars[a]!=\" \") {\nif (window.charCodes[chars[a]]) {\ndocument.morsecode.codebox.value+=charCodes[chars[a]]+\"    \";\ntemp+=chars[a]+\"=\"+charCodes[chars[a]]+\"\\n\";\n}\nelse\ntemp+=chars[a]+\"=(None)\\n\";\n}\nif (chars[a]==\" \"){\ndocument.morsecode.codebox.value+=\"/\";\n}\n\n}\n\n}\n// -->\n</SCRIPT>\n\n<FORM NAME=\"morsecode\">\nType in a word or phrase: <INPUT TYPE=\"TEXT\" NAME=\"chars\" size=\"28\" value=\"Help\"> <INPUT TYPE=\"BUTTON\" VALUE=\"Encode\" onClick=\"encode()\"><BR><BR>\n<TEXTAREA NAME=\"codebox\" cols=\"50\" rows=\"11\" style=\"width:70%\" wrap=\"virtual\"> </TEXTAREA><br /><INPUT TYPE=\"BUTTON\" VALUE=\"Transmit\" onClick=\"transmit();\">\n</FORM>\n\n<p>This free script provided by<br />\n<a href=\"http://javascriptkit.com\">JavaScript\nKit</a></p>\n\n</body>\n</html>"};

//  Definition du WiFi 
const char *nomDuReseau = "Morse_Attack";     // Nom du réseau wifi du petit bot
const char *motDePasse = "123456789";    // Mot de passe du réseau wifi du petit bot
// ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon

//création du monServeur
ESP8266WebServer monServeur(80);               // Création de l'objet monServeur
//déclaration des Variables 
int sequence[42]={1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0,1,0,1,1,0,0,1,1,1,0,0,0};
//String code="";

void setup(){
  delay(1000);
  Serial.begin(9600); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché a l'ordinateur
  Serial.println();
  Serial.println();  
  configDuWifi();
  pinMode(D1,OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie
  digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.
}

void loop(){
    monServeur.handleClient();
    //testAllumage(sequence);
}
void testAllumage(int *sequence){
  for(int i = 0; i<42; i++){
    int state = sequence[i];
    digitalWrite(D1,state);
    delay(100);
  }
}

////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////
void configDuWifi(){  // Fonction de configuratio du Wifi
  WiFi.mode(WIFI_AP); // le wemos est en mode "Point d'Accès" (il déploie un réseau wifi)
  WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le "Point d'Accès".
  MDNS.begin(nomDuReseau);                 // gérer les DNS ce qui rendra votre petit bot accessible
  MDNS.addService("http", "tcp", 80);      // via http://nomDuReseau.local
  IPAddress monIP = WiFi.softAPIP();       // on récupère l'adresse IP du petit Bot
  Serial.print("Adresse IP de ce Point d'Accès : ");
  Serial.println(monIP);                   // on l'écrit sur le moniteur série
  monServeur.on("/", HTTP_GET, []() {
  monServeur.send_P(200, "text/html", index_html);
  });
  monServeur.begin();                          //Démarrage du monServeur
  Serial.println("Serveur HTTP démarré");
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.
}