ProMake® Arduino Nano Kit
Description
"ProMake® Arduino® Nano" is a cost-effective & flexible expansion board for all kind of standard Arduino® Nano modules. It provides up to 3 ProMake® module slots to add any functionality for a wide range of applications.
ProMake® modules provide a wide range of Connectivity and Sensor capability to your favorite Arduino platform.
This development platform provides users with an extremely easy and common way to combine the Arduino Nano footprint compatible development boards with their favorite ProMake® modules in their upcoming projects.
Arduino product family is a great learning platform for electronics, programming and IoT. When it comes to a host controller it can be found in various "flavors", such as based on the high- performance 8-bit AVR® microcontroller (Arduino Nano and Arduino Nano Every) or a low power 32-bit ARM® Cortex® microcontroller (Arduino Nano 33 IoT and Arduino Nano 33 BLE), that brings better specifications to anyone's project at a low cost. Compared to the Arduino Uno’s familiar form factor, Nano boards are much smaller so they will perfectly fulfill their function in applications where small physical space is a limitation. Some of the boards come with onboard connectivity modules ranging from Wi-Fi to GSM, making them the right solution for your next IoT project.
Fast IoT prototyping made affordable and simple thanks to this design. Soldering and wiring often becomes a problem when a bridged connection happens and components break. Increasing the time and cost for projects. Often, without this solution prototyping or electronics DIY becomes a very long term project.
The "ProMake® Arduino® Nano Kit" has independent power supply to provide extra power for connectivity and sensors.
Software examples for ProMake® modules are available, giving you a repository of working code to use as it is, or as a starting point for your own projects.
Features
- Compatibility with all standard Arduino® Nano Modules
- Supports 3 easily mountable ProMake® modules, without any soldering
- SPI, Serial, I2C & Analog Interface to the first module
- SPI & I2C Interface to the second module
- I2C, Serial & Analog Interface to the third module
- Onboard RTC chip with the backup battery cage
- Two RGB LEDs
- Buzzer
- User Push-button
- SparkFun QWIIC & Seeed Studio Grove Expansion Connectors
- Special header for I2C OLED Display
- Operation and programming mode switch
Specification
- Board Dimensions : 90mm*70mm
- POWER Supply Options :
- On-board USB Type-C connector: 5V
- External power connector: VIN(7-23V)
- Arduino® module USB port
- Operating Temperature: -40℃ ~85℃
Important Notes
- The 3.3V on-board LDO has 600mA maximum current.
- Use "S1" Switch to prevent the kit interference during Arduino® Nano programming.
- Due to the Limitation of the "A6" pin in AVR-based Arduino® Nano modules, the buzzer would not work with these types of Arduino® modules.
Resource
Board Schematic
Software
Turning on RGB LEDs
To light on the RGB LEDs on this board first you need to install "FastLED" library (by Daniel Garcia) in your Arduino® IDE. Then using the code below you can see a police light effect on your board LEDs:
#include <FastLED.h>
#define LED_PIN 16
#define NUM_LEDS 2
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}
void loop() {
leds[0] = CRGB(255, 0, 0);
leds[1] = CRGB(0, 0, 0);
FastLED.show();
delay(500);
leds[0] = CRGB(0, 0, 0);
leds[1] = CRGB(0, 0, 255);
FastLED.show();
delay(500);
}
Working with on-board RTC
To use the RTC on this board first you need to install "RTClib" library (by Adafruit) in your Arduino® IDE. Then using the code below you can adjust and read time from RTC:
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
while (!Serial); // for Leonardo/Micro/Zero
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}else{
Serial.println("RTC is running!");
}
}
void loop () {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
delay(2000);
}
Using OLED display
At first you need to buy an I2C controlled display module, in this example we used "SSD1306" which is a Monochrome, 128x32, 0.91", OLED Display. Carefully insert the display module into the "J3" connector on the kit.
Now You need to install the "Adafruit SSD1306" library (by Adafruit) and its dependencies in your Arduino® IDE. Then using the following code you can see "Easy IoT" message displayed and moving on the screen.
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// Show initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.
display.display();
delay(2000); // Pause for 2 seconds
// Clear the buffer
display.clearDisplay();
display.setTextSize(2); // Draw 2X-scale text
display.setTextColor(SSD1306_WHITE);
display.setCursor(10, 0);
display.println(F("Easy IoT"));
display.display(); // Show initial text
delay(100);
// Scroll in various directions, pausing in-between:
display.startscrollright(0x00, 0x0F);
delay(2000);
display.stopscroll();
delay(1000);
display.startscrollleft(0x00, 0x0F);
delay(2000);
display.stopscroll();
delay(1000);
display.startscrolldiagright(0x00, 0x07);
delay(2000);
display.startscrolldiagleft(0x00, 0x07);
delay(2000);
display.stopscroll();
delay(1000);
}
void loop() {
}
Sounding the Buzzer
This part may not work with convetional AVR-based Arduino Nano modules, you may need to use modern Arduino modules or EasyIoT STM32 Nano Module.
#define NANO_KIT_BUZZER_PIN 20
void setup() {
// put your setup code here, to run once:
pinMode(NANO_KIT_BUZZER_PIN,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(NANO_KIT_BUZZER_PIN,LOW);
delay(1);
digitalWrite(NANO_KIT_BUZZER_PIN,HIGH);
delay(1);
}