Faites-le vous même!
SOUTENEZ-NOUS! Déjà 28 personnes nous ont soutenu. Nous vous en sommes très reconnaissants. |
RETROUVEZ NOUS SUR: |
Arduino
Voici comment fabriquer un système de scanner 360° qui permet de mettre automatiquement en rotation une pièce et de la prendre en photos sur 360°.
L'appareil photo peut être piloté avec ou sans fil!
Schéma, matériels et STL:
http://www.crazymakers.fr/videos-youtube/scanner_36a_automatique_ep_2_conception_-art-EHY5VoH2eYw.html
Découvrez la présentation du fonctionnement sur la vidéo dédiée:
https://youtu.be/jp5YLMT-MGQ
➕ INFORMATIONS: ➕
⁉️ Catégorie: Arduino.
⏰ Temps: 5 heures.
💪 Difficulté: 4/10.
⭐️ COMMENT NOUS AIDER ? ⭐️
🚨Un petit geste sur Youtip: https://www.utip.io/myprofile
❤️️ Soutenez-nous: http://www.crazymakers.fr/don-crazymakers.html
👍 Pensez à "liker" la vidéo.
🔗 Partagez nos vidéos et parlez de nous autour de vous
📡 NOUS SUIVRE OU NOUS CONTACTER: 📡
🔹Site Internet: http://www.crazymakers.fr
🔹Facebook: https://www.facebook.com/CrazyMakers/
🔹Twitter: https://twitter.com/CrazymakersF
🔹Instagram: https://www.instagram.com/crazymakers_fr/
🔹Chaine Youtube: https://www.youtube.com/c/CrazyMakersFr
#scanner360 #Photogrammétrie #scanner3d
Plateau tournant: https://www.ebay.fr/sch/i.html?_nkw=250+mm+Lazy+Susan+Palier
Ecran OLED i2c: https://www.ebay.fr/itm/0-96-I2C-Iic-Spi-Serial-128X64-Weis-Oled-Lcd-Led-Anzeigemodul-Fur-Arduino-FELK/362866814645
Rotary Encoder module: https://www.ebay.fr/itm/Ky-040-Rotary-Encoder-Module-Brick-Sensor-Development-For-Arduino-Modul-FE/233270240264
Driver a4988: https://www.ebay.fr/sch/i.html?_nkw=a4988
Moteur Nema 17: https://www.ebay.fr/sch/i.html?_nkw=17HS4023
Arduino UNO Proto Shield: https://www.ebay.fr/itm/UNO-Arduino-Prototyping-Prototype-Shield-ProtoShield-Module-Mini-Breadboard/112503418903
DC Jack:
https://www.ebay.fr/itm/5-PCS-12V-5-5x2-1mm-Female-DC-Power-Socket-Jack-Connector-Cable-Plug-Wire-CCTV/142616079883
1 Arduino UNO
1 Optocoupleur PC 817
1 Led IR
2 résistances 100 Ohms
Connecteurs XH 2.54mm Male + Femelle
|
|
|
Le projet a demandé d'innombrable heures de travail, du prototypage, des tests.
C'est pourquoi nous avons décidé de diffuser les fichiers .STL pour impression après un don. Peu importe le montant, vous pouvez donner n'importe quel montant, nous vous serions très reconnaissant de contribuer au projet.
Utilisez le bouton ci-dessous pour faire le don, nous vous enverrons les fichiers .STL à votre adresse e-mail Paypal.
... Cependant, si vous ne pouvez / ne voulez pas faire un don pour une raison quelconque, contactez-nous, nous vous enverrons les fichiers malgré tout. Si vous aimez le projet, vous pouvez faire un don à tout moment. Nous vous remercions!!
#include <Arduino.h>
#include <EEPROM.h>
#include <multiCameraIrControl.h>
#include "logo.h"
//OLED
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//Encoder
#define outputA 2
#define outputB 4
#define buttonPin 3
int counter = 0;
int aState;
int aLastState;
//Driver 4988
#include "BasicStepperDriver.h"
#define MOTOR_STEPS 6125
#define RPM 10
#define MICROSTEPS 2
#define DIR 9
#define STEP 8
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);
//Librairie APN Diode IR
Canon D5(11);
//Variales diverses
boolean do_update_screen=true;
int mode_menu=0;
int nombre_photos=EEPROM.read(1);
int delai_photos=EEPROM.read(5)*100;
void setup() {
// Encoder
pinMode (outputA,INPUT_PULLUP);
pinMode (outputB,INPUT_PULLUP);
pinMode (buttonPin,INPUT_PULLUP);
aLastState = digitalRead(outputA);
//OLED
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//Stepper
stepper.begin(RPM, MICROSTEPS);
//Affichage du logo
display.clearDisplay();
display.drawBitmap(0, 0, fan_off, 128, 64, 1);
display.display();
delay (5000);
}
void loop() {
//Bouton validation
if (digitalRead(buttonPin)==LOW) {mode_menu ++;delay(500);do_update_screen=true;}
//Rotary et ajustement de valeur en fonction du mode
if (mode_menu==0){nombre_photos=read_encoder(nombre_photos,1);if (nombre_photos<4){nombre_photos=4;}if (nombre_photos>64){nombre_photos=64;}}
if (mode_menu==1){delai_photos=read_encoder(delai_photos,250);if (delai_photos<0){delai_photos=0;}if (delai_photos>5000){delai_photos=5000;}}
//Actualisation de l'écran si nécessaire
if (do_update_screen==true){update_screen();do_update_screen=false;}
//Cycle si mode 2 atteint
if (mode_menu==2){cycle(nombre_photos, delai_photos); mode_menu=0;}
}
int read_encoder(int initial_value, int increment){
aState = digitalRead(outputA);
if (aState != aLastState){
if (digitalRead(outputB) != aState) {initial_value = initial_value+increment;do_update_screen=true;}
else {initial_value =initial_value-increment;do_update_screen=true;}}
aLastState = aState;
return initial_value;}
void update_screen()
{
int xpos=10;
int ypos=0;
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1); // Draw 2X-scale text
display.setCursor(xpos, ypos);
display.println(F("Nombre de Photos"));
ypos+=9;
display.setTextSize(2); // Draw 2X-scale text
if (mode_menu==0){display.setCursor(1, ypos);display.println(F(">"));}
display.setCursor(xpos, ypos);
display.println(nombre_photos);
ypos+=15;
display.setTextSize(1); // Draw 2X-scale text
display.setCursor(xpos, ypos);
display.println(F("Delai prise photo"));
ypos+=9;
display.setTextSize(2); // Draw 2X-scale text
if (mode_menu==1){display.setCursor(1, ypos);display.println(F(">"));}
display.setCursor(xpos, ypos);
display.println(delai_photos);
ypos+=15;
display.setTextSize(2); // Draw 2X-scale text
if (mode_menu==2){display.setCursor(1, ypos);display.println(F(">"));}
display.setCursor(xpos, ypos);
display.println(F("Demarrer le scan"));
display.display(); // Show initial text
}
void cycle(int nombre_photos, int delai_photos)
{
EEPROM.write(1, nombre_photos);
EEPROM.write(5, delai_photos/100);
for (int i = 0; i < nombre_photos; i++) {
stepper.rotate(360 / nombre_photos);
digitalWrite(12,HIGH);
D5.shutterNow();
delay(delai_photos);
digitalWrite(12,LOW);
if (digitalRead(buttonPin)==LOW) {asm volatile (" jmp 0"); break;}
}
mode_menu=0;
update_screen();
}
Crazymakers le 2020-01-26 13:33:20
En fait, la sortie de l'optocoupleur (PC817) sert d'interrupteur.
Le mieux en cas de doute c'est d'acheter un interrupteur filaire de la marque de l'APN sur ebay (1-2?) et remplacer l'interrupteur mécanique par la sortie du PC817
Emmanuelle Collado le 2020-01-26 11:18:38
Bonjour, je suis sur un projet similaire et je bute sur la connectique des appareils photos. Je travaille en nikon et fuji et toutes les broches de contactes sont différentes. Comment avez vous résolu le problème pour vous ?
Newsletter (Lettre d'information)Recevez nos lettres d'information dans votre boite mail. |