Пользователь
0,0
рейтинг
4 февраля 2013 в 14:24

Разработка → Контроллер MeteoBoard

Понадобилось нам однажды измерять температуру и влажность в одном помещении, несложная задача, стоит обратиться в гугл и там до кучи примеров на ардуино как это сделать, скетчи, схемы и пояснения. Простые задачи подобного рода возникают достаточно часто и каждый раз модифицировать код для контроллера не хотелось. Мы подумали, а что если написать что-то типа интерпретатора для микроконтроллера(МК), который бы принимал команды и выполнял их. Таким образом отпадает необходимость писать софт каждый раз для МК, это занятие требует времени зачастую больше, чем под ПК из-за того, что объем памяти МК ограничен и не попользуешься развитыми средствами типа regex и прочего. Интерпретатор должен быть расширяемый, то есть добавление новой команды, не должно быть зубодробительной операцией. Также в будущем он должен быть легко переносим на ARM Cortex-M3 архитектуру и способен работать через различные интерфейсы связи будь то RS485, Ethernet, ZigBee.

Другие наши проекты здесь

На основании этих требований было решено разработать такое устройство и + библиотеки для работы с ним под несколько языков (сейчас Python и GCC C/C++) и ОС ( Win и Linux) чтобы не париться больше с написанием каждый раз софта для контроллера, который делает рутину — собирает данные или что-то включает или выключает.


Рис. 1. Контроллер MeteoBoard


Проще говоря, хотелось сделать такое устройство, которое не нужно вечно прошивать, переписывать код прошивки, и снова прошивать чтобы адаптироваться под новую задачу. Хотелось управлять простыми командами и все логику управления вынести в программу на ПК. Последней преградой на этом пути оказался интерфейс, через которое устройство будет подключено к ПК. Нам не очень то хотелось разбираться с USB портами, с драйверами и конечными точками, это только усложнило бы работу с устройством, поэтому было решено поднять на МК открытый USB стэк и производить обмен данными между устройством и ПК через виртуальный COM-порт, который появляется в системе каждый раз, когда мы будем подключать плату к ПК. Работать с COM-портом уже более комфортно по сравнению с USB, но мы решили пойти дальше и написали библиотеку, которая берет на себя всю черновую работу по нахождению порта, к котором подключена плата и его инициализации, при этом выдает пользователю только полезные данные с датчиков устройства.

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

Железо
Для проверки выбранного подхода была спроектирована печатная плата на базе микроконтроллера ATMEGA32U4 с аппаратным USB 2.0. На плату были установлены следующие датчики:

  • Датчик давления BMP085. Измеряет давление, температуру и высоту над уровнем моря(!), использую, видимо, барометрическую формулу. Может измерять давление в диапазоне 30-110 кПа, работает на разных высотах от +9000 м над уровнем моря и до -500 м ниже уровня моря
  • Датчик влажности DHT11. Измеряет влажность и температуру, не блещет точностью преобразования, но важно, что он цифровой и доступный. Влажность мерит в диапазоне от 20 до 90 %, погрешность 5%, по части измерения температуры здесь почти комнатные условия от 0 до 50 С, а погрешность 2 С
  • Измерение освещенности происходит с помощью фоторезистора. Сигнал с фоторезистора заведен на канал АЦП, и в зависимости от освещения напряжение с фоторезистора меняется. Сама зависимость нелинейная, поэтому в контроллере дополнительно происходит калибровка. На выходе программист получает рафинированные данные от 0 до 255, 0 — если темно «хоть глаз выколи » и 255 если фотоэлемент засвечен
  • Измерение температуры производится датчиками DS18b20. Их температурный диапазон от -55 до 125 С, но я думаю резиновый кожух, которым покрыт выносной датчик такую температуру не выдержит, максимум +70, а при отрицательной температуре ниже 30, кожух может потрескаться, если его не аккуратно перемещать. Точность 0.5 С. Длина провода в нашем случае составляла 2 метра, предельная длина зависит от среды, с нормальным экранированным кабелем можно достичь и 50 метров, всего датчиков на плату устанавливается 3 (белый контакт на плате, один установлен, два не запаяны)


