Jeffrey Cross
Jeffrey Cross

MakerBot + RaspberryPi + Google Chrome = HappyMaker!

Kami baru-baru ini memperoleh MakerBot Replicator 2 di sini di Makmal Kebenaran. Dia amat dikenali sebagai Arnold of Villanova II (Arnold untuk pendek). Dalam semangat pembuat, kami melancarkan sambungan krom kami sendiri untuk memberitahu kami apa yang Arnold terpulang. Kami menggunakan beberapa protokol teknologi - s3g, Raspberry Pi, Node.js dan tentu saja, Sambungan Google Chrome. Berikut adalah cara kami melakukannya.

Masalahnya: Lokasi Lokasi Lokasi

Arnold tidak terletak di tengah-tengah, yang memerlukan kita untuk melakukan perjalanan untuk menyemak status pekerjaan cetak, dan banyak kali, untuk kecewa kami, kami mendapati Arnold kesilapan dalam timbunan filamennya sendiri. Kerja cetak mengambil masa mana saja dari 30 minit untuk model sederhana sehingga beberapa jam untuk yang kompleks, jadi berjalan ke dan dari Arnold sepanjang rentang hari menjadi membosankan.

Penyelesaian: Pembuat Bunyi SendiriBots

Nah, bukannya MakerBots yang menyedari diri sendiri, tetapi ia adalah permulaan. A MakerBot Replicator konvensional 2 tidak mempunyai keupayaan untuk menyambung ke internet, tetapi dengan sedikit bantuan daripada Raspberry Pi, semua perkara mungkin berlaku. Mengambil halaman dari Internet of Things playbook, saya berangkat untuk menyambungkan Arnold ke internet, dan menjalankan sistem pemberitahuan mudah. Terdapat beberapa potongan teka-teki, saya akan menerangkan bagaimana mereka sesuai bersama di bawah. Anda juga boleh melengkapkan repo status makerbot contohnya kod untuk memulakan anda. Repo ini menunjukkan kepada anda cara menggunakan Protokol s3g untuk maklumat pertanyaan dari MakerBot yang disambungkan melalui USB.

Potongan Puzzle

MakerBot Replicator 2 - firmware berjalan yang mampu komunikasi siri melalui penyambung USB.

Raspberry Pi - Menjalankan aplikasi Node.js yang mudah bertanggungjawab untuk berkomunikasi dengan MakerBot melalui protokol s3g.

Pidora 18 (Raspberry Pi Fedora Remix) - Distro Linux tersedia untuk Pi. Ia berdasarkan Fedora, pilihan saya.

Node.js (disusun dari sumber) - Menyusun Node.js dari sumber untuk memastikan nod-gyp bekerja dengan betul pada Raspberry Pi, dan bermain bagus dengan pakej node-serialport.

Windows Azure - Mencipta titik akhir berasaskan awan bagi Arnold untuk menghantar maklumat kepada. Laman web Azure juga menjadi tuan rumah pelayan bayeux untuk mengurus mana-mana pelanggan yang mendengar maklumat baru.

Google Chrome (Sambungan) - Chrome, melalui Sambungannya, cangkuk ke pemberitahuan desktop dengan mudah.

Maklumat Penting

Gabungan teknologi ini menawarkan beberapa cabaran yang unik. Berikut adalah sorotan:

Membina Node.js dari sumber pada Raspberry Pi

Oleh kerana keperluan node-gyp, dan komunikasi tahap rendah melalui pemandu bersiri saya perlu membina nod dari sumber pada Raspberry Pi. Ini adalah proses yang mudah selagi persekitaran anda ditubuhkan dengan betul. Pertama, anda perlu memasang distro linux, anda boleh mencarinya di laman web Raspberry Pi. Juga ambil perhatian bahawa arahan yang disenaraikan di bawah telah selesai menggunakan Pidora. Milage mungkin berbeza-beza.

Bina Persediaan Alam Sekitar

Terdapat beberapa perkara yang perlu anda lakukan sebelum membina Node.js dari sumber. Juga ambil perhatian bahawa sesetengah arahan memerlukan keistimewaan yang tinggi, dan bergantung kepada distro anda, anda mungkin perlu menggunakan su atau perintah sudo.

Perkara pertama yang akan kami lakukan ialah menetapkan jam sistem. Sesetengah kesilapan bina pelik berlaku apabila jam sistem adalah salah.

$ date --set = "18 NOV 2013 18:00:00"

Setelah tarikh dan masa adalah betul, anda juga perlu mengemas kini pengurus pakej, dan semua pakej yang dipasang, Yum Package Manager adalah pengurus pakej yang dipasang pada Pidora. Kemas kini sistem penuh boleh dilakukan dengan melaksanakan perkara berikut:

$ yum update

Setelah sistem anda dikemas kini, kami perlu memastikan Python (2.6 atau 2.7), GCC 4.2 atau lebih baru dan GNU Make 3.81 atau lebih baru dipasang. Python sepatutnya telah dipasang, untuk memasang gcc dan buat melaksanakan arahan di bawah:

$ yum pasang gcc-c ++. armv6hl $ yum install make.armv6hl

Muat turun dan Bina Node.js

