7

Is there any other way to send more than 100 values in one message? Yes. Don't use String. Don't use concat(). Just print each bit as a separate Serial.print() function call.


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

What you are doing is called "bit-banging" (wikipedia link) but you have no guarantees about the timing of your bits. In your writeTx routine you are changing tx_pin at some rate which depends on: the clock speed of your MCU the code that the C compiler generates Moreover, the timing will be all screwed up if you happen to get an interrupt while sending ...


5

I had a toy project a while ago that generated AM radio. Code Code for Uno or any Atmega328 based boards: const byte ANTENNA = 9; void setup() { // set up Timer 1 TCCR1A = bit (COM1A0); // toggle OC1A on Compare Match TCCR1B = bit (WGM12) | bit (CS10); // CTC, no prescaler OCR1A = 9; // compare A register value to 10 (zero relative) ...


4

I agree with @Gerben - the nRF24L01+ would probably be the most suitable for your application. It should have enough range to go 15m through a few walls, and the cost is about as cheap as you can get. You can pick up cheap Chinese clone modules (not real nRF24L01+ but another chip that operates exactly the same) for around $2 each on eBay. I by them by ...


4

NRF24L01+ for communication. Extreme low power if not sending. Detects packet loss, and automatically resend the packet. You would however need a small arduino board at the sensor, to read the sensor, and signal to NRF24L01 to send a message. You'll have to put the arduino in to low power sleep mode to get some good battery life. Either have the sensor ...


4

I made a Temperature and humidity sensor - battery powered in 2013. It is powered from 3 x AA batteries, and lasted, as I recall, until a couple of months ago before I changed the batteries. That is, almost two years. It logs to an SD card every 15 minutes. You could change that interval of course, it would probably not last as long logging every minute. I ...


4

I've looked at the data sheet for this and I think it is the wrong choice of device for a beginner. Can I suggest that you start by looking at a relatively simple DPI interfaced device, such as a sensor or RTC. This will teach you the basics of sending commands via the Wire library. You might even get the hang of it just by looking at existing libraries. ...


4

Regarding the hardware problem, there are some advices in the comments. As you wrote, the solution is to reduce the bitrate at 2000 bps. The remaining question is why the receiver always truncates the message (after a receiving error occurs). The answer is in the definition of the buflen parameter of the vw_get_message function. The page https://www.pjrc....


3

So to clarify, SoftwareSerial uses bit-bang? How are you able to tell? By reading the code. For example, this is how it reads 8 bits. It does a delay (which you don't) for the exact amount of time, and then reads the pin, and "ors" it into the variable which is the assembled byte. // Read each of the 8 bits for (uint8_t i=0x1; i; i <<= 1) { ...


3

Yes, it is possible. That is already supported by the IR library. Please see this tutorial for further details. The outline of the sender is: uint16_t sample = analogRead(A0); irsend.sendSony(sample, 16); And the receiver: if (irrecv.decode(&decodedSignal)) { uint16_t sample = decodedSignal.value; ... } Cheers!


3

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


3

I have had a very similar problem and the Arduino core team has accepted a change from me to facilitate this functionality. It is a complex story so you may have to reread a couple of times. 1) Serial.print returns before the data is send over serial. The first thing to realize is that when you do serial.print() the data is not actually send over serial. ...


3

This seems to be the Chip used on the RFM24. Have a look on the RadioHead Library: http://www.airspayce.com/mikem/arduino/RadioHead/classRH__RF24.html I normally use the same libs for the RFM69 (Semtech SX1231) with my Whisper Node and works fine. I would expect the same for the RFM24. Btw, getting a silicon and building the Radio can be quite complicated....


3

The frequency of a (wireless) radio is its carrier frequency. The data stream is carried on it by modulating that carrier wave in some way: by frequency-shifting, for example. A given processor could not provide data at a rate faster than its clock frequency (at least as a steady-state rate), but a packet of data, once supplied to and buffered in the radio, ...


3

A. Does address take character or number as input? The address is 5 bytes. In this library it is provided as an array. In C a string is merely an array of bytes. So it is possible to represent an array of bytes as a simple string. Internally the two representations: byte address[] = "123ab"; and byte address[] = { '1', '2', '3', 'a', 'b' }; and even: ...


2

There is an excellent article on power reduction at http://www.gammon.com.au/power , but it's definitely worth looking at the parts of your project OTHER than the arduino - that is, your sensor, and your radio. These tend to use much more than your Arduino. There is some persistent storage on the Arduino - EEPROM - write all your data to that as you read it,...


2

I use the ESP8266 to get the data from my arduino to my webserver using wlan. You could easy install a webserver on your pi and connect it to your wifi, or just use a server online. So you can install on all places where you get WLAN. Also you could use a repeater if your wlan is not strong enough. Thats how my projekt works (Water level messure) Get ...


2

There's many options you could use. The simplest, though most expensive, would be to equip all your Arduinos with WiFi shields and connect a USB WiFi dongle to the Pi. The Pi could run in AP mode (investigate hostapd) so you don't have to connect them all to your internet router. A cheaper option, though harder to work with on the Pi, would be to use the ...


2

How about little smart WiFi boards (such as Red Bear WiFi Micro or something similar), which are connected at your local home network? You can configure your own dyndns service or use a existing and built a web home appliances or web service for your own mobile application. In general please take care of security aspects, so that your home can not be ...


2

I'm not sure how many bluetooth devices can be connected to your smartphone. But if you use smartphone, the you can eliminate the master Arduino. But as I said, it still depends on the number of devices you'd like to control. This is supposed to go in the comment section.


2

This use of String is dangerous. You are growing and shrinking the String in a loop and hoping the memory manager prevents any holes from forming: void clockResetcheck() { char clkset[] = "CLKSET.TXT"; if (myFile.open(clkset, O_READ)) { uint16_t newYr; uint8_t newDay; uint8_t newMo; uint8_t newHr; uint8_t newMin; uint8_t ...


2

I haven't found the source of the problem by reading through the code, and will limit my comments to advice about debugging the problem. With the code as it stands, there are half a dozen points where the missing character might have dropped out. With just a final result, the problem location is difficult to narrow down. Modify your code to display ...


2

Absolutely no. Can you connect your bluetooth headset to the wireless router? No because even if they share the same band they "speak" different protocols. So why could you do that with the nRF24L01? If you want to communicate with your PC you have three options: Choose nRF24L01. In this case, since the PC does not have that device, you will need to make ...


2

TL;DR - You have the options of either BlueTooth or XBee (amongst others: IR, for example?) for wireless uploading. However, I believe that only one board can be uploaded to, at a time, so you will need to cycle through the boards one at a time, see Programming multiple ATMegas/Arduinos at once. When uploading a sketch or using a programmer (for sketch ...


2

If you are still searching for a lib check out: https://github.com/adafruit/Adafruit_Python_BluefruitLE Its specifically made for BLE communication on OS X or Linux by wrapping the corebluetooth and its Linux equivalent bluez in a python lib. Windows is not supported at this moment. Unfortunately there is no documentation to it. You will have to read the ...


2

Maybe avoid doing the dynamic string manipulations? Serial.print("{\"deviceID\":\"ZB_ROUTER_1\",\"sensorID\":\"MMA8451\",\"sensorType\":\"accelerator\",\"aX\":["); for(i=0; i <10000; i++){ if (! i==0) Serial.print(','); Serial.print(i); } Serial.print("],\"landscape\": PUF} VMDPE_1|3147_VMDPE");


2

I would recommend the nRF24L01. You don't need one pipe per node - just one pipe. Each pipe is effectively an address that a node responds to - having multiple pipes means you can have multiple addresses on one node (like aliases) - but of course you only need one address per node, and hence one pipe per node. The range is more than adequate (with the ...


2

If you want to go for cheap just use a ESP8266 no arduino needed.


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