· web viewde arduino/neopixel voeden met een eigen 5v (rood) in plaats van aan een 5v pin van de...

17
Arduino/Neopixel WS2812 voorbereiding. Arduino installatie behandel ik niet hier. Installeer de Adafruit neopixel zip library in Arduino. Download hem hier en importeer de library zip file in Arduino. https://github.com/adafruit/Adafruit_NeoPixel Kies voor de Arduino Micro (5V), Arduino/Genuino Micro en de juiste com poort. Kies voor Arduino Mini Pro, Arduino Leonardo en de juiste com poort. Lees de ino file in van de github download. https://github.com/vitormhenrique/OctoPrint-Enclosure/tree/master/ extras/octoprint_neopixel Stel het aantal leds in op 8 (geel opgelicht), compileren en uploaden maar ! Done uploading OK, dan kan je verder anders heb je waarschijnlijk vergeten de juiste Arduino in te stellen en/of verkeerde com poort. Aansluiten Arduino aan Neopixel

Upload: others

Post on 25-Feb-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Arduino/Neopixel WS2812 voorbereiding.

Arduino installatie behandel ik niet hier.

Installeer de Adafruit neopixel zip library in Arduino. Download hem hier en importeer de library zip file in Arduino.

https://github.com/adafruit/Adafruit_NeoPixel

Kies voor de Arduino Micro (5V), Arduino/Genuino Micro en de juiste com poort.

Kies voor Arduino Mini Pro, Arduino Leonardo en de juiste com poort.

Lees de ino file in van de github download.

https://github.com/vitormhenrique/OctoPrint-Enclosure/tree/master/extras/octoprint_neopixel

Stel het aantal leds in op 8 (geel opgelicht), compileren en uploaden maar ! Done uploading OK, dan kan je verder anders heb je waarschijnlijk vergeten de juiste Arduino in te stellen en/of verkeerde com poort.

Aansluiten Arduino aan Neopixel

Daarna is het de Neopixel aan de Arduino verbinden, pin 6 Arduino naar DIN van de Neopixel.

5V (via een 1n4001 diode om er 4.4V van te maken ivm logica spanningsnivo) en GND ook naar de Arduino.

Page 2:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Je ziet na deze exercitie niets op de neopixel, het is slechts een voorbereiding om hem als I2C slave te gebruiken aan de RPI en aan de sturen met scripts van de Octoprint “Enclosure” plugin (later meer).

Het staat je natuurlijk vrij om eerst een test te doen met 1 van de INO voorbeelden (die worden meegeleverd met de Adafruit Neopixel Library) om te kijken of je neopixel WS2812 werkt, ook wel aan te bevelen en erg leuk om te zien wat het ding kan.

NeoPixel aan de Raspberry PI

Vanaf de Arduino gaan we hem aansluiten aan de raspberry Pi.

De Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt het prima (hoe langer je de strip maakt hoe meer stroom er geleverd moet worden door de PI bij een directe aansluiting op een 5v pin). Gnd ook aansluiten (zwart)

Om de raspberry met I2C te laten kletsen moet je ook de I2C pennen aansluiten, zie hieronder de geel en oranje draden (SDA van de RPI aan de SDA van de Arduino en idem voor de SCL).

Hiermee gaan we verder later testen bij de installatie van de PI en “I2C hardware aanzetten” bij de PI.

Page 3:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Gelijk ook maar een relais.

Bij Aliexpress zijn van de bordjes te koop met daarop de blauwe relais, erg praktisch en direct vanuit een Arduino of RPI te schakelen. Hiermee kunnen we dus bijvoorbeeld de printer 220V aan en uit zetten via Octoprint (daarom je RPI los voeden en niet via je printer). De Groene draad is GPIO4 op de RPI (fysiek pen 7, later meer) en 5V en GND aansluiten aan de RPI.

Page 4:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Raspberry Pi Octoprint installeren

- Raspberry Pi3 (makkelijker vanwege geïntegreerde WiFi module)- Micro SD kaartje- Losse 5V/2A micro sd lader- USB kabel van de RPI naar je printer- Flatcable 1m en RPI camera V2 (eventueel)

Download de image en stop de microsd kaart in je pc/laptop/mac.

https://octoprint.org/download/

pak de zip file uit en zet met het programma Etcher of Win32diskimager de image op de SD.

WIFI GEBRUIKEN ? LAAT HEM IN DE PC zitten, je moet een file editen op de SD kaart met Notepad++ om WiFi in orde te maken:

Open met NOTEPAD++ (gratis te downloaden), octopi-wpa-supplicant.txt en pas dit aan:

country=NL # Netherlands ipv country=GB # United Kingdom

ZICHTBAAR SSID? Verander deze tekst in:

## WPA/WPA2 secured

network={

ssid="jouw-ssid"

psk="ssid-wachtwoord"

}

HIDDEN SSID?

## WPA/WPA2 secured

network={

ssid="jouw-ssid"

psk="ssid-wachtwoord"

scan_ssid=1

}

Page 5:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Opslaan, stop de SD in de RPI en opstarten, ga dan naar http://octopi.local, lukt dit niet zie verder hieronder betreffende Advanced IP scanner.

GEEN WIFI MAAR LAN KABEL?

In principe kan je nu meteen de SD kaart in de RPI stoppen en een netwerkkabel gebruiken en het address http://octopi.home intikken.

Ik heb een reservering gemaakt op mijn router en het mac-address van de Pi krijgt altijd 192.168.2.79.

Lukt http://octopi.local niet, gebruik dan de tool “Advanced IP scanner” om het ip-address te vinden, gratis te downloaden.

Ping je RPI of dit klopt of zie met http://octopi.local direct je webpagina verschijnen van Octoprint.

In princip kan je nu alles doen wat je wilde en de opties van Octoprint gebruiken.

Ik gebruik hem om mij Raspberry Pi cam V2 te bekijken als ik beneden op de bank zit, maar er kan natuurlijk veel meer mee.

Page 6:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Octoprint verder in orde maken:

Ga naar http://octopi.local

Maak de installatie van Octopi af, ik behandel dat hier niet verder. Loop de stappen door en connect je printer (ik neem aan dat je hier de usb kabel al aangesloten hebt).

In de terminal TAB zie je keurig de temperaturen op het scherm komen.

In de Control TAB zie je je camera beelden.

Stoei wat met Octoprint.

De Raspberry Pi klaarmaken voor de Plugins “Enclosure” en “Gcode”

Ga naar settings, Plugin Manager. Get More:

Zoek op “Enclosure” en installeer Octoprint-Enclosure, restart now

Log weer in op je Octoprint op http://octopi.local

Page 7:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Je hebt nu de Enclosure Plugin.

Wil je hiermee meteen aan de gang om bijvoorbeeld het relais te testen: Settings, Enclosure Plugin aanklikken. Add Outputs en kies regular IO.

Label:relay

Id:1 (default)

IO number: 4 (dat RPI fysieke pen 7, zie de tekening boven)

“Active low” uitzetten (wat je wilt, je kan hier de werking van de GPIO omkeren)

“Show button on navbar” aanzetten en bekijk de ander opties eens (wat wil je zelf er nog meer mee doen)

SAVE en ga terug, voilà een knop erbij.

Dit zou meteen moeten werken zonder wat voor een aanpassingen aan de RPI, zo niet controleer je aansluitingen !

Omdat je de plugin “Eclosure” hebt geïnstalleerd staan de scripts voor de neopixel ook op de RPI (later meer)

“Enclosure” is wel leuk en kijk er ook zeker rond voor de andere mogelijkheden, maar in sommige dingen niet zo handig via de webpagina, daarom installeer je “GCODE System Commands” waarmee je met Gcode commando’s van alles kan doen, scripts starten (o.a. die van de “Enclosure neopixel”), printer taken starten, status etc.

Settings, Plugin Manager, Get More:

Page 8:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Zoek op “Gcode” en installeer “GCODE System Commands”, restart je RPI

Ga na de reboot weer naar http://octopi.local of http://ipadres.

Log in, verschijnt er een update voor Octoprint, nu V1.3.9, installeer maar, reboot volgt automatisch.

Log weer in. Relay knopje werkte nog gewoon ? Ok weer door.

Ga naar Settings, Plugin manager en daar kan je Plugins ook met een schuifje uitzetten mocht je dat willen.

Ga naar settings, GCODE System (je nieuwe Plugin voor GCODE commando’s maken)

Druk de + en maak OCTO 1 en OCTO2 aan:

De commando’s die je hier ziet kan je ook in een Putty SSH window op de raspberry Pi zelf doen. Dat is dus wat deze plug in doet ! een Gcode converteren naar een RPI commando.

Verdiep je in de gpio commando’s voor meer info.

gpio mode 7 out && gpio write 7 1

betekend eigenlijk, zet de fysieke pin 7 in output modus en na de && komt het commando zet hem op 1

gpio mode 7 out && gpio write 7 0

zet de fysieke pin 7 op output en zet hem op 0

Wil je liever met GPIO namen werken dan worden de commando’s

gpio -1 mode 4 out && gpio -1 write 4 1

En je kan nog veel meer nieuwe OCTO commands, starten van een python script ? (later meer).

Maar alle andere GPIO zijn natuurlijk ook in te zetten voor nog meer relais.

Ga naar je terminal TAB in Octoprint en tik in “octo1” en “octo2” (surpress temperature messages even) en je relay gaat nu in beweging met een gcode command ! Mits je hem nog goed heb aangesloten.

Page 9:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Stel je voor dat hier een lampje mee geschakeld wordt bij het HotEnd tijdens het printen. En uit als het printen klaar is.

