Sivu 1/1

Linux: Flsun i3 + Cura + OctoPrint

Lähetetty: Su Touko 05, 2024 6:43 pm
Kirjoittaja MakerShop
Tässä jutussa käsitellään OctoPrintin asennusta ja käyttöä tulostuksen hallintaan langattomasti Flsun i3 Plus Large-tulostimessa 300x300x420 tulostinalalla. Tulostin on jonkin verran modattu, siihen on vaihdettu pedille kunnolliset lineaarijohteet alkuperäisten pyöreiden tankojen/kuulakorien tilalle, lämpölevyn alla oleva levy vaihdettu pleksistä kunnon alumiiniin jotta johteet ja aluslevy eivät ajan mittaan painuisi mutkalle (alkuperäiset menivät melko vikkelään). Lisäksi langansyöttö on muutettu suorasyötöksi kun alunperin syöttömoottorit sijaitsivat laitteen kehikon päällä. Korkeuden kalibrointiin autoleveling 12 mittapisteellä ja Z-anturi vaihdettu kunnolliseen vakion tilalle joka kärsi liiallisesta mittausvirheestä lämpötilan muutosten vaikutuksesta. Lisäksi tukia ja moottorien asennuspalikoita tulosteltu sinne tänne sekä tulostuspään koko asennelma.

Tavoitteena siis saada tulostin toimimaan pelkän verkkovirran perässä langattomasti ilman USB-johtoja. Slicerina olen käyttänyt aina Curaa ja OctoPrint serverin raudaksi valikoitui ensin testausvaiheessa Bigtreetech CB1 eMMC-versio sen valmiiden liitäntöjen johdosta. Toimivuuden testaamisen jälkeen OctoPrint serveriksi vaihdoin NanoPi Neo Airin sen pienen koon takia jolloin se sopii mukavammin järjestelmälle tulevan tulostetun kotelon sisään sekä ajatus ettei laita turhan "järeää" laitetta ohjaamaan pelkästään yhtä tulostinta.

NanoPi Neo Airista löytyy ARM Cortex-A7 1.2GHz neliydin prossu, 512MB muistia, 8GB eMMC sekä WiFi. USB-liitäntä tulostimelle kuten myös 5V sisään laitetaan piikkirimojen kautta. USB ja 5V varten tullaan vielä myöhemmin lisäämään jonkinlainen shield johon liitännät saadaan kätevästi. Koteloon laitetaan siis tulostimen mukana tulleet ohjainkortti MKS Gen L ja näyttö MKS TFT32_L V4.0 sekä OctoPrint serverikortti jonka virrat otetaan tulostimen ohjainkortin 5V lähdöstä.

5V NanoPi:lle otetaan tulostimen ohjainkortilta sen takia että näyttö ja ohjainkortti olisivat muuten aina päällä kun ohjainkortin USB-liitännässä on päällä oleva tietokone. Näin saadaan myös palvelin käynnistymään aina kun tulostin käynnistetään. Toki virrat olisi voinut ottaa myös erillisellä virtalähteellä ja jättää USB-liitännästä 5V pois mutta testien perusteella ohjainkortin ulostulosta virta riittää mainiosti myös NanoPi:lle. Ohjainkortissa käytetään MP1584 step-down regulaattoria 5V jännitelähtöön ja siitä saa ulos 3A joten ongelmia ei pitäisi sen suhteen olla.

3D mallintaminen tapahtuu onshape-nimisellä pilvipohjaisella softalla joka pyörii suoraan selaimessa joten on aika pitkälti alustariippumaton. Onshape vastaa käytettävyydeltään Fusion360 jota olen aikaisemmin käyttänyt, mutta on harrastajalisenssillä ilmainen. Slicerina tosiaan Cura ja näitä kaikkia pyörittää Raspberry Pi 5 8GB malli jossa asennettuna Ubuntu XFCE4 työpöydällä.

Projektin vaiheet:
  1. OctoPrint asennus ja tulostuksen testaus Bigtreetech CB1:ssä
  2. OctoPrint asennus NanoPi Neo Air:ssa
  3. NanoPi johdotus ohjainkortille ja tulostuksen testaus
  4. Shieldin piirtäminen KiCAD:lla NanoPi Neo Air:lle
  5. Kotelon piirtäminen ja tulostus

HUOM: Tämän ohjeen OctoPrintin asennus pätee ARM64-pohjaiseen Ubuntu-käyttöjärjestelmään, joten muiden distrojen ja arkkitehtuurien kanssa voi olla eroa asennuskomennoissa ja service-skriptin ja sen aktivoimisen kanssa.


Vaihe 1: OctoPrint asennus ja tulostuksen testaus Bigtreetech CB1:ssä

Tämän vaiheen suoritin käytännössä vain siitä syystä, että näkisin miten tulostin toimii OctoPrintin kanssa ja että sen asennus ylipäätään onnistuu. CB1:ssä on Allwinnerin H616-prossu, eli 64-bittinen neliytiminen Cortex-A53 1.5GHz kellotaajuudella. Muistia 1GB ja 32GB eMMC. Käyttöjärjestelmän asennus eMMC muistille vaati hieman googlailua että löytyi oikeat softat ja u-bootit millä eMMC-muistin sai näkymään tiedostonhallinnassa. Tämän jälkeen se oli yhtä suoraviivaista kuin SD-kortille asennuskin.

Käyttöjärjestelmänä käytin Armbian 24.2.3 Jammy with Linux 6.1.79-legacy-sun50iw9-btt versiota. Asennusta varten tarvitsi CB1 levy dip-kytkimistä asettaa boot-modeen sekä USB OTG-modeen. Sen jälkeen korttiin virrat ja u-boot sisään komennolla:

Koodi: Valitse kaikki

sudo ./sunxi-fel -v uboot ./u-boot-sunxi-cb1-emmc.bin
Pieni odottelu ja eMMC ilmestyi tiedostonhallintaan. Tämän jälkeen Disks-ohjelma auki Ubuntussa, valitaan eMMC muisti ja kolmen pisteen valikosta "Restore Disk Image...". Valitaan levykuva, tässä tapauksessa "Armbian_24.2.3_Bigtreetech-cb1_jammy_legacy_6.1.79.img.xz" jonka voi ladata täältä ja laitetaan kirjoittamaan. Kun kirjoitus on valmis, virrat pois, dippikytkimet perusasentoon ja virrat päälle. Ensimmäisessä käynnistyksessä pyydetään asettamaan root-käyttäjän salasana sekä luomaan normaali käyttäjä sudo-oikeuksin, shellin valinta (bash / zsh) sekä asettamaan aikavyöhyke ja kieliasetus. Jos kortti ei ole kiinni langallisessa verkossa, pitää myös langattoman asetukset laittaa. Tämä onnistuu seuraavasti:

Ensin kannattaa tarkastaa että oma verkko löytyy komennolla:

Koodi: Valitse kaikki

nmcli device wifi
Sitten asetetaan SSID ja salasana:

Koodi: Valitse kaikki

nmcli device wifi connect WIFI_SSID password WIFI_PASSWORD
Jos ja kun yhdistäminen onnistuu, siitä tulee ilmoitus ruudulle, jotakuinkin tämän tyylinen:

Koodi: Valitse kaikki

Device 'wlan0' successfully activated with....
Kurkataan verkon asetukset:

Koodi: Valitse kaikki

nmcli con show
Sitten vielä seuraava komento varmistamaan että verkkoon yhdistytään automaattisesti bootissa:

Koodi: Valitse kaikki

nmcli con mod WIFI_SSID connection.autoconnect true
Kun verkkoyhteys on toiminnassa, kannattaa suorittaa täysi päivitys järjestelmälle komennoilla:

Koodi: Valitse kaikki

sudo apt update
sudo apt upgrade
sudo reboot now
Kun päivitys on valmis, voidaankin valmistautua OctoPrintin asennukseen. Asennellaan ensin tarvittavat python- ym. paketit:

Koodi: Valitse kaikki

sudo apt install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential
Varmistetaan että ollaan kotihakemistossa ja luodaan OctoPrint kansio sekä siirrytään sinne:

Koodi: Valitse kaikki

cd ~ && mkdir Octoprint && cd Octoprint
Luodaan asennusta varten virtuaaliympäristö Pythonille:

Koodi: Valitse kaikki

python3 -m venv venv
Aktivoidaan se:

Koodi: Valitse kaikki

source venv/bin/activate
Asennetaan OctoPrintin Python riippuvuudet:

Koodi: Valitse kaikki

pip install --upgrade pip wheel
Ja lopuksi itse OctoPrint:

Koodi: Valitse kaikki

pip install --no-cache-dir octoprint
Lisätään käyttäjä sopiviin ryhmiin että OctoPrint pystyy käyttämään sarjaporttia:

Koodi: Valitse kaikki

sudo usermod -a -G tty,dialout <käyttäjätunnus>
Tämän jälkeen pitää kirjautua ulos/takaisin sisään jotta muutokset tulee voimaan tai suorittaa terminaalissa komento:

Koodi: Valitse kaikki

su <käyttäjätunnus>
Kun tarvittavat ryhmien oikeudet on aktivoitu, OctoPrint serveri käynnistetään komennolla:

Koodi: Valitse kaikki

~/OctoPrint/venv/bin/octoprint serve
Kannattaa myös laittaa OctoPrint käynnistymään automaattisesti käynnistyksen yhteydessä. Luo tiedosto octoprint.service ja lisää sinne seuraava:

Koodi: Valitse kaikki

[Unit]
Description=OctoPrint
After=network-online.target
Wants=network-online.target

[Service]
Type=exec
User=<USERNAME>
ExecStart=/home/<USERNAME>/OctoPrint/venv/bin/octoprint serve
Restart=on-abort

[Install]
WantedBy=multi-user.target
Siirrä se oikeaan kansioon:

Koodi: Valitse kaikki

sudo mv octoprint.service /etc/systemd/system/
Ja lopuksi aktivoi se:

Koodi: Valitse kaikki

sudo systemctl enable octoprint.service
Nyt OctoPrinttiin pitäisi päästä käsiksi selaimella laittamalla osoitteeksi <octoprint ip>:5000 (esimerkiksi: 192.168.1.200:5000)


Vaihe 2: OctoPrint asennus NanoPi Neo Air:ssa


Vaihe 3: NanoPi johdotus ohjainkortille ja tulostuksen testaus


Vaihe 4: Shieldin piirtäminen KiCAD:lla NanoPi Neo Air:lle


Vaihe 5: Kotelon piirtäminen ja tulostus