Bonjour à tous.
Je suis en train de fabriquer un système de télémétrie pour mon bateau RC (électrique). Objectif, pendant les courses, surveiller la tension de la batterie (6S, 22,2V).
Pour cela j'utilise deux modules LORA, des TTGO Lora 1.3.
Je ne suis pas un expert dans laprogrammation de ces modules. Incapable de coder depuis une page blanche, je récupère des exemples et je les assemble. la est peut être la source de mon problème.
Mon code ci dessous est fonctionnel mais dès que j'ajoute l'initialisation de l'écran, le retour de mesure de la tension, réalisé par un module INA226 affiche n'importe quoi. Pour mes tests, j'ai branché le pin qui doit aller à la batterie sur le 3.3V qui du INA226. Sans initialiser l'ecran, ma mesure renvois 3.3, dès que j'initialise l'écran, elle renvois 80.92 ou quelque chose du genre.
Voici mon code :
//
// FILE: INA226_demo.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo
// DATE: 2021-05-18
// URL: https://github.com/RobTillaart/INA226
//Librairies pour INA226
#include "INA226.h"
#include "Wire.h"
//Librairies pour LORA
#include "LoRa.h"
#include "SPI.h"
//Librairies pour écran OLED
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
//Configuration LORA
const int csPin = 18;
const int resetPin = 23;
const int irqPin = 26;
//Configuration INA226
INA226 INA(0x40);
void setup()
{
Serial.begin(115200);
//Serial.println(__FILE__);
//Init LORA
SPI.begin();
LoRa.setPins(csPin, resetPin, irqPin);
if (!LoRa.begin(866E6))
{
Serial.println("Erreur lors de l'initialisation du module LoRa");
while (1);
}
LoRa.setSpreadingFactor(7);
Wire.begin();
if (!INA.begin() )
{
Serial.println("could not connect. Fix and Reboot");
}
//INA.setMaxCurrentShunt(1, 0.002);
}
void loop()
{
float voltage = INA.getBusVoltage();
//Serial.println("\nBUS\tSHUNT\tCURRENT\tPOWER");
Serial.println(voltage,3);
// Envoi des données via LoRa
String data = String(voltage);
LoRa.beginPacket();
LoRa.print(data);
LoRa.endPacket();
delay(1000);
}
Quelqu'un saurait me dire si :
- Il est possible de faire fonctionner l'ecran en plus du module LORA et du INA226 ?
- Si oui, comment initialiser l'écran !?
En vous remerciant pour votre aide,
JC
Pour initialiser l'ecran j'ajoute au début du code :
//OLED pins
#define OLED_SDA 21
#define OLED_SCL 22
#define OLED_RST 16
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define ADC_EN 14 //ADC_EN is the ADC detection enable port
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST);
Dans la boucle setup :
//initialize OLED
Wire.begin(OLED_SDA, OLED_SCL);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c, false, false)) { // Address 0x3C for 128x32
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.print("LORA RECEIVER ");
display.display();
puis dans la boucle loop j'affiche ma donnée mais je n'arrive pas jusque la, la partie dans le setup() me fait planter la lecture de tension ...