INHOUDSOPGAWE:

TfCD - Plus: 7 stappe
TfCD - Plus: 7 stappe

Video: TfCD - Plus: 7 stappe

Video: TfCD - Plus: 7 stappe
Video: TFCD Arduino face tracking device 2024, Julie
Anonim
Image
Image
Bestanddele
Bestanddele

Plus is 'n minimale slim lig, wat mense nie net inlig oor die weersomstandighede nie, maar ook 'n aangename ervaring vir gebruikers bied deur die veranderinge in die kleur van lig deur die plus te draai. Die vorm gee die gebruiker die geleentheid om verskeie plus -modules te kombineer of 'n groot lamp te skep met baie plus -stukke wat deur vriende geplaas is. Hierdie beligtingsprojek is deel van die Advanced Concept Design (ACD) -kursus aan die TU Delft -universiteit, en die tegnologie wat geïmplementeer word deur TfCD -praktyk as inspirasiebron te gebruik.

Stap 1: Bestanddele

Bestanddele
Bestanddele
Bestanddele
Bestanddele

1 Framboos pi nul w

1 Groove Adxl345 versnellingsmeter

4 Ws2812b LED

1 Prototipe bord

3D-gedrukte en lasergesnyde omhulsels

Stap 2: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware
Hardeware
Hardeware
Hardeware
Hardeware

LED's

Die Neopixel LED's het 4 penne met die naam: +5V, GND, Data In en Data out.

  1. Speld 4 van die framboospi is gekoppel aan die +5V van alle LED's
  2. Speld 6 van die framboos pi is gekoppel aan die GND van alle LED's
  3. Data In pen van die eerste LED is gekoppel aan pen 12 op die framboos pi.
  4. Die Data out -pen van die eerste LED is gekoppel aan die Data in van die tweede ensovoorts.

Kyk na die bedradingsdiagram vir 'n beter begrip.

Versnellingsmeter

Die versnellingsmeter het vier penne met die naam: VCC, GND, SDA en SCL.

  1. Speld 1 van die framboos -pi is aan VCC gekoppel.
  2. Speld 3 van die framboos -pi is aan SCL gekoppel.
  3. Speld 5 van die framboospi is aan SDA gekoppel.
  4. Speld 9 van die framboospi is aan GND gekoppel.

Bou

  1. Vir die gemak kan die LED's op 'n prototipe bord gesoldeer word. Ons het besluit om die bord in die vorm van 'n pluspunt te sny sodat dit goed pas in die 3D -ontwerpte omhulsel.
  2. Sodra ons die LED's op die bord gesoldeer het, soldeer ons jumperdrade om die verbindings tussen 'n 0,1 "kopkop en die LED's te maak.

Stap 3: sagteware

Sagteware
Sagteware

Raspberry Pi -bedryfstelselbeeld

Ons moet eers die Raspberry Pi aan die gang kry. Om dit te doen, volg ons die volgende stappe:

  1. Laai die nuutste weergawe van Raspbian hier af. U kan dit direk of via die torrents aflaai. U benodig 'n beeldskrywer om die afgelaaide bedryfstelsel op die SD -kaart in te skryf (mikro -SD -kaart in geval van Raspberry Pi B+ -model en Raspberry Pi Zero).
  2. Laai dus die 'win32 disk imager' hier af. Plaas die SD -kaart in die skootrekenaar/rekenaar en voer die beeldskrywer uit. Sodra dit oopgemaak is, blaai deur en kies die afgelaaide Raspbian -prentlêer. Kies die korrekte toestel, dit is die skyf wat die SD -kaart verteenwoordig. As die gekose skyf (of toestel) verskil van die SD -kaart, word die ander gekose stasie beskadig. SO wees versigtig.
  3. Klik daarna op die "Skryf" -knoppie onderaan. Sien as voorbeeld die onderstaande prentjie, waar die SD -kaart (of mikro -SD) -aandrywing voorgestel word deur die letter "G: \" Die bedryfstelsel is nou gereed vir normale gebruik. In hierdie tutoriaal gaan ons die Raspberry Pi egter in 'n koplose modus gebruik. Dit beteken dat sonder 'n fisiese monitor en 'n sleutelbord daaraan gekoppel is!
  4. Nadat u die SD -kaart verbrand het, moet u dit nie van u rekenaar afwerp nie! Gebruik 'n teksredakteur om die config.txt -lêer op die SD -kaart oop te maak. Gaan onderaan en voeg dtoverlay = dwc2 as die laaste reël by:
  5. Stoor die config.txt-lêer as gewone teks en maak dan cmdline.txt oop Na rootwait (die laaste woord op die eerste reël) voeg 'n spasie by en dan modules-load = dwc2, g_ether.
  6. Verwyder nou die SD -kaart van u rekenaar en steek dit in die Raspberry Pi en verbind dit met u rekenaar met 'n USB -kabel. Sodra die bedryfstelsel begin is, moet u 'n nuwe Ethernet -gadget -toestel ontdek.
  7. U kan ssh [email protected] gebruik om aan te sluit op die kaart en dit op afstand te beheer. Vir meer gedetailleerde instruksies rakende hooflose werking, gaan hier. Neopixel Driver

