Перейти к содержимому

kharlashkin

Дата регистрации: 13 ноя 2013
Вне сайта Был на сайте Вчера, 20:00

#384555 Arduino и аналоги

Автор: kharlashkin27 Март 2017 - 21:30

Итак два датчика DTH22, один в КСД (камеры статического давления) на подачу воздуха после кондера, второй на рециркуляцию, библиотека для DTH, два резистора на 10кОм.

 

Прикрепленный файл  dth22.png   295,13 Кб   0 раз скачано

Собственно код:

Нашлась неплохая библиотека управления событиями по таймеру - Timer. Как говорится "то, что доктор прописал" ;)

Скетч для температурных датчиков:

#include "DHT.h"
#include <RBD_Timer.h> 

#define dhtInPin 2
#define dhtOutPin 3
#define dhtTuype DHT22

DHT dhtIn(dhtInPin, dhtTuype);
DHT dhtOut(dhtOutPin, dhtTuype);
RBD::Timer timer;

void setup()
    {
    Serial.begin(115200);
    dhtIn.begin();
    dhtOut.begin();
    timer.setTimeout(4000);
    timer.restart();
    }

void loop() {
    if(timer.getValue() == 2000)
    {
    float humidityIn = dhtIn.readHumidity();
    float temperatureIn = dhtIn.readTemperature();
    Serial.print("HumidityIn: ");
    Serial.println(humidityIn);
    Serial.print("TemperatureIn: ");
    Serial.println(temperatureIn);    
    }
    else if(timer.isExpired())
    {
    float humidityOut = dhtOut.readHumidity();
    float temperatureOut = dhtOut.readTemperature();
    Serial.print("HumidityOut: ");
    Serial.println(humidityOut);
    Serial.print("TemperatureOut: ");
    Serial.println(temperatureOut);
    timer.restart();
    }
}

  • 1


#384360 Arduino и аналоги

Автор: kharlashkin25 Март 2017 - 21:58

P.S. Заметил глюк, в датчике СО2 стоит LED-нагреватель, который периодически включается/выключается. Во время его работы + так же запитан датчик пыли (тоже со встроенным нагревателем), светодиоды на ардуинке заметно тускнеют - питание просаживается. Если в этот момент времени идет передача данных в Serial - следующее значение ppmco2 будет равно -10, т.е. импульс не был посчитан.

 

Ну в общем всё не так. И скетч не правильный, непонятно почему меня никто не ткнул носом в мою необразованность. По-порядку.

 

Контроллер не умеет работать в несколько потоков и параллельно выполнять разные функции. Т.е. при выполнении например этого:

duration = pulseIn(dustPin, LOW);

Код будет ожидать окончания импульса, а в даташите указываются длины импульсов 10-90 мс (страница 3), таким образом весь процесс будет тормозиться. А для этого:

highlevel_co2 = pulseIn(co2Pin, HIGH, 1004000) / 1000; // Получение длины импульса HIGH в мс

Мы вообще тормозим всё на 1004 мс.

Т.е. мне пришлось переделывать почти всё (благо пример для mh-z19 pwm был изначально правильно написан), пока не проверю получаемый данные в паре и по отдельности датчиков выкладывать не буду. У всех прошу прощения за ввод в заблуждение. Сейчас крутиться тестовый скетч, но через сутки начинает врать датчик СО2.

 

Приехали датчики температуры и влажности dth-22 (даташит). Но все примеры и поиск на github построены с помощью delay(), а это значит что придется опять "изобретать велосипед".


С другой стороны, никто не мешает мне вызывать функции в определенное время, т.е. сначала выполняем подсчет пыли, потом меряем СО2, затем температуру и т.п.


  • 1


#383258 Arduino и аналоги

Автор: kharlashkin13 Март 2017 - 22:26

Апну темку, приехали датчик уровня СО2 и пыли (MH-Z19 и DSM501A). Несколько вечеров копался в коде/игрался настройками, собственно результат ниже:

Жду остальные посылки с температурными датчиками и т.д.

