Add DS18B20 1wire bus detection
This commit is contained in:
parent
7c6446676f
commit
bf6b2dd922
|
@ -8,6 +8,8 @@
|
||||||
#include <INA226.h> // Lib for power management IC INA226
|
#include <INA226.h> // Lib for power management IC INA226
|
||||||
#include <Ticker.h> // Timer Lib for timer interrupts
|
#include <Ticker.h> // Timer Lib for timer interrupts
|
||||||
#include <RTClib.h> // DS1388 RTC
|
#include <RTClib.h> // DS1388 RTC
|
||||||
|
#include <OneWire.h> // 1Wire Lib
|
||||||
|
#include <DallasTemperature.h> // Lib for DS18B20
|
||||||
#include "OBPSensorTask.h"
|
#include "OBPSensorTask.h"
|
||||||
#include "OBP60Hardware.h"
|
#include "OBP60Hardware.h"
|
||||||
#include "N2kMessages.h"
|
#include "N2kMessages.h"
|
||||||
|
@ -79,9 +81,12 @@ void sensorTask(void *param){
|
||||||
INA226 ina226_2(INA226_I2C_ADDR2);// Power management sensor INA226 Solar
|
INA226 ina226_2(INA226_I2C_ADDR2);// Power management sensor INA226 Solar
|
||||||
INA226 ina226_3(INA226_I2C_ADDR3);// Power management sensor INA226 Generator
|
INA226 ina226_3(INA226_I2C_ADDR3);// Power management sensor INA226 Generator
|
||||||
RTC_DS1388 ds1388; // RTC DS1388
|
RTC_DS1388 ds1388; // RTC DS1388
|
||||||
|
OneWire oneWire(OBP_1WIRE); // 1Wire bus
|
||||||
|
DallasTemperature ds18b20(&oneWire);// Sensors for DS18B20
|
||||||
|
|
||||||
// Init sensor stuff
|
// Init sensor stuff
|
||||||
bool RTC_ready = false; // DS1388 initialized and ready to use
|
bool oneWire_ready = false; // 1Wire initialized and ready to use
|
||||||
|
bool RTC_ready = false; // DS1388 initialized and ready to use
|
||||||
bool GPS_ready = false; // GPS initialized and ready to use
|
bool GPS_ready = false; // GPS initialized and ready to use
|
||||||
bool BME280_ready = false; // BME280 initialized and ready to use
|
bool BME280_ready = false; // BME280 initialized and ready to use
|
||||||
bool BMP280_ready = false; // BMP280 initialized and ready to use
|
bool BMP280_ready = false; // BMP280 initialized and ready to use
|
||||||
|
@ -108,7 +113,7 @@ void sensorTask(void *param){
|
||||||
}
|
}
|
||||||
Timer2.start(); // Start Timer2 for blinking LED
|
Timer2.start(); // Start Timer2 for blinking LED
|
||||||
|
|
||||||
// Settings for NMEA0183
|
// Direction settings for NMEA0183
|
||||||
String nmea0183Mode = api->getConfig()->getConfigItem(api->getConfig()->serialDirection, true)->asString();
|
String nmea0183Mode = api->getConfig()->getConfigItem(api->getConfig()->serialDirection, true)->asString();
|
||||||
api->getLogger()->logDebug(GwLog::LOG, "NMEA0183 Mode is: %s", nmea0183Mode);
|
api->getLogger()->logDebug(GwLog::LOG, "NMEA0183 Mode is: %s", nmea0183Mode);
|
||||||
pinMode(OBP_DIRECTION_PIN, OUTPUT);
|
pinMode(OBP_DIRECTION_PIN, OUTPUT);
|
||||||
|
@ -121,64 +126,89 @@ void sensorTask(void *param){
|
||||||
digitalWrite(OBP_DIRECTION_PIN, true);
|
digitalWrite(OBP_DIRECTION_PIN, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Settings for 1Wire bus
|
||||||
|
String oneWireOn=api->getConfig()->getConfigItem(api->getConfig()->useTempSensor,true)->asString();
|
||||||
|
int numberOfDevices;
|
||||||
|
if(String(oneWireOn) == "DS18B20"){
|
||||||
|
ds18b20.begin();
|
||||||
|
DeviceAddress tempDeviceAddress;
|
||||||
|
numberOfDevices = ds18b20.getDeviceCount();
|
||||||
|
if (numberOfDevices < 1) {
|
||||||
|
oneWire_ready = false;
|
||||||
|
api->getLogger()->logDebug(GwLog::ERROR,"Modul DS18B20 not found, check wiring");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG,"Modul DS18B20 found at:");
|
||||||
|
for(int i=0;i<numberOfDevices; i++){
|
||||||
|
// Search the wire for address
|
||||||
|
if(ds18b20.getAddress(tempDeviceAddress, i)){
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG,"Device-%01d: %10d", i, tempDeviceAddress);
|
||||||
|
} else {
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG,"Device-%01d: Is ghost with errors", i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
oneWire_ready = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Settings for RTC
|
// Settings for RTC
|
||||||
String rtcOn=api->getConfig()->getConfigItem(api->getConfig()->useRTC,true)->asString();
|
String rtcOn=api->getConfig()->getConfigItem(api->getConfig()->useRTC,true)->asString();
|
||||||
if(String(rtcOn) == "DS1388"){
|
if(String(rtcOn) == "DS1388"){
|
||||||
if (!ds1388.begin()) {
|
if (!ds1388.begin()) {
|
||||||
RTC_ready = false;
|
RTC_ready = false;
|
||||||
api->getLogger()->logDebug(GwLog::ERROR,"Modul DS1388 not found, check wiring");
|
api->getLogger()->logDebug(GwLog::ERROR,"Modul DS1388 not found, check wiring");
|
||||||
}
|
|
||||||
else{
|
|
||||||
api->getLogger()->logDebug(GwLog::LOG,"Modul DS1388 found");
|
|
||||||
uint year = ds1388.now().year();
|
|
||||||
if(year < 2023){
|
|
||||||
// ds1388.adjust(DateTime(__DATE__, __TIME__)); // Set date and time from PC file time
|
|
||||||
}
|
|
||||||
RTC_ready = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG,"Modul DS1388 found");
|
||||||
|
uint year = ds1388.now().year();
|
||||||
|
if(year < 2023){
|
||||||
|
// ds1388.adjust(DateTime(__DATE__, __TIME__)); // Set date and time from PC file time
|
||||||
|
}
|
||||||
|
RTC_ready = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Settings for GPS sensors
|
// Settings for GPS sensors
|
||||||
String gpsOn=api->getConfig()->getConfigItem(api->getConfig()->useGPS,true)->asString();
|
String gpsOn=api->getConfig()->getConfigItem(api->getConfig()->useGPS,true)->asString();
|
||||||
if(String(gpsOn) == "NEO-6M"){
|
if(String(gpsOn) == "NEO-6M"){
|
||||||
Serial2.begin(9600, SERIAL_8N1, OBP_GPS_RX, OBP_GPS_TX, false); // not inverted (false)
|
Serial2.begin(9600, SERIAL_8N1, OBP_GPS_RX, OBP_GPS_TX, false); // not inverted (false)
|
||||||
if (!Serial2) {
|
if (!Serial2) {
|
||||||
api->getLogger()->logDebug(GwLog::ERROR,"GPS modul NEO-6M not found, check wiring");
|
api->getLogger()->logDebug(GwLog::ERROR,"GPS modul NEO-6M not found, check wiring");
|
||||||
GPS_ready = false;
|
GPS_ready = false;
|
||||||
}
|
|
||||||
else{
|
|
||||||
api->getLogger()->logDebug(GwLog::LOG,"GPS modul NEO-M6 found");
|
|
||||||
NMEA0183.SetMessageStream(&Serial2);
|
|
||||||
NMEA0183.Open();
|
|
||||||
GPS_ready = true;
|
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG,"GPS modul NEO-M6 found");
|
||||||
|
NMEA0183.SetMessageStream(&Serial2);
|
||||||
|
NMEA0183.Open();
|
||||||
|
GPS_ready = true;
|
||||||
}
|
}
|
||||||
if(String(gpsOn) == "NEO-M8N"){
|
}
|
||||||
Serial2.begin(9600, SERIAL_8N1, OBP_GPS_RX, OBP_GPS_TX, false); // not inverted (false)
|
if(String(gpsOn) == "NEO-M8N"){
|
||||||
if (!Serial2) {
|
Serial2.begin(9600, SERIAL_8N1, OBP_GPS_RX, OBP_GPS_TX, false); // not inverted (false)
|
||||||
api->getLogger()->logDebug(GwLog::ERROR,"GPS modul NEO-M8N not found, check wiring");
|
if (!Serial2) {
|
||||||
GPS_ready = false;
|
api->getLogger()->logDebug(GwLog::ERROR,"GPS modul NEO-M8N not found, check wiring");
|
||||||
}
|
GPS_ready = false;
|
||||||
else{
|
|
||||||
api->getLogger()->logDebug(GwLog::LOG,"GPS modul NEO-M8N found");
|
|
||||||
NMEA0183.SetMessageStream(&Serial2);
|
|
||||||
NMEA0183.Open();
|
|
||||||
GPS_ready = true;
|
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG,"GPS modul NEO-M8N found");
|
||||||
|
NMEA0183.SetMessageStream(&Serial2);
|
||||||
|
NMEA0183.Open();
|
||||||
|
GPS_ready = true;
|
||||||
}
|
}
|
||||||
if(String(gpsOn) == "ATGM336H"){
|
}
|
||||||
Serial2.begin(9600, SERIAL_8N1, OBP_GPS_RX, OBP_GPS_TX, false); // not inverted (false)
|
if(String(gpsOn) == "ATGM336H"){
|
||||||
if (!Serial2) {
|
Serial2.begin(9600, SERIAL_8N1, OBP_GPS_RX, OBP_GPS_TX, false); // not inverted (false)
|
||||||
api->getLogger()->logDebug(GwLog::ERROR,"GPS modul ATGM336H not found, check wiring");
|
if (!Serial2) {
|
||||||
GPS_ready = false;
|
api->getLogger()->logDebug(GwLog::ERROR,"GPS modul ATGM336H not found, check wiring");
|
||||||
}
|
GPS_ready = false;
|
||||||
else{
|
|
||||||
api->getLogger()->logDebug(GwLog::LOG,"GPS modul ATGM336H found");
|
|
||||||
NMEA0183.SetMessageStream(&Serial2);
|
|
||||||
NMEA0183.Open();
|
|
||||||
GPS_ready = true;
|
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
api->getLogger()->logDebug(GwLog::LOG,"GPS modul ATGM336H found");
|
||||||
|
NMEA0183.SetMessageStream(&Serial2);
|
||||||
|
NMEA0183.Open();
|
||||||
|
GPS_ready = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Settings for temperature sensors
|
// Settings for temperature sensors
|
||||||
String tempSensor = api->getConfig()->getConfigItem(api->getConfig()->useTempSensor,true)->asString();
|
String tempSensor = api->getConfig()->getConfigItem(api->getConfig()->useTempSensor,true)->asString();
|
||||||
|
|
|
@ -30,6 +30,8 @@ lib_deps =
|
||||||
adafruit/Adafruit BMP085 Library@1.2.1
|
adafruit/Adafruit BMP085 Library@1.2.1
|
||||||
enjoyneering/HTU21D@1.2.1
|
enjoyneering/HTU21D@1.2.1
|
||||||
robtillaart/INA226@0.2.0
|
robtillaart/INA226@0.2.0
|
||||||
|
paulstoffregen/OneWire@2.3.8
|
||||||
|
milesburton/DallasTemperature@3.11.0
|
||||||
signetica/SunRise@2.0.2
|
signetica/SunRise@2.0.2
|
||||||
build_flags=
|
build_flags=
|
||||||
-DTIME=$UNIX_TIME
|
-DTIME=$UNIX_TIME
|
||||||
|
|
Loading…
Reference in New Issue