Die rpi_ws281x -biblioteek is die sleutel wat die gebruik van NeoPixels met die Raspberry Pi moontlik maak.

Eerstens moet ons die gereedskap installeer wat nodig is om die biblioteek saam te stel. In u Raspberry Pi-uitvoer: sudo apt-get update && sudo apt-get install build-essential python-dev git scons swig Voer nou hierdie opdragte uit om die biblioteek af te laai en saam te stel:

git -kloon https://github.com/jgarff/rpi_ws281x.git && cd rpi_ws281x && scons Uiteindelik, nadat die biblioteek suksesvol saamgestel is, kan ons dit vir python installeer met:

cd python && sudo python setup.py install Nou kom die python -kode wat die LED's aandryf. Die kode is redelik eenvoudig met 'n paar opmerkings om u te help. vanaf neopixel invoer * # NeoPixel -konfigurasies LED_PIN = 18 # Raspberry Pi se GPIO -pen gekoppel aan die pixels LED_BRIGHTNESS = 255 # Stel in op 0 vir donkerste en 255 vir helderste LED_COUNT = 4 # Aantal LED -pixels strook = Adafruit_NeoPixel (LED_COUNT, LED_PIN, 800000, 5, Onwaar, LED_BRIGHTNESS, 0, ws. WS2811_STRIP_GRB) # Initialiseer die biblioteekstrook. begin () strook.setPixelKleur (0, Kleur (255, 255, 255)) strook.vertoon ()

ADXL345 bestuurder

Die versnellingsmetersensor wat ons gekies het, het 'n I2C -interfae om met die buitewêreld te kommunikeer. Gelukkig vir ons het die Raspberry Pi ook 'n I2C -koppelvlak. Ons moet dit net in staat stel om dit in ons eie kode te gebruik.

Bel die Raspbian-konfigurasiehulpmiddel met behulp van sudo raspi-config. Sodra u hardloop, gaan na Interfacing Options, Advanced Options en aktiveer dan I2C. Installeer die relevante python -modules sodat ons die I2C -koppelvlak in python kan gebruik:

sudo apt-get install python-smbus i2c-tools Met die volgende python-kode kan ons kommunikeer met die versnellingsmeter sensor en die registerwaardes daarvan vir ons eie doeleindes lees. invoer smbus invoer strukt # Versnellingsmeter konfigurasies bus = smbus. SMBus (1) adres = 0x53 wins = 3.9e-3 bus.write_byte_data (adres, 45, 0x00) # Gaan na bystand modus bus.write_byte_data (adres, 44, 0x06) # Bandwydte 6,5 Hz bus.write_byte_data (adres, 45, 0x08) # Gaan na die meetmodus # Lees data van die sensor buf = bus.read_i2c_block_data (adres, 50, 6) # Pak die data uit van int16_t na python -heelgetaldata = struct.unpack_from ("> hhh", buffer (bytearray (buf)), 0)

x = float (data [0]) * wins

y = float (data [1]) * wins

z = float (data [2]) * wins

Bewegingsdetektor

Een van die kenmerke van die lig wat ons maak, is dat dit beweging (of gebrek daaraan) in die interaktiewe modus (waar die lig verander op grond van rotasie) en die weervoorspellingsmodus kan waarneem (waar die lig verander na gelang van die weervoorspelling vir vandag). Die volgende kode gebruik die vorige funksie om die versnellingswaardes vir die 3-asse te lees en ons te waarsku wanneer daar beweging is.

accel = getAcceleration ()

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

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

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

as dx> moveThreshold of dy To> moveThreshold of dz> moveThreshold:

druk 'geskuif'

verskuif = Waar

anders:

verskuif = Onwaar

Weer -API

Om weervoorspelling te ontvang, kan ons Yahoo Weather gebruik. Dit behels dat u met die Yahoo Weather Rest API praat wat redelik kompleks kan wees. Gelukkig vir ons word die moeilike deel reeds in die vorm van die weer-api-module vir python versorg.

  1. Eerstens moet ons hierdie module installeer met: sudo apt install python-pip && sudo pip install weather-api
  2. Besoek die outeur se webwerf vir meer inligting oor hierdie module.

Nadat u die volgende kode geïnstalleer het, kry die weerstoestand vir hierdie oomblik

vanaf weer invoer Weatherweather = Weer ()

location = weather.lookup_by_location ('dublin')

toestand = plek. toestand ()

druk (condition.text ())

Alles bymekaar te sit

Die volledige kode vir die projek wat al die bogenoemde stukke verbind, kan hier gevind word.

Begin die python -skrip outomaties tydens opstart

Om die framboos -pi in 'n boks te kan plaas en ons kode elke keer as ons dit met die krag aansluit, te laat loop, moet ons seker maak dat die kode outomaties begin word tydens die opstart. Om dit te doen, gebruik ons 'n instrument genaamd cron.

  1. Bel eers die cron -instrument met: sudo crontab -e
  2. Die vorige stappe maak 'n konfigurasie lêer oop waarin ons die volgende reël byvoeg:

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

Stap 4: Modellering en 3D -druk

Modellering en 3D -druk
Modellering en 3D -druk
Modellering en 3D -druk
Modellering en 3D -druk

Die 3D -model van Plus is gemaak in Solidworks en gestoor as. Stl -formaat. Vir die 3D -druk van die model is die. Stl -lêer in die Cura -sagteware ingevoer. Elke kant van die pluspunt het 2:30 uur geneem om te produseer; elke volle Plus het dus ongeveer 5 uur geneem om af te druk. En vir die deursigtige sye is plexiglas met laser gesny.

Stap 5: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Met die 3D -gedrukte deel, die elektronika en sagteware byderhand, kan ons uiteindelik die finale produk saamstel.

  1. Die 3D gedrukte boonste en onderste plate was meer deursigtig as wat verwag is. 'N Laag aluminiumfoelie het die probleem met ligte lek opgelos.
  2. Hierdie velle is egter geleidend en kan kortbroek in ons onbeskermde kring veroorsaak. So word nog 'n laag wit karton bo -oor vasgeplak.
  3. Die diffuse pleksiglas -segmente word aan een van die syplate vasgeplak.
  4. 'N Gat word in een van die 3D -gedrukte panele geboor. Dit is sodat ons deur die netsnoer kan gaan.
  5. Sodra die netsnoer deur die gat geplaas is, soldeer ons dit op ons prototipe bord.
  6. Ons heg die sensor aan die framboos pi en steek dit dan in die aansluiting.
  7. Ons heg die 2 stukke aan mekaar om ons finale produk te kry.
  8. U kan ook die twee stukke plak om 'n meer permanente verbinding te maak. Hou egter in gedagte dat dit moeilik is om in die boks te kom nadat dit vasgemaak is as u die kode later wil verander.

Aanbeveel: