Arduino is a microcontroller, which means it is a special purpose computer that runs one program at a time, over and over again. Some examples of microcontrollers are microwave oven controller (brain behind the keypads), TV controller which talks to TV remote. Most of the microcontrollers are propitiatory devices. But Arduino is an open source platform which helps engineers to build and prototype their projects (also great community support for knowledge sharing). Arduino hardware is open-source, programming language to interact with hardware is open-source, software to develop the program is open-source. https://www.arduino.cc/en/Main/Products has the details of all types of boards available through Arduino platform. Arduino Uno (Rev3) is one of the famous boards which has 14 digital Input/Output pins and 6 Analog pins. One can connect Arduino Uno to a laptop and using the Arduino software, they can program it to read and write data to various electronics components. Since it is an open-source, many 3rd party vendors have enhanced the basic board hardware and software libraries but at the same time maintain the compatibility with base platform.
https://www.amebaiot.com/en/ameba-arduino-getting-started/ (has wifi, nfc and custom libraries which can push data to IoT platform)
Raspberry Pi is a general purpose single board computer with the ability to run multiple programs. One can use various Operating System software in this computer though mostly linux based open-source versions are available with greater community support. Since the hardware uses Broadcom SoC, it may not come under open-source but the Pi foundation maintains low cost and affordable for education purposes. https://www.raspberrypi.org/products/ has all the products related to Pi. Similar to Arduino, Raspberry Pi also enables engineers to build and prototype their projects (also great community support for knowledge sharing) but provides more flexibility and helps to evaluate complex solutions with ease. Orange Pi Pc Plus (http://www.orangepi.org/) is an open source hardware SoC which supports open source operating system like Android and Linux. Raspberry Pi has 17 Input/Output pins for integrating with electronics components. Pi lacks good support for interfacing with analog devices (lacks Analog to Digital conversion circuit). Pi has I2C and SPI interfaces though. There are couple of methods outlined in the reference links which may help. IoT applications can be developed using Pi with ease compared to Arduino.
Arduino Uno sells around USD 20 and the 3rd party boards based on Arduino sells much cheaper than that, some boards with wifi sells around USD 25. Similarly, Raspberry Pi Zero W sells for USD 10 (without wireless, it costs USD 5). Adding a 40 pin GPIO connector, 5V 1.2A micro usb power supply and USB-TTL cable (for using with computer) comes around USD 20 as total cost. So, cost may not be a deciding factor because they are very close.
Technical specifications and software usages are totally different between these two devices except the similarity of input / output pins for connecting to electronics components.
Arduino platform may be a good option for a low power IoT solution. There are 2 mostly used chips (ESP8266 and ESP32). ESP8266 is older than ESP32. ESP32 has Bluetooth capability along with WiFi as well as dual core. Both can work well with Arduino IDE, WiFi and cloud providers connectivity for data transfer. Depends on IoT project needs, one can pick a board with either ESP8266 or ESP32. One can connect ESP8266 to AWS IoT using Mongoose OS. On the other hand, Raspberry Pi also provides enormous support for IoT due to the single board computer nature. ESP8266 with Arduino board version 2.5, one can connect to AWS IoT using Arduino sketch (I have given the steps I have followed here in github link – https://github.com/erbabu/esp8266awsiot).
- Explorer level: Adafruit Circuit Playground Express (https://www.amazon.com/Circuit-Playground-Express-Developer-Base/dp/B0764MCBNR) or e-textile wearable kit (https://www.amazon.com/MJ-Starter-Learning-Arduino-Lilypad/dp/B07JMVP862)
- Beginner level: Arduino Uno based kits (https://www.amazon.com/dp/B06X3V84PV). This vendor has a very good githib tutorial for Arduino which makes use of Arduino IDE for interacting directly with Arduino and Processing IDE for developing Java based games interacting with Arduino devices like Joystick, Potentiometer, etc. https://github.com/Freenove/Freenove_Ultimate_Starter_Kit_for_Arduino
- Intermediate level: ESP8266 / ESP32 based kits for WiFi and IoT (https://www.amazon.com/UCTRONICS-ESP8266-Development-Temperature-Humidity/dp/B06XYJL6P2)
- Advanced level: Raspberry Pi based kits – small power computer with electronic interfaces (https://www.amazon.com/Vilros-Raspberry-Starter-Power-Premium/dp/B0748MBFTS). You can refer many github help repositories and tons of information in internet for making use of Raspberry Pi and projects related to it. Few are: https://vilros.com/learn/resources/ https://github.com/Freenove/Freenove_Ultimate_Starter_Kit_for_Raspberry_Pi https://projects.raspberrypi.org/en/ https://www.hackster.io/raspberry-pi?ref=topnav
- Communicate and control MicroControllerUnit/IoT device using smartphone app via Bluetooth (like HM-10 module / HC-05, HC-06, ) – example: https://create.arduino.cc/projecthub/mayooghgirish/arduino-bluetooth-basic-tutorial-d8b737 https://www.hackster.io/mansurkamsur/upload-sketch-arduino-over-bluetooth-using-android-f1ce55
Feel free to checkout my ESP8266 based project shared in Github. https://github.com/erbabu/ESP8266ServerWeatherOLEDRGB/
Following are the goals of this project.
- Program ESP8266 using Arduino IDE
- Understand programming Common Anode RGB LED using 3 GPIO pins
- Read weather data for my city using OpenWeather API (HTTP client) and display current datetime, current weather and 3 day forecast in OLED display (SSD1306)
- Run HTTP web server in ESP8266, control RGB LED using the web page running in ESP8266 via desktop browser / mobile phone browser
Checkout my experience in connecting ESP8266 with AWS IoT using Arduino IDE Sketch. https://github.com/erbabu/esp8266awsiot
I like the review and suggestions given in this article. https://raspberrytips.com/raspberry-vs-arduino/
My take: If your need is for electronics prototyping and simple two step tasks like read sensor value and report, then go with Arduino, rest please prefer Raspberry Pi because it serves as multi-purpose low cost computer with many uses.