Сегодня задумка, а точнее документирование процесса подключения датчика DS18B20 к контроллеру MegaD-2561 со всеми нюансами с которыми мне пришлось столкнуться – это делается для того, чтобы, когда буду все переносить со стенда на боевые использования я просто открыл свои наработки все воспроизвел от и до тем самым получив задуманное.

Схема сопряжения с MegaD-2561 (Ver 2.0)

Датчик DS18020 можно подключить к колодке XT2 (об этом кстати упомянуто в официальной документации:

Разъем XT2 можно использовать для подключения цифровых датчиков: DS18B20, DHT22, HTU21D, Si7021, SHT31, TMP117, BMP180, BMP280, BME280, BME680, MAX44009, OPT3001, FH1750, TSL2591, дисплеев SSD1306 и LCD1602 (PCF8574T), расширителе портов MCP23008, MCP23017 (MegaD-16I-XT, MegaD-16R-XT), PCA9685 (MegaD-16PWM), ADS1115, T6703/T67xx, HM3301, MLX90614, MCP4725, MCP4018, I2C-Encoder-V2, PTsensor, MCP9600, HC-SR04, считывателей ключей iButton (DS1990A), EM-Marine/Mifare (CP-Z2L/CP-Z2M,  Matrix II и подобных), модулей MegaD-2W и других цифровых устройств.

), к тому же к одной колодке можно подключить несколько датчиков, как на один порт (цифровой), так и на несколько, но так как проводки очень тонкие собирать их в один пучок слишком геморройно, проще использовать что на каждый порт свой датчик.

Ниже скриншот распиновки разъема XT2

Распиновка клеммника XT2 (зеленый).

Шаг №1: Беру датчик DS18B20 (он у меня в виде гильзы, а на конце 3 проводка: красный, черный, желтый), где

Датчик DS18B20 в виде гильзы.

  • Красный - это питание (+3.3V)
  • Черный - это земля (GND)
  • Желтый - это DATA, через него считываем формируемые датчиком показания

Подключаю датчик DS18B20 к разъему XT2 на контроллере:

  • 2 пин — это красный проводок
  • 3 пин — это черный проводок
  • 4 пин — это желтый проводок

Шаг №2: Далее открываю браузер и обращаюсь через URL адрес к контроллеру, у меня он от DHCP сервиса получил IP адрес: 172.33.33.130 (и пароль на него – это sec), получается вот так: http://172.33.33.130/sec, далее перехожу в порт "--XT2-- > P30"

Подключаюсь на IP адрес контроллера MegaD-2561

Чтобы порт работал с датчиком его нужно отконфигурировать:

  • Type: изменяю на DSen

и нажимаю Save

После чего MegaD перезапускается, обновляю вкладку браузера

  • Sen: изменяю на 1WBUS

и нажимаю Save

После чего MegaD перезапускается, обновляю вкладку браузера

вкладка где мы совершили переход в порт P30 теперь выглядит, так:

Так должны выглядеть настройки для порта P30 который будет работать с датчиком DS18B20.

 

Если перейти в "Device List", то она странице браузера отобразятся показания с датчика:

Результат отображения показаний с датчика.

Шаг №3: Самое главное/нужное, что можно не через Webинтерфейс обращаться к датчику, а через консоль путем формирования следующего запроса на получение информации с датчика:

ekzorchik@ekzhom:~$ curl --silent 'http://172.33.33.130/sec/?pt=30&cmd=list'

7ba176e0013c:25.31ekzorchik@ekzhom:~$

На заметку: В выводе результат с датчика строится по следующему принципу:

[адрес датчика]:[температура];[адрес датчика]:[температура];

т.е. если мы у нескольких датчиков скрутим проводки: черный, красный и желтый и подключим их в один порт на контроллере MegaD-2561, то показания будут разделены между собой символом точки с запятой, к примеру:

http://172.33.33.130/sec/?pt=30&cmd=list

7ba176e0013c:25.31; 7ba176e0012c:25.51

Контроллер автоматически каждые 30 секунд отправляет в шину команду на конвертацию температуры.

Если шина занята конвертацией, то в ответ вернется просто "Busy"

Но можно отправить такой запрос и вручную (или автоматически при опросе с сервера), вызвав URL вида

http://172.33.33.130/sec/?pt=32&cmd=conv

ekzorchik@ekzhom:~$ curl --silent 'http://172.33.33.130/sec/?pt=30&cmd=list' | cut -c 14-18

25.12 — температура.

Шаг №4: А если подключить два датчика к колодке XT2, как:

  • 2 пин — это красный проводок + красный проводок (+3.3V)
  • 3 пин — это черный проводок + черный проводок (GND)
  • 4 пин — это желтый проводок (D0)
  • 5 пин — это желтый проводок (D1)

Считываю показания с двух датчиков:

ekzorchik@ekzhom:~$ curl --silent 'http://172.33.33.130/sec/?pt=30&cmd=list' | cut -c 14-18

25.06

ekzorchik@ekzhom:~$ curl --silent 'http://172.33.33.130/sec/?pt=31&cmd=list' | cut -c 14-18

24.50

если второй датчик зажать в руке и подождать, то температура вырастет:

ekzorchik@ekzhom:~$ curl --silent 'http://172.33.33.130/sec/?pt=31&cmd=list' | cut -c 14-18

34.62

Шаг №5: Если же имеется исполнительный блок в лице MegaD-8170-R (Ver 1.0), то на нем есть порт"цифровой вход" для подключения цифровых датчиков и шин (например, DS18B20, считыватели 1-wire). Для этого порта отсутствует индикация на лицевой панели.

ниже скриншот и выделено красный цветом где на MegaD-8170-R этот порт и его обозначения, что и куда подключаем: GND, Вход, +3.3V

Куда подключаться датчик DS18B20 к исполнительному модулю MegaD-8170-R (Ver 1.0).

На заметку: К примеру, если исполнительный блок MegaD-8170-R подключен в колодку XP1 через шлейф, то чтобы в него перейти, открываем URL адрес обращения к контроллеру http://172.33.33.130/sec - "--MODS-- -> XP1" – переходим в порт P14 и опираясь на знания выше приводим настройки порта к виду работы с датчиком, т.е.:

  • Type: DSen
  • Sen: 1WBUS

Настройки цифрового порта P14 для работы с датчиком DS18B20.

Если при переходе в Device List у вас ничего нет, то обычно это значит либо датчик не исправен, либо Вы неправильно его подключили, т.е. что-то перепутали.

Вот только я не до конца еще узнал на какую длину можно подключаться данный датчик DS18B20 к контроллеру, думаю это будет отдельным изучением и по мере заметку буду дополнять.

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

На это прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.