M10CUBE  (M10 in short) road map

This is a teamwork project! It is up to the contributors to put their name in public

Soon...

A PLC software using all M10CUBE I/Os :

First PLC software will be  CODESYS (Raspberry Pi runtime is free for 2 hours use) since there is a lot of experience with this IDE.

Then other, totally free and open source IEC 61131-3 BEREMIZ or IEC 61499 4DIAC enabled IDEs can follow . Hopping someone will give us a little help on these brilliant software, following the well known song ...

A M10CUBE sensor board software:
That is written in Arduino IDE using all on board hardware running on the embedded ESP32 module.


Some history as a preface.
Despite the fact that we started M10 as a modular PLC system within a cube of 10x10x10 cm soon realized that in a broader sense, everything is a Programmable Logic Controller. Every microControler Programmed Logically to help us in everyday life.
 
Many years ago back in 1980 when programming Z80 custom made designs written in assembler for controlling various machinery in reality that was a primitive PLC.
Of course later as wiki states IEC 61131  (then IEC 61131 -3) published in December 1993 PLC came to life for ladder programming. Today (initially published in 2005) the specification of IEC 61499 (as explained by Lewis and Zoitl) is one step up to  IEC 61131.
In a sense the famous Arduino Blink program is a PLC program (not in IEC 61131 -3 but in C).
PLC remains as standard word for industrial controllers. Recent days many change the term PLC into a more appropriate acronym PAC ( Programmable Automation Controller).

PAC is an industrial controller that combines the functionality of a PLC with the processing capability of a PC. You are thinking right. Is a Raspberry Pi running a PLC program called PAC?  The answer is YES.

The idea was tinkering in my mind so in 2011 in the Raspberry Pi forum I started a thread in an effort to combine Raspberry and PLC environment:
Turn Raspberry Pi into a P.L.C (Programmable Logic Controller)
https://www.raspberrypi.org/forums/viewtopic.php?f=41&t=455&hilit=vorrias
That time my Raspberry was not delivered yet.

Time went by. ..

During that time I found enthusiastic designers and they contribute to the final M10 idea.
I hope to be permitted to put their names here. Without these guys M10 could not be born.

It does not matter if M10 contains a PLC or a PAC or a custom made C, C++ or Python firmware. M10 likes them all. Because M10 is a controller cube, a container I may say that makes the control job look easy. Any control job.  
You may ask what hardware is inside? The answer is anything. Hardware that haven't cross our mind yet. The hardware inside M10 may be different as long as the first low of M10 is not violated

But we must start from something we all understand.
To get an idea of what a M10 looks like we will introduce you our first M10 PLC incarnation which at the time of writing ( 05/05/2020) has the following modules ready for fabrication.
1 – CPU module (contains Raspberry Pi 4). All modules share the same 40pin Raspberry bus. 2 – DIO module. Eight opto isolated 24V inputs plus eight 24V outputs high side transistors.
3 – DO module. Eight relays with 16 amps contact capability to power any heavy loads even 220V mains power appliances.

M10 ecosystem in detail
The design must not violate the rule of M10:
- External enclosure (CUBE) maximum dimensions X = 10cm, Y = 10cm, Z = Up to 10cm. Electronics inside must be powered by 24 DC or 220 AC or POE, or battery.
Some sub rules must also apply but it is to verify that every M10 incarnation can communicate and stand side by side with the other.

Directives:
-Used materials and modules out of the self if possible. -DIY friendly. -Think Green and Reuse philosophy
-Z dimension depends on number of modules . -within the CUBE interconnection bus between modules must exist and modules designed for the specific M10 can be interchanged between M10CUBEs sharing the same bus e.g Raspberry Pi 40 pin.
-All modules belonging to the same M10 type must share the shame mechanical specs for interconnection.
-M10 can be connected with almost any number of other M10 by CANBUS, WiFi, Ethernet, LoRaWAN, Bluetooth, or the the upcoming standard by Amazon, Apple, Google, and the ZigBee Alliance -Out of the box as industry dictates CAN BUS is the best candidate and very easy utilized by using readily available software libraries and hardware

Why M10 name?
-M stand for modular. -Modular was chosen for obvious reasons.

-10 stands for 10cm cube concept and was chosen for various reasons some of them are : -We have 10 fingers so easy to remember.
-10x10x10 as said before is a lot of space to build a DIY PLC (or any controller) though small enough to fit in our  home as an automation controller. Connecting more CUBES together with a field-bus like CAN we can spread and distribute a lot of PLC power for any application needed.
-Friendly dimension to wall mount (Using  wall mounting adapters). Can be used next to our wiring junction boxes with acceptable aesthetic (not bulky). With careful artistic 3D design modules can look good even in places where our TV is locating.
-Can be Din-Rail mounted  Using  snap in adapters for use in industrial enclosures
M10 concept includes two ideas on one package.

1 – Abstract (Ideas , Philosophy, Think Green):
Any technological ideas in the controllers field in an attempt to build an open-source, economical, DIY, Green PLC by incorporating anything done so far in a way that will be modern, good looking industrial design, modular, reusable and more . On this aspect M10 is open and dynamic on the enclosed electronics

2 - Material  (Framework, Ecosystem, Specifications):
That is the real hardware . A container following the M10 specification. Certain specifications may define the exact hardware but this only applies on a certain type of M10
To be more specific one can start of building a M10 PLC using Raspberry Pi 40 pin bus connector. That is the one we choose to try first. Another can start its own M10 hardware design as long as the M10 rule is not violated. Of course you are free to do whatever you like and violate M10 rule but that is not called M10_CUBE. This is only for not loosing track and confuse users. No licensing involved as we decided everything is free and open source.
That particular M10, lets say M10-R will have specific specifications applicable to M10-R PLC.
All UNITS must be able to communicate and work properly within M10-R PLC
One can start his own M10 by not violating the low of M10 Within this limited dimension we must pack as more PLC (electronics) power we can.

5 modules of 20mm each on width (z axis) can make a really powerful M10 PLC.
CPU can be on one module but that is not limited. Some I/O modules may contain a CPU. In fact there is not strict limit on where the CPU can be located on the system. A user can build his M10 PLC and put CPU in any Unit

Concluding
A road map to M10 ecosystem. For the shake of simplicity we call it M10.
M10 is not reinventing the wheel. Proven technology is used wrapped in an idea to make a reusable micro-controller driven ecosystem. A Green Deal project I may say.

Mechanics
Width of the frames is dictated by the 40 long pin connector used living us with this: - External dimensions 10x10x10cm.
- Raspberry Pi frame width 29.6 mm (under consideration)
- Add on boards frame width 17.6 mm (under consideration)
- PCB inside boxes PCB 91x91 mm
- Raspberry Pi 40 pin bus (long pin connector) will be used for the first M10 ecosystem.
- Frames 3D printable.
- Din-rail and wall mount adapters 3D printable
Electronics
- Input modules 24v opto isolated.
- Output modules 24v high side opto isolated.
- Output modules relays and triacs. 220V switching up to 16A, - Motor module for DC or BLDC motor control
- Analog IN/OUT modules -10v to +10v, 0 to +10v 4-20ma
- Sensor module for Air quality control.
- Smart PSU 24V or 220V, POE, CANBUS, USB and battery backup
- Connection between M10CUBEs Ethernet, WiFi, CANBUS, LoRaWAN.
- Add on modules must conform with HAT specification as the electric diagram is concerning.

Think any Idea that solve controller problems within M10 limitations. Tell us about it or builds it and share it to with the community.
Of course anybody can build his own CPU board conforming with M10 CPU standards using any Arduino module (nano, mini, etc)
 
APPLICATIONS  for M10 ecosystem
- PLC controller ever expandable with IEC 61131-3 programming
- Home Automation controller as a Master with, Node-RED, openHAB, Home Assistant, Python etc or as slave device for mains switching, sensor reading, with TASMOTA, ESPHome or any other custom hardware.
- Motor control
- Environmental sensor reading for Air Quality monitoring.
- LoRaWAN, GPS
- Industrial IoT applications
- Drone controller
- Greenhouse controller
- Burglar alarm controller
- NAS or a set top box for your TV

Of course there are limits like everything in life but you can build almost everything. Have the idea and make the board. The new PCB will be will be part of the M10 family and will be used from everybody.

The team is thinking the next design idea.

1 - The multi CPU M10 with ESP8266 + ESP32 + STM32 + LoRaWAN on board
2 - Sensor module for air pollution, meteorological, and agricultural measurements.
These two modules can work together for  IOT applications for uploading data to cloud or to a M10 server with Raspberry Pi 4 on board

Conversation is taking place in slack workspace m10cube.slack.com

If you have skills in electronics, mechanics, in 3D design, in automation engineering or in any way you think you like to involve in the M10 design and contribute please come and join us.

All about M10 ecosystem will be open source without any limits.

License

Verification code GR000004

Licensed under the CERN OHL P 2.0

Documentation License: CC BY 4.0 International
We like you to contribute with ideas and design work, so community will benefit from M10 ecosystem.