Когда частично это было запаяно началась работа над софтом. Нам хотелось чтобы интерпретатор, который выполняет команды мог быть легко перенесет на другое железо, если нам вдруг потребуется масштабироваться, например, нужно будет измерять температуру не в 3 местах, а в 10, код должен работать без изменений. Каждому датчику был задан идентификационный номер Device ID, а также список актуальных параметров Param ID, чтобы можно было без коллизий обращаться к любому датчику. Например, для датчика давления device ID = 5, параметры могут быть следующие:
1 для температуры, 3 для атмосферного давления и 4 для альтитуда.


Рис. 2. Датчики устройства
Датчик Device ID Parameter ID Описание
DS18b20 #1 001 001 Температура (точность 0.5 С)
DS18b20 #2 002 001 Температура (точность 0.5 С)
DS18b20 #3 003 001 Температура (точность 0.5 С)
DHT11 004 001
002
Температура (точность 2 C)
Влажность (точность 5 %)
BMP085 005 001
003
004
Температура (точность 0.1 C)
Давление, Па
Альтитуда, м
Датчик освещенности 010 223 Цифровой диапазон от 0 до 255

Табл. 1 Команды и параметры


Рис. 3 Обмен данными между ПК и устройством MeteoBoard

Эта таблица в дальнейшем будет только увеличиваться по мере появления новых контроллеров со специфичными требованиями, но главное, что все контроллеры работают по унифицированному набору команд, значит код для ПК однажды написанный может легко работать на новом девайсе (если, конечно, физически есть такой датчик на плате). Здесь нет зависимости от типа микросхемы, ее производителя и тд. Если какой-то датчик выдает температуру, значит передав контроллеру пакет, который содержит device ID этого датчика и следом 001 мы всегда получим температуру в градусах Цельсия и это для любого параметра, который есть и будет в таблице.

Программное обеспечение

Работать с MeteoBoard можно практически на любом языке, который может обращаться к COM-порту. Это могут быть даже скриптовые языки типа Perl и Python. Доступ к аппаратуре можно получить из любого пользовательского приложения через библиотеку для работы с устройством, в данный момент есть библиотеки для C и Python.
Например, чтобы считать температуру на одном из датчиков нужно вызвать функцию getDHT11_temp(port), а эта функция уже самостоятельно производит обмен данными с тем датчиком с которым нужно. Для того, чтобы функция «знала» к какому COM-порту подключено устройство мы сначала сканируем все доступные COM-порты и отправляем туда специальные запросы — тот порт, который ответил — нас интересует, на нем сидит устройство, с ним дальше и работаем.

1) Python

Как выглядит минимальное приложение, которое работает с MeteoBoard?
Вот оно:
# -*- coding: UTF-8 -*-
from meteoboardlib import * # подключаем функции для работы с устройством
port = getMeteoBoard_port() # определяем к какому порту подключена плата
print u'Температура, % = ', getDHT11_temp(port) # Считываем значения в консоль


Для Python была написана библиотека для работы с устройством, которая основана на PySerial, а значит будет работать как в Windows, так на Linux (под Linux библиотеку не тестировали еще). Работа на Python с устройством получилась особенно прозрачной, библиотека meteoboardlib.py содержит функцию для определения к какому порту подключена плата. ПК просто отправляет во все доступные порты символ 'w', и тот порт, который откликнулся строкой 'MeteoBoard' в течении 0,5с используется в дальнейшей работе.

