hi I need help
im making a temperature masure with arduino uno r3 and Im using 1 wirless rf nrf for transmitter.. and 1 for receiver in another arduino.. but after that I cannot transmitter my data temperature.. and it request timeout.. but I can ping it
thx need help.. im newbie for it
Post code.
Use code tags.
#include
dht11 DHT11;
#define DHT11PIN 2
#include
#include "nRF24L01.h"
#include "RF24.h"
int NoData;
int mydata[5];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup()
{
NoData=0;
Serial.begin(9600);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
radio.begin();
radio.openWritingPipe(pipe);
}
void loop()
{
Serial.println(" ");
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
switch (chk)
{
case 0: Serial.println("OK"); break;
case -1: Serial.println("Checksum error"); break;
case -2: Serial.println("Time out error"); break;
default: Serial.println("Unknown error"); break;
}
mydata[0] =DHT11.humidity;
mydata[1] =DHT11.temperature;
mydata[2] = (dewPoint(DHT11.temperature, DHT11.humidity));
mydata[3] =(dewPointFast(DHT11.temperature, DHT11.humidity));
mydata[4]= NoData;
radio.write( mydata, sizeof(mydata) );
NoData=NoData+1;
delay(1000);
}
//---------------------------hitungan---------------------------------------
double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
}
double Kelvin(double celsius)
{
return celsius + 273.15;
}
double dewPoint(double celsius, double humidity)
{
double A0= 373.15/(273.15 + celsius);
double SUM = -7.90298 * (A0-1);
SUM += 5.02808 * log10(A0);
SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
SUM += log10(1013.246);
double VP = pow(10, SUM-3) * humidity;
double T = log(VP/0.61078); // temp var
return (241.88 * T) / (17.558-T);
}
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity/100);
double Td = (b * temp) / (a - temp);
return Td;
}//end of code
#include
#include "nRF24L01.h"
#include "RF24.h"
#include
int mydata[5];
RF24 radio(9,10);
ShiftLCD lcd(2, 3, 4);
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(void)
{
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
lcd.begin(16, 2);
pinMode(5, OUTPUT);// memilih pin 5 untuk LED LCD
}
void loop(void)
{
if ( radio.available() )
{
bool done = false;
while (!done)
{
done = radio.read( mydata, sizeof(mydata) );
digitalWrite(5, HIGH); //LED LCD Menyala bila ada signal dari sensor
lcd.setCursor(0, 0);
lcd.print("No :");lcd.print(mydata[4]);
lcd.setCursor(0, 1);
lcd.print("H :");lcd.print(mydata[0]);lcd.print(" %");
lcd.setCursor(9, 1);
lcd.print("C :");lcd.print(mydata[1]);lcd.print(" C");
}
}
else
{
lcd.print("No radio available");
digitalWrite(5, LOW); //LED mati bila tidak ada signal
}
delay(1000);
lcd.clear();
}//end of code
the first is transmitter and the second is receiver.. i just can ping betwen nrf
thx for help
#include
dht11 DHT11;
That didn't start very well, did it?
#include
Include what?
ok tomorrow i will upload another my code..
i wanna asking for this Arduino Playground - Nrf24L01
just using 2 arduino uno r3 and 2 nrf
/*
Copyright (C) 2011 J. Coliz <maniacbug@ymail.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/
/**
* Example for Getting Started with nRF24L01+ radios.
*
* This is an example of how to use the RF24 class. Write this sketch to two
* different nodes. Put one of the nodes into 'transmit' mode by connecting
* with the serial monitor and sending a 'T'. The ping node sends the current
* time to the pong node, which responds by sending the value back. The ping
* node can then see how long the whole cycle took.
*/
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
//
// Hardware configuration
//
// Set up nRF24L01 radio on SPI bus plus pins 9 & 10
RF24 radio(9,10);
//
// Topology
//
// Radio pipe addresses for the 2 nodes to communicate.
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
//
// Role management
//
// Set up role. This sketch uses the same software for all the nodes
// in this system. Doing so greatly simplifies testing.
//
// The various roles supported by this sketch
typedef enum { role_ping_out = 1, role_pong_back } role_e;
// The debug-friendly names of those roles
const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};
// The role of the current running sketch
role_e role = role_pong_back;
void setup(void)
{
//
// Print preamble
//
Serial.begin(9600);
printf_begin();
printf("\n\rRF24/examples/GettingStarted/\n\r");
printf("ROLE: %s\n\r",role_friendly_name[role]);
printf("*** PRESS 'T' to begin transmitting to the other node\n\r");
//
// Setup and configure rf radio
//
radio.begin();
// optionally, increase the delay between retries & # of retries
radio.setRetries(15,15);
// optionally, reduce the payload size. seems to
// improve reliability
//radio.setPayloadSize(8);
//
// Open pipes to other nodes for communication
//
// This simple sketch opens two pipes for these two nodes to communicate
// back and forth.
// Open 'our' pipe for writing
// Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading)
//if ( role == role_ping_out )
{
//radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
//else
{
//radio.openWritingPipe(pipes[1]);
//radio.openReadingPipe(1,pipes[0]);
}
//
// Start listening
//
radio.startListening();
//
// Dump the configuration of the rf unit for debugging
//
radio.printDetails();
}
void loop(void)
{
//
// Ping out role. Repeatedly send the current time
//
if (role == role_ping_out)
{
// First, stop listening so we can talk.
radio.stopListening();
// Take the time, and send it. This will block until complete
unsigned long time = millis();
printf("Now sending %lu...",time);
bool ok = radio.write( &time, sizeof(unsigned long) );
if (ok)
printf("ok...");
else
printf("failed.\n\r");
// Now, continue listening
radio.startListening();
// Wait here until we get a response, or timeout (250ms)
unsigned long started_waiting_at = millis();
bool timeout = false;
while ( ! radio.available() && ! timeout )
if (millis() - started_waiting_at > 200 )
timeout = true;
// Describe the results
if ( timeout )
{
printf("Failed, response timed out.\n\r");
}
else
{
// Grab the response, compare, and send to debugging spew
unsigned long got_time;
radio.read( &got_time, sizeof(unsigned long) );
// Spew it
printf("Got response %lu, round-trip delay: %lu\n\r",got_time,millis()-got_time);
}
// Try again 1s later
delay(1000);
}
//
// Pong back role. Receive each packet, dump it out, and send it back
//
if ( role == role_pong_back )
{
// if there is data ready
if ( radio.available() )
{
// Dump the payloads until we've gotten everything
unsigned long got_time;
bool done = false;
while (!done)
{
// Fetch the payload, and see if this was the last one.
done = radio.read( &got_time, sizeof(unsigned long) );
// Spew it
printf("Got payload %lu...",got_time);
// Delay just a little bit to let the other unit
// make the transition to receiver
delay(20);
}
// First, stop listening so we can talk
radio.stopListening();
// Send the final one back.
radio.write( &got_time, sizeof(unsigned long) );
printf("Sent response.\n\r");
// Now, resume listening so we catch the next packets.
radio.startListening();
}
}
//
// Change roles
//
if ( Serial.available() )
{
char c = toupper(Serial.read());
if ( c == 'T' && role == role_pong_back )
{
printf("*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK\n\r");
// Become the primary transmitter (ping out)
role = role_ping_out;
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
else if ( c == 'R' && role == role_ping_out )
{
printf("*** CHANGING TO RECEIVE ROLE -- PRESS 'T' TO SWITCH BACK\n\r");
// Become the primary receiver (pong back)
role = role_pong_back;
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
}
}
}
// vim:cin:ai:sts=2 sw=2 ft=cpp
from that link after press T to transmitter. request timeout to?
what must i do?
thanks and sorry im new using this
i have new coding.. but it can't to transmitter
transmitter
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define tempPin 0
RF24 radio(9,10);
int temp;
int mydata[1];
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup()
{
Serial.begin(9600);
Serial.print("LM35 Test Program");
Serial.println();
radio.begin();
radio.openWritingPipe(pipe);
}
void loop()
{
temp = (analogRead(tempPin) * 5.0 * 100.0/1024.0);
Serial.print("Read Sensor : ");
Serial.print(temp);
Serial.println(" C");
mydata[0] = temp;
radio.write(&mydata,sizeof(mydata));
delay(1000);
}
Reciever
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9,10);
int mydata[1];
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(void)
{
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop(void)
{
if(radio.available())
{
bool done = false;
while(!done)
{
done = radio.read(mydata,sizeof(mydata));
Serial.print("Suhu : ");
Serial.print(mydata[0]);
Serial.println(" C");
}
}
else
{
Serial.println();
Serial.println("No Radio Available");
}
delay(1000);
}
need help thx
but it can't to transmitter
What does that mean?
What do the serial prints tell you?
the data cannot send to reciever and request timeout
i need asking some question again.. can i making a feedback using wireless 433mhz or only Wireless NRF?
Feedback( send data back and forth)