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

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


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


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


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

firstly, the radio.write command is used for checking for the acknowledgement from the RX after the FIFOs are full for a single write. But radio.writefast will not wait for the acknowledgement from the RX and would continuously transmit the payload for a single write. Similarly for radio.startwrite and radio.startwritefast commands. Coming to the keeping ...


3

Yes, you can connect multiple devices to GND and +5 V. You may find that you need to bring one wire from the PCB to an external connector or piece of stripboard so that you can make more reliable connections. Watch that your total current does not exceed the rating for the voltage regulator or USB power supply.


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


3

I'm not sure for Arduino, but it has been done with ESP32. If you have not yet spent the money into a Bluetooth module for Arduino, you'll find that the ESP32 is not expensive either. You can find the code on Github. The author uses a TinyPico because it's pin compatible with one of his earlier projects. IMHO, any ESP32 should do as well. The key thing is to ...


3

It uses the 2.4 GHz band Does this refer to the frequency of the EM waves that the device uses to communicate? Yes. It generates (and receives) radio waves in the region of 2.5GHz. If used in open space and with lower baud rate its range can reach up to 100 meters. I know baud rate refers to how many "groups of bits" are transmitted per second. ...


3

Arduino allows you to connect external peripherals (via I2C, SPI, UART, I/O) and shields. It'll be impossible to list them all, as you can even make your own; but here an overview of the most common I can think off: WiFi Bluetooth LoRa Zigbee Z-wave RF (433mhz) InfraRed GSM/LTE It'll be a trade-off between signal range, power usage, delay and bandwidth. Do ...


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


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