Introduction: Arduino Atmega644/1284 Clone

About: Interest in PUNK/HARDCORE/METAL/HIGHLAND BAGPIPES

This project is about to DIY an Arduino board wth an ATMEGA644P or 1284P to have more INPUTS/OUTPUTS than on the atmega328P. You can buy an arduino mega but it's more expensive.

The microcontrollers will be bootloaded with Sanguino and the project seems to be like another one called CALUNIUM.

On this clone you will be able to connect every existing shields. Personally I use the ethernet shield to communicate with an android or a vb.net application on another project.

I use currently the clone on both atmega: the difference is only about the flash memory capacity more important on the ATMEGA1284P.

-------------------------------------------------------------------------------------------------------------------------------------------------------

Ce projet va permettre de fabriquer un board Arduino à base d'un atmega 644P ou 1284P afin de bénéficier d'un peu plus d'entrées/sorties qu'avec un atmega328P. Les atmegas seront "bootloadés" avec Sanguino et le projet s'inspire,au niveau du pin mapping, d'un autre projet CALUNIUM.

(noter que le plancher en chêne sur la photo est très bien entretenu)
Ce clone permettra également d'adapter le shield ethernet Arduino et le faire communiquer avec une application android ou visual basic qui fera l'objet d'un autre projet.

Actuellement le projet fonctionne parfaitement sous Atmega1284p, je n'ai pas essayé le 644p mais je pense ne pas avoir de mauvaises surprises et je ne dis pas ça pour me la péter.

Step 1: Connection and Bootloading/Utiliser Arduino 1.0.5 : Charger Le Bootload Avec ATMEGA 328P Sur La Platine Arduino

You need nevertheless an arduino board to ignite the project. Here are the different connections and links beetween the arduino board and the ATMEGA644P/1284P (function and arduino pin number -- atmega pin)

pin 9 (RESET) with 10K resistor -- yellow pin 10 (SS)
pin 6 (MOSI) -- green pin 11 (MOSI)

pin 7 (MISO) -- purple pin 12 (MISO)

pin 8 (SCK) -- orange pin 13 (SCK)

pin 10 (Vcc) -- 5V

pin 30 (AVCC) -- 5V

pin 32 (AREF) -- 5V

pin 11 (GND) -- 0 V

Oscillator 16 mHz, 2 capacitors 22 pF

------------------------------------------------------------------------------------------------------------------------------------------------------

Il faut tout de même pour initier le projet une platine Arduino Uno.

Voici les différentes connexions entre la platine Arduino Uno et la cible atmega1284p ou 644p (numéro des pins atmega644/1284, fonction et numéro des bornes Arduino) :

borne 9 (RESET) avec résistance de 10K , jaune borne 10 (SS)

borne 6 (MOSI), vert borne 11 (MOSI)

borne 7 (MISO), violet borne 12 (MISO)

borne 8 (SCK), orange borne 13 (SCK)

borne 10 (Vcc), 5V

borne 30 (AVCC), 5V

borne 32 (AREF), 5V

borne 11 (GND), 0 V

Quartz 16 mHz, 2 condensateurs 22 pF

Step 2: Bootloading ATMEGA644P-1284P With Sanguino / Transfert Du Bootload Sanguino

Once the microcontroller connected, link the arduino board on USB cable and use arduino 1.0.5 WITHOUT Sanguino inside. Launch arduino1.0.5:

1 - Select File->Sketchbook->examples->Basics->Arduino ISP

2 - Select the good serial port.
3 - Select the first board: Tools->Board->Arduino uno

4 - Compile and transfert "Arduino ISP" to l'Arduino Uno

5 - Use arduino 1.0.5 with Sanguino inside (you have to dezip the supplied Sanguino archive in arduino 1.0.5 /hardware/arduino/ ).

6 - Select the good microcontroller, in my case atmega644p or 1284p in Tools->Board-> Sanguino W/Atmega 1284 16Mhz

7 - Now "arduino as ISP", burn the Bootload. A few time later, a message is displayed: "Done burning bootloader".

Your atmega 644p or1284p is bootloaded and you can use arduino 1.0.5 with Sanguino inside.

---------------------------------------------------------------------------------------------------------------------------------------------------------

Une fois le circuit intégré connecté, relier l'USB à la platine Arduino et ouvrir le logiciel:
1 - Sélectionner File->Sketchbook->examples->Basics->Arduino ISP

2 - Sélectionner le port série.

3 - Selectionner le type de carte Tools->Board->Arduino uno

4 - Compiler et charger l'exemple "Arduino ISP" vers l'Arduino Uno

5 - Utiliser arduino 1.0.5 avec SANGUINO intégré (librairie à télécharger sur le site fourni à la fin)

6 - Sélectionner tla cible à programmer. Dans notre cas atmega644p ou 1284p in Tools->Board-> Sanguino W/Atmega 1284 16Mhz
7 - menu programmateur/arduino as ISP, graver la séquence d'initialisation (Burn Bootloader).

Après un certain temps il devrait s'afficher le message: "Done burning bootloader".
A ce niveau vos atmega 644p ou 1284p sont bootloadés et peuvent désormais fonctionner avec le logiel arduino 1.0.5.

Step 3: Pin Map of the Clone Board / Schéma Des Bornes De La Platine Arduino Atmega 644/1284 Clone

Here this the matrice of the arduino pins vs atmega pins. It seem like on the CALUNIUM project.

There is a mess beetween the real analog pins and their names to use in your program:

A0 becomes A1
A1 becomes A0

A2 becomes A7

A3 becomes A6

A4 becomes A5

A5 becomes A4

A6 becomes A3

A7 becomes A2

If you want to use pin D16 to D23 as digital I/O you need to disable JTAG in the setup zone of your program like this:

uint8_t tmp = 1<< JTD;

MCUCR = tmp; // Disable JTAG

MCUCR = tmp; // Disable JTAG

And to R/W your pins, you need to use DDRC and PORTC registers because "digitalRead()" and "digitalWrite()" don't work properly.

-----------------------------------------------------------------------------------------------------------------------------------------------------

Plan de l'Arduino UNO board pour réaliser le clone en respectant les fonctions des bornes.

Tableau de correspondances du câblage inspiré du CALUNIUM : Arduino Uno vers atmega 644p ou 1284p Sanguino.

WARNING!!! Les correspondances des entrées analogiques sont les suivantes sous Sanguino (there is a mess!!):

A0 devient A1

A1 devient A0

A2 devient A7

A3 devient A6

A4 devient A5

A5 devient A4

A6 devient A3

A7 devient A2

Step 4: Schematic of the Clone / Schéma Du Clone

Here is the schematic of the clone and now you need an USBasp converter to program via an HE10 connector.

------------------------------------------------------------------------------------------------------------------------------------------------------------

Arduino Atmega 644/1284 CLONE board.
Cette platine possèdera un connecteur HE10 pour pouvoir programmer l'atmega 644p ou 1284p par un connecteur USBasp toujours sous le logiciel arduino1.0.5.

Le schéma sous PROTEUS au format pdf:

Step 5: Atmega 644p/1284 Pin Map

A colored pin map, the brown one are the good one to use in your program. Becarefull of the analog mess!!!

--------------------------------------------------------------------------------------------------------------------------------------------------------

Les pattes dessinées en marron sont les adresses des pins de l'atmega644/1284 que j'ai recopiées dans le tableau de correspondance.

Même remarque quant aux entrées analogiques.

Step 6: Another Pin Map / Adressage Des Pin : ATMega644P Ou 1284P Sous Sanguino

Another pin map found on the web.

Example: D8 on the arduino uno is connected to pin 20 of the atmega644p/1284p and gives the adress 14 (D14).

--------------------------------------------------------------------------------------------------------------------------------------------------------

Un autre pin mapping trouvé sur le net qui résume les précédents.

Exemple d'adressage d'une borne atmega644/1284 : sur la borne D8 de l’Arduino Uno connexion de la pin 20 de l’atmega644/1284 qui aura donc l'adresse 14 (D14).

J'ai testé quelques sorties et les adresses paraissaient cohérentes d'après cette méthode. Je pense qu'elles sont toutes fonctionnelles et je n'ai pas modifié le pin mapping Sanguino.

Les entrées analogiques ont une autre correspondance: voir la page du tableau de correspondance.

Step 7: Before Downloading the Program in Your ATmegas / Programmation Du Board Par USBasp

To program you need to:

- select the good atmega : tools/board

-select the good programer : tools/programer/USBasp

----------------------------------------------------------------------------------------------------------------------------------------------------------

Configurer l'IDE Arduino
Voici maintenant le cœur de ce qui nous intéresse ici. Si vous avez téléchargé une version récente de l'IDE Arduino et que vous le lancez, vous trouverez dans le menu Tools > Programmer le moyen de sélectionner le programmateur que vous souhaitez utiliser. Vraisemblablement, pour les moins chers du marché il s'agira pour vous comme dans mon cas d'un programmateur compatible USBasp.

Vous devrez également sélectionner une carte utilisant le même micro-contrôleur que celui que vous possédez. Dans mon cas, j'ai choisi Sanguino W/atmega 644p ou 1284p.

Step 8: Program Transfer / Programmation Du Board Par USBasp (suite)

To dowload the program:

File > Upload Using Programmer

If it's OK there is some avrdude errors reported and displayed. Ignore it.

------------------------------------------------------------------------------------------------------------------------------------------------------

Si tout est convenablement raccordé, vous allez pouvoir procéder à la compilation et au téléchargement du firmware sur votre cible. Ici, contrairement à ce que l'on ferait avec une vraie carte Arduino, vous n'allez pas cliquer sur le bouton upload de l'IDE Arduino. Il va falloir passer par le menu File > Upload Using Programmer. À par ça, la séquence des opérations sera identique du point de vue de l'utilisateur: compilation et téléchargement s'il n'y a pas d'erreur.

Pour savoir si le téléchargement a été un succès, observez les messages dans la partie inférieure de l'IDE. Si l'IDE reporte qu'avrdude a rencontré des erreurs, c'est mauvais signe. Les avertissements (warning) peuvent la plupart du temps être ignorés – en particulier si votre programmateur est un clone bon marché: la compatibilité avec l'original étant souvent approximative.

Malgré les apparences, le téléchargement est un succès — Avrdude reporte des avertissements (warnings) causés par une compatibilité partielle de mon programmeur avec l'USBasp original. Néanmoins, il n'y a pas d'erreur (error). Le téléchargement est un succès et c’est vraiment super la frime.

Step 9: Nice and Wonderfull Pics / L'aspect De Arduino Atmega644/1284 Clone:

Some very very nice photos...

----------------------------------------------------------------------------------------------------------------------------------------------------

Vue de dessus avec l'USBasp connecté pour la programmation.

Vue de dessous avec un petit bricolage afin de décaler un des borniers de l'arduino avec un pas différent de 2.54mm (epoxy sciée puis réajustée par soudure à l'étain).

Et enfin le clone avec l'ethernet shield qui s'emboite parfaitement et est pleinement fonctionnel (cf projet arduino/advancedHMI modbus TCP).

Step 10: Thanx and Links / Remerciements Et Liens Utiles:

Some websites to look at:

https://code.google.com/p/sanguino/

http://blog.stevemarple.co.uk/2011/08/introducing-...

http://pandauino.com

https://www.crowdsupply.com/pandauino/narrow

Thanx for every interesting and running tutorials on the web.

---------------------------------------------------------------------------------------------------------------------------------------------------------

Pour récupérer le bootload Sanguino:
http://sanguino.cc/hardware

Le projet Calunium: http://sanguino.cc/hardware

Technique du bootload: http://sanguino.cc/hardware

Quelques projets intéressants sur le sujet:

https://www.crowdsupply.com/pandauino/narrow

http://pandauino.com

Merci aux internautes pour leurs remarques constructives. J'ai essayé de remettre en français mes notes d'expérimentation afin que les traductions soient compréhensibles.