Understanding Programmable Electronics
In easy terms we can call programmable electronics as a next generation of electronics in which we make consolidated IC’s (Integrated Circuits) which contain all essential electronic components. We program these ICs to make them perform different functions using components. In simple words we can say it’s all based on a digital switch which has multiple terminals that can be controlled programmatically.
Programmable electronics is based on a micro-controller or micro-processor that can be programmed to perform different functions. These controllers have different input and output pins which comprises of different input/output functions.
Following is the pin-out diagram of micro-controller used on Arduino UNO referred as ATMEGA328p.
Let’s understand all of this the easy way.
We start by wiring our circuit i.e. connecting inputs (sensors) and outputs (actuators) with our controller. Then we make a program which is uploaded into the microcontroller. The microcontroller uses this program logic to operate output based on different inputs.
Typically we choose micro-controllers based on need of different type of inputs and outputs along with required processing power and features like on-chip Wi-Fi/Bluetooth etc.
For Example: If we want to make a security alarm. We make a program that take input from a presence sensor and if there is an input turns the alarm on.
Similarly, if we are trying to make an IoT device that turns home lights on/off with a phone app. We just connect those lights with the output and connect a WiFi module to the input. Your phone app connects with the WiFi module and sends a specific number against which the program logic is set to turn the lights on or off.
What are different choice of controllers for different purposes?
Basic Controller: Arduino UNO
We usually refer Arduino as a basic controller, since it is easy to understand and has a lot of compatibility with components plus a big community support. Going forward Arduino UNO and its variant, Arduino Nano, can be used as a basic controller in applications that do not involve core usage of wireless modules or high-end processing power such as processing images or recording videos etc.
Arduino UNO R3
IoT related Controller: ESP8266 & ESP32
For Wi-Fi related applications or IoT solutions we recommend ESP8266 (its variant NodeMCU) and ESP32. The reason for recommending these controllers is that, they can do almost everything that Arduino UNO does and can even be programmed using the same Arduino environment. Apart from these basic features, you will get a bonus feature i.e. Wi-Fi on chip which makes it easier to make Wi-Fi oriented applications in the same cost and form factor, saving ourselves the hassle of separate Wi-Fi module interfacing.
ESP8266 v/s ESP32: ESP32 is the successor of ESP8266; the difference lies in a few core things. There are more analog input pins in ESP32, it has a faster processor making it process fast and more information. It also has a built-in Bluetooth along with Wi-Fi and operates at a very low power. ESP8266 suits the basic WiFi applications or DIY projects whereas, ESP32 is used in more mature applications which require more power sensitivity and dual wireless access.
Bluetooth Controller: nRF51822/nRF5832
This module is another Arduino environment compatible module with a much higher processing power than Arduino UNO. It has an additive feature of BLE (Bluetooth Low Energy) 4.0 and 5.0 respectively. These modules can be used in wearable devices along with IMU (Accelerometer, Gyro etc.). These modules are low powered and have efficient internal power management modules.
Computer Vision/ Cloud/ Artificial Intelligence & Machine Learning: Raspberry Pi 3 Model B
Raspberry Pi is high end processor-based development board which also possesses a GPU and other essential components that a computer needs. It can run a Linux OS independently enabling us to run application-oriented programs on it while interfacing with input/output pins. Its Linux core and computer-oriented build allow us to develop computer vision applications and algorithms that need Artificial Intelligence and Machine Learning. It also has wireless modules on it making it simpler to connect it with cloud or internet. You can turn it into an independent server as well.
Raspberry Pi 3 Model-B
What does these inputs look like?
Inputs include different types of components that can be a physical contact, push-buttons, sensors and wireless modules to connect with apps and servers etc.
What does these outputs look like?
Outputs include actuators which can actuate a natural process electronically, for example, a buzzer can be used to make an alarm, LEDs can be used to indicate, motors to make a human joint imitation or any applications that requires travelling or motion.