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

Moniteur de distance ultrasonique et température Arduino avec alarme LCD

Composants et fournitures

Arduino UNO × 1
LCD standard Adafruit 16×2 blanc sur bleu × 1
Capteur ultrasonique HC-SR04 (générique) × 1
Thermomètre numérique DS18B20 1-Wire (Maxim Integrated) × 1
Résistance 4,75 kΩ × 1
Bouton poussoir 12 mm (SparkFun) × 1
Potentiomètre mono-tour 10 kΩ × 1
Buzzer × 1
LEDs (1 verte, 1 jaune, 1 rouge) × 3
Résistances 221 Ω × 3
Plaque d'essai (breadboard) × 1
Fils de connexion (génériques) × 1

Applications et services en ligne

À propos de ce projet

Moniteur de distance ultrasonique et température Arduino avec alarme LCD

Ce projet me donne les informations dont j'ai besoin sur le niveau d'eau dans un réservoir. Quand le niveau est bas, la LED verte est ALLUMÉE. Quand le niveau est moyen, la LED jaune est ALLUMÉE. Quand le niveau est HAUT, la LED rouge clignote en même temps que le son du buzzer. La distance du capteur au niveau de l'eau est mesurée par le capteur ultrasonique et est affichée sur le LCD avec la température dans ce réservoir.

Ce projet fait partie d'un projet plus grand. La deuxième partie sera 6 LEDs chenillard montées en cercle pour indiquer que la pompe pompe. Voir : https://create.arduino.cc/projecthub/MichDragstar/arduino-uno-or-trinket-pro-5v-6-chasing-leds-with-pot-and-pb-23a1d7 La troisième partie démarrera la pompe quand le niveau est haut et l'arrêtera quand le niveau est bas (en construction). Pour le vrai projet, j'utilise un capteur ultrasonique étanche, cela ne changera pas le câblage ou le code. Je ne sais pas ce qui se passe au niveau des lectures quand le capteur est mouillé (humidité), donc ce projet sert seulement à me donner l'information, le 3ème projet est utilisé pour les activités de la pompe et sera fait par contacts magnétiques.

Code

Fichier sans titre (C/C++)

#include <LiquidCrystal.h> // Charger la bibliothèque Liquid Crystal
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 6 // Fil de données branché sur la broche 6 de l'Arduino
OneWire oneWire(ONE_WIRE_BUS); // Configurer une instance oneWire pour communiquer avec n'importe quel périphérique OneWire
// (pas seulement les CI de température Maxim/Dallas)
DallasTemperature sensors(&oneWire); // Passer notre référence oneWire à Dallas Temperature

LiquidCrystal LCD(12, 11, 5, 4, 3, 2); // Créer un objet Liquid Crystal appelé LCD

int trigPin = 9; // Broche Trigger du capteur connectée à la broche 9 de l'Arduino
int echoPin = 7; // Broche Echo du capteur connectée à la broche 7 de l'Arduino
int myCounter = 0; // Déclarer la variable myCounter et l'initialiser à 0
float pingTime; // Temps pour l'aller-retour du ping du capteur à la cible
float targetDistance; // Distance à la cible en centimètres
float speedOfSound = 776.5; // Vitesse du son en miles par heure

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  LCD.begin(16, 2); // Dire à l'Arduino de démarrer votre LCD 16x2
  LCD.setCursor(0, 0); // Placer le curseur LCD en haut à gauche, colonne 0, ligne 0
  LCD.print("Distance:"); // Afficher le message sur la première ligne
  sensors.begin(); // Démarrer la bibliothèque
  pinMode(8, OUTPUT); // Broches 8, 10, 13 en sortie
  pinMode(10, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(trigPin, LOW); // Mettre la broche trigger à LOW
  delayMicroseconds(2000); // Laisser le signal se stabiliser
  digitalWrite(trigPin, HIGH); // Mettre trigPin à HIGH
  delayMicroseconds(15); // Délai en état HIGH
  digitalWrite(trigPin, LOW); // Le ping a maintenant été envoyé
  delayMicroseconds(10); // Délai en état HIGH
  pingTime = pulseIn(echoPin, HIGH); // pingTime en microsecondes
  pingTime = pingTime / 1000000; // Convertir pingTime en secondes en divisant par 1000000 (microsecondes dans une seconde)
  pingTime = pingTime / 3600; // Convertir pingTime en heures en divisant par 3600 (secondes dans une heure)
  targetDistance = speedOfSound * pingTime; // Ceci sera en miles, puisque nous avons déclaré la vitesse du son en miles par heure ; bien que nous allions le reconvertir en centimètres
  targetDistance = targetDistance / 2; // Rappel : le ping voyage vers la cible et revient de la cible, donc il faut diviser par 2 pour la distance réelle à la cible
  targetDistance = targetDistance * 160934.4; // Convertir miles en centimètres en multipliant par 160934,4
  
  sensors.requestTemperatures(); // Envoyer la commande pour obtenir les relevés de température
  
  LCD.setCursor(10, 0); // Placer le curseur à la dixième colonne de la première ligne
  LCD.print(" "); // Afficher des espaces pour effacer la ligne
  LCD.setCursor(10, 0); // Remettre le curseur à la dixième colonne de la première ligne
  LCD.print((int)(targetDistance + 0.5)); // Afficher la distance mesurée
  LCD.print("cm "); // Afficher les unités
  
  LCD.setCursor(0, 1); // Placer le curseur à la première colonne de la deuxième ligne
  LCD.print(" "); // Afficher des espaces pour effacer la ligne
  LCD.setCursor(0, 1); // Remettre le curseur à la première colonne de la deuxième ligne
  
  if (targetDistance > 40) {
    LCD.print("LEV LOW ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  } else if (targetDistance < 40 && targetDistance > 20) {
    LCD.print("LEV MED ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  } else if (targetDistance < 20) {
    LCD.print("LEV HIGH ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  }
  
  delay(2000);
  
  if (targetDistance > 40) {
    digitalWrite(13, HIGH); // LED verte ON
  } else {
    digitalWrite(13, LOW); // LED verte OFF
  }
  
  if (targetDistance < 40 && targetDistance > 20) {
    digitalWrite(8, HIGH); // LED jaune ON
  } else {
    digitalWrite(8, LOW); // LED jaune OFF
  }
  
  if (targetDistance < 20) {
    digitalWrite(10, HIGH); // LED rouge ON
    delay(2000);
    digitalWrite(10, LOW); // LED rouge OFF
  } else {
    digitalWrite(10, LOW); // LED rouge OFF
  }
}

Schématiques

lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz

Processus de fabrication

  1. Système de contrôle d'accès intégré QR, RFID et vérification de température
  2. Connecter plusieurs capteurs DS18B20 1-Wire à un Raspberry Pi pour une surveillance température précise
  3. Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
  4. Construire un système de surveillance température et lumière multi-capteurs avec Raspberry Pi et DS18B20
  5. Construire un système aéroponique automatisé avec Raspberry Pi et capteur d'humidité
  6. Construire un moniteur de température domestique avec Raspberry Pi, MCP9808, InfluxDB et Grafana
  7. Intégration d'un capteur thermocouple avec l'Arduino Portenta H7 via le MAX6675
  8. Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO
  9. Capteur Lab-on-Chip NASA Goddard : surveillance temps réel du débit et de la température