
- •Р еферат
- •1. Техническое задание
- •Назначение устройства
- •Требования к реализации
- •Входные/выходные параметры
- •2. Техническое предложение
- •Элементная база
- •3.1.3 Интерфейс usart
- •3.1.4 Интерфейс i2c
- •4. Технический проект
- •4.1 Разработка проекта
- •4.2 Описание интерфейса
- •4.3 Реализация основных функций
- •5. Рабочий проект
- •5.1 Компиляция проекта
- •5.2 Прошивка
- •5.3 Физическое тестирование
4.2 Описание интерфейса
Принципы построения модели включает методологию написания языкового кода.
Спецификация составляется на всю программу, состоящую из основных блоков в соответствие со следующими этапами.
Необходимо выполнить анализ требуемых входных параметров и констант, а также определить их тип и начальные значения.
Начальные значения выбираются в соответствие с описанием устройства.
Тип параметров – int целочисленный тип. При этом по умолчанию используется модификатор типа unsigned, который указывает, что переменная принимает неотрицательные значения.
Самый левый бит области памяти, выделяемой для хранения значения, используется так же, как и все остальные биты области памяти – для представления значения.
Таблица 4.1 – Описание интерфейса всей программы
Входы |
Тип |
Начальные значения |
Описание |
sensorPin |
int |
A0 |
Задание входного пина для датчика |
ledPn |
int |
Y0 |
Задание выходной ножки для светодиода |
Motor |
int |
13 |
Задание пина для управления |
sensorValue |
int |
0 |
Считанное значение проводимости почвы |
Displey_g |
int |
0 |
Используется для вывода информации на дисплей |
4.3 Реализация основных функций
При разработке проекта необходимо подключить заголовочные файлы:
1. #include "mega8.h" – для регистрации вводов-выводов для ATMEGA8;
2. #include "delay.h" – для использования задержек;
3. #include "spi.h" – для вызова функций используемых в главном файле main.c.
4. #include "eeprom.h" – используется для подключения встроенной памяти ЭПСП микроконтроллера.
Ниже приведены примеры наиболее значащих для проекта функций:
Листинг 4.1 – Инициализация микроконтроллера
void setup()
{Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode (slaveSelectPin, OUTPUT);
SPI.begin();}
Ниже приведенный участок кода отвечает за калибровку системы полива. Дело в том, что при разных разновидностях грунта, меняется свойства ее проводимости. Из этого следует тот факт, что система нуждается в калибровке перед эксплуатацией.
Листинг 4.2 – Калибровка системы полива
addr = addr + 1;
if (addr == 512)
addr = 0;
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
В системе предусмотрено каскадирование модулей контроля. Модули связанны между собой по последовательной шине SPI.
Листинг 4.3 – Каскадирование модулей контроля
// take the SS pin low to select the chip:
digitalWrite(slaveSelectPin,LOW);
// send in the address and value via SPI:
SPI.transfer(address);
SPI.transfer(value);
// take the SS pin high to de-select the chip:
digitalWrite(slaveSelectPin,HIGH);
Фрагмент кода, приведенный ниже, отвечает за контроль влажности почвы. Значение, считанное с АЦП, сверяется с значением из EEPROM, где хранятся калибровочные данные. После чего принимается решение о поливе.
Листинг 4.4 – Контроль влажности почвы
if (sensorValue == EEPROM.read(address))
{
analogWrite(motor, 255);
delay (100);
analogWrite(motor, 0);
}
Вся полученная информация передается в компьютер посредством шины RS-232.
В дальнейшем можно будет реализовать сбор данных на удаленном сервере посредством LAN.
Листиннг 4.5 – Передача информации в компьютер
sensorValue = digitalRead(2);
Serial.println(sensorValue, DEC);
digitalWrite(ledPin, LOW);