Deze gcode is natuurlijk toe te voegen aan je startende code of afsluitende code van de printopdracht vanuit Cura of ander slicer. Maar ook prima onder een knopje in de Octoprint webpagina (zie http://docs.octoprint.org/en/master/features/custom_controls.html )

Je raspberry Octoprint geschikt maken voor neopixel via I2C (met als Arduino I2C slave)

Omdat je de “Enclosure” plugin geïnstalleerd heb, heb je ook de scripts voor de neopixels geinstalleerd. Ben je zo handig met Python scripts en neopixel, dan kan je natuurlijk ook zelf een commando schrijven in “Gcode System Commando” die jouw eigen script afvuurt op de RPI.

Page 10:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Voordat je een Neopixel met I2C kan aansturen moet er wel wat gebeuren op de RPI.

I2C aanzetten

Gebruik Putty.exe (gratis te downloaden). Maak een SSH sessie naar je RPI op IP address.

Username: pi password: raspberry en volg de volgende link:

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c

Heb je alles gedaan en zie je ook je Arduino met de Neopixel eraan op Adres 4 ?

Dan heb je de arduino goed geïnstalleerd/geprogrammeerd en ook I2C is goed enabled op de RPI !!

Dan moeten we nog de juiste rp_ws281x library installeren:

https://raspberrytips.nl/neopixel-ws2811-raspberry-pi/

cd ~/rpi_ws281x && sudo ./test (deze hoef je niet te doen op die pagina)

Page 11:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Nu kan je dus de neo pixel aan gaan sturen:

We gaan naar Octoprint

OCTO3,4,5,6,7,8,9,10 aanmaken in GCODE SYSTEM COMMAND, Octo1 en 2 zijn er al voor je relais.

Maak Octo3, Neopixel uit

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 255 0 0 0 4

Maak Octo4, Neopixel wit, 25%

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 255 64 64 64 4

Maak Octo5, Neopixel wit, 50%

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 255 128 128 128 4

Maak Octo6, Neopixel wit, 75%

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 255 192 192 192 4

Maak Octo7, Neopixel wit, 100%

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 255 255 255 255 4

Maak Octo8, Neopixel Blauw (255 mag ook 64 zijn, minder fel, 25% blauw)

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 128 0 0 255 4

Maak Octo9, Neopixel Groen

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 128 0 255 0 4

Maak Octo10, Neopixel Rood

python /home/pi/oprint/lib/python2.7/site-packages/octoprint_enclosure/neopixel_indirect.py 6 8 128 255 0 0 4

Ga naar de terminal tab en run bijv octo5 en je ziet de neopixel 50% wit branden

Test de andere ook. De gcode kan je nu meenemen in je slicer.

Een “overwrite” button.

Ik wil via Octoprint met de plugins “Enclosure” en “Gcode System Commands” de printer aan en uit zetten. Dat is natuurlijk niet handig als je standalone de printer wil gebruiken voor een eenvoudig printje van de SD. Op GPIO16 maken we een eenvoudige moment drukknop welke even 5V op de input zet. In “Enclosure” Definiëren we knop dan dat deze knop deze het relais toggled onder inputs.

Page 12:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Behuizing verlichting dimbaar

Ik wil graag ook verlichting in de behuizing van de printer en dan ook dimbaar.

In het schema zie je dan ook Q1, een kleine 2N7000 FET (max 200mA !) die de een schakelende min (-) maakt voor bijvoorbeeld je 12V witte ledstrip. De FET Q1 wordt geschakeld door de GPIO17.

De 12 V voeding gaat naar de ledstrip en vanaf de de FET een schakelende min (-) van de FET.

Maak in “Enclosure” een PWM output pin in dit geval op GPIO17. Deze PWM frequentie is max 80Hz heb ik gemerkt en een PWM tussen 0 (uit) en 100% (vol aan), maar je kan hem ook aanmaken met GCODE System Commands (later meer als ik er mee getest hebt en knopjes in Octoprint gemaakt heb).

Het zal zoiets zijn:

Gewoon AAN en UIT

gpio mode 17 out && gpio write 17 1 (vol AAN)

gpio mode 17 out && gpio write 17 0 (UIT)

PWM

gpio mode 17 out && gpio pwm 17 128 (0-255 en 128 is 50%)

Stop dit in een octo command die je in de Gcode kan gebruiken of onder een OCtoprint knopje op de webpagina.

Page 13:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Richard Hoogeveen, V1.0, 30 nov 2018

Bijlage: Raspberry connector, Arduino Mini, Arduino MicroPro

Page 14:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt
Page 15:  · Web viewDe Arduino/Neopixel voeden met een eigen 5V (rood) in plaats van aan een 5V pin van de Raspberry (zeggen ze) is aan te bevelen, maar om 1 stripje neopixel te testen werkt

Micro Pro 5V, (Leonardo)