Comment ajouter de la mémoire(ROM) a un arduino

Bonjour,

J'ai un projet impliquant un microcontrôleur Arduino (plus précisément l'ATmega328P avec un quartz et un condensateur). Ma préoccupation est que la mémoire intégrée dans la puce ne sera pas suffisante pour stocker les variables de mon programme. J'envisage donc d'ajouter une EEPROM à mon ATmega328P afin d'augmenter la capacité de mémoire ROM au-delà des 32K bytes disponibles.

Cependant, je suis un peu perdu quant à la manière de procéder. Auriez-vous des conseils ou des pistes pour m'aider à étendre la mémoire ROM de mon ATmega328P ?

Merci d'avance pour votre aide.

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

la lecture et encore pire l'écriture de données dans une EPROM externe est relativement lent par rapport à la lecture de la mémoire flash ou EEPROM interne du 328P. ça va avoir un impact majeur sur les performances de votre code et avez vous analysé le besoin en RAM ?

pourquoi ne pas prendre une puce avec plus de mémoire directement ?

Non, je n'ai pas encore analysé mes besoins en RAM. Une autre solution pourrait être de passer à un ATmega644, ou autre c'est cela ?

Si vous avez d'autres microcontrôleurs à me conseiller, je suis ouvert à toutes suggestions.

un ESP32 est envisageable ?

Je n'y avais pas pensé, mais oui, un ESP32 est tout à fait envisageable. Il devrait avoir largement assez de mémoire pour mon programme.

Et ça "pédalera" un peu plus vite que le 328p

Parfait, merci pour ces conseils, je vais suivre cette voie.

J'ai donc une autre question concernant l'ESP32 : Est-ce que je le programme de la même manière que l'ATmega328P, c'est-à-dire en utilisant l'interface ICSP, ou existe-t-il une autre méthode ?

les ESP32 possèdent leur bootloader interne qui permet de téléverser par l'USB

Tu as le choix..et l'embarras du choix parmi les cartes diverses proposant plus ou moins de mémoire Flash, de RAM et d'Entrées sorties

Sur cet excellent site un panorama d'utisations possibles de cartes à base d'ESP32 :

Dans mon projet, je souhaite éviter d'utiliser des cartes toutes faites et intégrer directement le microcontrôleur sur mon PCB. C'est pourquoi je demande si la programmation de l'ESP32 se fait de la même manière que celle de l'ATmega, via une interface ISP, ou s'il existe une autre méthode.

Après quelques recherches rapides, il semble que je dois utiliser la liaison UART, mais cela est à confirmer.

Oui, ils sont programmable via les broches TX et RX.

Certaines variantes d'ESP32 peuvent également être flashées par leur USB natif sur 2 GPIO (versions -C3, S2 ou -S3)

Dans mon projet, je souhaite éviter d'utiliser des cartes toutes faites et intégrer directement le microcontrôleur sur mon PCB.

prends alors bien conscience de la taille microscopique des puces ESP32 nues ! (boitier QFN48 pour les plus gris, 7mm x7mm)
image

Une solution intermédaire peut consister à utiliser des modules WROOM32 sous capot métallique intégrant un ESP32, sa mémoire Flash SPI, l'horloge et , pour certains, une antenne imprimée
image

Merci pour l'information, je vais donc l'utiliser tx rx.

Oui, je suis conscient de la taille de ces puces.

Elles sont vraiment petites, mais ce n'est pas un problème pour moi car j'ai tout le matériel nécessaire et les connaissances en micro-soudure (étant donné que c'est mon travail).
Je ne devrais pas avoir de difficulté à souder ce composant.

Cependant, le boîtier est également intéressant à considérer.

Il faudrai voir quel solution sera la plus pratique compte tenu de la contrainte de taille à laquelle je suis confronté il doit être le plus petit possible.

Selon ton besoin en mémoire Flash, en Ram en radio (WiFI ? Bluetooth classique ? BLE ?), en USB natif ?..... tu pourrais opter pour une version d'ESP32 plus petite que le QFN48
exemple l'ESP32-C3 existe en QFN32 (5mm x 5mm) avec ou sans mémoire Flash interne

la voilà sur une carte LOLIN C3 MIni v2.1.0 (schéma fourni)
https://www.wemos.cc/en/latest/c3/c3_mini.html

la puce ESP32-C3FH4 (Flash interne 4MB) https://www.mouser.fr/ProductDetail/Espressif-Systems/ESP32-C3FH4?qs=iLbezkQI%252BsgL5PSvEueYlQ%3D%3D

Si GPIO9 est à l'état bas lors du RESET le bootloader interne (gravé en ROM) passe à l'écoute sur le premier UART ET sur l'USB natif

J'aurai besoin d'un peu plus de 40 Ko de mémoire ROM et en ce qui concerne la RAM, je ne suis pas encore sûr. En ce qui concerne la communication radio, j'ai besoin de RF à 2,4 GHz.

Effectivement, cette puce semble très intéressante compte tenu de sa taille. Ce modèle pourrait être une bonne option.

Merci pour toute c'est infos

l'ESP32 a une radio à 2.4Ghz mais c'est dédié au WiFi. est-ce cela que voulez en radio ?

1 Like

Effectivement, j'ai remarqué que le 2,4Ghz de l’ESP32 est destiné uniquement au WiFi, alors que pour mon application, j'ai besoin d'une communication à 2,4 GHz sans qu'elle soit dédiée au WiFi.

Je pense que je vais être obligé d'utiliser un nRF24L01 en boîtier QFN20 pour pouvoir émettre un signal RF à 2,4 GHz.

En RF ( = "Radio Fréquences" :wink:) le module radio des ESP32 fait aussi le bluetooth classique et le BLE sur la bande ISM des 2,54GHz....(une toute nouvelle variante , la -C6, fait aussi le Zigbee) .mais pas la modulation 'propriétaire' des nRF24L01

1 Like

Mon objectif est de pouvoir émettre un signal en radiofréquence à 2,4 GHz après la captation de données par différents capteurs.

Un autre microcontrôleur, également équipé d'un module pour recevoir le signal, pourra ensuite exécuter des actions en fonction des données reçues.