Índice:

ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 etapas
ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 etapas

Vídeo: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 etapas

Vídeo: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 etapas
Vídeo: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Novembro
Anonim
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower
ATTiny-RAT, ATTINY Powered Mini Lightfollower

Oi pessoal, já faz um tempo desde que postei meu último instrutível. Bem, há muitas coisas passando pela minha cabeça agora, mas consegui documentar meus "primeiros passos" com a série ATTiny de chips neste breve instrutível para você.

Encomendei algumas amostras do ATTINY85 só porque queria testá-las:-) (todo mundo adora testar coisas, certo?) Depois disso comecei a desenhar algumas ideias no meu notebook. Para ser honesto, a primeira coisa que fiz foi piscar um LED que é como sempre um bom começo para verificar se sua configuração / conjunto de ferramentas está funcionando. Também experimentei um registrador de temperatura e umidade com DHT22 e SoftwareSerial. Essa foi complicada porque as bibliotecas DHT são principalmente para 16MHz (se você planeja fazer algo assim, verifique como pré-escalonar o relógio interno). Mas eu decidi mostrar a você algo que é, bem, muito mais engraçado. -P.

Eu só usei coisas que tinha por aí para manter este projeto o mais barato possível (para mim). O resultado desta pequena aventura é um pequeno "robô seguidor de luz" por cerca de 10-15 $ (3 $ para mim:-P)

Portanto, se você estiver interessado em ATTINY, leia mais adiante.

BTW: desculpe pelo meu péssimo inglês (não sou falante nativo)

Etapa 1: Primeiros passos com ATTiny e ferramentas e materiais

Primeiros passos com ATTiny e ferramentas e materiais
Primeiros passos com ATTiny e ferramentas e materiais
Primeiros passos com ATTiny e ferramentas e materiais
Primeiros passos com ATTiny e ferramentas e materiais
Primeiros passos com ATTiny e ferramentas e materiais
Primeiros passos com ATTiny e ferramentas e materiais
Primeiros passos com ATTiny e ferramentas e materiais
Primeiros passos com ATTiny e ferramentas e materiais

O que você precisa para começar:

- um chip ATTiny85

- um Arduino UNO ou similar

- abreadboard com algum jumper-wire ou um programador ATTINY ou faça você mesmo um escudo-programador para o Arduino (verifique as fotos anexas, há um esquema de avdweb.nl). Eu também fiz este e estou muito feliz com ele, a única modificação que fiz foi adicionar um soquete para a série ATTinyx4 (veja a foto e os diagramas de pinagem).

- o IDE Arduino (baixe-o aqui)

- os arquivos de hardware para o ArduinoIDE (baixe e instale-os)

Info-Link para o playgrounddirect Link para os arquivos github que usei

- carregue o Arduino como esboço do ISP no UNO (este será o seu programador)

- siga esta instrução (https://highlowtech.org/) ou este instrutível (por ardutronix) e tente o esboço "piscar" (modifique o PIN Nr. use a imagem ATTINY como referência! você vai precisar do ATTINY a LED pré-piscado e um resistor de ~ 220Ohm para isso)

Faça uma pequena configuração da placa de ensaio para verificar tudo. Se você fez tudo certo, o LED piscará e você está pronto para começar

FERRAMENTAS

- Ferro de soldar - alguma solda - um pequeno cortador de arame - uma dremel ou outra ferramenta rotativa (apenas para cortar o PCB!) - um pouco de cola quente - pinças - fios

MATERIAIS

- PCB de prototipagem (~ 4cmx6cm bastará) - 2x LDR- 5x Resistor 10k (2x para os LDRs e 2x para os transistores BE, 1x LED) - 1x Resistor 330Ohm (1x NEOPIXELS) - 2x LDR- 1x LED (cor do seu escolha, em vez do rodízio) - 3x NEOPIXEL WS2812- 2x Transistor (BD137 ou similar) - 2x Diodo (1N4001 ou similar) - 2x micromotor (por exemplo, de um micro-quadricóptero Hubsan) - 1x ATTINY85 + opcional (recomendado) 8PIN Soquete IC - 1x 1s LIPO (eu usei um 140Ah de um velho helicóptero RC) - alguns cabeçotes de pino / soquetes - tubo retrátil (caixa LDR)

Vamos continuar construindo o hardware …

Etapa 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Se você der uma olhada nos esquemas que anexei, a configuração do hardware é bastante simples. Portanto, se você é capaz de ler esquemas e usar um ferro de soldar, isso é metade do truque. Também dê uma olhada nas fotos, adicionei algumas notas para vocês.

Não forneço um plano para cortar o PCB, você tem a liberdade de fazer seu próprio design (seja criativo e nos mostre seus Tiny Bots). A colocação de todos os componentes eletrônicos também depende de você. Algumas dicas do meu lado:

Tente alinhar os motores com precisão (observe o ângulo!), Usamos apenas o eixo do motor em vez das rodas. (isso vai consumir menos energia) Eu recomendo colocar os motores sob a bateria (peso) e usar os LDRs na frente (ângulo de 45 °) emparelhados com um LED (estou tentando usar essa combinação para evitar obstáculos, mais são necessários testes).

Além disso, eu recomendo fazer um pequeno jumper on / off para que a bateria não se perca tão facilmente.

Se houver alguma dúvida ou se você tiver dúvidas, pergunte-me. Não vai adiantar muito fazer uma tese desse pequeno projeto.

Etapa 3: Software

Programas
Programas
Programas
Programas

Primeiro de tudo, baixe e instale ADAFRUIT Neopixel Library

Aqui está meu código com algumas descrições principais (também adicionei o arquivo de esboço). Não comentei cada passo porque acho que não é necessário.

Carregue o esboço em seu ATTiny85 e divirta-se com seu novo brinquedo

Idéias para a função de "personalidade" + talvez exemplos de código são muito bem-vindos:-)

Se houver alguma dúvida, fique à vontade para perguntar.

Espero que tenham gostado do meu curto instrutivo e da pequena viagem ao mundo dos ATTINYs.

/ * ATTINY85-Rata Robô simples movido a luz ATTINY85. Versão 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; float calib; emostate booleano; long oldmillis; // define NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

void setup ()

{// clock upscale, caso contrário, você encontrará alguns problemas de tempo (a lib de neopixel é escrita para 16 MHz) #if definido (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #fim se

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, SAÍDA); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // inicializa os pixels PIXEL.begin (); PIXEL.show (); atraso (500); // sequência inicial para (int i = 0; i

void loop ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {right (); } else if (lightfollow () == 0) {forward (); } emoção (); }

int lightfollow () {

limite interno = 14; resultado int = 0; flutuar para a esquerda = 0; flutuar para a direita = 0; amostras int = 1; // ler LDRs para (int j = 0; j <samples; j ++) {

esquerda = esquerda + leitura analógica (LLDR); direita = direita + (analogRead (RLDR) * calib);

}

// calcule o resultado (de qual direção a luz vem?)

if ((esquerda / amostras)> ((direita / amostras) + limite)) {resultado = 2;}

else if ((esquerda / amostras) <((direita / amostras) -limite)) {resultado = 1;}

senão {resultado = 0;}

resultado de retorno; } 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 (); }

void left () {

// LEFT 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 () {

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

// isto é para mais experimentos, tentando dar a este aqui um pouco de personalidade:-) estou testando o que poderia ser capaz de fazer, mas ainda não tenho boas idéias.

emoção vazia () {int emotimer = 2500; duração interna = aleatória (250, 750); if (millis () - oldmillis> emotimer) {oldmillis = millis (); emo = aleatório (1, 4); } if (millis () - oldmillis> duration) {emostate =! emostate; } if (emostate == true) {switch (emo) {case 1: PIXEL.setPixelColor (1, PIXEL. Color ((255), (255), (255))); PIXEL.show (); pausa; caso 2: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0))); PIXEL.show (); pausa; caso 3: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0))); PIXEL.show (); pausa; padrão: PIXEL.setPixelColor (1, PIXEL. Color (random (0, 255), random (0, 255), random (0, 255))); PIXEL.show (); pausa; }} else {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Recomendado: