ENIB 2020 : Trieur 2 choix
Sommaire
photo de l'équipe
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
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 :