• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

CAP33

Участники
  • Публикации

    7
  • Зарегистрирован

  • Посещение

  • Days Won

    9

Репутация

1 Neutral

О CAP33

  • Звание
    Новичок

Посетители профиля

65 просмотров профиля
  1. В директории /usr/lib/python3.6 нужно создать файл onionGpio.py и вставить в него этот код: import sys __version__ = "0.1" _EXIT_SUCCESS = 0 _EXIT_FAILURE = -1 GPIO_BASE_PATH = '/sys/class/gpio' GPIO_EXPORT = GPIO_BASE_PATH + '/export' GPIO_UNEXPORT = GPIO_BASE_PATH + '/unexport' GPIO_PATH = GPIO_BASE_PATH + '/gpio%d' GPIO_VALUE_FILE = 'value' GPIO_DIRECTION_FILE = 'direction' GPIO_ACTIVE_LOW_FILE = 'active_low' _GPIO_INPUT_DIRECTION = 'in' _GPIO_OUTPUT_DIRECTION = 'out' _GPIO_OUTPUT_DIRECTION_LOW = 'low' _GPIO_OUTPUT_DIRECTION_HIGH = 'high' _GPIO_ACTIVE_HIGH = 0 _GPIO_ACTIVE_LOW = 1 class OnionGpio: """Base class for sysfs GPIO access""" def __init__(self, gpio, verbose=0): self.gpio = gpio self.path = GPIO_PATH%(self.gpio) self.verbose = verbose if self.verbose > 0: print ('GPIO%d path: %s'%(self.gpio, self.path)) def _initGpio(self): """Write to the gpio export to make the gpio available in sysfs""" with open(GPIO_EXPORT, 'w') as fd: fd.write(str(self.gpio)) fd.close() return _EXIT_SUCCESS return _EXIT_FAILURE def _freeGpio(self): """Write to the gpio unexport to release the gpio sysfs instance""" with open(GPIO_UNEXPORT, 'w') as fd: fd.write(str(self.gpio)) fd.close() return _EXIT_SUCCESS return _EXIT_FAILURE # value functions def getValue(self): """Read current GPIO value""" # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_VALUE_FILE value = 0 with open(gpioFile, 'r') as fd: value = fd.read() fd.close() # release the gpio sysfs instance status = self._freeGpio() return value return _EXIT_FAILURE def setValue(self, value): """Set the desired GPIO value""" ret = _EXIT_FAILURE # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_VALUE_FILE with open(gpioFile, 'w') as fd: fd.write(str(value)) fd.close() ret = _EXIT_SUCCESS # release the gpio sysfs instance status = self._freeGpio() return ret return _EXIT_FAILURE # direction functions def getDirection(self): """Read current GPIO direction""" # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_DIRECTION_FILE direction = _EXIT_FAILURE # read from the direction file with open(gpioFile, 'r') as fd: direction = fd.read() fd.close() # release the gpio sysfs instance status = self._freeGpio() return direction return _EXIT_FAILURE def _setDirection(self, direction): """Set the desired GPIO direction""" ret = _EXIT_FAILURE # check the direction argument if direction != _GPIO_INPUT_DIRECTION and direction != _GPIO_OUTPUT_DIRECTION and direction != _GPIO_OUTPUT_DIRECTION_LOW and direction != _GPIO_OUTPUT_DIRECTION_HIGH: return _EXIT_FAILURE # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_DIRECTION_FILE # write to the direction file with open(gpioFile, 'w') as fd: fd.write(direction) fd.close() ret = _EXIT_SUCCESS # release the gpio sysfs instance status = self._freeGpio() return ret return _EXIT_FAILURE def setInputDirection(self): ret = self._setDirection(_GPIO_INPUT_DIRECTION) return ret def setOutputDirection(self, initial=-1): argument = _GPIO_OUTPUT_DIRECTION if initial == 0: argument = _GPIO_OUTPUT_DIRECTION_LOW elif initial == 1: argument = _GPIO_OUTPUT_DIRECTION_HIGH ret = self._setDirection(argument) return ret # active-low functions def getActiveLow(self): """Read if current GPIO is active-low""" # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_ACTIVE_LOW_FILE activeLow = _EXIT_FAILURE with open(gpioFile, 'r') as fd: activeLow = fd.read() fd.close() if self.verbose > 0: print ('onionGpio:getActiveLow:: Reading %s file ... Read %s'%(gpioFile, activeLow)) # release the gpio sysfs instance status = self._freeGpio() return activeLow return _EXIT_FAILURE def _setActiveLow(self, activeLow): """Set the desired GPIO direction""" ret = _EXIT_FAILURE # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_ACTIVE_LOW_FILE if activeLow == _GPIO_ACTIVE_HIGH or activeLow == _GPIO_ACTIVE_LOW: with open(gpioFile, 'w') as fd: if self.verbose > 0: print ('onionGpio:_setActiveLow:: Writing %s to %s file'%(str(activeLow), gpioFile)) fd.write(str(activeLow)) fd.close() ret = _EXIT_SUCCESS # release the gpio sysfs instance status = self._freeGpio() # note: active_low setting is reset when the gpio sysfs interface is released! return ret return _EXIT_FAILURE def setActiveHigh(self): ret = self._setActiveLow(_GPIO_ACTIVE_HIGH) return ret def setActiveLow(self): ret = self._setActiveLow(_GPIO_ACTIVE_LOW) return ret Не забудьте сохранить. Теперь вы можете пользоваться библиотекой onionGpio на Python 3.
  2. Я не ошибся в названии модуля. Я делал по инструкции: https://docs.onion.io/omega2-docs/gpio-python-module.html. Только заменил python-light на python3. PS Я уже решил проблему. Взял файл данной библиотеки от python 2.7 и переделал для python 3, как указано здесь: https://community.onion.io/topic/2590/oniongpio-for-python3/4.
  3. Всем привет! Мне понадобилось поработать с контактами GPIO на Omega-2+. Программирую на Python3. Установил модуль: root@Omega-D90D:~# opkg install python3 pyOnionGpio Package python3 (3.6.0-2) installed in root is up to date. Installing pyOnionGpio (0.2-1) to root... Downloading http://repo.onion.io/omega2/packages/onion/pyOnionGpio_0.2-1_mipsel_24kc.ipk Installing python-base (2.7.14-5) to root... Downloading http://downloads.lede-project.org/releases/17.01-SNAPSHOT/packages/mipsel_24kc/packages/python-base_2.7.14-5_mipsel_24kc.ipk Configuring python-base. Configuring pyOnionGpio. Импортировал модуль: import onionGpio Но при запуске программы через Python3 возникает ошибка: ModuleNotFoundError: No module named 'onionGpio' Подскажите, это я где-то косячу, или проблема в другом?
  4. Идея не плохая, да и с программой в принципе заморачиваться не придётся т.к. всё написано в документации к ADC Expansion. Попробую закупить пару микросхем.
  5. Действительно, почему-то картинка не загружается. Я прикрепил её к этому сообщению. Я не провит питона. Насколько я понял, сначала надо указать регистры [55H] Затем прочитать память [AAH] И наконец отправить команду на преобразование [3CH] Я сам не очень пойму, какие команды должен вводить. Про них написано в даташите стр. 6-10, но я всё равно не могу разобраться. Ссылка на даташит Там приводится вот эта команда: (TA1=(T7:T0), TA2=(T15:T8)) Но я не понимаю, что в ней и для чего.
  6. Всем привет. Я хочу подключить к моей Omega-2+ аналогово цифровой преобразователь DS2450 по шине 1-wire. Подключаю по этой схеме: В качестве аналогового датчика использую фоторезистор. Первое, что я делаю, это регистрирую мастер 1-wire: insmod w1-gpio - Custom bus0 = 0,19,0 Затем я проверяю соединение: cat /sys/devices/w1_bus_master1/w1_master_slave_counт 1 Вывод адресов подключенных устройств: cat / sys / devices / w1_bus_master1 / w1_master_slaves 20-0000000a2208 Прежде чем читать данные из этого АЦП, я должен сначала настроить каналы. Для этого мне нужно ввести определенную команду, но я не знаю, как это сделать. Я писал на официальный форум omega, а также в техподдержку Onion и Maxim Integrated, но нигде мне не помогли. Последняя надежда на ваш форум. PS. Я знаю, что Onion выпустила модули АЦП к Omega-2, но DS2450 у меня есть в наличии, да и сами модули не дешёвые. Если уж и здесь вы не знаете, как мне помочь, то хотябы подскажите способы подключения других микросхем АЦП. Спасибо. cat / sys / devices / w1_bus_master1 / w1_master_slaves 20-0000000a2208
  7. Всем привет, подскажите, пожалуйста, есть ли какие-либо условия для использования microSD карты в Omega-2? Например минимальный/максимальный размер, скорость и т.д.