Olduvaï
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

IA et nos projets electroniques

Aller en bas

IA et nos projets electroniques Empty IA et nos projets electroniques

Message par Encatimini Mer 03 Mai 2023, 21:49

J'ai testé la capacité d'une IA afin de me créer la programmation et domotisation de ma serre, avec un ESP12 (petit frere de l'arduino mais avec WIFI). et domoticz est comme son nom l'indique un logiciel de domotique.

Voici les questions posées:

ecris moi un programme pour un esp12, comportant la gestion d'une sonde dallas, un relais pour ventilateur qui s'active au dessus de 25 degrés et s'éteint quand il fait 23 degré,un moteur pas pas qui réagi comme les ventilateur en ouvrant et fermant une fenetre, une sonde hydrométrique qui allume une pompe quand le sol s'asseche , et l'éteint quand c'est bon, qui envoie les informations via wifi sur domoticz. et documente en commentaires.

Fais moi une table des connections employées 

explique moi le code

C'est technique mais je trouve cela assez fun pour se faire rapidement des scripts en lui expliquant ce que l'on veut.

A savoir (pour ne pas poluer l'autre post arduino) qu'il suffit de lui demander de convertir pour arduino pour qu'il le fasse dans la seconde.
Code:
#include <DallasTemperature.h> // Inclure la bibliothèque pour la sonde de température Dallas
#include <OneWire.h> // Inclure la bibliothèque pour le bus OneWire (utilisé par la sonde Dallas)
#include <Stepper.h> // Inclure la bibliothèque pour le moteur pas à pas
#include <Ethernet.h> // Inclure la bibliothèque pour la connexion Ethernet

// Paramètres Domoticz
const char* domoticz_server = "your_DOMOTICZ_SERVER_IP"; // Adresse IP du serveur Domoticz
const int domoticz_port = 8080; // Port du serveur Domoticz
const int idx_temperature = 1; // IDX de la sonde de température dans Domoticz
const int idx_humidity = 2; // IDX de la sonde d'humidité dans Domoticz

// Paramètres des broches
const int ONE_WIRE_BUS = 2; // Broche pour la sonde Dallas
const int RELAY_PIN = 3; // Broche pour le relais du ventilateur
const int STEPPER_PIN1 = 4; // Broche 1 pour le moteur pas à pas
const int STEPPER_PIN2 = 5; // Broche 2 pour le moteur pas à pas
const int STEPPER_PIN3 = 6; // Broche 3 pour le moteur pas à pas
const int STEPPER_PIN4 = 7; // Broche 4 pour le moteur pas à pas
const int HYDROMETER_PIN = A0; // Broche pour la sonde hydrométrique
const int PUMP_PIN = 8; // Broche pour la pompe

// Paramètres du ventilateur et de la fenêtre
const float FAN_ON_TEMPERATURE = 25.0; // Température à partir de laquelle le ventilateur s'active
const float FAN_OFF_TEMPERATURE = 23.0; // Température en dessous de laquelle le ventilateur s'éteint
const int WINDOW_OPEN_STEPS = 100; // Nombre de pas pour ouvrir la fenêtre
const int WINDOW_CLOSE_STEPS = -100; // Nombre de pas pour fermer la fenêtre (négatif car dans l'autre sens)

// Paramètres de la pompe
const int PUMP_ON_HUMIDITY = 30; // Humidité en dessous de laquelle la pompe s'active
const int PUMP_OFF_HUMIDITY = 50; // Humidité au-dessus de laquelle la pompe s'éteint

// Objets globaux
OneWire oneWire(ONE_WIRE_BUS); // Créer un objet OneWire pour gérer le bus OneWire
DallasTemperature sensors(&oneWire); // Créer un objet DallasTemperature pour gérer les capteurs de température Dallas
Stepper stepper(512, STEPPER_PIN1, STEPPER_PIN2, STEPPER_PIN3, STEPPER_PIN4); // Créer un objet Stepper pour gérer le moteur pas à pas
EthernetClient client; // Créer un objet EthernetClient pour envoyer des données à Domoticz

void setup() {
  Serial.begin(9600); // Initialiser la communication série (pour le débogage)
  pinMode(RELAY_PIN, OUTPUT); // Configurer la broche du relais en sortie
  pinMode(PUMP_PIN, OUTPUT); // Configurer la broche de la pompe en sortie
  digitalWrite(RELAY_PIN, LOW); // Éteindre le relais (état bas)
  digitalWrite(PUMP_PIN, LOW); // Éteindre la pompe (état bas)
  sensors.begin(); // Initialiser les capteurs de température Dallas
  stepper.setSpeed(10); // Définir la vitesse du moteur pas à pas

  // Connexion Ethernet
  byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Adresse MAC de l'Arduino
 
  if (Ethernet.begin(mac) == 0) { // Démarrer une connexion DHCP
    Serial.println("Failed to configure Ethernet using DHCP");
    for(;;);

Broche   Destination
D4   Sonde Dallas
D1   Relais ventilateur
D2   Moteur pas à pas (broche 1)
D3   Moteur pas à pas (broche 2)
D5   Moteur pas à pas (broche 3)
D6   Moteur pas à pas (broche 4)
A0   Sonde hydrométrique
D7   Pompe

Bien sûr! Ce code utilise plusieurs bibliothèques pour gérer les différents composants connectés à l’ESP12. La bibliothèque DallasTemperature est utilisée pour lire les données de la sonde de température Dallas. La bibliothèque Stepper est utilisée pour contrôler le moteur pas à pas. La bibliothèque ESP8266WiFi est utilisée pour se connecter au réseau WiFi et envoyer des données à Domoticz.

Dans la fonction setup, les broches pour le relais du ventilateur et la pompe sont configurées en sortie et initialisées à l’état bas (éteintes). Les capteurs de température Dallas sont initialisés et la vitesse du moteur pas à pas est définie. Enfin, une connexion WiFi est établie.

Dans la fonction loop, les données de température sont lues à partir de la sonde Dallas. Si la température dépasse un seuil prédéfini (FAN_ON_TEMPERATURE), le relais du ventilateur est activé et le moteur pas à pas ouvre la fenêtre d’un nombre prédéfini de pas (WINDOW_OPEN_STEPS). Si la température descend en dessous d’un autre seuil (FAN_OFF_TEMPERATURE), le relais du ventilateur est désactivé et le moteur pas à pas ferme la fenêtre d’un nombre prédéfini de pas (WINDOW_CLOSE_STEPS).

Les données d’humidité sont lues à partir de la sonde hydrométrique. Si l’humidité descend en dessous d’un seuil prédéfini (PUMP_ON_HUMIDITY), la pompe est activée. Si l’humidité dépasse un autre seuil (PUMP_OFF_HUMIDITY), la pompe est désactivée.

Enfin, les données de température et d’humidité sont envoyées à Domoticz en utilisant la fonction sendToDomoticz. Cette fonction utilise un client WiFi pour se connecter au serveur Domoticz et envoyer une requête HTTP GET avec les données.
Encatimini
Encatimini
Membre

Masculin Nombre de messages : 140
Date d'inscription : 20/01/2021

Canis Lupus et victor81 aiment ce message

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum