3D Printed Digital Night Vision (The OpenScope)
by MattGyver92 in Workshop > 3D Printing
215246 Views, 1157 Favorites, 0 Comments
3D Printed Digital Night Vision (The OpenScope)
I love light, physics, optics, and electronics. I started designing night vision optics a few years ago when I got into playing airsoft with some buddies. After a couple miserable night games, I was inspired to build something better than a flashlight. Since night vision is typically expensive to buy, I chose to build a digital system and it ended up working out great! Thus, my love for building optics (particularly night vision) was born.
You can also check out one of my older digital night vision optic instructables here:
https://www.instructables.com/id/DIY-Infrared-Night-Vision-Device/
Night vision is actually much easier (and cheaper) to make than you might think and can be done using nothing more than a few off the shelf parts. Since it's a digital system, you don't need a tube or a fancy power supply. Also, unlike real night vision (image intensified), it can even be used in the daytime. There are tons of instructables and other resources about building digital night vision, but it's often hard to make because of the hardware or lack of a cohesive enclosure. With 3D printing, I've been able to solve those issues and experiment with designing a digital monocular that I've named...The OpenScope.
The OpenScope is my attempt to design a simple DIY digital night vision monocular with a 3D printed enclosure. It features an adjustable camera on the front, a 10mm 200mw IR LED for illumination, a removable battery cover, and a lens collar that will fit a flexible eye cup (Ninjaflex works good). The video connection this optic uses could also be plugged into an input or an output to use the optic in other ways, like for viewing FPV drone footage, recording video, using with a wireless camera, and more. Hence the term, OpenScope.
This instructable will show you how to build your very own 3D printed OpenScope monocular.
Estimated total printing time is around 20-25 hours. I used PLA and NinjaFlex for all the printed bits.
This optic is intended for educational and recreational use only.
Please use responsibly and use common sense.
The Design
Here's a few features of the OpenScope digital monocular:
- True 1x magnification for easier use when walking (of course you can change this with a different lens)
- Adjustable camera alignment to assist in matching the picture with opposite unaided eye
- Space for a built in 9V battery which powers the optic for about 2 hours
- Compact form factor
- Flexible removable eye cup for comfort
- Built-in IR illumination
- Modular design to allow batteries, lenses, and parts to swap
- NTSC/PAL analog composite video for high frame rate and no lag.
- Video I/O capability for recording, transmitting, or receiving into the optic
- Possibly use acrylic colored filters for tinting the vision to different colors like red/green/amber/etc.
I used SketchUp for the 3D design. I've been using SketchUp for almost 10 years and know how to make the geometry I need with the tools I have as well as some awesome free plugins like RoundCorner and the STL plugin.
I started off by modeling the bare electronic components I wanted to use for the optic such as the display, camera, 9V battery, switches, LED, etc. After I found the optical axis of the screen, eyepiece lens, and the camera, I started building around them. I used groups to keep the model organized and tidy.
I decided to make the front of the optic a separate piece that uses a ball & socket type system to adjust the orientation of the camera. I'm sure there's other ways to do this, but this was the best solution I could think of at the moment. I did this because I wanted to be able to use the monocular for both right or left eye use and still allow the ability to align the image with natural vision in the other eye. I implemented screw in clamps that tighten over the ball to help secure it in place.
The battery box has enough to fit the 9V and had room to spare for wiring and connections.
The screen and accompanying board were designed to be glued to both sides of a block with grooves to help ensure that it is inserted the correct way.
The eye cup was an afterthought that I decided would give the distinguished look of a optic. I would also say it adds some additional comfort when using it.
Finally, I chose to add the project logo and text labels to the enclosure.
What You'll Need
Tools and Equipment:
3D Printer: I use a FlashForge Creator for my 3D printing needs. Any open spool printer that can successfully print NinjaFlex material should work fine for this project. The optic is divided into multiple parts to help with printing size restrictions, support material, and keeping print times shorter. You'll also need the slicing program of your choice to prep the files for printing on your machine.
You can also use a service to print parts if you can't afford a 3D printer.
Soldering iron & solder
Digital Voltimeter: You'll at least need it to check voltage, polarity, and resistance for troubleshooting.
Heatshrink tubing/heat gun or lighter
Needle nose pliers/tweezers/hemostats
Drill bit for chamfering and cleaning screw holes: (I chucked one in a thread tap handle)
Wire strippers/cutters
Screwdriver
JST Crimper Tool: If you're using JST connectors, you'll absolutely want this to make solid connections. You can crimp them by hand, but it's a headache and doesn't work as well. (Amazon product link)
Electronics:
**NTSC/PAL Camera: (Amazon product link)
This camera comes with a 3.6mm board camera lens and outputs a NTSC/PAL video signal (Note that the IR filter will need to be removed). I used analog video because I didn't want to pay more for a camera that could output serial data and have to process it with a microcontroller board. You want a lower lux rating, but it's not super critical so long as you can remove the IR filter inside it. This one is such a camera.
**Update as of 1/02/2018- The original product seems to no longer be available on Amazon. I haven't tested either of these yet, but they might be close enough to the same size/specs to fit:
2.0" TFT LCD display + NTSC/PAL driver board from Adafuit: (Adafruit product link)
This is pricey for a LCD display, but you won't find a better way to output NTSC/PAL composite video at this size unless you plan on hacking a CRT viewfinder from a VHS camcorder. Most of the cost is the driver board since there aren't too many smaller screens that can accept analog composite video.
You can find larger, cheaper screens for half the cost, but they won't fit in the enclosure (Amazon product link).
10mm 200mW IR LED (850nm): (Amazon product link)
180 Ohm resistor (brn/gry/brn/gold): (Amazon product link) This is needed to prevent overloading the IR LED from the 9V battery.
7805 Linear voltage regulator (12 to 5V) (Amazon product link): This is needed to prevent overloading the CMOS camera from the 9V battery.
SPST Toggle switch (Amazon product link)(Digikey product link): I made the access hole 1/2" to fit the one I used. I tried a close match on Amazon and Digikey.
Rectangular SPST panel mount rocker switch (Amazon product link)(Digikey product link): The access hole is 14x20mm. Again, I tried to find a close match on both sites.
Solder, wire, heatshrink tubing, etc.
2 pin/4 pin JST male/female connectors: I recommend these to help with quickly disconnecting parts of the circuit to help with installation and increasing modularity. (Amazon link (4 pin), Amazon link (2 pin))
I did my best to find everything on Amazon. If you have trouble sourcing any parts, I would recommend trying Digikey since they mostly sell electronic components, have a vast selection, will likely have the correct variation or package design that works.
I did my best to find parts that I know work well and are fairly inexpensive. If you're ok with spending a little over $100 for parts, you'll find that this is far more economical than buying a brand new optic. It's also good to be able to customize it to your needs.
Hardware:
Screws (Check your local hardware store):
6-32x5/8" (x8)
6-32x1" (x5)
6-32x1/2" (x2)
6-32x3/8 (x1)
Printing Filament:
PLA/ABS Filament: I recommend Hatchbox black PLA as it has a low transmission of IR light. This helps keep IR light from leaking from the front of the enclosure.
NinjaFlex Filament: This is very hard to print with. Make sure your machine is capable of printing this stuff and go nice and slow. This is used to create the flexible eye cover/cup for improving comfort when using the optic. If you can't use NinjaFlex, there are other eye cups you can buy (Like this one from Amazon) and modify to fit the eyepiece.
Optics:
Eyepiece lens: For 1x magnification, I use a 38 mm Diameter, 50 mm Focal Length double convex lens (Amazon product link). With the 3.6mm lens on the camera, this should get you pretty close to 1x field of view compared to your natural vision.
3D Printing Parts
Easily the most time consuming (and expensive depending on if you have a 3D printer or not) step of this build, we will be producing our enclosure from 3D printed parts.The STL files for the enclosure can be located here on Thingiverse:
http://www.thingiverse.com/thing:2121014
I chose to print my parts in PLA and NinjaFlex. The PLA is relatively low warp and prints easily with fewer failed prints. The parts come out strong and rigid. I used Slic3r to slice my parts for my machine and created pillar pattern supports with 1 interface layer. This way supports do their job and are easy to remove from complicated parts like the main body and the battery box on the optic.
For cleaning supports out of the screw holes, I used the closes drill bit size I could find and chucked it in a hand threading handle.
NinjaFlex is really only needed for the eyecup on the optic to create a comfortable place to rest the optic against your face. It also allows the eyecup to simply be stretched over a lip on the eyepiece rather than need screws or threads to attach it to the system.
NinjaFlex is very challenging to print with. I needed to print an upgraded extruder block to better extrude the filament without binding or jamming. Finally, NinjaFlex requires a direct drive extruder to print. Bowden drive printers require much more work to use NinjaFlex and success is not guaranteed either way. Rubber scope recoil protectors can also make a great alternate substitute for an eyecup.
PLA Settings:
Extruder temp: 220C
Bed temp: 55C
Layer height: .3mm
Feed rate: 30mm/s
NinjaFlex Settings:
Extruder temp: 240C
Bed temp:110C
Layer height: .3mm
Feed rate:15mm/s
If access to 3D printing is a barrier for you, I suggest looking into 3D printing services that allow for FDM (filament) printing. I know that 3DHubs (for example) can connect printer owners with customers locally to print parts and won't break the bank.
Otherwise, printers are always getting cheaper every year, so see what's out there!
How It Works/Circuit Diagram
Here's how the system works:
Since the human eye cannot see light in the infrared spectrum, using a small camera that can see IR and outputting the video to a small screen creates a night vision system that works like an invisible flashlight.
This low light vision technology is widely used from business security cameras to the rear view camera on your vehicle.
The OpenScope runs off a 9V battery and uses a 12-5V voltage regulator to help protect the camera since it's only rated for a max of 5V. The 10mm IR LED provides the IR light source and is powered from the unregulated side of the circuit along with the screen.
Both the camera and the screen use a composite analog video signal (NTSC) to send and receive the video. The composite signal uses a signal wire and a ground connection to work properly.
I chose to use JST plugs to create connection points on a few parts of my optic so I can assemble, repair, replace, and modify components more easily. I also did this with the video signal and video ground wires to allow me to use other inputs and outputs with the optic.
Wiring
The wiring is probably the most difficult part of the build. In the future, it would make more sense if I could find a way to use a PCB board to eliminate stuffing wires inside the housing, but for now it works. I encourage you to look back at the wiring diagram if you need further reference, since the wiring can get a bit dense towards the end.
I started by dividing and conquering. Since I used connectors, I was able to do the wiring in small parts (more like "modules") and connect everything together later. The camera and LCD board already have leads that can be disconnected, which further simplifies the wiring for now.
1.) Clip the ends of both pigtails for the camera and screen, being sure to leave plenty of wire attached to the white plugs that connect to camera and LCD board.
2.) For the battery connector, I connected one lead straight to my JST plug and the other through my toggle switch and to the opposite pin on my main power plug.
3.) I followed a similar procedure for the 10mm IR LED. After checking my polarity, I soldered a 100 ohm current limiting resistor to the LED and attached one lead directly to the JST plug, and the other through my 7mm rocker switch and then to the plug.
4.) I wanted to open up my video input and output, so I used a 4 pin plug and jumped pin 1 to 3 and pin 2 to 4. This allows for a composite video signal and wire to be used with a jumper or used with an alternate plug later to use another input or output.
Wiring (Continued)
At this point I had four 'modules' that I could start soldering together.
Before you continue, examine the 7805 linear voltage regulator.
The voltage regulator has 3 pins.
12V (Unregulated) on the left || Common ground in center || 5V (Regulated) on the right
1.) I soldered the positive leads to my screen and LED to the 12V pin on the left and both grounds to the center ground pin.
2.) For the camera, I soldered the 5V+ lead to the regulated pin on the right side of the regulator and the ground lead to the center ground pin.
3.) All that's left is the video and video signal ground connections. Since I used a 4 pin jumper, I soldered the input and output video signal wires to pin 1 and 3 (respectively) since they're being jumped through the jumper plug and connect together. The LCD board pigtail has a white signal ground wire that can connect to the output signal ground pin on the connector.
4.) The camera pigtail does not use a signal ground lead and instead uses the main ground with the video signal, only needed 3 wires. The white lead coming from the camera is actually an audio signal line that uses the main ground as well. Since I wasn't planning on using the audio connection, I clipped it and soldered the remaining signal ground on the jump plug to the main ground pin of the voltage regulator.
By this point, I had a mess or wires and plugs.
The LCD Display
The NTSC TFT LCD is the heart of the optic because this is what your eye is looking at when you're trying to see. I needed a separate part to hold the screen and connecting board in place in order to use it with the optic.
This printed part is designed to fit the screen, driver board, and connecting ribbon cable onto both sides of a block that slides into the main body.
I used E6000 adhesive to glue the display and board to the screen block. I'm sure there are other options for adhesives for gluing circuits to PLA plastic, but E6000 worked great for my needs and I had some on hand. I used some toothpicks to spread the glue evenly on the surface and placed some small rubber bands to hold the components flat until the glue set.
Also take note of the small push button switch on the LCD board. This cycles through 12 brightness/contrast levels which can make a big difference in visibility.
Connect and Test
After I finished my wiring and the glue set on my LCD screen, I was ready to test the wiring.
Before I plugged anything into my wiring, I first made sure to remove the lens cover on the camera and then used a voltmeter to check that all connections had the right voltage and correct polarity. Try to avoid shorting your power by touching the pins on your meter. I also checked my video signal and video ground connections with an ohmmeter to make sure they were connected. Once everything looked good, I plugged the components into their respective JST connectors.
When power is applied, the screen should light up and show the picture from the camera. Also, if you should see a faint red glow from the IR LED when power is applied with the IR switch. This is because the LED is 850nm wavelength, which is mostly IR but still emits some visible red light. 940nm IR LED's (like in your remote control) are almost completely in the IR spectrum and emit little to no visible light.
If you have issues, turn off power, unplug everything, and check your voltage, polarity, and connections again.
Modifying the CMOS Camera
We're not done yet. While you could technically start assembling the optic, you won't be able to see very well with it. This is because the CMOS camera uses an IR pass filter to block IR light and give a better daytime color image.
Since I didn't care about the daytime color picture because I was planning on using this to see in the dark, the IR filter had to go.
Removing the filter is actually pretty simple. You'll need a small screw driver (ideally magnetized). You'll also want a pair of tweezers or needle nose pliers.
I recommend doing this on a plate or a towel in a clean, dust-free environment.
1.) Use the screwdriver to remove the small set screw on the side of the lens on the camera housing. Put the screw somewhere safe for the moment so you don't lose it.
2.) Unscrew the lens to remove it. Look on the back of the lens and into the camera at the sensor. You should see a orange/blue reflective glass square. This is the IR filter. I've found some on the back of the lens and some covering the sensor inside the camera. I've also destroyed cameras because I didn't look on the back of the lens and mistakenly removed the sensor cover, so use caution!
I recommend examining the photo if you have trouble identifying it.
3.) Using a pair of tweezers or needle nose pliers, carefully remove the filter. If it chips, make sure to discard any glass shards and keep trying. If you're having trouble, you might want to try using a steel sewing pin or needle to pry under the filter and pop it off.
4.) Once the filter is removed, discard it and carefully remove any stray glass. Inspect the area where the filter was for dust, residue, hair, fuzz, or smudges. If necessary, you can try to clean the area with a Q tip.
5.) Replace the lens on the camera, plug it into the wiring along with the screen, and turn it on. While I threaded the lens back on the camera, I used the screen to get the camera picture refocused. If the picture is cloudy or seems obstructed, turn everything off, unplug the camera, remove the lens, and reinspect the lens and sensor.
6.) Hang on to that set screw but don't replace it yet. You'll want to do that after the camera is seated in the enclosure.
The Camera and IR Modules
At this point, I was ready to begin the assembly of the optic. I started with the camera and IR LED housing on the front of the enclosure.
The ball/socket design was a solution I discovered while trying to correct the problem of the camera view not matching up well with my other eye during use. This way, I can adjust the alignment and match my view for left or right eye use and it feels natural while looking around.
On the camera housing (looks like a ball), observe the small hole on the side of the outer ring of the part. Once the camera is seated, the set screw hole should be visible and accessible through this opening. Use care if you find you need to apply more force to seat the camera into the housing.
1.) Seat the camera and then used a magnetized screwdriver to replace the set screw through the opening.
2.) Place the camera and ball housing into the front cover as shown in the photos. You should see two screw holes near the opening for the camera ball housing.
3.) Find the two identical retaining clips and seat them over the screw holes with the large part facing up as shown in the photos. I found I had to seat them without the camera ball first to get them to fit better.
4.) Using two 6-32x1/2" screws, snug the retaining clips around the ball to secure it in place.
Installation and Assembly
With the camera mounted, it's time to put the rest of the optic together.
1.) Feed the IR LED and LED power connector through the rectangular opening on the side of the enclosure and out through the front. The switch should fit nicely into the rectangular opening.
2.) Insert the 10mm LED into the hole on the front cover next to the camera and retaining clips. I had trouble installing mine, so I used needle nose pliers to push the back of the LED for more force. If the fit is too tight, a drill bit could help widen the hole slightly. If the fit is too loose, some clear adhesive or tape around the LED could help hold it in place.
3.) With the LED installed, use the five 6-32x1" screws to attach the front cover to the main body of the optic.
4.) Plug the camera and IR LED connectors into the wiring.
5.) For the LCD screen, locate the slot in the enclosure that matches the side of the screen block. The screen block should slide into place. Plug the screen connector into the driver board.
7.) Locate the disk retainer (it has a flattened side) and use the single 6-32x3/8" screw to secure it to the bottom of the main body of the enclosure. Tighten until snug, but is still easy to rotate. This piece is designed to rotate and help hold the LCD screen from sliding around.
8.) For the battery box, insert the toggle switch through the round hole on the side of the battery cover. For convenience, I've added text labels next to the switch access for on and off positions. Secure the switch with the included nut and tighten until snug.
9.) Plug the power JST plug into the rest of the wiring of the optic and connect a 9V battery to the battery clip. Feel free to flip the switch and make sure everything is working before closing everything up.
10.) Carefully pack the loose wiring into the main enclosure body. It's important to keep the metal heatsink of the voltage regulator away from touching the LCD board since this can cause a short since it acts as a ground connection on the regulator. If necessary, you could put heatshrink over the tab.
11.) Use four 6-32x5/8" screws to attach the battery box cover to the main body of the enclosure with the switch facing towards the back. There should be a recess in the main body of the enclosure to give more room for the toggle switch.
Installing the Eyepiece Lens
We're almost done!
To help see the LCD screen more easily and magnify the picture to a 1:1 ratio (comparable to natural vision), we'll need to install the double convex lens. I recommend cleaning the lens with a lens cloth to remove any smudges.
1.) Without leaving fingerprints on the lens, drop it into the large round recess on the back of the optic as shown in the photo.
2.) Using the retaining ring, place it over the lens and use four remaining 6-32x5/8" screws to secure it over the lens.
3.) If you printed an eyecup using the NinjaFlex, it should stretch and fit over the lip on the lens retaining ring. Feel free to rotate as needed for left or right eye use.
Going Further
Congratulations! You have built a working digital night vision monocular.
If you want to take the project further, there's a few more things you can do.
First, you can can filter the color of the night vision for a more.....convincing viewing experience.
There is a gap in front of the LCD screen block in the main enclosure body. This design feature is intentional and allows for a 50x50mm .118" thick acrylic square filter to be inserted and used. I made one using a laser cutter and some green acrylic (since most real night vision optics are green) to make a filter.
Making a filter:
To install the filter, unscrew the battery cover, rotate the retaining disk, and insert the filter. Rotate the disk back and reattach the battery box cover and your all set for filtered vision!
(Note, the filter won't affect the video signal should you choose to output it since it's just filtering the light from the screen).
If you use a filter, you might notice that after using the optic for awhile, everything you see in that eye will appear a different color without the optic. This phenominon is normal and is called a brown after image. It's similar to staring at an inverted color image and looking at a white surface to see the 'ghost' of the image colored correctly.
The reason for this is the cone cells in your retina use more of the chemicals for the filtered color you're seeing. This briefly alters the color of your natural vision to that opposite of the color filter you use. A green filter makes a purple/pink after image. Red makes a dark teal after image. Amber makes a dark blue after image. ...and so on.
Camera lenses:
The camera takes a 1/3" mount camera lens. The lens I used for 1x magnification was a 3.6mm F2.0 lens, but you can find other sizes as well that will give you more magnification and a tighter field of view or less magnification and a wider field of view. The field of view affects the quality of sight due to the low resolution of the LCD display, so smaller objects might get fuzzier and harder to distinguish. Some varifocal zoom lenses may fit the camera with some modification to the housing to allow adjustable zoom and focus.
This lens has a much tighter FOV and higher magnification for seeing things farther away (Amazon product link).
Video IO:
I managed to make an alternate video plug that uses two RCA jacks for both the output video feed from the camera and the input for the display. With this IO capability, you can input video from another source like a Raspberry Pi, CCTV camera, wireless AV receiver, drone FPV feed, Super Nintendo, etc. Keep in mind the optic has a pretty low resolution, so reading any text might be tricky.
I simply reused the RCA jack that was connected to the LCD pigtail that I trimmed earlier, but I sourced some similar ones on Mouser (Mouser product link).
You can also output the camera feed to a recording device, wireless video transmitter, TV screen, or even another OpenScope! I even managed to run the input and output through an Arduino with a Video Experimenter Shield to overlay text and graphics onto the input video signal to create a crude HUD with the optic.
Final Thoughts
I was genuinely impressed by the quality of the night vision and the outcome of the enclosure design and assembly. The wiring is extremely tedious and I might consider using a PCB or at least perf or proto board to help reduce the mass of wiring.
The 200mw 10mm IR LED is a little overkill for indoor use and a little underpowered for outdoor use. Visibility is great so long as you have objects nearby to reflect the IR light back to the camera. It's easy to see IR light from security cameras, remote controls, smartphones, gaming consoles and VR systems, and more. I've found that the camera is pretty sensitive in low light and can see pretty well even without IR illumination.
I was also really pleased with how well the video IO works. I might try to see if I can hook it up to my wireless video Tx/Rx module and see through a wireless camera with the OpenScope.
I sincerely hope you enjoyed reading my instructable and that you maybe even consider building one for yourself. If nothing else, the project is great for teaching about electronics, soldering, composite video, IR light, 3D printing, and even a little biology with how humans see. As I keep sourcing better parts, developing parts, finding applications, and reading comments and feedback, I'll do my best to keep this instructable and the Thingiverse page updated.
Thanks for reading, and please consider voting for this instructable!
-Update: I had the opportunity to actually test my personal Openscope out at a national American Milsim airsoft event in Anniston, Alabama for Operation Blacksite. Unfortunately, I was fairly disappointed in the performance and I'll explain why. For one, there was zero ambient light at the site- no streetlights, vehicle lights, or moonlight since it was partially cloudy and the moon didn't show until later. I also forgot to bring a mount for my IR torch, so I was relying solely on the built in IR LED. I was playing with and against players who had bought, brought, or rented Gen 2&3 PVS-14's, PVS-15's, so I was a little outmatched to begin with. Finally, it was humid since we were in the south, so my eyepro fogged up frequently and further caused issues and ultimately made the optic useless once the condensation on my goggles was severe enough. Nonetheless, I was excited to see what my Openscope was capable of.
Here's what I experienced: the lower resolution made it harder than I expected to see and estimate my footing-especially on uneven terrain. The resolution mattered even more when distant targets were only a few pixels in size. Thick grass was hard to navigate since I couldn't easily see changes in the ground. Tall grass or nearby cover would cause the built in IR to reflect and wash out my view. Since my scene was black and white, I couldn't ID anybody or tell which side they were on, making anybody a threat. The wide field of view helped, but the inability to see far away objects or nearby objects outside of my IR hotspot was confusing and made navigation difficult. Indoors was much easier to navigate, but I felt like I was in a dark maze with a flashlight and frequently became disoriented and lost my squad buddies even when they were a room away.
So I have a few thoughts on possible ways to improve these issues... Increasing the resolution somehow and improving the visible range. There's two ways of improving the resolution: use a screen with more pixels, or tighten the field of view so that the available resolution is compressed to a smaller size with a higher resolution. A tighter field of view would also help my visibility range but I would sacrifice my peripheral vision. As for alternate screens, it's hard to source displays that will work with a CMOS input from my camera. A serial connection might open up opportunities for higher resolution displays, but the frames will have to be processed and could introduce lag or delay that might be nauseating or disorienting and an Arduino would not be powerful enough to process anything high resolution or with a comfortable framerate. A Raspberry Pi could work, but then you have to deal with boot time instead of a simple on or off. Plus, finding a higher resolution than 320x240 at 1.5" dia. is hard to beat without choosing a larger screen and remember-I'm still limited by my camera output resolution. For preventing my goggles fogging, there's several things I can try from dish soap, desiccant silica gel packets, or even a small fan to circulate air inside my goggles.