close

Вход

Забыли?

вход по аккаунту

Смирнов Владислав Александрович. Разработка распределенной системы контроля для фруктового сада

код для вставки
Графическая часть проекта состоит из следующих чертежей:
Изм. Лист
1.Структурная схема автоматизированной системы
А1.
2.Принципиальная электрическая схема системы
А1.
3.Алгоритм работы системы в виде блок-схемы
А0.
4.Разработка программного обеспечения
А1.
5.Настройка и тестирование системы
А1.
6.Графики показателей эффективности
А1.
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной
системы контроля для фруктового сада»
Лист
5
1.Спроектировать и собрать аппаратный комплекс распределенной
системы контроля.
2.Разработать программное обеспечение для распределенной системы
контроля.
3.Провести тестирование и анализ полученной системы.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной
системы контроля для фруктового сада»
Лист
9
посадку низкорослых (карликовых) и колоновидных плодоносников. При
обеспечении правильного ухода и применении капельного полива, а также
качественных удобрений, посадка начнет окупаться с третьего года жизни.
Для быстрой окупаемости финансов, сад должен соответствовать
следующим требованиям:
1.Плодоносить регулярно и приносить большой урожай.
2.Плоды должны иметь высокие вкусовые показатели, выглядеть
привлекательно, легко переносить транспортировку без потери эстетического
вида.
3.Деревья должны быть устойчивыми к болезням и вредителям.
Сад интенсивного плодоношения активно развивается только на
качественном плодородном грунте. Дабы ускорить развитие плодоносников,
перед посадкой проводится ряд работ:
1.Земля вспахивается и сдабривается специальными удобрениями
(органикой, минералами). При необходимости проводится известкование для
снижения кислотности почвы.
2.Устанавливается дренаж, а также система для полива растений.
3.Если грунтовые воды располагаются слишком близко к поверхности
земли, растения высаживаются на холмики. Поэтому проводится подъем
уровня грунта (создаются искусственные холмы или вся площадь будущего
сада приподнимается - засыпается плодородной почвой).
Правила ухода за интенсивно растущими садами:
1.Два вида обрезки – формирующая и санитарная. Формирующая
обрезка предназначена для формирования правильной формы кроны. Она
проводится для всех видов растений: будь то интенсивный сад груши, сливы,
яблони или другого вида деревьев. Если правильно расположить растения
относительно
друг
друга
(выдержать
расстояния
между
ними)
и
сформировать крону, это даст возможность «убить одновременно двух
зайцев»: обеспечить относительно простой уход за садом (ввиду его низкого
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
11
роста) и вырастить больше урожая на каждом плодоноснике (за счет большой
площади крон).
2.Прополка сорняков и удаление поросли. В высокой траве заводится
главный враг молодой посадки – тля. Кроме того, поросль «убивает»
плодоносники. Особенно важно удаление поросли возле штамбов, если вы
выращиваете интенсивный черешневый сад, сливовый или вишневый.
Косточковые часто погибают по причине образования «отростков» от
корневой системы – они вытягивают влагу и полезные микроэлементы,
«предназначенные» для дерева, чем ухудшают его развитие и угнетают рост
молодых побегов.
3.Внесение
удобрений.
Состав
сдабривающих
веществ
должен
полностью покрывать дефицит микроэлементов в почве. Для определения
дефицитных составляющих почвы проводится анализ грунта.
4.Своевременный полив (от количества влаги зависит не только
развитие деревьев, но и «налив плодов»). Чрезмерно заливать молодняк не
рекомендуется, но и дефицит воды приведет к негативным последствиям –
сад начнет увядать [1].
В большинстве интенсивных садов применяется орошение, в основном
капельное, т.к. эта система наиболее экономична по расходу воды. Отказ от
гидрантов обусловлен еще тем, что дождевание предусматривает смачивание
листовой поверхности, что способствует развитию парши и удорожанию
системы защиты растений. На поливных участках процент выхода плодов
высших товарных качеств, а цена на них возрастает до 50%, достигает 97%.
Особенно разница наблюдается в засушливые годы [2].
Все вышеописанные процедуры и сроки их проведения прописываются
в технологической карте.
1.1
Актуальность автоматизированной системы
Так как современное садоводство само по себе достаточно затратно, то
необходимо минимизировать издержки и риски при возведении садов. Одним
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
12
из видов издержек являются затраты на полив: саженцам необходим полив
для получения необходимых веществ, а так же он спасает растения от
внезапной засухи и от непредвиденных заморозков.
Также, среди пунктов, касающихся требованиям для сада о быстрой
окупаемости, стоит выделить пункт о том, что плоды должны выглядеть
привлекательно и переносить транспортировку без потери этого вида, а это
значит, что необходим процесс сортировки. Однако и на этот процесс можно
повлиять при помощи систем автоматики, автоматизировав сортировку
плодов по размерам и оценку их внешнего вида, тем самым уменьшив
трудоемкость процесса сортировки.
Таким
образом,
предпосылки
для
при
анализе
создания
объекта
распределенной
автоматизации
системы
имеются
контроля
для
фруктового сада, данные которой можно использовать для существующих
систем интенсивных садов.
Разрабатываемая система позволит:
1.Собирать
такие
климатические
данные
близ
саженцев
как:
температура воздуха, влажность почвы, влажность воздуха, уровень
освещения.
Первые
два
параметра
могут
быть
использованы
для
оптимизации систем полива, в то время как остальные, вместе с первыми,
могут быть использованы для сбора статистических данных.
2.Оптимизировать процесс сортировки плодов при помощи программы
оценки их внешнего вида по характерной цветовой гамме, а так же
программы их измерения.
Таким образом, разрабатываемая система при внедрении на объект
автоматизации должна снизить затраты на полив, а так же уменьшить
затраты труда на процесс сортировки.
1.2
Математическое
моделирование
процесса
работы
объекта
автоматизации
Для определения оптимального количества воды на полив можно
сделать математическую модель режима орошения сада.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
13
Для посадки интенсивного яблоневого сада подойдет тип суглинистой
почвы. Такой тип почвы богат минералами, имеет оптимальную рыхлую
структуру и хорошо пропускает влагу и воздух, что способствует
благоприятному питанию корней деревьев.
Суглинистая
почва
обладает
в
среднем
следующими
характеристиками: плотность – 1,2 г/см3; наименьшая влагоемкость ~30%.
На объем необходимой воды также влияет глубина промачиваемого
слоя, значения которой выбирают исходя из глубины, на которую уходят
корни деревьев. Так как корневая система яблонь интенсивного сада
располагается в верхнем слое почвы, то это значение равно 0,2 метра.
Объем воды m м3/га, необходимой для полива, рассчитывается по
формуле 1 и зависит от плотности почвы ρ г/см3, глубины промачиваемого
слоя h м, а так же наименьшей влагоемкости почвы ɷнв % и предполивной
влажности почвы ɷпп %.
m=100*ρ*h*(ɷнв-ɷпп).
(1).
Данную формулу обычно используют для определения поливных норм
для растений, однако она определяет необходимый максимум поливной
нормы.
Для нахождения оптимальной поливной нормы необходимо учесть
область распространения влаги и снижения ее потерь на инфильтрацию в
грунтовый поток(2).
ɷвп=0,95 ɷнв.
(2).
Данный коэффициент учитывает 5% потерь влаги, которые уходят в
грунтовый поток, если определять поливные нормы исходя из верхнего
предела влагоемкости почвы.
Подкорректировав формулу 1 с учетом коэффициента верхнего порога
увлажнения, который учитывает возможные потери, получим уравнение (3),
которое имеет вид:
m=100*ρ*V*(ɷвп-ɷпп)= 100*ρ*0,4п*h2*(ɷнв-ɷпп)= 100*ρ*h*
*(0,95ɷнв-ɷпп)=24*(0,95ɷнв-ɷпп)
Изм. Лист
№ докум.
Подпись Дата
(3).
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
14
Подставив все известные величины и выразив значения предполивной
влажности в %НВ, получим следующую зависимость норм оросительного
полива от предполивной влажности почвы (таблица 1).
Таблица 1 – Зависимость норм оросительного полива от величины
предполивной влажности
Величина предполивной Нормы оросительного
влажности почвы, %НВ
полива, м3/га
0,1
612
0,15
576
0,2
540
0,25
504
0,3
468
0,35
432
0,4
396
0,45
360
0,5
324
0,55
288
0,6
252
0,65
216
0,7
180
0,75
0,8
0,85
0,9
144
108
72
36
Для определения времени полива можно воспользоваться формулой
расхода воды и выразить из нее время (4).
E=m/t;
t=m/Е.
(4).
t – время полива ч., m – объем воды л., E – расход воды л/ч.
Для капельного полива интенсивного сада яблонь используются
капельницы с расстоянием 0,5м между ними и расходом воды 1,2 л/час. Так
как нормы капельного полива рассчитаны в м3/га, то необходимо перевести
их в величину, подходящую для формулы 6, а именно в л/м 2. Таким образом,
мы получаем коэффициент перевода k, равный 0,1 (1м3/га=0,1л/м2).
Подставив формулу 2 в уравнение 3, получим уравнение зависимости
времени полива от предполивной влажности (5).
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
15
t=24*(0,95ɷнв-ɷпп)*k/E=2*(28.5- ɷпп)
(5).
Таким образом, из данной модели можно определить количество воды,
которое необходимо для полива сада, а так же время, необходимое для этого.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
16
(SRAM) и 1 Кб EEPROM.(которая читается и записывается с помощью
библиотеки EEPROM).
Каждый из 14 цифровых выводов Uno может настроен как вход или
выход. Выводы работают при напряжении 5 В. Каждый вывод имеет
нагрузочный резистор (по умолчанию отключен) 20-50 кОм и может
пропускать до 40 мА.
Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для
получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к
соответствующим
выводам
микросхемы
последовательной
шины
ATmega8U2 USB-to-TTL.
ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с
разрешением 8 бит при помощи функции analogWrite().
На платформе Uno установлены 6 аналоговых входов (обозначенных
как A0 .. A5), каждый разрешением 10 бит (т.е. может принимать 1024
различных значения). Стандартно выводы имеют диапазон измерения до 5 В
относительно земли, тем не менее имеется возможность изменить верхний
предел посредством вывода AREF и функции analogReference().
На платформе Arduino Uno установлено несколько устройств для
осуществления связи с компьютером, другими устройствами Arduino или
микроконтроллерами.
ATmega328
поддерживают
последовательный
интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX) и 1 (TX).
Установленная на плате микросхема ATmega8U2 направляет данный
интерфейс через USB, программы на стороне компьютера "общаются" с
платой через виртуальный COM порт. Прошивка ATmega8U2 использует
стандартные драйвера USB COM, никаких сторонних драйверов не
требуется,
но
ArduinoUNO.inf.
на
Windows
для
подключения
потребуется
файл
Мониторинг последовательной шины (Serial Monitor)
программы Arduino позволяет посылать и получать текстовые данные при
подключении к платформе. Светодиоды RX и TX на платформе будут мигать
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
18
при передаче данных через микросхему FTDI или USB подключение (но не
при использовании последовательной передачи через выводы 0 и 1).
Имеется возможность не использовать загрузчик и запрограммировать
микроконтроллер через выводы ICSP [4]
В таблице 2 приведены технические характеристики контроллера
Arduino UNO.
Таблица 2 - Технические характеристики контроллера Arduino UNO
1.
Микроконтроллер
ATmega328
Рабочее напряжение
5В
Входное напряжение (рекомендуемое)
7-12В
Входное напряжение (предельное)
6-20 В
Цифровые Входы/Выходы
14
Аналоговые входы
6
Постоянный ток через вход/выход
40 мА
Постоянный ток для вывода 3.3 В
50 мА
Флеш-память
32 Кб
ОЗУ
2 Кб (ATmega328)
EEPROM
1 Кб (ATmega328)
Тактовая частота
16 МГц
Датчик влажности и температуры воздуха DHT11 (рисунок 3).
Рисунок 3 – Внешний вид датчика DHT11
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
19
Датчик DHT11 является цифровым датчиком для определения
показаний температуры и влажности воздуха. Имеет три вывода: питание,
земля,
и
дискретный
вывод
данных,
также
на
плате
находится
подтягивающий резистор 10кОм Данный датчик совместим с платой Arduino
UNO и управляется через специальную библиотеку.[5]
В таблице 3 приведены технические характеристики датчика DHT11.
Таблица 3 - Технические характеристики датчика DHT11
2.
Напряжение питания
3,5 – 5,5В
Потребляемый ток
0,3мА
Диапазон измерения температуры
0о - +50оС
Макс. погр. измерений температуры
2оC
Диапазон измерения влажности
20-95%
Макс. погр. измерений влажности
5%
Расстояние между выводами
2.54мм
Время считывания данных
1сек
Датчик влажности почвы (рисунок 4).
Рисунок 4 – Внешний вид датчика влажности почвы
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
20
Модуль состоит из двух частей: контактного щупа YL-69 и датчика
YL-38, в комплекте идут провода для подключения.. Между двумя
электродами щупа YL-69 создаѐтся небольшое напряжение. Если почва
сухая, сопротивление велико и ток будет меньше. Если земля влажная —
сопротивление меньше, ток — чуть больше. По итоговому аналоговому
сигналу можно судить о степени влажности. Щуп YL-69 соединен с
датчиком YL-38 по двум проводам.
Датчик YL-38 построен на основе компаратора LM393, который выдает
напряжение на выход D0 по принципу: влажная почва – низкий логический
уровень, сухая почва – высокий логический уровень. Уровень определяется
пороговым
значением,
которое
можно
регулировать
с
помощью
потенциометра. На вывод A0 подается аналоговое значение, которое можно
передавать в контроллер для дальнейшей обработки, анализа и принятия
решений.[6]
В
таблице
4
приведены
технические
характеристики
датчика
влажности почвы.
Таблица 4 - Технические характеристики датчика влажности почвы
3.
Напряжение питания
3,3-5В
Потребляемый ток
35мА
Данные на выходе
Цифровые и аналоговые
Размер модуля
16х30мм
Размер щупа
20х60мм
Фоторезистор MLG5516B (рисунок 5).
Рисунок 5 – Внешний вид фоторезистора
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
21
Фоторезистор — компонент, меняющий сопротивление в зависимости
от количества падающего на него света. С его помощью можно измерять
значения уровня освещения как в помещении так и на открытом
пространстве.
В таблице 5 приведены технические характеристики фоторезистора
MLG5516.
Таблица 5 - Технические характеристики фоторезистора MLG5516
4.
Допустимое напряжение
100В
Допустимая температура
-30 - +70оС
Сопротивление при 10люкс
5-10кОм
Сопротивление при 100люкс
1-2кОм
Сопротивление в темноте
0,5Мом
Макс чувствительность при
540нм
Камера.
Для системы, работающей в реальном времени, подойдет любая
камера, которая подключается по USB к ПК и может снимать в режиме
реального времени. Такая камера должна выдавать хорошую и четкую
картинку с хорошей цветопередачей и явно различимыми контурами
объектов.
В данной системе используется камера Logitech "c310" (рисунок 6)
Рисунок 6 – Внешний вид камеры Logitech "c310"
В таблице 6 приведены технические характеристики камеры Logitech
c310.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
22
Таблица 6 - Технические характеристики камеры Logitech c310
5.
Разрешение матрицы
5МП
Автофокус
Нет
Вспышка
Нет
Максимальное разрешение
1280х720 пикселей
Персональный компьютер.
Для работы системы необходим персональный компьютер, на котором
будут выполняться программы приема-передачи данных и машинного
зрения. Таким образом, ПК должен иметь характеристики, необходимые для
установки пакетов LabView.
В таблице 7 приведены технические характеристики ПК.
Таблица 7 - Технические характеристики ПК
Pentium4M и выше(х32),
Процессор
Pentium4G1 и выше (х64)
или эквивалентные
6.
Оперативная память
1ГБ
Разрешение экрана
1024х768 пикселей
ОС
Windows10/8.1/8/7 SP1 (х32 или х64)
Свободное место на диске
5ГБ
Реле songle srd-05vdc (рисунок 7).
Рисунок 7 – Реле songle srd-05vdc
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
23
Реле – элемент, который при воздействии на него сигнала управления
способен размыкать и замыкать электрический контур, тем самым
осуществляя процесс управления.
В данной системе реле используется для управления клапаном системы
полива и заслонкой в системе сортировки яблок.
В таблице 8 приведены технические характеристики реле songle srd05vdc.
Таблица 8 - Технические характеристики реле songle srd-05vdc
Управляющее напряжение
Максимальный
переменный
5В
ток
и 10А/250В
ток
и 10А/30В
напряжение для контактов реле
Максимальный
постоянный
напряжение для контактов реле
Все
вышеперечисленные
компоненты
связаны
между
собой
следующим образом: датчики YL, DHT11, MLG5516 и реле songle srd-05vdc
подключаются к плате Arduino UNO и обмениваются с ней данными. Данный
комплекс устройств формирует подсистему локального полива и сбора
климатических данных. Сеть таких подсистем формирует распределенную
систему полива и мониторинга климатических данных, которая подключена
к очередной плате Arduino UNO.
Данная плата является посредником между распределенной системы
полива и сбора локальных данных и ПК. Данные с ПК передаются на эту
плату, после чего они обрабатываются, и формируется запрос на полив или
передачу данных для распределенной системы. Так же к этой плате
подключено реле songle srd-05vdc, которое управляет перегородкой для
отбраковки плодов при сортировке. Условия срабатывания реле также
формирует ПК.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
24
ПК является центральным звеном и посылает запрос о передаче данных
и запрос на полив для распределенной системы. Так же к нему подключена
камера Logitech "c310", которая отправляет данные, использующиеся для
формирования условий срабатывания сортирующей перегородки.
Вышеописанная связь компонентов изображена на структурной схеме
(рисунок 8).
Рисунок 8 – Структурная схема системы
1.3
Разработка принципиальной электрической схемы автоматизированной
системы
Центральным устройством в данной схеме является персональный
компьютер, который питается от сети переменного тока ~220В с частотой
50Гц. К нему подключены два устройства: камера Logitech "c310" и плата
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
25
контроллера Arduino UNO, которые питаются от него напряжением 5В
постоянного тока по USB.
К плате контроллера Arduino UNO подключены 3 другие платы Arduino
UNO и реле songle srd, которое имеет питание 5В.
К каждой из трех оставшихся плат Arduino UNO подключены: датчики
влажности и температуры воздуха DHT11, датчики влажности почвы с
контактными щупами YL-38 и YL-69, фоторезисторы R1, R3, R5 и реле
songle srd. Все устройства имеют напряжение питания 5В постоянного тока,
которое получают от платы контроллера. Фоторезисторы MLG5516
соединены с «землей» через подтягивающие резисторы R2, R4 и R6
номиналом 10кОм. Сами платы питаются от батарей GB1, GB2 и GB3
напряжением 9В.
Данная
связь
компонентов
отображена
на
принципиальной
электрической схеме (рисунок 9).
Изм. Лист
Рисунок 9 – Принципиальная электрическая схема системы
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
26
№ докум.
Подпись Дата
1.4
Разработка функциональной схемы автоматизированной системы
На функциональной схеме автоматизации (ФСА) (рисунки 10 – 12)
изображено расположение датчиков в системе.
В подсистеме 1, являющимся устройством сбора климатических
данных, расположены следующие устройства: реле songle srd (позиция 1-1),
управляющий клапаном полива, датчик влажности почвы YL-69 (позиция 21), датчик влажности и температуры воздуха DHT11 (позиции 3-1 и 4-1
соответственно) и датчик освещенности MLG5516 (позиция 5-1). Данные с
этих датчиков приходят на плату контроллера 1, который регистрирует
показания с них и подает сигнал на реле. Данные устройства дублируются
для 2 и 3 подсистем.
В подсистеме 4, представляющим из себя участок для съемки на
конвейерной ленте, расположена камера Logitech С310 (позиция 1-2) и реле
songle srd (позиция 2-2), управляющее двигателем заслонки М1 на конвейере.
Камера подключена к стационарному персональному компьютеру, который
регистрирует данные с нее, в то время как реле подключено к контроллеру 4,
который формирует сигнал управления.
Рисунок 10 – Операционный пульт функциональной схемы автоматизации
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
27
Рисунок 11 – Подсистемы 1-3 функциональной схемы автоматизации
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
28
Рисунок 12 – Подсистема 4 функциональной схемы автоматизации
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
29
1.5
Сборка аппаратного обеспечения
Аппаратное обеспечение для системы оценки внешнего вида плодов
состоит только из USB – камеры Logitech C310, которую достаточно
закрепить над ровной и однотонной поверхностью, на которой будут
располагаться фрукты, при помощи фиксатора, и ПК, на который будут
приходить данные с камеры.
С системой сбора климатических данных близ саженцев все немного
сложнее. Аппаратное обеспечение данной системы состоит из датчиков
DHT11, YL-69, MLG5516 и платы Arduino UNO. Все эти компоненты
должны находиться рядом с саженцами, то есть на улице. Однако у любого
из этих компонентов отсутствует влагоизоляция, что делает данную систему
уязвимой для дождей. Поэтому было принято решение о создании
специального защитного корпуса, в который можно будет поместить все
компоненты этой системы.
Данный корпус должен иметь вид небольшой коробочки для элементов
системы с прозрачной крышкой для возможности измерения уровня
освещенности, отверстием для вывода чувствительных элементов датчиков
DHT11 и YL-69, отверстием для USB провода, и небольшой подставки,
необходимой для расположения этой коробки на небольшом уровне над
землей.
Таким образом, корпус должен иметь следующий вид (рисунок 13) и
состоять из следующих элементов:
1.Крышка (рисунок 14).
2.Передняя стенка (рисунок 15).
3.Задняя стенка (рисунок 16).
4.Боковые стенки – подставки (рисунок 17).
5.Днище (рисунок 18).
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
30
Рисунок 13 – Внешний вид защитного корпуса
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
31
Рисунок 14 – Внешний вид крышки
Так как крышка должна быть прозрачной, то было принято решение
изготовить ее из оргстекла, толщиной 5 мм.
Данная
деталь
имеет
выступы
по
периметру
для
удобства
позиционирования и обеспечения наилучшей фиксации.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
32
Рисунок 15 – Внешний вид передней стенки
Данная деталь изготовлена из ДВП толщиной 3мм и имеет пазы для
позиционирования других деталей, а так же сквозное отверстие для USB
провода.
Рисунок 16 – Внешний вид задней стенки
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
33
Данная деталь идентична предыдущей, за исключением отсутствия
отверстия для USB кабеля
Рисунок 17 – Внешний вид боковой стенки – подставки
Как видно из названия, у этой детали две функции: первая – она
представляет собой боковую стенку, вторая – является ножкой – подставкой
для удержания всей конструкции на весу.
Данная деталь имеет пазы в верхней части для позиционирования
крышки, отверстия в центре для позиционирования днища и боковые пазы –
для передней и задней стенок. Изготавливается, так же как и две предыдущие
из ДВП толщиной 3мм в количестве двух штук
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
34
Рисунок 18 – Внешний вид днища
Данная деталь имеет те же размеры и форму, что и крышка, но
изготавливается из ДВП толщиной 3мм, так же как и большая часть корпуса.
В отличие от крышки, днище имеет сквозное отверстие по центру для
вывода чувствительных элементов датчиков DHT11 и YL-69
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
35
Для каждой из пяти деталей были изготовлены чертежи для их
изготовления. Все детали были изготовлены посредством из вырезания на
лазерном станке из ДВП толщиной 3 мм (для передней, задней и боковых
стенок, а так же днища) и оргстекла толщиной 5 мм (для крышки).
Ознакомиться с чертежами, для выяснения точных размеров и порядка
сборки, можно в приложении Г.
После изготовления всех деталей, был собран корпус (рисунки 19 – 21).
Все детали, изготовленные из ДВП, были дополнительно покрыты лаком, для
обеспечения
влагозащиты,
а
стыки
между
деталями
обработаны
влагостойким клеем.
Рисунок 19 – Внешний вид собранного корпуса
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
36
Рисунок 20 – Собранный корпус – вид снизу
Рисунок 21 – Собранный корпус - вид сверху
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
37
Рисунок 22 – Алгоритм работы программы сбора климатических данных
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
39
Работа программы начинается с выполнения команд, располагающихся
до основного рабочего цикла. Эти командами являются функции
инициализации портов и скорости передачи данных, а так же директивы
подключения библиотек.
Далее, при наличии питания, начинается основной цикл программы.
Сначала программа считывает показания датчиков температуры и влажности
воздуха, влажности почвы и уровня освещенности в их первоначальном виде,
после чего эти данные дешифруются (только в случае с датчиком DHT11, так
как он является цифровым). Следующим этапом эти данные преобразуются в
натуральные величины, данные полученные с датчика влажности почвы
используются для расчета длительности полива. Далее контроллер ожидает
команды на передачу данных и если получает ее, то выводит конечные
данные температуры воздуха, влажности воздуха, влажности почвы и
освещенности в последовательный порт. Также при получении запроса на
полив, программа открывает клапан капельницы на рассчитанное время.
Ниже представлен код программы, написанный в среде Arduino IDE, с
подробным описанием:
#include <SimpleDHT.h>
Данная директива позволяет компилятору подключить специальную
библиотеку для сбора данных с цифровых датчиков серии DHT.
int relPin = 3;
int pinDHT11 = 2;
Данными командами указываются номера дискретных входов, к
которым подключены реле songle-srd и датчик DHT11.
SimpleDHT11 dht11;
Данная команда является командой библиотеки SimpleDHT, которая
была подключена ранее, и необходима для указания типа используемого
датчика. В данном случае используется датчик DHT11, поэтому указывается
именно он.
byte temperature;
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
40
byte humidity;
Объявление переменных для записи температуры и влажности воздуха.
Типом данных является восьмибитное число, так как такой тип данных
необходим для библиотеки SimleDHT.
int YL69 = A0;
int MLG5516 = A1;
Указание номеров аналоговых входов для датчиков влажности почвы и
освещения соответственно.
int GroundHumidity;
int Light;
int t;
Объявление переменных для записи показаний датчиков влажности
почвы, освещения и рассчитанного времени соответственно. Тип данных –
целое число.
void setup() {
Данная функция определяет порядок команд, которые выполняются
перед стартом основной части программы.
pinMode(relPin, OUTPUT);
Данная команда переводит дискретный порт, к которому подключено
реле в режим вывода данных.
Serial.begin(9600);}
Инициализация последовательного соединения и установка скорости
передачи данных для последовательного порта в бит/сек.
void loop() {
Функция, определяющая порядок выполнения команд основной части
программы. Команды, записанные в данной функции, вызываются циклично,
пока подается питание на плату.
dht11.read(pinDHT11, &temperature, &humidity, NULL);
Данная команда относится к библиотеке SimpleDHT и производит
считывание, дешифровку, преобразование и запись данных, полученных с
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
41
датчика DHT11 в соответствующие переменные. Таким образом, теперь в
этих переменных хранятся значения температуры воздуха в градусах по
Цельсию и влажность воздуха в процентном соотношении.
GroundHumidity = map(analogRead(YL69),1022,344,0,100);
Данная команда считывает, масштабирует, инвертирует и записывает
значение
влажности
почвы
в
соответствующую
переменную.
При
масштабировании указывается минимальное и максимальное значения
датчика. Так как датчик измеряет сопротивление между контактами, то
наименьшей влажности соответствуют наибольшие показания датчика и
наоборот. При масштабировании, в качестве максимума использовались
показания датчика, завернутого в сухую салфетку (имитация абсолютно
сухой почвы), а в качестве минимума – показания датчика, завернутого в
салфетку, пропитанную водой (влажность близка к 100%). Таким образом,
максимумом является показание 1022, а минимумом – 344, которые
масштабируются от 0 до 100 (%). Инвертирование происходит вследствие
того, что
в качестве
максимального
показания
обозначается
0,
а
минимального – 100.
Light = analogRead(MLG5516);
Данная команда позволяет записать значения освещенности в
соответствующую переменную. Значения колеблются в пределах 0..1023.
t=7200000*(28.5-GroundHumidity);
Расчет времени на которое должен открыться клапан при поливе по
формуле 7 с учетом перевода величины в миллисекунды.
if (Serial.read() == '?') {
Оператор условия. В данном случае, если в последовательный порт
подается «?», то выполняются следующие команды, записанные внутри
фигурных скобок:
Serial.print((int)temperature); Serial.print(",");
Serial.print((int)humidity); Serial.print(",");
Serial.print(GroundHumidity); Serial.print(","); ;
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
42
Serial.print(Light); Serial.println(".");}
Данными
командами
последовательный
порт
формируется
значения
строка,
переменных,
которая
хранящих
выводит
в
показания
температуры и влажности воздуха, влажности почвы и освещенности
соответственно. Все показания разделены запятыми, а в конце ставится
точка, после чего производится перенос на новую строку.
delay(1500);}
Приостанавливает выполнение программы на 1,5 секунды. Необходимо
для
формирования
показаний
датчика
DHT11,
который
производит
считывание раз в 1,5 секунды.
if (Serial.read() == '!') {
Если на последовательный порт поступит символ «!», то будут
выполняться команды, размещенные в фигурных скобках после этого
условия.
digitalWrite(relPin, HIGH);
Данная команда подает высокий сигнал (5В) на дискретный порт, к
которому подключено реле, тем самым переключая клапан в открытый
режим.
delay(t);
Задержка программы на время, на которое должен быть открыт клапан
для полива.
digitalWrite(relPin, LOW);
Подает низкий сигнал (0В) на дискретный порт с реле, тем самым
закрывая клапан и прекращая полив.
Ниже представлен результат компиляции программного кода в среде
Arduino IDE (рисунок 23).
Как можно видеть из рисунка 23, при компиляции программы не
возникает никаких ошибок. Сама программа занимает 4984 байт памяти
устройства из доступных 32256 байт, что занимает всего 15%.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
43
Рисунок 23 – Результат компиляции программы сбора данных и полива
1.6
Разработка программы обмена данными между распределенной
системой полива и сбора климатических данных и центральной программой
на ПК
Так же как и система сбора климатических данных, данная система
использует в качестве контроллера плату Arduino UNO, к которой
подключаются другие платы систем и реле, для управления двигателем
перегородки на конвейере для отбраковки плодов.
На рисунках 24 и 25 представлен алгоритм работы системы в виде
блок-схемы.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
44
Рисунок 24 – Алгоритм программы обмена данными часть 1
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
45
Рисунок 25 – Алгоритм программы обмена данными часть 2
Работа программы начинается с выполнения команд, располагающихся
до
основного
рабочего
цикла.
Эти
командами
являются
функции
инициализации портов и скорости передачи данных, а так же директивы
подключения библиотек.
Далее, при наличии питания, начинается основной цикл программы.
Сначала программа считывает данные с основного Serial порта. При наличии
данных, полученное сообщение разбивается на два запроса: первый запрос к
распределенной системе, второй для данной платы на запуск двигателя
заслонки на конвейере для осуществления отбраковки плода. После
получения символа конца сообщения начинается проверка запросов. Если
получен запрос на передачу данных, то программа передает этот запрос на
подсистему сбора данных, после чего принимает ответ и выводит
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
46
полученные данные обратно в Serial порт. Данный процесс повторяется и для
двух других подсистем сбора данных распределенной системы. При
получении запроса на полив, программа передает этот запрос на все
подсистемы, чтобы они осуществили полив исходя из своих расчетов. При
получении запроса на отбраковку плода, данная система включает реле,
которое управляет заслонкой на конвейере, для осуществления механической
отбраковки плода.
Ниже представлен код программы, написанный в среде Arduino IDE, с
подробным описанием:
#include <SoftwareSerial.h>
Подключение библиотеки, позволяющей программно реализовать
последовательный порт на любых цифровых выводах платы Arduino.
int relPin = 3;
Указание номера дискретного входа к которому подключено реле.
int val_1;
int val_2;
Объявление переменных для записи значений запросов из сообщения
от ПК.
SoftwareSerial portOne(10, 11);
SoftwareSerial portTwo(8, 9);
SoftwareSerial portThree(6, 7);
Создание программных портов для дискретных выводов 10 и 11 (порт
1), 8 и 9 (порт 2), 6 и 7 (порт 3).
void setup() {
pinMode(relPin, OUTPUT);
Перевод дискретного вывода, к которому подключено реле в режим
вывода данных.
Serial.begin(9600);
portOne.begin(9600);
portTwo.begin(9600);
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
47
portThree.begin(9600);}
Инициализация основного (Serial) последовательного порта и трех
программных с установлением скорости передачи данных.
void loop() {
Начало основного цикла программы.
while (Serial.available() > 0) {
Цикл с предусловием. В данном случае в качестве условия выступает
факт наличия данных на Serial порте. При выполнении условия выполняются
команды, обозначенные внутри фигурных скобок, следующих ща циклом.
val_1=Serial.parseInt();
val_2=Serial.parseInt();
Данными командами производится считывание данных до первого
знака препинания, после чего они записываются в соответствующие
переменные.
if (Serial.read() == ";"){
Если считывается символ «;», являющийся концом сообщения, то
выполняются команды, записанные внутри фигурных скобок.
if (val_1 == 0){
Если первое значение запроса равно нулю, то программа должна
провести обмен данными с системой сбора климатических данных. Для этого
используются команды, записанные внутри фигурных скобок.
portOne.println("?");
Вывод символа «?», который является запросом на передачу данных,
первой подсистеме через первый программный порт.
delay(1500);
Ожидание отклика.
portOne.listen();
Прослушивание первого программного порта для получения данных.
while (portOne.available() > 0) {
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
48
Цикл, действие внутри которого выполняется при наличие данных на
первом программном порте.
Serial.print("A1: ");
Вывод в Serial порт начало строки-ответа, в котором находится
информация о том, с какой подсистемы эти данные передаются.
Serial.write(portOne.read());
Вывод в Serial порт данных, полученных от первой подсистемы.
Serial.println();}
Переход на новую строку.
portTwo.println("?");
delay(1500);
portTwo.listen();
while (portTwo.available() > 0) {
Serial.print("A2: ");
Serial.write(portTwo.read());
Serial.println();}
Повторение процедуры формирования запроса на передачу данных и
принятия ответа для второй подсистемы.
portThree.println("?");
delay(1500);
portThree.listen();
while (portThree.available() > 0) {
Serial.print("A3: ");
Serial.write(portThree.read());
Serial.println();}}
Повторение процедуры формирования запроса на передачу данных и
принятия ответа для третьей подсистемы.
else if (val_1 == 1){
Если первое значение запроса равно единице, то программа должна
произвести запрос на осуществление полива.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
49
portOne.println("!");
portTwo.println("!");
portThree.println("!");}
Вывод символа «!», который является запросом на осуществление
полива, для всех подсистем через программные порты.
else
break;
Если значение первого запроса отличаются от нуля и единицы, то
программа не будет передавать запросов к распределенной системе полива и
сбора климатических данных.
if (val_2 == 0)
Если второе значение запроса равно нулю, значит, необходимости в
выбраковке нет: перегородка конвейера задвинута и не препятствует
движению плодов.
digitalWrite(relPin, LOW);
Подает низкое значение сигнала (0В) на реле, тем самым задвигая
перегородку конвейера, если та была открыта.
else if (val_2 == 1){
Если второе значение запроса равное единице, значит, получен запрос
на выбраковку плода.
digitalWrite(relPin, HIGH);
delay(3000);
Подача высокого уровня сигнала (5В) на реле, тем самым выдвигая
перегородку на непродолжительный период времени, для осуществления
механической выбраковки плода.
digitalWrite(relPin, LOW);}}}}
Подача низкого уровня сигнала (0В) на дискретный вывод реле, тем
самым задвигая перегородку на конвейере.
Ниже представлен результат компиляции программного кода в среде
Arduino IDE (рисунок 26).
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
50
Рисунок 26 – Результат компиляции программы обмена данными
Как можно видеть из рисунка 23, при компиляции программы не
возникает никаких ошибок. Сама программа занимает 4240 байт памяти
устройства из доступных 32256 байт, что занимает всего 13%.
1.7
Разработка программы на основе машинного зрения для измерения и
оценки внешнего вида плодов
Программа управления системой выполнена в среде LabView.
LabVIEW (англ. Laboratory Virtual Instrumentation Engineering Workbench) —
это среда разработки и платформа для выполнения программ, созданных на
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
51
графическом языке программирования «G» фирмы National Instruments
(США),
который
основан
на
архитектуре
потоков
данных.
Последовательность выполнения операторов в таких языках определяется не
порядком их следования (как в императивных языках программирования), а
наличием данных на входах этих операторов. Операторы, не связанные по
данным, выполняются независимо в произвольном порядке.
Программа LabVIEW называется и является виртуальным прибором
(англ. Virtual Instrument) и состоит из двух частей:
1.Блок-диаграммы,
описывающей
логику
работы
виртуального
прибора.
2.Лицевой панели, описывающей внешний интерфейс виртуального
прибора.
Лицевая панель виртуального прибора содержит средства вводавывода:
кнопки,
переключатели,
светодиоды,
верньеры,
шкалы,
информационные табло и т. п. Они используются человеком для управления
виртуальным прибором, а также другими виртуальными приборами для
обмена данными.
Блок-диаграмма
содержит
функциональные
узлы,
являющиеся
источниками, приемниками и средствами обработки данных. Также
компонентами блок-диаграммы являются терминалы («задние контакты»
объектов
лицевой
панели)
и
управляющие
структуры
(являющиеся
аналогами таких элементов текстовых языков программирования, как
условный оператор «IF», операторы цикла «FOR» и «WHILE» и т. п.).
Функциональные узлы и терминалы объединены в единую схему линиями
связей.
На рисунках 27 – 30 представлен алгоритм работы программы для
измерения и оценки внешнего вида плодов, созданной в LabView.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
52
Рисунок 27 – Алгоритм программы оценки плодов часть 1
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
53
Рисунок 28 – Алгоритм программы оценки плодов часть 2
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
54
Рисунок 29 – Алгоритм программы оценки плодов часть 3
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
55
Рисунок 30 – Алгоритм программы оценки плодов часть 4
Работа программы начинается с открытия соединения для записи
данных функцией DataSocket. Затем начинается основной цикл программы,
который работает, пока оператор не завершит его нажатием кнопки «Stop».
Основной цикл начинается со сбора данных с камеры. Для этого
создается сессия для изображения с камеры и выделяется место в памяти под
получаемое изображение, после чего картинка с камеры захватывается и
записывается в файл. После завершения этих процедур, сессия камеры
завершается, а временные данные изображения удаляются из памяти, после
чего на экран выводится отчет в случае возникших ошибок.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
56
Далее происходит оценка внешнего вида и измерение плодов. Для
этого указывается область интересов (ROI) в которой будет происходить
оценка и измерения объекта. Далее эта область уже накладывается на
получаемое изображение. Затем снова выделяется место в памяти под
временные данные изображения, после чего по указанному пути загружается
само
изображение.
Далее
загружается
классификационный
файл,
содержащий образцы цветовых гамм изображений, которые привязаны к
соответствующим классам. Следующим этапом происходит цветовое
распознавание объекта в соответствии с загруженным классификационным
файлом, после чего выводится результат (которым является класс, он же
состояние объекта в данном случае) и изображение. Затем завершается
сессия цветового анализа, а временные файлы изображения удаляются.
Выводится отчет об ошибках.
На этом же этапе происходит и измерение объекта. Снова выделяется
место в памяти под изображение и загружается само изображение. Затем из
данных об ROI формируется прямоугольник, область внутри которого будет
использоваться для поиска граней объекта измерений. Далее происходит
измерение ширины объекта, находящегося в ROI. Полученные данные (в
единицах
пикселей)
умножаются
на
коэффициент
масштабирования
(полученный опытным путем), для перевода значений в миллиметры.
Полученные данные выводятся на экран. Следом происходит измерение
высоты объекта, умножение их на тот же коэффициент и вывод на экран.
После этого данные изображения удаляются из памяти, и выводится отчет об
ошибках.
Следующим этапом происходит объединение значений состояния
объекта, а так же его высоты и ширины в единый кластер, готовый для
передачи данных. Затем этот кластер записывается в указанное соединение
по указанному URL при помощи функции DataSocket.
После завершения основного цикла программы, данное соединение
закрывается и происходит отчет о возникших ошибках.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
57
Опираясь на данный алгоритм, в среде LabView была создана
соответствующая программа для оценки и измерения плодов, а так же записи
этих данных для последующей передачи.
Лицевая панель (рисунок 31) состоит из двух окон отображения
изображений: левое окно для отображения изображения, правое для
отображения изображения и полей измерения объекта, поля для вывода
состояния объекта и двух полей для отображения значений линейных
размеров объекта, а так же кнопки «Stop».
Рисунок 31 – Внешний вид лицевой панели программы оценки внешнего
вида и измерения плодов
Блок-диаграмма программы (рисунок 32) в целом состоит из строгой
последовательности, которая заключена в цикл с постусловием (условием
завершения является нажатие кнопки «Stop» оператором), а так же
функциями DataSocket для открытия и закрытия соединения для записи
данных по указанному URL перед этим циклом и в его завершении.
Для удобства описания программы целесообразно рассматривать ее на
примере отдельных функциональных частей: функции DataSocket (рисунки
33 и 34), захват изображения с камеры (рисунок 35), оценка внешнего вида
объекта (рисунок 36) и измерение объекта (рисунок 37).
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
58
Рисунок 32 – Блок-диаграмма программы оценки внешнего вида и измерения плодов
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
59
Рисунок 33 – Функции DataSocket
Функции DataSocket позволяют создать соединение для записи данных
по указанному URL для последующего их чтения.
Первый блок данной цепочки (вынесен перед основным циклом)
позволяет открыть соединение. В режиме данного блока указывается
«Write», то есть запись. Таким образом, данный блок позволяет создать
соединение для записи данных по URL, который указывается в этом же
блоке. В данном случае, для удобства тестирования системы, указывается
адрес этого же устройства в сети и оригинальное имя переменной.
Следующий блок позволяет записать данные по URL, указанному в
предыдущем блоке. Данный блок является полиморфным, то есть, на вход
данных можно подавать любой тип данных. В данной программе на вход
этого блока подается кластер, состоящий из трех элементов: состояние
объекта – строковый тип, ширина объекта – числовой тип и высота объекта –
тоже числовой тип.
Последний блок данной цепочки (вынесен после цикла) закрывает
соединение и передает информацию о возникших ошибках.
Для непосредственной передачи данных также необходимо запустить
DataSocket Server (рисунок 31), который находится в папке с LabView.
Рисунок 34 – DataSocket Server
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
60
Рисунок 35 – Захват изображения с камеры
На рисунке 35 изображена часть программы, отвечающая за получения
изображения с камеры. Также можно условно разделить этот кусок на две
цепочки: верхнюю – цепочка для работы с камерой и нижнюю – для работы с
изображением.
Цепочка, состоящая из функций работы с камерой, начинается с блока
создания соответствующей сессии. В данном блоке указывается устройство,
с которым будут производиться дальнейшие операции. Следующий блок
определяет
конфигурацию
подключенной
камеры
и
необходим для
дальнейшего захвата изображения. Далее идет сам блок захвата изображения
с камеры. На вход данного блока подаются сведения о камере, а так же
информация о временной памяти, выделенной для данного изображения.
Замыкает эту цепочку блок завершения сессии, который выдает информацию
об ошибках на данном участке.
Цепочка работы с изображением начинается с блока выделения
временной памяти для хранения данных изображения. Здесь указывается
оригинальное имя для этой области, а так же цветовая палитра, согласно
которой будет получено изображение. Выходные данные с этого блока
подаются на блок захвата изображения из цепочки работы с камерой, после
чего происходит запись данных изображения во временную память.
Следующий блок позволяет сохранить полученное изображение в файл. В
параметрах этого блока указывается тип файла, а на входы подаются данные
изображения и путь\имя файла. Завершает эту цепочку блок, который
удаляет данные изображения из временной памяти, после чего происходит
вывод ошибок, возникших на данном участке работы программы.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
61
Рисунок 36 – Программа оценки внешнего вида объекта
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
62
Рисунок 37 – Программа измерения линейных размеров объекта
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
63
Данная часть программы начинается с преобразования координат
прямоугольника в информацию об ROI, границы которой тут же
накладываются на окно изображения 1 при помощи соответствующей
функции узла свойств изображения.
Далее идет блок создания участка временной памяти для изображения с
указанием оригинального имени и цветовой палитры. Данные с этого блока
поступают на блок чтения изображения из файла. Выбирается путь к файлу и
его имя. В качестве выбираемого файла используется файл, который был
создан в процессе захвата изображения с камеры. Далее идет блок чтения
классификационного файла, содержащего образцы для каждого класса. На
выходе данного блока создаются данные классификационной сессии.
Следующим в цепочке находится блок, непосредственно производящий
оценку объекта по цветовым признакам, в соответствии с загруженным
классификационным файлом. На выходе этого блока мы получаем
информацию о классе (состоянии) объекта и изображение. И замыкают эту
цепочку блоки завершения классификационной сессии и удаления данных
временной памяти, после чего выводится отчет об ошибках.
Последняя для рассмотрения цепочка – цепочка измерения линейных
размеров объекта.
Здесь, так же как и в предыдущей цепочке, все начинается с выделения
памяти и чтения файла, однако цветовая палитра выбирается черно-белая
(необходимо для распознавания граней объекта измерения), Затем данные
ROI снова преобразуются в координаты прямоугольника, которые подаются
на блоки измерения ширины и высоты объекта. Эти блоки принимают на
вход данные изображения и данные ROI, которые сужают область поиска, и
выдают изображение с наложенными границами объекта и информацию о
его линейных размерах в единицах пикселей, которые умножаются на
коэффициент
масштабирования
для
преобразования
в
миллиметры.
Завершает эту цепочку блок удаления данных изображения из временной
памяти, после чего формируется отчет об ошибках.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
64
Составив программу из данных блоков подобным образом мы
получаем рабочую программу для измерения объектов, однако этого еще не
достаточно
для того чтобы она могла распознавать цветовые образы и
производить классификацию объектов в области поиска, так как для этого
программу необходимо «обучить» тому какая цветовая палитра составляет
тот или иной объект.
Для этой цели нужен Color classification training interface (рисунок 38),
который позволит назначить цветовые палитры тому или иному объекту
(классу) и создаст на основе этих данных файл с расширением .cif, который в
дальнейшем будет использоваться как алгоритм цветового распознавания в
программе.
Рисунок 38 – Внешний вид программы NI Color Classification Training
Interface
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
65
Для начала работы в нем необходимо открыть файл, на котором
необходимо выделить область, цветовую палитру которой необходимо
описать. Затем идет привязка этой цветовой палитры к классу. Таким
образом, можно «научить» программу из каких цветов состоит тот или иной
класс.
В данном случае классификационный файл будет иметь два класса,
которые
будут
описывать
состояние
плода:
хорошее
(good)
и
неудовлетворительное (poor).
Для создания образцов был сделан ряд фотографий яблок сорта Голден,
с примерами хорошего состояния плода (яблоко имеет равномерный зеленый
цвет, без потемневших пятен) и неудовлетворительного (яблоко имеет
темные пятна, такой плод не будет храниться долго).
Примеры
хорошего
и
неудовлетворительного
состояния
плода
изображены на рисунках 39 и 40.
Рисунок 39 – Пример хорошего состояния плода
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
66
Рисунок 40 – Пример неудовлетворительного состояния плода
После того как создание цветовых образцов (рисунок 41) для каждого
класса завершено, создается файл алгоритма цветовой классификации,
который и будет использоваться в программе.
Рисунок 41 – Создание образцов для классов
На рисунках 42 и 43 изображены результаты работы программы оценки
внешнего вида и измерения плодов.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
67
Рисунок 42 – Результат работы программы на примере хорошего образца
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
68
Рисунок 43 – Результат работы программы на примере плохого образца
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
69
1.8
Разработка центральной программы распределенной системы
Так же как и предыдущая, центральная программа распределенной
системы создана в среде графического программирования LabView, алгоритм
работы (рисунки 44 и 45) которой имеет следующий вид.
Рисунок 44 – Алгоритм работы центральной программы системы часть 1
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
70
Рисунок 45 – Алгоритм работы центральной программы системы часть 2
Работа программы начинается с открытия соединения для чтения
данных функцией DataSocket. Затем начинается основной цикл программы,
который работает, пока оператор не завершит его нажатием кнопки «Stop».
Основной цикл программы состоит из двух последовательностей:
первая – последовательность приема и отображения данных, полученных от
программы оценки внешнего вида и измерения плодов и вторая –
последовательность приема и отображения данных, полученных с платы
Arduino UNO.
Первая последовательность начинается с чтения данных по указанному
URL, которые были записаны программой оценки внешнего вида и
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
71
измерения плодов. Далее данные, полученные в виде кластера, разбиваются
на отдельные элементы, которые содержат информацию о состоянии плода, а
так же его высоте и ширине, после чего они выводятся на входы терминалов
индикаторов для каждой из величин.
Вторая последовательность начинается с инициализации передачи
данных с использованием последовательного порта. Следующим этапом
определяется количество информации, находящееся на порту для приема.
Затем эти данные считываются и выводятся на терминал индикатора в виде
строки. Тут же формируются запросы для распределенной системы на
передачу данных и полив, которые зависят от реального времени и запрос на
выбраковку, если система распознания состояния плодов показало что
состояние данного плода неудовлетворительное.
После завершения основного цикла программы соединение для чтения
данных DataSocket и соединение с последовательным портом закрываются и
выводятся отчеты о возникших ошибках.
В соответствии с данным алгоритмом, в среде LabView была создана
соответствующая программа приема данных и их индикации.
Лицевая панель программы (рисунок 46) состоит из кнопки «Stop»,
индикатора строкового типа для данных платы с Arduino UNO, одного
индикатора строкового типа и двух – логического для описания состояния
объекта, двух индикаторов числового типа для отображения линейных
размеров объекта и трех индикаторов логического типа для отображения
активности локальных подсистем сбора климатических данных.
Блок диаграмма программы (рисунок 47) состоит из структуры цикла с
постусловием, которым является нажатие кнопки «Stop» оператором, и
включает в себя блоки приема, записи, преобразования и индикации данных.
Для удобства описания данную блок-диаграмму программы можно
разделить
на
три
последовательности
функций:
верхнюю
–
последовательность функций DataSocket (рисунок 48), которые позволяют
установить соединение и считать данные, записанные программой оценки
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
72
внешнего вида и измерения плодов, среднюю – последовательность функций
для формирования строки запроса (рисунок 49), и нижнюю – функций VISA
(рисунок 50), которые позволяют установить соединение с последовательным
портом, считать и отобразить данные, полученные с него, а так же записать в
него новые.
Рисунок 46 – Лицевая панель центральной программы системы
Рисунок 47 – Блок-диаграмма центральной программы системы
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
73
Рисунок 48 – Последовательность чтения данных DataSocket
Программа для приема и индикации данных, полученных от
программы машинного зрения начинается с блока функции DataSocket,
который открывает соединение. В режиме данного блока указывается
«Read», то есть чтение. Таким образом, данный блок позволяет создать
соединение для чтения данных по URL, который указывается в этом же
блоке. В данном случае, для удобства тестирования системы, указывается
адрес этого же устройства в сети и оригинальное имя переменной, которое
было указано программой оценки внешнего вида и измерения плодов.
Следующим блоком в цепочке является блок непосредственного чтения
данных из соединения. На вход данного блока поступают данные об
открытом соединении, а так же образец типа принимаемых данных. В данном
случае, так как был отправлен кластер, состоящий из трех элементов –
одного строкового и двух числовых – на вход подаем пустой кластер,
состоящий из тех же элементов. На выходе данного блока мы получаем тот
самый кластер, записанный программой машинного зрения, который
разбивается на элементы, содержащие информацию о состоянии плода, а так
же его ширине и высоте. Значения статуса также переводятся в логическое
состояние путем сравнения с соответствующими строками, после чего
выводятся
на
индикаторы
логического
типа
с
пометками
«poor»
(неудовлетворительное состояние) и «good» (хорошее состояние). Завершает
данную цепочку блок, закрывающий соединение, после чего выводится отчет
об ошибках, возникших на данном участке.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
74
Рисунок 49 – Последовательность формирования строки-запроса
Данная последовательность начинается с блока получения значений
реального времени, после чего эти значения переводятся в строковый тип для
дальнейшей обработки. Далее идут блоки сравнения полученного времени с
заданным, для формирования условий заполнения строки запроса. Данная
строка состоит из двух частей: первая часть – запрос для распределенной
системы для обмена данными или запрос на осуществление полива, и вторая
часть – запрос для промежуточной системы обмена данными на выполнение
выбраковки
плода
неудовлетворительного
состояния.
Запрос
для
распределенной системы зависит от времени: если наступило 12:00, то
первым значением строки-запроса будет символ «1» (запрос на полив), если
наступила половина часа, то первым символом будет «0» (запрос на передачу
данных), в противном случае первым символом будет «2» (на который
система никак не отреагирует). Для формирования второго значения строкизапроса используется логическое значение состояния объекта: если состояние
объекта неудовлетворительное, то вторым значением будет «1» (запрос на
выбраковку), в противном случае вторым значением будет «0» (выбраковка
не требуется). Эти два значения объединяются в единую строку-запрос
последним блоком данной последовательности. В итоге на выходе будет
строка, состоящая из двух символов запроса, разделенных запятой, и
символом конца строки-запроса («;»).
Программа записи запроса и приема ответа начинается с блока
инициализации соединения с последовательным портом, где указывается
номер порта с устройством и определяется скорость передачи данных. Далее
идет блок определения наличия данных на порте, после чего они
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
75
Изм. Лист
№ докум.
Подпись Дата
считываются блоком чтения данных, на выходе которого мы получаем
строку, сформированную программами сбора климатических данных и
передачи данных. Данная строка разделяется на две подстроки: первая
подстрока отображает номер подсистемы, с которой получены данные, в то
время как вторая отображает сами значения климатических параметров.
Данные о номере подсистемы переводятся в логическое значение путем
сравнения с заданными значениями, после чего выводятся на логический
индикатор в виде информации об активности системы. Оставшиеся данные
второй подстроки выводятся на индикатор строкового типа. За этими
блоками следует блок записи данных в последовательный порт. На вход
этого
блока
поступают
данные
строки-запроса,
сформированной
в
последовательности формирования строки-запроса. Завершает эту цепочку
блок разрыва соединения с портом и вывод отчета об ошибках.
Рисунок 50 – Последовательность чтения и записи данных
последовательного порта
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
76
Рисунок 52 – Апробация устройства сбора климатических данных часть 2
Рисунок 53 – Апробация устройства сбора климатических данных часть 3
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
78
Рисунок 54 – Апробация устройства сбора климатических данных часть 4
Рисунок 55 – Результаты тестирования устройства сбора и отправки
климатических данных
Апробация
всей
системы
проводилась
в
домашних
условиях.
Результаты тестирования представлены на рисунках 56 – 58.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
79
Рисунок 56 – Результаты тестирования системы часть 1
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
80
Рисунок 57 – Результаты тестирования системы часть 2
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
81
Рисунок 58 – Результаты тестирования системы часть 3
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
82
1.9
Анализ экономических показателей эффективности и точности работы
системы
Согласно техническим характеристикам, указанным в мануалах к
датчикам,
составляющих
измерительный
комплекс
системы
сбора
климатических данных, они имеют следующие показатели погрешностей:
Фоторезистор MLG5516: относительная погрешность согласно мануалу
равна 6%. Таким образом, точность данного датчика равна 94%.
Датчик влажности почвы: относительная погрешность согласно
мануалу 5%. Таким образом, точность датчика составляет 95%
Датчик температуры и влажности воздуха
DHT11: ±2оС при
измеряемой шкале от 0 и до 50 оС и ±5% при измеряемой шкале от 20 до 95%.
Таким образом, относительные погрешности для измерения температуры (6)
и измерения влажности (7) равны:
γ1 = (Δ/XN)*100 = (2/50)*100 = 4%
(6);
γ2 = (Δ/XN)*100 = (5/95-20)*100 = 6,66%
(7).
где Δ – абсолютная погрешность, XN – длина шкалы измерений.
Следовательно, точность датчика DHT11 равна 96% для измерения
температуры и 93,34% для измерения влажности.
Для определения точности распознавания наличия потемнений и пятен
на яблоках было сделано и подвергнуто анализу 17 снимков. В 16 случаях
состояние объекта было определено верно. Исходя из проведенного опыта,
относительная погрешность данной системы (8) равна:
γ3 = (Δ/XN)*100 = (1/17)*100 = 5,88%
(8).
Таким образом точность системы оценки внешнего вида плодов
составляет 94,12%.
Для определения точности системы определения линейных размеров
объекта,
было
проведено
сравнение
линейных
размеров
объекта,
определенных программой с реальными. Результаты сравнения приведены в
таблице 9.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
83
Таблица 9 – Определение точности системы нахождения линейных
размеров объекта
Результаты ручных
Программные
Точность системы по
измерений,мм
результаты
результатам
измерений,мм Замеры Средее значение
измерений,%
66
65,43
66,83333333
97,90024938
68
66,5
64,57
67,2
61,67
65,14
65,27
68,14
63,46
65
64,83333333
64,5
65
68,5
67,83333333
67
68
63
63,16666667
63
63,5
67
68
67,5
67,5
65,5
66
65,66666667
65,5
73
71
71,33333333
70
65
68,5
66,5
66
Средняя точность системы
99,59383033
99,06633907
97,63060686
96,5037037
99,39593909
95,52336449
95,42857143
97,63032554
Таким образом, средняя точность системы определения линейных
размеров объекта приблизительно равна 97,6%.
На рисунках 59 – 62 можно наблюдать отчеты по используемой памяти
для программ сбора климатических данных, передачи данных, машинного
зрения и центральной программы соответственно.
Рисунок 59 – Отчет об используемой памяти для программы сбора
климатических данных
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
84
Рисунок 60 – Отчет об используемой памяти для программы передачи
данных
Рисунок 61 – Отчет об используемой памяти для программы оценки
внешнего вида и измерения плодов
Рисунок 62 – Отчет об используемой памяти для центральной программы
Изм. Лист
№ докум.
Подпись Дата
системы
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
85
Таким
образом,
из
рисунков
видно,
что
программа
сбора
климатических данных занимает ~ 4,9 Кбайта памяти, программа передачи
данных ~ 4,2 Кбайта, программа машинного зрения ~ 251,2 Кбайта и
центральная программа системы~ 143,1 Кбайта.
При возделывании садов следует обратить внимание на полив. Так как
интенсивная технология требует частых поливов, оптимальный вариант
капельный полив.
Для определения норм полива используется формула 1, однако в
формуле 3 были предложены корректировки, которые позволяют сэкономить
воду при поливе. Сравнение данных по этим формулам приведено в таблице
10.
Таблица 10 – Сравнение норм полива
Величина предполивной
Нормы оросительного
Нормы оросительного
Экономия %
влажности почвы, %НВ полива по формуле 1, м3/га полива,по формуле 5, м3/га
0,1
648
612
5,56
0,2
576
540
6,25
0,3
504
468
7,14
0,4
432
396
8,33
0,5
360
324
10,00
0,6
288
252
12,50
0,7
216
180
16,67
0,8
144
108
25,00
0,9
72
36
50,00
Средняя экономия
15,72
На рисунках 63 – 65 изображены диаграммы сравнения точности
измерительного
комплекса
системы
сбора
климатических
данных,
определения состояния и измерения плодов системы машинного зрения,
сравнения норм полива и количества используемой памяти программ
соответственно.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
86
Рисунок 63 – Диаграмма точности системы
Рисунок 64 – Диаграмма сравнения норм полива
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
87
Рисунок 65 – Диаграмма количества используемой памяти программ
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
88
1.Заменить
контроллеры
Arduinо
UNO
на
более
дешевые
микроконтроллеры семейства Atmel.
2.Изготовить станцию для съемки объектов, с целью нормирования
параметров освещения.
3.Использовать беспроводные технологии передачи данных.
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
90
10.
Разработка стационарной системы контроля климата Дневник науки
[электронный
ресурс]
–
Режим
доступа
-
URL:
http://dnevniknauki.ru/images/publications/2018/4/technics/Smirnov.pdf
Изм. Лист
№ докум.
Подпись Дата
ВКР.15.04.04.2018«Разработка распределенной Лист
системы контроля для фруктового сада»
92
Приложение А
Структурная схема системы
Приложение Б
Принципиальная электрическая схема системы
Приложение В
Функциональная схема автоматизации
Приложение Г
Техническая документация для создания корпуса
Приложение Д
Алгоритм работы системы
Приложение Е
Разработка программного обеспечения системы
Приложение Ж
Тестирование системы
Приложение З
Графики показателей эффективности
1/--страниц
Пожаловаться на содержимое документа