Atmega32 et HC06

Portrait de World of chaos

Bonjour à tous,

j'essaye de faire communiquer un module Bluetooth HC06 avec un microcontrôleur Atmega32.

Je me suis donc fié aux différents schémas sur internet qui indique que les broches RXD et TXD ce trouvent sur les pin 8 et 9 :

Arduino for Atmega32 | Detailed Circuit Diagram Available

Cependant après de nombreux essaies je n'arrive pas a recevoir de signal Bluetooth, j'ai alors essayé de connecter mon module sur les broches 10 et 11 (ne sachant pas a quoi elles correspondais) et surprise ça fonctionne !

Avez vous une explication ? Et est ce que vous savez comment faire fonctionner le module sur les broches 8 et 9 qui sont normalement les "vrais" rxd et txd d'après les nombreux schéma disponibles sur internet.

Merci d'avance !

Portrait de Jetfuzz

Hello.
peux être ton soft, une librairie softserial qui pourrais expliqué ca !!
Cordialement 
Jetfuzz

Portrait de Louis.D

Bonjour World of chaos

Peut on avoir le code que tu utilises ?

Portrait de World of chaos

Merci pour vos réponses rapides, je vient de me pencher sur la librairie SoftwareSerial et effectivement ils mettent en garde contre ce problème :

No pins on the ATmega8535, ATmega16 and ATmega32 support
pin change interrupts, so only "regular" interrupts may be used.
For the "STANDARD pinout" this is digital pin 2, 10, 11
For the "BOBUINO pinout" this is digital pin 2, 3, 6

Voici le code de teste que j'utilise : 

#include <SoftwareSerial.h>

#define txd 8
#define rxd 9

SoftwareSerial HC06(txd, rxd);
String messageRecu;

void setup() {
  HC06.begin(9600);
}

void loop() {
  while (HC06.available())
  {
    delay(3);
    char c = HC06.read();
    messageRecu += c;
  }

  if (messageRecu.length() > 0)
  {
    digitalWrite(14, HIGH);
    delay(200);
    digitalWrite(14, LOW);
  }
  messageRecu = "";

}

Merci pour votre aide !

Portrait de Louis.D

Re

Je ne pense pas que tu puisses utiliser les pins 8 et 9 pour SoftwareSerial car ceux sont les pins utilisées par le Serial de base. Aussi SoftwareSerial attribue les pins 10 et 11 qui sont celles par défaut. INT0 et INT1.

Essaye ce bout de code et donne nous le résultat !

String messageRecu;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(14, OUTPUT);

// je suis étonné que ton code ne comporte pas ces deux lignes pinMode

}

