Мазмуну:
- Жабдуулар
- 1 -кадам: Идея
- 2-кадам: Кээ бир бинардык-көрүү теориясы
- 3 -кадам: Жумушка кирүү
- 4 -кадам: Компоненттерди тандоо
- 5 -кадам: Схема
- 6 -кадам: PCB макети
- 7 -кадам: 3D Дизайн
- 8 -кадам: Код
- 9 -кадам: Программалоо
- 10 -кадам: ширетүү
- 11 -кадам: Ассамблея
- 12 -кадам: Жыйынтык жана жакшыртуу
Video: Ultimate Binary Watch: 12 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Мен жакында бинардык сааттардын түшүнүгү менен тааныштым жана өзүм үчүн бир саат кура аламбы деп изилдөө жүргүзө баштадым. Бирок, мен бир эле учурда функционалдуу жана саркеч болгон учурдагы дизайнды таба алган жокмун. Ошентип, мен толугу менен нөлдөн баштап өзүмдүн дизайнымды түзүүнү чечтим!
Жабдуулар
Бул долбоордун бардык файлдары:
Arduino коду үчүн китепканаларды GitHubдан бул жерден көчүрүп алсаңыз болот:
M41T62 RTC китепканасы
FastLED китепканасы
LowPower китепканасы
1 -кадам: Идея
Мен жакында эле төмөнкү видеого чалындым:
DIY экилик билек сааты
Жогорудагы видео үйдө жасалган экилик саатты көрсөтөт. Мен андай нерсенин бар экенин билген эмесмин, бирок бинардык сааттар темасында бир нече изилдөөлөрдү жүргүзгөндөн кийин, мен ал жерде ар кандай конструкциялар бар экенин тез түшүндүм! Мен өзүмө өзүм кургум келди, бирок мага жаккан дизайнды таба алган жокмун. Мен тапкан бинардык сааттарда көптөгөн функциялар жок болчу жана өзгөчө жакшы көрүнгөн жок. Ошентип, мен өзүмдү толугу менен нөлдөн баштап долбоорлоону чечтим!
Биринчи кадам менин дизайнымдын критерийлерин түзүү болчу. Мына мен ойлоп таптым:
- Бинардык RGB интерфейси
- Убакытты көрсөтүү (абдан так убакытты сактоо менен)
- Күндү көрсөтүү
- Секундомердин иштеши
- Ойготкучтун иштеши
- Батареянын иштөө мөөнөтү жок дегенде 2 жума
- USB кубаттоо
- Программалык камсыздоо колдонуучу тарабынан оңой жөндөлөт
- Таза жана жөнөкөй дизайн
Бул критерийлер бүтүндөй долбоордун негизи болуп калды. Кийинки кадам сааттын кандай иштешин каалаарымды билүү болду!
2-кадам: Кээ бир бинардык-көрүү теориясы
План жөнөкөй эле. Бинардык саат кадимки саат сыяктуу иштейт, бирок интерфейс бинардык болот, атап айтканда BCD (Binary Coded Decimal). BCD - бул экилик коддоонун бир түрү, анда ар бир ондук сан туруктуу бит саны менен көрсөтүлөт. 0-9га чейинки цифраны көрсөтүү үчүн мага 4 бит керек. Жана стандарт үчүн
шш: мм
убакыт форматы, мага ошол цифрадан 4 керек. Бул мага 16 светодиод менен көрсөтүлө турган жалпы 16 бит керек дегенди билдирет.
BCDде убакытты окуу, ага көнгөндөн кийин, оңой болот. Сааттын астындагы катар эң аз битти билдирет (1) жана үстүңкү сап эң маанилүү бит (8). Ар бир мамычадагы цифраны билдирет
шш: мм
убакыт форматы. Эгерде LED күйүк болсо, сиз бул маанини эсептейсиз. Эгерде LED ӨЧҮК болсо, сиз аны этибарга албайсыз.
Биринчи цифраны окуу үчүн жөн гана биринчи (эң сол жагында) бардык активдештирилген LED диапазондоруна туура келет. Солдон оңго карай башка цифралар үчүн да ушундай кылыңыз. Сиз азыр BCDдеги убакытты окудуңуз!
Бул принцип сааттын калган функциялары үчүн бирдей болот. RGB светодиодун колдонуу ар кандай түстөрдү колдонуу менен ар кандай функцияларды жана режимдерди айырмалоого жардам берет. Түстөр колдонуучу тарабынан тандалат жана каалаган түстөр палитрасына оңой жөнгө салынат. Бул колдонуучуга түшүнбөстүккө жол бербестен, функциялар аркылуу оңой өтүүгө мүмкүндүк берет.
Кийинки кадам блок -схеманы түзүү болчу!
3 -кадам: Жумушка кирүү
Ар кандай типтүү электроника долбоору сыяктуу эле, блок -схема дизайндын алгачкы стадиясында маанилүү бөлүгү болуп саналат. Критерийлерди колдонуп, мен жогорудагы блок -схеманы чогултууга жетиштим. Диаграммадагы ар бир блок чынжырдагы функцияны билдирет жана жебелер функцияларынын байланышын көрсөтөт. Блок -схема толугу менен схеманын кандай иштээрин жакшы түшүнүк берет.
Кийинки кадам блок -схемада ар бир блок үчүн жеке компоненттер боюнча чечим кабыл алууну баштоо болчу!
4 -кадам: Компоненттерди тандоо
Бул схемада көптөгөн компоненттер бар экени белгилүү болду. Төмөндө мен эң негизгилерин тандап алдым жана аларды эмне үчүн тандап алганымды түшүндүрдүм.
Светодиоддор
Бинардык интерфейс үчүн, тандоо кыйла түз эле. Мен дисплей үчүн LED колдонгум келгенин билчүмүн жана мүмкүн болушунча көбүрөөк маалыматты көрсөтүү үчүн алардын 16сы (4 × 4 сеткада) керек экенин түшүндүм. Кемчиликсиз LED үчүн изилдөө учурунда, APA102 келе берди. Бул түстөрдүн кеңири диапазону менен өтө кичинекей (2мм х 2мм) даректүү LED жана салыштырмалуу арзан. Мен алар менен мурда эч качан иштешпеген болсом да, алар бул долбоорго эң ылайыктуу окшойт, ошондуктан мен аларды колдонууну чечтим.
Микроконтроллер
Микроконтроллерди тандоо да абдан жөнөкөй болгон. Мен Atmega328P-AUны өз алдынча тиркемелерде колдонуу менен көп тажрыйбага ээ болдум жана анын өзгөчөлүктөрү менен абдан тааныш элем. Бул Arduino Nano такталарында колдонулган микроконтроллер. Мен, балким, мен колдонгон арзаныраак микроконтроллер бар экенин билем, бирок Atmega328 бардык Arduino китепканаларын толук колдой турганын билүү, аны бул долбоорго тандоодо чоң фактор болгон.
RTC (реалдуу убакыт сааты)
РТКнын негизги талабы тактык болчу. Мен сааттын эч кандай интернет байланышы жоктугун, ошондуктан интернет байланышы аркылуу өзүн өзү кайра калибрлей албасын билчүмүн, колдонуучу аны кол менен кайра калибрлеши керек болот. Ошондуктан, мен убакытты мүмкүн болушунча так кылгым келди. M41T62 RTC мен таба алган эң жогорку тактыкка ээ (± 2ppm, бул айына ± 5 секундга барабар). Жогорку тактыкты I2C шайкештиги менен жана учурдагы керектөөнүн ультра аздыгы менен айкалыштыруу бул РТКны бул долбоор үчүн жакшы тандоо кылды.
DC-DC Boost Converter
DC-DC Boost Converter ICди тандоо чынжырга карап, кандай чыңалуу жана агымдар талап кылынарын түшүнүү менен гана жасалды. Аз чыңалуудагы схеманы иштетүү учурдагы керектөөнү азайтат, бирок мен 4.5В (16МГц чегинде минималдуу микроконтроллердин чыңалуусу) ылдый түшө алган жокмун жана 4.5Вдан (РТЧнын максималдуу чыңалуусу) өтө алган жокмун. Бул мен сунуштаган спецификациянын чегинде компоненттерди иштетүү үчүн чынжырды так 4,5В менен иштетишим керек болчу. Мен схеманын максималдуу ток 250mA ашпасын эсептеп көрдүм. Ошентип, мен талаптарга жооп бере турган жана TPS61220га тез эле чалынып кете турган күчөткүчтү издей баштадым. TPS61220 минималдуу тышкы компоненттерди талап кылды, бир топ арзан жана учурдагы жана чыңалуу талаптарын канааттандыра алды.
Батарея
Батарейка үчүн негизги талап өлчөмү болгон. Батарейканын көлөмү кичине болушу керек, ошондуктан ал көлөмдүү көрүнбөй туруп, сааттын корпусуна батып кетиши мүмкүн. Батарея 20мм × 35мм × 10ммден ашпасын деп ойлодум. Бул өлчөмдөрдүн чектөөлөрү жана 250мА учурдагы талабы менен, батареяларды тандоо LiPo батареялары менен чектелди. Мен колдонууну чечкен Хоббиктен "Turnigy nano-tech 300mAh 1S" батареясын таптым.
Заряддоо IC
Заряддоочуга 1S LiPo батарейкасы менен шайкеш келүүдөн башка өзгөчө талап жок болчу. Мен MCP73831T таптым, ал бир клеткалуу заряддоо тиркемелери үчүн иштелип чыккан толук интеграцияланган заряд контроллери. Анын өзгөчөлүктөрүнүн бири - бул тиркемеде заряддоонун агымын жөнгө салуу жөндөмү, бул тиркемеде абдан пайдалуу деп таптым.
LiPo коргоо
Мен батарейканы коркунучтуу ашыкча заряддан жана ашыкча бошотуу шарттарынан коргоо үчүн чыңалууга жана учурдагы мониторингди киргизгим келди. Мындай мүмкүнчүлүктөрдү берген ICлердин саны чектелүү болчу жана арзан варианттардын бири BQ29700 IC болчу. Бул тышкы компоненттердин минималдуу өлчөмүн талап кылган жана бир клеткалуу LiPo батарейкасы үчүн бардык керектүү коргоону камтыган.
Эми компоненттер тандалып алынгандыктан, схеманы түзүүгө убакыт келди!
5 -кадам: Схема
Altium Designerди колдонуп, мен компоненттин маалымат барагынын ар биринин сунуштарын колдонуу менен жогорудагы схеманы чогулта алдым. Схема аны дагы окумдуу кылуу үчүн ар кандай блокторго бөлүнгөн. Кимдир бирөө бул дизайнды кайра жараткысы келсе, мен маанилүү маалыматтарды камтыган эскертүүлөрдү коштум.
Кийинки кадам схеманы ПХБга коюу болчу!
6 -кадам: PCB макети
PCB макети бул долбоордун эң татаал бөлүгү болуп чыкты. Мен PCB өндүрүшүнүн чыгымдарын минималдуу кармоо үчүн 2 кабаттуу ПХБны колдонууну чечтим. Мен 36мм стандарттык саат өлчөмүн колдонууну чечтим, анткени бул диоддорго абдан жакшы окшойт. Мен ПКБны сааттын корпусуна бекитүү үчүн 1 мм бурама тешиктерди коштум. Максат-бардык компоненттерди (албетте, Светодиоддорду кошпогондо) астыңкы катмарга жайгаштыруу менен таза жана кооз дизайнды сактоо. Мен ошондой эле үстүнкү катмарда көзгө көрүнбөгөн виастарды болтурбоо үчүн абсолюттук минималдуу виаларды колдонууну кааладым. Бул чынжырдын "ызы -чуу" бөлүктөрүн сезгич сигнал издеринен алыс кармоо үчүн бардык издерди бир катмарга багыттоо керектигин билдирет. Мен ошондой эле бардык издерди мүмкүн болушунча кыска сактоого, айланып өтүүчү конденсаторлорду жүктөөгө жакын жайгаштырууга, жогорку кубаттуулуктагы компоненттер үчүн жоон издерди колдонууга жана башкача айтканда, ПХБ дизайнынын жалпы жакшы тажрыйбаларына баш ийүүгө ынандым. Маршрут бир топ убакытты талап кылды, бирок менимче, бул абдан жакшы болду.
Кийинки кадам, саат корпусунун 3D моделин түзүү болду!
7 -кадам: 3D Дизайн
Сааттын корпусу Fusion 360тын жардамы менен өтө кадимки, классикалык сааттын дизайнынан кийин иштелип чыккан. Мен сааттын башка боолорунун көп түрдүүлүгүнө шайкеш келиши үчүн саат боосу үчүн 18 мм стандарттык аралыкты колдонгом. ПХБнын кесилиши 0, 4мм ПХБдан чоңураак, кандайдыр бир өндүрүштүк так эместиктерди канааттандыруу үчүн иштелип чыккан. Мен ПХБны орнотуу үчүн кээ бир бурама постторду жана ПХБны коюу үчүн кичинекей четин коштум. Жарык диоддорунун курч четтери кийимге тыгылып калбашы үчүн, мен ПХБны фем миллиметрден өйдө каратып алгам. Корпустун бийиктиги батарейканын калыңдыгы менен гана аныкталган. Калган корпустар тегеректелген кырлары жана жылмаланган бурчтары менен жакшы көрүнүү үчүн иштелип чыккан. Дизайнды 3D басып чыгарууну достукта кармашым керек болчу, ошондо мен аны эч кандай колдоочу материалсыз 3D басып чыгара алам.
Эми жабдыктар бүткөндөн кийин, программалык камсыздоонун үстүндө иштөө убактысы келди!
8 -кадам: Код
Мен кодду бардык керектүү китепканаларды кошуу менен баштадым. Бул RTC менен байланышуу жана Светодиоддорду айдоо үчүн китепкананы камтыйт. Андан кийин, мен режимдердин ар бири үчүн өзүнчө функцияларды түздүм. Колдонуучу баскычты басуу менен режимди которгондо, программа ошол режимге туура келген функцияны чакырат. Эгерде колдонуучу белгиленген убакыт ичинде бир баскычты баспаса, саат уктап калат.
Уйку режими бардык светодиоддор толугу менен өчкөнгө чейин өчүп бараткандыгы менен көрсөтүлөт. Уйку режимин колдонуу батареянын иштөө мөөнөтүн абдан жогорулатат жана LEDлар колдонулбай турганда өчүп калат. Колдонуучу жогорку кнопканы басуу менен саатты ойгото алат. Ойгонгондо, саат заряддоону талап кылбашы үчүн батарейканын деңгээлин текшерет. Эгерде заряддоо талап кылынса, LEDлер убакытты көрсөтүүдөн мурун бир нече жолу кызыл түстө жаркырап күйөт. Эгерде батарейка критикалык деңгээлден төмөн болсо, анда ал такыр күйбөйт.
Калган убакта программалоо башка режимдерди мүмкүн болушунча интуитивдүү кылып баштады. Бардык режимдерде бирдей иштөө үчүн бир эле баскычка ээ болуу эң интуитивдүү болот деп ойлодум. Бир аз тестирлөөдөн кийин, бул мен ойлоп тапкан баскычтын конфигурациясы:
- Жогорку баскычты басуу: "Дисплей убактысы", "Көрсөтүү күнү", "Секундомер" жана "Ойготкуч" режимдеринин ортосундагы ойгонуу / цикл.
- Жогорку баскычты кармоо: "Убакытты коюу", "Күндү белгилөө", "Секундомерди баштоо" же "Ойготкучту коюу" режимине кириңиз.
- Төмөнкү баскычты басуу: Жарыктыгы жогорулатуу.
- Төмөнкү баскычты кармоо: "Түс тандоо" режимине кирүү.
Колдонуучу "Түстү тандоо" режимине киргенде, LEDлер мүмкүн болгон RGB түстөрүнүн бардыгын айланта баштайт. Колдонуучу анимацияны токтотуп, ошол өзгөчө режимге жаккан түсүн тандай алат (Дисплей убактысы кызыл, Дисплей күнү көк ж. Б.). Түстөр ар кандай режимди айырмалоого жардам берүү үчүн колдонуучу тарабынан оңой ыңгайлаштырылышы керек.
Эми код бүтүп, аны микроконтроллерге жүктөө убактысы келди!
9 -кадам: Программалоо
Бул ширетүү жана чогултуу убактысына аз калды, бирок ага чейин мен микроконтроллерди программалашым керек болчу. Мен бул окуу куралын ээрчидим
Жүктөгүчтү ATmega328P-AU SMDге күйгүзүңүз
кантип жүктөгүчтү күйгүзүү жана программист катары кадимки Arduino Uno менен микроконтроллерди программалоо.
Биринчи кадам "ArduinoISP" мисал кодун жүктөө менен Arduino Uno провайдерине айландыруу болгон. Мен нандын тактайын программалоо розеткасы менен бирге колдонуп, үйрөткүчтөн схеманы байладым. Андан кийин, мен Arduino IDEдеги "Burn Bootloader" басуу менен жүктөгүчтү микроконтроллерге күйгүзө алдым.
Микроконтроллерде жүктөгүч болгондон кийин, мен учурдагы микроконтроллерди Arduino Unoдон алып салдым жана кодду программалоо розеткасындагы микроконтроллерге жүктөө үчүн Arduino Uno тактасын USB катары сериялык адаптер катары колдондум. Жүктөө аяктагандан кийин, мен ширетүү процессин баштасам болот.
Кийинки кадам - бардык компоненттерди чогултуп, аларды чогуу ширетүү!
10 -кадам: ширетүү
Ширетүү процесси эки бөлүккө бөлүнгөн. Адегенде астыңкы катмарды, андан кийин үстүңкү катмарды ширетүү керек болчу.
Мен сааттын ПХБсын скотч менен бир нече прототип тактасынын ортосунда бекиттим. Бул ПХБнын абдан маанилүү болгон ширетүү учурунда жылбай турганын камсыз кылды. Мен андан кийин ширетүүчү трафаретти ПХБнын үстүнө коюп, ширетүүчү паста көп колдонуп, бардык ширетүүчү аянтчаларды жаптым. Мен бардык тетиктерди тиешелүү төшөмөлөргө жайгаштыруу үчүн ичке пинцет колдоно баштадым. Мен андан кийин жылуулук тапанчасын колдонуп, бардык компоненттерди кайра ордуна койдум.
Астыңкы катмар ширетилгенде, мен аны тез визуалдык текшерүүдөн өткөрүп, ширетүү ийгиликтүү болгонуна ынандым. Мен андан кийин тактайды оодарып, башка тараптан ширетүү процессин кайталадым, бул жолу бардык светодиоддор менен. Үстүнкү катмарды ширетүүдө тактанын ысып кетпеши өтө маанилүү болчу, анткени астындагы бардык компоненттер түшүп кетүү коркунучунда. Бактыга жараша, бардык компоненттер өз ордунда калышты жана кадимки ширетүүчү үтүктүн жардамы менен баскычтарды ширеткенден кийин, ПХБ бүтүп калды!
Эми акыркы жыйынга убакыт келди!
11 -кадам: Ассамблея
Ассамблея абдан жөнөкөй болгон. Мен батареяны ПКБга туташтырып, батареяны жана ПХБны 3D басылган корпустун ичине койдум. Мен ПХБнын ар бир бурчундагы орнотуучу тешиктердеги төрт бураманы бурай баштадым. Андан кийин, мен 18мм пружина тилкелерин колдонуп, сааттын боолорун тагып койгом жана саат бүтүп калды!
12 -кадам: Жыйынтык жана жакшыртуу
Саат күтүлгөндөй иштейт жана мен анын кандай болгонуна абдан кубанычтамын. Буга чейин менде эч кандай көйгөй болгон эмес жана батарейка бир жума колдонулгандан кийин дээрлик толук заряддалган бойдон калууда.
Келечекте саатка башка функцияларды кошуп коюшум мүмкүн. USB порту микроконтроллерге туташтырылгандыктан, программалык камсыздоону каалаган убакта жаңы мүмкүнчүлүктөр менен жаңыртса болот. Азырынча, мен сааттын бул версиясын колдонууну улантам жана анын узакка колдонулгандан кийин кандайча кармалып турганын көрөм.
Эгерде сизде бул долбоор боюнча ойлоруңуз, комментарийиңиз же суроолоруңуз болсо, аларды төмөндө калтырыңыз. Ошондой эле аларды [email protected] дарегине жөнөтсөңүз болот.
Сааттар конкурсунда биринчи сыйлык
Сунушталууда:
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Arduino Uno менен: 4 кадам (сүрөттөр менен)
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Arduino Uno менен: Кийилүүчү кыймылга көз салуу саатын кантип жасоо керек? Бул стагнацияны аныктаганда титирөө үчүн иштелип чыккан кийилүүчү гаджет. Убактыңыздын көбүн мен сыяктуу компьютерде өткөрөсүзбү? Сиз өзүңүз билбей сааттап отурасызбы? Анда бул аппарат f
Binary Tree Морзе декодери: 7 кадам (Сүрөттөр менен)
Binary Tree Morze Декодер: a.articles {font-size: 110.0%; шрифт салмагы: коюу; шрифт стили: курсив; текстти жасалгалоо: эч ким; background-color: red;} a.articles: hover {background-color: black;} Бул көрсөтмө Arduino Uno R3.T менен Морзе кодун кантип декоддоону түшүндүрөт
Ultimate Dry Ice Fog Machine - Bluetooth башкарылган, Батарея менен иштейт жана 3D басылган .: 22 кадам (Сүрөттөр менен)
Ultimate Dry Ice Tog Machine - Bluetooth башкарылган, Батарея менен иштейт жана 3D басып чыгарылган .: Мага жакында жергиликтүү шоу үчүн кээ бир театралдык эффекттер үчүн Dry Ice машинасы керек болчу. Биздин бюджет профессионалдуу жумушка орношпойт, ошондуктан мен анын ордуна курдум. Бул көбүнчө 3D басып чыгарылган, алыстан Bluetooth аркылуу башкарылат, батареянын кубаты
3 Digit Arduino Binary Counter: 8 Кадам (Сүрөттөр менен)
3 Digit Arduino Binary Counter: Бул проект 1-999 эсептегич болуп саналат, ар бир цифрага 4-LEDди колдонуу менен, ал эми анын контролдук пини анод болуп саналат жана катоддорду тийиштүү катардагы диоддорго жана бул менен Arduino пиндин ортосундагы резисторго туташуу үчүн калтырат. . Жалпы аноддор
Binary LED мрамор сааты: 6 кадам (сүрөттөр менен)
Binary LED Мрамор Сааты: Азыр мен ойлойм, ар биринин бинардык сааты бар жана бул жерде менин версиям. Мага жаккан нерсе - бул долбоор жыгачтан жасалган буюмдарды, программалоону, үйрөнүүнү, электрониканы жана балким бир аз көркөм чыгармачылыкты бириктирди. Бул убакытты, айды, күндү, күндү көрсөтөт