Золотой Лось ОЛК: нет.
|
Текущее время: 19.04.24 22:13 |
Версия для печати |
Сообщение
Заголовок сообщения: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Всем хай.
Решил и я пополнить ряды гроверов в рабочем системнике.
Основная причина грова в системнику это стелс, автоматизация, и мониторинг температуры, влажности и состояния растения через веб-камеру.
Жесткий диск был закреплен на задней панели, там где может быть вентилятор.
Характеристики моего бокса:
ВхШхГ: 40х14х14 см (высоту лучше уменьшить до 35 см, иначе бокс потом не вставите в системник, мне пришлось снимать переднюю крышку чтобы вставить бокс и то он туго лез.).
Свет: 9 Вт фитолед(2$ на алиэкспрессе).
Выдув: комп. вентилятор 7х7х1,5 см 4 pin
Вдув: пассивный.
Фильтр: для кухонной вытяжки.
Полив через трубочку от капельницы.
Питания системы через отдельный блок питания на 12 В 1.2 А(от принтера взял).
Веб-камера дешевая, б/у Logitech C100.
Внимание! В системнику держатели дисковода и жестких дисков и т.п. были удалены путем высверливания заклепок.
Как я строил бокс
Первым делом я раздобыл ненужною большую коробку от принтера.
Разобрал ее и разметил линии сгиба и прорезов(изучите как собирают коробки из картона).
Обклеил алюминиевым скотчем(ток проводит, зря я его брал, возьмите какой-нибудь типа отражающий).
Собрал и склеил скотчем. Вырезал дверку.
Сначала обклеил, потом только собрал!
Светодиод я решил крепить на радиатор от процессора(на радиаторе были защелки для вентилятора, на них я и посадил вентилятор).
Также на радиаторе разместились стабилизатор тока на LM317 и резистор(приклеил на супер клей) на 5 Вт 0.82 Ом.(Светодиод с али потребляет около 1 А, а падение напряжения на светодиоде 9 В, после стабилизатора оно порядка 9-9.5 Вольт).
Проделал два отверстия верху в форме круга радиусом примерно 3 см и внизу сбоку к передней панели компьютера. Также отверстия под саморезы для вентилятора. Саморезы должны быть длиннее обычных.
Вентилятор должен быть с четырьмя проводами (два питания, частота, и канал управления ШИМ)
С ДВП сделал типа прокладки, картон может не выдержать веса радиатора. Сверху на двухсторонний скотч приклеил фильтр.
Закрепил камеру и датчик температуры и влажности на той же скотч.
Все провода вывел влево. У камеры я обрезал провод, так как я буду делать коннектор к материнской плате.
По центру задней стенки провёл трубку от капельницы и вывел ее наверх(раньше я пытался сделать полноценный системник-гроубокс, потому остались отверстия, перекрашен в белый цвет, светоотражающий скотч и т.д.).
Автоматизация
Мозгами стал микроконтроллер Atmega8.
Для связи с компьютером сделал переходник на CH340G(uart-usb)(из-за кривых рук я спалил себе один юсб хаб, если Вы также запилите самодельный переходник проверьте на КЗ, дорожки, по убирайте сопли и т.п., и прежде чем втыкать в порт, просто подайте напряжение от другого источника питания, если что отделаетесь только сгоревшей микрухой). Этот можно купить на али.
Датчик температуры и влажности DHT22.
Часы реального времени RTC1302 .
И мощный ключ для управления светодиодом IRLZ44N.
Все брал на али, кроме атмеги.
Конечно все это можно запилить на той же ардуинке и макетке.
Схема питается от дежурного питания АТХ блока.
Код компилировал в CodeVisionAVR. Прошивал с помощью SinaProg , через программатор на ардуинке.
Алгоритм кода:
Читаем время(именно сколько часов), если больше 00 и меньше 6 свет выключить, иначе включить(подать логическую единицу на полевик).
Проверить есть ли питание на выходе АТХ блока по 5 вольтовой линии, если есть включаем вентилятор на полною(подаем лог. 1 на 4 пин вентилятора), если нет то 0. В планах запилить ШИМ управление в зависимости от температуры и влажности.
И каждые 5 секунд отправляем по UART-у данные о температуре, влажности и т.п.
Данные принимаются программой написанной на делфи 7.
Исходники прошивки и программы сырые, но могу выслать кому нужно(пишите в ЛС). Также могу выслать печатки плат.
Автоматизацию я описал кратко, так как кто шарит в электронике и схемотехнике разберется что и к чему. Описывать все подробно я не буду так как это включает курс обучения по электронике, радиомонтажу. Но на любые вопросы я отвечу.
Тест показал что при максимальных оборотах и включенном свете температура около 20, влажность 45%(без растения), в комнате также 20.
При минимальных и включенном свете температура 33 градуса, влажность 25%(без растения).
Когда комп выключен вентилятор работает на минималках. Вентиляторы нужно брать тихие.
Когда включен - на максимум. Скорость вентилятора от света и температуры пока что не зависит.
Замочил семку Lemon Skunk, но это уже совсем другая история.
P.S.: Раньше у меня уже был опыт посадки и выращивание, тогда бокс был из кухонного шкафчика, с Днатом на 70 Вт, но меня спалили, растение не успело показать 5-листники. Люлей я тогда отхватил от родителей знатных, на полгода забросил мысли о своей траве. Месяц назад под впечатлениям двух топиков( Гроу-репорт под Фитолед и Строй-репорт бокса в рабочем системнике), решился попробовать снова. Что выйдет? Увидим.
Решил и я пополнить ряды гроверов в рабочем системнике.
Основная причина грова в системнику это стелс, автоматизация, и мониторинг температуры, влажности и состояния растения через веб-камеру.
Жесткий диск был закреплен на задней панели, там где может быть вентилятор.
Характеристики моего бокса:
ВхШхГ: 40х14х14 см (высоту лучше уменьшить до 35 см, иначе бокс потом не вставите в системник, мне пришлось снимать переднюю крышку чтобы вставить бокс и то он туго лез.).
Свет: 9 Вт фитолед(2$ на алиэкспрессе).
Выдув: комп. вентилятор 7х7х1,5 см 4 pin
Вдув: пассивный.
Фильтр: для кухонной вытяжки.
Полив через трубочку от капельницы.
Питания системы через отдельный блок питания на 12 В 1.2 А(от принтера взял).
Веб-камера дешевая, б/у Logitech C100.
Внимание! В системнику держатели дисковода и жестких дисков и т.п. были удалены путем высверливания заклепок.
Первым делом я раздобыл ненужною большую коробку от принтера.
Разобрал ее и разметил линии сгиба и прорезов(изучите как собирают коробки из картона).
Обклеил алюминиевым скотчем(ток проводит, зря я его брал, возьмите какой-нибудь типа отражающий).
Собрал и склеил скотчем. Вырезал дверку.
Сначала обклеил, потом только собрал!
Светодиод я решил крепить на радиатор от процессора(на радиаторе были защелки для вентилятора, на них я и посадил вентилятор).
Также на радиаторе разместились стабилизатор тока на LM317 и резистор(приклеил на супер клей) на 5 Вт 0.82 Ом.(Светодиод с али потребляет около 1 А, а падение напряжения на светодиоде 9 В, после стабилизатора оно порядка 9-9.5 Вольт).
Проделал два отверстия верху в форме круга радиусом примерно 3 см и внизу сбоку к передней панели компьютера. Также отверстия под саморезы для вентилятора. Саморезы должны быть длиннее обычных.
Вентилятор должен быть с четырьмя проводами (два питания, частота, и канал управления ШИМ)
С ДВП сделал типа прокладки, картон может не выдержать веса радиатора. Сверху на двухсторонний скотч приклеил фильтр.
Закрепил камеру и датчик температуры и влажности на той же скотч.
Все провода вывел влево. У камеры я обрезал провод, так как я буду делать коннектор к материнской плате.
По центру задней стенки провёл трубку от капельницы и вывел ее наверх(раньше я пытался сделать полноценный системник-гроубокс, потому остались отверстия, перекрашен в белый цвет, светоотражающий скотч и т.д.).
Мозгами стал микроконтроллер Atmega8.
Для связи с компьютером сделал переходник на CH340G(uart-usb)(из-за кривых рук я спалил себе один юсб хаб, если Вы также запилите самодельный переходник проверьте на КЗ, дорожки, по убирайте сопли и т.п., и прежде чем втыкать в порт, просто подайте напряжение от другого источника питания, если что отделаетесь только сгоревшей микрухой). Этот можно купить на али.
Датчик температуры и влажности DHT22.
Часы реального времени RTC1302 .
И мощный ключ для управления светодиодом IRLZ44N.
Все брал на али, кроме атмеги.
Конечно все это можно запилить на той же ардуинке и макетке.
Схема питается от дежурного питания АТХ блока.
Код компилировал в CodeVisionAVR. Прошивал с помощью SinaProg , через программатор на ардуинке.
Алгоритм кода:
Читаем время(именно сколько часов), если больше 00 и меньше 6 свет выключить, иначе включить(подать логическую единицу на полевик).
Проверить есть ли питание на выходе АТХ блока по 5 вольтовой линии, если есть включаем вентилятор на полною(подаем лог. 1 на 4 пин вентилятора), если нет то 0. В планах запилить ШИМ управление в зависимости от температуры и влажности.
И каждые 5 секунд отправляем по UART-у данные о температуре, влажности и т.п.
Данные принимаются программой написанной на делфи 7.
Исходники прошивки и программы сырые, но могу выслать кому нужно(пишите в ЛС). Также могу выслать печатки плат.
Автоматизацию я описал кратко, так как кто шарит в электронике и схемотехнике разберется что и к чему. Описывать все подробно я не буду так как это включает курс обучения по электронике, радиомонтажу. Но на любые вопросы я отвечу.
Тест показал что при максимальных оборотах и включенном свете температура около 20, влажность 45%(без растения), в комнате также 20.
При минимальных и включенном свете температура 33 градуса, влажность 25%(без растения).
Когда комп выключен вентилятор работает на минималках. Вентиляторы нужно брать тихие.
Когда включен - на максимум. Скорость вентилятора от света и температуры пока что не зависит.
Замочил семку Lemon Skunk, но это уже совсем другая история.
P.S.: Раньше у меня уже был опыт посадки и выращивание, тогда бокс был из кухонного шкафчика, с Днатом на 70 Вт, но меня спалили, растение не успело показать 5-листники. Люлей я тогда отхватил от родителей знатных, на полгода забросил мысли о своей траве. Месяц назад под впечатлениям двух топиков( Гроу-репорт под Фитолед и Строй-репорт бокса в рабочем системнике), решился попробовать снова. Что выйдет? Увидим.
_________________
Строй-репорт. Гроубокс в рабочем системнике.
Гроу-репорт в рабочем системнике. Lemon Skunk.
Последний раз редактировалось Zumin 26.07.17 15:30, всего редактировалось 1 раз.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Хай!
Сегодня очень много работал над программой и прошивкой.
А именно:
1. Добавил ШИМ регулировку в зависимости от температуры.
2. Настроил "общение" компьютера с Атмегой (на отладку ушло много времени).
Теперь можно управлять скоростью вентилятора и светом, а также менять режим дня.
Автоматическою регулировку можно отключать и задавать свое значение ШИМа для вентилятора.
Также отмыл плату и припаянные провода залил термоклеем.
Вместе со своим братом начали налаживать веб интерфейс.
Здесь можно посмотреть температуру, влажность, и картинку(она засвечена, думаю ставить светофильтр)
P.S.:Сегодня семка проросла, посадил в горшок.
Сегодня очень много работал над программой и прошивкой.
А именно:
1. Добавил ШИМ регулировку в зависимости от температуры.
2. Настроил "общение" компьютера с Атмегой (на отладку ушло много времени).
Теперь можно управлять скоростью вентилятора и светом, а также менять режим дня.
Автоматическою регулировку можно отключать и задавать свое значение ШИМа для вентилятора.
Также отмыл плату и припаянные провода залил термоклеем.
Вместе со своим братом начали налаживать веб интерфейс.
Здесь можно посмотреть температуру, влажность, и картинку(она засвечена, думаю ставить светофильтр)
P.S.:Сегодня семка проросла, посадил в горшок.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Бро не пали свой айпи!!!
В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
_________________
Я так хочу, чтобы лето не кончалось!
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
hforegts [16.07.17 21:13] писал(а):
Бро не пали свой айпи!!!
В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
Этот сайт брата, домен и хостинг проплаченный. Никакие статистики и сбор айпи не ведутся.
Это не для в**бонов, а для удобного управления и слежения за растением и боксом.
_________________
Строй-репорт. Гроубокс в рабочем системнике.
Гроу-репорт в рабочем системнике. Lemon Skunk.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Zumin [16.07.17 22:40] писал(а):
hforegts [16.07.17 21:13] писал(а):
Бро не пали свой айпи!!!
В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
Этот сайт брата, домен и хостинг проплаченный. Никакие статистики и сбор айпи не ведутся.
Это не для в**бонов, а для удобного управления и слежения за растением и боксом.
А фотка то выгружается и данные характеристик, я думаю что киберполиция и не такое умеет отследить!
---
Бро как знаешь твоё дело, скрытность пре выше всего
_________________
Я так хочу, чтобы лето не кончалось!
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
hforegts [16.07.17 22:13] писал(а):
Бро не пали свой айпи!!!
В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
Смелый пионер В нашем деле нужна скрытность, а не ви*бон( да простит меня модератор)
По теме.
- Добавь внешнюю температуру. Интересна дельта. Сама по себе темпа в боксе - следствие. Охлаждение у тебя же пассивное.
- Тут много людей с инженерным образованием и прямыми руками. Врятли кто-то удивиться. По мне, можно было реализовать на промышленном терморегуляторе с ПИД-алгоритмом. Будет надежней. Хотя... я сам такой же... люблю заморочиться
- Как с запахом будешь бороться? Фильтр от кухоной вытяжки это балавство Если поможет на 50% уже достижение
PS И вообще, системник - это баловство. Получить первый опыт и понять, что надо строить нормальный бокс.
_________________
LED – идеальный спектр. Теория и информация. || Химка по-дальневосточному. Классический рецепт.
Локально-раздельное питание растений. || Эксперименты с водяным охлаждением. Строим настоящий стелс-бокс.
Auto Chemdawg/земля/локально-раздельное питание/настоящий стелс/450х450х900/Днат250+Дри250/водяное охлаждение ламп/сплит-система/водяное охлаждение камеры роста/воздушный компрессор вместо канальника/простые соли
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
с этим светом лучше и не начинать, смысл 2х-3х месяцев ебли из-за 7 грамм
имхо, куда проще выкинуть все внутренности и спрятать где-нибудь в шкафу,
и полностью освоить системник
имхо, куда проще выкинуть все внутренности и спрятать где-нибудь в шкафу,
и полностью освоить системник
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
cm писал(а):
с этим светом лучше и не начинать
Еще два светодиода едут.
Пуп писал(а):
Как с запахом будешь бороться?
Комп стоит в мастерской, растворитель легко замаскирует запах+ у меня Lemon Skunk, он сначала гнилью воняет, а потом цитрусами пахнет.
cm писал(а):
куда проще выкинуть все внутренности и спрятать где-нибудь в шкафу,и полностью освоить системник
Согласен, но в моих условиях нужен 100% стелс.
Доработали веб-интерфейс, прошивку, добавили подсветку ночью(зелёная светодиодная лента 12 В)
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Пуп [17.07.17 15:17] писал(а):
Интересна дельта.
Дльта между комнатной и в боксе составляет 3-4 градуса. При комнатной температуре 20 градусов в боксе 23, это при выключенном светодиоде. А при включенном, с вентилятором (по шкале 0-255, а гудит на 85), то разница 6-7 градусов.
_________________
Строй-репорт. Гроубокс в рабочем системнике.
Гроу-репорт в рабочем системнике. Lemon Skunk.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Хай.
Стабилизатор оказался лишним, был демонтирован, а на светодиод подали 9.5 В, ток составил 0.9 А, потребления 8.55 Вт.
Приклеил светофильтр на веб-камеру, дабы не слепило фото-матрицу.
Веб-интерфейс закрыл, вход и просмотр только после авторизации.
Код прошивки:
Стабилизатор оказался лишним, был демонтирован, а на светодиод подали 9.5 В, ток составил 0.9 А, потребления 8.55 Вт.
Приклеил светофильтр на веб-камеру, дабы не слепило фото-матрицу.
Веб-интерфейс закрыл, вход и просмотр только после авторизации.
Код прошивки:
Код:
#include <mega8.h>
#include <stdio.h>
#include <delay.h>
#define CE PORTD.7
#define SCLK PORTB.1
#define PORT_IO PORTB.0
#define DDR_IO DDRB.0
#define PIN_IO PINB.0
#define DHT_PORT PORTC.1
#define DHT_DDR DDRC.1
#define DHT_PIN PINC.1
#define LED PORTB.3
#define FAN PORTB.5
#define PIN_ATX PIND.5 //5 Volt
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
unsigned char rx_index=0;
short hm=0;
short t=0;
//unsigned long takt0,work;
bit hum=0;
bit work=0;
eeprom char ld=2;
unsigned char h,m,s,tmp;
// unsigned char ld=2;
bit modefan=0;
unsigned char data[5]={0,0,0,0,0};
unsigned char pwmfan=255;
const char min_temp=23;
const char max_temp=35;
unsigned char takt,bfan;
short map(short x, short in_min, short in_max, short out_min, short out_max)
{
if (x<=in_min) return out_min;
else if ((x+5)>=in_max) return out_max;
else return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
void send(unsigned char c)// Отправка числа от 00 до 99
{
c=c%100;
putchar(c/10+'0');
putchar(c%10+'0');
}
void send3(unsigned char c)// Отправка числа от 000 до 255
{
c=c%1000;
putchar(c/100+'0');
c=c%100;
putchar(c/10+'0');
putchar(c%10+'0');
}
int read_dht_hum() //функция чтения данных датчика
{
unsigned char i,j;
DHT_DDR=1;
DHT_PORT=0;
delay_ms(20);
DHT_PORT=1;
DHT_DDR=0;
delay_us(50);
if (DHT_PIN==1)
{
return 0;
}
delay_us(80);
if (DHT_PIN==0)
{
return 0;
}
while (DHT_PIN==1);
for (j=0; j<5; j++)
{
data[j]=0;
for(i=0; i<8; i++)
{
while (DHT_PIN==0);
delay_us (30);
if (DHT_PIN==1)
data[j]|=1<<(7-i);
while (DHT_PIN==1);
}
}
return 1;
//DHT22 data[0]-data[1]-humidity, data[2]-data[3]-temperature
}
void dht_read()
{
hum=0;
#asm("cli")
hum = read_dht_hum();
#asm("sei")
if(hum==1)
{
hm = (short) data[0] * 256 + data[1];
hm = hm/10;
t = (short) data[2] * 256 + data[3];
t = t/10;
}
}
char DS1302_BCD_To_Bin8(char data)
{
unsigned char result;
result = ((data>>4) & 0b00000111);
data &= 0x0F;
data = data + result*10;
return data;
}
char DS1302_Bin8_To_BCD(char data)
{
char nibh;
char nibl;
nibh=data/10;
nibl=data-(nibh*10);
return((nibh<<4)|nibl);
}
void write(unsigned char cmd)
{
unsigned char i=0;
CE=1;//СE=1
delay_us(5);
DDR_IO=1;//устанавливаем на выход
for(i=0; i<8; i++)//передаем биты
{
if((cmd&(1<<i)) == 1<<i)
{
PORT_IO=1;
}
else
{
PORT_IO=0;
}
SCLK=1;//устанавливаем синхроимпульс и по фронту бит записывается в часы
delay_us(30);
PORT_IO=0;//сбрасываем IO и SCLK
SCLK=0;
}
delay_us(10);
}
void end_write_data()
{
CE=0;//на CE устанавливаем "0"
}
//чтение данных
unsigned char read()
{
unsigned char i=0;
unsigned char readbyte=0;//сюда будем читать
DDR_IO=0;//устанавливаем на вход
//читаем побитно, если "1" записываем "1" в соответствующий бит, также с "0"
for(i=0; i<8; i++)
{
SCLK=1;
if(PIN_IO==0)
{
readbyte &= ~(1<<i);
}
else
{
readbyte |= 1<<i;
}
delay_us(30);
SCLK=0;
delay_us(15);
}
CE=0;
delay_us(5);
return readbyte;
}
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & ((1<<FE)| (1<<UPE) | (1<<DOR)))==0)
{
if (data=='#') // CR
{
work=1;
}
else rx_buffer[rx_index]=data;
// printf("%d",rx_buffer[rx_index]);
if (++rx_index == RX_BUFFER_SIZE) rx_index=0;
}
if (work)
{
work=0;
//printf("%d",rx_buffer[0]);
switch (rx_buffer[0])
{
case 1 : {modefan=rx_buffer[1]; pwmfan=rx_buffer[2]; printf("SET PWM=%d Mode=%d",pwmfan,modefan); break;}
case 2 :
{
tmp = (DS1302_Bin8_To_BCD(rx_buffer[1]) | 0 | 0);
write(0x84);
write(tmp);
end_write_data();
printf("SET HOUR=%d;",rx_buffer[1]);
write(0x82);
write(DS1302_Bin8_To_BCD(rx_buffer[2]));
end_write_data();
printf("SET MINUTE=%d;",rx_buffer[2]);
write(0x80);
write(DS1302_Bin8_To_BCD(rx_buffer[3]));
end_write_data();
printf("SET SECOND=%d;",rx_buffer[3]);
break;
}
case 3 : {ld=rx_buffer[1]; printf("SET LD=%d",ld); break;}
}
}
}
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
TCNT1H=0xFCE0 >> 8;
TCNT1L=0xFCE0 & 0xff;
takt++;
if (takt==0)
{
bfan=pwmfan;
FAN=1;
}
if (bfan==takt) FAN=0;
//pwmfan=0;
if (modefan==0) {if (PIN_ATX==1) pwmfan=map(t,min_temp,max_temp,1,255); else pwmfan=0;}
if((h>=0)&&(h<ld)) LED=0; else LED=1;
}
void main(void)
{
DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (0<<DDB4) | (1<<DDB3) | (0<<DDB2) | (1<<DDB1) | (1<<DDB0);
PORTB=(0<<PORTB5)| (1<<PORTB3);;
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (1<<DDC3) | (1<<DDC2) | (0<<DDC1) | (1<<DDC0);
PORTC=(1<<PORTC0)| (1<<PORTC2)|(1<<PORTC3);
DDRD=(1<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD5);
// USART initialization
// USART Baud Rate: 300
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x06;
UBRRL=0x82;
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
TCNT1H=0xFC;
TCNT1L=0xE0;
TIMSK= (1<<TOIE1);
/*
Запись времени в часы
//tmp=0x1;
write(0x84);
write(tmp);
end_write_data();
write(0x82);
write(DS1302_Bin8_To_BCD(57));
end_write_data();
write(0x80);
write(DS1302_Bin8_To_BCD(1));
end_write_data();
*/
#asm("sei")
while (1)
{
delay_ms(10000);
dht_read();
write(0x85);
h = read();
h = h & 0b00111111;
h = DS1302_BCD_To_Bin8(h);
write(0x83);
m=DS1302_BCD_To_Bin8(read());
write(0x81);
s=DS1302_BCD_To_Bin8(read());
send(h);
send(m);
send(s);
send(t);
send(hm);
send3(pwmfan);
// send_data();
}
}
#include <stdio.h>
#include <delay.h>
#define CE PORTD.7
#define SCLK PORTB.1
#define PORT_IO PORTB.0
#define DDR_IO DDRB.0
#define PIN_IO PINB.0
#define DHT_PORT PORTC.1
#define DHT_DDR DDRC.1
#define DHT_PIN PINC.1
#define LED PORTB.3
#define FAN PORTB.5
#define PIN_ATX PIND.5 //5 Volt
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
unsigned char rx_index=0;
short hm=0;
short t=0;
//unsigned long takt0,work;
bit hum=0;
bit work=0;
eeprom char ld=2;
unsigned char h,m,s,tmp;
// unsigned char ld=2;
bit modefan=0;
unsigned char data[5]={0,0,0,0,0};
unsigned char pwmfan=255;
const char min_temp=23;
const char max_temp=35;
unsigned char takt,bfan;
short map(short x, short in_min, short in_max, short out_min, short out_max)
{
if (x<=in_min) return out_min;
else if ((x+5)>=in_max) return out_max;
else return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
void send(unsigned char c)// Отправка числа от 00 до 99
{
c=c%100;
putchar(c/10+'0');
putchar(c%10+'0');
}
void send3(unsigned char c)// Отправка числа от 000 до 255
{
c=c%1000;
putchar(c/100+'0');
c=c%100;
putchar(c/10+'0');
putchar(c%10+'0');
}
int read_dht_hum() //функция чтения данных датчика
{
unsigned char i,j;
DHT_DDR=1;
DHT_PORT=0;
delay_ms(20);
DHT_PORT=1;
DHT_DDR=0;
delay_us(50);
if (DHT_PIN==1)
{
return 0;
}
delay_us(80);
if (DHT_PIN==0)
{
return 0;
}
while (DHT_PIN==1);
for (j=0; j<5; j++)
{
data[j]=0;
for(i=0; i<8; i++)
{
while (DHT_PIN==0);
delay_us (30);
if (DHT_PIN==1)
data[j]|=1<<(7-i);
while (DHT_PIN==1);
}
}
return 1;
//DHT22 data[0]-data[1]-humidity, data[2]-data[3]-temperature
}
void dht_read()
{
hum=0;
#asm("cli")
hum = read_dht_hum();
#asm("sei")
if(hum==1)
{
hm = (short) data[0] * 256 + data[1];
hm = hm/10;
t = (short) data[2] * 256 + data[3];
t = t/10;
}
}
char DS1302_BCD_To_Bin8(char data)
{
unsigned char result;
result = ((data>>4) & 0b00000111);
data &= 0x0F;
data = data + result*10;
return data;
}
char DS1302_Bin8_To_BCD(char data)
{
char nibh;
char nibl;
nibh=data/10;
nibl=data-(nibh*10);
return((nibh<<4)|nibl);
}
void write(unsigned char cmd)
{
unsigned char i=0;
CE=1;//СE=1
delay_us(5);
DDR_IO=1;//устанавливаем на выход
for(i=0; i<8; i++)//передаем биты
{
if((cmd&(1<<i)) == 1<<i)
{
PORT_IO=1;
}
else
{
PORT_IO=0;
}
SCLK=1;//устанавливаем синхроимпульс и по фронту бит записывается в часы
delay_us(30);
PORT_IO=0;//сбрасываем IO и SCLK
SCLK=0;
}
delay_us(10);
}
void end_write_data()
{
CE=0;//на CE устанавливаем "0"
}
//чтение данных
unsigned char read()
{
unsigned char i=0;
unsigned char readbyte=0;//сюда будем читать
DDR_IO=0;//устанавливаем на вход
//читаем побитно, если "1" записываем "1" в соответствующий бит, также с "0"
for(i=0; i<8; i++)
{
SCLK=1;
if(PIN_IO==0)
{
readbyte &= ~(1<<i);
}
else
{
readbyte |= 1<<i;
}
delay_us(30);
SCLK=0;
delay_us(15);
}
CE=0;
delay_us(5);
return readbyte;
}
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & ((1<<FE)| (1<<UPE) | (1<<DOR)))==0)
{
if (data=='#') // CR
{
work=1;
}
else rx_buffer[rx_index]=data;
// printf("%d",rx_buffer[rx_index]);
if (++rx_index == RX_BUFFER_SIZE) rx_index=0;
}
if (work)
{
work=0;
//printf("%d",rx_buffer[0]);
switch (rx_buffer[0])
{
case 1 : {modefan=rx_buffer[1]; pwmfan=rx_buffer[2]; printf("SET PWM=%d Mode=%d",pwmfan,modefan); break;}
case 2 :
{
tmp = (DS1302_Bin8_To_BCD(rx_buffer[1]) | 0 | 0);
write(0x84);
write(tmp);
end_write_data();
printf("SET HOUR=%d;",rx_buffer[1]);
write(0x82);
write(DS1302_Bin8_To_BCD(rx_buffer[2]));
end_write_data();
printf("SET MINUTE=%d;",rx_buffer[2]);
write(0x80);
write(DS1302_Bin8_To_BCD(rx_buffer[3]));
end_write_data();
printf("SET SECOND=%d;",rx_buffer[3]);
break;
}
case 3 : {ld=rx_buffer[1]; printf("SET LD=%d",ld); break;}
}
}
}
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
TCNT1H=0xFCE0 >> 8;
TCNT1L=0xFCE0 & 0xff;
takt++;
if (takt==0)
{
bfan=pwmfan;
FAN=1;
}
if (bfan==takt) FAN=0;
//pwmfan=0;
if (modefan==0) {if (PIN_ATX==1) pwmfan=map(t,min_temp,max_temp,1,255); else pwmfan=0;}
if((h>=0)&&(h<ld)) LED=0; else LED=1;
}
void main(void)
{
DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (0<<DDB4) | (1<<DDB3) | (0<<DDB2) | (1<<DDB1) | (1<<DDB0);
PORTB=(0<<PORTB5)| (1<<PORTB3);;
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (1<<DDC3) | (1<<DDC2) | (0<<DDC1) | (1<<DDC0);
PORTC=(1<<PORTC0)| (1<<PORTC2)|(1<<PORTC3);
DDRD=(1<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD5);
// USART initialization
// USART Baud Rate: 300
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x06;
UBRRL=0x82;
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
TCNT1H=0xFC;
TCNT1L=0xE0;
TIMSK= (1<<TOIE1);
/*
Запись времени в часы
//tmp=0x1;
write(0x84);
write(tmp);
end_write_data();
write(0x82);
write(DS1302_Bin8_To_BCD(57));
end_write_data();
write(0x80);
write(DS1302_Bin8_To_BCD(1));
end_write_data();
*/
#asm("sei")
while (1)
{
delay_ms(10000);
dht_read();
write(0x85);
h = read();
h = h & 0b00111111;
h = DS1302_BCD_To_Bin8(h);
write(0x83);
m=DS1302_BCD_To_Bin8(read());
write(0x81);
s=DS1302_BCD_To_Bin8(read());
send(h);
send(m);
send(s);
send(t);
send(hm);
send3(pwmfan);
// send_data();
}
}
_________________
Строй-репорт. Гроубокс в рабочем системнике.
Гроу-репорт в рабочем системнике. Lemon Skunk.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Цитата:
Согласен, но в моих условиях нужен 100% стелс.
Вынимаешь все внутренности, покупаешь Raspberri Pi, размещаешь внутри системника, выводишь на заднюю стенку системника все порты - вуаля, имеем целый системник места и при этом рабочая машина.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Strawberry [26.07.17 16:27] писал(а):
Цитата:
Согласен, но в моих условиях нужен 100% стелс.
Вынимаешь все внутренности, покупаешь Raspberri Pi, размещаешь внутри системника, выводишь на заднюю стенку системника все порты - вуаля, имеем целый системник места и при этом рабочая машина.
Поясню почему так не выйдет:
1. Машина рабочая, я работаю в довольно ресурсо-ёмких программах
2. Мой папа программист инженер, он сразу заметит, что я перешёл на Линукс+ на минимальный. Для отца это сразу броситься в глаза, будут лишние вопросы.
_________________
Строй-репорт. Гроубокс в рабочем системнике.
Гроу-репорт в рабочем системнике. Lemon Skunk.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Zumin,
Привет.
Что за ресурсоёмкие программы, которые не требуют дискретной видеокарты (судя по фотографии твоих потрохов системного блока)?
Почему бы не обратиться к таким решениям?
https://www.overclockers.ru/lab/85858/t ... ptane.html
Привет.
Что за ресурсоёмкие программы, которые не требуют дискретной видеокарты (судя по фотографии твоих потрохов системного блока)?
Почему бы не обратиться к таким решениям?
https://www.overclockers.ru/lab/85858/t ... ptane.html
_________________
Светильник на базе Cree СХВ3590,Светильник на базе плат от Castaman,Создание шкафа с максимальным КПД,Модернизация фильтровентиляционной системы шкафа (плоский фильтр, вентиляторы 12В, реобас),Устройство для круговой резки отверстий,Создание LED лампы с эффектом от ИК ,Создание канального вентилятора на базе компьютерного,Модернизация Quasar Board от Нуба,Организация подогрева тента на балконе 2.0,212 граммов с автомата,Экстрактор янтаря бутаном,Модернизация Quasar board 100 Elite V2 UV,Продление автономной работы вапорайзера
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Замечательный минимализм! Один вопрос как ты сделал плату?
_________________
И, пожалуйста, помните: мы - не юристы, правила - не УК, наказания раздают не святые.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Ёрш [16.08.17 19:50] писал(а):
Замечательный минимализм! Один вопрос как ты сделал плату?
Развёл в Sprint Layout, распечатал на лазерном принтере, утюгом перенёс тонер на текстолит, и вытравил в растворе персульфата аммония(можно травить в хлорном железе). Погугли технология ЛУТ.
_________________
Строй-репорт. Гроубокс в рабочем системнике.
Гроу-репорт в рабочем системнике. Lemon Skunk.
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
Бро, зачем тебе весь этот гимор с камерами
Ставь термостат с сенсором и мониторь через приложение ewelink
Ставь термостат с сенсором и мониторь через приложение ewelink
Заголовок сообщения: Re: Гроубокс в рабочем системнике (40х14х14) Автоматизация.
cm [17.07.17 16:41] писал(а):
с этим светом лучше и не начинать, смысл 2х-3х месяцев ебли из-за 7 грамм
имхо, куда проще выкинуть все внутренности и спрятать где-нибудь в шкафу,
и полностью освоить системник
имхо, куда проще выкинуть все внутренности и спрятать где-нибудь в шкафу,
и полностью освоить системник
Плюсую Положиль материнку с хардом куданибудь за стол , а весь системник выделить под гроув
[ Сообщений: 17 ]
Похожие топики | Автор | Ответы | Просмотры | Последнее сообщение | ||
---|---|---|---|---|---|---|
Бокс в системнике из подножного корма
в форуме Строй-репорт |
10 |
1828 |
03.06.22 23:46 |
|||
Автоматизация PH
в форуме Я спросил у ясеня... |
9 |
366 |
05.12.20 18:24 |
|||
Стелсгров в системнике для мамы двоих детей
в форуме Я спросил у ясеня... |
67 |
1473 |
19.10.20 23:49 |
|||
Автоматизация полива
в форуме Я спросил у ясеня... |
27 |
880 |
27.10.23 22:39 |
|||
Мой первый гров в системнике. Семка Тута с барыжки! Эсл + Led
в форуме Я спросил у ясеня... |
68 |
1894 |
26.07.20 01:57 |
Журнал вахтёра |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5 |
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения