Welcome to Synthiam!

Program robots using technologies created from industry experts. ARC is our free-to-use robot programming software that makes features like vision recognition, navigation and artificial intelligence easy.
Get Started

Asked — Edited

Pimoroni Pan And Tilt HAT For Rpi 3 B+


i just purchased the pan tilt hat. i know it works because i tried the python examples.

But how can i get ARC to recognize it?

I do have the ez server installed on the rpi with a camera, it connects, i tried the camera control example and the video works. i added the vertical servo, tried to set it up as D0, D1 and D2. neither will control the pan and tilt hat. i believe the pan and tilt works of of i2C but i am not certain.

information on the pan and tilt hat can be found at http://pimoroni.com/pantilthat

please help, Thank you in advance.

Related Hardware Raspberry Pi
AI Support Bot
Related Content
yes they did move horizontilay to one side and vertically point upwards. then it stopped moving.
So my code is working, should work from ARC. 
Maybe you're missing something, I'll post more details in couple minutes.
error ?


OSError: [Errno -9997] Invalid sample rate
Is the above error post#14 ?

If yes is audio related you can comment line 139 on Main.py:


and let me know if it works.
no errors but nothing is happening. i added a horiz and vert servo to ARC. set horiz to D0 and vert to D1. min =1 max = 180. tried moving the servos using the control, but the servo does not respond. below is what i get when i execute main.py;

pi@saripi:~/BlueberryServer/Blueberry.Server.Python $ sudo python3 Main.py
1124-root-INFO-Starting... platform=linux hostname=saripi
1124-DeviceI2CController-1-21-DEBUG-write: bytearray(b'\x00\x08')
1124-EZBTcpServer-DEBUG-starting up on ('', 10023)
1124-EZBTcpServer-DEBUG-waiting for a connection
1124-EZBTcpServerUdpBroadcaster-DEBUG-Starting port=4242
1124-EZBTcpServerUdpBroadcaster-DEBUG-broadcaster ip4 addresses found:['192.168. 8.239']
1124-EZBCameraUdpBroadcaster-DEBUG-Starting port=4242
1124-EZBCameraUdpBroadcaster-DEBUG-broadcaster ip4 addresses found:[' 39']
1124-FakeCameraController-DEBUG-running thread:Thread-4
1124-EZBCameraTcpServer-DEBUG-starting up on ('', 10024)
1124-EZBCameraTcpServer-DEBUG-waiting for a connection
===> Press Enter to quit...
1124-EZBTcpServer-DEBUG-waiting for a connection
1124-EZBCameraTcpServer-DEBUG-waiting for a connection
I don't see a connection from ARC, I'll take some pictures to guide you.
I had tried starting ezbpi server first, when that didn't work I rebooted and tried main.py first but no good on either.

Again I appreciate your help.
OMG the servos are working.

but now i dont have any video anymore from the rpi camera. the port use to be 24 now its 10024
Check my instructions you need to click the antenna in the camera control.

you should see the camera feed or fake image with a counter.

please recheck and let me know the results.
i see a fake image with a counter
the camera works when i start the server this way: sudo nohup mono ./EZBPi.exe. obviously the servos dont.
#30   — Edited
You didnt answer my question when you change the port to 10024 do you see the camera feed or a fake image.
please follow/read my instructions for version 1 of BlueBerry Server.
i do see a fake image with a counter. i selected the camera by pressing the antenna button in the camera control
pi@saripi:~/BlueberryServer/Blueberry.Server.Python $ python3 Main.py
1101-root-INFO-Starting... platform=linux hostname=saripi
1101-DeviceI2CController-1-21-DEBUG-write: bytearray(b'\x00\x08')
1101-EZBTcpServer-DEBUG-starting up on ('', 10023)
1101-EZBTcpServer-DEBUG-waiting for a connection
1101-EZBTcpServerUdpBroadcaster-DEBUG-Starting port=4242
1101-EZBTcpServerUdpBroadcaster-DEBUG-broadcaster ip4 addresses found:['']
1101-EZBCameraUdpBroadcaster-DEBUG-Starting port=4242
1101-EZBCameraUdpBroadcaster-DEBUG-broadcaster ip4 addresses found:['']
1101-FakeCameraController-DEBUG-running thread:Thread-4
1101-EZBCameraTcpServer-DEBUG-starting up on ('', 10024)
1101-EZBCameraTcpServer-DEBUG-waiting for a connection
===> Press Enter to quit...
It was a dumb mistake i commented the pi camera code please open the file EZBCameraServer.py and remove the comments from line 48 to 53
thanks i will try it later this evening. i need to run an errend
I have updated the code (post #33)

please pull the changes:


cd ~/BlueberryServer/Blueberry.Server.Python/
git pull
i had broken the clip for the camera ribbon cable on the rpi. i went and purchased a rpi4 with 4 gig ram and an adafruit 16 channel pwm hat. i loaded all the software from scratch. i changed the main.py to reflect the adafruit pwm hat by un commenting the appropiate line, connected the servos to 0 and 1 but it did not work. servos did not move.

i then used the pimoroni pan and tilt, connected the servos and it WORKED! i made the changes you suggested for the pi camera and that worked as well. better response time on the camera.

a problem though- when selecting servo tracking in the camera control; the servos goes crazy, then stops working. also the servos will no longer work even if you un-select servo tracking, also stopping the blueberry servo and restarting it does not return the servos. i was forced to reboot the rpi4. keep in mind when i say the servos dont work is by using the vertical and horiz servo control. 

upon reboot and starting the blueberry server, the camera and servos work.

what i am trying to do is add robot functionality with my rover which is powered by a px4 flight controller. i like to add ML and object recognition. i have a simple robotic arm i have not mounted yet. the rover is actually a losi five-t 1/5 scale RC with an electric motor.

do you know of any issues with the adafruit 16 channel hat?

thanks again.
#37   — Edited


do you know of any issues with the adafruit 16 channel hat?
The issue is not the HAT but the implementation.

I've used the HAT only for PWM ports so there was no support for servos, but I finished a servo implementation.

pull the project again and uncomment the following line #172:


bear in mind the hat is a PWM controller there are some calculations using the board oscillator clock 25Mhz plus the required servo frequency 50 Hz, and the 12 bits resolution, in some cases you will need to adjust the servo timings ex:


def setup_i2c_PCA9685ServoController(i2c_com):
import PCA9685Controller
com = PCA9685Controller.PCA9685ServoController(i2c_com, logging.DEBUG)
for port in range(16):
ComponentRegistry.ComponentRegistry.register_component("S"+str(port), ServoController.ServoPort(com, port, 560, 2140))
#bear in mind pwm ports frequency is 50 hz used for servos (frequency is per controller)
for port in range(16):
ComponentRegistry.ComponentRegistry.register_component("P"+str(port), PWMController.PWMPort(com, port))
the values 560 and 2140 work well with other servo controllers but they need some adjustment when used with this HAT.
Adafruit has some python calibration scripts to help you with the min and max values.