How to go wireless?

Hi there, i'm making a dyno for a small 2 stroke using an arduino uno rev3 and an pcb shield.
It's now using usb to connect to my laptop. What do i need to do to make this wireless via wifi?

I'm very new to arduino so i have no idea what i'm doing.

Wireless as in what? Wireless data relaying the dyno readings to the main logger? Wifi isn't neccessary there.

What are you attempting to do with it?

Try these Cheap Wifi shield projects
Cheap/Simple Wifi Shield
and
ESP8266-01 Wifi Shield

I am using the dyno readings as an live engine management. The shield already gives me temperature and rpm's. So I want to make it wireless so i can read it when its running on track.

How far does the signal have to reach?

How often do you need to send data?
See my webpage on Remote High Speed Data Logging for some details.

The endpoint on that page is an Android mobile but the rest of the discussing is applicable to a PC Wifi connection

About 50 meters.

It needs to be live, so all the time. I'm competing in rc 1/5 championships. We want to see the rpm's and tempertures live so we can see how the engine is doing.(https://ardyno.weebly.com/) is what i'm now using.

I'd use the 2.4ghz nrf24l01 with a distinct channel, be sure to use a clear chan!

1 Like

Sounds like an good idea. So I need 2 arduino's and 2 nrf24l01. What do i need to do to make this work?

2 arduino's and 2 nrf24l01 + some code .........

I found this on the web for an transmitter, can i just simply paste this in front of the original code? Or is it harder then that?

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8); // CE, CSN

const byte address[6] = "00001";

void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}

Itll be more complicated than that.
You'll need to decide a few things first, do you care about 2 way communication, or do you just want broadcasting only? How much information are you trying to send, etc.

Do you know exactly which parameters you're trying to log and what the data size will be?

You'll need two arduinos and some time to get the wireless communication working flawlessly before you integrate it in your code. Once its working on its own, its easy to implement.

It's just broadcasting, about all the other i have no idea. This is how it looks now.

I found this, is this enough to know?
A0 to A5 are also used.
As i read it like this, is hall engine rpm over cap engine rpm?

So that looks like a reasonable plan of attack to gather information. Have you confirmed that the pins "S" and "+" both operate at 5V levels?

This is only part of the battle. You now need to make sense of any data supplied by that module and then communicate with the data logger. Are you aware of how data is communicated from the ECU to the Arduino? I.E. digital or analog, etc

No sir, the Cap engine, is the "rev-limiter", and the Hall engine S line is what your RPM signal IN is. Do you have any feedback on the wheels, etc?

This is the sketch that i'm currently using. S is indeed 5volts.

If i read the drawing it looks like it's using digital pins for the Hall, cap or roller rpm. Analog pins are used for some senors.

SimpleDyno_Sketch.ino (2,0 KB)

I would expect that. Google search "Arduino RPM hall effect interrupt"

can you post that code using the code snippets? I cannot access the download at the moment

Here is the code,

Transmits:
1 x Session timestamp
1 x Interrupt timestamp and 1 x time interval since last interrupt for INT0 / Pin2 / RPM1
1 x Interrupt timestamp and 1 x time interval since last interrupt for INT1 / Pin3 / RPM2
6 x Analog Inputs (A0 and A1 are Voltage and Current, A2 and A3 are Temperature, A4 and A5 are open)
Values are comma delimeted
Baud rates selected in SD must match coded values in this Sketch.
*/

const int NumPortsToRead = 6;
int AnalogResult[NumPortsToRead];
volatile unsigned long TimeStamp = 0;
volatile unsigned long time1 = 0;
volatile unsigned long time2 = 0;
volatile unsigned long Oldtime1 = 0;
volatile unsigned long Oldtime2 = 0;
volatile unsigned long TempTime1 = 0;
volatile unsigned long TempTime2 = 0;
String AllResult = "";

void setup() {
// Initialize serial communication
// Ensure that Baud rate specified here matches that selected in SimpleDyno
// Availailable Baud rates are:
// 9600, 14400, 19200, 28800, 38400, 57600, 115200
Serial.begin(9600);
// Initialize interupts (Pin2 is interrupt 0 = RPM1, Pin3 in interrupt 1 = RPM2)
attachInterrupt(0,channel1,FALLING);
attachInterrupt(1,channel2,FALLING);
}

void loop() {
AllResult = "";
AllResult += micros();
AllResult += ",";
AllResult += TempTime1;
AllResult += ",";
AllResult += time1;
AllResult += ",";
AllResult += TempTime2;
AllResult += ",";
AllResult += time2;
for (int Looper = 0; Looper < NumPortsToRead;Looper++){
AnalogResult[Looper] = analogRead(Looper);
AllResult += ",";
AllResult += AnalogResult[Looper];
}
Serial.println (AllResult);
Serial.flush();
delay(1);
}

//Interrupt routine for RPM1
void channel1(){
TempTime1 = micros();
time1 = TempTime1-Oldtime1;
Oldtime1 = TempTime1;
}

//Interrupt routine for RPM2
void channel2(){
TempTime2 = micros();
time2 = TempTime2-Oldtime2;
Oldtime2 = TempTime2;
}