Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial tool set #1

Closed
michalmikolajczyk opened this issue Sep 28, 2017 · 7 comments
Closed

Initial tool set #1

michalmikolajczyk opened this issue Sep 28, 2017 · 7 comments

Comments

@michalmikolajczyk
Copy link
Member

We need to pick our initial set of tools, to start working on the first prototype, or Pilot – Alpha.

IoT Platform

This piece will most likely be the biggest one. With regard to the requirements for the end products, described in README.md and in the Wiki, let us discuss and choose the base IoT platform, or another set of open-source software, serving as modules for our future tool set.

To clarify: we can either choose a large platform, and use the visualization apps etc., which come bundled, or choose a library which only cares for visualization, and integrate that into our project.

Blockchain

Here we need to decide which Ethereum client we want to use; or decide if perhaps an all together different ledger, would be better suited.

Ethereum clients

http://ethdocs.org/en/latest/ethereum-clients/choosing-a-client.html

Ledgers

Notable projects

IoT devices

What kind of devices are we going to use to connect the machines? The initial thoughts would go to Raspberry Pi 3, because it is very popular and can support multiple use cases. Perhaps Arduino would be the better choice, due to its low complexity? Or maybe a totally different product? Cast your votes :) and please explain the reasons behind them.

@decaun
Copy link

decaun commented Sep 29, 2017

Hello, i suggest raspberry pi zero w.
It is also from raspberry pi family. However, much smaller in size and cheaper than its big brothers.
We can consider to get move to much more energy efficient platform but there are key features to discuss (language, speed, memory, etc...).
For beginning, one of the raspberry platforms would be highly versatile.

@michalmikolajczyk
Copy link
Member Author

@decaun the Raspberry Pi Zero W is a great suggestion. price is 80% lower then Raspberry Pi 3, which is, obviously, a great advantage.

I would suppose that the IoT devices don't really need to process too much data.
Two questions:

  1. what do you have in mind with "more energy efficient platform"?
  2. which raspberry platforms do you have in mind?

@kduma
Copy link

kduma commented Sep 29, 2017

The main advantages of raspberry pi are:

  • easy to buy
  • runs programs written in nearly any language (even javascript)
  • it has high calculations performance (encryption, ssl, etc)
  • raspberry pi can be a USB host

But it comes with some drawbacks like higher energy consumption (which is important when we want to run things on battery) and later manufacturing problems.

So, from start, we should keep in mind that everything should run on rtos platforms like Atnel Xmega (AVR) or Cypress PSoC (ARM), which allows us to better control power efficiency, functions of HW platform and etc. Therefore, the software for the end (IoT) devices should be written language like C or C++ for platform interoperability.

@decaun
Copy link

decaun commented Sep 29, 2017

  1. Ways to approach this
  • a. Design our own complete solution
  • b. Use existing complete solutions
  • c. Do both :)

First of all there are many ICs today depends what you really want and how you will develop mainly:
-FPGAs, CPLDs like programmable logics ~ longer dev times, better efficieny(next step ASICs)

                               ↑↑↑↑↑↑ Pretty hard to develop↑↑↑↑↑↑

-Central Processing Unit (CPU) based designs ~ Like Laptops, PCs
-Microprocessor based designs ~ Less processing power, some of external units are on chip, low energy
ex: Atmel AVR(Arduino), PICs etc...
-System on Chip (SOC) based designs ~ High processing power, most of elements in chip, fairly lower energy(high efficiency), tends to cover all system elements on a single chip
ex: Raspberry Pi

                                       ↓↓↓↓↓Pretty new↓↓↓↓↓

-System in Package (SIP) designs ~ fairly new and growing like bellow
-SOP, PIP, POP....

The good thing is with SOC it is possible to integrate more elements in single chip (like bus interfaces or ram etc.) therefore it is cheaper and more energy efficient than doing same thing with the same processor (if you can :)).

PSOCs are some chips that some part of programmable logic is used to program actual SOCs. Not to mix with raspberry, this time chip itself can be programmed(as hardware), also with another chip :) (like EEPROM). You can think about it as between SOC and FPGA, it has both pros from both side.

My proposition is to get a basic and cheap SoC(which is suitable for our application) based system and develop ecosystem around it.
Than lets get rid of extra elements and replace existing externals with sth like FPGA or a PSOC.

I also agree that it should be written in C or C++ but if you think if you can convert Cython code to C there are many possibilities which im not awared of yet :)

@michalmikolajczyk
Copy link
Member Author

Those are some pretty sound advice!

I think that we can agree for now that:

  1. we stick to SOC – Raspberry Pi Zero W
  2. we eventually plan to have the code written in C or similar level language

@michalmikolajczyk
Copy link
Member Author

My concern is that, I would rather work faster initially with a language easier to pick up then C, then possible rewrite the code that is planned to ship to the devices. There are a few very popular IoT frameworks for JavaScript, like https://github.com/rwaldron/johnny-five or https://github.com/hybridgroup/cylon/

I also saw that Johnny-Five has an Inventors Kit bundle, based on hardware from the Tessel 2 Project, which is actually very interesting, and has some strong Node.js bindings: https://tessel.io/ https://github.com/tessel/project

Anyway, the popularity and flexibility of Raspberry Pi, and the price of the Zero W model, really convince me that we should start hacking with that hardware.

I would also vote for going with the Parity Ethereum client, because it seems to be the fastest around right now (though less popular in total then go-ethereum).

Would you agree with the above? All opinions are good and welcome!

That basically leaves us with the question: which software IoT platform do we want to start with?

@michalmikolajczyk
Copy link
Member Author

With this issue, we decided to go with Raspberry Pi Zero W, because it is cheap and effective. Through our discussions on Slack, regarding this issue, we also decided to go with Parity, because its development happens at a faster rate, it has better performance, and a proper pruning algorithm, which saves tens of gigabytes of storage.

I am moving the Platform discussion to another issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

3 participants