Skip to main content

finally getting back to it

Things went by pretty quickly this month, and I was not able to play around with this project much. 

I did tinker with it every now and then, but I was never able to get myself past the residing issue of compiling the RF library in the Raspberry Pi.

It seemed people are generally interested in the project linked in the previous post, as people were actively posting comments on it. 

Couple of days ago a user posted a solution to the compile issues (changes to method names and usage of pre-defined values for parameters), and I thought I should try following it to see if it works. 

The code indeed compiled, and I was able to change it a little more to be more fitting to my project. 

On the Arduino side, it might be a premature assumption, but it seemed like the Arduino was unable to handle messaging through the RF and controlling the servo at the same time. My assumption is that the inability to control them in separate threads is causing some timing issues, but I might be over-analyzing.

The current solution is to use two separate Arduinos--one to handle the message and another to move the servo. The Arduino the receives the message sends a signal to the other Arduino, which moves the servo upon reception of the signal. 

Even with this setup, it did seem like the servo was not functioning properly when the message was received, but I believe it was due to the led light causing some signal disruption, as removing it seemed to have solved the issue.

The Raspberry is now able to send a message to the Arduino, but it is successful only about 80% of the time; the message seems to get lost in the other 20%. I'll have to understand the messaging system a bit more to understand what causes the messages to be unsent. 

Here is the result so far:


I will have to clean up the code and figure out the messaging system before I replace this with the current, wired setup.

Comments

Popular posts from this blog

websockets and mobile networks and ssl

Gahhh. Just going to ramble on this one: Websockets is unstable going through cellular networks Searched Google and solution seems to be SSL connections Tried to implement, and it works to some extent,  but realized that I'll have to have both Apache, which was running my web front end, and Tornado both listen to 443 which cannot happen Realize finally that Tornado is a SERVER just like Apache Try to implement web client through Tornado It works but Websocket server and the web client still different instances so still can't have both listen, or that's what I'm thinking but I don't have time to think about it at present. Gotta sleep.

duty cycle testing

Now that I saw a physical response, I should try to make it similar to how a servo should be controlled. Servos are actuators that receive (expect) position input (as opposed to motors, which receive speed/intensity input). Simply put, it registers input as pulses, decoding the ratio of high (a "on" signal) to low in a given period as a position value.  A better explanation :  http://learn.adafruit.com/adafruits-raspberry-pi-lesson-8-using-a-servo-motor/servo-motors As I am waiting for my servo to be shipped, I will continue to work with the LED light.  As opposed to my previous setup of having the light turn on every time the request is given, I will have the light turn on and off in a regular pattern until a request is given, upon which the pattern will change for one "cycle" (on-and-off pair). The on-and-off logic (previously the LED control logic) will be run in a separate thread: def dCycle(*args):    global dCVal   ...

finally got around to it (nrf24l0+ and servo)

On a previous post , I used the nrf24l01+ wireless chip to communicate between the Raspberry Pi and an Arduino, but only got lights to turn on. I remember being confused as to why servos would not work, and somewhat left it there. I started messing around with it again, and I am concluding that it might have been just a power issue. Here is the servo moving properly: The Arduino is on the ground due to the short length of the wires powering them. Just as a recap, what is happening is: - a C++ program using the RF24 library is compiled in the Raspberry Pi (connected to an nrf24l01+ chip) to broadcast a message. When executed, it will broadcast the message. - the Arduino (connected to another nrf24l01+ chip) programmed to receive messages receives the message, and upon receipt sends a signal to an Arduino that is wired to the servo to move the servo. Two separate Arduinos are used, as it seems that the servo library and the RF24 library do not seem to run properly toget...