Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Máquina expendedora de snacks con tecnología Arduino

Componentes y suministros

Arduino UNO
Debería usar Arduino Mega en su lugar, para obtener más IO.
× 1
Sensor Shield
× 1
Motor DC 6V incluye rueda
× 3
Sensor infrarrojo (reflectante) o seguidor de línea, utilizado para la detección de productos
× 3
Sensor de proximidad (electromagnético), utilizado para el sensor de monedas número 1
× 1
Sensor de interuptor de distancia (infrarrojo / optoacoplador), utilizado para el sensor de monedas número 2
× 1
Fuente de alimentación de 6 V para motor de CC
× 1
Retransmisión (genérico)
4 interruptores de relé
× 1
LCD (Nokia 5110 LCD)
× 1
LED (genérico)
LED blanco
× 2
Botón pulsador
Rojo, amarillo y verde
× 3

Aplicaciones y servicios en línea

Arduino IDE
Solidworks
o cualquier creador de modelos 3D

Acerca de este proyecto

Introducción

Hola, saludos desde Indonesia.

Esta máquina expendedora de snacks es mi proyecto final. En realidad, este proyecto se terminó a fines de 2015.

El objetivo de este proyecto es crear una máquina expendedora, impulsada por un microcontrolador arduino, utilizando "cualquier componente barato y fácil de conseguir" disponible en la tienda local.

Este video a continuación es el video de prueba final de la máquina expendedora de bocadillos, desde la prueba de pago / moneda, la selección de productos y la entrega del producto.

Entonces, esto es lo que hice para lograr esos objetivos:

Paso 1:bosqueja el concepto

Primero piensa en el concepto .

Este boceto es mi primera idea de lo que podría construir. Será una máquina expendedora de bocadillos, que aceptará monedas como pago y usará una caja acrílica.

Elija y desarrolle su concepto , intente pensar en cualquier cosa, cualquier escenario, cualquier condición.

Intenta dibujar todo, no te preocupes si tu dibujo es feo, mira en serio mi dibujo. :D

El momento adecuado para pensar en lo impensable es incluso antes de que el proyecto comience.

Paso 2:crea un modelo 3D

Quizás este paso no sea necesario para todas las personas, pero para mí y para este proyecto es crucial.

Creo modelo de SolidWorks. Y me refiero a un modelo realmente completo. Necesito determinar las dimensiones del producto, en este caso, un paquete de bocadillos. El tamaño de las monedas aceptadas, el tamaño de las monedas rechazadas, el tamaño de la ranura para monedas, el tamaño de la rampa de monedas, el tamaño del botón pulsador, el tamaño de casi todo. Este paso incluye comparar, seleccionar y medir el tamaño del microcontrolador Arduino utilizado. Qué sensor usé, o posiblemente use en el futuro, dónde colocarlo, cuál es la dimensión y los tamaños, adónde van las monedas aceptadas, también pienso en dónde debería colocar una pantalla LCD monocromática (no es necesario pero insisto).

Y finalmente, aún en la creación de modelos de SolidWorks, no olvide crear agujeros para tornillos, para cada pieza.

Las cajas están hechas de material acrílico y se cortan con el método de corte por láser. Es por eso que creo un modelo lo más detallado y preciso que puedo, porque cuanto más preciso sea mi modelo, más precisión obtendré.

Paso 3:diseña una ranura para monedas

Para filtrar monedas, primero estoy usando la dimensión de la moneda. Al diseñar la ranura de monedas, puedo determinar qué tamaño de monedas se permite ingresar a la máquina .

Luego, con el segundo filtro, determino qué tamaño de moneda se permite aceptar y rodar hacia el portamonedas .

Porque al usar la fuerza de la gravedad, si los tamaños de las monedas (diámetro) son más pequeños que la longitud de la rampa / pista de monedas, caerán y serán rechazadas.

  • En la imagen de arriba, la moneda de la izquierda no ingresará a la moneda de la ranura.
  • La moneda del medio caerá y será rechazada.
  • La moneda de la derecha es una moneda aceptada, desciende hasta el portamonedas.

Este es un video cuando estoy haciendo algunas pruebas de monedas, le mostrará cómo funciona este método.

Paso 4:prepare y pruebe todos los componentes

Prepara tu arduino, prepara todo lo necesario.

Pruebe cada componente, botón LCD, relé, LED, simplemente intente combinar todo y aprenda lógica y codificación diferentes. Asegúrese de saber lo que hace. Intente probar hasta el límite, encuentre el límite, pero no lo rompa.

Por qué usar una resistencia, qué sucede cuando esto o aquello, por qué la lectura del sensor no es estable, qué valor lee realmente el sensor, etc. Hice la prueba y descubrí que la lectura del sensor de proximidad "no está limpia", es necesario agregar una resistencia a cálmate.

El sensor de infrarrojos funciona muy mal y no es normal bajo el sol directo (lo sé antes, pero nunca sentí el impacto, hasta ahora). La solución es usar cinta adhesiva para aislar alrededor de la parte del receptor del sensor de infrarrojos, como se muestra en la imagen.

Paso 5:construye un mecanismo en espiral

Esta es una de las partes más importantes de la máquina expendedora, el mecanismo de entrega.

Estoy usando un mecanismo en espiral, con alambre de aluminio (alambre de 2 mm de diámetro), moldeado manualmente en espiral con la ayuda de un tubo de PVC de 9 cm de diámetro.

Los alambres en espiral se atan a una rueda con bridas. Cuando el motor de CC está encendido, la rueda gira y el cable en espiral gira.

Las espirales giratorias en realidad están convirtiendo el movimiento giratorio en lineal de producto.

Paso 6:cree un mecanismo de identificación de monedas

La primera imagen es el sensor de monedas número 1, que usa un sensor de proximidad o un sensor de electroimán de inducción. Cuando la moneda aceptada pasa este sensor, activará arduino para comenzar a contar el tiempo (en milisegundos).

  si el sensor1 se activó, comience a contar el tiempo en milisegundos  

Y cuando se acepta el sensor de moneda número 2, un sensor interupter de distancia, arduino dejará de contar el tiempo y obtendrá el tiempo necesario para que esa moneda en particular viaje del sensor número 1 al sensor número 2.

  si el sensor2 se activa, deje de contar el tiempo en milisegundos. "tiempos de viaje" es xxx milisegundos  

No utilice demasiados imanes, ya que se atascará y hará que la moneda se detenga en medio de la rampa de monedas. No queremos que eso suceda, porque necesitamos contar el tiempo para cada moneda, para obtener "tiempos de viaje" entre el sensor número 1 y el número 2. Estos "tiempos de viaje" (en milisegundos), se utilizan para arduino para determinar el valor de moneda aceptada.

  si los "tiempos de viaje" son mayores o iguales a "yyy" milisegundos, entonces su moneda "aaa", de lo contrario es "bbb"  

Este es un video cuando pruebo este método, identificando monedas usando un imán.

Paso 7:cree un mecanismo de detección de productos

Estoy usando 3 sensores de infrarrojos para la detección de productos cuando su caída es empujada / movida por un mecanismo en espiral.

Cuando el producto cae, activará el sensor de infrarrojos y enviará una señal de apagado al motor de CC (a través de un relé).

Este video muestra cómo funciona la detección de productos en esta máquina expendedora.

Paso 8:uso de la pantalla LCD para obtener información

En este proyecto, hago que la pantalla LCD muestre información (en moneda indonesia) sobre el valor aceptado de la moneda, cada vez que el cliente ingresa una moneda. También mostrará cuánto saldo total de la moneda aceptada y otras instrucciones generales sobre cómo operar esta máquina paso a paso.

Cuando la máquina se enciende

  • Pantalla PRINCIPAL ="Ingrese una moneda".
  • SI se ingresó la moneda ="Mostrar el valor de la moneda y el saldo total".
  • SI la moneda no ingresó =mantenga la pantalla PRINCIPAL.

Después de que la moneda se haya identificado correctamente

  • SI el saldo total es mayor o igual que el precio del producto ="Seleccione el producto".
  • SI el saldo total es menor que el precio del producto ="Ingrese más moneda".

Después de que el mecanismo en espiral se enciende (se produce la entrega)

  • SI el mecanismo de detección del producto se activó ="Gracias", transacción realizada.
  • Retrasar y volver a la pantalla PRINCIPAL.

Paso 9:finalización y prueba

Finalmente, máquina expendedora de bocadillos terminada.;)

Después de aproximadamente 3 meses, estoy listo para hacer una prueba final a esta máquina, desde la prueba de pago / moneda, la selección del producto y la entrega del producto.

Este es el video de prueba final de la máquina expendedora de bocadillos:

Espero que este proyecto ayude a algunos de ustedes, tal vez les dé algo de inspiración o idea, sobre cómo construir y crear la próxima máquina expendedora impulsada por Arduino.

Paso 10:margen de mejora

Algunas ideas para mejorar esta máquina expendedora de bocadillos:

  • Agregue un mecanismo de cambio de monedas.
  • Acepte papel moneda.
  • Acepte bitcoins y / o pagos digitales.
  • Muestre el stock del producto en la pantalla LCD.
  • IoT:notifique a través de Internet cada vez que se realice una transacción.
  • IoT:notifique cuando el stock de productos esté vacío o bajo, etc.

Agradecimiento especial:ITENAS Bandung, Departamento de Ingeniería Mecánica.

Código

  • Código fuente de la máquina expendedora de aperitivos
Código fuente de la máquina expendedora de aperitivos Arduino
Este es el código fuente que utilicé para este proyecto de máquina expendedora
 byte constante SIAP =0; byte constante KOIN_MASUK1 =1; byte constante KOIN_MASUK2 =2; byte constante KOIN_MASUK3 =3; byte constante KOIN_MASUK4 =4; byte constante KOIN_MASUK4 =4; byte constante KOIN_MASUK4 =4; const byte KOIN_MASUK6 =6; const byte KOIN_MASUK7 =7; const byte SALDO_500 =8; const byte SALDO_500500 =9; const byte SALDO_500500500 =10; const byte SALDO_500_500500500 =11; const byte SALDO_500_500st001 byte =12 const byte SALDO_500st001000 byte =12 const001 byte SALDO SALDO_5001000500 =14; byte const SALDO_50010001000 =15; byte const SALDO_5005001000 =16; byte const SALDO_1000 =17; byte const SALDO_10001000 =18; byte const SALDO_1000500 =19; byte const SALDO_1000500500 =20; byte const SALDO_1000500500 =20; byte const =KO_1IN_KEL000 22; byte state =SIAP; const float jeda_waktu =876; unsigned long time1; unsigned long time2; unsigned long time3; unsigned long time4; unsigned long time5; unsigned long time6; unsigned long time7; #define PIN_SCE 7 # define PIN_RESET 6 # definir PIN_DC 5 # definir PIN_SDIN 4 # definir PIN_SCLK 3 # definir LCD_C LOW # definir LCD_D HIGH # definir LCD_X 84 # definir LCD_Y 48 byte constante estático ASCII [] [5] ={{0x00, 0x00, 0x00, 0x00, 0x00} // 20, {0x00, 0x00, 0x5f , 0x00, 0x00} // 21! , {0x00, 0x07, 0x00, 0x07, 0x00} // 22 ", {0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #, {0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $, { 0x23, 0x13, 0x08, 0x64, 0x62} // 25%, {0x36, 0x49, 0x55, 0x22, 0x50} // 26 &, {0x00, 0x05, 0x03, 0x00, 0x00} // 27 ', {0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (, {0x00, 0x41, 0x22, 0x1c, 0x00} // 29), {0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *, {0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +, {0x00, 0x50, 0x30, 0x00, 0x00} // 2c,, {0x08, 0x08, 0x08, 0x08, 0x08} // 2d -, {0x00, 0x60, 0x60, 0x00, 0x00} // 2e., {0x20, 0x10, 0x08, 0x04, 0x02} // 2f /, {0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0, {0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1, {0x42, 0x61, 0x51, 0x49, 0x46} // 32 2, {0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3, {0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4, {0x27, 0x45, 0x45, 0x45, 0x39} // 35 5, {0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6, {0x01, 0x71, 0x09, 0x05, 0x03} // 37 7, {0x36, 0x49, 0x49, 0x49, 0x36} // 38 8, {0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9, {0x00, 0x36, 0 x36, 0x00, 0x00} // 3a:, {0x00, 0x56, 0x36, 0x00, 0x00} // 3b; , {0x08, 0x14, 0x22, 0x41, 0x00} // 3c <, {0x14, 0x14, 0x14, 0x14, 0x14} // 3d =, {0x00, 0x41, 0x22, 0x14, 0x08} // 3e>, { 0x02, 0x01, 0x51, 0x09, 0x06} // 3f? , {0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @, {0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A, {0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B, { 0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C, {0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D, {0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E, {0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F, {0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G, {0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H, {0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I, {0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J, {0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K, {0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L, {0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M, {0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N, {0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O, {0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P, {0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q, {0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R, {0x46, 0x49, 0x49, 0x49, 0x31} // 53 S, {0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T, {0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U, {0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V, {0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W, {0x63, 0x14, 0 x08, 0x14, 0x63} // 58 X, {0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y, {0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z, {0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [, {0x02, 0x04, 0x08, 0x10, 0x20} // 5c  ¥, {0x00, 0x41, 0x41, 0x7f, 0x00} // 5d], {0x04, 0x02, 0x01, 0x02 , 0x04} // 5e ^, {0x40, 0x40, 0x40, 0x40, 0x40} // 5f _, {0x00, 0x01, 0x02, 0x04, 0x00} // 60 `, {0x20, 0x54, 0x54, 0x54, 0x78 } // 61 a, {0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b, {0x38, 0x44, 0x44, 0x44, 0x20} // 63 c, {0x38, 0x44, 0x44, 0x48, 0x7f} / / 64 d, {0x38, 0x54, 0x54, 0x54, 0x18} // 65 e, {0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f, {0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g, {0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h, {0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i, {0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j, {0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k, {0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l, {0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m, {0x7c , 0x08, 0x04, 0x04, 0x78} // 6e n, {0x38, 0x44, 0x44, 0x44, 0x38} // 6f o, {0x7c, 0x14, 0x14, 0x14, 0x08 } // 70 p, {0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q, {0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r, {0x48, 0x54, 0x54, 0x54, 0x20} / / 73 s, {0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t, {0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u, {0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v, {0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w, {0x44, 0x28, 0x10, 0x28, 0x44} // 78 x, {0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y, {0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z, {0x00, 0x08, 0x36, 0x41, 0x00} // 7b {, {0x00, 0x00, 0x7f, 0x00, 0x00} // 7c | , {0x00, 0x41, 0x36, 0x08, 0x00} // 7d}, {0x10, 0x08, 0x08, 0x10, 0x08} // 7e â † �, {0x78, 0x46, 0x41, 0x46, 0x78} // 7f â † '}; void LcdWrite (byte dc, byte de datos) {digitalWrite (PIN_DC, dc); escritura digital (PIN_SCE, BAJO); shiftOut (PIN_SDIN, PIN_SCLK, MSBFIRST, datos); digitalWrite (PIN_SCE, HIGH);} void LcdCharacter (carácter char) {LcdWrite (LCD_D, 0x00); para (int índice =0; índice <5; índice ++) {LcdWrite (LCD_D, ASCII [carácter - 0x20] [índice]); } LcdWrite (LCD_D, 0x00);} void LcdClear (void) {para (int index =0; index  Siap"); LcdInitialise (); LcdClear (); LcdString ("Masukkan Koin Rp500 atau Koin Rp1000 @ Rp2000"); retardo (500);} bucle vacío () {int x =analogRead (14); if (estado ==SIAP) {si (x> =33) {estado =KOIN_MASUK1; tiempo1 =milis (); tono (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("inicio wkt"); }} else if ((state ==KOIN_MASUK1) &&(! (digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK1)) {unsigned long diff1 =(millis () - time1 ); Serial.println ("snsr2,"); Serial.println ("detener wkt"); Serial.print ("jeda wkt:"); Serial.print (diff1); Serial.println ("ms"); if (diff1> jeda_waktu) {estado =SALDO_1000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp1000 Tambah Koin Koin Rp1000"); escritura digital (13, ALTA); Serial.println ("koin =Rp 1000, Saldo:Rp1000"); tono (2, 4200, 299); } más si (diff1  =33) {estado =KOIN_MASUK2; tiempo2 =milis (); tono (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("inicio wkt"); }} else if ((state ==KOIN_MASUK2) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK2)) {unsigned long diff2 =(millis () - time2); Serial.println ("snsr2,"); Serial.println ("detener wkt"); Serial.print ("jeda wkt:"); Serial.print (diff2); Serial.println ("ms"); if (diff2> jeda_waktu) {estado =SALDO_5001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp1500 Tambah Koin Koin Rp1000"); tono (2, 4200, 299); Serial.println ("koin =Rp 1000, Saldo:Rp1500"); } más si (diff2  =33) {estado =KOIN_MASUK3; tiempo3 =milis (); tono (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("inicio wkt"); }} else if ((state ==KOIN_MASUK3) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK3)) {unsigned long diff3 =(millis () - time3); Serial.println ("snsr2,"); Serial.println ("detener wkt"); Serial.print ("jeda wkt:"); Serial.print (diff3); Serial.println ("ms"); if (diff3> jeda_waktu) {estado =SALDO_5005001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2000"); tono (2, 4200, 799); } más si (diff3  =33) {estado =KOIN_MASUK4; tiempo4 =milis (); tono (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("inicio wkt"); }} else if ((state ==KOIN_MASUK4) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK4)) {unsigned long diff4 =(millis () - time4); Serial.println ("snsr2,"); Serial.println ("detener wkt"); Serial.print ("jeda wkt:"); Serial.print (diff4); Serial.println ("ms"); if (diff4> jeda_waktu) {estado =SALDO_5005005001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); tono (2, 4200, 799); } más si (diff4  =33) {estado =KOIN_MASUK5; tiempo5 =milis (); tono (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("inicio wkt"); }} else if ((state ==KOIN_MASUK5) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK5)) {unsigned long diff5 =(millis () - time5); Serial.println ("snsr2,"); Serial.println ("detener wkt"); Serial.print ("jeda wkt:"); Serial.print (diff5); Serial.println ("ms"); if (diff5> jeda_waktu) {estado =SALDO_50010001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); tono (2, 4200, 799); } más si (diff5  =33) {estado =KOIN_MASUK6; tiempo6 =milis (); tono (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("inicio wkt"); }} else if ((state ==KOIN_MASUK6) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK6)) {unsigned long diff6 =(millis () - time6); Serial.println ("snsr2,"); Serial.println ("detener wkt"); Serial.print ("jeda wkt:"); Serial.print (diff6); Serial.println ("ms"); if (diff6> jeda_waktu) {estado =SALDO_10001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2000"); tono (2, 4200, 799); } más si (diff6  =33) {estado =KOIN_MASUK7; tiempo7 =milis (); tono (2, 4200, 40); Serial.println ("snsr1,"); Serial.println ("inicio wkt"); }} else if ((state ==KOIN_MASUK7) &&((digitalRead (13)))) {if ((digitalRead (12)) &&(state ==KOIN_MASUK7)) {unsigned long diff7 =(millis () - time7); Serial.println ("snsr2,"); Serial.println ("detener wkt"); Serial.print ("jeda wkt:"); Serial.print (diff7); Serial.println ("ms"); if (diff7> jeda_waktu) {estado =SALDO_10005001000; LcdInitialise (); LcdClear (); LcdString ("diterima Saldo =Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); tono (2, 4200, 799); } más si (diff7  Siap"); }}} 

Piezas y carcasas personalizadas

Esta es la pantalla de impresión de mi modelo de SolidWorks 3D para este proyecto.

Proceso de manufactura

  1. Máquina expendedora
  2. Monitoreo de CO2 con sensor K30
  3. ¿Qué tan alto eres?
  4. Sensor capacitivo de huellas dactilares con Arduino o ESP8266
  5. Torre de sensores de nubes Arduino
  6. Pistola de agua con sensor de movimiento
  7. Máquina expendedora inversa (RVM)
  8. Mini radar con Arduino
  9. Precio de maquinaria usada
  10. ¿Qué es una máquina expendedora de leche?
  11. ¿Qué es una máquina expendedora de fideos?