EjectABed Version 2 – Now Using the Raspberry Pi (Part 2)
September 15, 2015 Leave a comment
With the connection from Twitter to the PI working well, I decided to hook up the bed top the PI. The Bed is controlled via a server attached to a bellow that forces air to the screw drive. You can read about how we figured that one out here.
My initial thought was that it would be easy as the Netduino implementation to control the servo was all of 5 lines of code. The Netduino has built-in PWM ports and the api has a PWM class:
1 uint period = 20000; 2 uint duration = SERVO_NEUTRAL; 3 _servo = new PWM(PWMChannels.PWM_PIN_D5, period, duration, PWM.ScaleFactor.Microseconds, false); 4 _servo.Start(); 5 _servoReady = true;
However, when I went to look for a PWM port, there wasn’t one! Ugh! I want over to Stack Overflow to confirm with this question and sure enough, no PWM. The only example for servo control that the Windows 10 code samples have are using the GPIO to activate a servo forwards and backwards, but that will not work because I need to hold the bellow in a specific place for the air to push correctly. The Windows IoT team suggested that I use the AdaFruit PWM shield for the control
So I ordered a couple and then my son soldered the pins in
I then hooked up the shield to the servo and the PI
and went to look for some PI code to control the pwms. Another problem, there isn’t any! I went over to the Raspberry Pi forums and it turns out, they are waiting for MSFT to finish that piece. Ugh, I decided to take the path of least resistance and I removed that PWM shield and added back in the Netduino
Now I have the ability to control the servo from the PI. I would have rather cut out the Netduino completely, but the limitations of Win10 on Raspberry Pi won’t allow me to do that. Oh well, it is still a good entry and it was a lot of fun to work on.