Mundarija:

TheSUN, Arduino bilan ishlaydigan devor soati: 6 qadam (rasmlar bilan)
TheSUN, Arduino bilan ishlaydigan devor soati: 6 qadam (rasmlar bilan)

Video: TheSUN, Arduino bilan ishlaydigan devor soati: 6 qadam (rasmlar bilan)

Video: TheSUN, Arduino bilan ishlaydigan devor soati: 6 qadam (rasmlar bilan)
Video: REAL RACING 3 LEAD FOOT EDITION 2024, Iyul
Anonim
TheSUN, Arduino bilan ishlaydigan devor soati
TheSUN, Arduino bilan ishlaydigan devor soati
TheSUN, Arduino bilan ishlaydigan devor soati
TheSUN, Arduino bilan ishlaydigan devor soati
TheSUN, Arduino bilan ishlaydigan devor soati
TheSUN, Arduino bilan ishlaydigan devor soati

Yana salom Instructables-azizlar!:-P

Yuk tashish bilan bog'liq muammolar tufayli men ABTW loyihamni davom ettira olmadim, shuning uchun men sizga yangi, eng yangi ijodimni ko'rsatishga qaror qildim.

O'ylaymanki, ko'pchiligimiz, men kabi, manzilli LED chiziqlar (NEOPIXEL LED deb ham ataladi) kabi. Siz ularni ADAFRUITdan olishingiz mumkin. Boshqa sotuvchilar ham shunga o'xshash mahsulotlarni etkazib berishadi. ADAFRUITS - GitHub (meni bosing) kutubxonasi mavjud, u erda ba'zi bir kodlar mavjud, shuning uchun kodlash to'g'ridan -to'g'ri bo'lishi kerak …

Men o'sha NEOPIXELlarni o'ylab ko'rdim, bu porloq mayda narsalar bilan nima qila olaman.

  • LED matritsali displey? -> Juda murakkab va men uni ishlatmayman (hozirda)
  • X-Mas yoritishmi? -> Bu mavsumga to'g'ri keladi, lekin uni sotib olish arzonroq bo'ladi:-P
  • soat? -> Nega bo'lmasin! Lekin u zamonaviy va noan'anaviy bo'lishi kerak

Shunday qilib, keling, devor soati yasaylik.

Agar biz qo'l soatlarimizga diqqat bilan qarasak (agar sizda men kabi analog bo'lsa) bizda 12 soatu 60 daqiqa borligini payqaymiz (umid qilamanki). Bu shuni anglatadiki, bizga 60 ta manzilli LED kerak, phu! Agar biz 60 LED / metrli chiziq olsak, biz diametri ~ 318 mm (radius = qamrov / (2*Π)) olamiz, bu aniq juda katta.

Haqiqat shundaki, agar siz birovdan vaqt so'rasangiz, hech kim 3dan 2 minut o'tdi deb aytmaydi! Javob sifatida siz "5 dan 3 gacha" javobini olasiz, shuning uchun nima uchun biz hamma narsani 5 daqiqalik bosqichga ko'tarmasligimiz kerak? Buning uchun bizga faqat 12 ta LED kerak bo'ladi, ya'ni diametri 63,6 mm. Shuningdek, biz soat va daqiqalarni alohida rang berish orqali farqlay olamiz, shuningdek, "etishmayotgan" bir daqiqali qadamlarni qo'shimcha 4 ta LED (yoki bitta manzilli LED) bilan ta'minlay olamiz.

Bu reja! Keling, men hamma narsani qanday qilganimni ko'rib chiqaylik. Har doimgidek, men materiallar ro'yxatini/hisob -kitobini va uni qurish bo'yicha ko'rsatmalarni beraman.

Agar siz o'ylasangiz, faqat shveytsariyaliklar ajoyib soat yasashlari mumkin, sizning xato qilganingizni isbotlaymiz (afsuski Shveytsariya:-P)

1 -qadam: Dizayn va materiallarni tanlash

Dizayn va materiallarni tanlash
Dizayn va materiallarni tanlash
Dizayn va materiallarni tanlash
Dizayn va materiallarni tanlash

Dizayn:

Agar biz analog soat/soatga yana bir bor nazar tashlasak, aylana biz bilgan 12 * 30 ° qadamlarga bo'linganini, LED chizig'i uchun 63,6 mm kerakligini ko'ramiz. Shunday qilib, qandaydir tarzda trubaning atrofidagi chiziqni tekislash mumkin bo'lishi kerak. Men akril oynadan foydalanishga qaror qildim, chunki u chiroyli ko'rinadi va unga LED chiroqni o'rash mumkin, va oynadagi har bir nuqsonda yorug'lik tarqalishi sodir bo'ladi. Shunday qilib, aytaylik: ko'proq iflosliklar yorug'lik tarqalishiga olib keladi! Bu biz xohlagan narsadir. Shunday qilib, o'yma asboblaringizni qo'lingizga oling va ijodiy bo'ling:-)

Agar siz mening BoM-ro'yxatimga va soatga qo'ygan ismimga murojaat qilsangiz, men quyosh kabi dizaynni tanladim, men barcha akril qismlarini E-Bayda nemis sotuvchisidan oldim (havola BoMda ko'rsatilgan). sizga kerak bo'ladi:

  • akril zamin plitasi, shaffof qalinligi = 6 mm, diametri = 300 mm
  • akril o'rta plastinka, shaffof qalinligi = 3 mm, diametri = 150 mm
  • old akril plastinka, atlas, qalinligi = 3 mm, diametri = 90 mm
  • akril naycha, shaffof, tashqi diametri = 64 mm (biz LED tasmasi bilan biroz burishimiz kerak bo'ladi)
  • akril novda, shaffof, diametri = 5 mm (bu bizning nurlarimiz bo'ladi); Atrofda pufakchali akril tayoqlar ham bor, men ularni tavsiya qilaman, lekin menda yo'q.
  • akril elim

Elektronika (Fritzing fayllariga qarang):

  • Arduino mini (yoki shunga o'xshash)
  • 1 ta manzilli LED tasmasi (12 LED bir soat va 5 daqiqali qadam)
  • 4 ta manzilli LED (bir daqiqa)
  • 2 330 Ohm rezistorlar
  • 1 1000 mF kondansatör
  • 1 ta quvvat manbai (5V/500mA)
  • RTC DS-1307 (ixtiyoriy!)
  • Bluetooth moduli (ixtiyoriy! Ha, siz vaqtni BT va Android smartfoni orqali belgilashingiz mumkin)

Agar o'zingizga savol bersangiz, nima uchun mening BoM -da MAX485 chiplari bor? Men soatni uy avtomatlashtirish tizimi bilan sinxronlashtirishni xohlayman, degan savolga javob beraman (hech qachon yozgi yoz uchun hech qachon soat qo'ymasligim kerak:-P). Men buni keyingi blogimda tasvirlab beraman. bir necha hafta/oy.

Siz sezganingizdek, men ham quyosh panellari va LiPo bilan soatni tarmoqdan o'chirishga harakat qilaman, lekin men bu ko'rsatmada o'zingizni sinab ko'rishingiz mumkin.

2 -qadam: Akril qismlarni tayyorlang

Akril qismlarni tayyorlang
Akril qismlarni tayyorlang
Akril qismlarni tayyorlang
Akril qismlarni tayyorlang
Akril qismlarni tayyorlang
Akril qismlarni tayyorlang

Asboblar:

Agar siz 1: 1 o'lchoviga qo'shilgan DWG rejasini chop qilsangiz, bu, albatta, foydalidir, bu sizga barcha qismlarni tekislashga yordam beradi va sizga burg'ulash rejasi bo'lib xizmat qiladi.

  • xobbi pichog'i
  • o'lchagich
  • arra
  • qisqichlar
  • qo'l matkap
  • burg'ulash mumkin, diametri 65 mm
  • metall matkaplar to'plami
  • kichik metall fayl
  • akril elim

Boshlaylik:

Tuproq plitasini oling va uni rejaga tekislang, shunda siz aylananing markazini olishingiz mumkin. Endi qo'li bilan matkapni oling, unga burg'ulash dastgohi o'rnatilgan va er plastinkasining markazida, tashqi aylananing chuqurligi ~ 2-3 mm bo'lishi kerak. Bu LED chizig'ini er plastinkasiga tushirish uchun (LED tasmasi ~ 10 mm, nurlari diametri 5 mm) va ularni nurlar bilan tekislash uchun (1 -rasmga qarang).

Endi bizga arra, miter o'lchagich va akril naycha kerak. Uni bo'laklarga bo'lak qilib, 40 mm uzunlikdagi korpus (trubka) yasashga qaror qildim (2 -rasm). Endi yana arra ushlang va trubkaning bir tomoniga kichkina rabbet yasang, uni metall fayl bilan tekislang. Bu erda simlar chiqadi;-) (3-rasmga qarang)

Bir oz yopishtirish vaqti keldi … O'rta plastinkani (d = 150 mm) va old plastinani (to'yingan) oling, ularni yana rejaga moslang, o'rtadagi plastinkaning o'rtasiga elim qo'ying, oldingi plastinani tekislang va kutguncha kuting. elim biroz qattiqlashadi. Men ishlatgan elim engil qotib qoladi va 2-3 soat davom etishi mumkin, shuning uchun siz qisqich ishlatmoqchisiz … (3 va 4-rasm)

Quvurni zamin plastinkasiga yopishtirish uchun ham xuddi shunday qiling, tokchaning plastinkaga qaraganligiga ishonch hosil qiling va birinchi LED (soat 12) bo'ladigan joyga tekislang.

Qattiqlashguncha kuting!

Endi biz 2 qismni (taqqoslangan) rejaga moslashtira olamiz va 4 daqiqali teshiklarni burg'ulashimiz mumkin (diametri 5 mm yoki siz tanlagan LED diametri; uni juda ko'p bosimsiz sekin burg'ulash). Taxminan 8-9 mm chuqurlikda burg'ulash. Ehtiyot bo'ling, to'yingan plastinka juda mo'rt va agar siz chuqur burg'ilasangiz, tormozlashi mumkin, endi siz ularni yopishtira olasiz yoki men kabi, er plastinkasiga tahdidni kesib, vint bilan mahkamlashga qaror qilasiz.

Yana elim qotib qolguncha kutib turing. Endi chiziqlarni tekislang va er plastinkasiga yopishtiring. (6-rasm) Nimani o'ylab ko'ring … elim qotib qolguncha kuting:-) Keling, elektronikaga o'tamiz …

3 -qadam: elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Asboblar:

  • lehim temir
  • lehim
  • sevimli pichoq
  • PCB prototipining kichik bir qismi
  • emallangan sim yoki sizga yoqadigan boshqa sim
  • issiq elim

Men bitta LED bilan ishladim, agar siz emallangan simni ishlatsangiz, lehimlashdan oldin lakni qirib tashlashni unutmang. Buning uchun siz sevimli mashg'ulot pichog'idan foydalanishingiz mumkin, ularni sim bilan bog'lang, flikto.de saytidagi pinout bilan rasmga qarang. E'tibor bering, DOUT keyingi LEDda DINga o'tadi! (2 -rasmga qarang) Shundan so'ng siz LED tasmasini har biri 3 ta LED bilan 4 ta elementga kesib qo'yishingiz mumkin. Yodingizda bo'lsin, bizda 63,6 mm LED tasmasi va trubaning tashqi diametri 64 mm bor, shuning uchun uni nurlarga to'g'ri tekislash uchun qo'shimcha uzunlik kerak bo'ladi. Uni rasmdagi kabi emallangan sim bilan bog'lab qo'ying. "Quvvat jabduqlari" sifatida va LED chiziqlar uchun komponentlarni o'z ichiga oladi (330 Ohmli ikkita rezistor va 1000 mF kondansatkich, 7 -rasm).

Endi chiziqni trubaning atrofiga o'rnating, LEDlarni nurlarga tekislang. Birinchi Pixel soat 12 ga to'g'ri keladi. Agar siz uyingizni aylantirgan bo'lsangiz, hamma narsa aks ettirilganini unutmang. Soat yo'nalishi bo'yicha teskari o'ting! Quvurga yopishtirish uchun issiq elimdan foydalaning. Har bir segment uchun kichik tomchi buni amalga oshiradi!

Siz bitta LEDni (oxir -oqibat aks ettirish) ham xuddi shunday qilishingiz mumkin, shunchaki issiq elim qo'shing va ularni oldindan ochilgan teshiklarga bosing.

Arduino-ga hali sim o'tkazmang, biz BT ulanishi uchun apparat-seriyadan foydalanamiz, shuning uchun avval dasturiy ta'minot tasvirlangan keyingi bosqichlarni tekshiring.

4 -qadam: kod

Kod
Kod
Kod
Kod

Endi siz eskizni Arduino -ga yuklashingiz mumkin. Siz shuningdek LED chiziqlarini sim bilan ulashingiz mumkin. BT modulini ulamang !!! Biz birinchi navbatda kodni ko'rib chiqmoqchimiz, siz bir nechta narsalarni qayerda o'zgartirishingiz mumkinligini bilishingiz kerak …

Arduino IDE va kutubxonalarni yuklab oling. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

IDE-ni o'rnating va kutubxonalarni kutubxona papkasiga qo'ying, biriktirilgan INO faylini oching va uni arduino-ga yuklang. Bu erda tasvirlangan kod bir xil, lekin qo'shimcha izohlar bilan! Agar siz hamma narsani to'g'ri qilgan bo'lsangiz, endi "bootanimatsiya" ni ko'rishingiz mumkin. Vaqtni ketma -ket monitor orqali belgilash mumkin. @"Hour"/"min"/"sec" yozing, masalan. @10/33/00 (10:33).

Kod bilan bemalol o'ynang … Bu erda sizga kodning qisqacha tavsifi berilmaydi (RTC holda sozlash!)

Ta'riflar:

#PIN kodini belgilang 6 // Soatlik LED tasmasi #aniqlang MINPIN 5 // Singelminute LED #ta'rifi NUMPIXELS 12 // Bir soatlik piksellar soni #MINNUMPIXELS 4 ni belgilang // Bir daqiqali piksellar soni #BAUDRATE 115200 ni aniqlang // Baudrat, mos bo'lishi kerak BT modulining tezligi #define utch '@' // TimeSync -ning BYTE -ni ishga tushirish

int timeset = 0; // saqlash uchun bayroq, agar vaqt bootint delayval = 20dan keyin o'rnatilgan bo'lsa; // so'nish animatsiyasi uchun kechikish int clocktimer = 10000; // vaqt yangilanishi int timebright = 250; // soat ravshanligi Strip int mtimebright = 50; // singelminint ning yorqinligi boshlang'ich = 0; // yuklashdan keyin clearpixels funktsiyasini chaqirish uchun bayroq; int oldahour = 0; // do'kon oldingi. soat aminut; int oldamin = 0; // oldingi daqiqani ikkinchi marta yangilash uchun saqlaydi; int aday; int amonth; int oyear; int min; tmElements_t tm;

// 2 ta NeoPixel LED massivini sozlash (NAME = TURI (PIXELLAR SONI, PIN -kod, RGB yoki GRB, FREKAT); Qo'shimcha ma'lumot uchun Adafruit qo'llanmasiga qarang. Adafruit_NeoPixel minpixellari = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

SOZLASH:

bo'sh o'rnatish () {

Serial.begin (BAUDRATE); Wire.begin (); // chiziqlarni boshlang, hamma OFFpixels.begin (); minpixels.begin (); piksel.show (); minpixels.show ();

// Kichkina animatsiyaSerial.println ("SUNRISE") qiling; quyosh chiqishi (); kechikish (1000); Serial.println ("SUNSET"); quyosh botishi (); piksel.show (); Serial.println ("Tayyor"); }

Loop:

void loop () {// vaqt sinxronligini tekshiring while (Serial.available ()> 0) {char c = Serial.read (); if (c == utch) // satrda @ bo'lsa, kelayotgan baytlarni /intslarni o'qing {readtime (); }} // LEDlarni ishga tushirish, yuklash animatsiyasini tozalash

if (initialize == 0) {clearpixels (); ishga tushirish = 1; }

soat = soat ();

aminute = daqiqa (); agar (timeset == 1 || timeset == 0) // bu erda siz Vaqt o'rnatilganligini tekshirishingiz mumkin, agar Timeset = FALSE bo'lsa, bu erda dasturni to'xtatishingiz mumkin, faqat "|| timeset == 0" ni olib tashlang!

{

agar (oldamin <aminute || oldahour hammasi O'chirilgan bo'lsa, yangi vaqtni ko'rsatish {clearpixels (); ClockDisplay ();}}}

Soatni ko'rsatish:

bo'sh ClockDisplay () {

oldahour = ahour;

oldamin = aminut; int xhour, xmin;

agar (ahour> = 12) {xhour = ahour-12; // bizda 24 soatlik displey uchun faqat 12 ta LED mavjud} else {xhour = ahour; } // uni 5 minutlik qadamlarga o'lchash xmin = (aminute /5); agar (oldamin <aminute) {oldamin = aminute; aniq piksellar (); } // bo'linmaning qolgan qismini oling singelmin LED mmin = (aminute % 5); // modulo operatori, masalan. 24 % 5 = 4! juda foydali: -Pixels.setBrightness (timebright); piksel.setPixelColor (xmin, piksel. Color (5, 125, 255)); // siz bu erda ranglarni o'zgartirishingiz mumkin! atrofida o'ynang! piksel.setPixelColor (xhour, piksel. Color (255, 50, 0)); piksel.show ();

// minsfor sonini ko'rsatish (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, piksel. Rang (255, 255, 0)); minpixels.show (); }} Seriyali TIME ma'lumotlarini o'qing va qayta ishlang

void o'qish vaqti () // agar bizda "@" etakchi ma'lumoti bo'lsa va kelgusi ma'lumotlarni saqlasak va TIME Lib {

ahour = Serial.parseInt (); aminute = Serial.parseInt (); sekund = 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, secondecond, aday, amonth, ayear); }

Hammasini tozalamoq

void clearpixels () // displeyni yangilash uchun har bir PIXELni o'chirib qo'ying.

piksel.begin (); minpixels.begin (); uchun (int i = 0; ipixels.setPixelColor (i, piksellar Rang (0, 0, 0)); minpixels.setPixelColor (i, piksellar Rang (0, 0, 0)); piksellar.show (); minpixellar.shou ();}}

5 -qadam: Android APP va BT ulanishi

Android APP va BT aloqasi
Android APP va BT aloqasi
Android APP va BT aloqasi
Android APP va BT aloqasi
Android APP va BT aloqasi
Android APP va BT aloqasi

Agar siz oldingi qadamlarni muvaffaqiyatli bajargan bo'lsangiz, endi BT modulini ulashingiz mumkin. (Umid qilamanki, siz bodrodlar mos kelishiga ishonch hosil qildingiz). TX va RX chiziqlarini kesib o'tishni unutmang:-)

Ilovani yuklab oling va o'rnating, BT dongle bilan bog'lang, dasturni ishga tushiring, dongle -ga ulaning va vaqtni mobil qurilmangiz bilan sinxronlashtiring. APP asosan biz avvalgidek ishlaydi. U faqat tizim vaqtidan hosil bo'lgan @hh/mm/ss/dd/mm/YYYY yuboradi, shuningdek, APPInventor AIA faylini va keyingi bosqichga (qiziquvchilar uchun) tushuntirishni taqdim etdim.

6 -qadam: APPInventor

APP Inventor
APP Inventor
APP Inventor
APP Inventor

APP Inventor -dan foydalanish juda oson va bunday oddiy dastur uchun harakat qilish kerak.

Agar siz yangi loyiha qilsangiz, DESIGNER ekranida o'zingizni topasiz. (1 -rasm) Bu erda biz keyingi jadvallar, tugmalar, datchiklar va boshqa elementlarni qo'shamiz. Bizning holda bizga kerak:

  • jadval (barcha elementlarni tekislash uchun)
  • ro'yxat tanlovchi (biz ulanadigan BT qurilmasini tanlash uchun)
  • tugma (BT ustidagi vaqtni o'chirish uchun)
  • ba'zi teglar (haqiqiy vaqt va sanani ko'rsatish)
  • soat sensori (vaqtni yangilang)
  • bluetooth mijoz sensori (ulanish)

Ularni qo'shish tortish va tushirish kabi oson! 2 -rasmda siz BLOCKS ekranida "APP" ning umumiy ko'rinishini ko'rishingiz mumkin. Xo'sh, bu erda hamma "sehr" sodir bo'ladi. Yuqorida men Vaqt va sanani saqlash uchun bir nechta o'zgaruvchilarni yaratdim. Yuqori chapdagi birinchi blok ro'yxatga olish elementini bog'langan BT qurilmalari ro'yxati bilan ishga tushiradi. Ikkinchi blok, biz ilgari tanlangan element bilan nima qilishni hal qilamiz. Xo'sh, biz unga ulanishni xohlaymiz.

Agar siz keyingi blokni diqqat bilan ko'rib chiqsangiz, biz BT holati "ulangan" bo'lsa, BT xabarini ishlab chiqaramiz. Biz SerialMonitor -ga avval ham xuddi shunday yozganmiz. Chapdagi oxirgi blok bizga vaqtni ko'rsatish uchun etakchi nollarni beradi (masalan, 01:08). O'ng tomonda biz oxirgi elementni topamiz, u erda biz soat elementidan foydalanamiz, bu erda biz o'zgaruvchilarni yangilaymiz va ularni raqamlar protsedurasi bilan birlashtiramiz, bu har 1000msda sodir bo'ladi (standart sozlama, uni dizayner rejimida o'zgartiring). va yangilangan qiymatlarni yorliq bilan ko'rsatish. Bu qisqacha tavsif, lekin APPInventor haqiqatan ham oson:-) Balki jamiyatda kimdir iOS yoki WindowsPhone uchun dasturiy ta'minot yozmoqchi. (ajoyib bo'lardi)

Umid qilamanki, mening "Instructable" sizga yoqdi! Yangi devor soatingizdan zavqlaning! Balki siz uni sevgan kishiga sovg'a qilmoqchisiz (X-Mas mavsumi):-)

Va agar savollar bo'lsa, bemalol menga savol bering!

Hurmat va xursandchilik bilan X-Mas.

Tavsiya: