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

MakerBot + RaspberryPi + Google Chrome = HappyMaker!

MakerBot + RaspberryPi + Google Chrome = HappyMaker!


Forfatter: Ethan Holmes, 2019

Vi har for nylig erhvervet en MakerBot Replicator 2 her hos Truth Labs. Han er kærligt kendt som Arnold of Villanova II (Arnold for kort). I producentens ånd rullede vi vores egen kromudvidelse for at fortælle os, hvad Arnold er i stand til. Vi brugte nogle seje tech - s3g Protocol, Raspberry Pi, Node.js og selvfølgelig Google Chrome Extensions. Sådan har vi gjort det.

Problemet: Placering Placering Placering

Arnold er ikke centralt placeret, hvilket kræver, at vi tager en tur for at kontrollere status for udskriftsjob, og mange gange, til vores forfærdelse, finder vi Arnold fejlagtigt i en bunke af eget filament. Udskrivningsopgaver tager overalt fra 30 minutter til enkle modeller hele vejen op til et par timer for komplekse, så gåtur til og fra Arnold i løbet af en dag bliver kedelig.

Løsningen: Self-Aware MakerBots

Nå, ikke ligefrem selvbevidste MakerBots, men det er en start. En konventionel MakerBot Replicator 2 har ikke evnen til at oprette forbindelse til internettet, men med en lille hjælp fra en Raspberry Pi er alt muligt. Ved at tage en side ud af internet af Things playbook, satte jeg op for at forbinde Arnold til internettet og køre et simpelt anmeldelsessystem. Der er et par stykker til puslespillet, jeg forklarer, hvordan de passer sammen nedenunder. Du kan også tjekke producentbot-status repo for eksempel kode for at komme i gang. Repoen viser dig hvordan du bruger s3g-protokollen til forespørgsel fra en MakerBot tilsluttet via USB.

Puslespil

MakerBot Replicator 2 - Kører fastware, der er i stand til seriel kommunikation via USB-stikket.

Hindbær Pi - Kører en simpel Node.js ansøgning ansvarlig for kommunikation med MakerBot over s3g protokollen.

Pidora 18 (Raspberry Pi Fedora Remix) - En Linux Distro til rådighed for Pi. Det er baseret på Fedora, min distro af valg.

Node.js (kompileret fra kilden) - Kompil Node.js fra kilde for at sikre, at node-gyp fungerede korrekt på Raspberry Pi, og spillede godt med node-serialport-pakken.

Windows Azure - Opret et cloud-baseret endepunkt for Arnold at sende information til. Azure-webstedet er også vært for en bayeux-server til at styre alle klienter, der lytter efter nye oplysninger.

Google Chrome (Udvidelser) - Chrome, gennem dets udvidelser, kan nemt indarbejdes i meddelelser på skrivebordet.

Højdepunkterne

Denne særlige kombination af tech tilbød nogle unikke udfordringer. Her er højdepunkterne:

Opbygning af Node.js fra kilde på Raspberry Pi

På grund af nødvendigheden af ​​node-gyp, og lavt niveau kommunikation via serielle drivere, måtte jeg bygge node fra kilde på Raspberry Pi. Det er en simpel proces, så længe dit miljø er oprettet korrekt. Først skal du installere en Linux Distro, du kan finde dem på Raspberry Pi hjemmeside. Bemærk også, at instruktionerne nedenfor blev gennemført ved hjælp af Pidora. Milningen kan variere.

Build Environment Setup

Der er et par ting, du skal gøre, før du bygger Node.js fra kilden. Bemærk også, at nogle kommandoer kræver forhøjede rettigheder, og afhængigt af din distro må du muligvis bruge su eller sudo-kommandoer.

Det første, vi vil gøre, er at indstille systemuret. Nogle mærkelige opbygningsfejl opstår, når systemuret er forkert.

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

Når dato og klokkeslæt er korrekte, skal du også opdatere pakkehåndteringen, og alle installerede pakker, Yum Package Manager, er pakkehåndteringen installeret på Pidora. En fuld systemopdatering kan udføres ved at udføre følgende:

$ yum opdatering

Når systemet er opdateret, skal vi sørge for at Python (2.6 eller 2.7), GCC 4.2 eller nyere og GNU Make 3.81 eller nyere er installeret. Python skal allerede installeres, for at installere gcc og udføre kommandoerne nedenfor:

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

Download og Build Node.js

Nu hvor vi har vores byggemiljø klar til at gå, skal vi downloade, bygge og installere Node.js. Følg nedenstående trin:

  1. Download node-v0.10.18.tar.gz kildefiler eller tilsvarende
  2. Udpak filer til en mappe, og skift derefter mappe til den udpakkede mappe

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

  3. Kør ./konfigurer script

    $ ./konfigurer

  4. Udfør gør kommando (dette vil tage et stykke tid)

    $ make

  5. Udfør make install-kommando (dette vil også tage et stykke tid)

    $ gør installationen

  6. Færdig - Hvis alt går godt, skal du kunne udføre følgende kommando:

    $ node - version

Taler til Arnold over s3g-protokollen ved hjælp af Node.js

S3g-protokollen er en seriel protokol, der bruges af MakerWare og lignende software til at kommunikere med MakerBots. MakerBot Industries leverer en Python implementering af protokollen her. Ved hjælp af Python-protokollen som reference, implementerede jeg en lille delmængde af protokollen i Node.js, du kan finde kilden på github.

s3g Protocol Queries Brug af ArrayBuffer og Buffer objekter, implementerede jeg en simpel forespørgselsbygger, der skaber velformede s3g-pakker til at sende til MakerBot via seriel porten. Interfacet understøtter for øjeblikket tre s3g forespørgsler:

  • Få Build Name
  • Få byggestatistik
  • Få Toolhead Temp

Seriel kommunikation via node-serialport Den node-serialport-pakke giver en simpel seriel grænseflade til at kommunikere med MakerBot. Jeg skrev en wrapper omkring den serielle grænseflade for at understøtte kommando- / responsparsing.

Broadcasting Status til Azure

Knudeapplikationen på Raspberry Pi spørger MakerBot hvert 20. sekund. Når en statusændring opdages, udføres en POST til en Windows Azure Node.js-tjeneste. Windows Azure bruges til at undgå at give en eksternt tilgængelig IP-adresse til Raspberry Pi, og at aflaste ansvaret for at betjene kunder.

Chrome-udvidelser og meddelelser

Chrome understøtter dele af standardudkastet til W3C Web Notifications. Jeg kiggede oprindeligt på implementeringsmeddelelser ved hjælp af standarden, men følte, at der stadig er mangler. Specielt skal brugeren give tilladelse til underretninger, og du skal navigere til webstedet for at modtage underretninger. For at undgå disse begrænsninger besluttede jeg at gennemføre en Chrome Extension. Jeg oprettede en simpel popup, der viser den nuværende status for MakerBot, Figur 5. er udvidelsespoppen i aktion. For at tillade underretninger, når popup'en var inaktiv, brugte jeg en baggrundsside, som forklares nedenfor.

Baggrundssider En baggrundsside er en samling af scripts, der har en længere livscyklus end den popup, der vises, når du klikker på et udvidelsesikon. Dette gør det muligt at modtage opdateringer, og meddelelser skal vises, når krom starter. For at definere en baggrundsside skal du tilføje en post til din udvidelses manifestfil. Det skal også indeholde eventuelle afhængigheder, som din baggrundsside vil udnytte.

"baggrund": {"scripts": ["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-Abonner Besked System Du vil bemærke, at baggrundsindgangen i manifestet indeholder faye-browser-min.js. Vi bruger Faye til at oprette forbindelse til Windows Azure Node.js-tjenesten. Faye bruges til at udsende opdateringer fra Arnold. For at få Faye funktionel i forlængelsens sandkasse, skal vi tilføje en post for at løsne indholdsikkerhedspolitikken for udvidelsen. Dette giver mulighed for JSON-P callback-polling, hvilket er en transportmekanisme, der anvendes af Faye. Det er nødvendigt her, fordi udvidelsen og Azure-tjenesten ikke er på samme domæne.

Underretninger Hvis du vil aktivere underretninger, er det nødvendigt at medtage en linje i tilladelsesafsnittet i manifestfilen. Da vi bruger et ikon med vores anmeldelse, skal vi også tilføje det som en web tilgængelig ressource.

"tilladelser": ["notifikationer"], "web_accessible_resources": ["makerbot.logo.notify.png"]

Når alle scripts er på plads, og resten af ​​manifestfilen medfører, når vi modtager en opdatering, opretter vi en simpel meddelelse som den der er vist nedenfor.

Indpakning det hele

I dette indlæg gik vi gennem nogle af trinene for at forbinde en MakerBot til interwebs. Nu da vi har basen implementeret, kan nogle interessante tilføjelser omfatte at tilføje bygge komplet procent, eller endda en live stream af build fremgang via WebRTC.

Glad gør!

@aowola



Du Kan Være Interesseret

Hands-On med DJI's nye inspirerende One Transforming Drone

Hands-On med DJI's nye inspirerende One Transforming Drone


Dronecode: Linux Foundation, 3D Robotics Opret Open Source UAV Software Platform

Dronecode: Linux Foundation, 3D Robotics Opret Open Source UAV Software Platform


Droner gør godt

Droner gør godt


Filmfremstilling fra ovenstående

Filmfremstilling fra ovenstående






Seneste Indlæg