This shows you the differences between two versions of the page.
|
pm:prj2025:fstancu:cosmin.tonita [2025/05/27 19:20] cosmin.tonita [Bibliografie/Resurse] |
pm:prj2025:fstancu:cosmin.tonita [2025/05/28 10:38] (current) cosmin.tonita [Software Design] |
||
|---|---|---|---|
| Line 56: | Line 56: | ||
| **Cablaj (Breadboard)** | **Cablaj (Breadboard)** | ||
| - | {{:pm:prj2025:fstancu:breadboard_tonita_cosmin.jpeg?500 |}} | + | {{:pm:prj2025:fstancu:breadboard_tonita_cosmin.jpeg?400 |}} |
| + | |||
| + | |||
| + | |||
| + | **Cablaj (Protoboard)** | ||
| + | |||
| + | |||
| + | |||
| + | {{:pm:prj2025:fstancu:proto-tonita-cosmin.jpeg?400|}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 84: | Line 92: | ||
| lcd.setCursor(0, 1); | lcd.setCursor(0, 1); | ||
| lcd.print("System Ready "); | lcd.print("System Ready "); | ||
| + | </code> | ||
| + | |||
| + | - Operatii GPIO cu registri | ||
| + | |||
| + | <code> | ||
| + | #define FLOAT_SENSOR_MASK (1ULL << floatSensorPin) | ||
| + | #define PUMP_PIN_MASK (1ULL << PumpPin) | ||
| + | #define VALVE_PIN_MASK (1ULL << ValvePin) | ||
| + | |||
| + | gpio_config_t io_conf = {}; | ||
| + | io_conf.intr_type = GPIO_INTR_DISABLE; | ||
| + | io_conf.mode = GPIO_MODE_INPUT; | ||
| + | io_conf.pin_bit_mask = FLOAT_SENSOR_MASK; | ||
| + | io_conf.pull_up_en = GPIO_PULLUP_ENABLE; | ||
| + | gpio_config(&io_conf); | ||
| + | |||
| + | bool readFloatSensorRegister() { | ||
| + | uint32_t gpio_input = REG_READ(GPIO_IN_REG); | ||
| + | return (gpio_input & FLOAT_SENSOR_MASK) != 0; | ||
| + | } | ||
| + | |||
| + | void setPumpRegister(bool state) { | ||
| + | if (state) { | ||
| + | REG_WRITE(GPIO_OUT_W1TS_REG, PUMP_PIN_MASK); // Set bit | ||
| + | } else { | ||
| + | REG_WRITE(GPIO_OUT_W1TC_REG, PUMP_PIN_MASK); // Clear bit | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void setValveRegister(bool state) { | ||
| + | if (state) { | ||
| + | REG_WRITE(GPIO_OUT_W1TS_REG, VALVE_PIN_MASK); | ||
| + | } else { | ||
| + | REG_WRITE(GPIO_OUT_W1TC_REG, VALVE_PIN_MASK); | ||
| + | } | ||
| + | } | ||
| </code> | </code> | ||
| Line 99: | Line 143: | ||
| } | } | ||
| - | digitalWrite(valveRelayPin, HIGH); // închide electrovalvă | + | setPumpRegister(true); // porneste pompa |
| - | digitalWrite(pumpRelayPin, HIGH); // pornește pompă | + | setValveRegister(false); // inchide electrovalva |
| - | digitalWrite(valveRelayPin, LOW); // deschide electrovalvă | + | setPumpRegister(false); // opreste pompa |
| - | digitalWrite(pumpRelayPin, LOW); // oprește pompă | + | setValveRegister(true); // deschide electrovalva |
| </code> | </code> | ||
| Line 110: | Line 154: | ||
| pinMode(capSensorPin, INPUT); | pinMode(capSensorPin, INPUT); | ||
| - | int floatState = digitalRead(floatSensorPin); | + | bool floatState = readFloatSensorRegister(); |
| - | int capacitiveValue = analogRead(capSensorPin); | + | uint32_t capacitiveValue = readCapacitiveSensorRegister(); |
| bool flood = (floatState == HIGH) || (capacitiveValue > 400); | bool flood = (floatState == HIGH) || (capacitiveValue > 400); | ||
| Line 166: | Line 210: | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | {{:pm:prj2025:fstancu:final-tonita-cosmin.jpeg?400|}} |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| + | Demo sistem final: | ||
| + | [[https://youtu.be/E7gNnOIGIbs]] | ||