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

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

alcohol sensor (and some patience)

Soldered the alcohol sensor into something that is connectable: I tried to connect this to the Arduino, as I had the appropriate circuitry, but I did not get any legitimate output from it. 5V going in, 5V coming out with no variations. Nothing seems to be awry in wiring, as the circuit seems to be grounded properly (and the 5V current is flowing).  There are a couple of potential factors as to why I'm not seeing any results: - I'm using a 10k ohm resistor, while some guides (and the datasheet for the sensor) asks for 100-200k. However, there seems to be a good amount of people using 10k and getting at least some kind of result. A batch of 100k ohm resistors I ordered is on its way, so I guess I can try with them when they come. - This site  claims that these sensors take 24-48 hours for its signals to be stable. It also tells me that I should not be powering the sensor directly from the Arduino, which I have been doing, out of concern that the power draw of t

adding a servo

Since I don't have any lock that works based on a digital signal, it seemed appropriate to at least have something in place that would emulate the behavior of such a lock, and I thought that a servo would be a good substitute. (note: a servo is a device with which one can control a specific rotational position) Connecting a servo to the current circuit isn't too much of a challenge, as it just requires a single output connection along with the ground/power. Making the servo also just requires an addition of a few lines of code, using the Servo library . A simple video of the servo in action: Now, at least with a locking behavior in place, the one visible functionality that needs to be addressed is the device's ability to distinguish between a "standby" state (no alcohol/no breathing in: should be in "lock" mode) and a "open" state (no alcohol/breathing in: should be in "open" mode).