P.S. Заметил глюк, в датчике СО2 стоит LED-нагреватель, который периодически включается/выключается. Во время его работы + так же запитан датчик пыли (тоже со встроенным нагревателем), светодиоды на ардуинке заметно тускнеют - питание просаживается. Если в этот момент времени идет передача данных в Serial - следующее значение ppmco2 будет равно -10, т.е. импульс не был посчитан. Хорошо что блок питания 5В у меня отдельный будет для автоматики ;)


  • 3


#378428 Arduino и аналоги

Автор: kharlashkin03 Февраль 2017 - 23:27



:no1:

Класс!

Спасибо, Pavel3333! Хотел отметить, что обычным паяльником я бы туда не подлез никак, так что для мелких деталюшек китайская usb-поделка самое оно. Осталось самое интересное теперь - довести до ума платформу, т.е. модернизировать сервы для отдачи значений в Blender, закрепить датчики на основе и платформе. Оформить инструкцию и визуализацию.

Вчера просидел весь вечер с магнитометром, думаю нужно калибровать его ручками и немного изменять математику Arduino скетча. Кстати хорошая ссылка на инструкцию по калибровке. Если все получиться с датчиками, подумываю следующим этапом зачудить отслеживание движений человека ;)


  • 1


#378426 Arduino и аналоги

Автор: kharlashkin03 Февраль 2017 - 23:12

Сегодня получил обратную связь от сервопривода. Фотографии не стал пока делать - буду перепаивать остальные сделаю обязательно.

Подопытный с коробком спичек для оценки размера

Вскрыл крышку сервы на 4-х длинных саморезах.

Запустил тестовый скетч "Sweep" из примеров и мультиметром поискал контакт с плавающим значением. Повезло и попал с первого раза :)

Место припайки
С припаянным проводком

Припаял проводок на платку, вывел наружу вместе с остальными 3-мя, опять проверил мультиметром - все работает, показывало плавающие значения по памяти вроде от 0,7 до 2,1 В.

Собственно проверочный код:

#include <Servo.h>

Servo myservo; 

int pos = 0;    
int analogPin = 3;     
int val = 0; 

void setup() {
  myservo.attach(9);  
  Serial.begin(9600);
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { 
    myservo.write(pos);             
    val = analogRead(analogPin);    
    Serial.println(val);
    delay(50);                       
  }
  for (pos = 180; pos >= 0; pos -= 1) { 
    myservo.write(pos);              
    val = analogRead(analogPin);   
    Serial.println(val);
    delay(50);                       
  }
}

И вывод в порт:

Учитывая, что аналоговый вход в ардуинке понимает 0 В как 0, а 5 вольт как 1023, то можно рассчитать, что забираются с сервы значения от 0,53 до 2,2 вольт или получается точность 0,53 градуса. Видно из лога, что есть неточности - но учитывая стоимость серв лучшего и ждать нельзя было ;)


  • 1


#378114 Arduino и аналоги

Автор: kharlashkin01 Февраль 2017 - 14:53

Нашел похожий проект платформы в blender на просторах - буду изучать.

Azbuka, Как-то давно не появлялся... Так уверенно писал о вводе/выводе в/из arduino, хотел спросить о примере реализации.


  • 1


#378058 Arduino и аналоги

Автор: kharlashkin31 Январь 2017 - 23:04

Наконец-то заставил Blender корректно отображать все повороты датчика (не хочу снимать видео - поздно уже):

Прикрепленный файл  Снимок экрана от 2017-01-31 23-58-01.png   240,07 Кб   1 раз скачано

Есть небольшая проблема с данными от магнитометра в кватернионах - при повороте датчика вокруг оси Z, в течении пары секунд параметр этот возвращается обратно. Если же считывать данные магнитометра напрямую - есть конечно плаванье (в пределах 3-10 тысячных Гаусса), но показывает на север стабильно.

Блин не охота всю математику перебирать в Arduino коде...


  • 1


#375380 Arduino и аналоги

Автор: kharlashkin17 Январь 2017 - 06:34

Вечером проверю.

 

В общем код вроде рабочий, вопрос в том что необходимо в реальном времени передавать/отображать положение "кубика". Буду смотреть в сторону Blender Game Engine, вот даже нашел понятно видео по процессу.


  • 3


#375186 Arduino и аналоги

Автор: kharlashkin16 Январь 2017 - 13:01

