fablab-bergamo / Fab-O-matic

RFID machine access solution for a Fab Lab, based on ESP32. Uses modern C++ with Arduino framework. Hardware project is included.
https://www.fablabbergamo.it/2024/06/03/fabomatic1/
MIT License
2 stars 3 forks source link

V1.0 Requirements discussion #4

Open PBrunot opened 1 year ago

PBrunot commented 1 year ago

I'm opening an issue to gather feedback regarding requirements identified for the RFID lab machine management. I use English as the end-goal may be to integrate such a solution in Fab Manager.

Requirements for V1.0 (can be revised):

Functional requirements

Regulatory requiments

Economical requirements

Excluded requirements for V1.0 (can be revised)

Design choices so far

valerionew commented 1 year ago

Thanks Pascal, looks good!

I can add a few points, mostly from a staff member perspective:

Also, where should we put the requirements for the server? Here there is a first old draft of the specs: https://github.com/fablab-bergamo/rfid-database-interface/blob/main/README.md

Here there is also a rough TODO list: https://github.com/fablab-bergamo/rfid-database-interface/blob/main/TODO.md

PBrunot commented 1 year ago

@valerionew : I've added the maintenance performed to the boards (it's in the open PR #3 ). When the machine requires maintenance, usage is blocked. A short tap from a fablab admin will enable the machine anyways (so postponing maintenance is not required). A long tap (3s) will register the maintenance operation as done.

Regarding PCB: most of the standard parts are in the lab, no problem. What is your idea for machine connection ? I'm not sure we can do safely interrupt a powerline with standard parts on a breadboard... I'm not an EE engineer, but it would required case-assembly-soldering of parts-fixtures before we connect mains wires ?... Also, I think the lab machines do not have an "external enable" signal to bring a volt-free signal from the relay. Maybe we could add in serie the relay to a safety interlock.

Finally regarding server requirements I have opened a separate issue in fablab-bergamo/rfid-database .

valerionew commented 1 year ago

Probably breaking the interlock chain is the safest, I agree with you. But while the lasers and CNCs have that, there is no interlock in 3D printers. One strategy would be operating the reset pin of the control boards, but that is not always obvious to find and to "hack into", plus it requires some modifications to the board itself that can invalidate warranty.

My idea was indeed to interrupt the power line. In 3D printers we could safely and easily do it on the low voltage line. So the user would still have to turn on the machine via the usual switch, and then the box would prompt the user for a card, closing the low voltage circuit.

Another discussion we have to do is powering of our system. If we intercept any power, such as in 3D printers, we can exploit that. But if we don't, like with the lasers and the CNCs, how do we power the box?

Last big thing on this point, we should forecast the possibility of a system that we cannot modify at all (even with non-permanent modifications). In that case, the only option would be to interrupt the power cable.

valerionew commented 1 year ago

@PBrunot If it is ok with you, I would like to give you write access to this repo, so you can work directly on a branch of this repo instead of a fork.

valerionew commented 1 year ago

I've also created a project in the organization's page to help us keep track of the various ongoing feature developments.

I don't know if this is going to be useful, if not just leave it be and we will delete it.

Projects documentation on github

PBrunot commented 1 year ago

Nice, I've never used projects but it looks like a better option than using issues to keep tracks of things to do. I've created a few tasks in it.

PBrunot commented 2 months ago

Review of Requirements as of June 2024

Functional requirements

Requirement Status notes
Board must enable usage of lab machines by users, based on individual RFID tags -
Board must be easy to use with no user training requirements (usage in a school context) QRCode and LCD
Board must be robust in case of WiFi issues, to avoid blocking the lab or powering off machines it network is out of service Caching of RFID+whitelist to allow usage
Board must be low-maintenance for Fab Lab (ideally only initial setup and no batteries) Powered by the machine itself
Board must physically fit next to the machines approx 10x10x6 cm
Board must not interfere with long jobs (e.g. printing large 3D pieces) Autologoff can be disabled
Cumulative hours Machine usage must be registered for maintenance Some bugs to be fixed
Board must signal that machine maintenance is needed (e.g. laser lens cleaning every X hours) LCD displays expired maintenance text
A FabLab user can register maintenance operations to reset the maintenance signal Done with long tap
Server must be able to handle several boards simultaneously (min. 10 boards) Tested with 5,6 so far without issues
A FabLab admin must be able to ENABLE/DISABLE machine for general usage "Blocked for all" in backend project
Server must provide statistics per machine (usage log, hours cumulated, maintenance done) See backend project

Regulatory requiments

Requirement Status notes
GDPR compliance based on fab member consent or anomized data. Purge and GDPR consent to be reviewed
Boards must be electrically safe for usage in public space. So far only 24VDC is used

Economical requirements

Requirement Status notes
Boards must be low cost to manufacture (criteria < 50 eur/board) approx 15eur/board
Server must be low cost to operate (criteria < 50 eur/year) runs on Raspberry Pi or DebianVM

Excluded requirements for V1.0 (can be revised)

Requirement Status
Access control (boards control machines, not doors). ❌ not planned
Server shall not depend on Fab Manager (this can be done later, and it requires some plugin because the FabManager data model is not ready : no hours per machine, no maintenance, no attribute for users to link to tags, non-Fab users in the lab...) not started
Server shall not handle users abilitation to machines (this feature can come with the Fab Manager integration) ✅ actually this has been done in the backend as optional step for critical machines
Board shall not track consumables (e.g. meters of filament acquisition) ❌ not planned
Board shall not track actual machine running time (it will rely on user log-on and log-off) 💡could be done with external signal