The Aliens Legacy
http://forum.alienslegacy.com/

A new approach on the smart gunner headset
http://forum.alienslegacy.com/viewtopic.php?f=3&t=18574
Page 1 of 1

Author:  knoxvilles_joker [ Sat Dec 21, 2019 9:22 pm ]
Post subject:  A new approach on the smart gunner headset

I will still look at the more expensive model setup as it has more broadcast quality options, but probably for the helmet camera.

For the headset display:
https://www.aliexpress.com/item/7938743 ... 4c4d3Nrnju

1.5 -inch LCD screen video driver board 1.5 -inch LCD driver module 1.5 -inch LCD screen+AV Driver board

Module main parameters
Model number: ZT015GS01
Video formats: automatic switching double system NTSC/PAL
Screen size: 1.5 inch
LCD models: 990000601 - V0.1
Than 3 PuBing screen scale: 4
LCD screen size: 37.1 (W) x 32.7 (H) x 2.6 mm (D)
Display area: 29.79 (H) x 22.32 mm (V)
Resolution: 480 (W) x 240 (H)
Distance: 0.0625 (W) x 0.0938 mm (H)
The input voltage: DC 3 v to 15 v
Power consumption: 0.1 W or less
Yellow RCA interface: video input
Red: lead the positive input power supply
Black: lead to
Note:
Please connected ACC to 9-12V.
Package content:
1. 1.5-inch driver board
2. 1.5 inch 480*240 LTPS Lcd Panel TD015THEB2
3. AV cable

Author:  knoxvilles_joker [ Sat Dec 21, 2019 9:53 pm ]
Post subject:  Re: A new approach on the smart gunner headset

This is an Arduino based shield overlay:

http://www.tinyosshop.com/arduino-osd-shield

This is a MAX7456 OSD(On Screen Display) shield for Arduino. The user can easily interrupt and overlay text and/or graphics onto a video signal (PAL or NTSC). It's just about “plug-and-play” with an Arduino board. Plug this shield on Arduino main board, uploading test sketch. Plug in your video signal to “Video In”, plug your TV into “Video Out”. It will works.

Features:
Current consumption 100mA, worst case
5V SPI interface

Author:  knoxvilles_joker [ Sat Dec 21, 2019 11:49 pm ]
Post subject:  Re: A new approach on the smart gunner headset

Attachment:
smartgun.png
smartgun.png [ 370.44 KiB | Viewed 10210 times ]


Looks like the following things are displayed on the HUD:
weapon temp
ammo level
lat, long
cardinal direction in degrees

Author:  smrtazzsmrtgnnr [ Tue Dec 24, 2019 10:08 am ]
Post subject: 

Remember to focus, my apprentice. ;-)




Psst... you're gonna need a lens.

Author:  knoxvilles_joker [ Tue Dec 24, 2019 8:27 pm ]
Post subject:  Re: A new approach on the smart gunner headset

Cheaper can be quicker. Let me get the parts in first. I hope to have a half done smart gunner by the time far point con hits. I hope to have the smart gunner headset done by the time fanboy hits.

The main concern is getting the movable monocle situation sorted.

Author:  seven [ Fri Dec 27, 2019 11:11 pm ]
Post subject: 

was thinking about this thread and that tiny screen you were looking at. You know when you look through binnoculars backward and it makes things smaller? that type of lense in front of a screen could probably allow your eye to focus on it better and give it a fish eye look.

Author:  knoxvilles_joker [ Mon Dec 30, 2019 12:25 pm ]
Post subject:  Re: A new approach on the smart gunner headset

I was doing some product research. Apparently there are not a whole lot of smart glasses manufacturers out there and HUD options for helmets is just coming out as well. The military has some options for their fighter pilots but that has been out there for a while.

https://newatlas.com/army-heads-up-disp ... tar/49726/
https://www.quora.com/Why-cant-won’t-the-military-give-soldier’s-helmets-with-a-heads-up-display
https://newatlas.com/inteliscope-iphone ... ght/27644/
https://www.rideapart.com/articles/2526 ... nd-camera/
https://www.indiegogo.com/projects/hudl ... m=referral
http://home.bt.com/tech-gadgets/tech-ne ... 3877420093
https://www.slashgear.com/vuzix-to-intr ... -08207202/
https://www.bikebandit.com/blog/the-fut ... rt-helmets
https://www.vuzix.com/products/m-series
https://www.vuzix.com/products/blade-smart-glasses

Author:  knoxvilles_joker [ Sun Feb 02, 2020 12:43 pm ]
Post subject:  Re: A new approach on the smart gunner headset

Got the OSD shield working. It displays temp and cardinal direction data. I have an RTC and GPS module on the way. GPS is going to be not so good as area here has severely bad GNSS reception, and I could not find an eLORAN adapter that I could plug into an Arduino

I will need to see what options I can do on the cheap for the lens to aid in focusing with near eye positioning...

Code:
/* VideoTimeInserter.ino Demonstrates a very basic on screen time display.
   This example code is in the public domain.   Requires Arduino 1.0 or later.
   History : 1.0 ~ Creation of MAX7456Demo from MAX7456Demo 0.4 2013.01.31 - F. Robert Honeyman <www.coldcoredesign.com>
             1.1 ~ for OSD Shield We check the system of video in,and set the sytem of video out same with it.
            (If the video in system is the PAL,the 1.0 verison will not work well, so we add the checking and setting functions) 2015.02.02 - HuangChao <www.tinysine.com>
*/
/* This driver uses the Adafruit unified sensor library (Adafruit_Sensor),
   which provides a common 'type' for sensor data and some helper functions.
   To use this driver you will also need to download the Adafruit_Sensor
   library and include it in your libraries folder.
   You should also assign a unique ID to this sensor for use with
   the Adafruit Sensor API so that you can identify this particular
   sensor in any data logs, etc.  To assign a unique ID, simply
   provide an appropriate value in the constructor below (12345
   is used by default in this example).
   Connections: Connect SCL to analog 5, SDA to analog 4, Connect VDD to 3.3-5V DC, Connect GROUND to common ground
   History: 2015/MAR/03  - First release (KTOWN)*/
/* Set the delay between fresh samples */
// Included Libraries //////////////////////////////////////////////////////////
  #include <SPI.h>
  #include <MAX7456.h>
  #include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>
  const byte osdChipSelect =  10; const byte masterOutSlaveIn = MOSI; const byte masterInSlaveOut = MISO; const byte slaveClock = SCK; const byte osdReset = 0;
uint16_t BNO055_SAMPLERATE_DELAY_MS = 100; Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28);
 MAX7456 OSD( osdChipSelect );

 void setup()  { unsigned char system_video_in=NULL; SPI.begin(); SPI.setClockDivider( SPI_CLOCK_DIV2 ); OSD.begin(); OSD.setSwitchingTime( 5 ); system_video_in=OSD.videoSystem(); OSD.setDefaultSystem(MAX7456_NTSC) ;OSD.display(); 
   Serial.begin(115200); Serial.println("Orientation Sensor Test"); Serial.println(""); bno.begin(); delay(1000);
 
    } // setup()
   
 void loop()  {
 int8_t boardTemp = bno.getTemp();
 //Serial.print(F("temperature: "));
 Serial.println(boardTemp); delay(BNO055_SAMPLERATE_DELAY_MS);
 sensors_event_t event;
 bno.getEvent(&event);

 
    char date[] = "2020-01-01";
    int year = (date[0] - '0') * 1000 + (date[1] - '0') * 100 + (date[2] - '0') * 10 + (date[3] - '0'); byte leap = isLeapYear(year);
    byte month = (date[5] - '0') * 10 + (date[6] - '0'); byte day = (date[8] - '0') * 10 + (date[9] - '0');
    char daysPerMonth[2][12] = { { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31  }, { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31  } }; bool toggle = false;
    while (true) {
      while (OSD.notInVSync()) {

        if (date[9] > '9') { date[9] = '0'; date[8]++; }
        if (day > daysPerMonth[leap][month - 1]) { date[9] = '1'; date[8] = '0'; day = 1; date[6]++; month++; }
        if (date[6] > '9') { date[6] = '0'; date[5]++; }
        if (date[5] >= '1' && date[6] > '2') { date[6] = '1'; date[5] = '0'; month = 1; date[3]++; year++; leap = isLeapYear(year); }
        if (date[3] > '9') { date[3] = '0'; date[2]++; }
        if (date[2] > '9') { date[2] = '0'; date[1]++; }
        if (date[1] > '9') { date[1] = '0'; date[0]++; }
        if (date[0] > '9') { date[0] = '0'; }
        // Add aditional code here.
        bno.getTemp();
        bno.getEvent(&event);
      }
      OSD.setCursor( 0, 0 );
      OSD.print(event.orientation.x, 3);
      OSD.setCursor( 8,0);
      OSD.print("Degrees");
      OSD.setCursor( 17,0);
      OSD.print(boardTemp);
      OSD.setCursor( 19,0);
      OSD.print("*C ");
      OSD.setCursor( 0, -1 );
      OSD.print( date );
      OSD.setCursor( 12, -1);
      OSD.print( "YouHaveNone" );
      while (!OSD.notInVSync()) {} // Add aditional code here.
       } }
  byte isLeapYear( int year ) { if (year % 400 == 0) return 1; else if (year % 100 == 0) return 0; else if (year % 4 == 0) return 1; return 0; } //end isLeapYear()

