Table des matières:

Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série!): 4 étapes
Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série!): 4 étapes

Vidéo: Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série!): 4 étapes

Vidéo: Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série!): 4 étapes
Vidéo: U=RI | Porter son Arduino sur une breadboard 2024, Juillet
Anonim
Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série !)
Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série !)
Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série !)
Arduino autonome 3,3 V avec horloge externe 8 MHz programmée à partir d'Arduino Uno via ICSP / ISP (avec surveillance série !)

Objectifs:

  • Pour construire un Arduino autonome qui fonctionne sur 3,3 V à partir d'une horloge externe de 8 MHz.
  • Pour le programmer via ISP (également connu sous le nom d'ICSP, programmation série en circuit) à partir d'un Arduino Uno (fonctionnant à 5V)

    Pour modifier le fichier du chargeur de démarrage et graver le chargeur de démarrage (via ISP)

  • Pour pouvoir lire les informations série de l'Arduino autonome via un câble FTDI

    Pour pouvoir lire les informations série de l'Arduino standlaone sans le câble FTDI

Préambule:

J'essayais de construire mon projet autonome, mais je n'ai vu aucun guide complet sur l'exécution, la programmation et la surveillance d'un Arduino autonome - en particulier celui fonctionnant avec une horloge externe 8Mhz et 3,3V et programmé par un Arduino UNO. J'ai reconstitué un certain nombre de guides distincts et j'ai essayé de faire référence à l'endroit d'où j'ai obtenu les informations pour donner crédit là où le crédit est dû. Ce guide est le résultat de plusieurs jours à chercher des solutions et à en trouver des parties à la fois pendant que je construisais mon propre projet. De plus, j'ai lié plusieurs produits utiles qui seraient utiles non pas parce que je suis affilié à l'un des les entreprises, mais parce qu'il est pertinent d'inclure les éléments spécifiques auxquels je fais référence.

Questions courantes avant de commencer:

Pourquoi avez-vous besoin de le programmer avec le FAI et de le surveiller via FTDI ? Pourquoi ne pouvez-vous pas simplement le programmer via FTDI ?

Nous devrons modifier les paramètres des fusibles en gravant un nouveau chargeur de démarrage et vous ne pouvez pas le faire via une communication série. Vous devez graver le bootloader via ISP. Ceci est également utile pour ceux qui n'ont pas de puce ATMEGA328 pré-bootée.

Pourquoi n'utilise-je pas simplement un câble ISP avec surveillance série, comme celui-ci ?

Peut-être que, comme moi, il se trouve que vous n'en avez pas et plutôt que d'attendre qu'un vous soit expédié, vous aimez utiliser ce que vous avez ! Il se trouve que j'ai un câble FTDI (même si vous constaterez finalement que vous n'en avez même pas besoin: cela vous simplifie la vie).

N'ai-je pas besoin d'un décaleur de niveau logique de l'Uno à l'Arduino autonome ?

Oui, vous le faites, mais je vais vous montrer comment en faire un vous-même. Comme le câble ISP, il se trouve que je n'en ai pas.

Je veux le faire fonctionner avec une alimentation externe. Comment je fais ça?

Il existe de nombreux guides qui montrent comment faire fonctionner un Arduino autonome sans batterie. Je vais écrire comment je l'ai fait et le lier ici [je l'insérerai plus tard].

LE GUIDE

Étape 1: Construire l'Arduino autonome

Construire l'Arduino autonome
Construire l'Arduino autonome
Construire l'Arduino autonome
Construire l'Arduino autonome

1) Construisez l'Arduino autonome à partir de ce lien. La seule partie du guide dont vous avez besoin est les "Bases ATMEGA8/168/328".

  • vous pouvez alimenter l'Arduino autonome à partir du 3,3 V de l'Arduino Uno. (Vous pouvez ignorer la première section du didacticiel intitulée « Ajout de circuits pour une alimentation électrique ».
  • Remplacez l'horloge 16 MHz par une horloge 8 MHz.
  • Ajoutez 0,1 uF de plafonds entre: VCC et Gnd (des deux côtés) VRef et Gnd.

    • Je ne les ai pas inclus dans l'image mais je les ai dans mes projets !
    • Je sais que c'est un oscillateur 16 MHz sur la photo. J'ai pris la photo avant de comprendre tout ce que j'ai fait dans le guide !

Source d'image de brochage ATMEGA328p ici.

Conseils de dépannage courants

  • Assurez-vous d'avoir réinitialisé haut via une résistance de 10k de VCC à la broche 1 de l'ATMEGA. Si la broche est mise à la terre ou flottante, cela ne fonctionnera pas.
  • Vérifiez que vous avez correctement inséré les fils et l'oscillateur.
  • Assurez-vous d'utiliser des condensateurs 22pF pour l'oscillateur 8 MHz. Cela ne fonctionnera pas autrement.
  • Assurez-vous que l'appareil est sous tension.

Étape 2: Le câblage du FAI

Le câblage du FAI
Le câblage du FAI
Le câblage du FAI
Le câblage du FAI

2) Créez la partie FAI

Vous suivrez ce guide ici avec une petite mais très importante étape.

La raison pour laquelle vous ne pouvez pas simplement suivre le guide est qu'il vous manque une partie cruciale: vous ne pouvez pas programmer un appareil 3,3 V directement à partir des connexions 5 V. (Du moins, je ne pouvais pas: cela ne fonctionnerait pas tant que je ne l'aurais pas fait). Vous devez insérer un décaleur de niveau logique qui décale les signaux 5V de l'UNO vers l'Arduino autonome 3.3V.

Si vous n'avez pas de carte de décalage de niveau logique, vous pouvez en créer une en utilisant des résistances. Tout ce qu'un décaleur de niveau logique est vraiment (tant que vous décalez vers le bas) est un diviseur de tension. Vous aurez besoin de 6 des mêmes résistances, rien de trop haut ou de trop bas. J'ai utilisé des résistances de 220 ohms, mais je suis sûr que même des résistances de 10k fonctionneraient.

Pour SCK (broche numérique 13) et MOSI (broche numérique 11), utilisez un diviseur de tension pour réduire la tension d'un tiers. Essentiellement, vous allez avoir un Uno SCK et MOSI, puis une résistance (220 ohms), puis SCK et MOSI connectés à l'Arduino autonome et 2 résistances (440 ohms au total) à la terre.

Alors, lisez le guide lié au début de cette section, mais incluez des diviseurs de tension entre SCK et MOSI. Rappelez-vous, SCK, MISO, MOSI et RESET sont les broches 13, 12, 11 et 10 sur l'Uno mais sont les broches 19, 18, 17 et 1 sur l'Arduino autonome !

Conseils de dépannage courants

  • VÉRIFIEZ LE CÂBLAGE

    • Si vous obtenez une signature de périphérique composée uniquement de 0 lorsque vous essayez d'écrire un programme, votre câblage est presque certainement éteint ou l'Arduino autonome n'est pas alimenté.
    • Assurez-vous également que vous avez le fil de réinitialisation de 10 sur l'Uno à 1 sur l'Arduino autonome
  • VÉRIFIER LES DIVISEURS DE TENSION

    Assurez-vous d'avoir des diviseurs de tension avec un rapport de 1:2 (côté haut: côté bas) pour les résistances pour SCK et MOSI. Par exemple. une résistance de 220 du côté +5v, puis 2 résistances de 220 ohms (440 ohms au total) vers la terre avec le signal vers l'Arduino autonome au milieu

Étape 3: modifiez le fichier du chargeur de démarrage, gravez le chargeur de démarrage et téléchargez votre croquis

Modifiez le fichier du chargeur de démarrage, gravez le chargeur de démarrage et téléchargez votre croquis
Modifiez le fichier du chargeur de démarrage, gravez le chargeur de démarrage et téléchargez votre croquis
Modifiez le fichier du chargeur de démarrage, gravez le chargeur de démarrage et téléchargez votre croquis
Modifiez le fichier du chargeur de démarrage, gravez le chargeur de démarrage et téléchargez votre croquis

3) Modifiez le fichier du chargeur de démarrage (boards.txt) et gravez le chargeur de démarrage sur l'Arduino autonome. Téléchargez votre croquis

Modification du fichier du chargeur de démarrage

Afin de faire fonctionner l'Arduino autonome, vous devrez modifier les paramètres du fusible de baisse de tension du chargeur de démarrage. Sinon, vous pourrez graver un chargeur de démarrage dessus, mais vous ne pourrez pas exécuter de croquis.

Vous pouvez supprimer complètement la détection de baisse de tension, mais je ne le recommanderais pas. Au lieu de cela, nous allons l'abaisser de 2,7V (ce qui est venu sur ma puce par défaut) et le remplacer par 1,8V. En fin de compte, cependant, vous pouvez choisir les paramètres de baisse de tension que vous souhaitez en utilisant le calculateur de fusible ici.

Mon fichier de tableaux était à l'emplacement suivant:

C:\Program Files (x86)\Arduino\hardware\arduino\avr

Cependant, vous pouvez avoir plus d'un fichier boards.txt dans votre dossier matériel autre que /arudino/. Vous allez modifier le fichier boards.txt à l'emplacement /arduino/ car vous allez modifier la section ATMEGA328p (3,3 V, 8 MHz).

Vous risquez de perdre le fichier boards.txt édité si vous réinstallez ou mettez à jour l'IDE Arduino (selon ce post). Cela signifie que si vous mettez à jour l'IDE Arduino, vous devrez à nouveau modifier ces paramètres si vous souhaitez créer un autre Arduino autonome.

Dans le fichier boards.txt, faites défiler vers le bas ou recherchez "Pro Mini". La section s'intitule "pro.name=Arduino Pro ou Pro Mini". Faites défiler jusqu'à la sous-section "pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz)".

Recherchez la ligne qui dit "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=_"

Modifiez les paramètres en xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFE).

Sauvegarder et quitter.

Graver le bootloader

Une fois que vous avez fait cela, vous pouvez suivre la section "Instructions" du guide du FAI des étapes 1 à 5.

Quelques points à clarifier:

  • Lorsque vous téléchargez le croquis "Arduino en tant que FAI", vous devez vous assurer que vous avez sélectionné le bon port COM et le bon processeur.

    Dans ce cas, cela signifie que vous avez sélectionné le port COM de votre Arduino dans Outils-> Port: COM X (Arduino Uno) et que la carte est Arduio Uno

  • Sélectionnez le bon programmeur: sous Outils->Programmeur->Arduino en tant que FAI.

    PAS ArduinoISP ou ArduinoISP.org

  • Avant de graver le bootloder, changez la carte "Pro ou Pro Mini" et le processeur en "ATMEGA328p (3.3V, 8 MHz)".

    Vous ne verrez pas la section processeur tant que vous n'aurez pas sélectionné le bon type de carte

Gravez le bootloader sur l'Arduino autonome AVANT d'essayer d'écrire des croquis dessus.

Téléchargement du croquis

C'est très important. Vous pouvez maintenant programmer l'un ou l'autre Arduino: l'Uno et le Standalone. Si vous ne téléchargez pas sur le bon appareil, vous devez répéter la section ci-dessus et réécrire Arduino en tant que programme ISP sur l'Uno.

Lorsque vous téléchargez votre croquis, assurez-vous de cliquer sur Outils -> Télécharger à l'aide du programmeur OU cliquez sur Ctrl+Maj+U. Vous pouvez également maintenir la touche Maj enfoncée et cliquer sur l'icône de la flèche, mais ne cliquez pas sur l'icône de la flèche sans maintenir la touche Maj enfoncée.

Conseils de dépannage courants

  • Activez la sortie détaillée pour le dépannage.
  • "Le signatuere de l'appareil n'est composé que de 0 !" [Celui-ci est très susceptible de se produire.]

    • voir la section Câblage du FAI. Soit vous avez mal câblé l'Arduino autonome, soit il n'est pas allumé.
    • Assurez-vous d'avoir sélectionné le bon port COM et la bonne carte/processeur. Lorsque vous gravez le chargeur de démarrage, vous DEVEZ vous assurer que vous gravez le chargeur de démarrage Pro Mini 3,3 V 8 MHz dessus, sinon les fusibles ne seront pas réglés correctement.
  • "J'ai modifié le fichier boards.txt mais je ne vois pas les modifications"

    Assurez-vous d'avoir modifié le bon fichier boards.txt. Essayez de mettre à jour Arduino IDE si les modifications ne fonctionnent pas, ou supprimez temporairement les autres dossiers de votre dossier /hardware/

  • "Je ne trouve pas la section pro mini de boards.txt !"

    Vous ne cherchez pas dans le bon fichier boards.txt. Vérifiez le dossier Arduino//hardware/arduino/

Étape 4: Communication série

4) Surveiller l'appareil autonome via la communication série

Vous pouvez vraiment le faire via 2 méthodes, donc si vous n'avez même pas de câble / carte de dérivation FTDI, ce n'est pas la fin du monde. Et rappelez-vous, le croquis que vous avez téléchargé sur l'Arduino autonome doit avoir des instructions Serial.print à lire: si vous ne l'avez pas écrit dans le programme, vous ne verrez rien !

Si vous n'avez pas de câble FTDI

Après avoir gravé le chargeur de démarrage et écrit le programme de votre choix, vous pouvez (très soigneusement et en vous souvenant de l'orientation dans laquelle il retourne) retirer la puce DIP ATMEGA328 de l'Arduino Uno. Je recommande d'utiliser une tête plate pour cela.

Vous pouvez connecter le RX de l'Arduino autonome au RX d'Uno et le TX au TX. Oui, c'est normalement le contraire, mais vous pouvez considérer l'Uno comme un "transfert" des informations vers le moniteur série de l'IDE. C'est pourquoi vous ne connectez pas RX à TX et TX ro RX dans ce cas. Lorsque vous exécutez votre programme, assurez-vous d'avoir choisi le port COM de l'Arduino Uno et ouvrez le moniteur série. Vous pourrez voir la sortie série de l'Arduino autonome.

(Cette solution est créditée à Robin2 ici.)

Si vous avez un câble/carte FTDI

(J'utilise la carte FTDI de Sparkfun que j'ai convertie en 3,3 V à l'aide du plot de soudure à l'arrière)

Connectez simplement le GND du panneau de dérivation à la terre de l'Arduino autonome et connectez le RX du panneau de dérivation au TX de l'Arduino et le TX au RX. (Si vous surveillez JUSTE en série et que vous n'écrivez rien en retour, vous pouvez simplement connecter le RX de la planche à pain à Arduino TX).

Gardez à l'esprit qu'à ce stade, vous avez la possibilité d'alimenter l'Arduino autonome via le Uno OU le câble FTDI. Ne connectez pas les deux sources d'alimentation en même temps ! Notez que vous devrez changer le port COM car il sera différent du port COM Arduino Uno.

Conseils de dépannage courants

  • « Je ne vois rien !

    • Vérifiez si le bon port COM est activé.
    • Vérifiez si vous disposez des pilotes FTDI les plus récents.
    • ASSUREZ-VOUS QUE LA TERRE EST CONNECTÉE.
  • « Tout ce que je vois, c'est une sortie de déchets dans le moniteur série ! »

    • Vous obtenez quelque chose qui est un bon signe.
    • Cependant, vérifiez la tension de la carte FTDI.
    • L'Arduino autonome produit 3,3 V sur son TX et la carte FTDI peut ne pas le capter si elle attend 5v.
    • Vérifiez le débit en bauds.
    • Assurez-vous que la terre est connectée et qu'une seule source d'alimentation est connectée ! (C'est-à-dire n'alimentez pas l'Arduino autonome à partir de l'Uno ET de votre carte FTDI.

Conseillé: