Dataoverdracht tussen 2 aduino's uno

Arduino specifieke Software
Berichten: 133
Geregistreerd: 10 Jan 2016, 16:39

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor Nightmystic » 08 Apr 2016, 11:34

Ik had je stukje code in de Sketch voor de Arduino gezet omdat het idee van Pete Scargill om de easytransfer werkend te maken met ESP zo staat omschreven:
I’m going to describe here the transmitting side of the EasyTransfer system as used in Arduino Eerste zin van deze pagina http://tech.scargill.net/easytransfer-for-esp8266/
en ik voornamelijk vanuit de arduino naar de esp wil communiceren.

Als ik de code aan de ontvangende kant erin zet, de ESP dus en de ESP8266 Generic board kies, komt de volgende foutmelding:

In file included from DHT22toBlynk2AJAXReceiving2.ino:4:0:
C:\Users\Serena\Documents\Arduino\libraries\avr-uart-master/uart.h:106:20: fatal error: avr/io.h: No such file or directory
#include <avr/io.h>
^
compilation terminated.
Error compiling.

cpp code
/**********************************************************
* Als de Webpagina open staat, werkt de Blynk APP niet!!!*
*********************************************************/
#include <uart.h>


#include <EasyTransfer.h>
#include <DHT.h>
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>

void ICACHE_FLASH_ATTR
uart0_tx_buffer(uint8 *buf, uint16 len)
{
uart_write(UART0,(char *) buf, len); // alternatieve manier om in een keer een buffer weg te pompen (NJV)
}

//#include <Wire.h>

#define DHTPIN2 2 // [D4] Sensor in de koelkast
#define DHTTYPE2 DHT22 // DHT 22 (AM2302), AM2321

// Temperatuur Sensoren aanzetten
DHT dht2(DHTPIN2, DHTTYPE2);

SimpleTimer timer;

//create object
EasyTransfer ET, ETbutton;

struct RECEIVE_DATA_STRUCTURE
{
//put your variable definitions here for the data you want to receive
//THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
float h2;
float t2;
boolean fanstatus;
} __attribute__((packed));

struct SEND_DATA_STRUCTURE
{
//put your variable definitions here for the data you want to send
//THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
boolean buttonOnOff;
} __attribute__((packed));

//give a name to the group of data
SEND_DATA_STRUCTURE mydata;
RECEIVE_DATA_STRUCTURE buttondata;

int y;
boolean buttonOnOff;


BLYNK_WRITE(V4)
{
y = param.asInt();
if ( y == 1)
{
buttondata.buttonOnOff = 1;
}
else
{
buttondata.buttonOnOff = 0;
}
}

WidgetLCD lcd(3); // LCD Widget (BLYNK) Virtuele PIN 3

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "ab9521e53b4544da96483b2f6ea1efb8"; //insert here your token generated by Blynk
// For Webpage

WidgetLED led8(8);

void setup()
{
Serial.begin(115200); // See the connection status in Serial Monitor
Blynk.begin(auth, "MyNetwork", "PASSWORD"); //insert here your SSID and password

dht2.begin();

ET.begin(details(mydata), &Serial);
ETbutton.begin(details(buttondata), &Serial);

lcd.clear();
}

void loop()
{
// WiFiClient client = server.available();
Blynk.run(); // Initiates Blynk
timer.run(); // Initiates SimpleTimer

lcd.print(0, 0, "TEMP HUMI FAN");

lcd.print(0,1, mydata.t2);
lcd.print(5,1, " ");
lcd.print(7,1, mydata.h2);
lcd.print(12,1, " ");
lcd.print(14,1, mydata.fanstatus);

Blynk.virtualWrite(1, mydata.t2);
Blynk.virtualWrite(2, mydata.h2);
Blynk.virtualWrite(3, mydata.fanstatus);
delay(100); // Flood error voorkomen
ET.receiveData();
lcd.print(13,1, "NOW");
ETbutton.sendData();
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor nicoverduin » 08 Apr 2016, 11:43

Tja als je probeert Arduino AVR libraries in een ESP te stoppen. Ik zou een andere koers zoeken.....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 133
Geregistreerd: 10 Jan 2016, 16:39

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor Nightmystic » 08 Apr 2016, 12:15

Ok, already working on it ;)

Berichten: 133
Geregistreerd: 10 Jan 2016, 16:39

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor Nightmystic » 11 Apr 2016, 16:41

1 float van Arduino naar ESP sturen lukt en een integer van ESP naar Arduino ook, maar 2 floats van Arduino naar ESP lukt me niet.

Wat werkt om 1 float te versturen en een integer te ontvangen:
Arduino:
cpp code
#include <Wire.h>
#include <DHT.h>

char t[10]; //empty array where to put the numbers going to the master
volatile int Val; // variable used by the master to sent data to the slave

#define DHTPIN2 2 // [D4] Sensor in de koelkast
#define DHTTYPE2 DHT22 // DHT 22 (AM2302), AM2321

// Temperatuur Sensoren aanzetten
DHT dht2(DHTPIN2, DHTTYPE2);

float h2;
float t2;

const byte SlaveDeviceId = 8;
byte LastMasterCommand = 0;
byte state = 0;

void setup()
{
Serial.begin(115200);
Wire.begin(SlaveDeviceId); // join i2c bus with Slave ID
Wire.onReceive(receiveEvent); // what to do when receiving data
Wire.onRequest(requestEvent); // fucntion to run when asking for data
dht2.begin();
}

void loop()
{
t2 = dht2.readTemperature();
dtostrf(t2, 5, 2, t); //converts the float or integer to a string. (floatVar, minStringWidthIncDecimalPoint, numVarsAfterDecimal, empty array);
// h2 = dht2.readHumidity();
// dtostrf(h2, 5, 2, u); //converts the float or integer to a string. (floatVar, minStringWidthIncDecimalPoint, numVarsAfterDecimal, empty array);

Serial.println(Val);
delay(100);
}

// function: what to do when asked for data
void requestEvent() {
Wire.write(t);
}

// what to do when receiving data from master
void receiveEvent(int howMany)
{Val = Wire.read();}


ESP01:
cpp code
#include <dummy.h>
#include <Wire.h>

char t[10]={};//empty array where to put the numbers comming from the slave
volatile int Val; // varaible used by the master to sent data to the slave

void setup() {
Serial.begin(115200);
Wire.begin(0, 2); // join i2c bus SDA (0), SCL (2)
}

void loop()
{
Wire.requestFrom(8, 5); // request 3 bytes from slave device #8

//gathers data comming from slave
int i=0; //counter for each bite as it arrives

while (Wire.available()) {
t[i] = Wire.read(); // every character that arrives it put in order in the empty array "t"
i=i+1;
}
Serial.println(t);
delay(100);

// send data to slave. here I am just sending the number 2
Val=2;
Wire.beginTransmission (8);
Wire.write (Val);
Wire.endTransmission ();
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor nicoverduin » 11 Apr 2016, 18:09

Dan heb je nog wat om over na te denken........ Want je verstuurt geen float of een int maar een char Array.... En die wordt byte voor byte verstuurd..... dus....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 133
Geregistreerd: 10 Jan 2016, 16:39

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor Nightmystic » 11 Apr 2016, 18:12

Klopt, een Float kan je namelijk niet versturen, dus daar moest iets anders op verzonden worden.
Dus kan je ook een hele struct met allerlei verschillende variabelen versturen... denk aan easytransfer.

Berichten: 133
Geregistreerd: 10 Jan 2016, 16:39

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor Nightmystic » 12 Apr 2016, 09:02

Die code voor de vrachtwagencel was geschreven om data van het board naar de display te sturen en terug via Serial, toch?

Misschien kan ik daar wat inspiratie uit halen. ;)

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Dataoverdracht tussen 2 aduino's uno

Berichtdoor nicoverduin » 12 Apr 2016, 10:15

Is een vergelijkbaar verhaal.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Alexduh, MiltonHudge en 19 gasten