Difference between revisions of "ArduinoInABox"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
(118 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[file:ArduinoInABox. | + | [[File:tindie-mediums.png|link=https://www.tindie.com/products/26877/]] |
+ | |||
+ | <video type="youtube">qjMhJRPKGPQ</video> | ||
+ | |||
+ | [[file:ArduinoInABox-P18170_720px.jpg]] | ||
== Features == | == Features == | ||
− | * | + | * [https://www.arduino.cc/en/pmwiki.php?n=Main/ArduinoBoardProMini 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 |
− | |||
− | * 3 | ||
− | ** | ||
− | |||
− | |||
− | |||
* I/O Boards | * I/O Boards | ||
− | * | + | ** DB-25 |
− | ** | + | * Mounts in a standard extruded Aluminum enclosure |
− | * | + | |
+ | === 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 | ||
− | == | + | === J9 - Use Raw Power === |
− | * | + | [[file:AIB_J9.PNG]] |
− | ** | + | |
+ | # 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 | ||
− | * | + | ** 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: | + | [[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]] | ||
− | + | === 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] | ||
− | |||
− | |||
− | |||
− | |||
[[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
Contents
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
- Serial: 0 (RX) and 1 (TX).
- 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
Detachable Human Interface design (HID)
- OLED
- 128x32 or 128x64
- u8x8 driver - 6.2KB overhead
- Rotary Encoder with switch
- Can leave attached to main board until installing in box
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
- Wide input voltage range
- 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
J1 - OLED
- Pinout
- SDA
- SCL
- +VCC
- GND
J2, J4 - On Base and HID card(s)
- 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
J6 - Voltage Adjustment
- Adjust voltage for 3.3V or 5V to match Pro Mini voltage before installing jumper
J9 - Use Raw Power
- 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
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 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
- Does not have 26 pin of the 2x13 header in the box
Mechanicals/Enclosure
- Board is designed to fit into Aluminum Project Box Enclosure DIY 100*76*35mm - ebay search
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
- GitHub Repository
- OLED/Rotary Switch Test - Good starting point
- Uses Rotary Encoder Tutorial - best code is at the ends under "Code For Improved Table Decode"
- BounceLEDs - Bounce an LED across pins D5-D13 and A0-A3
- A0 = D14
- A1 = D15
- A2 = D16
- A3 = D17
- Menu Demo Code - Select between menu options
Total Memory usage with u8x8 Library and Rotary Encoder Code
- OLED/Rotary Switch Test
- Arduino bootloader uses up 2048 bytes of Flash
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
IDE setup
- Board: Arduino Pro or Pro Mini
- Processor: ATMega328P (3.3V, 8 MHz)