Эмулятор DS18B20 для ардуино.
Добрый день.
Есть задача установленно GSM устройство которое собирает температуру с датчиков DS18B20. Нужно температуру с этих же датчиков вывести на ЖК экран arduino.
Переключать 1wire через реле как-то некрасиво.
С двумя устройствами "чтения" на 1 шине боюсь будут частые коллизии. (Или я ошибаюсь?)
Поэтому, я думаю правильнее, будет собрать на arduino некий буффер в котором будет 1 раз в секунду обновляться температура по датчикам. А GSM модуль подключить к arduino, что бы он считывал температуру оттуда.
Посколько GSM модуль ничего кроме 1 wire не знает, то нужно сэмулировать несколько датчиков DS18B20.
Вот хотел бы услышать комментарии насколько это реально. И в правильном ли направлении я копаю.
Может есть более простое решение которое я не увидел?
Заранее спасибо.
Павел.
Re: Эмулятор DS18B20 для ардуино.
Правильно ли я понял задачу?
1. Есть n датчиков 18b20
2. Есть GSM модуль, который умеет с ними работать
3. Нужно разработать устройство, которое не будет мешать работе первых двух пунктов, но будет при этом показывать температуру датчиков.
Честно говоря, я подозреваю, что полностью эмулировать работу 1-wire довольно геморойное занятие. Примеры с домофонными ключами есть в большом количестве, но эти примеры не имеют в себе кода, который реализуется при подключении большого количества датчиков - процедуры получения списка подключенных датчиков, опрос конкретного и так далее.
А датчики подключены по двум проводам или по трем?
Re: Эмулятор DS18B20 для ардуино.
Думаю, что проще всего определить как часто проводит опрос датчиков GSM модуль и вклиниться между его измерениями, если измерения производятся с какой-то периодичностью.
Существует вероятность, что GSM модуль даже нормально отнесется к тому, что его линией будут дергать туда-сюда. По крайней мере такая реализация GSM модуля, на мой взгляд, наиболее простая.
Re: Эмулятор DS18B20 для ардуино.
Да, задача именно такая.
С эмуляцией не так просто. Но мне кажется и каких-то очень сложных засад быть не должно. Там не такое большое количество сообщений. Да и можно писать не унифицированно, а под конкретные датчики. Будет несколько проще.
Проблему с переключением вижу в том, что я хочу, что бы на arduino показания были актуальные. Ну типа раз в секнуду обновлять. Поскольку датчиков 5 то все за секунду не обновяться, как я понимаю там ощутимое время затрачивается на получения результата.
Значит arduino займет почти все время на 1wire.
Вообщем, хотелось бы сделать идеально :)))))
Датчики пока на паразитном питании, но не проблема переделать на 3 провода. Понятно, что в варианте с реле лучше сделать 3 провода.
Павел.
Re: Эмулятор DS18B20 для ардуино.
Я не помню можно ли производить измерения несколькими датчиками при паразитном питании, но при обычном питании - точно можно. Выдается команда "всем измерять температуру". А потом через некоторое время (зависит от точности) последовательно читаются данные со всех датчиков.
Поскольку GSM модуль наверняка работает не только с датчиками, находящимися с ним в комплекте (определенными ID), то процедуру опроса присутствующих датчиков придется эмулировать, что, если не найти исходников, будет некоторый геморрой.
Выясни как насколько регулярно модуль опрашивает датчики (хоть вольтметром).
У тебя температура может настолько часто меняться? Я думал, что gsm модуль обычно в домах используется, а там температура каждую секунду меняться не будет.
Re: Эмулятор DS18B20 для ардуино.
Да, можно несколько датчиков вешать на паразитном питании.
Это я в машину хочу сделать. Я хотел еще сделать некоторое усреднение по 5 секундам, но данные желательно получать каждую секунду, что бы было, что усреднять.
На даче у меня то же это работает. Там я хотел собирать информацию по датчикам в БД, но тут, конечно не нужно каждую секунду записывать. Раз в минуту "за глаза".
Вообщем, подумав, в машине можно реле переключать при включении зажигания: т.е. выключено зажигание- GSM, включено - arduino.
А на даче переключать реле раз в минуту перед считыванием ардуиной.