ENIB 2020 : Trieur 2 choix : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
Ligne 3 : Ligne 3 :
  
 
==Que fait ce projet ? ==
 
==Que fait ce projet ? ==
 +
 +
Tri des déchets sur un convoyeur :
 +
 +
- À partir d'un bouton poussoir
 +
 +
- En théorie à distance à partir d'une application
  
 
==Liste des composants==
 
==Liste des composants==
  
* composant 1
+
* 2 moteurs
* composant 2
+
* 1 bouton poussoir
* ...
+
* Structure en bois
 +
* Fils électriques
 +
* Wemos D1 mini (sorte de mini-carte Arduino)
 +
* Sac poubelle pour le convoyeur
 +
 
 +
==Fabrication du convoyeur==
 +
[https://youtube.com/watch?v=UsF5Isjdgw4 Lien YouTube]
  
 
==Code==
 
==Code==
 +
Code Arduino :
 
<pre>
 
<pre>
ici je pose mon code documenté !
+
/*
 +
    This sketch demonstrates how to set up a simple HTTP-like server.
 +
    The server will set a GPIO pin depending on the request
 +
      http://server_ip/gpio/0 will set the GPIO2 low,
 +
      http://server_ip/gpio/1 will set the GPIO2 high
 +
    server_ip is the IP address of the ESP8266 module, will be
 +
    printed to Serial when the module is connected.
 +
*/
 +
 
 +
/*
 +
#define LED_BUILTIN 2
 +
 
 +
static const uint8_t D0  = 16;
 +
static const uint8_t D1  = 5;
 +
static const uint8_t D2  = 4;
 +
static const uint8_t D3  = 0;
 +
static const uint8_t D4  = 2;
 +
static const uint8_t D5  = 14;
 +
static const uint8_t D6  = 12;
 +
static const uint8_t D7  = 13;
 +
static const uint8_t D8  = 15;
 +
static const uint8_t RX  = 3;
 +
static const uint8_t TX  = 1;
 +
*/
 +
 
 +
// IP en partage de connexion avec un telephone : http://192.168.43.207
 +
 
 +
#include <ESP8266WiFi.h>
 +
 
 +
#ifndef STASSID
 +
#define STASSID "lpd29-bureau" // Remplacer par votre SSID de reseau Wi-Fi
 +
#define STAPSK  "123456789" // Remplacer par votre mot de passe de reseau Wi-Fi
 +
#endif
 +
 
 +
const char* ssid = STASSID;
 +
const char* password = STAPSK;
 +
 
 +
const int boutonPoussoir = 5; // Correspondance D1 (voir tableau ci-dessus)
 +
 
 +
// Create an instance of the server
 +
// specify the port to listen on as an argument
 +
WiFiServer server(80);
 +
 
 +
void setup() {
 +
  Serial.begin(115200);
 +
  pinMode(2,INPUT_PULLUP);
 +
 
 +
  // prepare LED
 +
  pinMode(LED_BUILTIN, OUTPUT);
 +
  digitalWrite(LED_BUILTIN, 0);
 +
 
 +
  // preparer bouton
 +
  pinMode(boutonPoussoir, OUTPUT);
 +
  digitalWrite(boutonPoussoir, 0);
 +
 
 +
  // Connect to WiFi network
 +
  Serial.println();
 +
  Serial.println();
 +
  Serial.print(F("Connecting to "));
 +
  Serial.println(ssid);
 +
 
 +
  WiFi.mode(WIFI_STA);
 +
  WiFi.begin(ssid, password);
 +
 
 +
  while (WiFi.status() != WL_CONNECTED) {
 +
    delay(500);
 +
    Serial.print(F("."));
 +
  }
 +
  Serial.println();
 +
  Serial.println(F("WiFi connected"));
 +
 
 +
  // Start the server
 +
  server.begin();
 +
  Serial.println(F("Server started"));
 +
 
 +
  // Print the IP address
 +
  Serial.println(WiFi.localIP());
 +
}
 +
 
 +
void loop() {
 +
  // Check if a client has connected
 +
  WiFiClient client = server.available();
 +
  if (!client) {
 +
    return;
 +
  }
 +
  Serial.println(F("new client"));
 +
 
 +
  client.setTimeout(5000); // default is 1000
 +
 
 +
  // Read the first line of the request
 +
  String req = client.readStringUntil('\r');
 +
  Serial.println(F("request: "));
 +
  Serial.println(req);
 +
 
 +
  // Match the request
 +
  int val;
 +
  if (req.indexOf(F("/gpio/0")) != -1) {
 +
    val = 0;
 +
  } else if (req.indexOf(F("/gpio/1")) != -1) {
 +
    val = 1;
 +
  } else {
 +
    Serial.println(F("invalid request"));
 +
    val = digitalRead(LED_BUILTIN);
 +
  }
 +
 
 +
  // Set LED according to the request
 +
  digitalWrite(LED_BUILTIN, val); // LED de verification, inversee, integree a la Wemos
 +
  digitalWrite(boutonPoussoir, val);
 +
 
 +
  // read/ignore the rest of the request
 +
  // do not client.flush(): it is for output only, see below
 +
  while (client.available()) {
 +
    // byte by byte is not very efficient
 +
    client.read();
 +
  }
 +
 
 +
  // Send the response to the client
 +
  // it is OK for multiple small client.print/write,
 +
  // because nagle algorithm will group them into one single packet
 +
  client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now "));
 +
  client.print((val) ? F("high") : F("low"));
 +
  client.print(F("<br><br>Click <a href='http://"));
 +
  client.print(WiFi.localIP());
 +
  client.print(F("/gpio/1'>here</a> to switch LED GPIO on, or <a href='http://"));
 +
  client.print(WiFi.localIP());
 +
  client.print(F("/gpio/0'>here</a> to switch LED GPIO off.</html>"));
 +
 
 +
  // The client will actually be *flushed* then disconnected
 +
  // when the function returns and 'client' object is destroyed (out-of-scope)
 +
  // flush = ensure written data are received by the other side
 +
  Serial.println(F("Disconnecting from client"));
 +
}
 +
 
 +
// [IP]/gpio/0 allume la LED
 +
// [IP]/gpio/1 eteint la LED
 
</pre>
 
</pre>
 +
App Inventor :
 +
 +
[[Fichier:Tri1.jpg|300px]]
 +
 +
[[Fichier:Tri2.jpg|300px]]
  
 
==Catégories==
 
==Catégories==
  
 
[[Catégorie:Enib2020]]
 
[[Catégorie:Enib2020]]

Version du 20 janvier 2020 à 16:06

photo de l'équipe

Photoenib2018.jpg

Que fait ce projet ?

Tri des déchets sur un convoyeur :

- À partir d'un bouton poussoir

- En théorie à distance à partir d'une application

Liste des composants

  • 2 moteurs
  • 1 bouton poussoir
  • Structure en bois
  • Fils électriques
  • Wemos D1 mini (sorte de mini-carte Arduino)
  • Sac poubelle pour le convoyeur

Fabrication du convoyeur

Lien YouTube

Code

Code Arduino :

/*
    This sketch demonstrates how to set up a simple HTTP-like server.
    The server will set a GPIO pin depending on the request
      http://server_ip/gpio/0 will set the GPIO2 low,
      http://server_ip/gpio/1 will set the GPIO2 high
    server_ip is the IP address of the ESP8266 module, will be
    printed to Serial when the module is connected.
*/

/*
#define LED_BUILTIN 2

static const uint8_t D0   = 16;
static const uint8_t D1   = 5;
static const uint8_t D2   = 4;
static const uint8_t D3   = 0;
static const uint8_t D4   = 2;
static const uint8_t D5   = 14;
static const uint8_t D6   = 12;
static const uint8_t D7   = 13;
static const uint8_t D8   = 15;
static const uint8_t RX   = 3;
static const uint8_t TX   = 1;
 */

// IP en partage de connexion avec un telephone : http://192.168.43.207

#include <ESP8266WiFi.h>

#ifndef STASSID
#define STASSID "lpd29-bureau" // Remplacer par votre SSID de reseau Wi-Fi
#define STAPSK  "123456789" // Remplacer par votre mot de passe de reseau Wi-Fi
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

const int boutonPoussoir = 5; // Correspondance D1 (voir tableau ci-dessus)

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  pinMode(2,INPUT_PULLUP);

  // prepare LED
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, 0);

  // preparer bouton
  pinMode(boutonPoussoir, OUTPUT);
  digitalWrite(boutonPoussoir, 0);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print(F("Connecting to "));
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
  }
  Serial.println();
  Serial.println(F("WiFi connected"));

  // Start the server
  server.begin();
  Serial.println(F("Server started"));

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  Serial.println(F("new client"));

  client.setTimeout(5000); // default is 1000

  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(F("request: "));
  Serial.println(req);

  // Match the request
  int val;
  if (req.indexOf(F("/gpio/0")) != -1) {
    val = 0;
  } else if (req.indexOf(F("/gpio/1")) != -1) {
    val = 1;
  } else {
    Serial.println(F("invalid request"));
    val = digitalRead(LED_BUILTIN);
  }

  // Set LED according to the request
  digitalWrite(LED_BUILTIN, val); // LED de verification, inversee, integree a la Wemos
  digitalWrite(boutonPoussoir, val);

  // read/ignore the rest of the request
  // do not client.flush(): it is for output only, see below
  while (client.available()) {
    // byte by byte is not very efficient
    client.read();
  }

  // Send the response to the client
  // it is OK for multiple small client.print/write,
  // because nagle algorithm will group them into one single packet
  client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now "));
  client.print((val) ? F("high") : F("low"));
  client.print(F("<br><br>Click <a href='http://"));
  client.print(WiFi.localIP());
  client.print(F("/gpio/1'>here</a> to switch LED GPIO on, or <a href='http://"));
  client.print(WiFi.localIP());
  client.print(F("/gpio/0'>here</a> to switch LED GPIO off.</html>"));

  // The client will actually be *flushed* then disconnected
  // when the function returns and 'client' object is destroyed (out-of-scope)
  // flush = ensure written data are received by the other side
  Serial.println(F("Disconnecting from client"));
}

// [IP]/gpio/0 allume la LED
// [IP]/gpio/1 eteint la LED

App Inventor :

300px

300px

Catégories