paraFANET
<< < (3/3)
jcp:
Ah, et j'oublie le point important qui a déclanché le début de mon intervention dans ce post:
j'ai chosi le t-beam avec écran oled déjà soudé ! et en version 868MHz (SX1276)
le SX1278 semble être prévu pour 433MHz
jcp:
Citation de: sylvain_p le 20 Juin 2023 - 10:14:39

Correction il est possible que sur la version 433 ils mettent un sx1276 qui lui ne dépasse pas 500 MHz et qques.
https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series

C'est le 1278 qui ne dépasse pas 525MHz

(source: https://www.semtech.com/products/wireless-rf/lora-connect/sx1278)
jcp:
Bon, j'ai pris quelques minutes sur ma pause de midi:

float BattVoltOffs; //offset for Battery-multiplier

C'est à ça que sert la petite boîte à côté de "Battery Voltage calib" dans les settings


Quand je lis les logs, je vois ça:
[main.cpp:1607] printSettings(): AXP192=0

Ca voudrait dire qu'il ne voit pas le AXP192 sur la carte T-Beam !?
Plus loin:
[E][main.cpp:1401] setupAXP192(): AXP192 error begin

Cette fois c'est clair, il y a un truc louche de ce côté, mais quoi ?
sylvain_p:
Merci pour tes retours  :pouce:
Pour ton problème il faudrait regarder plus précisément avec la carte que tu as ; le truc malheureux avec Lillygo/arduino et tous les clones chinois c'est qu'ils aiment bien changer tous les 4 matins les specs de leurs boards et du coup peut être qu'ils ont changé l'adresse I2C d'un module, ou alors changé carrément de pins pour la communication...

De ce que tu as dû voir dans le code il y'a tout un tas d'aiguillage pour essayer de deviner le type de carte sur lequel est exécuté le soft, dans la fonction checkBoardType : https://github.com/gereic/GXAirCom/blob/master/src/main.cpp#L570
en fonction de ça c'est là qu'il pourra déterminer la pin où lire la tension de la batterie, mais comme il n'a effectivement pas l'air de vouloir communiquer avec le module axp192 (qui doit s'occuper de la charge de la batterie de ce que je vois) ça plantoi.
essaie peut être de commencer avec un scanner I2C de ce genre ? https://raw.githubusercontent.com/RuiSantosdotme/Random-Nerd-Tutorials/master/Projects/LCD_I2C/I2C_Scanner.ino
jcp:
oui, effectivement, j'ai vu le code pour détecter le type de carte, et j'avoue que je mets un peu de temps à comprendre la logique...
C'est un peu "confusant".
Les "settings" sont lu d'un fichier de conf, mais le AXP192 vient d'une fonction et se retrouve stocké dans une variable "status".
C'est un peu chaud de suivre dans quel ordre s'execute quoi...
J'admire tout le travail fait jusque là, c'est juste dingue et je comprends parfaitement que ce soit codé ainsi, au fil des avancés... mais pfff, c'est pas facile à suivre sans prendre un peu de temps.


au passage, d'après les logs, je rentre la dedans:
Code:

  if (i2cDevices < 10){
    i2cOLED.beginTransmission(AXP192_SLAVE_ADDRESS);
    if (i2cOLED.endTransmission() == 0) {
      //ok we have a T-Beam !!
      //check, if we have an OLED
      setting.boardType = eBoard::T_BEAM;
      log_i("AXP192 found");
      checkLoraChip();
      setting.displayType = NO_DISPLAY;
      i2cOLED.beginTransmission(OLED_SLAVE_ADDRESS);
      if (i2cOLED.endTransmission() == 0) {
        //we have found also the OLED
        setting.displayType = OLED0_96;
        log_i("OLED found");
      }
      log_i("Board is T-Beam V1.0 or V1.1");
      write_configFile(&setting);
      delay(1000);
      esp_restart(); //we need to restart
    }


Mais checkLoraChip() me fait aussi passer la dedans
Code:

    log_i("Lora-Chip SX1262 found --> Board is a T-Beam with SX1262");

et comme checklorachip() est appellé au milieu de checkBoardType(), la suite de cette function me donne enfin:
Ah, j'ai un OLED, donc...
Code:

      if (i2cOLED.endTransmission() == 0) {
        //we have found also the OLED
        setting.displayType = OLED0_96;
        log_i("OLED found");
      }
      log_i("Board is T-Beam V1.0 or V1.1");


bref, j'ai bien AXP192 (d'après le code exécuté) donc j'ai Board is a T-Beam with SX1262
mais comme j'ai un oled, j'ai finalement Board is T-Beam V1.0 or V1.1

En fin de compte, on s'en fou un peu que ce soit moche, ce qui importe, c'est la fonction Code:

setupAXP192
qui elle fini par mettre
Code:

      log_e("AXP192 error begin");
      status.bHasAXP192 = false;


Ce qui veut dire que je ne rentre pas la dedans:
Code:

if (!axp.begin(i2cOLED, AXP192_SLAVE_ADDRESS))


A priori, j'ai un SX1276 et non un SX1262, mais en regardant sur la carte à la loupe, je vois AXP2101v1.2 et non AXP192 comme sur la spec de la page web de l'article que j'ai acheté.

Merci pour la suggestion de scan I2C, ca va surement m'aider.
Et aussi, je reprendrai le code à tête reposé, car dans la fonction AXP192.

Mais je pense que j'ai déjà une piste avec cette histoire de AXP192 et AXP2021
dans le fichier axp20x.h lignes 64 et 65

Code:

//! Chip Address
#define AXP202_SLAVE_ADDRESS (0x35)
#define AXP192_SLAVE_ADDRESS (0x34)

Navigation
Index des messages
Page précédente