Trinkey_QT2040_Enviro_Gadget 2

Adafruit's tiny microcontroller platform. Please tell us which board you are using.
For CircuitPython issues, ask in the Adafruit CircuitPython forum.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

ok I thought I had done that already. Strange. Will I need to set the environment variable everytime or should I add it to PATH?

Code: Select all

>>> import os
>>> os.environ.get('BLINKA_U2IF')
'1'
>>> import board
>>> dir(board)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

User avatar
adafruit_support_carter
 
Posts: 29168
Joined: Tue Nov 29, 2016 2:45 pm

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by adafruit_support_carter »

The environment variable does not need to be set every time before running Python. Just once per terminal session. Adding to PATH would not fix this. Not sure how this is done on a Mac, but it'd be something like adding it to .bashrc.

Now the environment variable is returning as expected, but the board listing is not.

Try the basic connection test:
https://learn.adafruit.com/circuitpytho ... 40-3098088

Code: Select all

$ python3
Python 3.8.10 (default, Mar 13 2023, 10:26:41) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hid
>>> device = hid.device()
>>> device.open(0x239A, 0x0109)
>>> 

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

adafruit_support_carter wrote: Fri May 26, 2023 2:26 pm The environment variable does not need to be set every time before running Python. Just once per terminal session. Adding to PATH would not fix this. Not sure how this is done on a Mac, but it'd be something like adding it to .bashrc.

Now the environment variable is returning as expected, but the board listing is not.

Try the basic connection test:
https://learn.adafruit.com/circuitpytho ... 40-3098088

Code: Select all

$ python3
Python 3.8.10 (default, Mar 13 2023, 10:26:41) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hid
>>> device = hid.device()
>>> device.open(0x239A, 0x0109)
>>> 

Thanks, that's what I meant. I added it to my .bash_profile and restarted Terminal.


I ran the above commands and nothing returns. Running through these Mac OSX steps for the install (again) just to make sure I have all the homebrew packages installed. I am pretty sure I covered this already, but might as well double check
Last edited by dpuerto on Fri May 26, 2023 2:36 pm, edited 1 time in total.

User avatar
adafruit_support_carter
 
Posts: 29168
Joined: Tue Nov 29, 2016 2:45 pm

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by adafruit_support_carter »

No return is good. That means it's successfully finding and opening the Trinkey with u2if software on it.

Next thing to check would be the board library itself, or the Blinka install in general.

How did you originally install Blinka?

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

Following the directions from the link you sent

https://learn.adafruit.com/circuitpytho ... co/mac-osx

Code: Select all

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: adafruit-blinka in /Library/Python/3.8/site-packages (8.19.0)
Requirement already satisfied: Adafruit-PlatformDetect>=3.13.0 in /Library/Python/3.8/site-packages (from adafruit-blinka) (3.46.0)
Requirement already satisfied: Adafruit-PureIO>=1.1.7 in /Library/Python/3.8/site-packages (from adafruit-blinka) (1.1.10)
Requirement already satisfied: pyftdi>=0.40.0 in /Library/Python/3.8/site-packages (from adafruit-blinka) (0.54.0)
Requirement already satisfied: adafruit-circuitpython-typing in /Library/Python/3.8/site-packages (from adafruit-blinka) (1.9.2)
Requirement already satisfied: pyusb!=1.2.0,>=1.0.0 in /Library/Python/3.8/site-packages (from pyftdi>=0.40.0->adafruit-blinka) (1.2.1)
Requirement already satisfied: pyserial>=3.0 in /Library/Python/3.8/site-packages (from pyftdi>=0.40.0->adafruit-blinka) (3.5)
Requirement already satisfied: adafruit-circuitpython-busdevice in /Users/dpuerto/Library/Python/3.8/lib/python/site-packages (from adafruit-circuitpython-typing->adafruit-blinka) (5.2.5)
Requirement already satisfied: adafruit-circuitpython-requests in /Library/Python/3.8/site-packages (from adafruit-circuitpython-typing->adafruit-blinka) (1.13.2)
Requirement already satisfied: typing-extensions~=4.0 in /Library/Python/3.8/site-packages (from adafruit-circuitpython-typing->adafruit-blinka) (4.5.0)



Doing a software update to see if the new 13.4 mac os Ventura makes a difference...

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

Code: Select all

