Подписаться на получение новых статей на почту:

Шаг №31. Анализ и проектирование контроллера сбора данных

Обновлено 26.06.16. Всем привет. В прошлых двух статьях мы с Вами рассмотрели работу с часами DS1307, а именно конфигурацию (статья №29) и вывод времени (статья №30) на семи сегментный индикатор. Сегодня мы с вами интегрируем код для работы с часами, датчиком температуры ds18b20 (статья №18), датчиком температуры и влажности DHT11 (статья №20) а также код семи сегментного индикатора (статья №5) в контроллер сбора данных.

Благо мы с Вами научились писать библиотеки и интегрировать их в общий код, как помните в статье №21, рассмотрели общие правила и разбили код датчиков температуры и влажности а также индикатора по библиотекам, где был выложен исходник . Поэтому нам не составит труда перенести код для работы с часами в библиотеку и подключить к нашему проекту.

Давайте вспомним историю нашего проекта. В статье №16 (Контроллер сбора данных. План работы.), была задана цель и поставлен план, который необходимо было реализовать для поставленной задачи, а именно: сбор данных контроллером ATmega 8 на карту SD от датчиков температуры и влажности по времени и передача информации через UART на компьютер. При этом стояла также общая задача, на чем построена суть блога, разобрать каждый элемент в отдельности, рассмотрев техническую документацию, научиться писать код, для  применения датчиков и схем в других проектах. А также использовать посты как элементы конструктора для воплощения своих идей.

Что ж давайте проанализируем проделанную работу. Из поставленной задачи мы проработали почти со всем, кроме протокола UART, пока руки не добрались. Синхронизировали, пока на данный момент только цифровой датчик температуры ds18b20, датчик влажности и температуры DHT11 (кстати тоже цифровой.), схему реального времени ds1307. А также семи сегментный индикатор, библиотеки которого пришлось немного дописать для вывода на него символа “-” при отрицательной температуре, “H” и “С” – влажности и температуры датчика DHT11, а также сдвиг точки при отображении вещественного числа с одним знаком после запятой и вывод времени в формате ЧЧ.ММ. А также отключение индикатора в момент чтения/записи DS1307.  Вы можете сравнить статью №5, где мы познакомились с индикатором, и ниже с выложенными исходниками, и просмотреть как изменился код (led.c). В основном в библиотеку были добавлены глобальные переменные, для отображения того или иного символа. На рисунке ниже результат работы четырех семи сегментного индикатора с разной периферией.

Семи сегментный индикатор.

Разобрали метод ЛУТ для проектирования платы (статья №17). В учебных целях были изучены и рассмотрены протоколы 1-Wire (Статья №6), TWI (Статья №28), SPI (Статья №19). Также была рассмотрена работа SD-карты (статья №19), файловой системы Petit Fat Fs (статья №22), провели эксперименты с файловой системой (статья №23) и попробовали решить недостаток системы, сохранение данных, программным путем. Как вы уже поняли все данные мы будем скидывать на карту SD. Но т. к. файловая система “сжирает” почти всю память ATmega 8A, да и плата уже была разведена под этот контроллер, пришлось рядом разместить еще один такой же “камень”. Поэтому на рисунке слева у нас размещается ATmega 8A, часы DS 1307 а также, чуть позже будет разъем RJ-45, к которому подключим телефон в качестве GSM модема. Также на плате размещены джемперы J1 и J2 для отключения питания при программировании микроконтроллера МК1 или МК2.

Контроллер сбора данных на AVR.

Итак набросаем дальнейший план:

 Программа для кнопок на АЦП AVR1. Как видите на рисунке (выше) у нас остались не задействованные кнопки, повесим их на одну ножку АЦП (разберем  настроим) (статья №32)  и пропишем код для коррекции времени (статья №33). Например при переводе времени и отставании или убегании частоты кварцевого резонатора.
Интерфейс TWI - два ведущих2. Рассмотрим вторую часть протокола TWI (статья №34) для работы с двумя ведущими и более.
Два ведущих по TWI3. Подключим второй микроконтроллер, зальем в него файловую систему Petit Fat FS и попробуем передать информацию по схеме МК1 – МК 2 – карта SD (статья №35).
Передача данных SPI TWI4. Произведем наладку всей платы программно  для передачи данных: температуры, влажности и времени (статья №38).
UART/USART (УАПП) в AVR5. Разберем протокол UART (статья №40);
6. Попробуем передать информацию через UART компьютеру. И организовать передачу данных : карта – МК2 – МК1 – компьютер (статья №42).
7. Рассмотрим подключение телефона и передачу данных через GSM.

ESP8266 and AVR8. Научимся работать с модулем wi-fi esp8266 (Статья №57).
 

 

 

 

 

ESP8266. Передача данных на сайт GET-запросом.9. Передадим данные контроллера на сайт с помощью модуля esp8266 и GET-запроса (Статья № 59).

 

 

 

Интерактивная картаЗдесь Вы можете просмотреть визуальную схему (карту) устройства с кликабельными областями. На рисунке слева, у нас визуальная карта проделанных шагов описанных выше. Кроме модуля GSM.

Ниже я выложил исходники. Код выводит на дисплей, циклически, температуру двух датчиков ds18b20, данные dht11, и время DS1307 (результат работы выше на рисунке отображение семи сегментного индикатора).

Выводим температуру, влажность и время на индикатор. ( Скачали: 221 чел. ) 

На этом все. В следующих статьях подключим кнопки к АЦП для коррекции времени, а также рассмотрим вторую часть протокола TWI и попробуем «поиграться» с вторым контроллером, в качестве ведущего и ведомого. Пробуйте и экспериментируйте. Всем пока.

Просмотрено 2914 раз.

Я на Google+

Шаг №31. Анализ и проектирование контроллера сбора данных: 2 комментария

  1. Хотелось бы увидеть всю эту связку в работе, с разжеванными исходниками и желательно проект в протеусе.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting