Мазмуну:

TheSUN, Arduino Powered Дизайн дубал сааты: 6 кадам (сүрөттөр менен)
TheSUN, Arduino Powered Дизайн дубал сааты: 6 кадам (сүрөттөр менен)

Video: TheSUN, Arduino Powered Дизайн дубал сааты: 6 кадам (сүрөттөр менен)

Video: TheSUN, Arduino Powered Дизайн дубал сааты: 6 кадам (сүрөттөр менен)
Video: Design Engineering project .. 2024, Июль
Anonim
TheSUN, Arduino Powered Дизайн дубал сааты
TheSUN, Arduino Powered Дизайн дубал сааты
TheSUN, Arduino Powered Дизайн дубал сааты
TheSUN, Arduino Powered Дизайн дубал сааты
TheSUN, Arduino Powered Дизайн дубал сааты
TheSUN, Arduino Powered Дизайн дубал сааты

Дагы салам Инструкторлор!:-P

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

Менимче, көбүбүз, мага окшоп, ошол жагымдуу LED тилкелерин (NEOPIXEL LED деп да аташат) жактырабыз. Сиз аларды ADAFRUITтен ала аласыз. Башка сатуучулар дагы ушундай продукцияны беришет. ADAFRUITSте жеткиликтүү китепкана бар - GitHub (мени чыкылдатыңыз), анын ичинде кээ бир коддор. Ошентип коддоо түз болушу керек …

Мен ошол НЕОПИКСЕЛДЕРДЕ бир ойду көрдүм, бул кичинекей нерселер менен эмне кыла алам?

  • LED-матрицалуу дисплей? -> Татаал жана мен аны колдонбойм (учурда)
  • X-Mas Lighting? -> Бул мезгилге туура келет, бирок бирин сатып алуу арзаныраак болмок:-P
  • саат? -> Эмнеге болбосун! Бирок ал стилдүү жана салттуу болбошу керек

Ошентип, келгиле, дубал саатын жасайбыз.

Эгерде биз кол саатыбызды жакшылап карасак (эгерде сизде мага окшош аналог болсо) бизде 12 саат 60 мүнөт бар экенин байкайбыз (үмүт кылабыз). Демек, бизге 60 даректүү LED керек, phu! Эгерде биз 60 LED' / метр менен тилке алсак, диаметри ~ 318 мм (радиусу = масштабы / (2*Π)) алабыз, бул сөзсүз өтө чоң.

Чындык, эгер кимдир бирөөдөн убакыт сурасаңыз, эч ким 3төн 2 мүнөт өткөнүн айтпайт! Сиз жооп катары "Саат 5тен 3кө чейин" аласыз. Андыктан эмне үчүн биз бардыгын 5 мүнөткө кыскартпашыбыз керек? Бул үчүн бизге 12 гана LED керек болот, бул диаметри 63.6 мм. Биз ошондой эле аларга өзүнчө түс берүү менен сааттарды жана мүнөттөрдү айырмалай алабыз. Биз дагы "жок" бир мүнөттүк кадамдарды 4 LEDдин кошумча тилкеси (же бир даректүү LED) менен камсыз кыла алабыз.

МЫНА ПЛАН! Келгиле, мен баарын кантип кылганын карап көрөлү. Адаттагыдай эле мен материалдардын тизмесин/мыйзам долбоорун жана аны кантип куруу боюнча көрсөтмөлөрдү берем.

Эгерде сиз ойлосоңуз, швейцариялыктар гана сонун сааттарды жасай алышат, сиздин ката экениңизди далилдейбиз (кечиресиз Швейцария:-P)

1 -кадам: Дизайн жана материалдарды тандоо

Дизайн жана материалдарды тандоо
Дизайн жана материалдарды тандоо
Дизайн жана материалдарды тандоо
Дизайн жана материалдарды тандоо

Дизайн:

Эгерде биз дагы аналогдук саатыбызды/саатты жакшылап карасак, анда биз айлана биз билген 12 * 30 ° кадамдарга бөлүнгөнүн көрөбүз, бул үчүн LED-тилкеси үчүн 63.6мм керек. Ошентип, кандайдыр бир жол менен түтүктүн тегерегине тегиздөө мүмкүн болушу керек. Мен акрил айнекти колдонууну чечтим, анткени ал жагымдуу көрүнөт жана ага LED жарыгын капкактап коюу мүмкүн жана айнектин ар бир кемчилигинде жарык чачырап кетиши мүмкүн. Келгиле, айталы: көп кошулмалар жарыктын көбүрөөк чачырашына алып келет! Дал ушул биз каалайбыз. Андыктан оюңуздагы куралдарды алып, чыгармачыл болуңуз:-)

Эгерде сиз менин BoM-листиме жана саатка берген ысымыма кайрылсаңыз, мен дизайн сыяктуу күндү тандап алдым. Мен бардык акрил бөлүктөрүн немис сатуучусунан E-Bayден алдым (шилтеме БМде берилген). Менин дизайным үчүн сага керек болот:

  • акрил жер табак, тунук жоондугу = 6мм, диаметри = 300мм
  • акрил орто табак, тунук жоондугу = 3мм, диаметри = 150мм
  • акрил алдыңкы табак, атлас, жоондугу = 3мм, диаметри = 90мм
  • акрил түтүк, тунук, сырткы диаметри = 64мм (биз LED тилкеси менен бир аз оңдообуз керек дегенди билдирет)
  • акрил таяк, тунук, диаметри = 5мм (бул биздин устундар болот); Акрил таякчалары бар, ичинде көбүкчөлөр бар, мен аларды сунуштайм, бирок менде жок.
  • акрил клей

Электроника (Fritzing файлдарына кайрылыңыз):

  • Arduino mini (же окшош)
  • 1 даректүү LED тилкеси (саат жана 5 мүнөт үчүн 12 LED)
  • 4 даректүү LED (бир мүнөт)
  • 2 330Ohm резисторлору
  • 1 1000µF конденсатор
  • 1 кубаттуулук (5V/500mA)
  • бир RTC DS-1307 (милдеттүү эмес!)
  • Bluetooth модулу (милдеттүү эмес! Ооба, сиз BT жана Android смартфону аркылуу убакытты белгилей аласыз)

Эгерде сиз өзүңүздөн сурасаңыз, менин банкомдо эмне үчүн MAX485 чиптери бар? Жооп, мен жасай турган үйдөгү автоматташтыруу системасы менен саатты синхрондоштургум келет (эч качан кайра жазгы саатты коюуга туура келбейт:-P). Мен муну кийинки блогумда сүрөттөп берем бир нече жума/ай.

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

2 -кадам: акрил бөлүктөрүн даярдоо

Акрил бөлүктөрүн даярдаңыз
Акрил бөлүктөрүн даярдаңыз
Акрил бөлүктөрүн даярдаңыз
Акрил бөлүктөрүн даярдаңыз
Акрил бөлүктөрүн даярдаңыз
Акрил бөлүктөрүн даярдаңыз

Куралдар:

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

  • hobbyknife
  • ченегич
  • темир араа
  • кыскычтар
  • кол машыгуу
  • бургулай алат, диаметри 65 мм
  • металл бургулоо комплекси
  • кичинекей металл файл
  • акрил клей

Баштайлы:

Жер плитасын алып, планга тегиздеңиз, андыктан тегеректин борборун ала аласыз. Эми колуңузга бургуңузду бургуңуз менен алыңыз жана үстүнкү плитанын борборунда тешик жасаңыз (сырткы айланасы ~ 2-3мм тереңдикте). Бул LED тилкесин жер плитасына (LED диаметри ~ 10мм, диаметри 5мм гана устундар) чөгүп, аларды устундар менен тегиздөө үчүн (1 -сүрөттү караңыз).

Эми бизге темир уста, ченегич жана акрил түтүк керек. Жөн гана аны бөлүктөргө бөлүп, корпусту (түтүктү) 40 мм узартууну чечтим (сүрөт 2). Эми темир устаны кайра кармап, түтүктүн бир жагына кичинекей рабет жасаңыз, аны металл делосу менен жылмакай кылыңыз. Зымдар ошол жерден чыгат;-) (3-сүрөттү караңыз)

Клейдин убактысы… Ортоңку табакты (d = 150мм) жана алдыңкы табакты (каныккан) алыңыз. Кайра планда тууралап, орто табактын ортосуна бир аз клей коюп, алдыңкы табакты тегиздеңиз жана клей бир аз катуулайт. Мен колдонгон клей жеңил катуулантат жана ал 2-3 саатка чейин созулушу мүмкүн, андыктан кыскычты колдонгуңуз келет… (3 жана 4-сүрөт)

Түтүктү жердин табагына жабыштыруу үчүн да ушундай кылыңыз, рабетанын табакка караганын жана биринчи LED (12 саат) болушун каалаган жерге тегизделгенин текшериңиз.

Ал катканга чейин күтө туруңуз!

Биз азыр 2 бөлүктү (букмекердик) планга тизип, 4 мүнөттүк тешиктерибизди бура алабыз (диаметри 5 мм же сиз тандаган LED диаметри; аны өтө эле басым менен жай бургулаңыз). Болжол менен 8-9 мм тереңдикте бургулаңыз. Сак болгула, каныккан табак абдан морттук жана эгер сиз тереңдикке бургуласаңыз, тормоз алат. Сиз азыр аларды жабыштыра аласыз же мага окшоп, жердин табагына коркунуч туудуруп, аны бурама менен бекитип коюңуз.

Дагы, клей катууланганга чейин күтө туруңуз. Азыр устундарды тегиздеп, плитага чаптаңыз. (сүрөт 6) Ойлоп көрсөңүз … клей катып калганча күтө туруңуз:-) Келгиле, электроникага өтөлү …

3 -кадам: Электроника

Электроника
Электроника
Электроника
Электроника
Электроника
Электроника
Электроника
Электроника

Куралдар:

  • кандооч
  • solderwire
  • хобби бычагы
  • PCB прототипинин кичинекей бөлүгү
  • эмальданган зым же сиз каалаган башка зым
  • ысык клей

Мен бирдиктүү светодиод менен иштедим. Эгерде сиз эмальданган зымды колдонсоңуз, анда лакты ширетүүдөн мурун кырып алууну унутпаңыз. Сиз бул үчүн хобби бычагын колдонсоңуз болот, аларды чыңдаңыз, flikto.de боюнча pinout менен сүрөттү карай аласыз. DOUT кийинки LEDда DINге барат! (2 -сүрөттү караңыз) Андан кийин сиз LED тилкесин 4 элементтен бөлүп аласыз, ар биринде 3 светодиод бар. Эсиңизде болсун, бизде 63.6мм LED тилкеси жана 64мм сырткы диаметри бар, андыктан аны устундарга такай келтирүү үчүн "кошумча узундукка" муктажбыз. Аны сүрөткө окшош эмальдалган зым менен байлаңыз. "күч байлоочу" катары жана LED тилкелеринин компоненттерин камтыйт (эки 330Ohm резисторлору жана 1000µF Capacitor, сүрөт 7). Бул үчүн Fritzing Image караңыз.

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

Сиз бир эле LED үчүн жасай аласыз (акыры күзгүгө), жөн гана ысык клей кошуп, аларды алдын ала тешилген жерлерге басыңыз.

Ардуиного азырынча зым тартпаңыз, биз BT туташуусу үчүн аппараттык серияны колдонобуз, андыктан программаны сүрөттөгөн кийинки кадамдарды текшериңиз.

4 -кадам: Код

Code
Code
Code
Code

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

Arduino IDE жана китепканаларды жүктөп алыңыз. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

IDEди орнотуңуз жана китепканаларды library-folderге киргизиңиз. Тиркелген INO файлын ачыңыз жана аны arduinoго жүктөңүз. Бул жерде сүрөттөлгөн код бирдей, бирок кошумча комментарийлер менен! Эгер сиз бардыгын туура кылган болсоңуз, анда азыр "ботанимацияны" көрө аласыз. Убакытты сериялык монитордун үстүнөн коюуга болот. Жөн гана @"hour"/"min"/"sec" териңиз, мисалы. @10/33/00 (10:33).

Код менен ойногондон тартынбаңыз … Бул жерде сизге коддун кыскача сүрөттөмөсү берилет (RTC жок орнотуу!)

АНЫКТАМАЛАР:

#аныктоо PIN 6 // Сааттын LED тилкеси #аныктоо MINPIN 5 // Singelminute LED #аныктоо NUMPIXELS 12 // Пикселдердин саны #мининумиксельдерин аныктоо 4 // Бир мүнөттүк пикселдердин саны #define BAUDRATE 115200 // Baudrate, дал келиши керек BT модулунун ылдамдыгы #define utch '@' // баштоо BYTE of TimeSync

int timeset = 0; // жүктөө убактысы bootint delayval = 20дан кийин коюлган болсо, сактоо үчүн желек; // өчүрүү анимациясынын кечигүүсү int clocktimer = 10000; // time refresh int timebright = 250; // сааттын жарыктыгы Strip int mtimebright = 50; // singelminint инициализациясынын жарыктыгы = 0; // желек жүктөөдөн кийин clearpixels функциясын чакыруу үчүн; int oldahour = 0; // дүкөндүн мурунку aminute hourint; int oldamin = 0; // мурунку мүнөттү жаңылоо үчүн экинчи секундада сактайт; int aday; int amonth; int ayear; int mmin; tmElements_t tm;

// 2 NeoPixel LED массивдерин орнотуу (NAME = TYPE (ПИКСЕЛДЕРДИН САНЫ, КАНДАЙ ПИН, FORMAT RGB or GRB, FREQ); Көбүрөөк маалымат үчүн Adafruit жетектемесине кайрылыңыз.); Adafruit_NeoPixel минпикселдери = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

ЖАЙГАШУУ:

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

Serial.begin (BAUDRATE); Wire.begin (); // Баштапкы тилкелер, баары OFFpixels.begin (); minpixels.begin (); piksel.show (); minpixels.show ();

// Бир аз animationSerial.println жасаңыз ("SUNRISE"); күндүн чыгышы (); кечигүү (1000); Serial.println ("SUNSET"); күндүн батышы (); piksel.show (); Serial.println ("ДАЯР"); }

ЦИКЛ:

void loop () {// timesync while текшерүү while (Serial.available ()> 0) {char c = Serial.read (); if (c == utch) // эгер сапта @ бар болсо, келе жаткан байттарды /инсттерди {readtime () окуңуз; }} // светодиоддорду баштоо, жүктөө анимациясын тазалоо

if (initialize == 0) {clearpixels (); баштоо = 1; }

саат = саат ();

aminute = мүнөт (); эгерде (timeset == 1 || timeset == 0) // бул жерден сиз Убакыт коюлганын текшере аласыз, Timeset = FALSE болсо, программаны бул жерден токтото аласыз, жөн гана "|| timeset == 0"!

{

эгер (oldamin <aminute || oldahour баарын ӨЧҮРГӨН болсо, жаңы убакытты көрсөт {clearpixels (); ClockDisplay ();}}}

Саатты көрсөтүү:

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

oldahour = ahour;

олдамин = аминут; int xhour, xmin;

эгер (ahour> = 12) {xhour = ahour-12; // бизде 24сааттык дисплейде 12 гана LED бар} башка {xhour = ahour; } // аны 5 мүнөт кадамга масштабдоо xmin = (aminute /5); if (oldamin <aminute) {oldamin = aminute; clearpixels (); } // бөлүмдүн калган бөлүгүн алыңыз, singelmin LED mmin = (aminute % 5); // модулдук оператор, мис. 24 % 5 = 4! абдан пайдалуу: -Pixels.setBrightness (timebright); piksel.setPixelColor (xmin, piksel. Color (5, 125, 255)); // бул жерде түстөрдү өзгөртө аласыз! айланасында ойноңуз! piksel.setPixelColor (xhour, piksel. Color (255, 50, 0)); piksel.show ();

// minsfor сингелин көрсөтүү (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (м, пикселдер Түсү (255, 255, 0)); minpixels.show (); }} Сериядан TIMEинформациясын окуп, иштеп чыгыңыз

void readtime () // эгерде бизде алдыңкы "@" келе жаткан маалыматтарды иштетип, TIME Lib үчүн убакытты сактаса {

ahour = Serial.parseInt (); aminute = Serial.parseInt (); секунда = Serial.parseInt (); aday = Serial.parseInt (); amonth = Serial.parseInt (); ayear = Serial.parseInt (); Serial.println ("TIMESET"); Serial.print (ahour); Serial.print (":"); Serial.println (aminute); setTime (ahour, aminute, asecond, aday, amonth, ayear); }

Баарын тазалоо

void clearpixels () // дисплейди жаңыртуу үчүн ар бир пикселди өчүрүп коюңуз {

piksel.begin (); minpixels.begin (); үчүн (int i = 0; ipixels.setPixelColor (i, пикселдер. Түсү (0, 0, 0)); minpixels.setPixelColor (i, пикселдер. Түсү (0, 0, 0)); пикселдер.шоу (); минпикселдер.show ();}}

5 -кадам: Android APP жана BT Connection

Android APP жана BT Connection
Android APP жана BT Connection
Android APP жана BT Connection
Android APP жана BT Connection
Android APP жана BT Connection
Android APP жана BT Connection

Эгерде сиз мурунку кадамдарды ийгиликтүү аткарсаңыз, анда азыр BT модулуңузду туташтырсаңыз болот. (Бодраттар дал келгенине ишендиңиз деп үмүттөнөм). TX & RX линияларын өтүүнү унутпаңыз:-)

Колдонмону жүктөп алып, орнотуңуз, BT кнопкаңыз менен жупташтырыңыз, колдонмону баштаңыз, донглге туташыңыз жана убакытты мобилдик телефонуңуз менен шайкештириңиз. APP негизинен биз мурун кандай кылсак, ошондой кылат. Бул жөн эле @hh/mm/ss/dd/mm/YYYY системалык убактысынан жөнөтүлөт, мен дагы APPInventor AIA File жана кийинки кадам боюнча түшүндүрмө бердим (кызыккандар үчүн).

6 -кадам: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor колдонууга абдан оңой жана мындай жөнөкөй программа үчүн күч -аракет жумшоо керек.

Эгер сиз жаңы долбоорду түзсөңүз, анда ДИЗАЙНЕР экранында өзүңүздү таба аласыз. (сүрөт 1) Бул жерде биз мындан ары колдонуу үчүн үстөлдөрдү, баскычтарды, сенсорлорду жана башка элементтерди кошобуз. Биздин учурда бизге керек:

  • стол (бардык элементтерди тегиздөө үчүн)
  • тизме тандоочу (биз туташкан BT түзмөгүн тандоо үчүн)
  • баскыч (BT үстүнөн Убакытты отко)
  • кээ бир энбелгилер (чыныгы убакытты жана датаны көрсөтүү)
  • саат сенсору (убакытты жаңыртуу)
  • Bluetooth кардар сенсору (туташуу)

Аларды кошуу сүйрөө жана түшүрүү сыяктуу оңой! 2 -сүрөттө BLOCKS экранында "APP" жөнүндө жалпы маалыматты көрө аласыз. Ооба, бул жерде негизинен бардык "сыйкырчылыктар" болот. Үстүнкү жагында мен Убакытты жана Күндү сактоо үчүн кээ бир өзгөрмөлөрдү түздүм. Жогорку сол жактагы биринчи блок жупташкан BT түзмөктөрүнүн тизмеси менен тизме тандоо элементин баштайт. экинчи блок, биз мурда тандалган элемент менен эмне кылууну чечебиз. Ооба, биз ага туташкымыз келет.

Эгерде сиз кийинки Блокту жакшылап карасаңыз, анда биз түзө алабыз, эгер BT статусу "туташкан" болсо, BT билдирүүсү. Биз SerialMonitorго мурун эле тергенбиз. Сол жактагы акыркы блок бизге убакытты көрсөтүү үчүн алдыңкы нөлдөрдү берет (мис. 01:08). Оң жактагы сиз биздин акыркы блокту таба аласыз, бул жерде биз саат элементин колдонобуз. Бул жерде биз өзгөрмөлөрдү жаңыртып, цифралар процедурасы менен бириктиребиз, бул ар бир 1000 мс болот (демейки жөндөө, аны дизайнер режиминде өзгөртүү) жана жаңыртылган баалуулуктарды энбелгиси менен көрсөтүңүз. Бул жөн гана кыскача сүрөттөмө, бирок APPInventor чындыгында ушунчалык оңой:-) Балким, коомдо iOS же WindowsPhone үчүн программалык камсыздоону жазууну каалаган бирөө бардыр. (сонун болмок)

Менин көрсөтмөм сизге жакты деп үмүттөнөм! Жаңы дубал саатыңыз менен көңүл ачыңыз! Балким, сиз аны сүйгөн адамыңызга белек кылгыңыз келет (Анын X-Mas сезону):-)

Ал эми кандайдыр бир суроолор болсо, мага тартынба!

Салам жана Merry X-Mas.

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