Version 3 - DEVELOP

I like that Aweigh is open-ended. It supports a kind of continuous search and questioning.
— J. , stackoverflow enthusiast

Aweigh - Version 3 was created for users like J. who appreciate the challenge and the freedom to build their own digital devices. All of Aweigh’s necessary components are simple electronics, which can be found in standard forms or are included in other devices situated in environments as mundane as your living room or your kitchen. The technology was developed so that each part of a device can be found and constructed from several sources, objects, environments - unlike GPS navigation, which has a single point of failure. We hope that Version 3 users will develop and upload their own implementation method , showing how day-to-day users of ubiquitous technologies can directly influence the shape of digital infrastructure. These users are invited to contribute to Aweigh’s public repository.

List of all components

DC power booster

Capacitors - 2 x 100 uF, 3 x 1000 pF, 3 x 1 uF, 1 x 150 uF, 1 x 0.1 uF, 1 x 10 uF

Resistors - 4.53k, 100k, 820k, 330k, 2 x 5k

Logarithmic op amp

Analog to digital converter (ADC)

Unity gain op amp

2 x Blue sensitive photodiode



Real-time clock module or other time-keeping mechanism




Power supply

Processor - minimum 8-bit

Memory card



Display, motors, or LEDS

List of handy equipment

Soldering iron and solder

3D printer


Masking tape and duct tape

Scissors, exacto-knife

Multimeter or oscilloscope

Power Supply


microUSB cable


This specific process description is inspired by insideGadget’s hack of a Nintendo Gameboy into a wireless controller.

Step 1 - Collect all components and materials. Polarisation sensors can be found in most screens, processors in smart devices, memory cards in cameras, ADCs in sensing devices, accelerometers in phones, logamps in speakers. In this example, a custom Gameboy Color cartridge is made: flash chip to store the ROM, ATmega48PA microcontroller, and Gameboy buttons for controls.

Step 2 - Gather relevant tools. This will depend on the specific components you choose to use and the objects that you might decide to take apart.

Step 3 - Research prior art and find examples. A few people have made custom Gameboy cartridges, while others have implemented their own controllers that are compatible with the same joystick interface. Some of these references will have the correct Vendor ID & Device ID


Step 4 - Use GBDK Program to make the ROM. See multi-game loader code. This program listens for key inputs and outputs them to an address with the data we specify.

Step 5 - Choose a memory address to write to and program the inputs as you wish.

Step 6 - Make the polarisation sensor by etching the PCB according to Aweigh’s self-navigation board schematic found here.

Step 7 - Test polarization sensor with any other processor and work out the calibration needed using the mathematical relationships described here.

Step 8 - Solder the flash chip, sensor cicruit, and data lines. A good example of a project turning a Gameboy into a wireless joystick is described here.

Step 9 - Carefully remove the current Gameboy Color display and replace with another LCD of your choice, connected to an Atmega48 board.

Step 10 - Implement a communication protocol between the cartridge and the microcontroller. This can be done physically or wirelessly through a receiver - some people have done this with an nRF24L01 receiver.

Step 11 - Program a simple GUI for the display, taking into account each step described by the algorithm found here.

Step 12 - Run the entire system and troubleshoot any communication issues between the three parts: the cartridge reads polarization values, the Gameboy is used to control the device, and the ATmega48 is used to process and display information.

Step 13 - Encase all parts in the Gameboy Color and plug the custom cartridge in.

Step 14 - Level the device, take the readings, find position, enter destination.

Step 15 - Anchors aweigh!

Increasing Accuracy

Calculation of longitude can be increased by correcting the UT1 time with a factor corresponding to the difference between the true solar hour and the mean solar hour.

Trigonometric functions will increase in accuracy depending on the number of bits included in the memory addresses of the chosen processor. These values can have a huge impact on values need decimal precision such as longitude and latitude.

Polarization filter quality will impact the values of the readings themselves. Some processing might need to be implemented in order to obtain a correct Rayleigh scattering approximation.

Calibrating the RTC periodically and checking its drift will impact the calculation of longitude significantly.

Magnetic declination is currently estimated given the current city of the user - this could be improved by using a detailed data set loaded on the board.

Precise navigation is a difficult task and requires many intricate equations and relationships. The technique, tools, and method in which you decide to implement your device will make your accuracy vary on an extremely broad range. Atmospheric and environmental conditions related to pollution for instance, will greatly affect the sensitivity of the sensors and add considerable amount of noise. This can be addressed with the right kind of processing, which will differ for each device.

Aweigh’s technology is therefore still under development. The team hopes to increase the accuracy of the device with more long-term testing and resources. They nonetheless encourage users to search for their own methods of improving the device and to share their findings with the community. Technology is an ongoing endeavor and sometimes literacy and transparency is more valuable than efficiency.