Перейти к содержанию

Arduino IDE и всякие ништяки.


Рекомендуемые сообщения

Всем доброго здравия!

Наверняка среди нас есть те, кому так или иначе приходилось что-то автоматизировать. В моем случае, это аквариум. Маленький аквариум на 85 литров с тремя жителями - креветками Амано.

Собственно у меня даже не  аквариум, а "травник". То есть банка с водными растениями, типа живой картины рядом с монитором.

 

Собственно все началось с того, что теще на ее аквариум подарил реле времени, которое включает/выключает свет в заданное время. А потом... ну, у меня в детстве всегда был аквас и когла с Аленкой познакомились тоже был, но потек и пришлось от него избавиться на долго.. лет на 10 наверно. Ане так давно(условно) вновь появилось желание сделать живой уголок и так появилась баночка с минимумом удобств.

 

Потом, я стал задумываться, а как бы сделать так, чтоб он сам себя обслуживал? - начал изучать интернеты и добрался до сабжа (Arduino IDE). Это программное обеспечение для настройки/программирования микроконтроллеров Arduino (Nano, Uno, Mega и т.д.).

 

И тут для меня открылся новый мир. Мой аквас ожил, он теперь сам умеет поддерживать заданную температуру и освещенность, делать рассвет, полдень и закат. Мне остается только подкармливать креветок, что в принципе лишнее в таком аквариуме, т.к. они любят водоросли и с удовольствием поедают нитчатые водоросли. которые появляются в любом аквариуме с интенсивным освещением.

 

Сначала, у меня был контроллер Arduino Uno за копейки купленный на АЛИ, с блоком релюшек, которые в заданное время включались контроллером и управляли двумя светодиодными прожекторами по 20 Ватт, нагревательным элементов от "теплых полов" и компьютерным 120мм вентилятором для охлаждения воды, потом проект начал разрастаться. Появился модуль ethernet, для подключения к сети и всякие датчики.

 

Теперь с телефона и с компьютера могу задавать разные параметры климата в акавсе. Но все же, речь больше о программном обеспечении, которое мне помогает все это реализовать.

Это Arduino IDE (в начале, позже Visual Studio Code с модулем PlatformIO) и локальный сервер Blynk. Вообще, Blynk это платный сервис российских разработчиков, но в локальном исполнении совершенно бесплатный.

 

Вторая стадия моего управлятора была основана на веб-сервере, который был реализован на модуле Ethernet Shield W5100, который позволял включать и выключать свет и доп каналы.

Это выглядит и сейчас вот так... то есть этот вариант управления я тоже оставил.

2019-08-30_19-42-46.png

 

Потом родился третий вариант управлятора, с использованием Blynk и теперь это выглядит так (на смартфоне)

Screenshot_2019-08-30-19-52-11.pngScreenshot_2019-08-30-19-52-19.pngScreenshot_2019-08-30-19-52-25.pngScreenshot_2019-08-30-19-52-32.png

 

Креветку рисовала дочка, специально для этого проекта.

 

Я не уверен, что мне будет с кем это здесь обсудить, ведь это не политика и в целом, довольно узконаправленная тема. А вдруг???

  • Хорошо! (+1) 1
Ссылка на комментарий
Поделиться на другие сайты


Очень очень интересно.. всё подбираюсь к этой теме но знаний не хватает.... есть идеи... автоматической теплицы, автоматика ректификационной колонны .. что то вот упирается  в то что не осилю программирование...  Хотя надо заниматься...

  • Хорошо! (+1) 1
Ссылка на комментарий
Поделиться на другие сайты

Награды

 

 


но знаний не хватает.
Вместе разберемся! Главное начать. =)
  • Хорошо! (+1) 1
Ссылка на комментарий
Поделиться на другие сайты


Тема умерла не успев родиться. Ок.

Ссылка на комментарий
Поделиться на другие сайты


Тема увлекательная и интересная в своих особенностях и результатах. Но - исключительно для любителя. вернее даже - для увлекающихся этим делом.