Может подскажет кто решение?

Вроде так:

qw = float(data[0:4])
qx = float(data[6:10])
qy = float(data[12:16])
qz = float(data[18:22])
bpy.context.active_object.rotation_quaternion = (qw, qx, qy, qz)

Вечером проверю.


  • 1


#374994 Arduino и аналоги

Автор: kharlashkin15 Январь 2017 - 19:55

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

 

Сегодня потратил половину выходного для более масштабных испытаний. У коллег взял приборчик - анемометр Testo 410-2, просверлил боковину канальника и на площадки/стяжки прикрутил внутри распылители. Сфотографировать честно забыл как внутри оно выглядит, но не особо отличается от фотографии со скотчем. Замеры проводил на 2-х приточных и вытяжной решетке (притоки в детскую и спальню, вытяжка из спальни), до 2-й вытяжной решетки было трудно добраться - она над шкафом и перед ней пакеты с игрушками, а в комнате в это время младший спал. Решетки предварительно снял. Методика замеров по ГОСТу, 5 замеров на отверстия размерами 100х450мм и 100х500мм, по 10 секунд на точку, все замеры занес в таблицу (во вложении).

Воду подавал холодную из системы, старался подавать/отключать воду циклами по 10 мин примерно. Ячейки красного цвета - подачи воды нет, ячейки синего цвета - подача воды, ячейки зеленого цвета - работа дренажного насоса.

Если что будет непонятно - спрашивайте.

 

P.S. Прикинул необходимое оборудование для автоматизации и добавления обезараживания в систему:

1/2" BSPP 220, Клапан электромагнитный нормально-закрытый - 1 шт.
DHT22/AM2302, Датчик температуры и влажности - 3 шт.
MH-Z19, Датчик инфракрасный уровня углекислого газа   - 1 шт.
ACS712, Датчик тока 5А - 1 шт.
AC-DC 220V/5V 700mA, Блок питания Arduino - 1 шт.
ARM PIC AVR DSP, Модуль реле 4-х канальный Arduino - 1 шт.
ОБН-35м, Облучатель бактерицидный (кварцевый) настенный - 1 шт.
Контроллер Arduino Nano 3.0 - 1 шт.

Стоимость всего примерно 72$.


Первым делом припаял ножки к платке с сенсором, сразу завелся код для mpu-9250.

Вчера допоздна сидел с датчиком положения в пространстве, корректно завелся у меня вот этот код:

Пытался подключить через pySerial ардуинку к Blender, а там python3:

import serial
usbport = '/dev/ttyUSB0'
ser = serial.Serial(usbport, 38400)
while True:
    data = ser.readline()
    print(data)

выводит b'0.12, 0.00, 0.84, 0.24\r\n' (данные рандомные как пример)

каким образом их передать в строку bpy.context.active_object.rotation_quaternion = (qw, qx, qy, qz), чего-то не получилось. Тупил перед документацией несколько часов, но так и не смог решить проблему, чувствую ответ где-то очень простой и близко. Может подскажет кто решение?

Прикрепленные файлы:


  • 1


#374002 Arduino и аналоги

Автор: kharlashkin11 Январь 2017 - 15:57

Паяльника у меня тоже нет, посмотрев вчера пару уроков и обзор usb-паяльника решил себе тоже купить подобный девайс.

Приехал паяльничек, опробован на пайке ножек для сенсора положения в пространстве. паяльник как паяльник. Первым делом припаял ножки к платке с сенсором, сразу завелся код для mpu-9250. Пришло время перепаивать сервоприводы и доставать с полки платформу ;)


  • 1


#373483 Arduino и аналоги

Автор: kharlashkin08 Январь 2017 - 18:48

Сегодня выделил несколько часов провести первое пробное испытания системы увлажнения в канальнике. Видео пробовал сделать - не видно на нем ничего.

Подопытный

Со снятой нижней панелью

Со снятым поддоном сбора конденсата

Грязный поддон

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

Внутрь, через убранную заглушку в поддоне слева (правильно - по ходу воздуха, на фото - справа) завел трубку на которую надел распылители. За счет того что блок установлен с небольшим наклоном в правую сторону (где установлен конденсатный насос), некоторое время вода не должна была выливаться.