>>> import os
>>> os.environ.get('BLINKA_U2IF')
'1'
>>> import board
>>> dir(board)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
>>> exit()
➜  sensors git:(master) ✗ pip3 install --upgrade adafruit-blinka
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: adafruit-blinka in /Library/Python/3.8/site-packages (8.19.0)
Requirement already satisfied: Adafruit-PlatformDetect>=3.13.0 in /Library/Python/3.8/site-packages (from adafruit-blinka) (3.46.0)
Requirement already satisfied: Adafruit-PureIO>=1.1.7 in /Library/Python/3.8/site-packages (from adafruit-blinka) (1.1.10)
Requirement already satisfied: pyftdi>=0.40.0 in /Library/Python/3.8/site-packages (from adafruit-blinka) (0.54.0)
Requirement already satisfied: adafruit-circuitpython-typing in /Library/Python/3.8/site-packages (from adafruit-blinka) (1.9.2)
Requirement already satisfied: pyusb!=1.2.0,>=1.0.0 in /Library/Python/3.8/site-packages (from pyftdi>=0.40.0->adafruit-blinka) (1.2.1)
Requirement already satisfied: pyserial>=3.0 in /Library/Python/3.8/site-packages (from pyftdi>=0.40.0->adafruit-blinka) (3.5)
Requirement already satisfied: adafruit-circuitpython-busdevice in /Users/dpuerto/Library/Python/3.8/lib/python/site-packages (from adafruit-circuitpython-typing->adafruit-blinka) (5.2.5)
Requirement already satisfied: adafruit-circuitpython-requests in /Library/Python/3.8/site-packages (from adafruit-circuitpython-typing->adafruit-blinka) (1.13.2)
Requirement already satisfied: typing-extensions~=4.0 in /Library/Python/3.8/site-packages (from adafruit-circuitpython-typing->adafruit-blinka) (4.5.0)
➜  sensors git:(master) ✗ 

no idea :-\ it seems like something is wrong with either board or blinka like you mentioned but I am not sure where

User avatar
adafruit_support_carter
 
Posts: 29168
Joined: Tue Nov 29, 2016 2:45 pm

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by adafruit_support_carter »

The board module looks wrong for some reason. Try the reinstall again, but with a force-reinstall:

Code: Select all

pip3 install --upgrade --force-reinstall adafruit-blinka

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

I did the force re-install. It was success and then I tried to run everything again but the same output...

Should I delete everything in my ~/Library/Python/3.8/site-packages/ directory and try to reinstall?

User avatar
adafruit_support_carter
 
Posts: 29168
Joined: Tue Nov 29, 2016 2:45 pm

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by adafruit_support_carter »

Can you post again what dir(board) is outputting now. Want to make sure that matches expected output before going further.

Code: Select all

$ python3
Python 3.8.10 (default, Mar 13 2023, 10:26:41) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import board
>>> dir(board)
['BUTTON', 'I2C', 'NEOPIXEL', 'SCL', 'SDA', '__blinka__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__repo__', '__spec__', '__version__', 'ap_board', 'board_id', 'detector', 'pin', 'sys']
>>>

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

Code: Select all

>>> import board
>>> dir(board)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
>>> 

User avatar
adafruit_support_carter
 
Posts: 29168
Joined: Tue Nov 29, 2016 2:45 pm

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by adafruit_support_carter »

Oh, same output there. Sorry, though maybe the reinstall had gotten things a little further.

It does seem like the Python setup is in an odd state. Not sure what it's actually importing there.

What value is in the file parameter?

Code: Select all

>>> import board
>>> print(board.__file__)
Might help to know what that shows in terms of what "board" library it's actually importing.

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

It printed:

/Users/dpuerto/Sites/XXXX.com/sensors/board/__init__.py

The __init__.py is blank but there is a qt2040_trinkey_u2if.py in the /board/ directory

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

I replaced the contents of __init__.py with the contents of board/qt2040_trinkey_u2if.py

and when I re-ran the python program I am now getting the response expected:

Code: Select all

dir(board)
['BUTTON', 'NEOPIXEL', 'SCL', 'SDA', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'pin']

could the board.py not be finding the board_id on the board??? I think I am missing the packages board_id and detector. I wasn't receiving those errors, but I guess this makes sense.

Upon re-running we are a step further. Using what I just learning I'll see if I can troubleshoot the rest of the way...

Code: Select all

File "trinkey.py", line 11, in <module>
    bme = adafruit_bme280.Adafruit_BME280_I2C(i2c)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 368, in __init__
    super().__init__(I2C_Impl(i2c, address))
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 96, in __init__
    chip_id = self._read_byte(_BME280_REGISTER_CHIPID)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 303, in _read_byte
    return self._read_register(register, 1)[0]
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 314, in _read_register
    return self._bus_implementation.read_register(register, length)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/protocol.py", line 25, in read_register
    i2c.readinto(result)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bus_device/i2c_device.py", line 82, in readinto
    self.i2c.readfrom_into(self.device_address, buf, start=start, end=end)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/busio.py", line 186, in readfrom_into
    return self._i2c.readfrom_into(address, buffer, stop=stop)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_blinka/microcontroller/rp2040_u2if/i2c.py", line 30, in readfrom_into
    rp2040_u2if.i2c_readfrom_into(address, buffer, start=start, end=end)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_blinka/microcontroller/rp2040_u2if/rp2040_u2if.py", line 268, in i2c_readfrom_into
    self._i2c_read(address, buffer, start, end)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_blinka/microcontroller/rp2040_u2if/rp2040_u2if.py", line 257, in _i2c_read
    raise RuntimeError("I2C write error")
RuntimeError: I2C write error

Thanks... I think something is amiss with the files that were supplied... I think we can eventually work through this and update so others will have a much more *turnkey* experience :-D

User avatar
dpuerto
 
Posts: 40
Joined: Wed Feb 01, 2023 12:25 am

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by dpuerto »

Code: Select all

>>> from adafruit_platformdetect import Detector
>>> detector = Detector()
>>> print("Chip id: ", detector.chip.id)
Chip id:  RP2040_U2IF
>>> print("Board id: ", detector.board.id)
Board id:  QT2040_TRINKEY_U2IF
>>> 
I think something is amiss with adafruit_bme_280 not recognizing the board:

Code: Select all

Traceback (most recent call last):
  File "trinkey.py", line 11, in <module>
    bme = adafruit_bme280.Adafruit_BME280_I2C(i2c)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 368, in __init__
    super().__init__(I2C_Impl(i2c, address))
    File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 96, in __init__
    chip_id = self._read_byte(_BME280_REGISTER_CHIPID)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 303, in _read_byte
    return self._read_register(register, 1)[0]
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/basic.py", line 314, in _read_register
    return self._bus_implementation.read_register(register, length)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bme280/protocol.py", line 25, in read_register
    i2c.readinto(result)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_bus_device/i2c_device.py", line 82, in readinto
    self.i2c.readfrom_into(self.device_address, buf, start=start, end=end)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/busio.py", line 186, in readfrom_into
    return self._i2c.readfrom_into(address, buffer, stop=stop)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_blinka/microcontroller/rp2040_u2if/i2c.py", line 30, in readfrom_into
    rp2040_u2if.i2c_readfrom_into(address, buffer, start=start, end=end)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_blinka/microcontroller/rp2040_u2if/rp2040_u2if.py", line 268, in i2c_readfrom_into
    self._i2c_read(address, buffer, start, end)
  File "/Users/dpuerto/Sites/XXXX.com/sensors/adafruit_blinka/microcontroller/rp2040_u2if/rp2040_u2if.py", line 257, in _i2c_read
    raise RuntimeError("I2C write error")
RuntimeError: I2C write error

Code: Select all

>>> device.open(0x239A, 0x00F1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "hid.pyx", line 139, in hid.device.open
OSError: open failed
>>> device.open(0x239A, 0x00F1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "hid.pyx", line 139, in hid.device.open
OSError: open failed
>>> import board
>>> 
>>> i2c = board.I2C()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'board' has no attribute 'I2C'
>>> import busio
>>> i2c = busio.I2C(scl=board.SCL_PIN_NAME, sda=board.SDA_PIN_NAME)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'board' has no attribute 'SCL_PIN_NAME'
>>> i2c = busio.I2C(scl=board.SCL_PIN_NAME, sda=board.SDA_PIN_NAME)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'board' has no attribute 'SCL_PIN_NAME'
And again:

Code: Select all

>>> import time
>>> import board
>>> import busio
>>> import adafruit_scd4x
>>> i2c = busio.I2C(board.SDA, board.SCL, frequency=400000, u2if=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'u2if'

User avatar
adafruit_support_carter
 
Posts: 29168
Joined: Tue Nov 29, 2016 2:45 pm

Re: Trinkey_QT2040_Enviro_Gadget 2

Post by adafruit_support_carter »

How is the BME280 being connected to the Trinkey?

It looks like the Blinka setup is at least behaving a little better now, since the board listing is as expected.

As another way to test the BME280, try manually connecting via REPL:

Code: Select all

$ python3
Python 3.8.10 (default, Mar 13 2023, 10:26:41) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import board
>>> from adafruit_bme280 import basic as adafruit_bme280
>>> bme280 = adafruit_bme280.Adafruit_BME280_I2C(board.I2C())
>>> bme280.pressure
1005.2158232262514
>>> 

Locked
Please be positive and constructive with your questions and comments.

Return to “Trinket ATTiny, Trinket M0”