Оборудование и программное обеспечение как раз рассчитано на массового пользователя, коих всегда можно встретить в магазинах типа "Чип и Дип", где они приобретают оборудование и обсуждают интересующие их вопросы.

У меня тоже были попытки заинтересоваться этим, но дальше этой заинтересованности дело не пошло.

А вообще у этого продукта есть два здоровенных старших "брата-конкурента" в этой области - в области диспетчеризации, где программируются и автоматизируются практически любые процессы из широченного спектра, в основном, производственной деятельности.

Эти два "непримиримых друга" - SIEMENS и HONEYWELL. Эти два крупняка буквально разделили мир на две части по внедрению своих продуктов.

Конечно, их контроллеры диспетчеризации, да и само ПО - это не на любителя. Слишком дроги они для людей, увлекающихся автоматизацией своих "хозяйств и интересов".

И в этом случае как раз довольно простые системы, типа Arduino - это то, что нужно любителям и увлекающимся.

Что-то, в связи с этими воспоминаниями, сразу вспоминаются языки программирования нашей юности типа FORTRAN :).

А вообще - тема крайне интересная и увлекательная.

Кстати - несколько лет назад у меня тоже был аквариум и тоже с креветками Амано и ещё какой-то породы. Если Амано "пылесосят" дно, растения и всякие предметы, находящиеся в аквариуме, то вторые своими передними фильтрами, похожими на маленькие вытянутые ручки, в которых находятся по здоровенному вееру - вот этими "веерами" фильтруют аквариумную воду в поисках пищи. Они обычно пристраивались возле выходной трубки фильтрующей установки...

Интересно так было за ними наблюдать...

  • Хорошо! (+1) 1
Ссылка на комментарий
Поделиться на другие сайты

Награды

А что еще можно автоматизировать с помощью данных девайсов?

Ссылка на комментарий
Поделиться на другие сайты


А что еще можно автоматизировать с помощью данных девайсов?

Да многое чего... гроубокс в германии строили... хотели полную автоматику сделать... капельный полив... гидропонику... к нему есть много различных датчиков..  вопрос программирования... роботов на нём много разных.... умный дом..  если бог даст в следующем году хочу парник поставить... ну и в планах полная автоматика... чтобы пару-тройку недель можно было бы не приезжать...

  • Хорошо! (+1) 1
Ссылка на комментарий
Поделиться на другие сайты

Награды

А что еще можно автоматизировать с помощью данных девайсов?

Ну, еще на Ардуино и Блинке сделал для конторы, в которой работаю, некую диспетчеризацию детектора повреждений Термолайн.

Суть такая: Термолайн предлагает несколько типов детекторов и два из них с возможностью диспетчеризации. Но проблема в том, что оба устройства соединяются с диспетчером по GSM каналу, то есть надо помимо самого детектора еще 2 GSM модема (под 30 денег пара) и зависимость от третьей стороны(GSM оператор) ну и конечно расходы на связь... ежемесячные, при том, что детектор должен находиться в соседнем здании.

 

Руководство поставило задачу разобраться как и что и найти лучший вариант... ну и нашел.. один из вариантов детекторов* имеет "сухой контакт" по дефектам, то есть, детектор выдает 3 состояния для двух труб. Норма, Намокание, Обрыв.

6 проводов и 1 общий. Я взял связку Arduino Uno + Ehernet W5100 и сделал вариант "по витой паре" вместо GSM, а помимо этого еще и собственную диспетчеризацию, которая работает как на телефонах заинтересованных лиц (в режиме "Пользователь"), так и на компьютере диспетчера.. ну и е-маил рассылка по каждому типу "сработки" и по сбросам аварий. Устройство уже проверил, логику "вылизал".. но детектор дефектов еще сам по себе не установлен.

 

*http://www.xn----7sbnboqksvbl.xn--p1ai/catalog/detektory-povrezhdeniy/dps-2am-sk/

  • Хорошо! (+1) 3
Ссылка на комментарий
Поделиться на другие сайты


Интересно, есть ли возможность подключения всевозможных ардуин/есп к КАН шине автомобиля?

Думаю, что можно было бы сделать не плохой авто-компьютер...

Ссылка на комментарий
Поделиться на другие сайты


Интересно, есть ли возможность подключения всевозможных ардуин/есп к КАН шине автомобиля?

Думаю, что можно было бы сделать не плохой авто-компьютер...

ну есть же в инете описания экспериментов.... но для меня это сложно

Ссылка на комментарий
Поделиться на другие сайты

Награды

Я телевизор купил и при помощи телефона на нем можно в интернет заходить , я в легком растерености , а вы криветки -парники post-29363-0-55503500-1567855061_thumb.jpgв 80 за рассказ про такой телевизор получил бы кликуху пи( @ )здабол . Так то Тема интересная но надо время .

Ссылка на комментарий
Поделиться на другие сайты


  • 5 месяцев спустя...

Ну что... пришли части Ардуино для ректификационной колонны... Посмотрим на сколько будет сложно освоить... Но мозг должен работать... 

первые задачи...прошивка платы... питания... WI-FI.. подключение экрана... будем работать...

post-337-0-33419700-1583061312_thumb.jpg

  • Хорошо! (+1) 1
Ссылка на комментарий
Поделиться на другие сайты

Награды

  • 2 года спустя...

Было создал отдельную тему, но потом ее грохнул.

От слов к делу, так сказать..

Делаю для машины анализатор качества воздуха на датчике SPG30 и Arduino Nano

Прототип уже в работе

icq_photo_03_11_2022_09_45_48.930.jpg

 

Стало быть переходим к коду.. делаю для себя, по этому не комментирую строки кода.

#include <Wire.h>
#include <Adafruit_SGP30.h>
Adafruit_SGP30 sgp;

int ledPin = 3;
unsigned long timing;

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  analogWrite(ledPin, 3);;
  Serial.println(F("Start bridge detect modul..."));
  
  if (! sgp.begin()){
    Serial.println("Sensor SGP30 not found :(");
    while (1);
  }
}

void loop() {
  if (! sgp.IAQmeasure()) {
    Serial.println("Measurement failed");
    return;
  } else {
  if (millis() - timing > 1000){
    timing = millis(); 
  
    Serial.print("TVOC - "); Serial.print(sgp.TVOC);
    Serial.print(" | eCO2 - "); Serial.println(sgp.eCO2);
    
    if (sgp.TVOC <= 65 || sgp.eCO2 <= 600){
      analogWrite(ledPin, 3);
     } else if (sgp.TVOC > 65 & sgp.TVOC < 220 || sgp.eCO2 > 600 & sgp.eCO2 < 700){
      analogWrite(ledPin, 50);
      delay(50);
      analogWrite(ledPin, 3);
      delay(50);
      analogWrite(ledPin, 50);
      delay(50);
      analogWrite(ledPin, 3);
      delay(50);    
     } else if (sgp.TVOC > 220 & sgp.TVOC < 660 || sgp.eCO2 > 700 & sgp.eCO2 < 1000){
      analogWrite(ledPin, 255);
      delay(50);
      analogWrite(ledPin, 3);
      delay(50);
      analogWrite(ledPin, 255);
      delay(50);
      analogWrite(ledPin, 3);
      delay(50);    
      analogWrite(ledPin, 255);
      delay(50);
      analogWrite(ledPin, 3);
      delay(50);
    } else {
      analogWrite(ledPin, 3);
    }
   }
 } 
}

 

На просторах этих ваших интернетов гуляют таблицы о качестве воздуха. Датчик измеряет TVOC и eCO2.

Воспользовавшись этими таблицами, настраиваю индикацию "прибора".

1. - Светодиод светится очень тускло, что как бы намекает на то, что устройство работает и нет выхода за нормальные параметры = "ОТЛИЧНО!".

2. - Светодиод моргает 2 раза, что означает, что порог "ОТЛИЧНО!" превышен.

3. - Светодиод моргает ярче и уже 3 раза, это говорит о том, что пора проветрить салон.

 

TVOC_levels2.jpgтаблиц_углекислого_газа.png

 

Сегодня утром затестил конструкцию в машине. Надо сказать, что был удивлен немного. После 5 мин прогрева, замигал светодиод, печка при этом была включена и забор воздуха был с улицы. По пути на работу окна не открывал, светодиод продолжал мигать. НО! Значения для мигания были TVOC > 65 и eCO2 > 600, на работе допилил разделение отображения, в зависимости от загрязнения воздуха.

 

Ссылка на комментарий
Поделиться на другие сайты


Для меня сложновато....всё пытаюсь разобраться в программировании... чтоб закончить свою ракт.колонну.. Не хватает знаний... и мозг не так гибок для получения новых сложных знаний.. но разберёмся..

  • Хорошо! (+1) 2
Ссылка на комментарий
Поделиться на другие сайты

Награды

11.03.2022 в 10:06, Игорь Турикин сказал:

Воспользовавшись этими таблицами, настраиваю индикацию "прибора".

Немного изменил конструкцию. Прицепил RGB светодиод.

Теперь индикация выглядит следущим образом.

1. Все в порядке - тусклое зеленое свечение

2. Желательно проветрить - два коротких синих блика в течении секунды, в половину яркости светодиода
3. Срочно проветрить - три коротких красных блика в течении секунды, в полную яркость светодиода

 

Ну и измененный код

#include <Wire.h>
#include <Adafruit_SGP30.h>
Adafruit_SGP30 sgp;

int ledPinR = 3;
int ledPinG = 5;
int ledPinB = 6;
unsigned long timing;

void setup() {
  Serial.begin(115200);
  pinMode(ledPinR, OUTPUT);
  pinMode(ledPinG, OUTPUT);
  pinMode(ledPinB, OUTPUT);
  
  analogWrite(ledPinG, 3);;
  Serial.println(F("Start bridge detect modul..."));
  
  if (! sgp.begin()){
    Serial.println("Sensor SGP30 not found :(");
    while (1);
  }
}

void loop() {
  if (! sgp.IAQmeasure()) {
    Serial.println("Measurement failed");
    return;
  } else {
  if (millis() - timing > 1000){
    timing = millis(); 
  
    Serial.print("TVOC - "); Serial.print(sgp.TVOC);
    Serial.print(" | eCO2 - "); Serial.println(sgp.eCO2);
    
    if (sgp.TVOC <= 65 || sgp.eCO2 <= 600){
      analogWrite(ledPinG, 3);
     } else if (sgp.TVOC > 65 & sgp.TVOC < 220 || sgp.eCO2 > 600 & sgp.eCO2 < 700){
      analogWrite(ledPinG, 0);
      analogWrite(ledPinB, 50);
      delay(50);
      analogWrite(ledPinB, 0);
      delay(50);
      analogWrite(ledPinB, 50);
      delay(50);
      analogWrite(ledPinB, 0);
      delay(50);    
     } else if (sgp.TVOC > 220 & sgp.TVOC < 660 || sgp.eCO2 > 700 & sgp.eCO2 < 1000){
      analogWrite(ledPinG, 0);
      analogWrite(ledPinR, 255);
      delay(50);
      analogWrite(ledPinR, 0);
      delay(50);
      analogWrite(ledPinR, 255);
      delay(50);
      analogWrite(ledPinR, 0);
      delay(50);    
      analogWrite(ledPinR, 255);
      delay(50);
      analogWrite(ledPinR, 0);
      delay(50);
    } else {
      analogWrite(ledPinG, 3);
    }
   }
 } 
}

 

  • Хорошо! (+1) 1
Ссылка на комментарий
Поделиться на другие сайты


  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...