We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hello all, Can you help with project for my aquarium? I want to measure temperature in the two aquarium. But I not know recieve packet, partion and save to variable. I not know very good programing, because I need ony project for akvarium... Thank you All.. Processing: import hypermedia.net.*;
UDP udp; // DEFINUJ UDP
int yosa; // osa šipky
int posliY; // přijmute hodnoty teplomeru
int posliX; // přijmute hodnoty
void setup() {
posliY = 80; //zakladni hodnota před přijmutim paketu
posliX = 80; //zakladni hodnota před přijmutim paketu
size(400,400);
udp = new UDP( this, 6000 ); // VYTVOR KOMUNIKACI NA UDP PORT 6000
udp.log( true );
udp.listen( true ); // ČEKEJ NA ZPĚTNOU VAZBU
String ip = "192.168.1.177"; // VZDÁLENÁ IP ADRESA
int port = 8888; // KOMUNIKAČÍ PORT
udp.send("start", ip, port ); //pošli první paket
}
void receive( byte[] data ){ //přijmi pakety
// přijmi řetězec znaku
String message = new String( data );
String[] parts = split(message, "&");//pakety jsou rozděleny &
posliX = int(parts[0]);//paket
posliY = int(parts[1]);//paket
println( "přijmuto: x = \""+posliX+"\" přijmuto: x = \""+posliY+"\" "); //vypiš data do terminálu
}
Arduino:
//knihovny
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
//knihovny pro DS18b20
#include <OneWire.h>
#include <DallasTemperature.h>
// Připojení čidla na pin 8
#define ONE_WIRE_BUS_PIN 8
OneWire oneWire(ONE_WIRE_BUS_PIN);//nastavení komunikace po I2S sběrnici
DallasTemperature sensors(&oneWire);//předání dat z I2S teploměru
// Adresa HW na I2S
DeviceAddress tepl1 = { 0x28, 0xFF, 0xC7, 0x49, 0x71, 0x15, 0x01, 0x41 };//akvário
DeviceAddress tepl2 = { 0x28, 0xE1, 0xC7, 0x40, 0x04, 0x00, 0x00, 0x0D }; //venkovní teplota
//mac, ip a port
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEG, 0xFE, 0xBD };
IPAddress ip(192, 168, 1, 177);
unsigned int localPort = 8888; // naslouchej na tomto portu
EthernetUDP Udp;
void setup() {
// start udp a ethernet:
Ethernet.begin(mac,ip);
Udp.begin(localPort);
Serial.begin(9600);
//Inicializuj čidla
sensors.begin();
// Nastav 10 bitů (9-12 bitů)
sensors.setResolution(tepl1, 10);
sensors.setResolution(tepl2, 10);
}
void loop() {
sensors.requestTemperatures(); //Pošli příkaz čtení teploty
//vypiš teploty na serial
Serial.print("Teplota Akvária: ");
printTemperature(tepl1);
Serial.println();
Serial.print("Teplota vzduchu: ");
printTemperature(tepl2);
Serial.println();
// pokud jsou přečtena data přečti paket
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]="";
int packetSize = Udp.parsePacket();
if(packetSize)
{
Serial.print("Velikost prijmutych paketu");
Serial.println(packetSize);
Serial.print("z ");
IPAddress remote = Udp.remoteIP();
for (int i =0; i < 4; i++)
{
Serial.print(remote[i], DEC);
if (i < 3)
{
Serial.print(".");
}
}
Serial.print(", port ");
Serial.println(Udp.remotePort());
// přečti přijmaný znak
Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
Serial.println("Prijmuty paket:");
Serial.println(packetBuffer);
//pošli pakety zpět
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
// Udp.write(sensors.getTempC(tepl1));
Udp.write("&");
Udp.write(sensors.getTempC(tepl2));
Udp.endPacket();
}
delay(10);
}
//deklarace uživatelských funkčí čidla
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) //// Pokud bude teplota -127 vypiš chybu čidla
{
Serial.print("Err");
}
else
{
Serial.print(tempC);// vypiš teplotu v C
}
}