Բովանդակություն:

TfCD - Plus: 7 քայլ
TfCD - Plus: 7 քայլ

Video: TfCD - Plus: 7 քայլ

Video: TfCD - Plus: 7 քայլ
Video: TFCD Arduino face tracking device 2024, Հուլիսի
Anonim
Image
Image
Բաղադրությունը
Բաղադրությունը

Plus- ը նվազագույն խելացի լույս է, որը ոչ միայն տեղեկացնում է մարդկանց եղանակային պայմանների մասին, այլև օգտվողների համար ստեղծում է հաճելի փորձ `լույսի գույնի փոփոխությունների արդյունքում` պտտելով գումարածը: Նրա ձևը հնարավորություն է տալիս օգտվողին համատեղել մի քանի գումարած մոդուլներ կամ ստեղծել հսկայական լամպ `ընկերների տեղադրած բազմաթիվ գումարած կտորներով: Լուսավորության այս նախագիծը TU Delft համալսարանի Advanced Concept Design (ACD) դասընթացի մի մասն է, և տեխնոլոգիան, որն իրականացվում է ՝ օգտագործելով TfCD գործնականը որպես ոգեշնչման աղբյուր:

Քայլ 1: Բաղադրությունը

Բաղադրությունը
Բաղադրությունը
Բաղադրությունը
Բաղադրությունը

1 Ազնվամորի pi զրո w

1 ակոս Adxl345 արագացուցիչ

4 LED Ws2812b

1 Նախատիպերի տախտակ

3D տպագիր և լազերային կտրված պատյաններ

Քայլ 2: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

LED- ները

Neopixel LED- ները ունեն 4 կապում անուններ ՝ +5V, GND, Data In և Data out:

  1. Ազնվամորու pi- ի 4 -րդ կապը միացված է բոլոր LED- ների +5V- ին
  2. Ազնվամորու pi- ի 6 -րդ կապը միացված է բոլոր LEDS- ի GND- ին
  3. Տվյալներ Առաջին LED- ի կապում միացված է ազնվամորու pi- ի 12 -րդ կապին:
  4. Առաջին LED- ի Data out pin- ը միացված է երկրորդի Data- ին և այլն:

Խնդրում ենք ավելի լավ հասկանալու համար դիտեք էլեկտրագծերի դիագրամը:

Արագացուցիչ

Արագացուցիչի հաշվիչն ունի 4 կապ ՝ VCC, GND, SDA և SCL:

  1. Ազնվամորու pi- ի 1 -ին կապը միացված է VCC- ին:
  2. Ազնվամորու pi- ի 3 -րդ կապը միացված է SCL- ին:
  3. Ազնվամորու pi- ի 5 -րդ կապը միացված է SDA- ին:
  4. Ազնվամորու pi- ի 9 -րդ կապը միացված է GND- ին:

Կառուցել

  1. Հարմարության համար LED- ները կարող են զոդվել նախատիպային տախտակի վրա: Մենք որոշեցինք տախտակը կտրել պլյուսի տեսքով, որպեսզի այն լավ տեղավորվի 3D նախագծված պատյանում:
  2. Տախտակի վրա LED- ները միացնելուց հետո մենք կպցնում ենք թռիչքային լարերը, որպեսզի կապերը կազմվեն 0.1 դյույմանոց գլխիկի և LED- ների միջև: Վերնագրի միակցիչն օգտագործվում է ազնվամորու pi- ն անջատելու և նորից օգտագործելու համար ապագա ծրագրի համար:

Քայլ 3: Softwareրագրակազմ

Ծրագրային ապահովում
Ծրագրային ապահովում

Raspberry Pi օպերացիոն համակարգի պատկեր

Մենք նախ պետք է գործարկենք Raspberry Pi- ն: Դա անելու համար մենք հետևում ենք հետևյալ քայլերին.

  1. Ներբեռնեք Raspbian- ի վերջին տարբերակը այստեղից: Դուք կարող եք այն ներբեռնել ուղղակիորեն կամ հեղեղատարների միջոցով: Ձեզ անհրաժեշտ կլինի պատկերի գրող `ներբեռնված ՕՀ -ն SD քարտի մեջ գրելու համար (միկրո SD քարտ` Raspberry Pi B+ մոդելի և Raspberry Pi Zero- ի դեպքում):
  2. Այսպիսով, ներբեռնեք «win32 սկավառակի պատկերը» այստեղից: Տեղադրեք SD քարտը նոութբուքի/համակարգչի մեջ և գործարկեք պատկերի գրողը: Բացելուց հետո թերթեք և ընտրեք ներբեռնված Raspbian պատկերի ֆայլը: Ընտրեք ճիշտ սարքը, այն SD քարտը ներկայացնող կրիչն է: Եթե ընտրված սկավառակը (կամ սարքը) տարբերվում է SD քարտից, ապա ընտրված մյուս սկավառակը վնասված կլինի: Ուրեմն զգույշ եղեք:
  3. Դրանից հետո կտտացրեք «Գրեք» կոճակին ներքևում: Որպես օրինակ ՝ տես ստորև բերված պատկերը, որտեղ SD քարտի (կամ միկրո SD) կրիչը ներկայացված է «G: \» տառով: ՕՀ -ն այժմ պատրաստ է սովորական օգտագործման համար: Այնուամենայնիվ, այս ձեռնարկում մենք պատրաստվում ենք օգտագործել Raspberry Pi- ն անգլուխ ռեժիմում: Սա նշանակում է ՝ առանց դրան կցված ֆիզիկական մոնիտորի և ստեղնաշարի:
  4. SD քարտը այրելուց հետո մի՛ հանեք այն ձեր համակարգչից: SD քարտում գտնվող config.txt ֆայլը բացելու համար օգտագործեք տեքստային խմբագիր: Գնացեք ներքև և ավելացրեք dtoverlay = dwc2 որպես վերջին տող.
  5. Պահպանեք config.txt ֆայլը որպես պարզ տեքստ, այնուհետև բացեք cmdline.txt rootwait- ից հետո (առաջին տողի վերջին բառը) ավելացրեք բացատ, այնուհետև modules-load = dwc2, g_ether:
  6. Այժմ հեռացրեք SD քարտը ձեր համակարգչից և տեղադրեք այն Raspberry Pi- ի մեջ և միացրեք այն ձեր համակարգչին ՝ օգտագործելով USB մալուխ: ՕՀ -ի գործարկումից հետո դուք պետք է տեսնեք Ethernet Gadget- ի նոր սարքի հայտնաբերումը:
  7. Դուք կարող եք օգտագործել ssh [email protected] ՝ տախտակին միանալու և այն հեռակա կարգով կառավարելու համար: Գլխազերծ գործողության վերաբերյալ ավելի մանրամասն հրահանգների համար անցեք այստեղ:

Rpi_ws281x գրադարանը այն բանալին է, որը հնարավոր է դարձնում NeoPixels- ի օգտագործումը Raspberry Pi- ով:

Նախ պետք է տեղադրել գրադարանը կազմելու համար անհրաժեշտ գործիքները: Ձեր Raspberry Pi գործարկման մեջ. Sudo apt-get update && sudo apt-get install build-important python-dev git scons swig Այժմ գործարկեք այս հրամանները ՝ գրադարանը ներբեռնելու և կազմելու համար.

git clone https://github.com/jgarff/rpi_ws281x.git && cd rpi_ws281x && scons Վերջապես, գրադարանը հաջողությամբ կազմվելուց հետո, մենք կարող ենք տեղադրել այն python- ի համար ՝ օգտագործելով.

cd python && sudo python setup.py install Այժմ գալիս է python կոդը, որը վարում է LED- ները: Կոդը բավականին պարզ է ՝ որոշ մեկնաբանություններով, որոնք կօգնեն ձեզ: neopixel ներմուծումից * # NeoPixel կոնֆիգուրացիաներ LED_PIN = 18 # Raspberry Pi- ի GPIO կապը միացված է պիքսելներին LED_BRIGHTNESS = 255 # Սահմանել 0 -ի համար ամենամութի և 255 -ի համար ամենապայծառ LED_COUNT = 4 # LED պիքսելների շերտի քանակ = Adafruit_NeoPixel (LED_COUNT, LED_PIN, 5, Կեղծ, LED_BRIGHTNESS, 0, ws. WS2811_STRIP_GRB) # Գրադարանի սկզբնավորեք strip.begin () strip.setPixelColor (0, Color (255, 255, 255)) strip.show ()

ADXL345 վարորդ

Մեր ընտրած արագացուցաչափի ցուցիչն ունի I2C միջերես արտաքին աշխարհի հետ հաղորդակցվելու համար: Ի ուրախություն մեզ, Raspberry Pi- ն ունի նաև I2C ինտերֆեյս: Մենք պարզապես պետք է հնարավորություն տանք այն օգտագործել մեր սեփական ծածկագրում:

Callանգահարեք Raspbian կազմաձևման գործիքը ՝ օգտագործելով sudo raspi-config: Գործարկելուց հետո գնացեք Interfacing Options, Advanced Options և ապա միացրեք I2C: Տեղադրեք համապատասխան python մոդուլները, որպեսզի մենք կարողանանք օգտագործել I2C ինտերֆեյսը python- ում.

sudo apt-get install python-smbus i2c-tools Հետևյալ python ծածկագիրը թույլ է տալիս շփվել արագացուցիչի տվիչի հետ և կարդալ դրա գրանցման արժեքները մեր իսկ նպատակների համար: ներմուծել smbus ներմուծել կառուցվածք # Արագացուցիչի կոնֆիգուրացիաների ավտոբուս = smbus. SMBus (1) հասցե = 0x53 շահույթ = 3.9e-3 bus.write_byte_data (հասցե, 45, 0x00) # Անցնել սպասման ռեժիմի ավտոբուս: գրել_byte_data (հասցե, 44, 0x06) # Թողունակություն 6.5 Հց bus.write_byte_data (հասցե, 45, 0x08) # Անցնել չափման ռեժիմ # Կարդալ տվյալները սենսորից buf = bus.read_i2c_block_data (հասցե, 50, 6) # Տվյալների փաթեթավորում int16_t- ից python ամբողջական տվյալներ = struct.unpack_from ("> hhh", բուֆեր (bytearray (buf)), 0)

x = float (տվյալներ [0]) * շահույթ

y = float (տվյալներ [1]) * շահույթ

z = float (տվյալներ [2]) * շահույթ

Շարժման դետեկտոր

Մեր ստեղծած լույսի առանձնահատկություններից մեկն այն է, որ այն կարող է հայտնաբերել շարժում (կամ դրա բացակայություն) ինտերակտիվ ռեժիմ մտնելու համար (որտեղ լույսը փոխվում է ռոտացիայի հիման վրա) և եղանակի կանխատեսման ռեժիմ (որտեղ լույսը փոխվում է ՝ կախված եղանակի կանխատեսումից) այսօրվա համար): Ստորև բերված կոդը օգտագործում է նախորդ գործառույթը ՝ 3 առանցքների արագացման արժեքները կարդալու և շարժման ժամանակ մեզ զգուշացնելու համար:

accel = getAcceleration ()

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

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

dz = abs (prevAccel [2] - accel [2])

եթե dx> moveThreshold կամ dy To> moveThreshold կամ dz> moveThreshold:

տպագրությունը «տեղափոխվեց»

տեղափոխվել = Trueշմարիտ

այլ:

տեղափոխված = Սխալ

Եղանակի API

Եղանակի կանխատեսում ստանալու համար մենք կարող ենք օգտագործել Yahoo Weather- ը: Սա ներառում է Yahoo Weather Rest API- ի հետ խոսելը, որը կարող է բավականին բարդ լինել: Բարեբախտաբար, մեզ համար դժվարին հատվածն արդեն խնամված է պիտոնի համար եղանակային-api մոդուլի տեսքով:

  1. Նախ պետք է տեղադրել այս մոդուլը ՝ օգտագործելով sudo apt install python-pip && sudo pip install weather-api
  2. Այս մոդուլի մասին լրացուցիչ տեղեկությունների համար խնդրում ենք այցելել հեղինակի կայքը:

Տեղադրելուց հետո հետևյալ կոդը ստանում է այս պահի եղանակային պայմանները

եղանակի ներմուծումից Weatherweather = Եղանակ ()

գտնվելու վայրը = weather.lookup_by_location ('dublin')

վիճակը = գտնվելու վայրը: վիճակը ()

տպել (պայման. տեքստ ())

Այդ ամենը միասին դնելը

Նախագծի ամբողջ ծածկագիրը, որը կապում է վերը նշված բոլոր կտորները, կարող եք գտնել այստեղ:

Ավտոմատ սկսել Python սցենարը բեռնման ժամանակ

Որպեսզի կարողանանք ազնվամորու pi- ն դնել տուփի մեջ և թող այն գործի դնի մեր կոդը ամեն անգամ, երբ այն միացնում ենք հոսանքին, մենք պետք է համոզվենք, որ կոդը ինքնաբերաբար գործարկվում է բեռնման ընթացքում: Դա անելու համար մենք օգտագործում ենք մի գործիք, որը կոչվում է cron:

  1. Նախ զանգահարեք cron գործիքը ՝ օգտագործելով sudo crontab -e
  2. Նախորդ քայլերը կբացեն կազմաձևման ֆայլ, որում մենք ավելացնում ենք հետևյալ տողը.

    @reboot python /home/pi/light.py &

Քայլ 4: Մոդելավորում և 3D տպում

Մոդելավորում և 3D տպագրություն
Մոդելավորում և 3D տպագրություն
Մոդելավորում և 3D տպագրություն
Մոդելավորում և 3D տպագրություն

Plus- ի 3D մոդելը պատրաստվել է Solidworks- ում և պահպանվել որպես. Stl ձևաչափով: Այնուհետեւ մոդելը 3D տպելու համար. Stl ֆայլը ներմուծվեց Cura ծրագրաշարում: Պլյուսի յուրաքանչյուր կողմը պատրաստեց 2:30 ժամ: ուստի յուրաքանչյուր ամբողջական Plus- ի տպագրությունը տևեց մոտ 5 ժամ: Իսկ թափանցիկ կողմերի համար պլեքսիգլասը լազերային կտրված էր:

Քայլ 5: Հավաքում

Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով

Եռաչափ տպագրված մասով, ձեռքի տակ եղած էլեկտրոնիկայով և ծրագրով, մենք վերջապես կարող ենք հավաքել վերջնական արտադրանքը:

  1. Մենք գտանք, որ 3D տպված վերին և ստորին սալերը ավելի թափանցիկ էին, քան սպասվում էր: Ալյումինե փայլաթիթեղի շերտը լուծեց լույսի արտահոսքի հարցը:
  2. Այնուամենայնիվ, այս թերթերը հաղորդիչ են և կարող են կարճ շորտեր առաջացնել մեր անպաշտպան շրջագծում: Այսպիսով, սպիտակ քարտի տախտակի մեկ այլ շերտ սոսնձված է վերևում:
  3. Պլեքսիգլասի ցրված հատվածները սոսնձված են կողային թիթեղներից մեկին:
  4. Կողքի վրա 3D տպված վահանակներից մեկի վրա փոս է փորված: Սա այնպես է, որ մենք կարողանանք անցնել հոսանքի լարով:
  5. Մի անգամ, հոսանքի լարը տեղադրված է անցքի միջով, մենք այն կպցնում ենք մեր նախատիպերի տախտակին:
  6. Մենք սենսորը ամրացնում ենք ազնվամորի պիին, այնուհետև այն միացնում միակցիչին:
  7. Մենք ամրացնում ենք 2 կտորը ՝ մեր վերջնական արտադրանքը ստանալու համար:
  8. Ptionանկության դեպքում կարող եք սոսնձել 2 կտորը `ավելի մշտական կապ հաստատելու համար: Այնուամենայնիվ, տեղյակ եղեք, որ գուցե դժվար լինի տուփ մտնելուց հետո, եթե այն ցանկանում եք փոխել կոդը:

Խորհուրդ ենք տալիս: