Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

xakerrf
2017-10-06 22:57:55

Нужна снова Ваша помощь...
Все сделал, и скетч, и подключил - но заработало только половина.... (((
К ардуино уно подключил:
блютуз, 2 серво привода, 4 реле и датчик температуры и влажности.
Подключился по блютуз нормально, 2 реле работают на ура.
Серво приводы тоже работают - но ведут себя как будто живие, дергаются, двигаются. (реально сумашедшие)
2 реле просто светятся светодиоды и не какой реакции, датчик температуры и влажности не передает не какой информации.

Вот сам скетч:

/*
   -- My smart room --

   This source code of graphical user interface
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 2.3.1 or later version
   download by link http://remotexy.com/en/library/
   To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
     - for ANDROID 4.0.1 or later version;
     - for iOS 1.1.0 or later version;

   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>

#include <RemoteXY.h>

// настройки соединения
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600

#define CW 7 // CW инициализируется на контакте 7//
#define CCW 8 // CCW инициализируется на контакте 8//
#define CCCW 9 // CCCW инициализируется на контакте 8//
#define CCCCW 10 // CCCCW инициализируется на контакте 8//


// конфигурация интерфейса 
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,6,0,25,0,240,0,6,0,1,
  2,0,3,64,57,8,0,208,161,209,
  130,208,190,208,187,0,79,70,70,0,
  2,0,3,73,57,8,6,208,158,208,
  186,208,189,208,190,0,79,70,70,0,
  2,0,3,82,57,8,5,208,154,209,
  131,208,187,208,181,209,128,0,79,70,
  70,0,2,0,3,91,57,8,4,208,
  146,209,139,209,130,209,143,208,182,208,
  186,208,176,32,0,79,70,70,0,4,
  160,4,50,56,8,2,4,160,4,40,
  56,8,1,66,130,40,27,9,7,5,
  66,193,4,28,16,4,6,67,4,38,
  21,15,5,2,11,67,4,16,21,14,
  5,2,11,66,129,20,28,16,4,1,
  129,0,1,0,61,11,4,68,111,98,
  101,114,77,97,110,110,0,129,0,9,
  10,43,6,7,77,121,32,115,109,97,
  114,116,32,114,111,111,109,0,129,0,
  2,17,19,3,14,84,101,109,112,101,
  114,97,116,117,114,101,58,0,129,0,
  31,17,14,3,14,72,117,109,105,100,
  105,116,121,58,0,129,0,18,32,5,
  3,13,48,194,176,208,161,0,129,0,
  43,30,3,3,13,37,0 };
 
// структура определяет все переменные вашего интерфейса управления
struct {

    // input variable
  uint8_t switch_1; // =1 если переключатель включен и =0 если отключен
  uint8_t switch_2; // =1 если переключатель включен и =0 если отключен
  uint8_t switch_3; // =1 если переключатель включен и =0 если отключен
  uint8_t switch_4; // =1 если переключатель включен и =0 если отключен
  int8_t slider_leftright; // =-100..100 положение слайдера
  int8_t slider_updown; // =-100..100 положение слайдера

    // output variable
  int8_t level_hum; // =0..100 положение уровня
  int8_t level_temp_down; // =0..100 положение уровня
  int8_t level_temp_up; // =0..100 положение уровня
  char text_hum[11];  // =строка UTF8 оканчивающаяся нулем
  char text_temp[11];  // =строка UTF8 оканчивающаяся нулем


    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0

} RemoteXY;
#pragma pack(pop)


/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

#include <Servo.h>

#define PIN_LEFTRIGHT_SERVO 5
#define PIN_UPDOWN_SERVO 12

Servo leftright_servo;
Servo updown_servo;

#include "DHT.h"
#define DHTPIN 4
DHT dht(DHTPIN, DHT11);

void setup()
{
  RemoteXY_Init ();
  pinMode(CW, OUTPUT); // настраиваем CW в качестве выхода//
  pinMode(CCW, OUTPUT); // настраиваем CCW в качестве выхода//
  pinMode(CCCW, OUTPUT); // настраиваем CCCW в качестве выхода//
  pinMode(CCCCW, OUTPUT); // настраиваем CCCCW в качестве выхода//

  leftright_servo.attach(PIN_LEFTRIGHT_SERVO);
  updown_servo.attach(PIN_UPDOWN_SERVO);

  // TODO you setup code

}

void loop()
{
  RemoteXY_Handler ();

  if (RemoteXY.switch_1 == 1) {
    digitalWrite(CW, LOW);
  }
  if (RemoteXY.switch_1 == 0) {
    digitalWrite(CW, HIGH);
  }
  if (RemoteXY.switch_2 == 1) {
    digitalWrite(CCW, LOW);
  }
  if (RemoteXY.switch_2 == 0) {
    digitalWrite(CCW, HIGH);
  }
  if (RemoteXY.switch_3 == 1) {
    digitalWrite(CCCW, LOW);
  }
  if (RemoteXY.switch_3 == 0) {
    digitalWrite(CCCW, HIGH);
  }
  if (RemoteXY.switch_4 == 1) {
    digitalWrite(CCCCW, LOW);
  }
  if (RemoteXY.switch_4 == 0) {
    digitalWrite(CCCCW, HIGH);
  }

  leftright_servo.writeMicroseconds(RemoteXY.slider_leftright * 20 + 500);
  updown_servo.writeMicroseconds(2500 - RemoteXY.slider_updown * 20);

 

  float temp = dht.readTemperature(); 
  float hum = dht.readHumidity();
  dtostrf(temp, 0, 1, RemoteXY.text_temp);
  dtostrf(hum, 0, 1, RemoteXY.text_hum);
 
  if (temp<0) {
    RemoteXY.level_temp_up = 0;
    RemoteXY.level_temp_down = min (-temp*2,100);
  }
  else if (temp>0) {
    RemoteXY.level_temp_up = min(temp*2,100);
    RemoteXY.level_temp_down = 0;
  }
  else {
    RemoteXY.level_temp_up = 0;
    RemoteXY.level_temp_down = 0;
  }
  RemoteXY.level_hum = hum;
}

  // TODO you loop code
  // используйте структуру RemoteXY для передачи данных




Вот сам проект:
http://remotexy.com/ru/editor/5d3ee809a … 4c7488815/

Питание от ардуино было только для блютуз.
Остальное запитал отдельно.

Что может быть не так? Что то в коде? И чего серво так дергаются?

Nefreemen
2017-10-06 09:26:02

Можно так  lol https://youtu.be/MejbOFk7H6c

Nefreemen
2017-10-06 09:08:26

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

Green
2017-10-06 06:55:25

Ну да, судя по темпам их развития, мы дураки! Только не конкретно инженеры, а так, в целом.((

Green
2017-10-06 06:31:55
Nefreemen пише:

Как то покупаю почему то однотипные, китайские smile, свои делать не рентабельно smile с точки зрения затрат времени smile, а Вам не по душе "пикантности" smile? У ТС возникли "непонятки" и я попытался объяснить. Я что, что то не правильно написал? Не возражаю, подправьте smile. По моему я написал что бывают в продаже разные, но судя по ситуации у ТС с опторазвязкой smile. А почему  "МодулЯ", а не модули smile?

Все пользуются китайской продукцией, только я с возможностью инверсии не встречал просто.  Правда и релейных модулей как то не приобретал ещё.) Пикантные - потому что углубились до переходов (а там и до дырок недалеко)).
А развязка там действительно не лишняя. Так значит, не такие уж и дураки китайские инженеры!))) Скорее, наоборот, за них можно порадоваться)). Только я бы сделал включение высоким уровнем, ибо низким многих вводит в ступор.(

xakerrf
2017-10-06 02:35:49

хм... хотя вот нашел http://arduino.ua/ru/hardware/Uno

Входы и выходы

С использованием функций pinMode(), digitalWrite() и digitalRead() каждый из 14 цифровых выводов может работать в качестве входа или выхода.

я так понимаю что могу повесить релюхи на от 2 до 13?
Хотя на 13 вроде бы нет.?

xakerrf
2017-10-06 02:29:20

Чет не могу инфу нормально найти, на ардуино уно реле на какие пины можно подключать? (от 4 до 12 могу на эти?)

Nefreemen
2017-10-05 23:55:08

Пока писал, вопрос "агрономии" уже решился smile. Когда то слышал юмор, вопрос кто такие КИПовцы? Да это агрономы smile всегда землю ищут smile.

Nefreemen
2017-10-05 23:43:36
Вячеслав Азаров пише:
Nefreemen пише:

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

Позволю себе сказать. С этой гальванической развязкой ключей реле, просто, какой-то нонсенс. Зачем она там нужна? У реле, и так, отличная изоляция катушки от коммутируемых цепей! Творчество, наверно.

Цена оптопары копейки smile. А вот логический вопрос, во что может обойтись общая земля, если разные источники питания модуля и "управлялки"? Почему бы и не творчество smile?

Nefreemen
2017-10-05 23:34:52
Green пише:
Nefreemen пише:

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

Такие пикантные подробности.)) МодулЯ бывают разные. Может у Вас какой то свой?

Как то покупаю почему то однотипные, китайские smile, свои делать не рентабельно smile с точки зрения затрат времени smile, а Вам не по душе "пикантности" smile? У ТС возникли "непонятки" и я попытался объяснить. Я что, что то не правильно написал? Не возражаю, подправьте smile. По моему я написал что бывают в продаже разные, но судя по ситуации у ТС с опторазвязкой smile. А почему  "МодулЯ", а не модули smile?

Green
2017-10-05 19:09:44

ДО 2,5 кВ.) Не иметь гальванической связи с другим источником всегда приятно.)

Green
2017-10-05 11:07:40
Вячеслав Азаров пише:

С этой гальванической развязкой ключей реле, просто, какой-то нонсенс. Зачем она там нужна? У реле, и так, отличная изоляция катушки от коммутируемых цепей! Творчество, наверно.

Просто джампер между землёй и минусом релейной цепи забыли поставить.(
Всё нормально.) Там развязка от цепи питания реле. Нарисовано немного по дурному.

Green
2017-10-05 10:18:47
Nefreemen пише:

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

Такие пикантные подробности.)) МодулЯ бывают разные. Может у Вас какой то свой?

Nefreemen
2017-10-05 09:08:08
xakerrf пише:

Всем спасибо за помощь - разобрался )
Все получилось, даже скетч с первого раза заработал )))
Правда релюху на 12в пока решил не трогать ))
С проблемой столкнулся при подключении блютуз (ошибку выдавал) RX и TX были подключены на пины 2 и 3 в скетче и по схеме - а оно ошибку выдает (поменял местами - работает: RX2 подключил на пин 3, а TX3 подключил на пин 2) так и не понял в чем прикол.
Так же с релюхами прикол - по логике если я подаю 1 - реле включается, 0 выключается (я в скетче прописал на оборот) т.к. при включении ардуино реле сразу же включается, (может оно и правильно, я хз) но я не хотел что бы оно все время было включено. Пришлось написать 0 вкл. 1 выкл.

Приколы с Serial тянутся еще с "древних" времен, "природа" этого явления заключается в том что еще на заре появления ПК как впрочем до сих пор smile существует два вида шнуров СОМ-СОМ прямой и нуль-модемный (кроссовый). Поэтому и сейчас некоторые производители маркируют Тх и Rx наоборот, встречал на некоторых китайских платах ардуино, а на USB-Serial такое встречается сплошь и рядом smile. Поэтому не удивляйтесь smile, работает ну и хорошо. По поводу реле то тут все понятно, модули реле для ардуино как правило можно подключать в двух режимах с гальванической развязкой и без, при подключении через оптопару происходит инверсия, когда светодиод светится (1)  то фототранзистор открывается сопротивление перехода эмиттер - коллектор маленькое поэтому напряжение на коллекторе тоже маленькое (равно падению на переходе) тем самым запирает ключ (транзистор) реле. При подключении без оптопары (переключается джампером на модуле) все работает "правильно" smile.

alex_dol
2017-10-05 08:28:35
Sergey_Atlantic пише:

Вот тебе схемка

http://forum.arduino.ua/img/members/1693/IMG_20171003_110511.jpeg

Идея правильная, а вот подключать реле так нельзя - 100% что проц очень быстро уйдет в мир иной. Добавь в схему транзистор с диодом или нарисуй реле модулем.

Підвал форуму