Table des matières:

Mini suiveur de lumière alimenté ATTiny-RAT, ATTINY : 3 étapes
Mini suiveur de lumière alimenté ATTiny-RAT, ATTINY : 3 étapes

Vidéo: Mini suiveur de lumière alimenté ATTiny-RAT, ATTINY : 3 étapes

Vidéo: Mini suiveur de lumière alimenté ATTiny-RAT, ATTINY : 3 étapes
Vidéo: How to make Simple and Economical Sanitizing Machine fights covid 19 | carona virus IR sensor module 2024, Novembre
Anonim
ATTiny-RAT, Mini Lightfollower alimenté par ATTINY
ATTiny-RAT, Mini Lightfollower alimenté par ATTINY
ATTiny-RAT, Mini Lightfollower alimenté par ATTINY
ATTiny-RAT, Mini Lightfollower alimenté par ATTINY
ATTiny-RAT, Mini Lightfollower alimenté par ATTINY
ATTiny-RAT, Mini Lightfollower alimenté par ATTINY
ATTiny-RAT, Mini suiveur de lumière alimenté par ATTINY
ATTiny-RAT, Mini suiveur de lumière alimenté par ATTINY

Salut les gens, ça fait un moment que j'ai posté mon dernier instructable. Eh bien, il y a beaucoup de choses qui se passent dans ma tête en ce moment, mais j'ai réussi à documenter mes « premiers pas » avec la série de puces ATTiny dans ce court instructable pour vous.

J'ai commandé des échantillons d'ATTINY85 juste parce que je voulais les tester:-) (tout le monde aime tester des choses, non?). Après cela, j'ai commencé à dessiner quelques idées dans mon cahier. Pour être honnête, la première chose que j'ai faite a été de faire clignoter une LED qui est comme toujours un bon début pour vérifier si votre configuration/chaîne d'outils fonctionne. J'ai également essayé un enregistreur de température et d'humidité avec DHT22 et SoftwareSerial. C'était délicat car les bibliothèques DHT sont principalement destinées à une horloge à 16 MHz (si vous envisagez de faire quelque chose comme ça, vérifiez comment pré-échelonner l'horloge interne). Mais j'ai décidé de vous montrer quelque chose de plus drôle. BTW: j'ai téléchargé un de mes dessins pour vous, ce n'est pas un Rembrandt mais il vous montrera comment j'ai mis cette idée (vraiment) stupide sur un morceau de papier: -P.

Je n'ai utilisé que des choses que j'avais qui traînaient pour garder ce projet le moins cher possible (pour moi). Le résultat de cette petite aventure est un joli petit "robot suiveur de lumière" pour environ 10-15$ (3$ pour moi:-P)

Donc, si vous êtes intéressé par ATTINY vous-même, lisez la suite.

BTW: désolé pour mon mauvais anglais (je ne suis pas un locuteur natif)

Étape 1: Premiers pas avec ATTiny & Tools & Materials

Premiers pas avec ATTiny & Tools & Materials
Premiers pas avec ATTiny & Tools & Materials
Premiers pas avec ATTiny & Tools & Materials
Premiers pas avec ATTiny & Tools & Materials
Premiers pas avec ATTiny & Tools & Materials
Premiers pas avec ATTiny & Tools & Materials
Premiers pas avec ATTiny & Tools & Materials
Premiers pas avec ATTiny & Tools & Materials

Ce dont vous aurez besoin pour commencer:

- une puce ATTiny85

- un Arduino UNO ou similaire

- une planche à pain avec un fil de liaison ou un programmeur ATTINY ou créez vous-même un bouclier de programmeur pour Arduino (vérifiez les images ci-jointes, il y a un schéma de avdweb.nl). J'ai aussi fait celui-ci et j'en suis vraiment content. La seule modification que j'ai faite était que j'ai ajouté une prise pour la série ATTinyx4 (voir l'image et les schémas de brochage).

- l'IDE Arduino (obtenez-le ici)

- les fichiers matériels pour l'ArduinoIDE (téléchargez-les et installez-les)

Info-Lien vers le Playground Direct Lien vers les fichiers github que j'ai utilisés

- chargez l'Arduino en tant qu'esquisse ISP sur l'UNO (ce sera votre programmeur)

- suivez cette instruction (https://highlowtech.org/) ou cette instructable (par ardutronix) et essayez le croquis "clignotement" (modifiez le PIN Nr. utilisez l'image ATTINY comme référence ! vous aurez besoin du ATTINY pré-éclairé une LED et une résistance ~ 220Ohm pour cela)

Faites une petite configuration de planche à pain pour tout vérifier. Si vous avez tout fait correctement, la LED clignotera et vous êtes prêt à partir

OUTILS

- Fer à souder- de la soudure- un petit coupe-fil- un dremel ou un autre outil rotatif (juste pour couper le PCB!)- de la colle chaude- une pince à épiler- des fils

MATÉRIAUX

- PCB de prototypage (~4cmx6cm le fera)- 2x LDR- 5x Résistance 10k (2x pour les LDR et 2x pour les transistors BE, 1x LED) - 1x Résistance 330Ohm (1x NEOPIXELS)- 2x LDR- 1x LED (couleur de votre au choix, à la place de la roulette)- 3x NEOPIXEL WS2812- 2x Transistor (BD137 ou similaire)- 2x Diode (1N4001 ou similaire)- 2x micromoteur (par exemple d'un micro-quadcopter Hubsan)- 1x ATTINY85 + en option (recommandé) 8PIN IC Socket- 1x 1s LIPO (j'ai utilisé un 140Ah d'un vieil hélicoptère RC)- quelques pinheads/socks- gaine thermorétractable (boîtier LDR)

Procédons en construisant le matériel…

Étape 2: Matériel

Matériel
Matériel
Matériel
Matériel
Matériel
Matériel

Si vous regardez les schémas que j'ai joints, la configuration matérielle est assez simple. Donc, si vous êtes capable de lire des schémas et d'utiliser un fer à souder, c'est la moitié de l'astuce. Jetez également un œil aux photos, j'ai ajouté quelques notes pour vous.

Je ne fournis pas de plan pour couper le PCB, vous avez la liberté de faire votre propre design (soyez créatif et montrez-nous vos Tiny Bots). Le placement de tous les composants électroniques dépend également de vous. Quelques conseils de mon côté:

Essayez d'aligner les moteurs avec précision (attention à l'angle !) nous n'utilisons que l'arbre moteur au lieu des roues. (cela consommera moins d'énergie) Je recommande de placer les moteurs sous la batterie (poids) et d'utiliser les LDR à l'avant (angle 45 °) couplés à une LED (j'essaie d'utiliser cette combinaison pour éviter les obstacles, plus loin des tests sont nécessaires).

De plus, je recommande de faire un petit cavalier marche/arrêt pour que la batterie ne se perde pas aussi facilement.

Si quelque chose n'est pas clair ou si vous avez des questions, n'hésitez pas à me les poser. Cela ne fera pas grand-chose de faire une thèse de ce petit projet.

Étape 3: Logiciel

Logiciel
Logiciel
Logiciel
Logiciel

Tout d'abord téléchargez et installez ADAFRUIT Neopixel Library

Voici mon code avec quelques descriptions majeures (j'ai également ajouté le fichier de croquis). Je n'ai pas commenté chaque étape car je pense que ce n'est pas nécessaire.

Téléchargez le croquis sur votre ATTiny85 et amusez-vous avec votre nouveau jouet

Idées de fonction "personnalité" + peut-être que des exemples de code sont les bienvenus:-)

S'il y a des questions, n'hésitez pas.

J'espère que vous avez apprécié mon court instructable et le petit voyage dans le monde des ATTINY.

/* ATTINY85-Rata simple robot suiveur de lumière alimenté par ATTINY85. Version 2.0, par Auer Markus */

#comprendre

#comprendre

//moteurs

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

//autreint emo = 0; flotteur calibre; emostate booléen; vieux millis longs; //définir NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel(NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

void setup()

{ // horloge haut de gamme sinon vous rencontrerez des problèmes de synchronisation (la bibliothèque neopixel est écrite pour 16 MHz) #if défini (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #fin si

//PINMODE pinMode(LMOTOR, OUTPUT); pinMode(RMOTOR, SORTIE); pinMode(LLDR, INPUT); pinMode(LLDR, INPUT); //initialise les pixels PIXEL.begin(); PIXEL.show(); retard (500); //startsequence for(int i=0;i

boucle vide()

{ if(lightfollow() == 1) { left(); } else if(lightfollow() == 2) { right(); } else if(lightfollow() == 0) { forward(); } émotion(); }

int suivi de lumière() {

seuil int = 14; résultat int = 0; flotteur à gauche = 0; flotter à droite = 0; échantillons entiers = 1; //lire les LDR pour (int j = 0; j<samples; j++){

gauche = gauche + analogRead(LLDR); droite = droite + (analogRead(RLDR)*calib);

}

//calculer le résultat (de quelle direction vient la lumière ?)

if((gauche/échantillons) > ((droit/échantillons)+seuil)) {résultat = 2;}

else if((gauche/échantillons) < ((droit/échantillons)-treshold)) {résultat = 1;}

else {résultat = 0;}

renvoyer le résultat; } 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(); }

vide à gauche () {

//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(); }

annuler à droite () {

//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(); }

// c'est pour d'autres expériences, en essayant de donner un peu de personnalité à celui-ci:-) je teste ce qui pourrait être capable de faire, mais pas encore de bonnes idées.

void emotion() { int emotimer = 2500; durée int = aléatoire (250, 750); if (millis() - oldmillis > emotimer) { oldmillis = millis(); emo = aléatoire (1, 4); } if (millis() - oldmillis > durée) { emostate = !emostate; } if (emostate == true) { switch (emo) { case 1: PIXEL.setPixelColor(1, PIXEL. Color((255), (255), (255))); PIXEL.show(); Pause; cas 2: PIXEL.setPixelColor(1, PIXEL. Color((255), (0), (0))); PIXEL.show(); Pause; cas 3: PIXEL.setPixelColor(1, PIXEL. Color((0), (255), (0))); PIXEL.show(); Pause; par défaut: PIXEL.setPixelColor(1, PIXEL. Color(random(0, 255), random(0, 255), random(0, 255))); PIXEL.show(); Pause; } } else { PIXEL.setPixelColor(1, PIXEL. Color (25, 0, 0)); PIXEL.show(); } }

Conseillé: