Quantcast
Viewing all articles
Browse latest Browse all 1234

Python • GPIOs - GPIOZero - RP5 drives ME crazy instead of the steppermotor

Hej Folks!

I am relatively new to RP, playing around for about 4 weeks now with the RP5. Half a year of experience with Python. So maybe my question is obvious to solve for others, but i have done quite some research / testing and not found any explanation / solution so hopefully some of you can enlighten me.
I am pretty lost on using the GPIO Pins - which i generally love to do.

First getting into GPIO was more difficult then i thought, but after some time i figured out that apparently RPi.GPIO is not working anymore on RP5 as they should do - so people advise to use GPIOZero instead, right? But GPIOZero still needs to have any pin factory as a base for communication. After some struggling i got my first GPIO Scripts working, but then started using virtual environments for some reasons.

And i have not figured out how to access GPIO from venv - and more confusingly the more i tested the less i understand how GPIOZero actually works on RP5.

Using GPIOZero without venv with a stepperMotor works perfectly fine:

Code:

from gpiozero import OutputDevice, Devicefrom DRV8825 import DRV8825print("from gpiozero import OutputDevice, Device")print("Device.pin_factory: "+str(Device.pin_factory))print("OutputDevice.pin_factory: "+str(OutputDevice.pin_factory))try:    Motor = DRV8825(dir_pin=24, step_pin=18, enable_pin=4, mode_pins=(21, 22, 27))    Motor.SetMicroStep('hardward', 'fullstep')    Motor.TurnStep(Dir="forward", steps=500, stepdelay=0.002)    Motor.Stop()except Exception as e:    print ("\nMotor stop")    Motor.Stop()    print(e)
Execution & Output:

Code:

myuser@raspberrypi-assistent:~/python/motor $ python motor-test-neu.py from gpiozero import OutputDevice, DeviceDevice.pin_factory: NoneOutputDevice.pin_factory: NoneControl mode:hardwardforwardturn step:500
It really fascinates me that there seems no gpiozero.pin_factory but its working.

Now the same with venv:

Code:

(gunicorn) user@raspberrypi-assistent:~/python/motor $ python motor-test-neu.py from gpiozero import OutputDevice, DeviceDevice.pin_factory: NoneOutputDevice.pin_factory: None/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py:295: PinFactoryFallback: Falling back from lgpio: module 'lgpio' has no attribute 'SET_BIAS_DISABLE'  warnings.warn(/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py:295: PinFactoryFallback: Falling back from rpigpio: No module named 'RPi'  warnings.warn(/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py:295: PinFactoryFallback: Falling back from pigpio: No module named 'pigpio'  warnings.warn(/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py:295: PinFactoryFallback: Falling back from native: unable to open /dev/gpiomem or /dev/mem; upgrade your kernel or run as root  warnings.warn(Motor stopTraceback (most recent call last):  File "/home/user/python/motor/motor-test-neu.py", line 10, in <module>    Motor = DRV8825(dir_pin=24, step_pin=18, enable_pin=4, mode_pins=(21, 22, 27))            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/motor/DRV8825.py", line 16, in __init__    self.dir_pin = OutputDevice(dir_pin)                   ^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py", line 103, in __call__    self = super().__call__(*args, **kwargs)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/output_devices.py", line 74, in __init__    super().__init__(pin, pin_factory=pin_factory)  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/mixins.py", line 75, in __init__    super().__init__(*args, **kwargs)  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py", line 540, in __init__    super().__init__(pin_factory=pin_factory)  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py", line 240, in __init__    Device.ensure_pin_factory()  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py", line 265, in ensure_pin_factory    Device.pin_factory = Device._default_pin_factory()                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py", line 297, in _default_pin_factory    raise BadPinFactory('Unable to load any default pin factory!')gpiozero.exc.BadPinFactory: Unable to load any default pin factory!During handling of the above exception, another exception occurred:Traceback (most recent call last):  File "/home/user/python/motor/motor-test-neu.py", line 16, in <module>    Motor.Stop()    ^^^^^NameError: name 'Motor' is not defined
Ok, i see, i dont have any pin factory, so i install some (have installed each alone and still did not work):

Code:

pip install pigpiopip install rgpiopip3 install RPi.GPIO
And another problem - basically everytime i use RPi.GPIO, i get the same error:
RuntimeError: Cannot determine SOC peripheral base address

Full response:

Code:

(gunicorn) user@raspberrypi-assistent:~/python/motor $ python motor-test-neu.py from gpiozero import OutputDevice, DeviceDevice.pin_factory: NoneOutputDevice.pin_factory: None/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py:295: PinFactoryFallback: Falling back from lgpio: module 'lgpio' has no attribute 'SET_BIAS_DISABLE'  warnings.warn(Motor stopTraceback (most recent call last):  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/pins/pi.py", line 408, in pin    pin = self.pins[info]          ~~~~~~~~~^^^^^^KeyError: PinInfo(number=18, name='GPIO24', names=frozenset({'24', 'WPI5', 'BCM24', 24, 'GPIO24', 'J8:18', 'BOARD18'}), pull='', row=9, col=2, interfaces=frozenset({'', 'dpi', 'jtag', 'gpio', 'sdio', 'spi'}))During handling of the above exception, another exception occurred:Traceback (most recent call last):  File "/home/user/python/motor/motor-test-neu.py", line 10, in <module>    Motor = DRV8825(dir_pin=24, step_pin=18, enable_pin=4, mode_pins=(21, 22, 27))            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/motor/DRV8825.py", line 16, in __init__    self.dir_pin = OutputDevice(dir_pin)                   ^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py", line 103, in __call__    self = super().__call__(*args, **kwargs)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/output_devices.py", line 74, in __init__    super().__init__(pin, pin_factory=pin_factory)  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/mixins.py", line 75, in __init__    super().__init__(*args, **kwargs)  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/devices.py", line 549, in __init__    pin = self.pin_factory.pin(pin)          ^^^^^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/pins/pi.py", line 410, in pin    pin = self.pin_class(self, info)          ^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/home/user/python/gunicorn/lib/python3.11/site-packages/gpiozero/pins/rpigpio.py", line 101, in __init__    GPIO.setup(self._number, GPIO.IN, self.GPIO_PULL_UPS[self._pull])RuntimeError: Cannot determine SOC peripheral base addressDuring handling of the above exception, another exception occurred:Traceback (most recent call last):  File "/home/user/python/motor/motor-test-neu.py", line 16, in <module>    Motor.Stop()    ^^^^^NameError: name 'Motor' is not defined
And lastly pip list:

Code:

(gunicorn) user@raspberrypi-assistent:~/python/motor $ pip listPackage            Version------------------ ----------blinker            1.7.0certifi            2023.11.17charset-normalizer 3.3.2click              8.1.7colorzero          2.0Flask              3.0.1gpiozero           2.0gunicorn           21.2.0idna               3.6itsdangerous       2.1.2Jinja2             3.1.3lgpio              0.0.0.2MarkupSafe         2.1.4packaging          23.2pigpio             1.78pip                23.0.1pygame             2.5.2requests           2.31.0rgpio              0.2.0.0RPi.GPIO           0.7.1setuptools         66.1.1urllib3            2.2.0Werkzeug           3.0.1
I really dont understand what the problem here. It should not be a rights problem, as the user is the same. But what else? Image may be NSFW.
Clik here to view.
:?:
Image may be NSFW.
Clik here to view.
:?:
Image may be NSFW.
Clik here to view.
:?:


Thanks for any help!

Statistics: Posted by raspi_n00bie-lost — Wed Jan 31, 2024 4:26 pm



Viewing all articles
Browse latest Browse all 1234

Trending Articles