Прилепленые на скотч распылители

Обе форсунки прилепил над выходными патрубками вентиляторов, расстояние от форсунки до теплообменника где-то 300-400 мм.

Открыл водичку сначала просто так - оба распылителя функционировали как нужно, посторонних подтеков не заметил.

Установил на место поддон сбора конденсата. Запустил внутренний блок на режим вентиляции (работа только вентиляторов) на минимальной скорости и опять открыл воду. Визуально ничего не видно, так как все закрыто - но по звуку было понятно что распылители водичку подают. Кстати шум от них даже больший чем от работы кондиционера на минимальной скорости.

Кран был открыт 15 минут, т.е. в кондиционер было подано около 2,5 литра холодной воды. Внутренний блок работал 5 минут на минимальной, 5 минут на средней и 5 на максимальной скоростях вентиляторов. Все это время "махал руками" за теплообменником на выходном патрубке внутреннего блока, держал бумажную салфетку и т.п. Где-то на 10-й минуте (перед переключением на макимальную скорость) нижняя половина теплообменника стала влажной, за это время в поддоне справа уровень воды поднялся где-то до 7 мм (пальцем проверял). На 15-й минуте из партубка с отсутствующей заглушкой начала капать вода, т.е. уровень воды в поддоне уже был довольно высок (пальцем померял - около 10 мм в правом углу). Сходил перекрыл кран с подачей, услышал как начал работу конденсатный насос - сработал поплавок. Насос проработал 10 минут, режим вентиляции выключил вместе с водой, так как время поджимало - нужно было ещё все собрать обратно успеть.

В принципе эксперимент считаю удачным, так как основные опасения не подтвердились и вода за пределы кондиционера не уходит. Боялся брызг за теплообменником на выходном патрубке кондиционера. Теперь думаю смонтировать распылители на постоянной основе и погонять уже более основательно с замерами анемометром влажности и температуры на выходном патрубке кондиционера, на приточных и вытяжных решетках в комнатах. Параллельно заказывать буду датчики и реле для ардуинки.


  • 2


#372919 Arduino и аналоги

Автор: kharlashkin03 Январь 2017 - 20:59

Для полномасштабных испытаний был заказан вот такой комплект туманообразования в Китае, дабы проверить каким образом будет распространятся водно-воздушная смесь внутри канального блока кондера.

Приехал и протестирован в ванной комнате, один наконечник формирует как бы облако мелкого-мелкого дождика, под водопроводным напором начиная с самой тоненькой струйки (подключал вместо лейки душа) и до максимум открытого крана может расход и меняется, но образуемое облако остается в прежних пределах от одного распылителя (примерно на расстояние в 800 мм телесный угол в 30 градусов). Был произведен замер расхода по таймеру- за 30 минут в ведро собралось примерно 2,5 литра (3-х литровой банкой измерял).

Теперь на очереди нужно разобрать один внутренний блок кондиционера, временно подключить к водопроводу одно/два сопла и посмотреть как будет облако тумана распостраняться внутри канальника. Процесс думаю снять на видео ;)


  • 1


#372484 Отзыв о Леново

Автор: kharlashkin30 Декабрь 2016 - 08:54

Если и на нем ЖД сломается, пиши пропало. Эх....

Облака - наше все ;) Сливай все туда пока не поздно.


  • 1


#372478 Рассылка поздравлений с новым годом.

Автор: kharlashkin30 Декабрь 2016 - 07:47

Вчера заходило два человека с просьбой организовать рассылку с поздравлениями для партнеров/заказчиков. При чем основным требованием было, чтобы в поле "кому" электронного письма был один адресат. Погуглив часик и почитав доки, был набросан скриптик на python, его и прилагаю, может пригодиться кому-то ;)


Скрипт берет открытку "c:/temp/2017.jpg", считывает из текстового файла "c:/temp/test.txt", где в каждой новой строке один электронный адрес, нужный e-mail и поздравляет адресата письмом со стишочком и картинкой ;)
Прикрепленный файл  2017.jpg   268,58 Кб   0 раз скачано

Всех с наступающим 2017 годом!


  • 2




© Mr 13