Следующий ниже код считывает значения нескольких датчиков в текущий момент времени и выводит все это в консоль.
# meteoboard_test.py
# -*- coding: UTF-8 -*-
from meteoboardlib import * # подключаем функции для работы с устройством
port = getMeteoBoard_port() # определяем к какому порту подключена плата
# запрашиваем необходимые значения и выводим в консоль
print u'Влажность, % = ', getDHT11_temp(port)
print u'Температура, C = ',getDHT11_Hum(port)
print u'Температура, C = ',getBMP085_temp(port)
print u'Давление, Па = ',getBMP085_pressure(port)
print u'Альтитуда, м = ',getBMP085_altitude(port)


С этими данными уже можно работать как вздумается: делать частично умный дом, мониторить что-то, делать экспертную систему, возможностей масса. График ниже получен с помощью matplotlib, накопили массивы значений и plot'м отрисовали.
В самом начале видно как температура и влажность подскочили, давление и альтитуда в пределах погрешности измерения. Когда убрали воздействие, данные постепенно начали возвращаться в исходные состояния.

Рис. 4 Визуализация данных с устройства с помощью matplotlib

Можно писать данные сразу в файл, что-то типа системы логирования, а потом открывать в excel и изучать на предмет аномалий, например, в помещении.

# -*- coding: UTF-8 -*-
from meteoboardlib import *
import csv

c = csv.writer(open("MYFILE.csv", "wb"))    
port = getMeteoBoard_port() # узнаем к какому порту подключена плата

# выводим заголовок таблицы
c.writerow(["humidity,% ","Temperature,C ","Temperature,C ","Pressure,Pa ","altitude,m"])

for i in range(500):
    print i
    c.writerow([str(getDHT11_temp(port)),str(getDHT11_Hum(port)),str(getBMP085_temp(port)),str(getBMP085_pressure(port)), str(getBMP085_altitude(port))])    

Также можно в несколько строк кода писать программы, которые будут мониторить температуру, влажность и все остальные характеристики внешней среды и, в зависимости от того, что происходит в текущий момент времени со средой — реагировать согласно программе. Например, звать пожарную бригаду при повышении температуры выше критического значения
# -*- coding: UTF-8 -*-

from meteoboardlib import *

port = getMeteoBoard_port() # честно узнаем к какому порту подключена плата

temp = 0
temp = getDHT11_temp(port)

while(1):
    if temp > 35:
        print "Fireman save us!!! ",temp
    temp = getDHT11_temp(port)
    print temp

Пара строчек, а сколько удовольствия от самого процесса получения данных из реального мира, ничего не нужно паять, не нужно писать код для микроконтроллера, хотя не скрою есть и в этом что-то особенное.

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

2) GCC C/C++ компилятор

Для gcc c компилятора под Linux была написана небольшая библиотека для работы с устройством, которая основана на RS-232 for Linux and Windows library. Вся дальнейшая работа проводилась на Linux Ubuntu 12.04, но по идее должно также работать на Windows (тестов на Windows не делали). К сожалению, получить номер порта к которому подключена плата в автоматическом режиме пока не получилось, в отличии от библиотеки на Python, здесь порт задается руками, а функция-заглушка для определения порта просто выдает константу.
Чтобы получить данные с устройства нужно подключить библиотеки, получить номер порта (задать руками) и пользоваться функциями.

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include "rs232.h"
#include "meteoboard.h"

int main()
{
  int cport_nr, bdrate=19200;
  cport_nr = getMeteoBoard_port(); // получаем порт(функция заглушка)
  if(OpenComport(cport_nr, bdrate)) // пробуем открыть порт, не открывается завершаем работу
  {
    printf("Invalid ComPort\n");
    return(0);
  }
  while(1)
  {
    printf("%d %d %d %d %d\n",getDHT11_temp(cport_nr), getDHT11_Hum(cport_nr), getBMP085_temp(cport_nr),getBMP085_pressure(cport_nr), getBMP085_altitude(cport_nr));
  }
  return 0;
}


Если необходимо визуализировать данные, то как мне показалось достаточно быстрым является следующий способ: пишем данные в текстовый файл в столбец, а затем отображаем с помощью gnuplot.
gnuplot>> plot «data.txt»
Получаем такой график, здесь вначале я дышу на датчик DHT11, а потом дую на него феном и сушу воздух, по оси y проценты влажности, по х просто отчеты, их можно делать с любой периодичностью.

Рис. 5 Визуализация данных с помощью gnuplot

3) Путь Джедая, или выбери инструмент себе сам

Так как работа с СОМ-портом это достаточно древняя технология (но до сих пор активно использующаяся из-за простоты, надежности и легкой реализации) то библиотек написанных для этих целей под разные языки много. Чтобы работать с устройством на любом привычном языке нужно сформировать пакет согласно таблице, отправить его в порт, к которому подключена плата, подождать примерно 10 мс, а затем получить пакет с нужной информацией. Хорошие модули для работы с виртуальными COM-портами есть для Qt QtSerialPort, для perl Device:SerialPort, для Delphi ComPort Library и др.

Применение:

На самом деле область применения такого контроллера достаточно широка: можно написать экспертную систему, которая будет собирать данные о реальном внешнем мире и делать предсказания, например, погоды, в данном случае. Также можно применить эту систему для мониторинга в производственном помещении. Конечно, некоторые датчики имеют не ахти какие параметры (DHT11, 5% погрешность влажности), но в большинстве случаев и этого достаточно, чтобы вовремя просигнализировать, что «крыша то на складе прохудилась» и кругом лужи. Можно выдавать данные на какой-нибудь удаленный сервер, например, в проект «народный мониторинг.» С помощью MeteoBoard можно видеть как изменяется влажности в квартире, когда кипит чайник, когда открыта форточка, когда пришла куча друзей и надышали в комнате, это тоже датчик замечает. Возможностей масса, все зависит от фантазии разработчика.
Очень рад, что удалось сделать такой классный девайс, теперь благодаря его возможностям сможем решать свои задачи эффективнее и с меньшими затратами времени.

Видео 1. Считывание данных с устройства в консоль


Linux Ubuntu 12.04, GCC C

Видео 2. Работа с устройством через Python-код


Вин7, Python2.7 + PySerial
Дополнительная и информация

1)Библиотека MeteoBoard ссылка на GitHub
2)RS-232 for Linux and Windows
3)PySerial for Python
4)Perl COM-port lib

Другие наши проекты здесь
Нужен такой контроллер чтобы следить за климатом в серверной\холодильнике\за окном и начать делать свой умный дом?

