Índice:
- Etapa 1: Critérios
- Etapa 2: Revestimento
- Etapa 3: Eletrônica
- Etapa 4: Aceitador de notas
- Etapa 5: Teste
- Etapa 6: Eletrônica para o revestimento
- Etapa 7: Teste Final
- Etapa 8: Código + links do Arduino
Vídeo: Máquina de venda automática baseada em Arduino por $ 1: 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Pegamos nossa ideia com nosso professor de engenharia - todos nós pensamos que seria uma boa ideia ter uma máquina de venda automática para nossa classe e ele disse - "legal, faça uma". Descobriu-se que uma máquina de venda automática seria um ótimo projeto sênior e, quando concluída, funcionaria como uma arrecadação de fundos para nosso programa de engenharia.
É chamada de máquina de venda automática de $ 1, não porque custa $ 1 para fazer, mas simplesmente porque o aceitador de notas é um modelo mais antigo que só aceita notas de $ 1:)
Etapa 1: Critérios
Queríamos uma máquina de venda automática que cabesse em cima de uma mesa e não fosse muito alta. Pegamos as dimensões da largura da mesa para ter certeza de que não tínhamos a máquina de venda automática pendurada para fora da mesa.
Etapa 2: Revestimento
Fizemos nossa caixa de 19 polegadas de largura por 17 polegadas de comprimento por 25 polegadas de altura. Usamos uma máquina CNC para cortar nossa madeira. Usamos o SolidWorks para projetar as faces e depois os convertemos em tipos de arquivo de desenho para nosso software CNC. Lixamos as bordas e depois aparafusamos com 1 ¼”. Fixamos o painel frontal com uma dobradiça e usamos parafusos de ¼”, para que os parafusos não passassem para o outro lado. Também usamos vidro acrílico que cortamos para as prateleiras e painel frontal.
Etapa 3: Eletrônica
Arduino
Usamos uma placa Arduino Mega 2560. Também usamos placas de motor Adafruit para que eles possam operar os motores de passo. Nós adicionamos pinos aos adafrutas para que eles se conectem uns aos outros. Eles foram inseridos um em cima do outro. Cada um pode operar 2 motores. Além disso, observe que o jumper precisa ser conectado.
Fonte de alimentação para desktop
Fonte de alimentação Bestek ATX usando um adaptador para manter a fonte de alimentação ligada. O adaptador é da sparkfun.com e fornece várias voltagens.
Bobinas em motores
Fizemos modelos de solidworks para segurar o motor, agarrar a bobina e guiar a bobina ao longo da prateleira. Nós alcançamos nossas bobinas do ebay e as cortamos para dimensionar. Também tivemos que dobrar 3 deles, pois não conseguimos 6 com as extremidades retas para conectar à montagem da bobina. Em seguida, os imprimimos em 3D e os anexamos à bobina e ao motor. Os motores de passo que tínhamos, montamos. Ele seguraria o motor e guiaria a bobina ao longo de um caminho reto.
LCD e teclado
Usamos um teclado Arduino e uma tela LCD conectados a um cabo de 5 V no adaptador da fonte de alimentação para alimentação e, em seguida, na mesma placa Arduino
Fiação
Recomendamos o uso de fios de bitola 18. Em nosso caso, tivemos que nos comprometer usando vários medidores porque ficamos sem 18 medidores
Tira LED
Usamos uma faixa de LED para iluminar a máquina. Nós o conectamos a um cabo de 12 V no adaptador de alimentação. A faixa de LED que usamos felizmente tinha um + e -, o que tornou o processo de conexão mais fácil.
Etapa 4: Aceitador de notas
Usamos um Coinco BA30B como nosso aceitador de notas. Ele precisava ser conectado diretamente à parede como fonte de alimentação. Nós o combinamos com um adaptador de 24 pinos de uma fonte de alimentação atx para conectar e permitir uma fiação mais fácil. As pinagens que seguimos são encontradas no seguinte link:
techvalleyprojects.blogspot.com/2011/07/ard…
Em nosso caso, tivemos que criar uma montagem para aumentar o aceitador de notas porque, do contrário, seria muito baixo para o nosso revestimento.
Etapa 5: Teste
Teste os componentes eletrônicos fora da caixa primeiro para garantir que os componentes funcionem. Quaisquer problemas que surjam devem ser corrigidos antes de colocá-los dentro da caixa.
Etapa 6: Eletrônica para o revestimento
Depois de testar os componentes eletrônicos e ficar satisfeito com os resultados, comece a colocá-los em seu invólucro. Ajuste os comprimentos dos fios para que eles se encaixem confortavelmente dentro.
Etapa 7: Teste Final
Depois de colocado na caixa, teste tudo novamente. Se tudo funcionar conforme o esperado, parabéns! Você fez uma máquina de venda automática.
Etapa 8: Código + links do Arduino
Transferências:
Código Arduino
drive.google.com/drive/folders/1oC4MhOcMFy…
Pasta SolidWorks com arquivos de peça e montagem
drive.google.com/drive/folders/1amZoypiWcZ…
Caso algo tenha acontecido com o link, aqui está o código do Arduino totalmente exibido. Código Arduino <<
#include #include #include "Arduino.h" #include #include #include "utility / Adafruit_MS_PWMServoDriver.h" #include
const int stepsPerRevolution = 200; const byte ROWS = 4; // quatro linhas const byte COLS = 3; // três colunas char keys [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // conectar à pinagem de linha do byte do teclado colPins [COLS] = {2, 3, 4}; // conectar à pinagem da coluna do teclado Teclado teclado teclado = Teclado (makeKeymap (keys), rowPins, colPins, ROWS, COLS); Adafruit_MotorShield AFMS1 = Adafruit_MotorShield (); Adafruit_StepperMotor * myMotor1 = AFMS1.getStepper (-200, 1); Adafruit_StepperMotor * myMotor2 = AFMS1.getStepper (-200, 2); Adafruit_MotorShield AFMS2 = Adafruit_MotorShield (0x61); Adafruit_StepperMotor * myMotor3 = AFMS2.getStepper (-200, 1); Adafruit_StepperMotor * myMotor4 = AFMS2.getStepper (-200, 2); Adafruit_MotorShield AFMS3 = Adafruit_MotorShield (0x62); Adafruit_StepperMotor * myMotor5 = AFMS3.getStepper (-200, 1); Adafruit_StepperMotor * myMotor6 = AFMS3.getStepper (-200, 2); Adafruit_MotorShield AFMS4 = Adafruit_MotorShield (0x63); Adafruit_StepperMotor * myMotor7 = AFMS4.getStepper (-200, 1); Adafruit_StepperMotor * myMotor8 = AFMS4.getStepper (-200, 2); LiquidCrystal lcd (1, 11, 9, 10, 12, 13); // Pinos digitais aos quais o lcd está conectado // Constantes // // pino para a linha de crédito (-) do validador de notas const int billValidator = 22;
// Variables /
/ registrando a duração do pulso (milissegundos) de longa duração sem sinal;
// mantendo o total de dólares registrados int dollarCounter = 0; configuração vazia () {lcd.begin (16, 1); // define as coordenadas do texto lcd lcd.print ("Insert $ 1 Only"); // Definir texto Serial.begin (9600); // Inicializa as portas seriais para comunicação. Serial.println ("Teste escalonado!"); // Digite Out Stepper Test no monitor serial para que saibamos qual motor de passo está pressionado. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); meuMotor1-> definirSpeed (100); // Define a velocidade do motor na qual eles irão rodar myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Configurações de pinos para validador de notas e botão pinMode (billValidator, INPUT); // Define o billaccepter
// Inicializa as portas seriais para comunicação. Serial.begin (9600); Serial.println ("Aguardando dólar…"); } void loop () {{duração = pulseIn (billValidator, HIGH); // Começa a procurar o comprimento do pulso recebido do aceitador de notas if (duration> 12000) // Valor que deve ser ultrapassado para ser validado como um dólar processado e autêntico {// Count dollar dollarCounter ++; // Verificando a compreensão de Serial.print ("Dólar detectado. / N Total:"); // Exibe a nova contagem de dólares Serial.println (dollarCounter); // faz um loop para esperar até que um botão seja pressionado while (duration> 12000) {char key = keypad.getKey (); // conecta o keyoad e começa a ver qual está pressionado if (key! = NO_KEY) {// estará procurando a tecla pressionada Serial.println (key); // permite-nos saber qual foi pressionado no monitor serial} {if (key == '1') {// Se a tecla 1 for pressionada, faça o seguinte: int keyPressed = key - '1'; myMotor8-> etapa (580, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor8-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta para o início do código de loop}
if (key == '2') {// Se a tecla 2 for pressionada, faça o seguinte: int keyPressed = key - '2'; myMotor7-> step (400, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor7-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta ao início do código de loop} if (key == '3') {// Se a tecla 3 for pressionada, faça o seguinte: int keyPressed = key - '3'; myMotor6-> step (400, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor6-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta ao início do código de loop} if (key == '4') {// Se a tecla 4 for pressionada, faça o seguinte: int keyPressed = key - '4'; myMotor5-> step (180, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor5-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta ao início do código de loop} if (key == '5') {// Se a tecla 5 for pressionada, faça o seguinte: int keyPressed = key - '5'; myMotor4-> step (6900, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor4-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta ao início do código de loop} if (key == '6') {// Se a tecla 6 for pressionada, faça o seguinte: int keyPressed = key - '6'; myMotor3-> step (400, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor3-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta ao início do código de loop} if (key == '7') {// Se a tecla 7 for pressionada, faça o seguinte: int keyPressed = key - '7'; myMotor7-> step (400, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor7-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta ao início do código de loop} if (key == '8') {// Se a tecla 8 for pressionada, faça o seguinte: int keyPressed = key - '8'; myMotor8-> etapa (400, FORWARD, DOUBLE); // Inicia o motor e gira 350 graus na direção para frente. myMotor8-> release (); // Libera o motor do estado de se manter no lugar. Retorna; // Volta para o início do código de loop}}}}}} >>
Recomendado:
Máquina de venda automática DIY: 8 etapas
Máquina de venda automática DIY: Há três anos, comecei a estudar em uma faculdade técnica de eletrônica. Um dos fatos que me surpreendeu na época foi a quantidade de fumantes, pois nos intervalos, metade dos alunos saía das paredes da escola para descarregar suas emoções depois
Mini máquina de venda automática controlada por Arduino: 9 etapas
Mini Vending Machine Controlada Arduino: Esta é a nossa máquina de venda automática, que vende três barras de chocolate divertidas de snickers. As dimensões gerais são de cerca de 12 " x 6 " x 8 ". Esta máquina de venda automática é controlada por um arduino, com placa de ensaio e um servo motor
Detector de mentiras + máquina de venda automática: Com Arduino Leonardo: 6 etapas
Detector de mentiras + máquina de venda automática: Com o Arduino Leonardo: este detector de mentiras não é o seu detector de mentiras normal, é um detector de mentiras que tem uma máquina de venda ligada a ele. Basicamente, é assim que funciona. No início, o jogador irá apertar um botão que dará partida na máquina, e antes da mentira
Máquina de venda automática Servo Arduino: 8 etapas
Máquina de venda automática servo Arduino: esta máquina de venda automática contém três barras de tênis divertidas e venderá uma de cada vez usando o Arduino Uno e um servo motor
Máquina de venda automática -- Distribuidor de doces -- Arduino Bluetooth controlado -- Faça você mesmo: 11 etapas (com imagens)
Máquina de venda automática || Distribuidor de doces || Arduino Bluetooth Controlado || Faça você mesmo: Neste instrutível, mostro como construir uma máquina de venda automática usando um Arduino. COMENTAR O QUE VOCÊ ACHA SOBRE ESTE INSTRUÍVEL, PARA QUE POSSO APRIMORAR EM MEUS INSTRUTIVOS ADICIONAIS dê uma olhada no tutorial em vídeo para um melhor entendimento da enti