Среда, 27.11.2024, 11:14 | RSS
Защита, контроль, управление
Как правильно подключить датчики DS18B20 UTP кабелем
AlexAW Дата: Пятница, 08.12.2017, 13:36 | Сообщение # 21
Группа: Пользователи
Сообщений: 310
Статус: Offline
Цитата viktor6 (
)
Ребята а сеть RS485 лучше будет работать или нет?
Лучше Как? Дальше - Да Быстрее - Нет Надежнее - да они оба надежны если все члены сети соблюдают протокол...
Zoolu Дата: Пятница, 08.12.2017, 14:47 | Сообщение # 22
Группа: Пользователи
Сообщений: 490
Статус: Offline
Цитата viktor6 (
)
Ребята а сеть RS485 лучше будет работать или нет?
Если соединишь так же, то будет так же глючить. Эти сети требуют шинной топологии.
viktor6 Дата: Суббота, 09.12.2017, 18:20 | Сообщение # 23
Группа: Пользователи
Сообщений: 76
Статус: Offline
Цитата Zoolu (
)
Эти сети требуют шинной топологии.
Один только вопрос в моём случае эту топологию можно сделать? И каким кабелем?Добавлено (09.12.2017, 18:20) ---------------------------------------------
Цитата Admin (
)
Попробуйте реализовать узел подключения так, как сделал Антон в последней версии кросс-платы
Сделал результат прежний не помогло. Как же эту топологию шины мне сделать?
Admin Дата: Суббота, 09.12.2017, 18:33 | Сообщение # 24
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
viktor6 , для начала нужно отбросить "луч", на котором висят датчики №4 и 5. Если датчики №1, 2, 3 нормально заработают, выходить с датчика №1 на датчик №4 и 5 "обраткой" Для этого кабели перекладывать не придется, достаточно перекоммутировать пары
bagotu Дата: Воскресенье, 18.02.2018, 12:36 | Сообщение # 25
Группа: Пользователи
Сообщений: 42
Статус: Offline
У кого какие идеи, как не испортить интерьер? Попалась вот такая статья: https://ab-log.ru/smart-house/ethernet/sensors-adapter-box "Жирный" конечно корпус для этого дела..., но уже что то Можно еще и так: https://ab-log.ru/smart-house/ethernet/megad-2561-ssd1306 Алфавитно-цифровые дисплеи на основе контроллера HD44780 Это как то уже не по современному и громоздко.
Admin Дата: Воскресенье, 18.02.2018, 13:29 | Сообщение # 26
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Да вариантов можно много разных придумать. Например, у меня датчики на кухне и балконе: А это дисплей в прихожей (в качестве корпуса использована крышка двойной розетки): Только не располагайте датчики слишком низко от пола.
viktor6 Дата: Понедельник, 30.04.2018, 10:57 | Сообщение # 27
Группа: Пользователи
Сообщений: 76
Статус: Offline
Всем привет нужна ваша помощь. Имею скрипт для матрицы max7219 и датчиков bmp180 и ds18b20. Так вот нужно чтобы когда отваливается датчик ds18b20 скрипт не падал а просто отображал ноль или ошибку. Не знаю почему но чтото стал отваливаться датчик
#!/usr/bin/env python # -*- coding: utf-8 -*- # /home/pi/test.py import os import glob import re import sys import datetime import time import commands import subprocess import smbus import Adafruit_BMP.BMP085 as BMP085 from luma.led_matrix.device import max7219 from luma.core.interface.serial import spi, noop from luma.core.render import canvas from luma.core.virtual import viewport from luma.core.legacy import text, show_message from luma.core.legacy.font import proportional, CP437_FONT, TINY_FONT, SINCLAIR_FONT, LCD_FONT, UKR_FONT serial = spi(port=0, device=0, gpio=noop()) device = max7219(serial, cascaded=4, block_orientation=-90) os.system('modprobe w1-gpio') os.system('modprobe w1-therm') base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28-1f653c126461')[0] #device_folder = glob.glob(base_dir + '28-21ee67000900')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): f = open(device_file, 'r') lines = f.readlines() f.close() return lines #CELSIUS CALCULATION def read_temp_c(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = int(temp_string) / 1000.0-1 # TEMP_STRING IS THE SENSOR OUTPUT, MAKE SURE IT'S AN INTEGER TO DO THE MATH temp_c = str(round(temp_c, 1)) # ROUND THE RESULT TO 1 PLACE AFTER THE DECIMAL, THEN CONVERT IT TO A STRING return temp_c #FAHRENHEIT CALCULATION sensor = BMP085.BMP085() while(True): #lcd.cursor_pos = (0, 0) #lcd.write_string("Temp: " + read_temp_c() + unichr(223) + "C") #lcd.cursor_pos = (1, 0) #lcd.write_string("Temp: " + read_temp_f() + unichr(223) + "F") t = time.strftime("%H:%M") d = time.strftime("%d/%m/%Y") y = (" Улица = " + read_temp_c() + " C") k = (' Комната = {0:0.1f} C'.format(sensor.read_temperature())) #message = 'Temp: " + read_temp_c() + unichr(223) + "C' msg = (d) show_message(device, msg, fill="white", font=proportional(LCD_FONT)) time.sleep(0) msg = (t) show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0.05) time.sleep(0) msg = (y) show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0.04) time.sleep(0) msg = (k) show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0.05) time.sleep(0) for offset in range(8): virtual.set_position((offset, offset))
Добавлено (30.04.2018, 10:57) --------------------------------------------- Не знаю правильно или нет но сделал так
#!/usr/bin/env python # -*- coding: utf-8 -*- # /home/pi/test.py import os import glob import re import sys import datetime import time import commands import subprocess import smbus import Adafruit_BMP.BMP085 as BMP085 from luma.led_matrix.device import max7219 from luma.core.interface.serial import spi, noop from luma.core.render import canvas from luma.core.virtual import viewport from luma.core.legacy import text, show_message from luma.core.legacy.font import proportional, CP437_FONT, TINY_FONT, SINCLAIR_FONT, LCD_FONT, UKR_FONT serial = spi(port=0, device=0, gpio=noop()) device = max7219(serial, cascaded=4, block_orientation=-90) def gettemp(id): try: mytemp = '' filename = 'w1_slave' f = open('/sys/bus/w1/devices/' + id + '/' + filename, 'r') line = f.readline() # read 1st line crc = line.rsplit(' ',1) crc = crc[1].replace('\n', '') if crc=='YES': line = f.readline() # read 2nd line mytemp = line.rsplit('t=',1) else: mytemp = 99999 f.close() return int(mytemp[1]) except: return 99999 if __name__ == '__main__': # Script has been called directly id = '28-5ee327126461' #print "Temp : " + '{:.3f}'.format(gettemp(id)/float(1000)) #FAHRENHEIT CALCULATION sensor = BMP085.BMP085() while(True): #lcd.cursor_pos = (0, 0) #lcd.write_string("Temp: " + read_temp_c() + unichr(223) + "C") #lcd.cursor_pos = (1, 0) #lcd.write_string("Temp: " + read_temp_f() + unichr(223) + "F") t = time.strftime("%H:%M") d = time.strftime("%d/%m/%Y") y = (" Улица = " + '{:.1f} C'.format(gettemp(id)/float(1000))) k = (' Комната = {0:0.1f} C'.format(sensor.read_temperature())) #message = 'Temp: " + read_temp_c() + unichr(223) + "C' msg = (d) show_message(device, msg, fill="white", font=proportional(LCD_FONT)) time.sleep(0) msg = (t) show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0.05) time.sleep(0) msg = (y) show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0.04) time.sleep(0) msg = (k) show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0.05) time.sleep(0) for offset in range(8): virtual.set_position((offset, offset))
Сообщение отредактировал viktor6 - Понедельник, 30.04.2018, 11:00
Admin Дата: Понедельник, 30.04.2018, 13:55 | Сообщение # 28
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Цитата viktor6 (
)
Так вот нужно чтобы когда отваливается датчик ds18b20 скрипт не падал а просто отображал ноль или ошибку.
Видимо, все же не 18В20, а BMP085? Да, с этой проблемой нужно разобраться, по ней возникает очень много вопросов, когда ставят систему на "голую" Raspberry Pi (без этого датчика) и доступ по http отсутствует, пока не закомментируешь bmp в конфиг-файле. Так же доступ отваливается, если датчик оказывается в обрыве или неисправным.
T2M © 2024 Сайт управляется системой uCoz