Мазмуну:

ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 кадам
ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 кадам

Video: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 кадам

Video: ATTiny-RAT, ATTINY Powered Mini Lightfollower: 3 кадам
Video: How to use the Atmel ATTINY10 Microcontroller 2024, Ноябрь
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

Салам достор, Мен акыркы көрсөтмөлөрүмдү жарыялагандан бери бир топ убакыт өттү. Менин башымда азыр көп нерселер болуп жатат, бирок мен ATTiny-Series чиптери менен "алгачкы кадамдарымды" бул кыска нускамалуу түрдө документтештирүүгө жетиштим.

Мен кээ бир ATTINY85 үлгүлөрүн заказ кылдым, анткени мен аларды сынап көргүм келди:-) (баары нерселерди текшерүүнү жакшы көрүшөт, туурабы?) Андан кийин мен блокнотума кээ бир ойлорду тарта баштадым. Чынын айтсам, мен жасаган биринчи нерсе - бул светодиоддун жарыгы. Мен дагы DHT22 жана SoftwareSerial менен температура жана нымдуулукту каттоону сынап көрдүм. DHT китепканалары негизинен 16 МГц саатка ылайыкташкандыктан, бул өтө татаал болгон (эгер сиз ушундай бир нерсе кылууну пландап жатсаңыз, ички саатты кантип өлчөө керек экенин текшериңиз). Бирок мен сизге күлкүлүү болгон нерсени көрсөтүүнү чечтим. BTW: Мен сизге чиймелеримдин бирин жүктөдүм, бул Рембрандт эмес, бирок бул (чынында) келесоо идеяны кантип кагазга түшүргөнүмдү көрсөтөт: -П.

Мен бул долбоорду мүмкүн болушунча арзаныраак кармоо үчүн жатып калган нерселерди гана колдондум (мен үчүн). Бул кичинекей жоруктун натыйжасы 10-15 $ тегерегиндеги сонун кичинекей "лампочка роботу" (мен үчүн 3 $:-P)

Ошентип, эгер сиз өзүңүздү ATTINYге кызыктырсаңыз, андан ары окуңуз.

BTW: начар англисче кечирим сурайм (мен эне тилинде сүйлөгөн эмесмин)

1 -кадам: ATTiny & Tools & Materials менен баштоо

ATTiny & Tools жана материалдар менен баштоо
ATTiny & Tools жана материалдар менен баштоо
ATTiny & Tools жана материалдар менен баштоо
ATTiny & Tools жана материалдар менен баштоо
ATTiny & Tools жана материалдар менен баштоо
ATTiny & Tools жана материалдар менен баштоо
ATTiny & Tools жана материалдар менен баштоо
ATTiny & Tools жана материалдар менен баштоо

Баштоо үчүн сизге эмне керек:

- ATTiny85 чипи

- Arduino UNO же ушуга окшош

-бир нече секиргич зым же ATTINY программисти бар тактайча же Arduino үчүн өзүңүз үчүн программист-калкан жасаңыз (тиркелген сүрөттөрдү караңыз, avdweb.nlдин схемасы бар). Мен муну дагы жасадым жана мен чындыгында бактылуумун, мен жасаган жалгыз өзгөртүү-бул ATTinyx4 сериясына розетка кошконум (сүрөттү жана пинут диаграммаларын караңыз).

- Arduino IDE (бул жерден алыңыз)

- ArduinoIDE үчүн жабдык файлдары (жүктөп алып, орнотуңуз)

Info-Link to the playgrounddirect Мен колдонгон github файлдарына шилтеме

- Ардуинону ISO эскизи катары UNOго жүктөңүз (бул сиздин программистиңиз болот)

- бул нускаманы аткарыңыз (https://highlowtech.org/) же ушул көрсөтмө (ardutronix тарабынан) жана "ирмөө" эскизин байкап көрүңүз (PIN номерин өзгөртүп, ATTINY сүрөтүн шилтеме катары колдонуңуз! сизге алдын ала жазылган ATTINY LED) жана ~ 220Ohm резистору)

Бардыгын текшерүү үчүн чакан панель орнотууларын жасаңыз. Эгер сиз баарын туура кылсаңыз, LED жаркылдайт жана сиз барууга даярсыз

КУРАЛДАР

- Паяльник- кээ бир ширеткичтер- кичинекей сым кесүүчү- дремел же башка айлануучу курал (ПХБны кесүү үчүн!)- кээ бир ысык клей- пинцет- зымдар

МАТЕРИАЛДАР

- PCB прототиптештирүү (~ 4cmx6cm муну жасайт)- 2x LDR- 5x 10k Resistor (2x LDRs жана 2x BE транзисторлору, 1x LED)- 1x 330Ohm Resistor (1x NEOPIXELS)- 2x LDR- 1x LED (сиздин түсүңүз тандоо, дөңгөлөктүн ордуна)- 3x NEOPIXEL WS2812- 2x Транзистор (BD137 же окшош)- 2x Диод (1N4001 же окшош)- 2x микромотор (мис. Hubsan микро квадрокоптеринен)- 1x ATTINY85 + милдеттүү эмес (сунушталат) 8PIN IC Socket- 1x 1s LIPO (мен эски RC-тик учактан 140Ач колдондум)- кээ бир түйүндөр/розеткалар- shrinktube (LDR корпусу)

Келгиле, аппараттык жабдууларды куруу менен…

2 -кадам: Аппараттык

Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык

Эгерде мен тиркелген схемаларга көз чаптырсаңыз, аппараттык жабдыктарды орнотуу абдан жөнөкөй. Ошентип, эгерде сиз схемаларды окуп, ширеткичти колдоно алсаңыз, анда бул трюктун жарымы. Фотолорду карап көрүңүз, мен сизге бир нече жазууларды коштум.

Мен ПХБны кесүү боюнча план бербейм, сиз өзүңүздүн дизайныңызды чыгарууга эркиндигиңиз бар (чыгармачыл болуңуз жана бизге кичинекей ботторуңузду көрсөтүңүз). Бардык электрондук компоненттердин жайгашуусу сизге да байланыштуу. Мен тараптан кээ бир кеңештер:

Моторлорду так тегиздөөгө аракет кылыңыз (бурчту караңыз!) Биз дөңгөлөктүн ордуна мотор валын гана колдонобуз. (бул азыраак энергияны сарптайт) Мен моторлорду батарейканын астына коюуну сунуштайм (салмагы) жана LEDди жупташкан алдыңкы бөлүгүндө (45 ° бурчта) LDRлерди колдонууну сунуштайм (мен бул айкалышты шишикти болтурбоо үчүн колдонууга аракет кылып жатам. тесттер керек).

Дагы мен батарейканы оңой эле жоготуп албаш үчүн бир аз кошуу/өчүрүү секиригин жасоону сунуштайм.

Эгер түшүнүксүз бир нерсе болсо же суроолорунуз болсо, жөн эле менден сураңыз. Бул кичинекей проекттен тезисти жасоого эч кандай мажбурлоо болбойт.

3 -кадам: Программалык камсыздоо

Программалык камсыздоо
Программалык камсыздоо
Программалык камсыздоо
Программалык камсыздоо

Бардык жүктөө жана орнотуунун 1чи ADAFRUIT Neopixel Library

Бул жерде менин негизги сүрөттөмөлөрү бар кодум (мен эскиз файлын дагы коштум). Мен ар бир кадамга комментарий берген жокмун, анткени бул керек эмес деп ойлойм.

Эскизди ATTiny85ке жүктөңүз жана жаңы оюнчугуңуз менен көңүл ачыңыз

"Инсандык" функциясы үчүн идеялар + балким код-мисалдар абдан жакшы кабыл алынат:-)

Эгерде кандайдыр бир суроолор болсо, тартынбастан сураңыз.

Менин кыска үйрөткүчүм жана ATTINYs дүйнөсүнө болгон кичинекей саякатым сизге жакты деп ишенем.

/* ATTINY85-Rata жөнөкөй ATTINY85 менен иштөөчү lightfollowing роботу. 2.0 версиясы, Авер Маркус */

#кошуу

#кошуу

// моторлор

#define LMOTOR 0 #define RMOTOR 1 // LEDs #dexinePIXELPIN 2 #depine NUMPIXEL 3 // LDRs #define LLDR A2 #define RLDR3

// otherint emo = 0; калибрлүү калибр; логикалык эмостат; long oldmillis; // аныктоо NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL, PIXELPIN, NEO_GRB + NEO_KHZ800);

жараксыз орнотуу ()

{// жогорку деңгээлдеги саат, эгер сиз кээ бир убакыт көйгөйлөрүнө туш болосуз (неопиксел lib 16 МГц үчүн жазылган) #if аныкталган болсо (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif

// PINMODE pinMode (LMOTOR, OUTPUT); pinMode (RMOTOR, OUTPUT); pinMode (LLDR, INPUT); pinMode (LLDR, INPUT); // пикселдерди баштоо PIXEL.begin (); PIXEL.show (); кечигүү (500); // баштоо үчүн (int i = 0; i

боштук цикл ()

{if (lightfollow () == 1) {left (); } else if (lightfollow () == 2) {right (); } if if (lightfollow () == 0) {forward (); } эмоция (); }

int lightfollow () {

int treshold = 14; int result = 0; солго сүзүү = 0; оңго сүзүү = 0; int үлгүлөрү = 1; // үчүн LDRs окуу (int j = 0; j <үлгүлөр; j ++) {

сол = сол + analogRead (LLDR); оң = оң + (analogRead (RLDR)*калибри);

}

// натыйжаны эсепте (жарык кайсы тараптан келет?)

if ((сол/үлгүлөр)> ((оң/үлгүлөр)+трешолд)) {натыйжа = 2;}

эгерде ((сол/үлгүлөр) <((оңдо/үлгүлөр) -башка)) {натыйжа = 1;}

башка {натыйжа = 0;}

кайтаруу натыйжасы; } 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 (); }

боштук солго () {

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

укук жараксыз () {

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

// бул кийинки эксперименттер үчүн, ага кичинекей инсандыкты берүүгө аракет кылам:-) Мен эмне кыла алаарымды сынап жатам, бирок азырынча жакшы идеялар жок.

бош эмоция () {int emotimer = 2500; int узактыгы = туш келди (250, 750); if (millis () - oldmillis> эмотимер) {oldmillis = millis (); emo = туш келди (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 (); тыныгуу; 2 -жагдай: PIXEL.setPixelColor (1, PIXEL. Color ((255), (0), (0)))); PIXEL.show (); тыныгуу; 3 -жагдай: PIXEL.setPixelColor (1, PIXEL. Color ((0), (255), (0)))); PIXEL.show (); тыныгуу; демейки: PIXEL.setPixelColor (1, PIXEL. Color (туш келди (0, 255), туш келди (0, 255), туш келди (0, 255))); PIXEL.show (); тыныгуу; }} башка {PIXEL.setPixelColor (1, PIXEL. Color (25, 0, 0)); PIXEL.show (); }}

Сунушталууда: