#1 2016-07-19 09:45:23

pv
Учасник
Зареєстрований: 2016-07-19
Повідомлень: 3

Допоможіть написати програму

Допоможіть написати програму, готовий заплатити

Потрібна програма для Arduino Nano V3.0 AVR ATmega328 P-20AU.
До контролера підключено 2 датчика вологості HTU21 та реле. У разі, якщо вологість хоча б на одному з датчиків перевищить 75% має увімкнутися реле.
Програма має бути у постійній пам'яті і запускатися автоматично після відновлення живлення.

Можете запропонувати власний варіант обладнання.

Буду вдячний за допомогу

Неактивний

#2 2016-07-19 16:44:05

evgeniy
Гість

Re: Допоможіть написати програму

цена вопроса
DHT11 не подходит? Он дешевле и для вашей точности вполн годится
В принципе в библиотеке к любому датчику есть примеры

#3 2016-07-19 19:09:29

pv
Учасник
Зареєстрований: 2016-07-19
Повідомлень: 3

Re: Допоможіть написати програму

Запропонуйте Вашу,
Не зовсім розумію, як зробити, щоб програма автоматично завантажувалася з постійної пам'яті

Неактивний

#4 2016-07-19 19:53:49

evgeniy
Гість

Re: Допоможіть написати програму

При включенні живлення програма почне свою роботу без будь-яких хитрощів. Мені не зрозуміло навіщо щось кудись повинно завантажуватися? Можливо ви не зовсім правильно уявляєте роботу МК AVR. У них програма прошивається в постійну flash пам'ять і там працює, ні куди її завантажувати не треба. В оперативній пам'яті зберігаються тільки значення змінних, наприклад поточні показники датчиків.
Сама програма проста. У циклі з затримкою в кілька хвилин опитуємо датчики і порівнюємо з еталонним значенням.
  
Можливо ви мали на увазі автоматичне відновлення роботи при зависанні МК (watchdog) то тут не все просто. Деякі плати Arduino неправильно працюють в такому випадку потрібно знайти альтернативний бутлоадер і перепрошити плату

#5 2016-07-20 09:58:44

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: Допоможіть написати програму

evgeniy, если нужна долговечность и стабильность то DHT11 однозначно не подойдет.
1. 75% находится на краю рабочего диапазона измерения влажности (по памяти максималка 80) и точность тут будет сильно хромать.
2. При работе с таких условиях DHT11 бысто выходит из строя - начинает сильно врать. Я за сезон с инкубаторе поменял 2 шт.

Можно вообще не использовать бутлоадер, тогда никаких проблем с watchdog не возникает.

Неактивний

#6 2016-07-20 18:56:57

evgeniy
Учасник
Зареєстрований: 2016-07-19
Повідомлень: 3

Re: Допоможіть написати програму

alex_dol, с вами согласен полностью, но не думаю, что датчик предложенный топикстартером лучше при этом существенно дороже. Да и не нужна ему особая точность
Кстати, а вы нашли что нибудь надежное за более менее адекватную стоимость? Пусть даже без датчика температуры, только влажность. Может хотя бы аналоговый датчик, но такой чтобы 2-3 года отработал

Неактивний

#7 2016-07-20 19:03:17

evgeniy
Учасник
Зареєстрований: 2016-07-19
Повідомлень: 3

Re: Допоможіть написати програму

Вот слегка переделанный пример из библиотеки adafruit-DHT добавлены только команды управления светодиодом на 13 ноге. В принципе нога может быть любая к ней можно подключить реле. Что еще нужно?


#include "DHT.h"

#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);
int ledPin = 13;
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  pinMode(ledPin, OUTPUT);

  dht.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    if (h > 75) digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW);
    delay(1000);
  }
}

Остання редакція evgeniy (2016-07-20 19:04:06)

Неактивний

#8 2016-07-20 19:49:20

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Допоможіть написати програму

эту серию кто то смотрел?

http://www.silabs.com/Support%20Documen … 06-A20.pdf

Неактивний

#9 2016-07-20 23:31:34

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Допоможіть написати програму

NoName пише:

эту серию кто то смотрел?

http://www.silabs.com/Support%20Documen … 06-A20.pdf

Совершенно неинтересная. Может ценой? По сравнению с DHT22 характеристики не очень. Но главный отпад это I2C, это уже не в какие ворота для датчика.

Неактивний

Швидке повідомлення

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

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