Сегодня задумка, а точнее документирование процесса подключения датчика DS18B20
к контроллеру MegaD-2561
со всеми нюансами с которыми мне пришлось столкнуться – это делается для того, чтобы, когда буду все переносить со стенда на боевые использования я просто открыл свои наработки все воспроизвел от и до тем самым получив задуманное.
Датчик 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
Шаг №1:
Беру датчик DS18B20
(он у меня в виде гильзы, а на конце 3 проводка: красный, черный, желтый
), где
Красный - это питание (+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"
Чтобы порт работал с датчиком его нужно отконфигурировать:
Type: изменяю на DSen
и нажимаю Save
После чего MegaD
перезапускается, обновляю вкладку браузера
Sen: изменяю на 1WBUS
и нажимаю Save
После чего MegaD
перезапускается, обновляю вкладку браузера
вкладка где мы совершили переход в порт P30
теперь выглядит, так:
Если перейти в "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
На заметку: К примеру, если исполнительный блок MegaD-8170-R
подключен в колодку XP1
через шлейф, то чтобы в него перейти, открываем URL
адрес обращения к контроллеру http://172.33.33.130/sec - "--MODS-- -> XP1"
– переходим в порт P14
и опираясь на знания выше приводим настройки порта к виду работы с датчиком, т.е.:
Type: DSen
Sen: 1WBUS
Если при переходе в Device List
у вас ничего нет, то обычно это значит либо датчик не исправен, либо Вы неправильно его подключили, т.е. что-то перепутали.
Вот только я не до конца еще узнал на какую длину можно подключаться данный датчик DS18B20
к контроллеру, думаю это будет отдельным изучением и по мере заметку буду дополнять.
А пока я думаю, что можно подвести итог, я для себя разобрал каким образом вот взяв в руки контроллер и датчик подключить его и снять с него показания.
На это прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.