Mundarija:

TfCD - Plus: 7 qadam
TfCD - Plus: 7 qadam

Video: TfCD - Plus: 7 qadam

Video: TfCD - Plus: 7 qadam
Video: TFCD Arduino face tracking device 2024, Iyul
Anonim
Image
Image
Tarkibi
Tarkibi

Plus - bu minimal aqlli yorug'lik, bu nafaqat odamlarni ob -havo haqida xabardor qiladi, balki plyusni aylantirish orqali yorug'lik rangidagi o'zgarishlar foydalanuvchilarga yoqimli tajriba yaratadi. Uning shakli foydalanuvchiga bir nechta modullarni birlashtirish yoki do'stlari qo'ygan plyusli ulkan chiroqni yaratish imkoniyatini beradi. Bu yorug'lik loyihasi TU Delft universitetining Advanced Concept Design (ACD) kursining bir qismi va ilhom manbai sifatida TfCD amaliy qo'llanilgan texnologiya.

1 -qadam: ingredientlar

Tarkibi
Tarkibi
Tarkibi
Tarkibi

1 Raspberry pi nol w

1 Groove Adxl345 tezlatgich

4 ta Ws2812b LED

1 Prototiplash taxtasi

3D bosma va lazerli kesmalar

2 -qadam: Uskuna

Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna

LEDlar

Neopixel LEDlarida 4 ta pin bor: +5V, GND, Ma'lumotlarni kiritish va Ma'lumotlarni chiqarish.

  1. Malina pi ning 4 -pinasi barcha LEDlarning +5V ga ulangan
  2. Malinali pi 6 -pin barcha LEDlarning GND ga ulangan
  3. Ma'lumotlar birinchi diodli pin, malina pi 12 -piniga ulangan.
  4. Birinchi LEDning Ma'lumot chiqish pinasi ikkinchisining Ma'lumotlariga va boshqalarga ulanadi.

Iltimos, yaxshiroq tushunish uchun simlar sxemasiga qarang.

Akselerometr

Akselerometrda 4 ta pin bor: VCC, GND, SDA va SCL.

  1. Malina pi ning 1 -pinasi VCC ga ulangan.
  2. Malinali pi 3 -pin PIN -kodi SCL ga ulangan.
  3. Malina pi ning 5 -pinasi SDA ga ulangan.
  4. Malinali pi ning 9 -pinasi GND ga ulangan.

Qurmoq

  1. Qulaylik uchun, LEDlar prototip taxtasiga lehimlanishi mumkin. Biz taxtani plyus shaklida kesishga qaror qildik, shunda u 3D dizayndagi korpusga juda mos keladi.
  2. Biz bortdagi LEDlarni lehimlaganimizdan so'ng, biz 0,1 dyuymli svetodiod va LEDlar orasidagi ulanish uchun o'tish simlarini lehimlaymiz. Sarlavha ulagichi malina pi ni ajratish va kelajakdagi loyihada qayta ishlatish uchun ishlatiladi.

3 -qadam: dasturiy ta'minot

Dasturiy ta'minot
Dasturiy ta'minot

Raspberry Pi operatsion tizimi tasviri

Biz avval Raspberry Pi -ni ishga tushirishimiz kerak. Buning uchun biz quyidagi bosqichlarni bajaramiz:

  1. Bu yerdan Raspbian -ning so'nggi versiyasini yuklab oling. Siz uni to'g'ridan -to'g'ri yoki torrent orqali yuklab olishingiz mumkin, yuklab olingan OSni SD -kartaga yozish uchun sizga tasvir yozuvchisi kerak bo'ladi (Raspberry Pi B+ modeli va Raspberry Pi Zero uchun micro SD -karta).
  2. Shunday qilib, "win32 disk tasvirini" bu erdan yuklab oling. SD -kartani noutbukga joylashtiring va tasvir yozuvchisini ishga tushiring. Ochgandan so'ng, yuklab olingan Raspbian rasm faylini ko'rib chiqing va tanlang. To'g'ri qurilmani tanlang, ya'ni SD -kartani aks ettiruvchi disk. Agar tanlangan disk (yoki qurilma) SD -kartadan farq qilsa, boshqa tanlangan disk buziladi. Xo'sh, ehtiyot bo'ling.
  3. Shundan so'ng, pastki qismidagi "Yozish" tugmasini bosing. Misol tariqasida, quyidagi rasmga qarang, bu erda SD -karta (yoki micro SD) drayveri "G: \" harfi bilan tasvirlangan, endi OS normal foydalanishga tayyor. Ammo, bu qo'llanmada biz Raspberry Pi -ni boshsiz rejimda ishlatmoqchimiz. Bu shuni anglatadiki, unga jismoniy monitor va klaviatura ulanmagan!
  4. SD -kartani yoqib bo'lgach, uni kompyuterdan chiqarmang! SD -kartadagi config.txt faylini ochish uchun matn muharriridan foydalaning. Pastki qismga o'ting va oxirgi qator sifatida dtoverlay = dwc2 qo'shing:
  5. Config.txt faylini oddiy matn sifatida saqlang va keyin cmdline.txt-ni oching Rootwaitdan so'ng (birinchi satrda oxirgi so'z) bo'sh joy qo'shing va keyin modullar-load = dwc2, g_ether.
  6. Endi SD -kartani shaxsiy kompyuteringizdan chiqarib oling va Raspberry Pi -ga joylashtiring va USB -kabel yordamida kompyuteringizga ulang. Operatsion tizim ishga tushirilgach, yangi Ethernet gadjet qurilmasi topilganini ko'rishingiz kerak.
  7. Kengashga ulanish va uni masofadan boshqarish uchun ssh [email protected] dan foydalanishingiz mumkin. Boshsiz ishlash bo'yicha batafsil ko'rsatmalar uchun bu erga o'ting.

Rpi_ws281x kutubxonasi - bu Raspberry Pi bilan NeoPixel -dan foydalanish imkoniyatini beradigan kalit.

Avval kutubxonani kompilyatsiya qilish uchun kerakli vositalarni o'rnatishimiz kerak. Raspberry Pi-da: sudo apt-get update && sudo apt-get install build-essential python-dev git scons swig Endi kutubxonani yuklab olish va kompilyatsiya qilish uchun ushbu buyruqlarni bajaring:

git clone https://github.com/jgarff/rpi_ws281x.git && cd rpi_ws281x && scons Nihoyat, kutubxona muvaffaqiyatli tuzilgandan so'ng, biz uni python uchun o'rnatishimiz mumkin:

cd python && sudo python setup.py install Endi LEDlarni boshqaruvchi python kodi keladi. Kod sizga yordam beradigan ba'zi izohlar bilan juda oddiy. neopixel importidan * # NeoPixel konfiguratsiyasi LED_PIN = 18 # Raspberry Pi ning GPIO piniga ulangan LED_BRIGHTNESS = 255 # Eng qorong'i uchun 0 ga, eng yorug 'uchun 255 ga o'rnatildi LED_COUNT = 4 # LED piksellar soni = Adafruit_NeoPixel (LED_COUNT, LED_PIN, 800000, 5, False, LED_BRIGHTNESS, 0, wSW2811_STRIP_GRB) # Kutubxona stripini boshlang.begin () strip.setPixelColor (0, Rang (255, 255, 255)) strip.show ()

ADXL345 uchun haydovchi

Biz tanlagan akselerometr sensori tashqi dunyo bilan aloqa qilish uchun I2C interfeysiga ega. Yaxshiyamki, biz uchun Raspberry Pi ham I2C interfeysiga ega. Biz uni o'z kodimizda ishlatishga ruxsat berishimiz kerak.

Sudo raspi-config yordamida Raspbian konfiguratsiya vositasiga qo'ng'iroq qiling. Ishlayotganingizdan so'ng, Interfacing Options, Advanced Options -ga o'ting va I2C -ni yoqing, Python -da I2C interfeysidan foydalanishimiz uchun tegishli python modullarini o'rnating:

sudo apt-get install python-smbus i2c-tools Quyidagi python kodi akselerometr sensori bilan bog'lanish va o'z maqsadlarimiz uchun uning registr qiymatlarini o'qish imkonini beradi. smbus import tuzilmasi # Accelerometer konfiguratsiyalari bus = smbus. SMBus (1) manzil = 0x53 daromad = 3.9e-3 bus.write_byte_data (manzil, 45, 0x00) # Kutish rejimiga o'tish bus.write_byte_data (manzil, 44, 0x06) # 6,5 Gts chastotali bus.write_byte_data (manzil, 45, 0x08) # O'lchov rejimiga o'ting # Sensordan ma'lumotlarni o'qing buf = bus.read_i2c_block_data (manzil, 50, 6) ("> hhh", bufer (bytearray (buf)), 0)

x = float (ma'lumotlar [0]) * daromad

y = float (ma'lumotlar [1]) * daromad

z = float (ma'lumotlar [2]) * daromad

Harakat detektori

Biz qilayotgan yorug'likning o'ziga xos xususiyatlaridan biri shundaki, u interaktiv rejimga (yorug'lik aylanishga qarab o'zgaradi) va ob -havo ma'lumoti rejimiga o'tish uchun harakatni (yoki yo'qligini) aniqlay oladi (bu erda ob -havo ma'lumotlariga qarab yorug'lik o'zgaradi). bugun uchun). Quyidagi kod 3-o'qning tezlanish qiymatlarini o'qish va harakat bo'lganda bizni ogohlantirish uchun oldingi funktsiyadan foydalanadi.

accel = getAcceleration ()

dx = abs (prevAccel [0] - tezlashuv [0])

dy = abs (prevAccel [1] - tezlashuv [1])

dz = abs (oldingiAccel [2] - tezlashuv [2])

agar dx> moveThreshold yoki dy To> moveThreshold yoki dz> moveThreshold bo'lsa:

bosib chiqarish "ko'chirildi"

ko'chirildi = To'g'ri

boshqa:

ko'chirildi = noto'g'ri

Ob -havo API

Ob -havo ma'lumotlarini bilish uchun biz Yahoo Weather -dan foydalanishimiz mumkin. Bu juda murakkab bo'lishi mumkin bo'lgan Yahoo Weather Rest API bilan gaplashishni o'z ichiga oladi. Yaxshiyamki, biz uchun qiyin qismi allaqachon piton uchun ob-havo moduli ko'rinishida hal qilingan.

  1. Avval biz ushbu modulni o'rnatishimiz kerak: sudo apt install python-pip && sudo pip install weather-api
  2. Iltimos, ushbu modul haqida qo'shimcha ma'lumot olish uchun muallifning veb -saytiga tashrif buyuring.

Quyidagi kodni o'rnatganingizdan so'ng, hozirgi ob -havo ma'lumoti olinadi

ob -havo importidan Weatherweather = Weather ()

manzil = weather.lookup_by_location ("dublin")

shart = manzil.shart ()

chop etish (shart.text ())

Hammasini bir joyga to'plash

Yuqoridagi barcha qismlarni bog'laydigan loyihaning to'liq kodini bu erda topishingiz mumkin.

Python skriptini yuklash vaqtida avtomatik ishga tushirish

Malinali pi -ni qutiga solib qo'yish va uni har safar quvvat manbaiga ulashda kodimizni ishga tushirish uchun biz yuklash paytida kod avtomatik ravishda ishga tushirilganligiga ishonch hosil qilishimiz kerak. Buning uchun biz cron deb nomlangan asbobdan foydalanamiz.

  1. Avval cron asbobini quyidagicha chaqiring: sudo crontab -e
  2. Oldingi qadamlar konfiguratsiya faylini ochadi, unda biz quyidagi qatorni qo'shamiz:

    @qayta yuklash python /home/pi/light.py &

4 -qadam: Modellashtirish va 3D bosib chiqarish

Modellashtirish va 3D bosib chiqarish
Modellashtirish va 3D bosib chiqarish
Modellashtirish va 3D bosib chiqarish
Modellashtirish va 3D bosib chiqarish

Plus 3D modeli Solidworks -da ishlab chiqarilgan va. Stl formatida saqlangan. Keyin 3D bosib chiqarish uchun. Stl fayli Cura dasturiga import qilindi. Plyusning har bir tomoni ishlab chiqarish uchun 2:30 soat davom etdi; shuning uchun har bir to'liq plyusni chop etish uchun taxminan 5 soat vaqt kerak bo'ldi. Shaffof tomonlar uchun pleksiglas lazer bilan kesilgan.

5 -qadam: yig'ish

O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish

3D bosilgan qism, elektronika va dasturiy ta'minot bilan biz nihoyat yakuniy mahsulotni yig'ishimiz mumkin.

  1. 3D bosilgan yuqori va pastki plitalar biz kutganimizdan ko'ra shaffofroq. Alyuminiy folga qatlami yorug'lik oqishi muammosini hal qildi.
  2. Biroq, bu varaqlar Supero'tkazuvchilar va bizning himoyalanmagan sxemamizda qisqa tutashuvga olib kelishi mumkin. Shunday qilib, tepaga oq kartochkaning yana bir qatlami yopishtirilgan.
  3. Pleksiglasning tarqoq segmentlari yon plitalardan biriga yopishtirilgan.
  4. 3D bosilgan yon panellardan birida teshik ochiladi. Bu elektr shnuridan o'tishimiz uchun.
  5. Elektr shnuri teshikdan o'rnatilgach, biz uni prototip taxtamizga lehimlaymiz.
  6. Biz sensorni malina pi ga biriktiramiz va keyin uni ulagichga ulaymiz.
  7. Yakuniy mahsulotni olish uchun biz 2 qismni biriktiramiz.
  8. Ixtiyoriy ravishda, siz doimiyroq ulanish uchun 2 qismni yopishtirishingiz mumkin. Shuni yodda tutingki, agar siz keyinchalik kodni o'zgartirmoqchi bo'lsangiz, yopishtirilgandan keyin qutiga kirish qiyin bo'lishi mumkin.

Tavsiya: