Tabla de contenido:

Mini seguidor de luz potenciado ATTiny-RAT, ATTINY: 3 pasos
Mini seguidor de luz potenciado ATTiny-RAT, ATTINY: 3 pasos

Video: Mini seguidor de luz potenciado ATTiny-RAT, ATTINY: 3 pasos

Video: Mini seguidor de luz potenciado ATTiny-RAT, ATTINY: 3 pasos
Video: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Mes de julio
Anonim
Mini seguidor de luz activo ATTiny-RAT, ATTINY
Mini seguidor de luz activo ATTiny-RAT, ATTINY
Mini seguidor de luz activo ATTiny-RAT, ATTINY
Mini seguidor de luz activo ATTiny-RAT, ATTINY
Mini seguidor de luz activo ATTiny-RAT, ATTINY
Mini seguidor de luz activo ATTiny-RAT, ATTINY
Mini seguidor de luz activo ATTiny-RAT, ATTINY
Mini seguidor de luz activo ATTiny-RAT, ATTINY

Hola amigos, Ha pasado un tiempo desde que publiqué mi último instructivo. Bueno, hay muchas cosas dando vueltas en mi cabeza en este momento, pero logré documentar mis "primeros pasos" con la serie de chips ATTiny en este breve instructivo para ti.

Pedí algunas muestras de ATTINY85 solo porque quería probarlas:-) (a todos les encanta probar cosas, ¿no?). Después de eso, comencé a dibujar algunas ideas en mi cuaderno. Para ser honesto, lo primero que hice fue hacer parpadear un LED que, como siempre, es un buen comienzo para verificar si su configuración / cadena de herramientas está funcionando. También probé un registrador de temperatura y humedad con DHT22 y SoftwareSerial. Eso fue complicado porque las bibliotecas DHT son principalmente para reloj de 16Mhz (si planea hacer algo así, verifique cómo preescalar el reloj interno). Pero decidí mostrarte algo que es, bueno, simplemente más divertido. BTW: Subí uno de mis dibujos para ti, no es un Rembrandt, pero te mostrará cómo conseguí esta idea (realmente) estúpida en una hoja de papel: -PAG.

Solo usé cosas que tenía por ahí para mantener este proyecto lo más barato posible (para mí). El resultado de esta pequeña aventura es un pequeño y agradable "robot seguidor de luz" por alrededor de 10-15 $ (3 $ para mí:-P)

Entonces, si está interesado en ATTINY, solo lea más.

Por cierto: perdón por mi mal inglés (no soy un hablante nativo)

Paso 1: Introducción a ATTiny y herramientas y materiales

Introducción a ATTiny y herramientas y materiales
Introducción a ATTiny y herramientas y materiales
Introducción a ATTiny y herramientas y materiales
Introducción a ATTiny y herramientas y materiales
Introducción a ATTiny y herramientas y materiales
Introducción a ATTiny y herramientas y materiales
Introducción a ATTiny y herramientas y materiales
Introducción a ATTiny y herramientas y materiales

Qué necesitará para comenzar:

- un chip ATTiny85

- un Arduino UNO o similar

- panel de control con un cable de puente o un programador ATTINY o haga usted mismo un escudo de programador para Arduino (consulte las imágenes adjuntas, hay un esquema de avdweb.nl). También hice este y estoy muy contento con él. La única modificación que hice fue que agregué un enchufe para la Serie ATTinyx4 (consulte la imagen y los diagramas de pines).

- el IDE de Arduino (consígalo aquí)

- los archivos de hardware para ArduinoIDE (descargarlos e instalarlos)

Enlace de información al patio de recreo Enlace directo a los archivos github que utilicé

- cargue el Arduino como boceto de ISP en UNO (este será su programador)

- siga esta instrucción (https://highlowtech.org/) o este instructable (por ardutronix) y pruebe el boceto "parpadeante" (modifique el PIN Nr. use la imagen ATTINY como referencia! Necesitará el ATTINY preflash un LED y una resistencia de ~ 220 ohmios para eso)

Haga una pequeña configuración de tablero para verificar todo. Si ha hecho todo bien, el LED parpadeará y estará listo para comenzar.

INSTRUMENTOS

- Soldador - algo de soldadura - un cortador de alambre pequeño - un dremel u otra herramienta rotativa (¡solo para cortar la PCB!) - algo de pegamento caliente - pinzas - cables

MATERIALES

- PCB prototipado (~ 4cmx6cm lo hará) - 2x LDR- 5x Resistencia 10k (2x para los LDRs y 2x para los transistores BE, 1x LED) - 1x Resistencia 330Ohm (1x NEOPIXELS) - 2x LDR- 1x LED (color de tu opción, en lugar de la rueda giratoria) - 3x NEOPIXEL WS2812- 2x Transistor (BD137 o similar) - 2x Diodo (1N4001 o similar) - 2x micromotor (por ejemplo, de un microcuadricóptero Hubsan) - 1x ATTINY85 + opcional (recomendado) 8PIN Zócalo IC - 1x 1s LIPO (utilicé un 140Ah de un viejo helicóptero RC) - algunos cabezales de clavija / enchufes - tubo retráctil (carcasa LDR)

Procedamos construyendo el hardware …

Paso 2: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Si echas un vistazo a los esquemas que adjunto, la configuración del hardware es bastante simple. Entonces, si eres capaz de leer esquemas y usar un soldador, eso es la mitad del truco. También eche un vistazo a las fotos, agregué algunas notas para usted.

No proporciono un plan para cortar la PCB, tienes la libertad de hacer tu propio diseño (sé creativo y muéstranos tus Tiny Bots). La colocación de todos los componentes electrónicos también depende de ti. Algunas pistas de mi lado:

Intente alinear los motores con precisión (¡cuidado con el ángulo!), Solo usamos el eje del motor en lugar de ruedas. (esto consumirá menos energía) Recomiendo colocar los motores debajo de la batería (peso) y usar los LDR en la parte delantera (en ángulo de 45 °) emparejados con un LED (estoy tratando de usar esta combinación para evitar obstáculos, además se necesitan pruebas).

Además, recomiendo hacer un pequeño puente de encendido / apagado para que la batería no se pierda tan fácilmente.

Si hay algo que no está claro o si tiene alguna pregunta, simplemente pregúnteme. No costará mucho hacer una tesis de este pequeño proyecto.

Paso 3: software

Software
Software
Software
Software

Primero descargue e instale ADAFRUIT Neopixel Library

Aquí está mi código con algunas descripciones importantes (también agregué el archivo de boceto). No comenté cada paso porque creo que no es necesario.

Sube el boceto a tu ATTiny85 y diviértete con tu nuevo juguete

Las ideas para la función de "personalidad" + tal vez ejemplos de código son muy bienvenidas:-)

Si tiene alguna pregunta, no dude en preguntar.

Espero que hayan disfrutado de mi breve instructivo y el pequeño viaje al mundo de ATTINYs.

/ * ATTINY85-Rata simple robot de seguimiento de luz alimentado ATTINY85. Versión 2.0, de Auer Markus * /

#incluir

#incluir

// motores

#define LMOTOR 0 #define RMOTOR 1 // LEDs #define PIXELPIN 2 #define NUMPIXEL 3 // LDRs #define LLDR A2 #define RLDR A3

// otherint emo = 0; calibre de flotación; emostato booleano; long oldmillis; // define NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

configuración vacía ()

{// reloj de mayor escala, de lo contrario, encontrará algunos problemas de sincronización (la biblioteca de neopixel está escrita para 16MHz) #if definido (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #terminara si

// PINMODE pinMode (LMOTOR, SALIDA); pinMode (RMOTOR, SALIDA); pinMode (LLDR, ENTRADA); pinMode (LLDR, ENTRADA); // inicializar píxeles PIXEL.begin (); PIXEL.show (); retraso (500); // secuencia de inicio para (int i = 0; i

bucle vacío ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {right (); } else if (lightfollow () == 0) {forward (); } emoción (); }

int lightfollow () {

int umbral = 14; int resultado = 0; flotar a la izquierda = 0; flotar a la derecha = 0; int samples = 1; // leer LDR para (int j = 0; j <samples; j ++) {

izquierda = izquierda + analogRead (LLDR); derecha = derecha + (analogRead (RLDR) * calib);

}

// calcula el resultado (¿de qué dirección viene la luz?)

if ((izquierda / muestras)> ((derecha / muestras) + umbral)) {resultado = 2;}

else if ((izquierda / muestras) <((derecha / muestras) -treshold)) {resultado = 1;}

else {resultado = 0;}

devolver resultado; } void forward () {// Forward analogWrite (LMOTOR, 230); analogWrite (RMOTOR, 230); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

vacío a la izquierda () {

// IZQUIERDA analogWrite (LMOTOR, 150); analogWrite (RMOTOR, 255); PIXEL.setPixelColor (0, PIXEL. Color (0, 0, 255)); //PIXEL.setPixelColor(1, PIXEL. Color (75, 0, 0)); PIXEL.setPixelColor (2, PIXEL. Color (0, 100, 0)); PIXEL.show (); }

void right () {

// DERECHA analogWrite (LMOTOR, 255); analogWrite (RMOTOR, 150); PIXEL.setPixelColor (0, PIXEL. Color (0, 100, 0)); PIXEL.setPixelColor (2, PIXEL. Color (0, 0, 255)); PIXEL.show (); }

// esto es para más experimentos, tratando de darle a este un poco de personalidad:-) Estoy probando lo que podría ser capaz de hacer, pero todavía no tengo buenas ideas.

emoción vacía () {int emotimer = 2500; int duración = aleatorio (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = aleatorio (1, 4); } if (millis () - oldmillis> duración) {emostate =! emostate; } if (emostate == true) {switch (emo) {caso 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); rotura; caso 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); rotura; caso 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); rotura; predeterminado: PIXEL.setPixelColor (1, PIXEL. Color (aleatorio (0, 255), aleatorio (0, 255), aleatorio (0, 255))); PIXEL.show (); rotura; }} más {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Recomendado: