Mundarija:

Wifi boshqariladigan LED chiziqli kam poli temir odam: 8 qadam (rasmlar bilan)
Wifi boshqariladigan LED chiziqli kam poli temir odam: 8 qadam (rasmlar bilan)

Video: Wifi boshqariladigan LED chiziqli kam poli temir odam: 8 qadam (rasmlar bilan)

Video: Wifi boshqariladigan LED chiziqli kam poli temir odam: 8 qadam (rasmlar bilan)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Noyabr
Anonim
Wifi boshqariladigan LED chiziqli past poli temir odam
Wifi boshqariladigan LED chiziqli past poli temir odam
Wifi boshqariladigan LED chiziqli past poli temir odam
Wifi boshqariladigan LED chiziqli past poli temir odam
Wifi boshqariladigan LED chiziqli past poli temir odam
Wifi boshqariladigan LED chiziqli past poli temir odam
Wifi boshqariladigan LED chiziqli past poli temir odam
Wifi boshqariladigan LED chiziqli past poli temir odam

Bu interaktiv devor rasmining uzunligi taxminan 39 "baland va 24". Men Clemson universiteti Student Makerspace-da yog'ochni lazer bilan kesib oldim, keyin hamma uchburchaklarni qo'lda bo'yadim va uning orqa tomoniga chiroqlarni o'rnatdim. Bu o'rgatuvchi men qanday qilib aynan shu asarni yaratganimni o'rganib chiqadi, umid qilamanki, uning kontseptsiyasi boshqa birovni o'ziga xos san'at asarini yaratishga ilhomlantiradi. Unda manzilli WS2812B LED chiziqli chiroqlar va oddiy RGB LED chiziqli chiroqlar bo'lgan ESP8266 mikrokontroller ishlatiladi.

Materiallar va ehtiyot qismlar

  • 1/4 dyuymli yog'och - 40 dyuymdan 28 dyuymgacha (bizning lazer kesgichimiz uchun maksimal o'lchamlar)
  • 1/8 dyuymli shaffof akril - TAPPlastics (men Lighting White, 69%ishlataman)
  • Batareya to'plami - TalentCell 12V/5V batareya to'plami (men 12V/6000mAh to'plamidan foydalanganman)
  • RGB LED tasmasi - 6 fut (standart 4 simli, 5050 versiyasi, RGB nuri hammasi bitta modulda)
  • Ko'p chiroqlarni PWM boshqaruvi uchun TIP122 tranzistor
  • WS2812B LED tasmasi - 2 fut (men har bir metr uchun 144 LEDli versiyani ishlatganman)
  • ESP8266 NodeMCU mikrokontroller
  • Qattiq yadroli 22 o'lchagichli ulagichli sim (link1 - link2 - link3 - link4)
  • 300 ga yaqin rezistorlar
  • Bo'yoq cho'tkalari
  • Bo'yoq - Men asosan Craft Premium bo'yoqidan foydalanardim. Rasm chizish tafsilotlari

Asboblar

  • Lazerli kesgichga kirish (men uni Clemsonda ishlatganman)
  • Lehimlash temir
  • Issiq yopishtiruvchi qurol (bu juda muhim)
  • Tel kesgichlar/striptizchilar
  • Adobe Illustrator dasturi
  • Sabr

1 -qadam: Illustrator -da dizayn

Illustrator -da dizayn
Illustrator -da dizayn
Illustrator -da dizayn
Illustrator -da dizayn

Manba tasviri Uilyam Tealning illyustratsiyasi, iltimos, uning portfeliga uning boshqa ajoyib asarlarini ko'rib chiqing: https://www.behance.net/tealeo93 (menimcha, u - men GoogleImages, Pinterest, GraphicDesignJunction, Behance)

Men "past poli temir odam" yoki "geometrik temir odam fon rasmi" uchun Google qidiruvidan manba tasvirini topdim. Men rasmni yukladim va Adobe Illustrator -da ochdim.

Keyin, Illustrator -dagi qalam vositasidan foydalanib, rasmdagi har bir satrni qo'lda chizdik. Men buni shunday qildimki, lazerni kesuvchi butun ichki chiziqlarni butun tasvirni rastratsiya qilishning o'rniga, past quvvatli vektorli kesim sifatida kesish mumkin edi. Buning uchun bir necha soat kerak bo'ldi (maktabda 3 ta dars davri)

Rasm to'liq aniqlangandan so'ng, men bu chiziqlarni bir joyga to'pladim, so'ng qo'llar, ko'krak va ko'zlar uchun shakllar chizdim. Men bularning barchasini bir guruhga joylashtirdim va ularni to'ldirish rangini ko'k rangga qo'ydim, shunda ularni osonlik bilan ajrata olaman. Men ularni akril kesish uchun alohida faylga ko'chirdim.

Akril qismi uchun men akril parchamning samaradorligini oshirmoqchi edim, shuning uchun uni https://svgnest.com/ veb -saytiga yukladim va faqat akril bo'laklari bo'lgan faylni yukladim va uning qismlarini "joylashtirishga" ruxsat berdim. Chiqindilarni minimallashtirish uchun varaqdagi qismlaringizning eng samarali tartibini aniqlash uchun ba'zi bir takrorlash va ajoyib algoritmlardan foydalaniladi. U IronManAcrylic.ai faylidagi konfiguratsiyani chiqaradi.

2 -qadam: lazerni kesish

Image
Image

Yog'ochni kesishdan oldin, uni purkagich bilan astar bilan bo'yab qo'ydim, so'ngra silliq bo'lishi uchun ozgina zımparaladim. Men shunday qildimki, bo'yoq keyinchalik tekisroq chiqib ketishi uchun.

Men konturni yog'och bo'ylab kesib o'tganda, men Clemson Makerspace -dagi 60W Epilog Fusion M2 40 -da 100% quvvat 6% tezlikni ishlatardim. Bu ko'pchilik uchun ishladi, lekin yog'och burchakda juda burishgan edi, shuning uchun men lazerni o'sha burchakka yo'naltirishim va kesmaning o'sha qismini yana ishga tushirishim kerak edi.

Men ham ichkaridagi uchburchaklar uchun chiziqlar chizganim uchun, yuqoridagi videoda ko'rsatilgandek, bu chiziqlarni tezda chizish uchun vektorli kesimdan ham foydalana oldim. Bu faylni rastrlashdan ko'ra ancha tezroq edi. O'ylaymanki, men 70% tezlik va 50% quvvat ishlatganman - faqat tajriba qilish kerak.

Men 1/8 dyuymli akrilni birinchi marta 100% quvvat va 8% tezlikda kesib tashladim, bu juda kuchli edi va himoyalanmagan akrilda kuyish izlarini qoldirdi, shuning uchun men buni 14% tezlikda qildim va u joziba kabi ishladi.

3 -qadam: rasm chizish

Rasm
Rasm
Rasm
Rasm
Rasm
Rasm

Shunday qilib Ko'p. Rasm Men taxmin qilardimki, bu taxminan 20 soatlik rasm.

Agar siz shuncha uchburchakli loyihani amalga oshirishni o'ylayotgan bo'lsangiz, uni o'zingiz bo'yamang. Rasmni metall yoki yog'ochga bosib chiqarish uchun pul to'lang, so'ng uni kesib oling yoki boshqa narsaga bosib chiqaring va uni qattiq narsaga yopishtiring. Agar siz rasmni yoqtirmasangiz, uni o'zingiz bo'yamang.

Men uni chizganimda har bir uchburchakni tasvirlash uchun FrogTape rassomlari tasmasini ishlatardim. Bu menga har bir uchburchakni lenta chegaralarisiz qo'lda to'ldirishga bo'lgan birinchi urinishlarimdan ko'ra ancha izchil natijalar berdi.

FrogTape oq yoki ko'k rangdagi lentalarga qaraganda ancha aniq chiziqlar beradi. Sizning vaqtingiz va aql -idrokingiz qo'shimcha $ 2/rulonli lentaga arziydi. Agar siz terining ingichka bo'lishini xohlasangiz, aniq pichoq bilan lentaning yuqori qatlamlarini kichikroq bo'laklarga kesib olishingiz mumkin, shunda bitta uchburchakni chizganingizda u qo'shni uchburchakni yopmaydi.

Men arzonman va rasm chizish bo'yicha unchalik tajribaga ega emasman, shuning uchun men Maykl yoki Xobbi lobisidan 2 ozlik shisha bo'yoqlardan foydalandim. Men bildimki, Craft Smart Premium liniyasi juda yaxshi qoplangan va 95% qizil soyalarimni yaratish uchun oq yoki qora bilan aralashtirilgan CraftSmart Premium Metallic Festivali Qizil bo'yoq yordamida tugagan. Sariq faqat Craft Smart premium -sarg'ish rang edi, uni biroz yaltiratishga urinish uchun ozgina oltin tashlangan.

Agar siz arzonroq rangdagi bo'yoqni bilsangiz - bu haqda izohlarda menga xabar bering !! Men tez -tez ikkita bo'yoqni bo'yashim kerak edi, shunda pastdagi oq rang ko'rinmas edi va men bundan qochadigan chiroyli bo'yoqlar olishni xohlardim.

Bir marta hammasi bo'yalgan edi (lekin akril bo'laklarga yopishtirishdan oldin), men bo'yoqni himoya qilish va uni yaltiroq qilish uchun porloq shaffof lak spreyi ishlatardim.

4 -qadam: Akril buyumlar va akril orqa chiroqlar

Akril buyumlar va akril orqa chiroqlar
Akril buyumlar va akril orqa chiroqlar
Akril buyumlar va akril orqa chiroqlar
Akril buyumlar va akril orqa chiroqlar
Akril buyumlar va akril orqa chiroqlar
Akril buyumlar va akril orqa chiroqlar
Akril buyumlar va akril orqa chiroqlar
Akril buyumlar va akril orqa chiroqlar

Akril bo'laklarni biriktirish biroz qiyin kechdi, chunki ishchi stolim va yog'och bo'lagi biroz burishgan, shuning uchun hammasi epoksi o'rnatilishi uchun etarlicha tekis turishiga kafolat bera olmadim. Vaqtinchalik echim sifatida men yog'ochni yopishtirgan akril bo'lagi yonidagi stolga bosdim va har bir akril bo'lakni joyida ushlab turish uchun avval issiq elim ishlatdim. Issiq elim akrilning old tomondan ko'rinadi, shuning uchun men akril bo'laklarini joyida doimiy ushlab turish uchun tish pichog'i bilan surtilgan ikki qismli epoksi Gorilla elimdan foydalanardim. Men kichkina penseler bilan qaytdim va asl issiq elim bo'laklarini oldim.

Men har bir akril buyum uchun alohida yorug'lik modulini yaratdim. Avvaliga 1/4 dyuymli qora ko'pikli plastinkani kerakli kattalikdan biroz kattaroq qilib kesib oldim va ustiga akril bo'lakning konturini chizdim, so'ngra LED chiziqlarini asosan akril qoplamali qilib kesib yopishtirdim. maydon.

Bu qadam prototip taxtasi va ba'zi vintli terminallar yordamida amalga oshirilgan bo'lardi, lekin men simlarni ulashga tayyor bo'lganimda qo'limda yo'q edi. Vaqtinchalik echim sifatida, men 4 ta kirish - Ground, 5V in, ma'lumotlarni kiritish, ma'lumotlarni o'chirish uchun bir nechta ayol sarlavhali chiziqlarni kesib tashladim. Men ko'pikli taxtaga urg'ochi bosh tasmasini issiq yopishtirdim va barcha chiroqlarni lehimlay boshladim.

Lehimlash maydonchalari juda kichik bo'lganligi sababli, lehimlash juda qiyin edi. Yaxshiyamki, menda barcha quvvat va er yostiqchalari uchun ikkita imkoniyat bor edi, chunki har bir tasma har ikki uchiga ham quvvat bilan ta'minlanishi mumkin edi. Ma'lumot simlari serpantin shaklida oqishi uchun men chiziqlarni qo'ydim. Men sozlanishi haroratga ega lehimli dazmoldan foydalanaman va shuni bildimki, harorat yashil rangning yuqori uchida bo'lishini yoqtirardim - ehtimol men uni juda yaxshi ko'raman, chunki men yillar davomida ishlatgan lehimlantiruvchi temir arzon va haroratni nazorat qilmagan. va issiq yugurdi.

Hamma narsa lehimlangandan so'ng, men chiroqlarni yopish va qon ketishini kamaytirish uchun ko'pikli taxtaning chiziqlarini kesish uchun aniq pichoqni ishlatardim (yangi pichoq bilan). Men qora o'rniga oq rangni ishlatardim, chunki uning uzunroq chiziqlari bor edi va bu men uchun yaxshi narsa edi, chunki u sinov chizig'ida LED chiziqlar yoqilganligini orqa tomondan osongina ko'rishimga imkon berdi.

5 -qadam: Qolgan elektronika

Qolgan elektronika
Qolgan elektronika
Qolgan elektronika
Qolgan elektronika
Qolgan elektronika
Qolgan elektronika

Men har doim o'z loyihalarimni birinchi navbatda quvvat manbalarini, keyin tekshirgichni, so'ngra boshqa taxta elementlarini va atrof -muhitni ulash orqali o'tkazishga harakat qilaman. Men batareyani joyiga issiq yopishtirdim va keyin ajratilgan shahar raz'emli kabelini yo'naltirdim, shunda zaryadlash usuli loyihaning chetidan oson zaryadlash uchun osonlikcha kirish mumkin edi. Batareya to'plami ajratilgan simi bilan birga kelgan va ko'rsatmalarda batareyani ishlatishda zaryad qilish yaxshi ekanligi aytilgan.

Men arzon micro-usb kabelini kanibalizatsiya qildim va micro USB-ning uchini shahar barreli uyasi bilan almashtirdim, shunda men faqat 5V kirishni ishlatardim. Men 5V ni taxtaning bitta kuchlanishli relsiga va ESP8266 Vin piniga qo'ydim, so'ngra erga va ESP8266 topraklama pimiga toprakladim (barcha asoslar nazorat qilish moslamasining ichkarisida birlashtirilgan bo'lishi kerak, shuning uchun qaysi biri muhim emas))

Standart RGB LED chiziqlar boshqaruvchidan PWM signali bilan boshqariladi. Biroq, mikrokontrolderlar tekshirgichga qarab har bir pin uchun faqat 20mA-50mA tokni etkazib berishi mumkin. Chiziqdagi har bir LED katta kuch talab qiladi, shuning uchun biz chiziqlarni boshqarish uchun qandaydir tranzistorni ishlatishimiz kerak. Google qidiruvlarida paydo bo'lgan ba'zi joylar 5 amper yoki 40 Vt quvvatni almashtira oladigan TIP122 tranzistorini taklif qildi - bu bizning dasturimiz uchun etarli emas. Ular, albatta, non taxtasiga joylash uchun mo'ljallanmagan, lekin agar siz har bir simni 90 ° chetga burib qo'ysangiz, u non paneli uyalariga to'g'ri keladi. Men dastlab har biriga kichkina sovutgichni ulashni rejalashtirgandim, lekin ba'zi sinovlardan so'ng, ular kerak bo'ladigan darajada qizib ketmasligini aniqladim. Men har bir tranzistorli kirishni PWM chiqishi uchun mo'ljallangan ESP8266 piniga uladim

Men tasodifan "suvga chidamli" kauchuk qoplamali RGB LED tasmalarini ishlatardim va natijada men xohlagan darajada yog'ochga yopishmagan bo'lardim. Vaqtinchalik echim sifatida men ko'pikli taxtaning kichik bo'laklarini kesib, ko'pikli bo'lakni yog'ochga yopishtirdim, so'ngra ularga LED tasmasini yopishtirdim.

6 -qadam: Dasturlashning umumiy ko'rinishi

Bu loyiha turli kutubxonalardan foydalanadi, shuning uchun uni Blynk nomli telefon ilovasidan boshqarish, Amazon Echo -dan yoqish/o'chirish va wifi orqali kodni yangilash mumkin. Ba'zi kutubxonalar quyida keltirilgan

Blynk -

Blynk - bu ESP8266 mikrokontroller va sozlanadigan telefon ilovasi o'rtasida oddiy boshqaruvni ta'minlaydigan xizmat. Telefon ilovasi sizga tugmalar, slayderlar, RGB rang tanlagichlari va boshqa ko'p narsalar bilan dastur yaratishga imkon beradi. Har bir "vidjet" ma'lum bir funktsiyani bajarganingizda Blynk ilovasidan olinadigan qiymatni o'zgartiradi.

OTA (Havoda) yangilanishi- ESP8266 standart standart kutubxonasi

Alexa Wemo emulyatori-https://github.com/witnessmenow/esp8266-alexa-wemo…

Amazon Echo -ni aldab, sizning loyihangizni Wemo chiroqli kalit deb o'ylaydi. Kod sizga Alexa "yoqish" signalini va o'chirish signalining alohida funktsiyasini yuborganida ishlaydigan funktsiyani belgilash imkonini beradi. Siz bir nechta qurilmalarni (10 tagacha) taqlid qilishingiz mumkin, bu esa yanada moslashuvchanlikni ta'minlaydi. Mening kodim Echo "Temir odam" va "Tungi yorug'lik" deb nomlangan ikkita qurilmani topishi uchun tuzilgan. Bu ikkalasi ham loyiha, ham nazoratchi, lekin agar men "Tungi chiroq" ni yoqsam, u oq rangli oq chiroqlar bilan ishlaydi, bu erda "Temir odam" yoqilganda tashqi LED chiziqlar qizil, akril bo'laklar oq rangga o'rnatiladi..

Visual Studio'da vMicro yordamida Arduino -ni tahrirlash

Men bir necha oydan beri Visual Studio -ni ishda ishlataman va u o'z ichiga olgan barcha avtoto'ldirish vositalarini yaxshi ko'raman, shuning uchun ba'zi qidiruvlardan so'ng men oddiy Arduino IDE o'rniga Visual Studio -dan foydalanishim mumkinligini aniqladim. Bitta kompyuter vMicro litsenziyasi talabalar uchun 15 dollarni tashkil qiladi, menimcha, agar Arduino kodini dasturlash uchun bir necha soatdan ko'proq vaqt sarflasangiz, bunga arziydi.

FastLED vs Neopixel

Men FastLED -ni o'z loyihalarimda ishlataman, chunki men Internetda u uchun yaratilgan boshqa funktsiyalarni topdim va shu nuqtada men uni ishlatib ko'plab loyihalarni yaratdim, shuning uchun menda qayta ishlatish uchun juda ko'p kod bor. Ishonchim komilki, Neopixel kutubxonasi, agar siz etarli darajada ishlagan bo'lsangiz, yaxshi ishlaydi. Men o'zimning barcha maxsus funktsiyamni GitHub -da boshqa odamlar foydalanishi uchun qo'yishni rejalashtiryapman, lekin men hali bunga o'rganmaganman.

7 -qadam: dasturlash bo'yicha maslahatlar

Umumiy tuzilish

Men o'z ishimda nazoratchi -muhandisman va biz ko'pincha PLC dasturlash deb nomlangan dasturlash uslubidan foydalanamiz. Bu tur Arduino -ga o'xshaydi, chunki u har bir necha millisekundda doimiy ravishda ishlaydigan va koddagi turli "holatlar" orasidan o'tuvchi kirish/chiqish bilan shug'ullanadigan pastadirga ega. Masalan, kod konveyer bilan bog'liq bo'lgan qadamni bosib o'tishi mumkin, bu erda konveyerda laganda bo'lsa, u 45 holatiga o'tadi, lekin laganda bo'lmasa, u 100 holatiga o'tadi. Bu dasturlash uslubi mening kodimni ilhomlantirdi. Shtat raqami o'rniga satrni o'qish uchun ba'zi o'zgartirishlar kiritdim.

Men global o'zgaruvchini (commandString) ishlataman, loyihaning qaysi yorug'lik holatini kuzatib boraman. Bundan tashqari, men "jonli" deb nomlangan booleanni ham ishlataman, u funksiyadan chiqib ketadimi yoki yo'qligini aniqlaydi. Shunday qilib, siz Blynk -dagi "Klassik rejim" tugmachasini bosganingizda, mening kodim animatsiyani noto'g'ri (joriy funktsiyadan chiqib ketishi uchun) qilib belgilaydi va commandString -ni "RunClassic" ga o'rnatadi. Har bir funktsiya "CheckInput" funktsiyasini ishga tushirish orqali doimo Blynk, Alexa va OTAUpdate kirishini tekshiradi.

Global o'zgaruvchilar

Men loyihamdagi ba'zi sozlamalarni kuzatish uchun global o'zgaruvchilardan foydalanaman. Bu o'zgaruvchilar mening sozlash kodimdan oldin ishga tushiriladi, bu esa ularni mening kodimdagi har qanday funktsiyaga kirish imkonini beradi.

  • global yorqinlik (0-255)
  • globalSpeed - har qanday jonlantirilgan funktsiyalarning animatsion tezligi. Bu loyihada kamalib borayotgan kamalaklar bor
  • globalDelayTime - FastLED har bir LEDga ma'lumot yozish uchun taxminan 30 mikrosaniyaga muhtoj, shuning uchun men bu o'zgaruvchini NUM_LEDS * 30/1000 + 1 ga qo'ydim; buyruq uzilmasligi uchun FastLED.show () ni bajarganimdan keyin kechiktirishni (globalDelayTime) qo'shing.
  • _r, _g, _b - global RGB qiymatlari. Shunday qilib, turli xil rang sxemasi tugmalari global r/g/b qiymatlarini o'zgartirishi mumkin va oxirida hamma bir xil funktsiyani chaqiradi

Arduino OTA yangilash boshqaruvchisi nomlanishi

Havoni yangilash funktsiyasidan foydalangan holda tekshirgichni qanday nomlash kerakligini tushunmagunimcha, menga zerikarli qidirish kerak bo'ldi. Bu satrni "ArduinoOTA.onStart (" -) dan oldin kodingizning sozlash bo'limiga kirgizing.

ArduinoOTA.setHostname ("IronMan");

Visual Studio maslahatlari bilan vMicro

Ba'zida vizual studiya C ++ standart fayllari kabi chuqur fayllar bilan bog'liq ba'zi muammolarni aniqlaydi va ba'zi xatolarga yo'l qo'yadi. Qo'llab -quvvatlovchi fayllar emas, balki ochiq loyihangizda xatolar bo'lmaguncha, har xil turdagi xato xabarlarini yoqishga/o'chirishga harakat qiling. Siz kodni Arduino IDE -da ochishingiz va u erda kompilyatsiya qilinishini yoki xato kodini berishni bilib olishingiz mumkin.

FastLED

Menga xabar bering, agar bu ko'rsatma bir necha haftadan ko'proq vaqt davomida ishlayotgan bo'lsa va men o'zimning maxsus funktsiyalarni GitHub -ga qanday o'rnatishni hali ham tushunmagan bo'lsam.

FastLED ESP8266 bilan mos keladi, lekin pin ta'riflari noto'g'ri bo'lishi mumkin. FastLED hujjatlarida #include dan oldin quyidagi qatorlardan birini kiritishga urinib ko'rishingiz mumkinligi aytilgan

  • //#FASTLED_ESP8266_RAW_PIN_ORDER ni aniqlang
  • //#FASTLED_ESP8266_NODEMCU_PIN_ORDER ni aniqlang
  • //#FASTLED_ESP8266_D1_PIN_ORDER ni aniqlang

Biroq, men uchalasini ham sinab ko'rdim va hech qachon mening pinlarim mos kelmadi. Hozir men oxirgi qatorni ishlatyapman va men FastLEDga D2 pinidan foydalanishni aytganimda, u aslida tekshirgichimda D4 pinini ishlatishini qabul qildim.

Mening chiroqlarim neopixellarning xitoylik arzon nokauti bo'lsa ham, men FastLEDga ularni sozlashda Neopixel sifatida qarashlarini aytaman.

  • FastLED.addLeds (LEDlar, NUM_LEDS);
  • FastLED.setCorrection (TypicalLEDStrip);
  • //FastLED.setMaxPowerInVoltsAndMilliamps (5, maxMilliamps); // Batareya bilan ishlaydigan loyihalar uchun foydalidir
  • FastLED.setBrightness (globalBright);

8 -qadam: Yakuniy mahsulot

Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot
Yakuniy mahsulot

Ta-da!

Menga savollar yoki sharhlar yozing - men bu narsalarni yaxshi ko'raman va boshqalarga ajoyib loyihalarni amalga oshirishda yordam berishni xohlayman. Men qilgan boshqa loyihalar va ba'zi fotosuratlarim uchun veb -saytimni tekshiring: www.jacobathompson.com

Tavsiya: