banner
Maison / Blog / Comment créer un scanner de film automatique 35 mm avec Arduino Nano et Python
Blog

Comment créer un scanner de film automatique 35 mm avec Arduino Nano et Python

May 01, 2024May 01, 2024

Attendre que les scanners à plat numérisent un film négatif couleur n’a rien d’excitant. Ce processus et la précorrection des couleurs qui en résulte peuvent prendre entre une heure et deux.

Une configuration typique de numérisation avec un appareil photo numérique comprend un appareil photo numérique, un trépied (ou un support de copie) et un support de film. Parmi les 3, j'imagine que l'élément le plus rare est le support de film. Heureusement, des entreprises telles que Negative Supply ont commencé à fabriquer ces supports de film indispensables. Mais ceux-ci peuvent aussi être assez chers. Heureusement, n'importe quel support de film DIY fabriqué à partir de carton capable de pousser et de tirer un film non coupé au format 135 (35 mm) via un simple système d'arbre fonctionnera très bien. Nous en reparlerons plus tard !

Un peu de contexte. D'emblée, je dois dire que je ne suis pas affilié à Negative Supply, Capture One ou Negative Lab Pro. Il se trouve que je possède leurs produits et j’aime les utiliser (pour l’instant). Avant, j'utilisais le vénérable Epson V600 pour numériser des films. C'était très sympa car cela me permettait de numériser mes propres films, mais la vitesse n'était pas là. De plus, je n’appréciais pas complètement les céréales que je recevais.

Cela dit, les raisons pour lesquelles j’ai décidé de réaliser ce projet sont plus multiples. J'aime soutenir la communauté cinématographique et les entreprises cinématographiques comme Negative Supply, Lomography et Negative Lab Pro. J’aime aussi l’idée de bousculer légèrement la communauté DIY vers ce domaine de niche. Enfin, je voulais aussi vraiment programmer un microcontrôleur pour la première fois. Reprendre ce projet m'a fait penser à tellement de choses. J'avoue qu'il y a seulement un mois, je ne parvenais pas à faire la différence entre un Arduino et un Raspberry Pi.

Après avoir choisi au hasard un Arduino, principalement en raison de son prix, je devais trouver un problème à résoudre.

Cela n’a PAS pris très longtemps ! J'ai d'abord résolu mon problème de développeur UniRoller, qui résultait de l'utilisation d'un réservoir expert JOBO 3010. Ensuite, je me suis concentré sur l'arrosage automatique de mes plants de tomates pour les fois où je partais en randonnée. Et mon projet final et actuel était de résoudre ce problème que j'avais avec la numérisation de films. Cela m'a également donné l'excuse de pratiquer un peu de programmation Python.

À ce jour, j’ai terminé 2 programmes distincts de numérisation de films. L’un écrit en langage Python et l’autre écrit en C++ (également appelé croquis Arduino). Ils utilisent tous deux le même matériel, mais il existe des différences majeures dans leur fonctionnement. L’un est activé par la vision par ordinateur Python et est entièrement autonome (positionnement automatisé, prise de photo et passage à l’image suivante). L’autre ne fait que mécaniser la progression du film. L'utilisateur effectue les corrections nécessaires en position du film puis prend la photo à l'aide des boutons du contrôleur.

Pour implémenter ce projet, connaître Python (C/C++ pour Arduino) serait idéal, mais ce n'est pas nécessaire pour cliquer sur le bouton Exécuter d'un navigateur qui exécute Jupyter Notebook (trouvé dans Anaconda). Cela dit, l'utilisateur doit télécharger Python et 4 bibliothèques. Je suggère fortement le pack Anaconda car il s'agit d'une solution mono-boutique, avec une communauté en ligne très riche.

Après cette installation, les bibliothèques Python, Numpy, pyFirmata, SciPy et cv2 sont également requises. Vous pouvez installer ces bibliothèques Python à l'aide d'Anaconda-Navigator ou de PIP depuis le terminal. Internet regorge de tutoriels pratiques à ce sujet. Cela dit, j'ai utilisé l'interface Web Jupyter pour créer et exécuter le code Python. Ces programmes auront une extension ipynb. Cependant, il serait préférable de commencer par installer l'IDE Arduino, car c'est là que tout commence (les scripts Arduino ont une extension .ino). Il y aura plus de détails à ce sujet plus tard.

Ok, passons à la configuration géniale :

Voyons cette configuration en action !

Mode 1: Arduino uniquement et en corrigeant manuellement la position :

Mode 2: Correction automatique avec Python :

Mode 3: Arduino plus Python en action sur un support de film en carton DIY :