Рассмотрим подключение Relay Shield к плате Arduino MEGA. Relay Shield мы будем использовать для включения/выключения света для освещения растений, вентилятора, насоса для полива растений. Включения/выключения вентилятора и помпы будет осуществляться в зависимости от значений температуры воздуха (вентилятор) и влажности почвы (мембранный вакуумный насос (см. рис. 6.2)). Мембранный вакуумный насос будем использовать для полива почвы. Он предназначен для всасывания воды из емкости. Рабочее напряжение 12В, потребляемый рабочий ток 0.5 – 0.7А, расход 1.5 л/мин.
Рис. 6.2. Мембранный вакуумный насос
Управление светом будем осуществлять с сенсонного экрана TFT 2.4" Shield (рассмотрим это в главе 6.3).
Схема соединений представлена на рис. 6.3.
Внимание!
Работа с высоким напряжением опасна для вашего здоровья и жизни. На плате существуют области, прикосновение к которым приведёт к поражению электрическим током. Это винты контактных колодок и места пайки выводов контактных колодок и реле. Не работайте с платой, если она подключена к бытовой сети. Для готового устройства используйте изолированный корпус.
Если вы сомневаетесь как подключить к реле электроприбор, работающий от общей сети 220 В и у вас есть сомнения, вопросы на тему того как это делается, остановитесь: вы можете устроить пожар или убить себя. Убедитесь, что у вас в голове — кристальное понимание принципа работы устройства и опасностей, которые связаны с высоким напряжением.
Рис. 6.3. Схема подключений relay shield к плате Arduino MEGA
Загрузим на плату Arduino MEGA скетч включения/выключения вентилятора и насоса в зависимости от данных температуры воздуха и влажности почвы.
Необходимо внести изменения в существующий скетч. Во первых добавляем массив пинов для подключения реле (пусть их будет 8, с запасом под расширения):
int pinrelays[]={27,29,31,33,35,37,39};
А также массив для хранения данных реле datarelays[] (0 – выключено, 1 –включено) и массив в котором будем хранить фактически подключенные устройства aktiverelays[] (1 – подлючено, 0 – выключено):
int aktiverelays[]={1,1,1,1,1,0,1,0};
int datarelays[]={0,0,0,0,0,0,0,0};
Необходимо добавить и константы в файл defines.h
Теперь в основной файл скетча в цикл loop() добавим код включения/выключения реле, управляющих вентилятором и помпой в зависимости от показаний датчиков температуры DS18B20 и увлажненности почвы SoilMoisture.
Содержимое данного фрагмента скетча представлено в листинге 6.1.
Листинг 6.1
void loop() {
…………
// установка значений реле
// вентилятор
if(aktivesensors[1]==1 && datasensors[1]<999
&& datasensors[1]>LIMIT_DS18B20MAX) {
digitalWrite(pinrelays[2],RELAY_ON);
datarelays[2]=1;
}
else {
digitalWrite(pinrelays[2],RELAY_OFF);
datarelays[2]=0;
}
// помпа
if(aktivesensors[2]==1 && datasensors[2]<999
&& datasensors[1]>MAXVALUESOILMOISTURE 900) {
digitalWrite(pinrelays[1],RELAY_ON);
datarelays[1]=1;
}
else {
digitalWrite(pinrelays[1],RELAY_OFF);
datarelays[1]=0;
}
……..
}
После загрузки скетча на плату Arduino у Вас будет обеспечено автоматическое включение/выключение вентилятора и автоматический полив растений. Теперь рассмотрим отображение данных на дисплее и управление включением/выключением света (реле 0) с помощью touch дисплея.