MakerBot + RaspberryPi + Google Chrome = HappyMaker! - 💡 Fix My Ideas

MakerBot + RaspberryPi + Google Chrome = HappyMaker!

MakerBot + RaspberryPi + Google Chrome = HappyMaker!


Penulis: Ethan Holmes, 2019

Kami baru-baru ini memperoleh Replicator 2 MakerBot di Truth Labs. Ia dikenal sebagai Arnold dari Villanova II (singkatnya Arnold). Dalam semangat pembuat, kami menggulung ekstensi krom kami sendiri untuk memberi tahu kami apa yang sedang dilakukan Arnold. Kami menggunakan beberapa protokol tech-s3g keren, Raspberry Pi, Node.js dan tentu saja, Google Chrome Extensions. Begini cara kami melakukannya.

Masalahnya: Lokasi Lokasi Lokasi

Arnold tidak berlokasi di pusat, yang mengharuskan kami melakukan perjalanan untuk memeriksa status pekerjaan cetak, dan berkali-kali, kami kecewa, kami mendapati Arnold keliru dalam tumpukan filamennya sendiri. Pekerjaan cetak membutuhkan waktu mulai dari 30 menit untuk model-model sederhana sampai beberapa jam untuk model-model kompleks, sehingga perjalanan ke dan dari Arnold dalam rentang waktu satu hari menjadi membosankan.

Solusinya: Self-Aware MakerBots

Yah, bukan MakerBots yang sadar diri, tapi ini awal. Replicator 2 MakerBot konvensional tidak memiliki kemampuan untuk terhubung ke internet, tetapi dengan sedikit bantuan dari Raspberry Pi, semua hal mungkin terjadi. Mengambil halaman dari buku pedoman Internet of Things, saya berangkat untuk menghubungkan Arnold ke internet, dan menjalankan sistem pemberitahuan sederhana. Ada beberapa potongan teka-teki, saya akan menjelaskan bagaimana mereka cocok bersama di bawah. Anda juga dapat mengecek repo status makerbot sebagai contoh kode untuk memulai. Repo tersebut menunjukkan kepada Anda bagaimana menggunakan Protokol s3g untuk menanyakan informasi dari MakerBot yang terhubung melalui USB.

Potongan Puzzle

MakerBot Replicator 2 - Menjalankan firmware yang mampu komunikasi serial melalui konektor USB.

Raspberry Pi - Menjalankan aplikasi Node.js sederhana yang bertanggung jawab untuk berkomunikasi dengan MakerBot melalui protokol s3g.

Pidora 18 (Raspberry Pi Fedora Remix) - Distro Linux tersedia untuk Pi. Ini didasarkan pada Fedora, distro pilihan saya.

Node.js (dikompilasi dari sumber) - Kompilasi Node.js dari sumber untuk memastikan node-gyp bekerja dengan benar pada Raspberry Pi, dan bermain bagus dengan paket node-serialport.

Windows Azure - Membuat titik akhir berbasis cloud untuk Arnold untuk mengirim informasi. Situs web Azure juga menyelenggarakan server bayeux untuk mengelola setiap klien yang mendengarkan informasi baru.

Google Chrome (Extensions) - Chrome, melalui Extensionsnya, menghubungkan ke pemberitahuan desktop dengan mudah.

Sorotan

Kombinasi teknologi ini menawarkan beberapa tantangan unik. Berikut adalah hal-hal menariknya:

Membangun Node.js dari sumber di Raspberry Pi

Karena perlunya node-gyp, dan komunikasi tingkat rendah melalui driver serial saya harus membangun node dari sumber pada Raspberry Pi. Ini adalah proses yang mudah selama lingkungan Anda diatur dengan benar. Pertama Anda harus menginstal distro linux, Anda dapat menemukannya di situs web Raspberry Pi. Juga perhatikan bahwa instruksi yang tercantum di bawah ini diselesaikan menggunakan Pidora. Milage dapat bervariasi.

Membangun Pengaturan Lingkungan

Ada beberapa hal yang harus Anda lakukan sebelum membangun Node.js dari sumber. Perhatikan juga bahwa beberapa perintah memerlukan hak yang lebih tinggi, dan tergantung pada distro Anda, Anda mungkin perlu menggunakan perintah su atau sudo.

Hal pertama yang akan kita lakukan adalah mengatur jam sistem. Beberapa kesalahan build aneh terjadi ketika jam sistem salah.

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

Setelah tanggal dan waktu benar, Anda juga perlu memperbarui manajer paket, dan semua paket yang diinstal, Yum Package Manager adalah manajer paket yang diinstal pada Pidora. Pembaruan sistem lengkap dapat dilakukan dengan menjalankan yang berikut:

Pembaruan $ yum

Setelah sistem Anda mutakhir, kami perlu memastikan Python (2.6 atau 2.7), GCC 4.2 atau lebih baru dan GNU Make 3.81 atau yang lebih baru diinstal. Python seharusnya sudah diinstal, untuk menginstal gcc dan menjalankan perintah di bawah ini:

$ yum instal gcc-c ++. armv6hl $ yum instal make.armv6hl

Unduh dan Bangun Node.js

Sekarang kami telah menyiapkan lingkungan build kami, kami perlu mengunduh, membangun, dan menginstal Node.js. Ikuti langkah-langkah di bawah ini:

  1. Unduh file sumber node-v0.10.18.tar.gz atau yang setara
  2. Ekstrak file ke direktori, lalu ubah direktori ke direktori yang diekstraksi

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

  3. Jalankan ./configure script

    $ ./configure

  4. Jalankan perintah make (ini akan memakan waktu cukup lama)

    $ make

  5. Jalankan perintah make install (ini juga akan memakan waktu cukup lama)

    $ make install

  6. Selesai - Jika semuanya berjalan dengan baik Anda harus dapat menjalankan perintah berikut:

    $ node --version

Berbicara dengan Arnold melalui protokol s3g menggunakan Node.js

Protokol s3g adalah protokol serial yang digunakan oleh MakerWare dan perangkat lunak serupa untuk berkomunikasi dengan MakerBots. MakerBot Industries menyediakan implementasi protokol Python di sini. Menggunakan protokol Python sebagai referensi, saya mengimplementasikan subset kecil protokol di Node.js, Anda dapat menemukan sumbernya di github.

s3g Query Protokol Menggunakan objek ArrayBuffer dan Buffer, saya mengimplementasikan pembangun kueri sederhana yang membuat paket s3g yang terbentuk dengan baik untuk dikirim ke MakerBot melalui port serial. Antarmuka saat ini mendukung tiga pertanyaan s3g:

  • Dapatkan Nama Bangun
  • Dapatkan Build Stats
  • Dapatkan Temp Toolhead

Komunikasi Serial melalui node-serialport Paket node-serialport menyediakan antarmuka serial sederhana untuk berkomunikasi dengan MakerBot. Saya menulis pembungkus di sekitar antarmuka serial untuk mendukung parsing perintah / respons.

Status Siaran ke Azure

Aplikasi simpul pada Raspberry Pi menanyakan MakerBot setiap 20 detik. Ketika perubahan dalam status terdeteksi POST ke layanan Windows Azure Node.js dilakukan. Windows Azure digunakan untuk menghindari keharusan memberikan alamat IP yang dapat diakses secara eksternal untuk Raspberry Pi, dan melepaskan tanggung jawab melayani klien.

Ekstensi dan Pemberitahuan Chrome

Chrome mendukung bagian dari standar konsep Pemberitahuan Web W3C. Awalnya saya melihat penerapan notifikasi menggunakan standar, tetapi merasa masih ada kekurangan. Khususnya pengguna harus memberikan izin untuk pemberitahuan, dan Anda harus menavigasi ke situs untuk menerima pemberitahuan. Untuk mengatasi keterbatasan ini, saya memutuskan untuk menerapkan Ekstensi Chrome. Saya membuat popup sederhana yang menunjukkan status terkini dari MakerBot, Gambar 5. adalah ekstensi popup yang sedang beraksi. Untuk mengizinkan pemberitahuan ketika sembulan tidak aktif saya menggunakan halaman latar belakang, yang akan dijelaskan di bawah.

Halaman Latar Belakang Halaman Latar Belakang adalah kumpulan skrip yang memiliki siklus hidup lebih lama daripada jendela sembulan yang ditampilkan saat Anda mengeklik ikon ekstensi. Ini memungkinkan pembaruan diterima dan pemberitahuan ditampilkan setelah chrome dimulai. Untuk menentukan halaman latar belakang, Anda perlu menambahkan entri ke file manifes ekstensi Anda. Ini juga harus mencakup semua dependensi yang akan digunakan halaman latar belakang Anda.

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

Sistem Pesan Penerbitan Berlangganan Faye Anda akan melihat bahwa entri halaman latar belakang dalam manifes termasuk faye-browser-min.js. Kami menggunakan Faye untuk membuat koneksi ke layanan Windows Azure Node.js. Faye digunakan untuk menyiarkan pembaruan dari Arnold. Agar Faye berfungsi di kotak pasir ekstensi, kita perlu menambahkan entri untuk melonggarkan Kebijakan Keamanan Konten ekstensi. Hal ini memungkinkan untuk polling callback JSON-P, yang merupakan mekanisme transportasi yang digunakan oleh Faye. Ini diperlukan di sini karena ekstensi dan layanan Azure tidak pada domain yang sama.

Pemberitahuan Untuk mengaktifkan notifikasi, perlu untuk memasukkan baris di bagian izin file manifes. Karena kami menggunakan ikon dengan pemberitahuan kami, kami juga perlu menambahkannya sebagai sumber daya yang dapat diakses web.

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

Setelah semua skrip tersedia, dan sisa file manifes masuk, ketika kami menerima pembaruan, kami membuat pemberitahuan sederhana seperti yang digambarkan di bawah ini.

Membungkus semuanya

Dalam posting ini kami telah melalui beberapa langkah untuk menghubungkan MakerBot ke interweb. Sekarang, setelah basis kami diimplementasikan, beberapa tambahan yang menarik mungkin termasuk menambahkan persentase build lengkap, atau bahkan stream langsung dari kemajuan build melalui WebRTC.

Selamat membuat!

@ aowola



Anda Mungkin Tertarik

Membuka Perangkat Keras di Eyebeam

Membuka Perangkat Keras di Eyebeam


Di Pasar Pembuat: Dead drop spike

Di Pasar Pembuat: Dead drop spike


Bisnis Pembuat: Crestview Doors

Bisnis Pembuat: Crestview Doors


Sabuk Utilitas "Not a Fanny Pack" dari Runner

Sabuk Utilitas "Not a Fanny Pack" dari Runner






Recent Posts