Проголосовало 583 человека. Воздержалось 58 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Артур @avrfun
карма
27,7
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (68)

  • +5
    Тут вопрос в том, что написать это на ардуино не представляет труда и примеров куча, а есть всегда возможность прикрутить что-то «свое», а тут получается, что вот оно так сделано и все, уже на ножку не повесишь датчик открытия двери или еще чего. Ардуино уже настолько упрощено, что на мой взгляд упрощать просто не имеет особого смысла, разве что просто прошить его, поместить в красивый корпус и продавать как просто готовый девайс к компу (многим он несомненно придется по душе), а вот как платформа для разработки… зачем пытаться решить проблему которой нет, ардуино и так проста и примеров чего угодно в сети сотни.
    • +1
      Здесь ведь несколько другая задача, тут ставиться цель вынести логику управления в ПК. И сделать работу с устройством прозрачной, чтобы пользователь не задумывался о интерфейсах, способах инициализации и тд.
      • –1
        Я не спорю — оболочка для ПК это полезно, но для ее существования нет никаких причин сокращать универсальность ардуины, запаивая все намертво, можно как вариант вывести свободные пины для использования по усмотрению пользователя. Тут все же стоит разделять вопрос взаимодействия с ПК и схему платы.

        PS собрать самому всегда приятно, просто для души, а тут вроде и не совсем готовое решение, а вроде и свободы творчества нет.
        • +1
          Насчет свободных пинов это хорошая идея, спасибо, а насчет отсутствия свободы и творчества как раз наоборот. Здесь пользователь получает возможность манипулировать реальными данными, анализировать их, обрабатывать по своему усмотрению, творчество можно проявить в программе на ПК. Думаю, что не все хотят писать софт для МК, а здесь воткнул в USB и пиши управляющий софт под ПК.
          • +1
            наличие пинов под произвольные нужды может сделать проект очень универсальным, это будет интересная плата
  • +2
    Прочитав первые строки статьи, уже искал плату на Ebay… :) Конечно, не нашел. Только потом дочитал статью до конца. Хорошая идея, молодцы!
  • 0
    Я бы заказал парочку, если бы были следующие условия:
    1) Датчик давления работающий под водой
    2) Соответственно он же — был бы соединен с платной с помощью проводов, а не сидел бы на ней.
    3) Если бы можно было бы заменить датчики на более точные :)

    Но у меня да, другие цели, нежели мониторинг серверной комнаты.
    • +1
      Установленный датчик влажности имеет «старшего брата» полностью совместимого по интерфейсу, который мерит влажность в диапазоне 0-100, а точность 2%. У выносных температурных 0.5 С, хотя у всех свои требования, конечно. Датчик давления BMP085 вполне себе ничего :)
      • 0
        На влажность все равно, 0.5 С — много, хотелось бы 0.1, а какая у BMP085 точность?
        • 0
          у BMP085 как раз 0.1 С
          • 0
            Datasheet говорит, что у него как раз-таки точность не 0.1, а +-0.5 градуса при 25 градусах и +-1 градус в диапазоне от 0 до 65 градусов.

            А разрешение — да, 0.1 градуса.
      • 0
        Вот пример того, о чем я и писал — всегда нужно что-то доработать, был бы датчик прицеплен через гребенку, и вопрос его замены был делом секунды, равно как и провод нарастить было бы без проблем.
        • 0
          Я бы вот не отказался от такого готового аппарата, с датчиком давления, температуры и электропроводности :)
          Свой собрать времени нету, а готовые стоят баснословно.
    • 0
      1) Датчик давления работающий под водой
      Но у меня да, другие цели, нежели мониторинг серверной комнаты.


      Дайвинг, что ли?
      • 0
        нет, показания волнения.
        • 0
          1) Датчик давления работающий под водой

          А почему нет?

          Датчики давления воды
          Ну или как вариант MPX4115AP, с трубчатым отводом
          • 0
            Ну или как вариант MPX4115AP, с трубчатым отводом

            На одном конце трубки датчик, на другом мембрана, скажем от какого нибудь тонометра
            • 0
              Чисто теоретически — да, практически — нет.
              1) Сложно подобрать мембрану которая бы реагировала на мелкую волну и на крупную волну, находяся при этом на глубине.
              2) Коэффициент растяжения мембраны — нелинейная зависимость от давления
              3) Под водой — не на воздухе, не правильно подобранная мембрана будет менять свои свойства со временем. И никто не знает какие это временные промежутки.

              И еще можно привести много таких пунктов. Основной вывод из которых будет: купить датчик, который рекомендует изготовитель для работы под водой.
  • +2
    Мой вариант метео борда, в разработке
    image
    Датчики: SHT21, BMP085, шина 1-wire, измерения скорости ветра и осадков.
    Даниє передаються по RS-485 в NMEA сумесном протоколе.
    • 0
      что используете модбас или чистый RS-485?
      • 0
        чистый RS-485, включения передатчика только при одправке каждую секунду параметров.
      • 0
        модбас — для такого устройства, мне кажется не рациональным.

        1-Wire — между всеми датчиками
        RS-485/232 — между станцией и АРМ пользователя
        • 0
          Так и планирується. Комуникация между датчиками: I2C, 1-Wire. От станции до ARM RS-485.
    • 0
      чем измеряете ветер и осадки?
      • +4
        Для осадков (дожч) использования качельки из герконом
        image
        Для скорости ветра 3 полусфери. Сйом оборотов датчиком Хола.
        • 0
          интересное решение, спасибо за идею
          • +1
            интересное решение

            стандартное решение
    • 0
      мой вариант метеостанции, тоже пока в разработке (пока тока анемометр)
      habrahabr.ru/post/161991/
      • 0
        На счет анемометра єсть разжатий мотор HDD из удаленой катушкой и установленой К1116КП4. Сечас ищу хто можеть викатать полусфери из дисков 5 см из меди 0,8мм. Тогда можно пайкой сделать качественую конструкцию.
        • 0
          Оо… Полусферы? Tут широкий выбор:

          1) Используйте шарики для пингпонга
          2) Шарики с шарикового дезодоранта :)
          3) Полусферические контейнеры от бахил
          4) Большой выбор полусфер, может быть в каком нибудь игрушечном магазине (тарелочки, чашечки, ложечки)

          и т.д., и т.п.
    • 0
      Даниє передаються по RS-485 в NMEA сумесном протоколе.


      Не пойму, в совмещенном, т.е. к NMEA вы добавляете параметры (значения) с датчиков?
      И если используете (GPS) NMEA, зачем тут RS-485?

      Или я Вас не правильно понял?

      • 0
        RS-485 ето физический уровень, использований чтоби сенсор можна било отдалить от здания на растояния до 1 км в теории. NMEA протокол используєт строки такого формату: $WIx,DATA*hh Например для скорости и направления ветра єсть готовая заготовка: $--MWV,x.x,a,x.x,a*hh
        • 0
          Ясно, я Вас понял
          Можно было конечно просто упростить протокол, организовать вроде CSV-формата
      • 0
        А с использованиям $--MDA можна передать: barometric pressure, air and water temperature, humidity, dew point and wind speed and direction relative to the surface
        of the earth.
  • 0
    думаю, как минимум, датчик освещения должен быть выносным,
    если нужно будет в что-то вмонтировать, или какой-либо минимальный корпус.
  • 0
    Датчик влажности DHT-11, как правильно замечено в посте, неважнецкий: ниже 20% не меряет, выше 80 — тоже.
    Этой зимой, что у меня в квартире, что в офисе он показывал минимум, т. е. 20%.
    Судя по даташиту, рассчитан он на работу при 10-40 градусах, так что на улицу его не выставишь.
    • 0
      HIH-4010-004 Датчик влажности 0...100%, +-3.5%, 5V, отклик 15 с, -40...85°С, калибровочный паспорт
      • 0
        Он дороже, DHT11 30 — 50р, а HIH-4010-004 700 — 1000 р, во-вторых требует АЦП, чтобы сигнал с него снять, а затем требуется отдельная табличная процедура, чтобы данные получить. А здесь все просто, на выходе получаем нужные байты и все
        • +1
          Я брал HIH4000-004 за 750 р, да нужно АЦП но расчет не такой уж и сложный (можно глянуть у меня). Данные нужные есть в паспорте, формулы в даташите. Позже увидел DHT11 но прочитал характеристики увы мой вариант точней.
      • 0
        Ну или DHT-22 — он подешевле. Впрочем, я не «настоящий сварщик».
        • 0
          Я знаю где HIH-4010-004 500р., а 1000р. это наверно на каком нибудь чипе-дипе
      • 0
        DHT22/AM2302 Digital Temperature And Humidity Sensor по текущему курсу USD выходит ~145руб ($4.85)
  • 0
    А какая примерная стоимость платы планируется?
    • 0
      цена зависит от количества штук в партии, смотря сколько людей закажет.
      Сейчас, примерная цена 1000 р, когда определимся с размером партии цена точно упадет.
      • 0
        Комплектность только сразу базовую надо уточнить.
        Ибо очень немало зависит от стоимости самих датчиков — в РФ цены на них очень уж «кусаются», причем на все вообще.
        PS Хорошая цена, эдакий психологический предел да и за 2000р+ уже давно есть девайс в продаже, который уже нашел свою аудиторию, а вот сделать дешевле пока мало кому удавалось.
  • 0
    Что-то похожее мне приходило на ум: программно-аппаратный фреймворк для таких вот затей. У Arduino и прочих микроконтроллеров не хватает завершенности исполнения.

    Если бы это было уже в готовом герметичном корпусе с нужным классом защиты, кучой всякого обвеса (читай различных датчиков подключаемых через различные внешние интерфейсы), беспроводным модулем, GPS/ГЛОНАСС приемником, подключаемым внешним аккумулятором либо адаптером питания и набором программных библиотек для работы со всем этим, то цены не было бы такому устройству.

    Думаю в скором времени похожие устройства появятся.
    • 0
      На плате есть специальные отверстия чтобы можно было посадить в корпус. Также в корпусе остаются отверстия для выносных датчиков температуры, освещенности и щель для датчика влажности.
    • 0
      А на-на в метеоустройстве — GPS/ГЛОНАСС приемник? Ни проще ли к такому устройству подцеплять тотже GPS щилд?.. Ну если брать во внимание навигацию, то вы цены на ГЛОНАСС-модули видели вообще, и представляете соотношение цена (к) количеству спутников на орбите (касаемо ГЛОНАСС и GPS отдельно)?
      • 0
        Я говорю про универсальную платформу, которую можно использовать для различных целей. К тому же в случае с метеоустройством совсем не лишним будет знать координаты места в котором идет получение данных.

        Цены на ГЛОНАСС модули пока кусаются, но это пока. Про количество спутников не понял что Вы имели в виду.
        • 0
          К тому же в случае с метеоустройством совсем не лишним будет знать координаты места в котором идет получение данных.


          В случае с постоянным местом положения, думаю врятли нужно использовать такую периферию чтобы знать с некой периодичностью где находятся датчики/станция

          Цены на ГЛОНАСС модули пока кусаются, но это пока. Про количество спутников не понял что Вы имели в виду.


          Они ни то чтобы кусаются, они жрут карман полностью…

          Пример:

          Модуль / Цена / Количество действующих спутников на орбите
          SIM900 / около 500р. / 31 спутник
          NAVIOR-24 / около 1500р. / примерно 16 спутников

          Разницу скорее можно увидеть в точности определения координат, стандартного WGS 84
    • 0
      Куча устройств которые не нужны 90% пользователей только увеличат стоимость. Проще разъемов поставить, куда можно установить доп. оборудование. Для примера, в STM32VLD даже кварц менять можно.
    • 0
      Появятся, легко! НО как только предзаказы на них появятся и не ранее. Убедился уже многократно по опыту общения с разработчиками электроники. Большинство говорят «закажите у нас 100 штук и все будет в лучшем виде!», таковы особенности разработки в РФ и СНГ, рисковать затрачивая время и ресурсы на новую разработку не имея спроса заранее практически никто не хочет.
  • +1
    А не думали сделать текстовый интерфейс для com-порта? Тогда можно хоть bash-скриптами данные снимать, хоть в интерактивном режиме, и безо всяких библиотек.
    • 0
      обмен текстовый, кроме самих команд, они как числа проходят, но думаю эта идей может прижиться, спасибо
      • 0
        Я видимо не разобрался.

        У вас на картинке
        DeviceId   ParamId    \n
        004         002       010
        

        Значит, в порт будет отправлена последовательность байт 0x04 0x02 0x0A или строчка "004 002 010"?

        Во втором случае, я могу запросить данные, грубо говоря, командой echo 004 002 010 > /dev/ttyS0.

        <зануда_моде>
        В программировании с нуля обычно начинаются восьмиричные числа, поэтому 010 — это не 0x10 и не \n.
        </зануда_моде>
        • 0
          Отправлена будет последовательность байт 0x04 0x02 \n, а на выходе получим 0x04 0x02 и строка «35»
          Написано так с нулем впереди из того, что значения ограничены 255, то есть одним байтом. Возможно, вы правы насчет того, что полностью текстовый обмен лучше.
      • 0
        Еще стоило бы зашить варианты отклика, либо данные (показания) шуруются постоянно, либо отдаются по запросу
  • 0
    Заслуженный огромный "+" в топик и карму за проделанную работу!
    Советую только заменить DHT11 на DHT22? он поточнее будет.
    Все датчики на ebay.ru задешево легко находятся с бесплатной доставкой в течении 2-4 недель, проверено.
    Жаль только не привели пример в работе Вашего девайса по линку narodmon.ru/?id=N
    Рядом с Вами в Железногорске есть уже один девайс(meteo26.ru) ждем и Вас.
    PS Не возражаете против добавления Вашей реализации в Каталог проекта в т.ч. и на Заказ?
    Описание по аналогии с имеющимися на мыло проекта.
    • 0
      Спасибо, добавляйте. Описание отправлю.
  • 0
    По моему данное устройство правильнее было бы назвать не контроллер, а метеостанция с интерфейсом для подключения к ПК. Уже давно существуют мультиметры, осциллографы, счетчики и пр. измерительное оборудование в подобной концепции.
  • 0
    По опросу. Конечно, иметь готове решение, способное измерять температуру/давление/влажность, здорово, но оно выглядит вполне доступным для самостоятельной сборки, а тем более, если планируется на этой базе делать что-то дальше. Сложнее дело обстоит с системой контроля качества атмосферного воздуха. Собрать ее возможно, компоненты более менее доступны, но как откалибровать с привязкой к физическим параметрам и с учетом окружающей обстановки, чтобы хоть порог ПДК ловить более менее стабильно? Хочется такое решение для основных загрязнителей, вроде угарного газа, аммиака, сероводорода и т.п.
    • 0
      Вот тут ребята вполне неплохо реализовали и методику и девайс geiger.su/?p=83
      • 0
        По ссылке нашел про радиометр, еще упоминается запыленность воздуха, а я интересовался химическим загрязнением воздуха и доступной возможностью его метрического измерения, чтобы иметь не просто больше-меньше, а вполне объективные данные по концентрациям.
  • 0
    DS18b20 намного точнее DHT в плане температуры?
    Почему бы тогда не взять DHT22, он вроде получше?
    (сейчас как раз балуюсь с DHT22 через STM Discovery).
  • 0
    Небольшой оффтопик.
    Гады-китайцы (не скажу кто) уже полгода ищут у себя на складе DS18B20 на мой заказ. В наших местных магазинах они если и есть, то по клинически больным ценам.
    Не посоветует ли многоуважаемый all, где бы разжиться оными по цене хотя бы менее 100р за штучку?
    • 0
      Покупал хоть и в Китае, но без малейших нареканий 10 штук DS18B20 выходит примерно по 40р/шт (1.4$), если выберите лот с бОльшим кол-вом, например 100шт то выйдет уже 27руб(0.9$)

      PS Про сроки доставки — это уже косяк Почты Росии, судя по треку 90% времени доставки посылка находилась на складе в аэропорту в мск(иногда спб и новосиб) ибо из Китая уже была отметка об отправке авиапочтой, а о приеме не было ничего. Потом еще 3-5 дней ожидания на таможню, сортировку, доставку по РФ и вот оно дома.
      • 0
        Благодарствую. Ебеем как-то опасаюсь пользоваться, но попробую.
        Про сроки доставки в курсе, но в моём случае каждые две недели дрессированный китайский робот присылает мне шаблонные извинения на тему того, что на складе деталей нет и хз когда будут, так что или ждите, или отменяйте. Причём я один раз отменил, заказал другую позицию — та же история. Может, их уже с производства сняли и делают что-то поинтереснее?
        • 0
          Понимаю, поэтому сам заказал по началу 10шт дабы не сильно расстраиваться если что… но продавец не подвел, с тех пор у него же много что покупал.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.