Автоматический смыв унитаза

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
C_3AXAPOB
Сообщения: 510
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 101 раз

Автоматический смыв унитаза

Сообщение C_3AXAPOB » Пн авг 08, 2016 2:26 am

Нашел на форуме об Arduino и немного "доработал".

Использовано:
ESP12 (NodeMCU v3) - 1 шт.
Сенсор HC-SR04 - 1 шт.
Сервопривод Futaba S3003 - 1 шт

Для вызова из Majordomo: http://espip/FLUSH=ON

Немного корявого кода
КодПоказать

Код: Выделить всё

#include <ESP8266WiFi.h>
#include <Servo.h>

//Настройки сети
const char* ssid = "ИМЯСЕТИ";
const char* password = "Пароль";
//Указываем пины для ног HC-SR04
const int trigPin = 5;
const int echoPin = 4;

Servo servo; // Создаем объект servo для управления сервоприводом

int sensor=0;
int PreparingToFlush=0;
int sample1;
int sample2;
int sample3;
int sample4;

WiFiServer server(80);

void setup() {
Serial.begin(115200);
servo.attach(14);    // Указываем что сервопривод висит на 2-м пине
WiFi.begin(ssid, password); // Подключаемся к сети WiFi

while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
server.begin(); // Запускаем сервер
}

void loop() {
// немного магии
long duration, cm;
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
cm = (duration/2) / 29.1;

Serial.print(cm);//Пишем в консоль результаты заклинания
Serial.println();

sensor=cm;
if (PreparingToFlush==0){  
if (sensor < 100){ //Если засекли цель
delay(1000);  // Ждём
sample1=cm; //Берем пробы для усреднения
Serial.println("Sensing");
delay(300);
sample2=cm;
delay(300);
sample3=cm;
delay(400);
sample4=cm;
sensor= (sample1 + sample2 + sample3 + sample4)/4; //и усредняемся
if (sensor < 100){ // Убеждаемся что цель на месте
PreparingToFlush=1;
digitalWrite(13, HIGH);
Serial.println(sensor);
}
}
}

if (PreparingToFlush==1){ //Если цель была засечена
if (sensor > 100){ // и если цель ушла
delay(1000);
sensor=cm;
if (sensor > 100){
Serial.println("I show you how deep the rabbit-hole goes...");
servo.write(175); //Смываем
digitalWrite(13, LOW);
delay(9000);
servo.write(3);
delay(1000);
PreparingToFlush=0;  //Сбрасываем тригер
}
}  
} 

// Удостоверямся что подключены к WiFi
WiFiClient client = server.available();
if (!client) {return;}

//Ждем когда клиент что-нибудь пришлет
while(!client.available()){delay(1);}

// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

// Совпадение

if (request.indexOf("/FLUSH=ON") != -1) {
Serial.println("I show you how deep the rabbit-hole goes...");
servo.write(175); //Смываем
digitalWrite(13, LOW);
delay(9000);
servo.write(3);
delay(1000);
}

// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");

client.print("FLUSH ");

client.println("<br><br>");
client.println("Click <a href=\"/FLUSH=ON\">here</a> to FLUSH <br>");
client.println("</html>");

delay(1);
}
Подключение сервопривода к оснастке в бачке (фото Big Oil):
Вложения
2.jpg
2.jpg (53.95 КБ) 7963 просмотра
1.jpg
1.jpg (45.7 КБ) 7963 просмотра
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Автоматический смыв унитаза

Сообщение serghei » Пн авг 08, 2016 8:45 am

Жестко, круто, браво! Только до кучи прикручиваем счетчик воды, вытяжку....в общем полный фарш. Все равно в комп пялимся...в процессе. Вот только не получается использовать прерывания ,если программить из-под IDE - надо использовать родной язык...
Ps А чего смеяться - у соседа кошка ходит в туалет - только смыть не может????
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Автоматический смыв унитаза

Сообщение Sas » Пн авг 08, 2016 11:53 am

обычная серва в таких условиях быстро загнется. а что будет если серва не вернется назад?
C_3AXAPOB
Сообщения: 510
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 101 раз

Re: Автоматический смыв унитаза

Сообщение C_3AXAPOB » Пн авг 08, 2016 5:44 pm

Посмотрим сколько продержится. Если серва назад не вернётся вода будет сливаться в унитаз через спецотверстие в оснастке.


Отправлено с моего iPhone используя Tapatalk
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
C_3AXAPOB
Сообщения: 510
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 101 раз

Re: Автоматический смыв унитаза

Сообщение C_3AXAPOB » Ср авг 10, 2016 2:30 am

Поправил ошибку
Исправлена ошибкаПоказать

Код: Выделить всё

#include <ESP8266WiFi.h>
#include <Servo.h>

//Настройки сети
const char* ssid = "............";
const char* password = "...........";
//Указываем пины для ног HC-SR04
const int trigPin = 12;
const int echoPin = 13;

Servo servo; // Создаем объект servo для управления сервоприводом

int sensor=0;
int PreparingToFlush=0;
int sample1;
int sample2;
int sample3;
int sample4;

WiFiServer server(80);

void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password); // Подключаемся к сети WiFi

while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
server.begin(); // Запускаем сервер
}

void loop() {
// немного магии
long duration, cm;
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
cm = (duration/2) / 29.1;

Serial.print(cm);//Пишем в консоль результаты заклинания
Serial.println();

sensor=cm;
if (PreparingToFlush==0){  
if (sensor < 100){ //Если засекли цель
delay(1000);  // Ждём
sample1=cm; //Берем пробы для усреднения
Serial.println("Sensing");
delay(300);
sample2=cm;
delay(300);
sample3=cm;
delay(400);
sample4=cm;
sensor= (sample1 + sample2 + sample3 + sample4)/4; //и усредняемся
if (sensor < 100){ // Убеждаемся что цель на месте
PreparingToFlush=1;
Serial.println(sensor);
}
}
}

if (PreparingToFlush==1){ //Если цель была засечена
if (sensor > 100){ // и если цель ушла
servo.attach(14);    // Указываем что сервопривод висит на 2-м пине
if (sensor > 100){
Serial.println("I show you how deep the rabbit-hole goes...");
servo.write(175); //Смываем
delay(9000);
servo.write(0);
delay(1000);
PreparingToFlush=0;  //Сбрасываем тригер
servo.detach();
}
}  
} 

// Удостоверямся что подключены к WiFi
WiFiClient client = server.available();
if (!client) {return;}

//Ждем когда клиент что-нибудь пришлет
while(!client.available()){delay(1);}

// Читаем запрос
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

// Возвращаем ответ
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("FLUSH");
client.println("<br><br>");
client.println("Click <a href=\"/FLUSH=ON\">here</a> to FLUSH <br>");
client.println("</html>");

if (request.indexOf("/FLUSH=ON") != -1) {
servo.attach(14);    // Указываем что сервопривод висит на 2-м пине
Serial.println("I show you how deep the rabbit-hole goes...");
servo.write(175); //Смываем
delay(9000);
servo.write(0);
delay(1000);
PreparingToFlush=0;  //Сбрасываем тригер
servo.detach();
}

delay(1);
}
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Автоматический смыв унитаза

Сообщение lanket » Пн авг 29, 2016 11:19 am

Sas писал(а):обычная серва в таких условиях быстро загнется. а что будет если серва не вернется назад?
А не лучше вместо сервопривода активатор от авто.
Во первых им привычнее в среде повышенной влажности.
Во вторых не зависит в открытом состоянии.

Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
eygen
Сообщения: 392
Зарегистрирован: Чт сен 25, 2014 5:37 pm
Откуда: Екатеринбург
Благодарил (а): 25 раз
Поблагодарили: 52 раза

Re: Автоматический смыв унитаза

Сообщение eygen » Пн авг 29, 2016 1:21 pm

lanket писал(а):
Sas писал(а):обычная серва в таких условиях быстро загнется. а что будет если серва не вернется назад?
А не лучше вместо сервопривода активатор от авто.
Во первых им привычнее в среде повышенной влажности.
Во вторых не зависит в открытом состоянии.

Отправлено с моего Redmi Note 3 через Tapatalk
Не подскажешь что за "зверь" этот активатор?
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Автоматический смыв унитаза

Сообщение serghei » Пн авг 29, 2016 1:27 pm

По запросу в гугле " Активатор для багажника " вылезет куча картинок.Те что с двигателем внутри ,требуют переполюсовки питания.Есть просто на базе электромагнита.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
eygen
Сообщения: 392
Зарегистрирован: Чт сен 25, 2014 5:37 pm
Откуда: Екатеринбург
Благодарил (а): 25 раз
Поблагодарили: 52 раза

Re: Автоматический смыв унитаза

Сообщение eygen » Пн авг 29, 2016 1:44 pm

serghei писал(а):По запросу в гугле " Активатор для багажника " вылезет куча картинок.Те что с двигателем внутри ,требуют переполюсовки питания.Есть просто на базе электромагнита.
Спасибо, теперь понял. Что то думается наверное электромагнитный в данном случае будет поинтереснее?
Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Автоматический смыв унитаза

Сообщение Sas » Пн авг 29, 2016 4:29 pm

Электромагнит или солиноид будет интересней
Но под него надо городить ключи и питать его уже не от дуины
Ответить