Sounds like you can move ahead, and learn a little python.
--- Graham

==

On Fri, Jun 16, 2017 at 4:01 PM, <[email protected]> wrote:

> now I can read :)
>
> this script works
>
> import smbus
>
> # General i2c device class so that other devices can be added easily
> class i2c_device:
> def __init__(self, addr, port):
> self.addr = addr
> self.bus = smbus.SMBus(port)
>
> def write_i2c_block_data(self, byte, array):
> self.bus.write_i2c_block_data(self.addr, byte, array)
>
> def read_nbytes_data(self, data, n): # For sequential reads > 1 byte
> return self.bus.read_i2c_block_data(self.addr, data, n)
>
> ph = i2c_device(0x65, 2)
> ph.write_i2c_block_data(0x05,[0x00]) // off LED
> print(ph.read_nbytes_data(0x00, 25)) // read all registers
>
>
>
> On Friday, June 16, 2017 at 1:34:04 PM UTC-4, Sebastián Sáez wrote:
>>
>> This are the value in hexadecimal of the 25 registers in the sensor,
>> check with datasheet and it's ok
>>
>> 1,4,1,65,0,1,0,1,0,0,0,0,0,0,0,0,9,C4,0,0,9,C4,0,0,16
>>
>>
>> I used arduino to read this, I discovered that what I read with python is
>> garbage
>>
>> On Friday, June 16, 2017 at 12:43:14 PM UTC-4, Sebastián Sáez wrote:
>>>
>>> Hi Graham, thanks
>>>
>>> here more info
>>>
>>> HW: Beaglebone seeedstudio green wireless
>>>> OS: Debian GNU/Linux 8.8 (jessie)
>>>> Kernel: Linux beaglebone 4.4.30-ti-r64
>>>> Python: Python 2.7.9
>>>
>>>
>>> I made a custom cape, the sensor it's power with 3.3v and conected to
>>> I2C_2 through an isolator
>>>
>>> SDA -> P9.20
>>> SCL -> P9.19
>>>
>>>
>>> <https://lh3.googleusercontent.com/-LQRB-CkLTZo/WUQGKC1Q1bI/AAAAAAAADKA/bTmen-ZCt0gd_AsHUnmU78UUmiNiZ3-9wCLcBGAs/s1600/Untitled.png>
>>>
>>> The HW it's OK, I check with an arduino and example code and I can write
>>> registers with my python script on the beaglebone.
>>>
>>> The ph sensor is in 0x65 address and other Atlas sensor in 0x64
>>>
>>> debian@beaglebone:~$ i2cdetect -y -r 2
>>>      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
>>> 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
>>> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>> 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>> 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>> 50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
>>> 60: -- -- -- -- 64 65 -- -- -- -- -- -- -- -- -- --
>>> 70: -- -- -- -- -- -- -- --
>>>
>>> Now I can write register with this script (can on/off onboard LED) but
>>> when I try to read all 25 register I get this
>>>
>>>
>>>> 1, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
>>>> 0
>>>
>>>
>>> The first 2 bytes are the ID and FW, but I expect the rest to have
>>> values such as the pH (registers 0x16, 0x17, 0x18, 0x19) but I am getting
>>> only 0 (garbage)
>>>
>>> Python script
>>> import smbus
>>> import time
>>>
>>> class i2c_device:
>>> def __init__(self, addr, port):
>>> self.addr = addr
>>> self.bus = smbus.SMBus(port)
>>>
>>> def write(self, byte):
>>> self.bus.write_byte(self.addr, byte)
>>>
>>> def write_i2c_block_data(self, byte, array):
>>> self.bus.write_i2c_block_data(self.addr, byte, array)
>>>
>>> def read(self):
>>> return self.bus.read_byte(self.addr)
>>>
>>> def read_nbytes_data(self, data, n): # For sequential reads > 1 byte
>>> return self.bus.read_i2c_block_data(self.addr, data, n)
>>>
>>> ph = i2c_device(0x65, 2)
>>> ph.write(0x00)
>>> i=0
>>> while (i <= 25):
>>> print(ph.read())
>>> time.sleep(0.5)
>>> i+=1
>>>
>>>
>>>
>>>
>>> On Thursday, June 15, 2017 at 10:38:28 PM UTC-4, Graham wrote:
>>>>
>>>> OK.
>>>> Let's start with some background information.
>>>> What model of Beaglebone?
>>>> What version of OS, kernel?
>>>> Which version of Python?
>>>> How is the pH sensor hooked to the Beaglebone?
>>>> What Voltage are you using to power the pH sensor?
>>>>
>>>> Now some basics to see if the I2C bus is running
>>>>
>>>> sudo apt-get install i2c-tools
>>>>
>>>> now run
>>>> i2cdetect -y -r 1
>>>> what do you get?
>>>>
>>>> now run
>>>> i2cdetect -y -r 2
>>>> what do you get?
>>>>
>>>> When you say that you get "garbage" what do you mean?
>>>> What do you actually get? errors? tracebacks? obviously wrong data, but
>>>> no reported errors?
>>>>
>>>> --- Graham
>>>>
>>>> ==
>>>>
>>>> On Thursday, June 15, 2017 at 5:38:58 PM UTC-5, Sebastián Sáez wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'm writing a python script to communicate via i2c with the ph oem
>>>>> sensor from Atlas Scientific.
>>>>>
>>>>> https://www.atlas-scientific.com/product_pages/oem/oem_ph.html
>>>>> https://www.atlas-scientific.com/_files/_datasheets/_oem/pH_
>>>>> oem_datasheet.pdf
>>>>>
>>>>> I already tried with the i2c module of mraa and smbus without luck.
>>>>> Now I am trying to translate this arduino example from Atlas to python
>>>>> but I read garbage
>>>>>
>>>>>
>>>>> Any suggestions?, attached the full example arduino code
>>>>>
>>>>>
>>>>> *Atlas arduino code*
>>>>> byte i2c_device_address=0x65;
>>>>> byte starting_register=0x00
>>>>> byte device_type;
>>>>> byte version_number;
>>>>> Wire.beginTransmission(i2c_device_address);
>>>>> Wire.write(staring_register);
>>>>> Wire.endTransmission();
>>>>> Wire.requestFrom(i2c_device_address,(byte)2);
>>>>> device_type = Wire.read();
>>>>> version_number = Wire.read();
>>>>> Wire.endTransmission();
>>>>>
>>>>>
>>>>> *My python script*
>>>>> import smbus
>>>>>
>>>>> # General i2c device class so that other devices can be added easily
>>>>> class i2c_device:
>>>>>  def __init__(self, addr, port):
>>>>>  self.addr = addr
>>>>>  self.bus = smbus.SMBus(port)
>>>>>
>>>>>  def write(self, byte):
>>>>>  self.bus.write_byte(self.addr, byte)
>>>>>
>>>>>  def read(self):
>>>>>  return self.bus.read_byte(self.addr)
>>>>>
>>>>>  def read_nbytes_data(self, data, n): # For sequential reads > 1 byte
>>>>>  return self.bus.read_i2c_block_data(self.addr, data, n)
>>>>>
>>>>> ph = i2c_device(0x65, 2)
>>>>> ph.write(0x00)
>>>>> device_type = ph.read()
>>>>> version_number = ph.read()
>>>>> print(device_type)
>>>>> print(version_number)
>>>>>
>>>>>
>>>>> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "BeagleBoard" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/beagleboard/Lyxv7E3yIvs/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/beagleboard/8d476212-153b-4816-aae1-7216e00e8994%40googlegroups.com
> <https://groups.google.com/d/msgid/beagleboard/8d476212-153b-4816-aae1-7216e00e8994%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/CANN_KV5xn-XXxhTFDghbNO6Fp9-SnvqMdw_YEEd%2BAYzyn6iKTg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to