Hot answers tagged

38

There are many different type of RF networks with various advantages and disadvantages. The main things I consider when choosing a wireless communication method are network topology, data rate and power consumption. WiFi: High data rate (54Mbit/s +) but also high power consumption. Used when you need to connect directly to the internet, such as an internet-...


6

I've used NRF24L01+ chipset 2.4GHz wireless modules with Arduino before, and found them to be great, and super cheap (~$10 for 10 of them on ebay!). They have 3 modes of transmission: 250kbps, 1Mbps, and 2Mbps. The range decreases accordingly with higher bitrate, but the time spent sending a message does too. There are multiple Arduino libraries (e.g. RF24, ...


5

attiny is missing an option required to allow the Manchester library to function properly on ATtinyX5 devices, specifically definition of __AVR_ATtinyX5__ when a device is selected. In fact, it's missing quite a few things. The package I use for ATtinyX5 support is arduino-tiny. I have verified that it defines that symbol properly. I recommend that you ...


5

I've had the same problem, couldn't get past 2 meters range. Until i noticed that the TX-Frequency was off by about 150kHz. I adjusted the RX Frequency (the module has a trimmer) and now 40-50m is possible with a wall in between.


5

No, changing the antenna length will only change the resonant frequency of the antenna circuit. That is, it will affect the sensitivity of the receiver, but won't actually change the frequency that the receiver "listens" to.


4

Having struggled through this myself, I can confirm that Joel's solution works. There are quite a lot of posts around that suggests that you can't get the Manchester to work with Arduino1.0x and you need 0020. But you can. The key is to use the arduino-tiny from the link above, put the tiny folder which you get from there in /hardware and then rename it ...


4

The NRF24L01+ has inputs that are 5V tolerant! So you only need to provide 3.3V on the Vcc pin of the module, which you can do by putting a voltage regulator between it, and the 5V of the Trinket. So there isn't really any need to convert the Trinket to 3.3V. PS Remember to add some capacitors to the output of the voltage regulator, as the NRF needs a ...


3

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.


3

The Short Answer: In theory it is possible to do what you are asking. There are examples of using an Arduino to send and receive messages at 315 MHz. Such as this example. Although these devices might not even be compatible with the ones you are using. They may be modulating their signal differently or framing their data differently or at different baud ...


3

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 ...


3

I'm adding another answer, because I don't think the core thing to grasp is mentioned, and others might benefit :) The noise you are seeing, is actually the result of a feature of the RXB6, KSA6, and similar modules. When they see no signal, they increase gain/sensitivity until they do see a signal. The upside of this is they are very sensitive, and can ...


3

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 ...


3

On the transmitting side (with cheap AC switches as receiver), I've actually had good results with the cheap green squares, and the equally cheap 5 for a dollar 'Helical antenna 433MHz' you find everywhere on ebay :) I can reach all three levels of our house with that, and that's with only 5v supply on the green square, and it just sitting on a breadboard. ...


3

It looks like you're sending only one byte, but expecting to receive three. In the TX sketch, char msg[1] = {distance}; declares an array of one char, assigns its zero-th element the value of distance. Then msg[0] = count; over-writes it with the value of count. vw_send((uint8_t *)msg, 3); tries to send three bytes but only the first one has been defined. ...


2

Depends on how much data you're sending, what packet structure you want to use, whether you want to spin your own PCBs or use a plug-in module, whether you need a low-power solution, etc.. For that distance, probably a sub-1GHz solution would work best. I've had good results with the TI range of Value Line transceivers as they offload all the packet-...


2

The problem was that the RF24Network library is not compatible with the version of Arduino IDE I have. I downloaded Arduino IDE v1.0 and now it works like a charm. I will send an email to maniacbug to tell him about the problem.


2

Have you considered using real time clocks? You could synchornise them all ahead of time and then use any wireless protocol. Once a button is pressed, you'll look for the unit that reports the earliest time stamp and then once a window of a few seconds has passed let it know that it won. I'd consider using WIFI (802.11) with ESP8266s, RTCs and take a ...


2

The code you presented does not fit for working with the RF 433Mhz. I'm not sure what you think this code should do, but this is not the way to go with a 433Mhz transmitter. I would suggest using a dedicated library for transmitting information using the 433. There are many libraries out there for doing that; two popular libraries would be the ManchesterRF ...


2

void loop() { Serial.println("NEW-------------"); int x; int y[100]; for(int i = 0; i<100; i++){ x=RX.read(); y[i] = x; } ... } You are reading data without checking if there is any data there. That's like watching the TV without checking if it is turned on. Of course you get weird data. SoftwareSerial RX(0,1); //(rx pin, tx pin) ...


2

I want to point out here that async serial communications relies on both ends providing a clock (there is no transmitted clock signal). Thus the sender clocks out bits at the "baud rate" (eg. 9600 bits per second) and the receiver clocks them in at the same rate. With a start bit and 8 data bits therefore you can tolerate some difference in the clocks ...


2

https://blog.adafruit.com/2010/06/11/aprs-radio-shield-for-arduino/ Be warned you need a license to transmit on amateur frequencies at least in the US, you will also need to hook up a transmitter for this shield. GSMShield would also be great and is something I'm thinking about using for my project, the way the Arduino IDE is setup and the libraries already ...


2

Have you ever tried the Nordic nRF24L01 based modules? They are available on eBay for very low cost, and operate in the 2.4 GHz band. They should offer a range of at least tens of meters indoors. I have had good success with these, and they are very easy to interface to Arduino.


2

I have the same TX/RX modules and two Arduinos and can get pretty good transmission reliability all throughout my house but it took some experimenting to figure out the largest factors in play (for me). Module pairs should not matter, I got my 5 pairs jumbled up in a plastic bag, think only one was DOA. I use them together with Nexa wireless electric ...


2

The 433mhz modules can be sensible on the power lines, place a cap on the power input. Also a straight antenna works most of the times, but if you want some more distance, look into making a dipole antenna, there is a coil loaded diy antenna you can make that helps a little bit up from straight wire.


2

A few thoughts: For ~$20 per unit, the 1mW Digimesh modules will take care of reliable mesh networking plus provide a high degree of configurability and scalability. Depending on the budget for your sensor nodes this might be better than "wasting a ton of time" messing with bare-bones hardware and third party code. Constrain the mesh network within the "...


2

The problem you run into is that you are trying to insert the binary value of 0 into an Arduino String. That may actually be possible, but the way you attempt to to do it utilizes some C-style mechanisms, specifically representing a string as a pointer to some characters terminated by a null byte - which is to say 0. Your code: string_vol = String(String(...


2

This is what I use, although admittedly not in your application. I run it from a 12V wall adaptor and adjust the output voltage to suit my requirements. The input should ideally be at least a couple of volts above the output(depends on current and temperature at 25degC and 20mA it's > 1.6V and 1.5A at the same temp it's > 2.7V). Another alternative if you ...


2

Lokesh, to expand on what Majenko said when you transmit something over this sort of link you are transmitting either a 1 or a 0. When 8 ones or zeros arrive you have a byte. A byte has a value of between 0 and 255 and what this means is entirely up to the 'protocol' you are using. In your case your sending program is sending a letter, lets say A. Now ...


2

It's not possible. To sample a 1GHz signal you need to sample at least 2 billion times per second (a sample rate of 2Gsps). You can maybe get a couple of hundred KILO samples (thousand) per second on an Arduino. Also the 1GHz signal itself is of no interest to you. What is of interest is what is modulated on the 1GHz signal. What is normally done is: Down-...


Only top voted, non community-wiki answers of a minimum length are eligible