The Smoothie project's TODO list
This page lists all of the projects the community is working on, and those that are planned.
This includes improvements on the existing, new features, refactors, new hardware and documentation efforts.
If you are looking to help the project, but do not know where to start, this is the place to get an idea what is going on within the project right now.
If you have an idea for a new feature or any kind of improvement, please contact the community via IRC or the mailing lists to discuss it. You can also contact firstname.lastname@example.org with any questions or to chat about implementation details.
Table of Contents
Smoothieware v1 firmware
The Smoothieware firmware that runs on the Smoothieboard v1 ( Smoothieware v1 ) has a lot of features, and has received a lot of love over the years. But there are many things we want to improve, and new features we want to implement or experiment with :
Step generation improvements
Jim Morris is working on several improvements on the step generation in Smoothie, including removing on_gcode_execute and doing acceleration every step instead of on a fixed clock as we do now, as well as many other small changes.
This is expected to result in a much saner codebase, smoothness/performance improvements, and to make it easier to implement some new features, like S-curve acceleration, 6-axis support and some extruder features.
This is going to require, amongst other things, a massive rewrite of the Extrude and Laser modules.
This is also possibly going to solve the problem Simplify3D and Smoothie have with each other.
Update : This was merged into edge beginning of July 2016, and is now being tested by the community in the wild.
Jim Morris is planning on implementing 7th order acceleration into Smoothie.
See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained for an explanation of what this is.
Recursive file playing
This new feature would allow users to call the play command from within currently playing files.
Not only would it be convenient, it'd also make it much easier to implement macros and tool changing routines.
The current status of this work can be seen at : https://github.com/Smoothieware/Smoothieware/compare/recursive?expand=1
Once the step generation improvements and s-curve support have been implemented, it will be much easier to add proper 6-axis ( XYZABC ) support into Smoothie. This is currently done by using the Extruder module, which has some limitations, doing it properly would be a good improvement.
This issue keeps track of that feature : https://github.com/Smoothieware/Smoothieware/issues/120
You can follow the progress at https://github.com/Smoothieware/Smoothieware/pull/798
Soft endstops is a feature in which the machine is aware of it's physical limits, and does not go past these, without the need for a physical switch to actually detect this.
This feature is more complex to implement than what one might think, and the need to actually implement it "cleanly" and discussion on how to do so, has delayed actual coding work on it.
A proposed implementation is described here.
If you want to help with this, don't hesitate to ping the community.
File-based panel system
There is a project to explore using files on the SD card to describe the panel menu system, instead of using code.
This would allow for multi-language, user customization, richer menus with more options, and new features.
However, it's not clear yet if this would be fast enough to be comfortable to use, and it's not possible to use files while a file on the SD card is playing, so that is a problem that would need to be solved ( possibly by having a separate, simpler system while playing files ).
You can see a specification for this new idea here : https://is.gd/VlsYq3
Jarek Szczepański is currently looking into implementing this, but any help is very very welcome.
Support mixing nozzles
Mixing hotends like the Diamond, require extruding using several different extruders at the same time, which Smoothie doesn't know how to do yet.
There is discussion of implementing this in this issue : https://github.com/Smoothieware/Smoothieware/issues/875 and [digiexchris https://github.com/digiexchris] is working on implementing it.
Fix thermocouple SPI problem
There is a problem in Smoothie right now where SPI thermocouple boards is called in interrupts, when it shouldn't. Amongst other things it prevents using several thermocouple boards at the same time.
Grey Christoforo has worked on fixing the issue here : https://github.com/Smoothieware/Smoothieware/pull/891 but his work needs testing. If you have a Max31855 thermocouple board, please test his work so it can be merged !
Extruder JKN advance
Extruder advance is a technique of managing the pressure of the extruder relative to the head's motion so that the plastic is more regularly applied to the part.
You can see some talk of implementing it in Smoothie here for example : https://github.com/Smoothieware/Smoothieware/issues/645
Several persons have written implementations, but they were too complex to be merged. The work on step generation ( per-step accel, s-curve, 6-axis etc ) will involve some refactors that would then make this simpler to implement.
If you are interested in helping with this, don't hesitate to ping us.
There is a planned refactor ( or at least an exploration to see if it would be practical ) of the "queue" system in Smoothie, that would make the code saner, would use less ram, and would allow for more performance/new features.
You can read about it at : http://smoothieware.org/queue-refactor
It is likely this will not be tried before a lot of other things happen ( including Smoothie2 firmware ) because it would change a lot of things in the firmware.
It is also possible we will move step by step towards this, at least for part of it ( Jim Morris already started this by removing occurences of on_gcode_execute ).
NOTE this is no longer required after the motion control merge. It basically is not an issue now.
There is some work that needs to be done in order to properly supporting automated tool changing.
Arthur is planning on working on this sometime around July 2016. Any help is extremely welcome.
A first step towards tool changing is to implement recursive file playing. Work on that is ongoing here.
Roland Kamsika is working on adding support for the PT100 temperature sensors to the Smoothieboard. Work is nearly done, but nothing has been published yet.
This would allow forwarding of Gcode strings to other Smoothieboards over serial, therefore allowing use of boards as "slaves".
This would be a very powerful tool.
The specification is available here
If you want to help with this, don't hesitate to contact us
Lua is a very simple programming language. It's quite commonly used to add "scripting" support to applications. An idea that has been floating around ( for v2 Smoothie ) would be to experiment with ( we don't know if it's possible ) adding a LUA interpreter to Smoothie. It'd have to be simple enough that it doesn't take too much RAM, but if it were made to work, it'd add the ability to create scripts that Smoothie would trigger when it receives specific Gcodes, or when specific internal events occur. Those scripts could check for variables, send Gcodes internally, activate external peripherals etc. This would be an extremely powerful tool, but we don't know if it's feasible, and would like to find out.
Basic functions such as serial communication, configuration, planning and step generation, have been ported, but many others like temperature control, USB, Ethernet, SD card support, etc, are still missing. We need your help moving the project forward.
Many have already offered to help, and at this point, several are at the point where they have hardware to work on, and are starting to get familiar with the codebase. But this is a huge project, and here more is better ! So come join the effort :)
You can find a list of the things to do for this project in the ReadMe : https://github.com/Smoothieware/Smoothie2/blob/master/README.md
Below are a few of the ones that need the most work. Because these are difficult to implement, it's hard finding people to work on them. If you think you are capable of doing any of those, please please please contact us, we really need help on these.
Like the v1 board, the v2 board will have a USB port.
On the v1 board, that port exposes a composite device ( Serial + Mass storage ) to the host computer. However, Mass Storage just plain sucks. The computer can mess things up anytime without the board being able to prevent it, the board can't safely write to it's own SD card, corruption of the card is a common thing, etc.
Besides simply implementing basic Serial/USB ( CDC ) functionality, which would already be awesome, we'd like the firmware to support MTP : https://en.wikipedia.org/wiki/Media_Transfer_Protocol
That'd be a much safer way for the computer to access the card, it'd allow the board to have control, write to the SD card itself ( which would allow for implementation of many new features ), present virtual files, etc.
But implementing MTP is a really huge task. If you think you could do this, please please contact us. There are even some companies likely ready to pay some money for this to encourage implementation.
The v1 board has an Ethernet port, the v2 board too. We need Ethernet, TCP/IP, a web and telnet server, to be implemented in the v2 firmware, the same way it was on the v1.
I ( Arthur ) have no idea how much work it'd be. There is a few implementations of web servers for LPC4337 available on the net, so it may simply be a matter of mashing that together with the v1 implementation.
The v1 Ethernet implementation has some limitations and problems, it's possible with the better v2 hardware, a better implementation could be done.
If you have know-how related to this, please help ! :)
Adam Green is already working on this : https://github.com/adamgreen/SDCard
Thank you so much Adam Green !
If you want to help with this, I believe testing can help greatly.
Mark Cooper is designing the Smoothieboard v2, v2-pro, and v2-mini boards, in Kicad, so that is pretty much covered for now.
The boards are now in alpha, once the alpha board has been tested, a beta board will be designed, and the files for it will be published. At that time we'll need help reviewing the design. If you are interrested, contact us.
Other projects related to the v2 hardware :
The Smoothie firmware is trying very hard to be as modular as possible, and to make it easy to do weird things. In v2, we want to make the hardware even more modular/hackable than it already is.
To do this, we plan on having a set of standard connectors ( based on the gadgeteer pinout ) :
and a very varied set and extension boards that'd plug easily into those connectors, for a very large variety of sensors, actuators, and peripherals.
You can find more information on this project at this link : https://plus.google.com/+ArthurWolf/posts/GPF7hSGQiew
We are looking for help with this, if you know PCB design, you are very welcome to contribute, most extension boards are quite easy to design.
There is a project to create a system of chainable boards that would connect to a Smoothieboard v2. You would be able to chain as many as you want, and each board would control a separate tool. We plan on implementing several different tools, but the first one that is currently being worked on is the Extruder board.
You can find the specification for this project here : https://is.gd/peaDqc
Kliment Yanev ( of Pronterface and Teacup fame ) is currently working on this. Any help welcome !
Preview : http://i.imgur.com/TFH1bHX.png
The http://smoothieware.org website, which contains the documentation for the project, is a wiki. This means you can edit any page to add information or make it clearer.
Help on the documentation is extremely welcome. We want the best documentation possible. The documentation is extremely complete, compared to what is common in the community, but there are plenty of things that are missing still, and probably even more important, there are parts of the documentation that need to be made clearer.
Graphics, diagrams, and videos, are also very welcome.
A few documentation-related projects you might be interrested in :
- Bouni makes very nice Smoothie graphics.
- Anthony made a very complete definition file for the configuration options for use in software : https://github.com/arthurwolf/fabrica/pull/4
We are working on synopses for a series of tutorial videos : https://github.com/Smoothieware/Smoothie-video-tutorials . We hope maybe we can get Thomas to work on these at some point.
If you have an interest in helping with this, mostly by writing synopses for the videos ( graphics would also be useful once the synopses are further along ), please contact us, help is very much needed.
This is a great way of helping the project that does not require knowing how to code or how to design PCBs. Actually, having the point of view of a complete beginner is a good thing for this project, so everybody, pro or newbie, is extremely welcome to help. If you feel like Smooothie helped you, this is a great way of helping back.
Smoothieboard has an Ethernet port, and we have huge ambitions for it. The current web interface it serves is a bit limited.
But there are several projects being worked on to replace it, and other ethernet-related projects within the community :
Better web UI
Jarek is working on an improved version of the current Smoothie web interface.
There is a plan to have the Smoothieboard auto-detect if an interface is present on the SD card, and display that if it is present. And also to start shipping this interface with the SD cards. This way we'd save on flash on the card, and we'd have a better web interface for users.
Fabrica is a project for a simple to use, panel-type GUI to control Smoothieboards. It's web-based, has very ambitious goals, and is intended to be used on android tablets or smartphones, which are about the same price as the current LCD screens, but are much better.
You can find more information on fabrica here : https://github.com/arthurwolf/fabrica , and any help is very welcome !
If you know any of these : web design, html, css, js, ux, gui design, graphic design, and want to help us make a kick-ass interface, please contact us :)
Smoothie-Happy ( Smoothie API )
You can see a demo here : http://lautr3k.github.io/Smoothie-Happy/ and documentation here : http://lautr3k.github.io/Smoothie-Happy/docs/smoothie-happy/0.0.1-alpha/
Contact him if you want to help.
Liam Jackson is working on implementing a firmware for the ESP8266 that would make it behave exactly like the Ethernet port on the Smoothieboard, essentally adding Wifi support to the board transparently. Github repository. If you want to help, contact us.
You can try the app on the play store : https://play.google.com/store/apps/details?id=com.siberiangoldfish.damfle.smoothiecontrol&hl=en
You can help by testing it with your Smoothieboard, reporting issues, or improving compatibility.