Difference between revisions of "ArduinoInABox"

From Land Boards Wiki
Jump to navigation Jump to search
 
(118 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[file:ArduinoInABox.png]]
+
[[File:tindie-mediums.png|link=https://www.tindie.com/products/26877/]]
 +
 
 +
<video type="youtube">qjMhJRPKGPQ</video>
 +
 
 +
[[file:ArduinoInABox-P18170_720px.jpg]]
  
 
== Features ==
 
== Features ==
  
* 3.3 or 5V Arduino Pro Mini
+
* [https://www.arduino.cc/en/pmwiki.php?n=Main/ArduinoBoardProMini Arduino Pro Mini]
** Arduino pins brought to 2x13 header
+
* Detachable Human Interface design (HID)
** P2-P13, A0-A3
+
* Flexible Input power
** A4/A5 or SDA/SCL
+
** On-board DC/DC buck regulator allows 7-23V input
* Detachable HID
+
** Direct 7-9V input (USE VRAW jumper)
** OLED
+
** 3.3V or 5V Arduino support
** Rotary Encoder
+
** Measured 12 mA with 9V input and 3.3V Arduino Pro Mini
** Leave attached until installing in box
 
* 3 BNC or SMA connectors
 
** Brought to headers
 
* Wide input voltage range
 
** RF filters on OLED and into board
 
** Mini360 Switching Mode Power Supply
 
 
* I/O Boards
 
* I/O Boards
* Easily designed
+
** DB-25
** DB25 pass-through
+
* Mounts in a standard extruded Aluminum enclosure
* Mounts in a standard box
+
 
 +
=== Arduino Pro Mini ===
 +
 
 +
* Inexpensive and widely available
 +
* [https://www.arduino.cc/en/uploads/Main/Arduino-Pro-Mini-schematic.pdf Arduino Pro Mini Schematic]
 +
* I/O - 14 digital input/output pins (of which 6 can be used as PWM outputs)
 +
** Serial: 0 (RX) and 1 (TX).
 +
*** Used to receive (RX) and transmit (TX) TTL serial data.
 +
*** These pins are connected to the TX-0 and RX-1 pins of the six pin header.
 +
** External Interrupts: 2 and 3.
 +
*** These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value.
 +
*** See the attachInterrupt function for details.
 +
** PWM: 3, 5, 6, 9, 10, and 11.
 +
*** Provide 8-bit PWM output with the analogWrite function.
 +
** SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
 +
*** These pins support SPI communication, which, although provided by the underlying hardware.
 +
** LED: 13.
 +
*** There is a built-in LED connected to digital pin 13.
 +
*** When the pin is HIGH value, the LED is on, when the pin is LOW, it's off.
 +
** 6 analog inputs
 +
* On-board resonator (8 or 16 MHz)
 +
* Reset button
 +
* A six pin header can be connected to an FTDI cable provide USB power and communication to the board
 +
* 3.3 or 5V
 +
* 8 MHz (3.3V) or 16 MHz (5V)
 +
* Programmable in Arduino IDE
 +
 
 +
[[file:ArdruinoProMini-EBAY_PART-720px.png]]
 +
 
 +
=== Detachable Human Interface design (HID) ===
 +
 
 +
* OLED
 +
** 128x32 or 128x64
 +
** [https://github.com/olikraus/u8g2/wiki/u8x8reference u8x8 driver] - 6.2KB overhead
 +
* Rotary Encoder with switch
 +
** [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/I2C-VFO3/RotaryEncoder.ino Efficient bounce-less software]
 +
* Can leave attached to main board until installing in box
 +
 
 +
=== Input Power Options ===
 +
 
 +
* 2.1mm DC Power Connector Jack
 +
* [[Mini360_Buck_Converter|Mini360]] Switching Mode Power Supply
 +
** Wide input voltage range
 +
*** 5-23V (for 3.3V Arduino Pro Mini)
 +
*** 7-23V (for 5V Arduino Pro Mini)
 +
*** About $1
 +
* Jumper to use raw input and not populate the Mini360
 +
** Uses the inputs jack as RAW power into the Arduino Pro Mini
 +
** 3.35-12 V (3.3V model) or 5-12 V (5V model)
 +
 
 +
==== RF Filters ====
 +
 
 +
* RF filter into Switching regulator board
 +
* 2nd RF filter into HID card
 +
 
 +
== Connectors ==
 +
 
 +
[[file:ArduinoInABox_CAD_X1.png]]
 +
 
 +
=== J1 - OLED ===
 +
 
 +
* Pinout
 +
 
 +
# SDA
 +
# SCL
 +
# +VCC
 +
# GND
 +
 
 +
=== J2, J4 - On Base and HID card(s) ===
 +
 
 +
[[file:ARB_J2.PNG]]
 +
 
 +
* Can detach HID to mount in box
 +
* Pinout
 +
 
 +
# GND
 +
# ENCODER A
 +
# ENCODER B
 +
# ENCODER SWITCH
 +
# I2C_SCL
 +
# I2C_SDA
 +
# VCC
 +
# GND
 +
 
 +
=== J4, J7, J8 - BNC/SMA input headers ===
 +
 
 +
* Connect here to use the BNC or SMA jacks on the rear (option)
 +
 
 +
=== J5 - Arduino Pins ===
 +
 
 +
* 2x13 header
 +
 
 +
[[file:ARB_J5.PNG]]
 +
 
 +
=== J6 - Voltage Adjustment ===
 +
 
 +
* Adjust voltage for 3.3V or 5V to match Pro Mini voltage before installing jumper
  
== I/O  Card ==
+
=== J9 - Use Raw Power ===
  
* Connectors are placed on 0.1" grid
+
[[file:AIB_J9.PNG]]
** 26 pin, 3 BNC/SMA connectors
+
 
 +
# DC_FILT (top pin)
 +
# VRAW (bottom pin)
 +
 
 +
=== FTDI (on Arduino Pro Mini) ===
 +
 
 +
* Used to download program to Arduino Pro Mini
 +
 
 +
== Human Interface (HID) ==
 +
 
 +
* OLED
 +
* Rotary Switch with Pushbutton
 +
* Detachable board
 +
** Can be mounted to Front Panel of enclosure
 +
 
 +
[[file:HID_Connect.PNG]]
 +
 
 +
=== OLED ===
 +
 
 +
* 0.91" 128x32 or so rotary switch (installed in SW1 location) is to the right
 +
* 0.96" 128x64 (rotated) with rotary switch (installed in SW1 location) below
 +
* SSD1306 family of displays
 +
* Connections to Arduino Pins
 +
** A4/SDA
 +
** A5/SCL
 +
 
 +
=== Rotary Encoder ===
 +
 
 +
* Connections to Arduino Pins
 +
** A=P2
 +
** B=P3
 +
** Switch=P4
 +
 
 +
== I/O Boards ==
 +
 
 +
* Base board has 3 optional BNC (P1-P3) or edge launch SMA (P4-P6) connectors
 +
** Brought to headers (J4, J7, J8)
 +
* Easy to application specific custom I/O cards
 +
** All Arduino pins brought to J5 - 2x13 pin header
 +
** I/O pins are on 0.1" grid for easier prototyping
 +
** P2-P13, A0-A3
 +
** A4/A5 or SDA/SCL (connects to OLED)
 +
* Location of mounting holes
 +
 
 +
[[file:DB-25_Mechs_DBdMtg.png]]
  
 
=== DB-25 Example ===
 
=== DB-25 Example ===
  
 +
** [[DB25-02|DB25 pass-through]]
 
* Standard DB-25 female
 
* Standard DB-25 female
* Similar to (but narrower and female)
+
** Does not have 26 pin of the 2x13 header in the box
 +
*** OK, extra powers/grounds at the ends
 +
** Connect with 1:1 cables to 2x10/2x3 Dupont receptacles
  
[[FILE:DB25RIBBONADAPTER-P445-720px.jpg]]
+
[[FILE:MultiCompInBox_P1991_cropped.jpg]]
  
 
[[file:DB25-02_Schematic.PNG]]
 
[[file:DB25-02_Schematic.PNG]]
Line 41: Line 182:
 
[[file:DB25-02_3D.png]]
 
[[file:DB25-02_3D.png]]
  
[[file:DB-25_Mechs_DBdMtg.png]]
+
=== Mechanicals/Enclosure ===
 
 
== Mechanicals/Enclosure ==
 
  
 
* Board is designed to fit into Aluminum Project Box Enclosure DIY 100*76*35mm - [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=100*76*35mm+aluminum&_sacat=0&LH_TitleDesc=0&_odkw=100*76*35mm+Aluminum+PCB+Instrument+Box+Enclosure+Electronic+Project+Case+Set&_id=174408274566 ebay search]
 
* Board is designed to fit into Aluminum Project Box Enclosure DIY 100*76*35mm - [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=100*76*35mm+aluminum&_sacat=0&LH_TitleDesc=0&_odkw=100*76*35mm+Aluminum+PCB+Instrument+Box+Enclosure+Electronic+Project+Case+Set&_id=174408274566 ebay search]
 
* [[VFO-003]] - Similar in a box
 
 
[[file:VFO-003_P1871_720px.jpg]]
 
  
 
[[file:ArduinoInABox_Mechs.png]]
 
[[file:ArduinoInABox_Mechs.png]]
Line 56: Line 191:
  
 
[[file:VFO-003_RearPanel_Holes.PNG]]
 
[[file:VFO-003_RearPanel_Holes.PNG]]
 +
 +
== Schematic ==
 +
 +
* [http://land-boards.com/ArduinoInABox/ARDUINO_IN_A_BOX_REV1_Schematic.pdf ArduinoInABox Rev 2 Schematic]
 +
 +
== Test ==
 +
 +
* Test code - [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ArduinoInABox/OLED_Test OLED/Rotary Switch Test]
 +
* If there is no display on OLED, verify OLED appears at expected I2C address with [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ArduinoInABox/I2C_Scan I2C scan] at I2C address 0x3C
 +
** Expect results
 +
<pre>
 +
Scanning...
 +
I2C device found at address 0x3C  !
 +
done
 +
</pre>
 +
* May require a different constructor
 +
** I used
 +
<pre>
 +
U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(U8X8_PIN_NONE);
 +
</pre>
 +
** Your mileage may vary
 +
 +
== Software ==
 +
 +
=== GitHub Repository ===
 +
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ArduinoInABox GitHub Repository]
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ArduinoInABox/OLED_Test OLED/Rotary Switch Test] - Good starting point
 +
** Uses [https://www.best-microcontroller-projects.com/rotary-encoder.html Rotary Encoder Tutorial] - best code is at the ends under "Code For Improved Table Decode"
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ArduinoInABox/BounceLEDs BounceLEDs] - Bounce an LED across pins D5-D13 and A0-A3
 +
** A0 = D14
 +
** A1 = D15
 +
** A2 = D16
 +
** A3 = D17
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ArduinoInABox/AiBMenu Menu Demo Code] - Select between menu options
 +
 +
<video type="youtube">qjMhJRPKGPQ</video>
 +
 +
=== Total Memory usage with u8x8 Library and Rotary Encoder Code ===
 +
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/ArduinoInABox/OLED_Test OLED/Rotary Switch Test]
 +
* Arduino bootloader uses up 2048 bytes of Flash
 +
<pre>
 +
Sketch uses 7062 bytes (22%) of program storage space.
 +
Maximum is 30720 bytes.
 +
Global variables use 475 bytes (23%) of dynamic memory,
 +
leaving 1573 bytes for local variables. Maximum is 2048 bytes.
 +
 +
</pre>
 +
 +
==== Minimal u8x8 code ====
 +
 +
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/U8X8Test Minimal U8X8Test code]
 +
* [https://github.com/olikraus/u8g2/wiki/u8x8setupcpp u8x8 olikraus Library]
 +
* [https://github.com/olikraus/u8g2/wiki/u8x8reference u8x8 Reference Guide]
 +
<pre>
 +
Sketch uses 6198 bytes (20%) of program storage space. Maximum is 30720 bytes. Global variables use 446 bytes (21%) of dynamic memory, leaving 1602 bytes for local variables. Maximum is 2048 bytes.
 +
</pre>
 +
 +
=== Download/Programming ===
 +
 +
* FTDI cable
 +
** FTDI jumper is set to 3.3V
 +
** Power wire is not used
 +
** Other connections are 1:1
 +
 +
[[File:ArduinoInABox-P18162-720px.jpg]]
 +
 +
==== IDE setup ====
 +
 +
* Board: Arduino Pro or Pro Mini
 +
* Processor: ATMega328P (3.3V, 8 MHz)
 +
 +
[[file:ProgrammingArduinoInABox.png]]
 +
 +
== 3D ==
 +
 +
[[file:ArduinoInABox_FRONT_Rev2_3D.png]]
 +
 +
[[file:ArduinoInABox_REAR_Rev2_3D.png]]
 +
 +
== Assembly Instructions ==
 +
 +
* [[ArduinoInABox Assembly Instructions Rev 1]]

Latest revision as of 16:00, 3 August 2022

Tindie-mediums.png

ArduinoInABox-P18170 720px.jpg

Features

  • Arduino Pro Mini
  • Detachable Human Interface design (HID)
  • Flexible Input power
    • On-board DC/DC buck regulator allows 7-23V input
    • Direct 7-9V input (USE VRAW jumper)
    • 3.3V or 5V Arduino support
    • Measured 12 mA with 9V input and 3.3V Arduino Pro Mini
  • I/O Boards
    • DB-25
  • Mounts in a standard extruded Aluminum enclosure

Arduino Pro Mini

  • Inexpensive and widely available
  • Arduino Pro Mini Schematic
  • I/O - 14 digital input/output pins (of which 6 can be used as PWM outputs)
    • Serial: 0 (RX) and 1 (TX).
      • Used to receive (RX) and transmit (TX) TTL serial data.
      • These pins are connected to the TX-0 and RX-1 pins of the six pin header.
    • External Interrupts: 2 and 3.
      • These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value.
      • See the attachInterrupt function for details.
    • PWM: 3, 5, 6, 9, 10, and 11.
      • Provide 8-bit PWM output with the analogWrite function.
    • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
      • These pins support SPI communication, which, although provided by the underlying hardware.
    • LED: 13.
      • There is a built-in LED connected to digital pin 13.
      • When the pin is HIGH value, the LED is on, when the pin is LOW, it's off.
    • 6 analog inputs
  • On-board resonator (8 or 16 MHz)
  • Reset button
  • A six pin header can be connected to an FTDI cable provide USB power and communication to the board
  • 3.3 or 5V
  • 8 MHz (3.3V) or 16 MHz (5V)
  • Programmable in Arduino IDE

ArdruinoProMini-EBAY PART-720px.png

Detachable Human Interface design (HID)

Input Power Options

  • 2.1mm DC Power Connector Jack
  • Mini360 Switching Mode Power Supply
    • Wide input voltage range
      • 5-23V (for 3.3V Arduino Pro Mini)
      • 7-23V (for 5V Arduino Pro Mini)
      • About $1
  • Jumper to use raw input and not populate the Mini360
    • Uses the inputs jack as RAW power into the Arduino Pro Mini
    • 3.35-12 V (3.3V model) or 5-12 V (5V model)

RF Filters

  • RF filter into Switching regulator board
  • 2nd RF filter into HID card

Connectors

ArduinoInABox CAD X1.png

J1 - OLED

  • Pinout
  1. SDA
  2. SCL
  3. +VCC
  4. GND

J2, J4 - On Base and HID card(s)

ARB J2.PNG

  • Can detach HID to mount in box
  • Pinout
  1. GND
  2. ENCODER A
  3. ENCODER B
  4. ENCODER SWITCH
  5. I2C_SCL
  6. I2C_SDA
  7. VCC
  8. GND

J4, J7, J8 - BNC/SMA input headers

  • Connect here to use the BNC or SMA jacks on the rear (option)

J5 - Arduino Pins

  • 2x13 header

ARB J5.PNG

J6 - Voltage Adjustment

  • Adjust voltage for 3.3V or 5V to match Pro Mini voltage before installing jumper

J9 - Use Raw Power

AIB J9.PNG

  1. DC_FILT (top pin)
  2. VRAW (bottom pin)

FTDI (on Arduino Pro Mini)

  • Used to download program to Arduino Pro Mini

Human Interface (HID)

  • OLED
  • Rotary Switch with Pushbutton
  • Detachable board
    • Can be mounted to Front Panel of enclosure

HID Connect.PNG

OLED

  • 0.91" 128x32 or so rotary switch (installed in SW1 location) is to the right
  • 0.96" 128x64 (rotated) with rotary switch (installed in SW1 location) below
  • SSD1306 family of displays
  • Connections to Arduino Pins
    • A4/SDA
    • A5/SCL

Rotary Encoder

  • Connections to Arduino Pins
    • A=P2
    • B=P3
    • Switch=P4

I/O Boards

  • Base board has 3 optional BNC (P1-P3) or edge launch SMA (P4-P6) connectors
    • Brought to headers (J4, J7, J8)
  • Easy to application specific custom I/O cards
    • All Arduino pins brought to J5 - 2x13 pin header
    • I/O pins are on 0.1" grid for easier prototyping
    • P2-P13, A0-A3
    • A4/A5 or SDA/SCL (connects to OLED)
  • Location of mounting holes

DB-25 Mechs DBdMtg.png

DB-25 Example

  • Standard DB-25 female
    • Does not have 26 pin of the 2x13 header in the box
      • OK, extra powers/grounds at the ends
    • Connect with 1:1 cables to 2x10/2x3 Dupont receptacles

MultiCompInBox P1991 cropped.jpg

DB25-02 Schematic.PNG

DB25-02 Pinout.PNG

DB25-02 Mechs.PNG

DB25-02 3D.png

Mechanicals/Enclosure

  • Board is designed to fit into Aluminum Project Box Enclosure DIY 100*76*35mm - ebay search

ArduinoInABox Mechs.png

VFO-003 FrontPanel Holes.PNG

VFO-003 RearPanel Holes.PNG

Schematic

Test

  • Test code - OLED/Rotary Switch Test
  • If there is no display on OLED, verify OLED appears at expected I2C address with I2C scan at I2C address 0x3C
    • Expect results
Scanning...
I2C device found at address 0x3C  !
done
  • May require a different constructor
    • I used
U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(U8X8_PIN_NONE);
    • Your mileage may vary

Software

GitHub Repository

Total Memory usage with u8x8 Library and Rotary Encoder Code

Sketch uses 7062 bytes (22%) of program storage space. 
Maximum is 30720 bytes.
Global variables use 475 bytes (23%) of dynamic memory, 
leaving 1573 bytes for local variables. Maximum is 2048 bytes.

Minimal u8x8 code

Sketch uses 6198 bytes (20%) of program storage space. Maximum is 30720 bytes. Global variables use 446 bytes (21%) of dynamic memory, leaving 1602 bytes for local variables. Maximum is 2048 bytes.

Download/Programming

  • FTDI cable
    • FTDI jumper is set to 3.3V
    • Power wire is not used
    • Other connections are 1:1

ArduinoInABox-P18162-720px.jpg

IDE setup

  • Board: Arduino Pro or Pro Mini
  • Processor: ATMega328P (3.3V, 8 MHz)

ProgrammingArduinoInABox.png

3D

ArduinoInABox FRONT Rev2 3D.png

ArduinoInABox REAR Rev2 3D.png

Assembly Instructions