Go Down

Topic: OLED SSD1306 et ethernet ENC28J60 arduino nano (Read 922 times) previous topic - next topic

Bonjour à tous,

je suis en train de développer pour ma maison une sonde de température réseau avec affichage de différentes informations ainsi que 3 boutons pour piloter mon chauffage.
pour ça J'ai :
une arduino nano
une sonde 1-wire
un écran OLED 128x64 avec la librairie adafruit_ssd1306
une interface ethernet enc28j60 avec la librairie ethercard
3 boutons.

pour l'instant j'arrive à récupérer la température de la sonde et l'afficher sur l'écran OLED.
J'aimerais envoyer la valeur de la sonde de température dans ma base mysql par l'intermédiaire d'une page PHP.
Dès que j'utilise la librairie ethercard, l'écran se rempli de petits carrés et rien ne fonctionne.

J'ai l'impression que les librairies du oled et de l'ethercard utilisent des adresses communes, ce qui fait planter mon montage.

Avez vous des idées ?

Merci

Tu devrais vérifier si ton sheald et ton écran oled utilise le protocole spi,
Car si c'est le ca il faut que qu'il aie chacun une broche ss différente.
www.hatokuro.comuf.com site consacrer au rétrogaming

Merci pour la réponse,

mais les deux shields n'utilisent pas du tout les même broches. vu que c'est sur une nano et que j'utilise une breadboard, je controle quelles broches sont utilisées.

Merci

al1fch

#3
Nov 24, 2012, 05:37 pm Last Edit: Nov 24, 2012, 05:50 pm by al1fch Reason: 1
Bonjour
Quote
mais les deux shields n'utilisent pas du tout les même broches. vu que c'est sur une nano et que j'utilise une breadboard, je controle quelles broches sont utilisées.

Quelles broches sont utilisées pour les deux périphériques SPI ?
La librairie Ethercard nécessite de préciser la broche choisie comme SS par l'utilisateur  pour sélectionner l'ENC28J60  (la valeur par défaut , pin 8,ne convient pas forcément , elle est liée aux cartes JeeNode).
C'est le troisième  parametre (optionnel) de ether.begin(), pin 53 dans l'exemple suivant
Code: [Select]
void setup () {
 if (ether.begin(sizeof Ethernet::buffer,    mymac,  53  ) == 0)
   Serial.println( "Failed to access Ethernet controller");
 ether.staticSetup(myip);
}

Je ne sais pas si cela suffit dans la dernière version de cette librairie. Il y a encore un csPin=8 dans enc28j60.h ........

j'utilise la pin 10

Code: [Select]
void setup () {
  if (ether.begin(sizeof Ethernet::buffer,    mymac,  10  ) == 0)
    Serial.println( "Failed to access Ethernet controller");
  ether.staticSetup(myip);
}


ça marche quand j'utilise les librairies du contrôleur réseau seul, et ça marche aussi quand la librairie du oled est seul.

pour le oled

Code: [Select]

#define OLED_DC 6
#define OLED_CS 7
#define OLED_CLK 5
#define OLED_MOSI 4
#define OLED_RESET 9
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);


Merci

fdufnews

#5
Nov 24, 2012, 08:11 pm Last Edit: Nov 24, 2012, 08:15 pm by fdufnews Reason: 1
L'ENC28J60 utilise une interruption. Il faudrait voir si par hasard tu n'interromprais pas les routines graphiques.
Car même si elles utilisent des broches SS distinctes les 2 librairies utilisent le même périphérique matériel (l'interface SPI).
Il faudrait peut être mettre en place des protections pour contrôler l'accès au port SPI.

al1fch

#6
Nov 24, 2012, 08:33 pm Last Edit: Nov 24, 2012, 08:51 pm by al1fch Reason: 1
Il me semble que la librairie Ethercard n'exploite pas les possibilités d'interruptions de la puce enc28j60 .
J'utilise en tous les cas cette librairie avec un câblage minimal entre micro et puce ethernet (MISO, MOSI, CLK et SS) , donc avec RST et IRQ non câblés.

Je pense à une autre piste : alimentation qui chuterai un peu pendant que l'ENC28J60 est sollicité.. c'est une puce un peu 'gourmande' (compter 150mA sous 3,3V) et par conséquent un peu chaude (40 à 50°C)....
Chez moi elle a son petit régulateur 3,3V bien à elle.

Bonsoir,

Piste intéressante, je vais creuser de ce côté. D'ailleurs le 5v fait plutôt 4.7v et le 3v fait 3v. Ça  doit être trop juste. Je vais voir pour alimenter tout ça correctement.

Je vous tiens au courant.

Merci

Go Up