This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
arduino on I2C
#8
(2017-11-03, 10:40 AM)Sprokkie Wrote: It will be oil pressure, oil temperature, coolant temperature, RPM,  I want to build a fuel consumption meter, but for that I need much more arduino skills Smile

the idea for that is having two flow measurement sensors on in the fuel line to the engine and one in the return to the dieseltank.
If I know the amount of diesel for each impulse from that sensor I know the amount of fuel that is going in to the engine and the amount of fuel that is going back
to the dieseltank. The result of both is the actual fuel usage.

So for now it will be pressure, temp and RPM.
Eventually I want to connect reedcontacts as well for a alarm system.

How do I get the nmeaxdr to the arduino ? Where can I find some information how to create such a message ?

For temperature it might be easier just to use ds18b20 thermometers straight into the Raspberry Pi, there's a tab in openplotter to set them up, then a node red dashboard to display - really handy, I have one on the alternator, exhaust & engine headblock. Also openplotter turns the engine head temperature into water temperature so it cn be displayed in an  openpcn dashboard so the info can be seen on a tablet without having to change screens. It all gets saved to a database as well.
Cheap waterproof ones available on ebay. Openplotter can handle reed contacts directly as well, on a gpio pin. 

http://www.ebay.co.uk/itm/DS18B20-18B20-...0784248550

Pressure & RPM might be better going into node-red like Jim said. 

Lots info on the web for NMEA message types. 

http://www.catb.org/gpsd/NMEA.html#_xdr_...easurement




[Image: n63uskc.png]

Something else worth considering is the ESP32 or ESP8266 and pass the data over wifi. I haven't got a ESP32 to play with yet but the ESP8266 works OK over wifi. Programmed just like an Arduino. This sketch connects to the AIS nmea output of a GX2100 radio and sends the data to openplotter.
The ESP32 looks even more powerful. 
Also, adding a ADS1115 board to Openplotter means you can measure battery voltage so you can keep and eye if all this stuff is draining your bank too much Cool 

You'll need a serial to TTL convertor to get NMEA into an arduino or ESP, cheap on ebay.
Code:
/**  This sketch sends broadcast udp message.
*
*
*/




#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
#include <PubSubClient.h>    // mqtt library


#define mqtt_server "10.10.10.1"
#define mqtt_user "User"
#define mqtt_password "Password"
const char* ssid     = "OpenPlotter";
const char* password = "password";
//const char* ssid     = "*****";
//const char* password = "*******";


IPAddress ipBroadCast(10, 10, 10, 255);
unsigned int udpRemotePort=10112;
unsigned int udplocalPort=2390;
const int UDP_PACKET_SIZE = 70;
char udpBuffer[ UDP_PACKET_SIZE];


String  inData;


WiFiUDP udp;
WiFiClient espClient;
PubSubClient client(espClient);
SoftwareSerial mySerial(14, 12);


void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i=0;i<length;i++) {
 char receivedChar = (char)payload[i];
 Serial.print(receivedChar);
 }
 Serial.println();
}


void reconnect() {
 // Loop until we're reconnected
 while (!client.connected()) {
   Serial.print("Attempting MQTT connection...");
   // Attempt to connect
   // If you do not want to use a username and password, change next line to
   // if (client.connect("ESP8266Client")) {
   if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
     Serial.println("connected");
     client.subscribe("myfirstin");
   } else {
     Serial.print("failed, rc=");
     Serial.print(client.state());
     Serial.println(" try again in 5 seconds");
     // Wait 5 seconds before retrying
     delay(5000);
   }
 }
}




//================================================================
// Setup hardware, serial port, and connect to wifi.
//================================================================

void setup() {
 Serial.begin(115200);
 mySerial.begin(4800);
 delay(10);
 // We start by connecting to a WiFi network
 Serial.println();
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);

 //  Try to connect to wifi access point
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
     delay(500);
     Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
 Serial.println("Starting UDP");

 // set udp port for listen
 udp.begin(udplocalPort);
 Serial.print("Local port: ");
 Serial.println(udp.localPort());


 client.setServer(mqtt_server, 1883);  //start mqtt
 client.setCallback(callback);  // set callback routine to monitor incoming mqtt
 client.subscribe("myfirst");


 
}
//================================================================
// Function to send udp message
//================================================================
void fncUdpSend(String inData)
{
 char temp[50];
 inData.toCharArray(temp, 50) ;
 udp.beginPacket(ipBroadCast, udpRemotePort);
 udp.write(temp, sizeof(temp));
 udp.endPacket();
 Serial.print("sent - ");
 Serial.println(inData);
 }


 
//================================================================
// LOOP MAIN
//================================================================
void loop() {
 
while (mySerial.available() > 0)   {
       char recieved = mySerial.read();
       inData+= recieved;
 
       // Process message when new line character is recieved
       if (recieved == '\n')
       {
           Serial.print("Arduino Received: ");
           Serial.print(inData);


           fncUdpSend(inData);


           char temp[50];
           inData.toCharArray(temp, 50) ;
           client.publish("myfirstout", temp);
           inData = ""; // Clear recieved buffer          
       }
   }
 // if (!client.connected()) {
 //  reconnect();
 //}
//client.loop();
}
Reply


Messages In This Thread
arduino on I2C - by Sprokkie - 2017-11-02, 10:38 PM
RE: arduino on I2C - by abarrow - 2017-11-02, 11:14 PM
RE: arduino on I2C - by Sprokkie - 2017-11-02, 11:56 PM
RE: arduino on I2C - by shark24 - 2017-11-03, 12:25 AM
RE: arduino on I2C - by PaddyB - 2017-11-03, 09:30 AM
RE: arduino on I2C - by Sprokkie - 2017-11-03, 10:40 AM
RE: arduino on I2C - by PaddyB - 2017-11-03, 11:35 AM
RE: arduino on I2C - by richarddaneel - 2017-11-26, 08:05 PM
RE: arduino on I2C - by insitegeo - 2018-05-21, 02:46 PM
RE: arduino on I2C - by jim321 - 2017-11-03, 11:15 AM
RE: arduino on I2C - by shark24 - 2017-11-03, 01:56 PM
RE: arduino on I2C - by Sprokkie - 2017-11-13, 12:09 AM
RE: arduino on I2C - by shark24 - 2017-11-13, 08:53 AM
RE: arduino on I2C - by PaddyB - 2017-11-13, 10:50 AM
RE: arduino on I2C - by Sprokkie - 2017-11-13, 11:04 AM
RE: arduino on I2C - by jim321 - 2017-11-13, 12:01 PM
RE: arduino on I2C - by Sprokkie - 2017-11-14, 10:58 PM
RE: arduino on I2C - by e-sailing - 2017-11-14, 11:39 PM
RE: arduino on I2C - by Sprokkie - 2017-11-15, 12:22 AM
RE: arduino on I2C - by jim321 - 2017-11-15, 09:25 AM
RE: arduino on I2C - by shark24 - 2017-11-15, 09:27 AM
RE: arduino on I2C - by Sprokkie - 2017-11-26, 08:37 PM
RE: arduino on I2C - by e-sailing - 2017-11-28, 11:28 PM
RE: arduino on I2C - by Sprokkie - 2017-11-29, 12:09 AM
RE: arduino on I2C - by e-sailing - 2017-11-29, 03:01 PM
RE: arduino on I2C - by adriancubs - 2018-06-13, 05:26 AM
RE: arduino on I2C - by PaddyB - 2018-06-13, 09:09 AM
RE: arduino on I2C - by jim321 - 2018-06-13, 11:35 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)