Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Modèle Architectural d'Abus Intelligent avec Pare-Soleil Automatique

Composants et Fournitures

Composant Description Quantité
Arduino Nano R3 Petit, facile à cacher dans le modèle architectural 1
Servo MG995 Servo robuste pour le pare-soleil lourd 1
Photorésistance Une face Est, une face Ouest 2
Capteur de Pluie Détection pluie 1
LED Blanche Haute Luminosité Éclairage abri bus / réverbère 6
Résistance 220 Ω Pour LEDs 3
Plaque d'essai (Breadboard) Genérique 1
Fils de liaison Mâle/Mâle Câblage 27
Borniers à vis Connexions sécurisées 2
Connecteur Pile 9V 2
Pile 9V (générique) 1
Support 4 piles AA Alimentation externe pour servo MG995 1

À Propos de ce Projet

C'est une mise à jour du projet précédent (V 1.0).

Les principaux changements par rapport à la V1.0 :

La version 1.0 est disponible ici : Model Version 1.0

LES VIDÉOS :

Code

Le Code (C/C++)

#include <VarSpeedServo.h>
VarSpeedServo servo;
int easternLight = 0;
int westernLight = 0;
int rainSensed = 0;
int sunshadePosition = 0;
int rainThreshold = 512;
int sunshadeExpanded = 120;
int sunshadeContracted = 60;
int ambientLighting = 0;
int turnOnLightsOn = 150;
int ledIntensity = 0;
int ledPower = 0;
int servoSpeed = 20;
bool debugging = false; // Mettre à TRUE pour activer le debug sur Console Série

void setup() {
  pinMode(A4, OUTPUT); // Éclairage intérieur abri bus
  pinMode(A5, OUTPUT); // Réverbère
  pinMode(A1, INPUT);  // Lumière Ouest
  pinMode(A2, INPUT);  // Lumière Est
  pinMode(A3, INPUT);  // Capteur pluie analogique
  pinMode(2, INPUT);   // Capteur pluie numérique
  servo.attach(A0);    // Servo
  servo.write(sunshadeContracted, servoSpeed, true);
  if (debugging){
    Serial.begin(9600);
    Serial.println("*** DEBUGGING STARTED ***");
    Serial.println("-------------------------");
  }
}

void oya_mydebug(String text, int value = NULL) {
  // 'oya_' ajouté pour éviter un crash avec toute fonction de debug
  // d'une bibliothèque externe. Oya = abréviation de mon entreprise OfficeYA
  if (debugging){
    Serial.print(text);
    if (value){
      Serial.print(" = ");
      Serial.println(value);
    } else {
      Serial.println(" ");
    }
  }
}

void expand_collapse(int easternLight, int westernLight) {
  if (easternLight <= westernLight) {
    // C'est le lever du soleil
    oya_mydebug("It's sunrise");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  }
  if (easternLight > westernLight) {
    // Le soleil descend
    oya_mydebug("Sun is going down");
    if (sunshadePosition != sunshadeContracted) {
      servo.write(sunshadeContracted, servoSpeed, true);
      oya_mydebug("Sunshade contracted");
    }
  }
}

void loop() {
  // Lecture capteurs
  easternLight = analogRead(A2);
  westernLight = analogRead(A1);
  rainSensed = analogRead(A3);
  sunshadePosition = servo.read();
  ambientLighting = ((easternLight + westernLight) / 2); // Moyenne luminosité est/ouest
  
  oya_mydebug("easternLight", easternLight);
  oya_mydebug("westernLight", westernLight);
  oya_mydebug("rainSensed", rainSensed);
  oya_mydebug("sunshadePosition", sunshadePosition);
  oya_mydebug("ambientLighting", ambientLighting);

  // Est-ce qu'il pleut ?
  if (rainSensed < rainThreshold) {
    // Il pleut
    oya_mydebug("It's raining...");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  } else {
    // Il ne pleut pas
    oya_mydebug("It is not raining...");
    if (ambientLighting <= turnOnLightsOn) {
      // Il fait sombre, allumer les lumières
      oya_mydebug("It's getting dark, turning on the lights");
      ledPower = ((turnOnLightsOn - ambientLighting) * 4);
      oya_mydebug("ledPower", ledPower);
      analogWrite(A5, ledPower);
      analogWrite(A4, ledPower);
      expand_collapse(easternLight, westernLight);
    } else {
      // Beaucoup de soleil
      oya_mydebug("A lot of sunshine, turn off lights");
      analogWrite(A5, 0);
      analogWrite(A4, 0);
      expand_collapse(easternLight, westernLight);
    }
  }
  
  if (debugging){
    Serial.println("********************");
    Serial.println(" ");
    delay(5000);
  } else {
    delay(100);
  }
}

Schémas

Modèle Architectural d Abus Intelligent avec Pare-Soleil Automatique

Processus de fabrication

  1. Trains miniatures Lionel : histoire, fabrication et avenir
  2. Robot de tri de recyclage propulsé par Google Coral Edge TPU
  3. Maximiser les revenus récurrents avec les consommables intelligents : Un game-changer pour les constructeurs de machines
  4. Contrôle Automatique de Train Miniature Arduino – Simple, Fiable et Personnalisable
  5. Tour linéaire SPRINT 20 : Tournage automatisé rapide pour pièces de haute précision
  6. Principes des presses servo : puissance, précision et efficacité expliquées
  7. Servomoteurs expliqués : fonctionnement et importance
  8. Maximiser la précision : associer réducteurs et servomoteurs
  9. ECS G86 Cycle alésage avec fonction arrêt broche