void loop() {
  while (Serial.available() > 0)
  {
    char c = Serial.read();
    messageRecu += c;
  }
  if (messageRecu.length() > 0)
  {
    digitalWrite(13, HIGH);
    delay(200);
    digitalWrite(13, LOW);
    digitalWrite(14, LOW);// je pense que c'est une erreur mais je me trompe peut être !!
    messageRecu = "";
  }

Par contre je ne connais pas la finalité de ton projet mais si tu n'as pas un besoin énorme de pins E/S tu as un petit module ESP32 qui à l'avantage d'être WIFI et BLUETOOTH et possède des E/S au nombre de 32 plus TX et RX de mémoire. plus concis risque d'être difficile ... De plus 100% compatible avec Arduino IDE sans autre interface qu'un câble série USB / USB micro !

Moins e 6.00 € sur Aliexpress

Tu peux aussi remplacer :

while (Serial.available() > 0)
  {
    char c = Serial.read();
    messageRecu += c;
  }

Par

if (Serial.available() > 0)
   messageRecu= Serial.readString()

Pas besoin d'accolades car une seule instruction est à éxecuter ici avec " if "

Portrait de Jetfuzz

 Hello.

pinMode(13, OUTPUT);
  pinMode(14, OUTPUT);

// je suis étonné que ton code ne comporte pas ces deux lignes pinMode

elle sont défini dans la librairie softserial, lorsque tu initialises le RX TX. 

#define txd 8
#define rxd 9

SoftwareSerial HC06(txd, rxd);

ensuite la lib fait le reste.
Edit: effectivement, j'ai confondu les pins de la com avec ceux des leds

cordialement 

Jetfuzz

Portrait de Louis.D

Comme beaucoup, la société dans laquelle nous vivons s'attache plus à la forme qu'au fond, certainement à cause de la décadence comme le constate avec regret l'éducation nationnale, mais certains ont pris de l'avance.

Portrait de Jetfuzz

comme le constate avec regret l'éducation nationnale

nationale 
a ben Bravo...

C’est une erreur courante, et bien compréhensible, d’écrire « nationnal » avec deux « n », comme « professionnel »… ou encore « professionel » avec un seul « n », comme « national » !

Donneur de leçon de m****.
 

et pour finir, je suis dyslexique, et franchement, si mon écriture et celle des autres ne te plait pas, va jouer sur les forums du petit Larousse ou du petit Robert, Petit parce ce que c’est ce qui te définit le mieux.
Mais arrête de nous faire chier ici !!!!
A bon entendeur.
Jetfuzz

Portrait de Louis.D

elleS sont définiES dans la librairie softserial, lorsque tu initialises le RX TX. 

Portrait de Jetfuzz

Louis, pour la forme !!!!

louis.jpg

Si Alex me vire, et ben tant pis !!!
Cordialement 
Jetfuzz.

Portrait de World of chaos

Re,

Je ne pense pas que tu puisses utiliser les pins 8 et 9 pour SoftwareSerial car ceux sont les pins utilisées par le Serial de base. Aussi SoftwareSerial attribue les pins 10 et 11 qui sont celles par défaut. INT0 et INT1.

Effectivement sur les pins 10 et 11 la communication ce fait a la perfection ! 

 Par contre je ne connais pas la finalité de ton projet mais si tu n'as pas un besoin énorme de pins E/S tu as un petit module ESP32 qui à l'avantage d'être WIFI et BLUETOOTH et possède des E/S au nombre de 32 plus TX et RX de mémoire. plus concis risque d'être difficile ... De plus 100% compatible avec Arduino IDE sans autre interface qu'un câble série USB / USB micro !

Malheureusement si j'utilise ce module c'est que j'ai besoin de tout les pins de celuis-ci

 

Pas besoin d'accolades car une seule instruction est à éxecuter ici avec " if "

    Je n'étais pas au courant qu'on pouvais abréger le code comme ceci, merci pour l'astuce !

    Merci a vous deux pour votre aide précieuse, cependant votre petite querelle n'a pas lieu d'être, et ça ne vaut vraiment pas le coup d'être bannie du forum pour cela, surtout que l'un comme l'autre sont très utiles au forum en apportant toujours des solutions justes et efficaces. 

    Bref, donc si j'ai bien compris les broches pour la commutation avec SoftwareSerial de l'Atmega32 sont les broches 10 et 11, et les broches 8 et 9 servent pour la liaison série ?

    Portrait de Jetfuzz

    Hello.
    oui désolé, 
    effectivement softwareserial te permet d’émuler un port série "half duplex".
    et donc a mon avis, il n'est pas possible de créer un port série virtuel, sur un port série hardware.
    par contre, je pense que (Walter ou Hercule, me corrigerons), il est tout a fait possible d'utiliser le port série hardware, sans utiliser la librairie softwareserial . en utilisant le serial.read, serial.write ect....
    Cela te fera gagner de la place pour le code, puisque tu n'utilises plus la librairie softwareserial.
    Cordialement 
    Jetfuzz

    Portrait de Louis.D

    Trop fort tu as bien lu mon code !!

    Portrait de World of chaos

    par contre, je pense que (Walter ou Hercule, me corrigerons), il est tout a fait possible d'utiliser le port série hardware, sans utiliser la librairie softwareserial . en utilisant le serial.read, serial.write ect....

     Je vais essayer ça tout de suite ! 

    Cela te fera gagner de la place pour le code, puisque tu n'utilises plus la librairie softwareserial.

    Effectivement, et aussi du temps car j'ai déjà imprimé les PCB, croyant naïvement que ça marcherais du premier coup... :)

    Portrait de Jetfuzz

    Hello
    en fait c'est le bout de code de louis (gloire a lui) t'a donné, il utilise serial.read.
    et donc le port série hardware, celui que tu a besoin.
    mais comme il n'a rien expliqué, ni toi ni moi avons vu.
    ici 

      while (Serial.available() > 0)
      {
        char c = Serial.read();
        messageRecu += c;
     

     Cordialement 
    Jetfuzz

    Portrait de World of chaos

    Je vient d'essayer ce petit code de teste :

    String messageRecu;

    void setup() {
    Serial.begin(9600);
    pinMode(14, OUTPUT);
    }

    void loop() {
    while (Serial.available() >0){
      char c = Serial.read();
      messageRecu += c;
      if(messageRecu == "r"){
        digitalWrite(14, HIGH);
      }else if (messageRecu == "l"){
        digitalWrite(14, LOW);
      }
    }
    }

    Et malheureusement rien ne ce passe, je pense que la solution la plus simple qu'il me reste est de connecter mon module Bluetooth sur les pins 10 et 11, et garder les pins 8 et 9 pour une éventuelle communication avec le moniteur série ce qui peut être toujours pratique !

    Portrait de Louis.D

    Tu as oubliè un '}' avant " if(messageRecu == "r"){ "

    void loop() {
    while (Serial.available() >0){
      char c = Serial.read();
      messageRecu += c;
    }  // <<<<<<<<<<<<<<<<<<<<<
      if(messageRecu == "r"){

    Pour répondre à certains, je préfère les mots à la vulgarité, mais faut il, encore, en être capable !

    Portrait de World of chaos

    Tu as oubliè un '}' avant " if(messageRecu == "r"){ "

    Oups oui effectivement ainsi qu'un  "messageRecu = ""; " a la fin du code, qui a présent fonctionne correctement ! 

    J'aurais une dernière question en ce qui concerne ce montage : j'utilise actuellement l'horloge interne de 8Mhz de l'Atmega32 , pensez vous que cela peut causer des problème dans la communication Bluetooth et que je doit utiliser une horloge externe ?

    Merci beaucoup pour votre aide

    Portrait de Louis.D

    Je ne pense pas, mais le mieux est d'essayer !

    Peux-tu nous donner ton montage final et son utilité (si ce n'est pas secret) on pourrait alors peut être te conseiller sur un bout de code ...

    Tu as fait je pense ce bout de code pour tester ton câblage mais je pense qu'il serait plus judicieux de faire battre une sortie d'un nombre d'éclair correspondant à un nombre de 1 à 10 dans ton message.

    exemple :

      for (int n = 1; n < 10; n++) {
        if ( messageRecu.indexOf(String(n)) > 0) {
          for (int x = n * 2; x > 0; x--) {
            digitalWrite(13, !digitalRead(13));
           delay(200);
          }
        }
      }

    Désolé pour les corrections en court de route (c'est du direct) !!

    Portrait de World of chaos

    Je vient d'essayer et ça marche super bien ! 

    Alors alors le projet final est de faire un Slider motorisé sur 3 axes pilotable depuis son portable grâce a une application (d’où la communication Bluetooth). 

    Aujourd'hui j'ai finis de coder l'application Android, et j'ai presque finis la partie CAO (modélisation 3d) du slider que je suis entrain d'imprimer en 3D. ça fait maintenant presque 1 ans que je travail sur ce projet et j'espère pouvoir le finir d'ici 2-3 mois ! :)

    Portrait de Louis.D

    Un Slider what is this ?? Un truc pour la photo ?

    Tu développes comment sur quel langage pour Android, j'ai la chance de pouvoir utiliser WindevMobile, c'est super bien mais super cher aussi !

    Impression 3D tu as quelle imprimante ? Et tu utilises Fusion360 Autocad ou autre pour dessiner ?

    Portrait de World of chaos

    Oups oui excusez moi, c'est un appareil qui permet de faire faire des mouvement très fluides a une caméra, comme ceci : 

    https://www.youtube.com/watch?v=SodzDDUb3G0&t=2s

    Portrait de Louis.D

    Ok j'avais trouvé aussi sur le net et pour le reste ?

    Portrait de World of chaos

    Tu développes comment sur quel langage pour Android, j'ai la chance de pouvoir utiliser WindevMobile, c'est super bien mais super cher aussi !

    Je développe sous Android Studio en Java/XML 

    Impression 3D tu as quelle imprimante ? Et tu utilises Fusion360 Autocad ou autre pour dessiner ?

    J'ai une Ender3 pro et je dessine sous SolidEdge 

    Portrait de Jetfuzz

    Pareil solidegde, avec licence officiel par la boite !!
    jetfuzz

    Portrait de Louis.D

    J'ai fait un code pour un copain qui a réaliser ce genre d'appareil mais commandé en WIFI en m'inspirant de la vidéo d'Alex ICI.

    Merci pour ta réponse

    Portrait de World of chaos

    ça peut être intéressant en effet, mais l'avantage pour moi de faire une application Android est de pouvoir la modifier facilement, si je veut rajouter des options, comme par exemple actuellement la sauvegarde de positions afin ded pouvoir le faire aller d'un point A a un point B ! 

    Je vais sortir une vidéo sur YouTube du projet une fois qu'il sera finis, si ça vous intéresse je pourrais vous la partager sur ce post !

    Portrait de Louis.D

    Mais il utilisait aussi Android mais en WIFI avec un gant imprimé en TPU sur lequel il fixait le smartphone ! La wifi est beaucoup plus rapide, moins de latence et de plus longue portée. Le bluetooth personnellement je n'utilise pas j'ai essayé mais pas convaincu !

    Super pour la vidéo YOUTUBE !

    Par contre ne donne pas ton code c'est juste un petit conseil !

    Portrait de World of chaos

    Ah oui j'avais mal compris, ça me semble une super idée a rajouter a ce projet ! Pour l'instant j'ai encore quelques problèmes notamment pour inclure un système de mise a jour qui ne réinstalle pas toute l'application, mais ça devrais aller ce n'est qu'une question de temps (comme toujours :) )

    Portrait de Jetfuzz

     un gant impromé en TPU

    peux tu me donner plus d'explication ?

    Cordialement ou pas
    Jetfuzz

     

    Portrait de Louis.D

    Vu ta manière ici tu peux toujours demander ....

    Portrait de Jetfuzz

    comme la regul de chaudiere avec eux sondes !!!

    Portrait de Jetfuzz

    IMPROMER, du verbe J'improme, tu impromes !!!
    arrête de nous donner des leçons, lorsque toi même tu n'en ai pas capable !! 

    Portrait de Louis.D

    En ce qui concerne le code j'ai fait chez moi un pisteur solaire pour panneau photovoltaïque, j’ai supprimé la vidéo car j’ai eu une foule de questions pour savoir comment je pouvais avec un simple Arduino positionner en élévation et azimut tout au long de l’année sans cellule photo. Car ma première version utilisait ces cellules masquées par deux plaques en croix, problème les jours blanc, très nuageux le système perdait les pédales !

    Portrait de Jetfuzz

    tient le projet a brossden !!!!!

    Portrait de World of chaos

    Par contre ne donne pas ton code c'est juste un petit conseil !

      Je souhaite tout rendre open-source et accessible pour toute personne qui souhaiterais reproduire ce projet donc le code, les fichiers STL, l'application, etc... seront disponibles gratuitement

      Portrait de Jetfuzz

      Bravo !!
      c'est comme ca le partage !!!
       

      Portrait de Louis.D

      Comme tu veux mais je t'aurais prévenu !

      Portrait de Jetfuzz

      Comme tu veux mais je t'aurais prévenu !

      Prévenu de quoi c'est un forum ! on partage !!
      c'est le but !!
      si ton objectif est de ne pas partager, on bien de récupérer des membres pour votre secte brosden wolfran et spy , et je sais plus !!!
      l'herbe est pas plus verte ailleurs !!

      Portrait de Louis.D

      Pour l'instant j'ai encore quelques problèmes notamment pour inclure un système de mise a jour qui ne réinstalle pas toute l'application

      Tu peux être plus clair ?

      Portrait de Louis.D

      Jetfuzz on peu partager le savoir mais l'intelligence non, désolé pour toi !

      Tu dis toi même être un quiche en programmation mais je ne pense pas que ce soit le seul domaine ou tu excelles  !

      Portrait de Jetfuzz

      et ca continue !!!
      Brossden continue de polluer ce forum !!! et vu qu'il a une dents contre moi, tout le monde trinque !!!
      j'ai du blesser son ego, et donc je suis la bête a abattre !!!
      t’inquiète j'ai des ressources. mais je ne rentrerais plus dans ton jeux.
      c'est encore le coups des leds que tu as en travers de la gorge ?
      sur ceux, des que tu ouvres ta gueule sur un post, je fermerais la mienne.
      pour que tu puisses diffuser tes saintes paroles.

      leck mich am arch !!
      ca veut dire cordialement en alsacien !
      jetfuzz

      Portrait de Louis.D

      Je ne sais pas qui est ce brossden mais le pollueur c'est toi !

      Le coup des leds ?

      Ici je partage des choses simples par contre ce qui peut devenir facilement commercial NON !

      Je ne pense pas être le seul à avoir réalisé un panneau solaire avec un système de poursuite et si c'est ce qui t'intéresse tu peux toujours courrir ! Avec le coup des énergies qui ne cesse de monter je suis heureux de pouvoir produire mon électricité que je consomme partiellement avec ma voiture 100 % électrique !

      Tu as des ressources dis-tu , laisse moi rire, tu as des réactions d'un enfant de 10 ans, et encore je suis généreux !

      J'ai d'ailleurs bien envie de faire un jour une compilation de tous tes topics cela risque d'être exaltant.

      C'est un projet que je réaliserais certainement !

      Portrait de Jetfuzz

       

      J'ai d'ailleurs bien envie de faire un jour une compilation de tous tes topics cela risque d'être exaltant.

      C'est un projet que je réaliserais certainement ! 

      c'est pas juste !!!!
      puisque tes autres toi ont supprimé leurs profils voir supprimé par Alex, c'est forcement a charge.
      encore un truc, sur ce post je n'ai comme d'habitude agressé personne, jusqu’à ce que tu m’envoie un de tes Scuds, pour une erreur d'orthographe ou de grammaire, j'en sais rien et je m'en tape, j'ai juste essayé d'aider !!
      je n'ai jamais agresser quelqu'un qui demande de l'aide, mais je ne supporte pas qu'on balance un Scud a quelqu’un qui cherche juste de l'aide.

      allez on va rester dans le partage et la bonne humeur.
      spy.jpg
      ca vous rappelle quelqu'un !!
      cordialement 
      Jetfuzz

       

      Portrait de Louis.D

      Wow Spy avait déjà vu que tu étais la mouche du coche, tu es si acide, jusqu'à conservé des topics qui ont trois ans !! Bien....

      Sur mon topic tu vas déblatérer durant combien de temps sur une faute de frappe impromé pour imprimé !! Tu fais franchement preuve d'une bêtise hord du commun, je ne pense pas que tu aies beacoup d'ami ....

      Ami est volontairement au singulier !

      Bravo à ce Spy que j'aimerais bien rencontrer et qui avais trouvé en tout dernier mot le qualificatif exacte qui te va à merveille.

      Je vois que la rétrospective que j'ai comme projet te fais peur mort de rire et de plaisir !

      Portrait de World of chaos

      Tu peux être plus clair ?

        Et bien quand on installe une application et qu'on effectue des mises a jours, celles-ci ne réinstalle pas toute l'application mais ajoute/modifie du code. J'ai vue que Github avec son système de Commit peut faire ceci, mais vue que j'aimerais la mettre sur PlayStore ça risque d'être compliqué

        Portrait de Louis.D

        Je connaissais cela pour les modules Arduino WIFI par OTA mais pas pour Android modifier une partie d'un code compilé comme une APK WOW pas de mon ressort, et franchement je ne vois pas l'intérêt. Tu mets la nouvelle version sur un serveur et tu la télécharges ! C'est le système utilisé par Google sur Play Store. Le seul truc c'est que l'application vérifie de temps à autre qu'il n'existe pas une nouvelle version sur le serveur. C'est ce que j'utilise dans ma société !

        Portrait de Walter

        @World of chaos je ne suis pas sûre que Android permette ça, je ne crois pas que dans le manifeste de l'apk, il y a les versions des classes.

        Portrait de Walter

        Désolé de continuer la digression, mais comme le dit Jetfuzz, la même façon d'écrire, les insultes répétés et maintenant les mêmes projets, cela fait beaucoup.
        Et Brosden a déjà fait beaucoup de mal à ce forum.

        Portrait de Louis.D

        Walter regarde bien d'où viennent les insultes, puisque tu es très fort dans les définitions compare donc insultes et critiques.

        Jetfuzz tu parles de partage, mais ôte moi d’un doute, comme je n’ai rien trouvé ici de ton cru, mais je me trompe certainement, partage pour toi ce n’est que de prendre les idées des autres ? Quand tu trouve que quelqu'un donne une bonne réponse tu t'empresses de de confirmer la chose pour t'en attribuer un peu la paternité !

        Les mêmes projets que Brossden ?
        Puis-je savoir quels sont les même projets, je sais que je suis le seul au monde de mettre des panneaux solaires sur mon terrain mais en dehors de cela ????
        Brossden a aussi piloté un système de prise de vues par un smartphone fixé sur un gant ? Si c'est le cas franchement nous avons avec ce brossden des idées très proches. Par contre ce n'est pas mon projet mais celui d'un de mes potes (ce qui entre nous doit faire défaut à vous eux) et j'en ai réalisé uniquement le code.

        Ce que j'ai pu voir ici c'est un Jetfuzz GROSSIER (doigt d'honneur par exemple) qui lui est insultant et un Walter tout comme Jetfuzz donnent en général des aides qui ne sont ni plus ni moins des liens que tout un chacun peut trouver grâce à Google ou tout autre moteur de recherche.
        Mais jamais ou très rarement, des aides concrètes !
        Ou encore : "cela vient peut-être d'ici ou de là", mais pas capable d'aider d'une manière plus constructive.

         

        Je pense que vous être deux personnages en manque de reconnaissances, ce qui colle parfaitement avec vos réactions à tous les deux !

        Vous dites : " Brosden a déjà fait beaucoup de mal à ce forum. " Ne serait-ce pas plutôt à vous deux qu'il aurait fait du mal ? j'ai là comme un immense doute.

        Et désolé de vous dire une vérité c'est que vous n'avez pas le gabarits intellectuel suffisant pour m'impressionner ni m'intimider, ni l'un, ni l'autre.

        Portrait de Jetfuzz

        Hello
         bon ben je confirme, Il est de retour. c'est sans équivoque.

        Jetfuzz tu parles de partage, mais ôte moi d’un doute, comme je n’ai rien trouvé ici de ton cru, mais je me trompe certainement, partage pour toi ce n’est que de prendre les idées des autres ? Quand tu trouve que quelqu'un donne une bonne réponse tu t'empresses de de confirmer la chose pour t'en attribuer un peu la paternité !

        Et désolé de vous dire une vérité c'est que vous n'avez pas le gabarits intellectuel suffisant pour m'impressionner ni m'intimider, ni l'un, ni l'autre.

        Cordialement.
        Jetfuzz

        Pages