Inhoudsopgave:

TfCD - Plus: 7 stappen
TfCD - Plus: 7 stappen

Video: TfCD - Plus: 7 stappen

Video: TfCD - Plus: 7 stappen
Video: MUURTJE STUCEN IN 7 STAPPEN! - Knauf Doe-Het-Zelf 2024, November
Anonim
Image
Image
Ingrediënten
Ingrediënten

Plus is een minimale slimme lamp, die niet alleen mensen informeert over de weersomstandigheden, maar ook een plezierige ervaring voor gebruikers creëert door de veranderingen in de kleur van het licht door de plus te draaien. De vorm geeft de gebruiker de mogelijkheid om meerdere plus-modules te combineren of een enorme lamp te maken met veel plus-stukken die door vrienden zijn geplaatst. Dit verlichtingsproject maakt deel uit van de cursus Advanced Concept Design (ACD) aan de TU Delft en de technologie die is geïmplementeerd met behulp van TfCD-practicum als inspiratiebron.

Stap 1: Ingrediënten

Ingrediënten
Ingrediënten
Ingrediënten
Ingrediënten

1 Raspberry pi nul w

1 groef Adxl345 versnellingsmeter

4 Ws2812b LED

1 prototypebord

3D-geprinte en lasergesneden behuizingen

Stap 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

LED's

De Neopixel LED's hebben 4 pinnen genaamd: +5V, GND, Data In en Data uit.

  1. Pin 4 van de Raspberry Pi is verbonden met de +5V van alle LED's
  2. Pin 6 van de Raspberry Pi is verbonden met de GND van alle LEDS
  3. Data In pin van de eerste LED is verbonden met pin 12 op de Raspberry Pi.
  4. De Data-out-pin van de eerste LED is verbonden met de Data-in van de tweede, enzovoort.

Bekijk het bedradingsschema voor een beter begrip.

Versnellingsmeter

De accelerometer heeft 4 pinnen genaamd: VCC, GND, SDA en SCL.

  1. Pin 1 van de Raspberry Pi is verbonden met VCC.
  2. Pin 3 van de Raspberry Pi is verbonden met SCL.
  3. Pin 5 van de Raspberry Pi is verbonden met SDA.
  4. Pin 9 van de Raspberry Pi is verbonden met GND.

Bouwen

  1. Voor het gemak kunnen de LED's op een prototypebord worden gesoldeerd. We hebben besloten om het bord in de vorm van een plus te knippen zodat het goed past in de 3D ontworpen behuizing.
  2. Nadat we de LED's op het bord hebben gesoldeerd, solderen we jumperdraden om de verbindingen tussen een 0,1"-headerverbinding en de LED's te maken. De header-connector wordt gebruikt om de Raspberry Pi los te koppelen en opnieuw te gebruiken voor een toekomstig project.

Stap 3: Software

Software
Software

Afbeelding Raspberry Pi-besturingssysteem

We moeten eerst de Raspberry Pi aan de praat krijgen. Hiervoor volgen we deze stappen:

  1. Download hier de nieuwste versie van Raspbian. Je kunt het rechtstreeks of via de torrents downloaden. Je hebt een beeldschrijver nodig om het gedownloade besturingssysteem naar de SD-kaart te schrijven (micro SD-kaart in het geval van Raspberry Pi B+-model en Raspberry Pi Zero).
  2. Dus download hier de "win32 disk imager". Steek de SD-kaart in de laptop/pc en voer de imagewriter uit. Eenmaal geopend, blader en selecteer je het gedownloade Raspbian-afbeeldingsbestand. Selecteer het juiste apparaat, dat wil zeggen het station dat de SD-kaart vertegenwoordigt. Als het geselecteerde station (of apparaat) verschilt van de SD-kaart, raakt het andere geselecteerde station beschadigd. Dus wees voorzichtig.
  3. Klik daarna op de knop "Schrijven" onderaan. Zie als voorbeeld de onderstaande afbeelding, waar de SD-kaart (of micro SD)-drive wordt weergegeven met de letter "G:\". Het besturingssysteem is nu klaar voor normaal gebruik. In deze tutorial gaan we de Raspberry Pi echter in de headless-modus gebruiken. Dit betekent dus zonder dat er een fysieke monitor en toetsenbord aan vast zit!
  4. Nadat u de SD-kaart hebt gebrand, mag u deze niet uit uw computer verwijderen! Gebruik een teksteditor om het config.txt-bestand op de SD-kaart te openen. Ga naar de onderkant en voeg dtoverlay=dwc2 toe als laatste regel:
  5. Sla het config.txt-bestand op als platte tekst en open vervolgens cmdline.txt. Na rootwait (het laatste woord op de eerste regel) voeg je een spatie toe en vervolgens modules-load=dwc2, g_ether.
  6. Verwijder nu de SD-kaart uit uw pc en plaats deze in de Raspberry Pi en sluit deze met een USB-kabel aan op uw pc. Zodra het besturingssysteem is opgestart, zou er een nieuw Ethernet Gadget-apparaat moeten worden ontdekt.
  7. U kunt ssh [email protected] gebruiken om verbinding te maken met het bord en het op afstand te bedienen. Ga hier voor meer gedetailleerde instructies over headless-bediening. Neopixel-stuurprogramma

De rpi_ws281x-bibliotheek is de sleutel die het gebruik van NeoPixels met de Raspberry Pi mogelijk maakt.

Eerst moeten we de tools installeren die nodig zijn om de bibliotheek te compileren. Voer in je Raspberry Pi uit: sudo apt-get update && sudo apt-get install build-essential python-dev git scons swig Voer nu deze opdrachten uit om de bibliotheek te downloaden en te compileren:

git clone https://github.com/jgarff/rpi_ws281x.git && cd rpi_ws281x && scons Eindelijk, nadat de bibliotheek met succes is gecompileerd, kunnen we deze voor python installeren met:

cd python && sudo python setup.py install Nu komt de python-code die de LED's aanstuurt. De code is vrij eenvoudig met enkele opmerkingen om u te helpen. van neopixel import * # NeoPixel-configuraties LED_PIN = 18 # Raspberry Pi's GPIO-pin aangesloten op de pixels LED_BRIGHTNESS = 255 # Stel in op 0 voor de donkerste en 255 voor de helderste LED_COUNT = 4 # Aantal LED-pixelstrips = Adafruit_NeoPixel(LED_COUNT, LED_PIN, 800000, 5, False, LED_BRIGHTNESS, 0, ws. WS2811_STRIP_GRB) # Initialiseer de bibliotheek strip.begin() strip.setPixelColor(0, Color(255, 255, 255)) strip.show()

ADXL345-stuurprogramma

De accelerometersensor die we hebben geselecteerd heeft een I2C-interfae voor communicatie met de buitenwereld. Gelukkig voor ons heeft de Raspberry Pi ook een I2C-interface. We moeten het alleen inschakelen om het in onze eigen code te gebruiken.

Roep de Raspbian-configuratietool aan met sudo raspi-config. Eenmaal actief, ga naar Interfacing-opties, Geavanceerde opties en schakel vervolgens I2C in. Installeer de relevante python-modules zodat we de I2C-interface in python kunnen gebruiken:

sudo apt-get install python-smbus i2c-tools De volgende python-code stelt ons in staat om te communiceren met de accelerometersensor en de registerwaarden te lezen voor onze eigen doeleinden. import smbus import struct # Accelerometer configuraties bus = smbus. SMBus(1) adres = 0x53 gain = 3.9e-3 bus.write_byte_data(address, 45, 0x00) # Ga naar standby-modus bus.write_byte_data(address, 44, 0x06) # Bandbreedte 6.5Hz bus.write_byte_data(address, 45, 0x08) # Ga naar meetmodus # Read data from the sensor buf = bus.read_i2c_block_data(address, 50, 6) # Pak de data uit van int16_t naar python integer data = struct.unpack_from (">hhh", buffer(bytearray(buf)), 0)

x = float(data[0]) * gain

y = float(data[1]) * gain

z = float(data[2]) * gain

Bewegingsdetector

Een van de kenmerken van het licht dat we maken, is dat het beweging (of het ontbreken daarvan) kan detecteren om de interactieve modus (waar het licht verandert op basis van rotatie) en de weersvoorspellingsmodus (waar het licht verandert afhankelijk van de weersvoorspelling) in te gaan voor vandaag). De volgende code gebruikt de vorige functie om de versnellingswaarden voor de 3-assen te lezen en ons te waarschuwen wanneer er beweging is.

accel = getAcceleration()

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

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

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

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

print 'verhuisd'

verplaatst = True

anders:

verplaatst = niet waar

Weer-API

Om weersvoorspellingen te ontvangen, kunnen we Yahoo Weather gebruiken. Dit houdt in dat u moet praten met de Yahoo Weather Rest API, wat nogal complex kan zijn. Gelukkig voor ons is het harde deel al geregeld in de vorm van de weer-api-module voor python.

  1. Eerst moeten we deze module installeren met: sudo apt install python-pip && sudo pip install weather-api
  2. Bezoek de website van de auteur voor meer informatie over deze module.

Na installatie krijgt de volgende code de weersomstandigheden voor dit moment

van weerimport Weerweer = Weer()

location = weather.lookup_by_location('dublin')

conditie = locatie.conditie()

print(conditie.tekst())

Alles op een rijtje

De volledige code voor het project dat alle bovenstaande stukken verbindt, is hier te vinden.

Automatisch starten van het python-script tijdens het opstarten

Om de raspberry pi in een doos te kunnen stoppen en onze code elke keer dat we hem op de stroom aansluiten, te laten uitvoeren, moeten we ervoor zorgen dat de code automatisch wordt gestart tijdens het opstarten. Hiervoor gebruiken we een tool genaamd cron.

  1. Roep eerst de cron-tool aan met: sudo crontab -e
  2. De vorige stappen openen een configuratiebestand, waarin we de volgende regel toevoegen:

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

Stap 4: Modelleren en 3D-printen

Modelleren en 3D-printen
Modelleren en 3D-printen
Modelleren en 3D-printen
Modelleren en 3D-printen

Het 3D-model van Plus is gemaakt in Solidworks en opgeslagen als. Stl-formaat. Vervolgens werd voor het 3D-printen van het model het. Stl-bestand geïmporteerd in de Cura-software. Elke kant van de plus kostte 2:30 uur om te produceren; dus elke volledige Plus kostte ongeveer 5 uur om af te drukken. En voor de transparante zijkanten werd plexiglas gelaserd.

Stap 5: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Met het 3D-geprinte onderdeel, de elektronica en software bij de hand, kunnen we eindelijk het eindproduct in elkaar zetten.

  1. De 3D-geprinte boven- en onderplaten bleken transparanter dan verwacht. Een laag aluminiumfolie loste het lichtlekprobleem op.
  2. Deze platen zijn echter geleidend en kunnen kortsluiting veroorzaken in ons onbeschermde circuit. Dus nog een laag wit karton erop gelijmd.
  3. De diffuse plexiglas segmenten worden op een van de zijplaten gelijmd.
  4. Er wordt een gat geboord in een van de 3D-geprinte zijpanelen. Dit is zodat we door het netsnoer kunnen.
  5. Zodra het netsnoer door het gat is gestoken, solderen we het op ons prototypebord.
  6. We bevestigen de sensor op de raspberry pi en steken deze vervolgens in de connector.
  7. We hechten het 2 stuk aan elkaar om ons eindproduct te krijgen.
  8. Optioneel kunt u het 2 stuk lijmen om een meer permanente verbinding te maken. Houd er echter rekening mee dat het misschien moeilijk is om in de doos te komen nadat deze is dichtgelijmd als u de code later wilt wijzigen.

Aanbevolen: