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
#25
[quote pid='3517' dateline='1509705309']


u r trying to recreate MPGuino

just reuse proven code with years behind it and many member coders




[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();
}

[/quote]
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: 3 Guest(s)