- A Mind for Numbers
- Accelerate
- Agile Project Management for Dummies
- Algorithms to Live By
- Atomic Habits
- AWS Certified Cloud Practitioner Study Guide
- Banking on It
- Brexitland
- Build Your Dream Network
- Bulletproof SSL and TLS
- Business Analysis
- Collapse
- CompTIA Security+ Practice Tests
- CompTIA Security+ Study Guide
- Corporate Rebels
- Countdown to Zero Day
- Creative Acts for Curious People
- Creative DIY Microcontroller Projects with TinyGo...
- Cryptanalysis
- Crypto Trader
- Cryptography
- Culture Code
- Daniel Goleman Omnibus
- Deep and deliberate delegation
- Dhl
- Drive
- Effective Python
- Every Tool's a Hammer
- Exam Ref AZ-900 Microsoft Azure Fundamentals
- Expert Scripting and Automation for SQL Server...
- Fifty Quick Ideas to Improve Your User Stories
- Fixing Your Scrum
- Fundamentals of ServiceNow Administration and...
- Future Leader
- Future of Violence - Robots and Germs, Hackers and...
- GCHQ Puzzle Book
- Getting Things Done
- Harvard Business Review manager's handbook
- Hooked
- How Google Works
- How to Take Smart Notes
- How to Win Friends and Influence People
- HTML and CSS
- I Think, Therefore I Am
- Itsm Value Streams : Transform Opportun
- JavaScript and jQuery
- Kill It with Fire
- Leaders Eat Last
- Leading change
- Leading Without Authority
- Lean Thinking
- LONDON'S UNDERGROUND.
- Managing Successful Projects Prince2
- Managing Successful Projects with PRINCE2
- Measure What Matters : OKRs
- Meteorology today
- Mindf*ck
- Modern Cryptanalysis
- Modernist cuisine at home
- Money Revolution
- Never Split the Difference
- New One Minute Manager
- Open Circuits
- Oversubscribed
- Permanent Record
- PHP 5 advanced
- Practical Docker with Python: Build, Release and...
- Practical electronics for inventors
- PRINCE2 for dummies
- Pro Python 3: Features and Tools for Professional...
- Pro SQL Server Always On Availability Groups
- Pro SQL Server on Linux: Including Container-Based...
- Professional Scrum Master Guide
- Project to Product
- Radical Simplicity
- Rules of People
- SAFe 5.0 Distilled
- Sapiens
- SEARCH INSIDE YOURSELF- TPB
- Secret Barrister
- Securing SQL Server: DBAs Defending the Database
- Site Reliability Engineering
- SQL Server 2017 Administration Inside Out
- Start with Why
- System Center Configuration Manager Current Branch...
- T-SQL Fundamentals
- Teach Yourself Electricity and Electronics,...
- Teach Yourself Setting Up a Small Business (Teach...
- Team Topologies
- The Art of Deception
- The art of invisibility
- The Chimp Paradox How Our Impulses And Emotions...
- The coaching habit
- The code book
- The Courage To Be Disliked
- The DevOps handbook
- The Epic Guide to Agile
- The Five Dysfunctions of a Team: A Leadership...
- The Go Programming Language
- The Golden Ratio
- The Introvert's Guide to the Workplace
- The Manager's Path
- The New Silk Roads: The Present and Future of the...
- The outward mindset
- The Phoenix Project
- The Professional Product Owner
- The Unicorn Project
- Turn The Ship Around!
- Visual Thinking
- Weapons of Math Destruction
- Who Moved My Cheese?
- Work Rules!
- Working Out Loud
- Writing An Interpreter In Go
- Wrong Fit, Right Fit
Raspberry Pi Stack – A platform for learning about IoT
During the summer of 2015, I decided to focus on learning about the ‘Internet of Things‘ (IoT) and the supporting technology. The Internet of Things will consist of lots and lots of low powered devices embedded in common household appliances and gadgets.
The area that interests me most is the communications between IoT devices and the Internet, including the APIs, encryption, protocols, and algorithms that will make IoT possible.
The programming language I am planning to use is called Go (GoLang). The beauty of Go is that it can be compiled for multiple platforms (Linux (ARM/x86), Mac, Windows, Android, and iOS) and results in a single statically compiled executable.
The Raspberry Pi Stack was created with the following components.
- Raspberry Pi 2 Model B Desktop (Quad Core CPU 900 MHz, 1 GB RAM, Linux)
- Samsung Memory 32GB Evo MicroSDHC UHS-I Grade 1 Class 10 Memory Card
- Anker 60W 6-Port Family-Sized Desktop USB Charger with PowerIQ
- NETGEAR GS108UK 8-Port Gigabit Ethernet Unmanaged Switch
- 50 pack Brass M3x10mm Female Screw PCB Hex Pillars Standoffs Spacers
- 50 pack 10mm Body Long M3x6mm Male Female Brass Pillar Standoff Spacer
- 50 pack PC Mounting Computer Screws M3 x 1/4in Long Standoff
- 10 pack multi coloured Cat5e cables – 0.5 meter
- 6 pack Anker® 1ft Micro USB Cables High Speed USB 2.0 A Male to Micro B Cables
- Plasticard Sheets A4 White 2.5mm
When purchasing the components, I assumed that the mounting holes on the Raspberry Pi 2 were wide enough to accept the 3mm wide screw on the standoff spacers. I was wrong, but I believe that I now have a better solution. The holes are M2.5, drilled to 2.9mm wide.
The M2.5 standoff spacers are really expensive in comparison and the multi-layer circuit board will be damaged if you try to force an M3 screw into the hole. There is actually some movement in the tower which is harmless against the plastic, but it could have eventually damaged the circuit boards if I had directly stacked the Raspberry Pis with the smaller spacers.
The single core Raspberry Pi B+ and Cisco RV320 firewall were surplus from previous projects. Although not entirely necessary, the Cisco firewall will help when I start experimenting with Docker and Kubernetes, which may require multiple networks. As the Raspberry Pi has only one network adapter, the firewall will support multiple virtual networks (VLANs) using the single network adapter. This will be better than using USB Ethernet adapters and an additional switch.
The specification of the Raspberry Pi Stack is as follows.
CPU
- ARMv7 Cortex-A7 Quad Core Processor
- 4 cores x 900MHz = 3,600MHz
- Peak Stack CPU Speed: 5 nodes x 3,600MHz = 18,000MHz
Memory
- Total: 5 nodes x 974MB = 4,870MB
- OS Usage: 5 nodes x 56MB = 280MB
- Total Usable RAM: 5 nodes x 918MB = 4,590MB
Storage
- Total MicroSD Storage: 5 nodes x 32GB = 160GB
In addition to this, the gateway node (Yellow) is a Raspberry Pi B+ with a single 700MHz ARMv6 processor core and a total memory of 482MB. This node will be used for SSH access, serving static web content, load balancer, and monitoring the stacks status. I also have two 120GB 2.5 inch USB 2.0 hard drives to add to the stack, which should be sufficient for running some MongoDB databases, etc.
I am managing the Linux operating systems using Ansible, which is an Open Source SSH based management tool. It doesn’t require a client on the nodes it manages and can execute ad hoc commands and predefined playbooks on multiple nodes.
The Raspberry Pi Stack is far from finished and will continue to grow at time goes on. The Raspberry Pi is an excellent device for adding sensors and input devices, Bluetooth adapters, Wi-Fi adapters, communicating on an I2C bus, etc. It should prove to be an interesting long-term project.