Sekarang bahawa kami mempunyai persekitaran binaan kami yang sedia untuk pergi, kami perlu memuat turun, membina dan memasang Node.js. Ikuti langkah-langkah di bawah:

  1. Muat turun fail sumber nod-v0.10.18.tar.gz atau setaraf
  2. Ekstrak fail ke direktori, kemudian tukar direktori ke direktori yang diekstrak

    $ tar xvfz node-v0.10.18.tar.gz $ cd node-v0.10.18

  3. Jalankan skrip ./configure

    $ ./configure

  4. Jalankan arahan buat (ini akan mengambil sedikit masa)

    membuat $

  5. Jalankan arahan pemasangan (ini juga akan mengambil sedikit masa)

    $ make install

  6. Selesai - Jika semuanya berjalan dengan lancar, anda sepatutnya dapat melaksanakan arahan berikut:

    $ node --versi

Bercakap dengan Arnold melalui Protokol s3g menggunakan Node.js

Protokol s3g adalah protokol bersiri yang digunakan oleh MakerWare dan perisian serupa untuk berkomunikasi dengan MakerBots. MakerBot Industries menyediakan pelaksanaan protokol Python di sini. Menggunakan protokol Python sebagai rujukan, saya melaksanakan subset kecil protokol dalam Node.js, anda boleh mencari sumber pada github.

Pertanyaan Protokol s3g Menggunakan objek ArrayBuffer dan Buffer, saya melaksanakan pembina pertanyaan mudah yang menghasilkan paket s3g yang terbentuk dengan baik untuk dihantar ke MakerBot melalui port bersiri. Antara muka pada masa ini menyokong tiga pertanyaan s3g:

  • Dapatkan Nama Bangun
  • Dapatkan Statistik Bina
  • Dapatkan templat alat

Komunikasi Serial melalui node-serialport Pakej node-serialport menyediakan antara muka siri mudah untuk berkomunikasi dengan MakerBot. Saya menulis pembungkus di sekitar antara muka bersiri untuk menyokong parsing perintah / tindak balas.

Status Penyiaran ke Azure

Aplikasi nod di Raspberry Pi menanyakan MakerBot setiap 20 saat. Apabila perubahan dalam status dikesan POST ke perkhidmatan Windows Azure Node.js dilakukan. Windows Azure digunakan untuk mengelakkan daripada menyediakan alamat IP yang boleh diakses secara eksternal untuk Raspberry Pi, dan untuk memunggah tanggungjawab pelanggan servis.

Sambungan dan Pemberitahuan Chrome

Chrome menyokong bahagian standard draf Pemberitahuan Web W3C. Pada mulanya saya melihat pelaksanaan pemberitahuan menggunakan standard, tetapi merasakan masih ada kekurangan. Khususnya pengguna mesti memberikan kebenaran untuk pemberitahuan, dan anda perlu menavigasi ke tapak untuk menerima pemberitahuan. Untuk mengatasi batasan ini, saya memutuskan untuk melaksanakan Pelanjutan Chrome. Saya mencipta pop timbul mudah yang menunjukkan status semasa MakerBot, Rajah 5. adalah popup lanjutan dalam tindakan. Untuk membenarkan pemberitahuan apabila pop timbul tidak aktif saya menggunakan halaman latar belakang, yang akan dijelaskan di bawah.

Latar Belakang Halaman A halaman latar belakang adalah koleksi skrip yang mempunyai kitaran hayat yang lebih panjang daripada pop timbul yang dipaparkan apabila anda mengklik pada ikon pelanjutan. Ini membolehkan kemas kini diterima dan pemberitahuan akan dipaparkan sebaik sahaja krom bermula. Untuk menentukan halaman latar belakang, anda perlu menambah kemasukan ke fail manifestasi pelanjutan anda. Ia juga perlu memasukkan sebarang kebergantungan yang akan digunakan oleh halaman latar anda.

"latar belakang": {"skrip": ["jquery.min.1.10.2.js", "faye-browser-min.js", "background.js"]}, "content_security_policy": "script-src ' 'https://makerstatus.azurewebsites.net; object-src' self '"

Faye Publish-Subscribe to Messaging System Anda akan melihat bahawa entri halaman latar belakang dalam manifes termasuk faye-browser-min.js. Kami menggunakan Faye untuk membuat sambungan ke perkhidmatan Windows Azure Node.js. Faye digunakan untuk menyiarkan kemas kini dari Arnold. Untuk mendapatkan fungsi Faye dalam kotak pasir pelanjutan, kami perlu menambahkan entri untuk melonggarkan Dasar Keselamatan Kandungan pelanjutan. Ini membolehkan pengundian balik JSON-P, yang merupakan mekanisme pengangkutan yang digunakan oleh Faye. Perlu di sini kerana sambungan dan perkhidmatan Azure tidak berada di domain yang sama.

Pemberitahuan Untuk mendayakan pemberitahuan, perlu memasukkan garis di bahagian kebenaran fail yang nyata. Oleh kerana kami menggunakan ikon dengan pemberitahuan kami, kami juga perlu menambahkannya sebagai sumber yang dapat diakses oleh web.

"kebenaran": ["pemberitahuan"], "web_accessible_resources": ["makerbot.logo.notify.png"]]

Setelah semua skrip berada di tempat, dan seluruh fail manifes entires, apabila kami menerima kemas kini, kami membuat pemberitahuan mudah seperti yang digambarkan di bawah.

Bungkus semuanya

Dalam siaran ini, kami meneruskan beberapa langkah untuk menyambungkan MakerBot ke interwebs. Sekarang bahawa kami mempunyai asas yang dilaksanakan, beberapa penambahan yang menarik mungkin termasuk menambah membina peratusan lengkap, atau bahkan aliran langsung membina kemajuan melalui WebRTC.

Selamat Membuat!

@aowola

Kongsi

Meninggalkan Komen