Author:  knoxvilles_joker [ Mon Mar 02, 2020 12:15 am ]
Post subject:  Re: A new approach on the smart gunner headset

The overlay. Waiting on the gps module
Attachment:
FEAE57CD-A78E-4E15-9B33-68A79578CA9E.jpeg
FEAE57CD-A78E-4E15-9B33-68A79578CA9E.jpeg [ 716.04 KiB | Viewed 9746 times ]

Author:  knoxvilles_joker [ Sat Mar 07, 2020 12:28 am ]
Post subject:  Re: A new approach on the smart gunner headset

A note on the diopter. Anything above +3.5 you will need to order from an optometrist. Most offices keep +10 units in stock so bear that in mind. If you see a place that sells online most likely they only sell to eye doctors.

Author:  knoxvilles_joker [ Sun Mar 22, 2020 8:59 am ]
Post subject:  Re: A new approach on the smart gunner headset

OK, I ended up having to edit the maxim font and replace lowercase a-f to the borders. Once I did that and updated things I have a nice looking border and a facsimile targeting reticle box.

The osd.print command set only allows for standard keyboard characters to be used.

The spi writereg command methodology I was not having much luck hashing out how to get the cursor to move so I can print characters to a set spot on the screen.

I have an open inquiry on the rcgroups forum to see if anyone has any experience on coding and using custom font sets for their drone fpv setups. The maxim 7456 chip has other adaptations on the drone fpv setup that do not require Arduino to function.

The chip itself is over 10 years old, but is actively used in the drone fpv industry. The analog ability to insert OSD text without high horsepower gear is extremely attractive and the analog signals carry much better than digital/binary ones as they are much more immune to interference due to the way that the encoding/decoding modulation/demodulation works with the signals and the hardware. There is a lot of math involved in the explanation breaking things down.

M codingy progress is documented on the adafruit.com forums as that site would have more exposure with folks that might re-use or re-appropriate the code base.

https://forums.adafruit.com/viewtopic.php?f=22&t=161697

current code in use:
Code:
/* VideoTimeInserter.ino Demonstrates a very basic on screen time display.
   This example code is in the public domain.   Requires Arduino 1.0 or later.
   History : 1.0 ~ Creation of MAX7456Demo from MAX7456Demo 0.4 2013.01.31 - F. Robert Honeyman <www.coldcoredesign.com>
             1.1 ~ for OSD Shield We check the system of video in,and set the sytem of video out same with it.
            (If the video in system is the PAL,the 1.0 verison will not work well, so we add the checking and setting functions) 2015.02.02 - HuangChao <www.tinysine.com>
*/
/* This driver uses the Adafruit unified sensor library (Adafruit_Sensor),
   which provides a common 'type' for sensor data and some helper functions.
   To use this driver you will also need to download the Adafruit_Sensor
   library and include it in your libraries folder.
   You should also assign a unique ID to this sensor for use with
   the Adafruit Sensor API so that you can identify this particular
   sensor in any data logs, etc.  To assign a unique ID, simply
   provide an appropriate value in the constructor below (12345
   is used by default in this example).
   Connections: Connect SCL to analog 5, SDA to analog 4, Connect VDD to 3.3-5V DC, Connect GROUND to common ground
   History: 2015/MAR/03  - First release (KTOWN)*/
/* Set the delay between fresh samples */
// Included Libraries //////////////////////////////////////////////////////////
 // includes for max7456
  #include <SPI.h>
  #include <MAX7456.h>
  #include <Wire.h>
  // includes for bno055
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include "RTClib.h"
#define DMDI_reg  0x07
RTC_DS3231 rtc;char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
// maxim 7456 chipset settings
  const byte osdChipSelect =  10;   const byte masterOutSlaveIn = MOSI;   const byte masterInSlaveOut = MISO;  const byte slaveClock = SCK;  const byte osdReset = 0;
uint16_t BNO055_SAMPLERATE_DELAY_MS = 100; Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28);
 MAX7456 OSD( osdChipSelect );
// set spi and serial settings
 void setup()  { unsigned char system_video_in=NULL; SPI.begin(); SPI.setClockDivider( SPI_CLOCK_DIV2 ); OSD.begin(); OSD.setSwitchingTime( 5 ); system_video_in=OSD.videoSystem(); OSD.setDefaultSystem(MAX7456_NTSC) ;OSD.display(); 
   Serial.begin(115200); Serial.println("Orientation Sensor Test"); Serial.println(""); bno.begin(); delay(1000); 
   }     // setup() end
 void loop()  {
 int8_t boardTemp = bno.getTemp(); 
 Serial.println(boardTemp); delay(BNO055_SAMPLERATE_DELAY_MS);  sensors_event_t event; bno.getEvent(&event);
 // this just displays time and is used for calibration purposes
 // make sure to use two digit off sets for displaying OSD print of values lest things look off.
   DateTime now = rtc.now();
   Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC);
 // this sets the display to render the text.
    while (true) {
      while (OSD.notInVSync()) {
        // these get the 9 axis readings and temp
        bno.getTemp(); bno.getEvent(&event);
   // this gets the time readings
         DateTime now = rtc.now();
      }
      //this sets the display, note if using different character set you may have to call each character by ascii number. 
      OSD.setCursor( 0, 0 );
      OSD.print(event.orientation.x, 3);
      OSD.setCursor( 8,0);
      OSD.print("N");
      OSD.setCursor( 17,0);
      OSD.print(boardTemp);
      OSD.setCursor( 19,0);
      OSD.print("C");
      OSD.setCursor( 0, -1);
      OSD.print( now.month() );
      OSD.setCursor( 2, -1);
      OSD.print( "/" );
      OSD.setCursor( 3, -1);
      OSD.print( now.day() );
      OSD.setCursor( 5, -1);
      OSD.print( " " );
      OSD.setCursor( 6, -1);
      OSD.print( now.hour() );
      OSD.setCursor( 8, -1);
      OSD.print( now.minute() );
      OSD.setCursor( 11, -1);
      OSD.print( "LAT" );
      OSD.setCursor( 14, -1);
      OSD.print( "," );
      OSD.setCursor( 15, -1);
      OSD.print( "LON" );
      OSD.setCursor( 18, -1);
      OSD.print( "," );
      OSD.setCursor( 19, -1);
      OSD.print( "ELE" );
      OSD.setCursor( 0, 10);
      OSD.print( "M/D H:M" );
      OSD.setCursor( 9, 10);
      OSD.print( "LA, LO, EL" );
      OSD.setCursor( 0, 9);
      OSD.print( "effffffffffffffffffffffffc" );//bot line
      OSD.setCursor( 0, 1);
      OSD.print( "bffffffffffffffffffffffffd" );//top line
      OSD.setCursor( 0, 2); //left column line
      OSD.print( "a" );
      OSD.setCursor( 0, 3);
      OSD.print( "a" );
      OSD.setCursor( 0, 4);
      OSD.print( "a" );
      OSD.setCursor( 0, 5);
      OSD.print( "a" );
      OSD.setCursor( 0, 6);
      OSD.print( "a" );
      OSD.setCursor( 0, 7);
      OSD.print( "a" );
      OSD.setCursor( 0, 8);
      OSD.print( "a" );
      OSD.setCursor( 25, 8);// right column line
      OSD.print( "a" );
      OSD.setCursor( 25, 3);
      OSD.print( "a" );
      OSD.setCursor( 25, 4);
      OSD.print( "a" ); 
      OSD.setCursor( 25, 5);
      OSD.print( "a" );
      OSD.setCursor( 25, 6);
      OSD.print( "a" );
      OSD.setCursor( 25, 7);
      OSD.print( "a" );
      OSD.setCursor( 25, 2);
      OSD.print( "a" );
      //target box
      OSD.setCursor( 12, 5);
      OSD.print( "." );
      OSD.setCursor( 11, 4);
      OSD.print( "bfd" );
      OSD.setCursor( 11, 6);
      OSD.print( "efc" );
      OSD.setCursor( 11, 5);
      OSD.print( "a" );
      OSD.setCursor( 13, 5);
      OSD.print( "a" );           
      while (!OSD.notInVSync()) {} // Add aditional code here.
       } }

Author:  knoxvilles_joker [ Thu Jul 07, 2022 11:44 pm ]
Post subject: 

OK, finally got audio fixed with the microphone.

Had to add an XLR power injector and a XLR to 3.5mm voltage limiter. and viola it works.

https://www.youtube.com/watch?v=3JUEk2yo000

Author:  knoxvilles_joker [ Sat Aug 05, 2023 6:02 am ]
Post subject:  Re: A new approach on the smart gunner headset

OK had some success on things after I got my mannequinn to mock up the setup and fix the cable routing issues.

Attachments:
gunnerwip10.JPG
gunnerwip10.JPG [ 1.8 MiB | Viewed 4955 times ]
gunnerwip9.JPG
gunnerwip9.JPG [ 1.85 MiB | Viewed 4955 times ]
gunnerwip8.JPEG
gunnerwip8.JPEG [ 555.92 KiB | Viewed 4955 times ]
gunnerwip7.JPEG
gunnerwip7.JPEG [ 612.51 KiB | Viewed 4955 times ]
gunnerwip6.JPEG
gunnerwip6.JPEG [ 606.11 KiB | Viewed 4955 times ]
gunnerwip5.JPEG
gunnerwip5.JPEG [ 647.25 KiB | Viewed 4955 times ]
gunnerwip4.JPEG
gunnerwip4.JPEG [ 665.28 KiB | Viewed 4955 times ]
gunnerwip3.JPEG
gunnerwip3.JPEG [ 606.48 KiB | Viewed 4955 times ]
gunnerwip2.JPEG
gunnerwip2.JPEG [ 708.04 KiB | Viewed 4955 times ]
gunnerwip1.JPEG
gunnerwip1.JPEG [ 490.49 KiB | Viewed 4955 times ]

Author:  knoxvilles_joker [ Sat Aug 05, 2023 6:11 am ]
Post subject:  Re: A new approach on the smart gunner headset

The other pictures.

There are more but they are too large to post:
https://www.facebook.com/ussandrewjacks ... RuErEEvoyl

Attachments:
smartgunnereffect4.jpg
smartgunnereffect4.jpg [ 292.02 KiB | Viewed 4955 times ]
smartgunnereffect3.jpg
smartgunnereffect3.jpg [ 650.73 KiB | Viewed 4955 times ]
smartgunnereffect2.jpg
smartgunnereffect2.jpg [ 258.62 KiB | Viewed 4955 times ]
smartgunnereffect1.jpg
smartgunnereffect1.jpg [ 1.47 MiB | Viewed 4955 times ]
gunnerwip12.JPG
gunnerwip12.JPG [ 1.8 MiB | Viewed 4955 times ]
gunnerwip11.JPG
gunnerwip11.JPG [ 1.88 MiB | Viewed 4955 times ]

Author:  septic [ Mon Aug 07, 2023 1:09 am ]
Post subject: 

Nice work.
Could you not hide most of that wiring inside/under the front armour?

Author:  knoxvilles_joker [ Mon Aug 07, 2023 9:40 pm ]
Post subject:  Re:

septic wrote:
Nice work.
Could you not hide most of that wiring inside/under the front armour?


not really. The routing is very specific and constrained.

Author:  knoxvilles_joker [ Sat Dec 30, 2023 12:40 am ]
Post subject: 

I am ordering parts to replicate the setup for a bench/table display setup. And to ensure I have spares if things go south.

Page 1 of 1 All times are UTC [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/