Bluetooth supports multiple protocols for multiple purposes. There is low latency low quality monorail bi-directional communication with a little bit of bandwidth for control for Bluetooth phone calls. This is called HFE Bluetooth protocol. If you are interfacing a keyboard or a mouse you would use the Human Interface Device protocol or HID. If you ...
The nRF24L01+ has a somewhat complex SPI based interface, where many registers have to be configured and tested and timeouts honored. Therefore it requires some kind of microcontroller to send or receive even the simplest message.
This can be as simple as a 3.3v Arduino Pro Mini (less than $3 with shipping), and there are libraries which simplify the task ...
To control AC power for inductive load (motor) a Triac is used. The concept is called phase cutting. It works for a resistive load (heater) too.
This module is designed for phase cutting. It contains a zero crossing detector and a Triac. The control is done in MCU. The zero crossing detector is wired to an interrupt pin. The control signal for the Triac is ...
Looking further here
I found the following
the files - libraries\RobotIRremote\IRremoteTools.cpp and
libraries\RobotIRremote\IRremoteTools.h solved the problem. They are
example files which somehow are getting included. You can move those two
files to some other location as backup."
I tried those Tiny cores you are using and had a lot of problems. I switched to http://code.google.com/p/arduino-tiny/ and it seems much better. Create a second Arduino installation folder and add the arduino-tiny cores. The pin name constants are like PIN_A0, PIN_A1,...,PIN_B1, etc. So, try that out.
I looked briefly at the VirtualWire code and there are ...
Responding to TV remotes is surprisingly simple, because they typically all work on exactly the same principle, with no concept of channels or encryption.
What you need is an IR receiver module, which you can buy fairly cheaply from many electronics suppliers. Anything intended to work with remote controls should be suitable. The important part is that it ...
The most common (not sure what others are used) carrier frequency is 38khz. You need an IR receiver tuned to that frequency to get the signal from the remove. See this page for way more information.
There is no encryption or special receivers needed as long as the carrier frequencies match.
That's really all the hardware you need. On the software side of ...
Updated 26-08-2018: added tx(false); at the end of send. Without it, the TX pin could remain high, flooding the 433MHz band and making any other communication on it almost impossible!!!
Although these are all pretty old posts, I've still been struggling to get VirtualWire or its successor RadioHead working on an Attiny85. Typically the problem is that ...
The problem here is that you lack the concept of speed with your motors.
It's not enough to turn the motors on or off in the right direction, you have to control the speed of them.
Your left/right control is fine as it is (without the delay in your loop), which is controlled by the inputs being either on or off to define the flow of current through the ...
I can highly recommend these cheap little 433Mhz radios. You can get them on amazon, ebay, etc. and they work pretty well for me. Your distances are a bit longer than my situation but I have to go through several walls.
These types of receivers are AC coupled so you will not be able to do what you are doing as you need to have regular transitions in the signal and not stay in one state for too long.
They are also limited in the speed at which they will work, I expect 19200 bps is too fast.
You need to use a modulation technique such as Manchester Encoding or other ...
I think response time would be a big problem. I used the ESP8266 with a temperature and humidity sensor, complete with a small web server on the ESP8266, and it works fine. But I wouldn't want to control an RC car with it. But if you buy it on ebay from China, it is only a few dollars, so buy one anyway.
Use Bluetooth, either a couple of HC-05 modules, or ...
I'm pretty sure it can be made to work.
I have a home server with several devices attached to it, including 2 ESP8266 modules - one at home and one in my office. All devices connect using permanent TCP connection and respond to my custom "ping" requests over that connection. Typical round-trip response times are bellow 50ms and often bellow 10ms. There are ...
Assuming you wiring is correct, the only mistake I could see is that your variable named "getting" used in switch is inside the if, and it should be at least in the same level of switch. Also, your resume needs to be inside the if.
int RECV_PIN = 3;
int green = 11;
int blue = 12;
int red = 13;
#define code1 16582903 // Must ...
The problem is you send a character of type char, thus exactly one byte.
However, when you send it you have to give the length and you use strlen. However, msg is an array (at least that is what you want), but that array contains only the character to sent. What you want is to send only 1 character, so use 1 instead of strlen.
Also, you can get rid of the ...
if (rightStickVerticalPwm == 0)
else if (rightStickVerticalPwm > 1500)
else (rightStickVerticalPwm < 1400)
You cannot have another comparison in an else statement. You might have meant else if in the last clause.
Clarification if you're not ...
delay(0) apparently[*] acts like delay(2^32) or about 10^10 milliseconds. That may not be what you had in mind ... :)
Try reducing the delay to 1 or use delayMicroseconds() to get something shorter. That should at least get you some repeatable results.
(10^10 mSec is ~ 16.5 weeks, for those without a calculator handy).
[*] I didn't read the code, nor ...
Exactly as @MichelKeijzers wrote the issue is caused by "IRremote" using same timer as "Tone" and the solution to this problem is a little dirty.
Since Tone is included in ArduinoCore (and compiled) we can't easilly modify it so the only thing that worked for me is to modify boarddefs.h file of IRremote library. Since it's code is easilly available after ...
Note, there is also the NRF24LE1 SoC which has its own ULP MCU - good for transmitting simple data such as sensor readings. If used to Arduino, ARduino Pro Mini 3.3v and the NRF24L01+ is easier and better way to go. (Mod the Arduino to be ULP)
An ATTiny85 can drive the NRF24L01+: "nrf24l01+ control with 3 ATtiny85 pins"
At least this is not a "full" Arduino...
Hackaday News: "EMBED WITH ELLIOT: MULTIPLEXING SPI USES FEW PINS"
The referred blog entry is: "nRF24l01 control with 2 MCU pins using time-division duplexed SPI".
(-: Nice countdown... 3 pins, 2 pins, ... ;-)
Since one end is a PC I would look into a Wifi shield for the arduino. That way you would not need any extra hardware on the PC side.
You can get a Wifi shield for less than 2 xbee modules. But using wifi will require changes to your code since it won't be using the serial port for communication.
Another wireless option that I have no personal experience ...
I happen to have received the CC3000 shield yesterday and have been playing with it today...
What do you mean by "receive commands from a website"?
If you mean "can it serve a simple website and act upon HTTP requests" (e.g. requests to http://arduino.local/on would turn a lamp off and http://arduino.local/off would turn if off), then yes it can. You make ...
I will use arduino to make tasks in my life automatic maybe to let rotate every morning a motor or to open the door.
That's the kind of thing it's designed for.
So i will ask can i run arduino as solo so no pc needed,
Yes, you only need a PC to program it, once programmed it will run without the PC.
Can I connect it to the internet
Yes, there are ...
Only the button changes relay1State and relay2State. The IR and BT only change the pin using digitalWrite. But then in the last 3 lines, the pin is changed back to the value of relay1State and relay2State.
I think for the IR and BT you need to change e.g. digitalWrite(relay2, !relay2State); to relay2State=false; etc.
PS It there a pull-up/pull-down ...
I did a factory reset of the device. That resolved the issue
Another thing that is very important: The KEY-Pin (EV-Pin on some boards) must be HIGH (3Volts), during the INQ-command. If this PIN is not High, the inq-command will not work.
If you put 3V to this PIN and release it, you indeed are in AT-Command mode. But not all AT-commands ...
You are using a very old library on a modern IDE. The file that was called WProgram.h in IDE version 0023 and below is now called Arduino.h. You will need to change any references to WProgram.h to Arduino.h instead.
Well written libraries do this with a #ifdef block:
#if (ARDUINO >= 100)
# include <Arduino.h>
# include <WProgram.h>
Each unique variable you want control over should have a single pid loop, and each loop should only ever stretch across one "order" of time.
For example, to control the craft's roll rate, you should have one PID loop that takes the target roll rate and outputs the controlled roll torque value, which gets transformed somehow into motor accelerations. The ...