Considering the comment from last year's chair "I want you to gain international competitiveness as your next goal.", we decided to write this README.md in English.
- We are master's students of Large-Scale Systems Management Lab., Nara Institute Science and Technology, Japan.
Honesty stands are unmanned stores. As you can guess form the word “honesty”, the buyers are expected to be “honest”. But sometimes, the merchandises or the cash from the sales are stolen by dishonest thieves. The result shouldn't be a surprise to anyone. Billy Joel sings "Honesty is a such lonely word. Everyone is so untrue". Protecting the merchandises and the cash with existing vending machines is one solution, but the price of them is high. Therefore, buying an existing vending machine doesn't pay off in the end. Then, we propose a low-cost smart IoT box named “Chained Box” for small business.
Chained Box is a smart IoT box controlled by a blockchain. It can be used as a low-cost vending machine. Buyers can pay for the merchandise with electric payment (crypto-currency). Sellers can receive the payment safely.
- The price is extremely low compare to existing vending machines. So, it is easy to introduce Chained Box to your business.
- You can get more customers compare to existing vending machines.
- The electronic payment function can be implemented at low cost by the blockchain. The server/client model needs a secure central server. And the server needs high-costs.
- Blockchains are maintained by a peer-to-peer network. The system keeps running even if one node goes down.
- ODROID: Work as web server and blockchain node
- Raspberry Pi: Work as controller and blockchain node
- Django(Web App): Run web app
- Nginx(Proxy server): Work as proxy server
- Go Ethereum(Blockchain): Run blockchain
- Python(Controller): Control the IoT Box
For example, when customer operate "unlock" from the web app, it connects to the web app container through the proxy server, and then changes the blockchain information from web container. The changes are also shared the blockchain on the raspberry pi through the proxy server. The changes are monitored by the controller container, then it will open the IoT Box accordingly.
- Blockchain
- IoT with Single Board Computers
- Web Framework
- Virtualization with Containers
- Continuos Integration Tool
- We used Ethereum blockchain.
- We developed the web-based user interface. And users can see the status of the box from the equipped display.
- We used single board computers to make the system simple and small. The features gave the box portability.
- We gave the box cool looks. We changed its boring appearance by painting.
- The lock mechanism has practical durability, adopting hard materials (metal and plastic). Plus, the mechanism is small to maximize the capacity of the box.
- We made this README.md and the 90 sec pitch video in English to let the world know our product.
- Software
- Web Server (WS)
- Nginx: Web server and reverse proxy
- Web Application (WA)
- Django: Python-based web framework
- Blockchain (BC)
- Ethereum
- Go Ethereum: Official Golang implementation of the Ethereum protocol
- Ethereum
- Lock Controller (LC)
- Self-made program
- Python: Programing language
- Web3: Python library for interacting with Ethereum
- Self-made program
- Synthetic Voice Advertisement
- Open JTalk: Japanese text-to-speech software
- Environment Setup
- Docker: Platform of container virtualization
- Docker-compose: Orchestration tool for Docker
- Web Server (WS)
- Hardware
- Chained Box
- Controller (LC/BC)
- Raspberry Pi: Single board computer with Arm 32-bit, OS (Raspbian buster 10)
- Lock Actuator
- SG-90: Servo motor
- Body
- DAISO Stacking box 600JPY+Tax: Box
- Display
- Longruner 7inch LCD Display 1024 * 600: Display
- Battery (Raspberry Pi, Mini Display)
- ELECOM Mobile Battery 6000mAh, 5V, 3A: Mobile Battery
- Anker PowerCore 10000mAh, 5V, 2.4A: Mobile Battery
- Controller (LC/BC)
- Web Server (WS/WA/BC)
- ODROID-N2: Single board computer with Arm 64-bit, OS (Ubuntu 20.04)
- Router
- DOCOMO Hikari Router: Wi-Fi Router
- Chained Box
- We automate payment with smart contracts (Solidity).
- We used virtualization technologies (especially docker) in all the processes.
- Product-level paint with strong base painting and finish coating
- We processed small plastic parts precisely and accurately.
- Kentaro Fujita wrote lock.sol (on the Blockchain).
- Kentaro Fujita wrote geth (on the Raspberry Pi).
- Kentaro Fujita wrote geth (on the ODROID-N2).
- Takeaki Matsunaga wrote the L68-72, L76-80, L85-86, and L95-96 of watch.py (on the Paspberry Pi).
- Takeaki Matsunaga wrote the L10-12 of docker-compose.yml (on the Paspberry Pi).
- Takeaki Matsunaga wrote web (on the ODROID-N2).
- Seiya Tanaka wrote README.md (hardware).
- Seiya Tanaka wrote README.md (hardware).
- Please check the development timeline on the wiki.
- Blockchain
- Substitute a blockchain for a relational database