52 | **Check out the getting started with Noa playlist [here](https://www.youtube.com/watch?v=olNhbZTx6Lw&list=PLfbaC5GRVJJgSPdN-KWndTld35tihu1Ic)**
53 |
54 |
55 | ## Developer?
56 |
57 | Get started making your own apps today. Follow the links below to familiarize yourself with the Frame hardware and Lua API.
--------------------------------------------------------------------------------
/frame/frame.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/frame.stl
--------------------------------------------------------------------------------
/frame/hardware.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Hardware
3 | description: A brief overview of how Frame works under the hood.
4 | image: /images/frame/frame-splash.png
5 | nav_order: 1
6 | parent: Frame
7 | ---
8 |
9 | # Frame Hardware Manual
10 | {: .no_toc }
11 |
12 | ---
13 |
14 | 
15 |
16 | Here you'll find all the details about how Frame works under the hood. For software related information, be sure to also check out the [Frame SDK](/frame/frame-sdk) including [Lua API](/frame/frame-sdk-lua/) pages.
17 |
18 | ## Key features
19 | {: .no_toc }
20 | - 640x400 color OLED display
21 | - 20° FOV optic
22 | - Optional personalized prescriptions
23 | - Thin and light 6mm lenses (not including optional prescription)
24 | - 720p low power color camera
25 | - Microphone
26 | - FPGA acceleration for graphics and imaging
27 | - Bluetooth 5.3
28 | - 210mAh built-in rechargeable li-ion battery
29 | - 3 axis accelerometer with tap detection
30 | - 3 axis e-compass
31 | - Full featured Lua based OS
32 | - Charging dock with USB Type-C & 140mAh battery
33 |
34 | ## Example uses:
35 | {: .no_toc }
36 | - Generative AI on the go
37 | - ML based image augmentation
38 | - Computer vision research
39 | - QR code & barcode detection
40 | - Heads up telemetry
41 | - AR app & game design
42 |
43 | ## Contents
44 | {: .no_toc }
45 |
46 | 1. TOC
47 | {:toc}
48 |
49 | ## Hardware block diagram
50 |
51 | This diagram shows a general overview of the Frame internal hardware architecture.
52 |
53 | 
54 |
55 | ---
56 |
57 | ## Bluetooth MCU
58 |
59 | the Bluetooth MCU serves as the main processor for Frame. It handles all network communication and running of user logic. The MCU used is the [nRF52840](https://www.nordicsemi.com/products/nrf52840) from Nordic. It contains a 32bit ARM Cortex-M4F CPU running at 64MHz, 1 MB of flash storage, 256 KB of RAM, and features Bluetooth 5.3 connectivity.
60 |
61 | As standard, Frame comes with a feature rich Lua based OS that allows for scripting and remote access fully over Bluetooth. No programming cables, or proprietary software is needed to use the device.
62 |
63 | The firmware is fully updatable over the air. If you're using a Frame compatible app, these updates should be automatic, however if you're developing your own apps, take a look at the [Frame SDK Bluetooth Specs page](/frame/frame-sdk-bluetooth-specs/#firmware-updates) to see how you can implement firmware update capability into your own apps.
64 |
65 | ### Customizing the firmware
66 |
67 | Frame is intended to be used with the officially provided firmware from Brilliant, however it is possible to customize the firmware if desired. Note that this will require destructive disassembly of your Frame hardware to access the physical debug port.
68 |
69 | If you wish to view the source code, or use it as a starting point for your custom firmware, visit the [Frame codebase repository](https://github.com/brilliantlabsAR/frame-codebase).
70 |
71 | The physical debug port of the Bluetooth MCU is located on the back of the Frame PCB. A total of five wires can be connected to a suitable ARM SWD debugger such as a [J-Link probe](https://www.segger.com/products/debug-probes/j-link/) or [Black-Magic probe](https://black-magic.org) to allow for debugging.
72 |
73 | 
74 |
75 | ---
76 |
77 | ## FPGA
78 |
79 | The FPGA is used for graphics acceleration of the display, as well as interfacing to the 720p camera sensor. It communicates to the Bluetooth MCU via SPI and is dynamically shutdown off to save power.
80 |
81 | The FPGA used is the [Crosslink-NX LIFCL-17](https://www.latticesemi.com/Products/FPGAandCPLD/CrossLink-NX) from Lattice. It features 17k logic cells, 432kb of embedded block RAM, and 2.56Mb of large RAM.
82 |
83 | If you wish to view the source code, or use it as a starting point for a custom RTL design, visit the [FPGA section](https://github.com/brilliantlabsAR/frame-codebase/tree/main/source/fpga) of the Frame codebase repository.
84 |
85 | The FPGA does not expose a physical programming interface. Therefore the FPGA application is uploaded solely via SPI at boot-up.
86 |
87 | ---
88 |
89 | ## Display
90 |
91 | The display used in Frame is a 0.23" micro OLED. It features 640x400 RGB pixels and is optically bonded to the prism assembly which directs the image into the user's eye. The result is a transparent floating display with a 20° field of view, and appears about the size of a tablet display at arms length.
92 |
93 | The display is connected to the FPGA in 8bit YCbCr mode. 4 wires for the Y channel, and 2 wires each for the Cb and Cr channels. This allows for a total of 255 possible colors shown on the display. In turn, to save memory and ensure fast frame rates, the FPGA RTL is optimized to display a maximum of 16 colors per frame. These colors can be changed on the fly, allowing for large sprite sets and fonts to be efficiently stored within Frame's embedded memory. To better understand how the graphics subsystem of Frame works, check out the [graphics section](https://github.com/brilliantlabsAR/frame-codebase/blob/main/docs/fpga-architecture.md#graphics) of the Frame codebase repository.
94 |
95 | 
96 |
97 | ---
98 |
99 | ## Camera
100 |
101 | The front facing camera sensor on Frame is the incredibly small and power efficient [OV09734](https://www.ovt.com/products/ov09734-h16a-2a/) from Omnivision.
102 |
103 | The FPGA RTL optimizes images for AI applications such as image recognition and allows the user a large amount of control over resolution, gain and exposure for maximum flexibility.
104 |
105 | Images are captured as 1280x720 RGB, but then cropped to 720x720 and converted to YCbCr for memory efficiency and fast downloading over Bluetooth. To better understand how the camera subsystem of Frame works, check out the [camera section](https://github.com/brilliantlabsAR/frame-codebase/blob/main/docs/fpga-architecture.md#camera) of the Frame codebase repository.
106 |
107 | 
108 |
109 | ---
110 |
111 | ## Microphone
112 |
113 | Frame features a single [ICS-41351](https://product.tdk.com/system/files/dam/doc/product/sw_piezo/mic/mems-mic/data_sheet/ds-000157-ics-41351-v1.4.pdf) MEMS microphone from TDK. It has a wide dynamic range from -35.5dB to 129.5dB, allowing it to hear everything from soft speech, to loud booming noises.
114 |
115 | The microphone is connected directly to the Bluetooth MCU which allows for low power operation and applications such as periodic recording and wake detection. The standard firmware allows for a wide range of recording formats from 4bits to 16bits sample depth, and 4kHz to 20kHz sample rate.
116 |
117 | 
118 |
119 | ---
120 |
121 | ## Motion Sensor (IMU)
122 |
123 | The IMU on Frame is the 6 axis [MC6470](https://eu.mouser.com/datasheet/2/821/MC6470_Datasheet_APS_048_0033v1_7_1-3003085.pdf) sensor from MEMSIC. It features both an accelerometer and e-compass in a tiny package consuming very little power. Further processing on the Bluetooth MCU calculates the raw X, Y and Z values of both sensing elements into angular values for detecting head position.
124 |
125 | An accelerator interrupt line from the IMU is also directly connected to the Bluetooth MCU. This allows for always on detections of taps that can be used to navigate and select UI elements within the user's apps.
126 |
127 | 
128 |
129 | ---
130 |
131 | ## Power
132 |
133 | Power is internally distributed within Frame via the [MAX77654](https://www.analog.com/media/en/technical-documentation/data-sheets/max77654.pdf) power management IC from Analog Devices. Each rail is carefully managed and monitored to both protect the components within Frame, as well as ensure lasting performance of the battery.
134 |
135 | {: .warning }
136 | > The PMIC is configured from C code baked into the Bluetooth MCU firmware. If you're creating a custom firmware, it's recommended to avoid changing any of the PMIC settings without carefully studying the schematics and PMIC datasheet. These settings can easily over-volt components damaging them, as well as damage the battery.
137 |
138 | ### Battery charging
139 |
140 | The PMIC includes an integrated battery charger for the two built in 105mAh li-ion cells. Regulation is based on time, temperature and the current operating state of Frame. An analog pin provides the ability to monitor battery voltage and current within the firmware, and can be used to estimate battery life.
141 |
142 | ---
143 |
144 | ## Charging cradle (Mister Power)
145 |
146 | The charging cradle functions to both charge Frame via the 5V terminal on the back of the glasses, as well as allowing for factory resetting and un-pairing of Frame from any connected device.
147 |
148 | It also contains a 140mAh rechargeable li-ion cell which allows for a top-up of Frame's internal battery while on the go. The charging cradle itself, and in turn Frame, can be charged using any USB Type-C power supply.
149 |
150 | 
151 |
152 | ---
153 |
154 | ## Schematics
155 |
156 | ### Frame
157 |
158 |
193 |
194 | ### Charging cradle
195 |
196 | [Download the 3D Model in STL format](/frame/charging-cradle.stl)
197 |
198 |
203 |
204 | ### Prescription (Rx) clip
205 |
206 | [Download the 3D Model in STL format](/frame/frame-rx-clip.stl)
207 |
208 |
209 | ---
210 |
211 | ## Device characteristics
212 |
213 | Typical and absolute device characteristics are shown below. To get the best lifetime of Frame, it's recommended to keep within these limits.
214 |
215 | ### Typical characteristics
216 |
217 | | | Min | Typ | Max |
218 | |:------------------------|:------:|:-----:|:------:|
219 | | Frame operating current | 45mA | 80mA | 100mA |
220 | | Frame sleep current | - | 580uA | - |
221 | | Frame shutdown current | - | 132uA | - |
222 | | Frame charging current | 1.5mA | - | 225mA |
223 | | Charging cradle current | - | - | 400mA |
224 | | Bluetooth radio power | -20dBm | - | 8dBm |
225 | | Bluetooth sensitivity | - | - | -95dBm |
226 |
227 | ### Maximum ratings
228 |
229 | | | Min | Typ | Max |
230 | |:----------------------------|:-----:|:----:|:----:|
231 | | Frame charging voltage | -0.3V | 5.1V | 6.4V |
232 | | Charging cradle USB voltage | -0.3V | 5.1V | 7V |
233 | | Operating temperature | 0°C | - | 45°C |
234 | | Storage temperature | -20°C | - | 60°C |
235 |
236 | ---
237 |
238 | ## Safety & limitation of liability
239 |
240 | ### Safety
241 |
242 | Brilliant Labs' devices can obscure your vision and should not be used while driving or operating dangerous equipment. Additionally long periods of use may cause eye strain, headaches and motion sickness. Brilliant Labs' devices can also display bright flashing images so may not be suitable for those who are susceptible to light sensitivity.
243 |
244 | ### Critical applications
245 |
246 | Brilliant Labs' devices are intended for consumer and R&D applications. It is not verified for use where performance and accuracy would be critical to human health, safety or mission critical use.
247 |
248 | ### Lithium batteries
249 |
250 | Lithium batteries can be dangerous if mishandled. Do not expose Brilliant Labs' devices to excess temperatures, fire or liquids. Do not try to remove the battery as the terminals can become shorted and result in the battery overheating or catching fire. Once the product reaches the end of it's life, dispose it safely according to your local regulations, such as e-waste collection points where any volatile components can be properly contained and handled.
251 |
252 | ### FCC notice
253 |
254 | This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: (1) This device may not cause harmful interference, and (2) this device must accept any interference received, including interference that may cause undesired operation.
255 |
256 | Any Changes or modifications not expressly approved by the party responsible for compliance could void the user's authority to operate the equipment. Note: This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures:
257 |
258 | - Reorient or relocate the receiving antenna.
259 | - Increase the separation between the equipment and receiver.
260 | - Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.
261 | - Consult the dealer or an experienced radio/TV technician for help.
262 |
263 | The device has been evaluated to meet general RF exposure requirement. The device can be used in portable exposure condition without restriction.
264 |
265 | ### Limitation of liability
266 |
267 | Brilliant Labs provides technical data, including design resources, examples, applications, design advice, tools, safety information and other resources "as is" and disclaims all warranties, express and implied, including without limitation any implied warranties or merchantability, fitness for a particular purpose or non-infringement of third party intellectual property rights.
268 |
269 | These resources are intended for skilled developers. You are solely responsible for selecting the appropriate products for your application, designing, validating and testing your application, and ensuring your application meets applicable standards, and other safety, security, regulatory or other requirements.
270 |
271 | Brilliant Labs reserves the right to change the circuitry and specifications without notice at any time. The parametric values quoted in this manual are provided for guidance only.
272 |
273 | The resources and products are provided subject to our [terms and conditions](https://brilliant.xyz/pages/terms-conditions).
274 |
--------------------------------------------------------------------------------
/frame/images/frame-bluetooth-sending-bytes-diagram.drawio.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/frame/images/frame-bluetooth-sending-lua-diagram.drawio.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/frame/images/frame-camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-camera.png
--------------------------------------------------------------------------------
/frame/images/frame-charging-cradle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-charging-cradle.png
--------------------------------------------------------------------------------
/frame/images/frame-charging-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-charging-diagram.png
--------------------------------------------------------------------------------
/frame/images/frame-debug-pinout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-debug-pinout.png
--------------------------------------------------------------------------------
/frame/images/frame-display.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-display.png
--------------------------------------------------------------------------------
/frame/images/frame-exploded-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-exploded-view.png
--------------------------------------------------------------------------------
/frame/images/frame-imu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-imu.png
--------------------------------------------------------------------------------
/frame/images/frame-microphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-microphone.png
--------------------------------------------------------------------------------
/frame/images/frame-nose-bridge-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-nose-bridge-diagram.png
--------------------------------------------------------------------------------
/frame/images/frame-pairing-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-pairing-diagram.png
--------------------------------------------------------------------------------
/frame/images/frame-splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-splash.png
--------------------------------------------------------------------------------
/frame/images/frame-sprite-engine.drawio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-sprite-engine.drawio.png
--------------------------------------------------------------------------------
/frame/images/frame-vs-code-extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-vs-code-extension.png
--------------------------------------------------------------------------------
/frame/images/frame-ycbcr-colorspace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/frame/images/frame-ycbcr-colorspace.png
--------------------------------------------------------------------------------
/images/discord-link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/images/discord-link.png
--------------------------------------------------------------------------------
/images/frame-link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/images/frame-link.png
--------------------------------------------------------------------------------
/images/logo.svg:
--------------------------------------------------------------------------------
1 |
25 |
--------------------------------------------------------------------------------
/images/monocle-link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/images/monocle-link.png
--------------------------------------------------------------------------------
/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Welcome
3 | description: Technical documentation for Brilliant's AR devices.
4 | image: /images/frame/frame-splash.png
5 | nav_order: 1
6 | ---
7 |
8 | # Get started with your Brilliant products
9 |
10 | Here you'll find everything you need to know about using your Brilliant AR devices. For further help, be sure to join our [Discord](https://discord.gg/7w3DFxek4p) community where our support team will be able to help you directly.
11 |
12 | ---
13 |
14 | [](/frame/frame)
15 |
16 | ---
17 |
18 | [](/monocle/monocle)
19 |
20 | ---
21 |
22 | [](https://discord.gg/7w3DFxek4p)
23 |
--------------------------------------------------------------------------------
/monocle/building-apps.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Building Apps
3 | description: A guide on how to develop your own applications for Monocle.
4 | image: /images/monocle/monocle-splash.png
5 | nav_order: 3
6 | parent: Monocle
7 | redirect_from:
8 | - /building-apps
9 | ---
10 |
11 | # Building Apps
12 | {: .no_toc }
13 |
14 | ---
15 |
16 | ## Getting started with AR Studio for VSCode
17 | {: .no_toc }
18 |
19 | AR Studio for VSCode lets you develop, test and save apps directly onto your Monocle. Download it today from the [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=brilliantlabs.brilliant-ar-studio) and start developing your Monocle projects.
20 |
21 | 
22 |
23 | - Once installed, connect to Monocle with `Ctrl-Shift-P` → `Brilliant AR Studio: Connect`.
24 | - Copy the example below, and save the file as `main.py`.
25 |
26 | ```python
27 | import touch
28 | import display
29 |
30 | def change_text(button):
31 | new_text = display.Text(f"Button {button} touched!", 0, 0, display.WHITE)
32 | display.show(new_text)
33 |
34 | touch.callback(touch.EITHER, change_text)
35 |
36 | initial_text = display.Text("Tap a touch button", 0, 0, display.WHITE)
37 | display.show(initial_text)
38 | ```
39 |
40 | - Upload `main.py` by right clicking on the file in the Explorer and clicking `Brilliant AR Studio: Upload File to Device`. Ensure that you have a workspace or folder open in the Explorer so that you can see the file.
41 | - When prompted for the on-device name, keep it as `main.py` and press Enter.
42 | - Run main.py with `Ctrl-Shift-P` → `Brilliant AR Studio: Build`.
43 | - You should be able to touch each of the touch pads on Monocle, and see the display update.
44 |
45 | ---
46 |
47 | ## Connecting to the wider world
48 |
49 | MicroPython on Monocle simplifies the usage of complex protocols typically employed in Bluetooth devices. Just like Python on desktop, Monocle can be conveniently interacted with using the REPL (Read Evaluate Print Loop) interface. The key difference? It's completely wireless!
50 |
51 | This wireless functionality not only allows for effortless testing and application development on Monocle, but also enables Python commands to control Monocle from your customized iOS, Android, or Desktop app.
52 |
53 | 
54 |
55 | Below are some templates to help you get started building your own apps.
56 |
57 | ### iOS & Android
58 |
59 | Noa is our ChatGPT client for Monocle. Check out the source code for [iOS](https://github.com/brilliantlabsAR/noa-for-ios), as well as for [Android](https://github.com/brilliantlabsAR/noa-for-android) and use it as a template for your own mobile app.
60 |
61 | 
62 |
63 | ### Javascript
64 |
65 | The [WebREPL](https://repl.brilliant.xyz) is a good starting point building your own web apps. Try it from Google Chrome on your PC, Mac, Android, or a Web Bluetooth compatible web browser on your iOS device such as [Bluefy](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055).
66 |
67 | Check out the full instructions and the source code [here](https://github.com/siliconwitchery/web-bluetooth-repl/).
68 |
69 | 
70 |
71 | ### Community projects
72 |
73 | For more application examples and ideas, check out the [community projects](/community) section to see what others have built.
--------------------------------------------------------------------------------
/monocle/hardware.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Hardware
3 | description: A brief overview of how Monocle works under the hood.
4 | image: /images/monocle/monocle-splash.png
5 | nav_order: 1
6 | parent: Monocle
7 | ---
8 |
9 | # Monocle Hardware Manual
10 | {: .no_toc }
11 |
12 | ---
13 |
14 | 
15 |
16 | Monocle is a tiny heads-up display which clips onto your existing eye-wear. It's packed full of powerful hardware which is perfect for when you're on the go. It connects to your mobile phone over Bluetooth, and includes a few handy sensors such as touch buttons, camera and microphone. The included FPGA is perfect for computer vision, AI or graphics acceleration directly on the device. Monocle runs open source software and provides an easy way to get started using [MicroPython](/monocle/micropython). You can also write your own firmware from scratch using these docs as guidance.
17 |
18 | ## Key features:
19 | {: .no_toc }
20 | - 640x400 color OLED display
21 | - 20° FOV optical body
22 | - 5MP camera
23 | - Microphone
24 | - FPGA based acceleration for ML/CV
25 | - Bluetooth 5.2
26 | - 70mAh rechargeable Li-ion battery
27 | - Touch buttons
28 | - Full featured MicroPython based OS
29 | - Charging case with USB & 450mAh battery
30 |
31 | ## Example uses:
32 | {: .no_toc }
33 | - Generative AI on the go
34 | - ML based image augmentation
35 | - Computer vision research
36 | - QR code & barcode detection
37 | - Heads up telemetry
38 | - AR app & game design
39 |
40 | ## Contents
41 | {: .no_toc }
42 |
43 | 1. TOC
44 | {:toc}
45 |
46 | ## Block diagram
47 |
48 | This diagram shows a general overview of the Monocle architecture.
49 |
50 | 
51 |
52 | ---
53 |
54 | ## Bluetooth MCU
55 |
56 | The Bluetooth MCU serves as the main processor for Monocle. It handles the majority of control over the device, and is used for networking and scripting. The MCU used is a [Nordic nRF52832](https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.8.pdf) with **512KB of Flash** memory, and **64KB of RAM**. It supports **Bluetooth 5.2**, up to 2Mb/s.
57 |
58 | By default, the nRF comes preloaded with our [MicroPython](/monocle/micropython) firmware, however you are able to deploy your own [custom firmware](#developing-custom-firmware) if you wish to do so.
59 |
60 | ### Updating firmware over-the-air
61 |
62 | Over the air updates can be performed via Nordic's nRFConnect software either on [Desktop](https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop), or on Mobile ([iOS](https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403)/[Android](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjbtevyrf77AhUncPEDHfjiBSEQFnoECBIQAQ&url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dno.nordicsemi.android.mcp%26hl%3Den%26gl%3DUS&usg=AOvVaw26fnMv6YUhCDOx-ZZHre94)). nRFConnect requires a `.zip` DFU file to perform the update.
63 |
64 | **The latest MicroPython release for Monocle can be found on our [GitHub](https://github.com/brilliantlabsAR/monocle-micropython/releases) releases page.**
65 |
66 | ---
67 |
68 | ## FPGA
69 |
70 | The FPGA is used for graphics acceleration, as well as image processing of the 5MP camera. It's perfect for computer vision and AI tasks which can make direct use of the camera and microphone as inputs. The FPGA IC used is a [Gowin GW1N-LV9MG100C6/I5](http://cdn.gowinsemi.com.cn/DS117E.pdf) from the [Little Bee Family](https://www.gowinsemi.com/en/product/detail/46/). It contains **7k LUTs**, **468kb of block RAM**, as well as **608kb of Flash** memory. An additional [1 megabyte (8 megabits) SPI Flash IC](#flash) is also included in Monocle, and either flash space may be used for booting up the FPGA, or storing user data. For further details, see the [Package & Pinout Guide](http://cdn.gowinsemi.com.cn/UG103E.pdf).
71 |
72 | By default, the FPGA comes pre-loaded our [Graphics & Camera Accelerator IP](https://github.com/brilliantlabsAR/monocle-fpga) and can be accessed using MicroPython commands. Our IP is a perfect starting point if you wish to [create your own FPGA application](#developing-for-the-fpga).
73 |
74 | **The latest release for the FPGA IP can be updated via the Micropython [`update.fpga()`](/monocle/micropython#fpga--monocle-specific) command. It is also checked periodically if you are using the Brilliant App**
75 |
76 | To save power, the FPGA can be shutdown along with the camera and display when not needed. See the [power](#power) section for details.
77 |
78 | ---
79 |
80 | ## Memory
81 |
82 | Aside from the built-in memories of the Bluetooth MCU and the FPGA, Monocle contains three additional memory ICs. One for flash, and two for RAM. The RAM is accessible by the FPGA, and is great for storing display buffers, camera data, or working data for AI algorithms. The flash meanwhile, is great as a secondary source for loading FPGA bitstreams, logging data, and is accessible by both the Bluetooth MCU and FPGA.
83 |
84 | ### Flash
85 |
86 | The Flash IC used is the [Winbond W25Q80EWUXIE](https://www.winbond.com/hq/support/documentation/levelOne.jsp?__locale=en&DocNo=DA00-W25Q80EW). It's an 1 megabyte (8 megabits) serial Flash and is connected to the FPGA and nRF52 via an SPI bus.
87 |
88 | ### RAM
89 |
90 | The RAM ICs used are the [AP Memory APS256XXN](https://www.apmemory.com/wp-content/uploads/APM_PSRAM_OPI_Xccela-APS256XXN-OBRx-v1.0-PKG.pdf). A total of 64 megabytes (512 megabits) of memory is addressable, and can be accessed at up to 800Mb/s in DDR mode.
91 |
92 | ---
93 |
94 | ## Display
95 |
96 | The display used in Monocle is a 0.23" micro OLED. It features **640x400 RGB pixels**, and is optically bonded to the main housing which directs the image into the users eye. The result is a transparent floating display with a **20° field of view**. About the size of a tablet display at arms length.
97 |
98 | 
99 |
100 | To save power, the display can be shutdown along with the camera and fpga when not needed. See the [power](#power) section for details.
101 |
102 | ---
103 |
104 | ## Camera
105 |
106 | The front facing camera on Monocle is an [Omnivision OV5640](https://cdn.sparkfun.com/datasheets/Sensors/LightImaging/OV5640_datasheet.pdf). It is a 5MP color sensor and features numerous convince features such as automatic exposure control, and automatic white balance. It is connected directly to the FPGA over a high speed MIPI CSI-2 interface.
107 |
108 | 
109 |
110 | To save power, the camera can be shutdown along with the fpga and display when not needed. See the [power](#power) section for details.
111 |
112 | ---
113 |
114 | ## Touch interface
115 |
116 | Monocle features two capacitive touch buttons which are fed into an [Azoteq IQS620A](https://www.azoteq.com/images/stories/pdf/iqs620_datasheet.pdf) touch controller. Each button can detect close proximity as well as touch events. With further software processing, double taps, long presses and other gestures can be detected. The touch controller is connected to the Blueooth MCU via I2C and an interrupt line to flag pending touch events. Our MicroPython firmware contains a built in library to access various types of touch events, and trigger actions when pressed.
117 |
118 | 
119 |
120 | ---
121 |
122 | ## Microphone
123 |
124 | A [TDK/InvenSense ICS-41351](http://invensense.wpenginepowered.com/wp-content/uploads/2020/07/DS-000157-ICS-41351-v1.4.pdf) microphone is directly connected to the FPGA, and can be used to record audio, or for voice recognition algorithms.
125 |
126 | The audio port is located on the back side of Monocle, so is perfect for receiving the wearers voice, while avoiding excessive background sounds.
127 |
128 | 
129 |
130 | The microphone is connected via a PDM interface, and is on the same power domain as the FPGA.
131 |
132 | ---
133 |
134 | ## Power
135 |
136 | Monocle operates on the four power domains as shown below. The colored domains may be powered down by command of the Bluetooth MCU. If the FPGA is shutdown, all the connected peripherals including the display and camera will shutdown also.
137 |
138 | Alternatively, the analog supplies of the camera (2.7V) and display (10V) may be powered down independently of the FPGA. This method, while not being the most aggressive power saving method, allows for faster startup of the camera or display as the digital registers do not need to be reconfigured.
139 |
140 |
141 |
142 | ### Regulation
143 |
144 | The [Maxim MAX77654 PMIC](https://www.analog.com/media/en/technical-documentation/data-sheets/max77654.pdf) is an efficient and low power management controller. Each rail is configurable and can be tuned for efficiency, stability or noise performance. Each rail can additionally be current limited to avoid overloading the battery.
145 |
146 | The PMIC communicates solely with the Bluetooth MCU over I2C.
147 |
148 | {: .warning }
149 | > It's possible to damage the Monocle hardware by setting the voltages levels too high. We recommend that you avoid diverging from the settings found in the Brilliant provided firmware, to prevent damaging your Monocle.
150 |
151 | ### Battery charging
152 |
153 | The PMIC also includes an integrated battery charger. Charge regulation voltage and current can be configured, as well as various timings. The battery level, and charge current can also be read via an analog pin provided from the PMIC to the Bluetooth MCU.
154 |
155 | {: .warning }
156 | > It's possible to damage the Monocle battery by misconfiguring the charge voltage or current. We recommend that you avoid diverging from the settings found in the Brilliant provided firmware and to prevent fire or damage to the Monocle battery.
157 |
158 | ### LEDs
159 |
160 | Monocle contains two LEDs (green and red) connected to GPIOs on the PMIC. They are easily accesible via PMIC registers from the Bluetooth MCU.
161 |
162 | 
163 |
164 | ---
165 |
166 | ## Charging case
167 |
168 | Monocle is provided with a compact charging case for taking on the go. When inserted into the case, Monocle will begin to recharge from the charging case battery. The case battery can provide several full charges of the Monocle and be itself recharged from a standard 500mA USB Type-C jack. While charging, the case will show an orange LED. Once the LED turns off, the case is fully charged.
169 |
170 | 
171 |
172 | When placed into the charger, the Monocle will detect the charge voltage and shut down all peripherals to efficiently charge. Upon removal from the case, and touching of either of the touch pads, Monocle will return into its normally powered state.
173 |
174 | Note that once placed into the charging case, it can take up to 10s for charging to begin. During this time, Monocle will look as if it's awake. If Monocle does not go to sleep after 10 seconds, ensure that the charging case is sufficently charged (by placing it on USB-C charging), or ensure that `device.prevent_sleep()` is disabled.
175 |
176 | ---
177 |
178 | ## Developing custom firmware
179 |
180 | ### Developing for the Bluetooth MCU
181 |
182 | {: .warning }
183 | > It's possible to damage the Monocle hardware by misconfiguring the power supply controller. We recommend that you avoid changing any of those settings as we've already fine tuned them for you.
184 |
185 | A good place to start writing your custom nRF applications is the [Monocle MicroPython repository](https://github.com/brilliantlabsAR/monocle-micropython). All the hardware drivers can be found here and you can follow the `main()` flow to understand how Monocle is booted.
186 |
187 | For compiling projects, you will need to download the latest [ARM GCC compiler](https://developer.arm.com/downloads/-/gnu-rm). For Bluetooth connectivity, you will also need to download a compatible Bluetooth stack from Nordic (aka the [Softdevice](https://www.nordicsemi.com/Products/Development-software/nrf5-sdk/download)). This is a proprietary library from Nordic, so is not directly included within the Monocle MicroPython repository, however is free to download and use.
188 |
189 | ### Creating custom OTA (over-the-air) update packages
190 |
191 | {: .warning }
192 | > It's recommended that your application is well tested and can reliably return back into OTA mode after programming. If you flash a bad application, you'll have to dismantle your Monocle and manually reprogram it using a programmer.
193 |
194 | To generate the `.zip` file, you'll need to use the [nRF Util](https://www.nordicsemi.com/Products/Development-tools/nrf-util) command line application. You can read how to generate files [here](https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrfutils%2FUG%2Fnrfutils%2Fnrfutil_intro.html). You will need to use the [Brilliant OTA key](https://github.com/brilliantlabsAR/monocle-micropython/blob/main/bootloader/published_privkey.pem) in order to generate a compatible image. If you wish to change this key, you can create a new keypair, and add the public key within your [bootloader code](https://github.com/brilliantlabsAR/monocle-micropython/blob/main/bootloader/dfu_public_key.c). Subsequent updates will then require your new private key. **Note: without the key, it's not possible to do over-the-air updates, and you will need to revert to manual programming.**
195 |
196 | ### Developing for the FPGA
197 |
198 | [GoWin's EDA](https://www.gowinsemi.com/en/support/download_eda/) can be used to develop applications for the FPGA. You can request a free licence [here](https://www.gowinsemi.com/en/support/license/).
199 |
200 | We recommend having a look at our [Graphics & Camera Accelerator IP](https://github.com/brilliantlabsAR/monocle-fpga) to see how an FPGA project is set up and built.
201 |
202 | Generally it's convenient to use the [MicroPython FPGA module](/monocle/monocle/#fpga--monocle-specific) to wirelessly program the FPGA. However this method does not allow for JTAG debugging, and can be a slow process for iterative development. It's therefore also possible to program the FPGA manually using a programmer.
203 |
204 | **Note:** Be sure to check your [chip revision](#fpga-chip-revisions) prior to developing and programming your application.
205 |
206 | ### Manually programming
207 |
208 | {: .warning }
209 | > The internal hardware of the Monocle is very delicate, especially the OLED flex cable. This cable contains thirty tiny wires which can be easily be broken if the cable is creased. Additionally, the OLED is bonded to the optical prism for a clear picture. It's impossible to replace this OLED if it breaks.
210 |
211 | 1. To access the programming pads, you'll first need to remove the back cover.
212 |
213 | 
214 |
215 | 1. With the back cover removed, gently extract the main board, taking care not to damage the flex cables, or shorting any of the electronics.
216 |
217 | 1. To shutdown the power, you will need to short the two pads shown below. Metal tweezers work well, but be careful not to short any other components.
218 |
219 | 
220 |
221 | 1. Your device should now be off, but **note the battery pins will still be live**. If you remove any components, **take note of which way they were inserted into the connectors**. Re-inserting the OLED cable or the camera module backwards will permanently damage them.
222 |
223 | 1. The programming pins for the Bluetooth MCU are shown below. It's recommended to use a J-Link compatible programmer such as the [nRF52 DK](https://www.nordicsemi.com/Products/Development-hardware/nrf52-dk). Nordic provide a helper utility which is correctly aware of important settings and flags when reprogramming. However other OpenOCD based SWD programmers may work with some careful tweaking.
224 |
225 | 
226 |
227 | 1. The programming pins for the FPGA are shown below. You can use Gowin's GWU2X based dongles to program the FPGA directly from within the IDE. Alternatively, [openFPGAloader](https://github.com/trabucayre/openFPGALoader) works as an open source alternative and can be used with a variety of programmers, such as [FTDI FT2232 based dongles](https://www.seeedstudio.com/Sipeed-USB-JTAG-TTL-RISC-V-Debugger-ST-Link-V2-STM8-STM32-Simulator-p-2910.html). Note that you will need to perform [level shifting](https://en.wikipedia.org/wiki/Level_shifter) between the 3.3V of most tools and the 1.8V of the FPGA, to avoid damaging it. If programming the internal flash, care must be taken to not perform so while the firmware is starting, which could provoke damage to the internal flash (see [RECONFIG_N](http://cdn.gowinsemi.com.cn/UG290E.pdf)).
228 |
229 | 
230 |
231 | 1. To power the device, apply 5V to the charging pads.
232 |
233 | 
234 |
235 | 1. To program the Bluetooth MCU, install the [Nordic command line tools](https://www.nordicsemi.com/Products/Development-tools/nrf-command-line-tools), and then run the command:
236 |
237 | ```bash
238 | nrfjprog --program firmware.hex --chiperase -f nrf52 --verify -r
239 | ```
240 |
241 | 1. To program the FPGA with openFPGAloader, run the command:
242 |
243 | ```bash
244 | openFPGALoader --cable ft2232 --fpga-part 0x0100481b --write-flash bitstream.fs
245 | ```
246 |
247 | ---
248 |
249 | ## Schematics
250 |
251 | [Download the PDF schematics for Monocle here](/monocle/monocle-schematics.pdf)
252 |
253 | [Download the PDF schematics for the Monocle charging case here](/monocle/monocle-cc-schematics.pdf)
254 |
255 | ---
256 |
257 | ## Mechanical
258 |
259 | ### Monocle
260 |
261 | [](/monocle/monocle-dimensions.pdf)
262 |
263 | [Download the 3D Model in STEP format](/monocle/monocle-body.step)
264 |
265 | [Download the 3D Model in STL format](/monocle/monocle-body.stl)
266 |
267 | ### Charging case
268 |
269 | [](/monocle/monocle-cc-dimensions.pdf)
270 |
271 | ---
272 |
273 | ## Device characteristics
274 |
275 | Typical and absolute device characteristics are shown below. To get the best lifetime of your Monocle, it's recommended to keep within these limits.
276 |
277 | ### Typical characteristics
278 |
279 | | | Min | Typ | Max |
280 | |:--------------------------|:------:|:---:|:-----:|
281 | | Monocle charging current | - | - | 77mA |
282 | | Case USB charging current | - | - | 500mA |
283 | | Bluetooth radio power | -20dBm | - | 4dBm |
284 | | Bluetooth sensitivity | -96dBm | - | - |
285 |
286 | ### Maximum ratings
287 |
288 | | | Min | Typ | Max |
289 | |:--------------------------|:-----:|:----:|:----:|
290 | | Case USB charging voltage | -0.3V | 5.1V | 30V |
291 | | Monocle charging voltage | -0.3V | 5.1V | 28V |
292 | | Operating temperature | 0°C | - | 45°C |
293 | | Storage temperature | -20°C | - | 60°C |
294 |
295 | ---
296 |
297 | ## Safety & limitation of liability
298 |
299 | ### Safety
300 |
301 | Brilliant Labs' devices can obscure your vision and should not be used while driving or operating dangerous equipment. Additionally long periods of use may cause eye strain, headaches and motion sickness. Brilliant Labs' devices can also display bright flashing images so may not be suitable for those who are susceptible to light sensitivity.
302 |
303 | ### Critical applications
304 |
305 | Brilliant Labs' devices are intended for consumer and R&D applications. It is not verified for use where performance and accuracy would be critical to human health, safety or mission critical use.
306 |
307 | ### Lithium batteries
308 |
309 | Lithium batteries can be dangerous if mishandled. Do not expose Brilliant Labs' devices to excess temperatures, fire or liquids. Do not try to remove the battery as the terminals can become shorted and result in the battery overheating or catching fire. Once the product reaches the end of it's life, dispose it safely according to your local regulations, such as e-waste collection points where any volatile components can be properly contained and handled.
310 |
311 | ### Limitation of liability
312 |
313 | Brilliant Labs provides technical data, including design resources, examples, applications, design advice, tools, safety information and other resources "as is" and disclaims all warranties, express and implied, including without limitation any implied warranties or merchantability, fitness for a particular purpose or non-infringement of third party intellectual property rights.
314 |
315 | These resources are intended for skilled developers. You are solely responsible for selecting the appropriate products for your application, designing, validating and testing your application, and ensuring your application meets applicable standards, and other safety, security, regulatory or other requirements.
316 |
317 | Brilliant Labs reserves the right to change the circuitry and specifications without notice at any time. The parametric values quoted in this manual are provided for guidance only.
318 |
319 | The resources and products are provided subject to our [terms and conditions](https://brilliant.xyz/pages/terms-conditions).
320 |
--------------------------------------------------------------------------------
/monocle/images/bluetooth-serial-service-sequence-diagram.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/monocle/images/micropython-web-repl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/micropython-web-repl.png
--------------------------------------------------------------------------------
/monocle/images/monocle-back-cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-back-cover.png
--------------------------------------------------------------------------------
/monocle/images/monocle-camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-camera.png
--------------------------------------------------------------------------------
/monocle/images/monocle-cc-dimensions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-cc-dimensions.png
--------------------------------------------------------------------------------
/monocle/images/monocle-charging-case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-charging-case.png
--------------------------------------------------------------------------------
/monocle/images/monocle-charging-pads.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-charging-pads.png
--------------------------------------------------------------------------------
/monocle/images/monocle-dimensions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-dimensions.png
--------------------------------------------------------------------------------
/monocle/images/monocle-display-fov.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-display-fov.png
--------------------------------------------------------------------------------
/monocle/images/monocle-exploded-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-exploded-view.png
--------------------------------------------------------------------------------
/monocle/images/monocle-jtag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-jtag.png
--------------------------------------------------------------------------------
/monocle/images/monocle-leds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-leds.png
--------------------------------------------------------------------------------
/monocle/images/monocle-microphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-microphone.png
--------------------------------------------------------------------------------
/monocle/images/monocle-network-flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-network-flow.png
--------------------------------------------------------------------------------
/monocle/images/monocle-ship-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-ship-mode.png
--------------------------------------------------------------------------------
/monocle/images/monocle-splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-splash.png
--------------------------------------------------------------------------------
/monocle/images/monocle-swd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-swd.png
--------------------------------------------------------------------------------
/monocle/images/monocle-touch-interface.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/monocle-touch-interface.png
--------------------------------------------------------------------------------
/monocle/images/noa-for-ios-screens.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/noa-for-ios-screens.png
--------------------------------------------------------------------------------
/monocle/images/vs-code-extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/images/vs-code-extension.png
--------------------------------------------------------------------------------
/monocle/monocle-body.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/monocle-body.stl
--------------------------------------------------------------------------------
/monocle/monocle-cc-dimensions.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/monocle-cc-dimensions.pdf
--------------------------------------------------------------------------------
/monocle/monocle-cc-schematics.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/monocle-cc-schematics.pdf
--------------------------------------------------------------------------------
/monocle/monocle-dimensions.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/monocle-dimensions.pdf
--------------------------------------------------------------------------------
/monocle/monocle-schematics.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brilliantlabsAR/docs/95cd039effa54f63ab31b2867581f50c774b7f52/monocle/monocle-schematics.pdf
--------------------------------------------------------------------------------
/monocle/monocle.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Monocle
3 | description: Technical documentation for the Brilliant Monocle.
4 | image: /images/monocle/monocle-splash.png
5 | nav_order: 3
6 | has_children: true
7 | ---
8 |
9 |
10 | 
11 |
12 | # Technical Documentation
13 |
14 | Monocle was designed for hackers, by hackers. Take a moment to familiarize yourself with the [Monocle hardware](/monocle/hardware), and when you're ready to delve deeper, visit the [Building Apps](/building-apps) section to discover how you can construct your own augmented reality apps.
15 |
16 | ### How do I start my Monocle?
17 |
18 | As soon as you remove Monocle from its case, it will automatically power on. You'll notice the display turning on, and you can easily connect via Bluetooth. When you place Monocle back into the case, it will go to sleep and recharge automatically.
19 |
20 | ### How do I program my Monocle?
21 |
22 | Monocle understands Python and offers a convenient set of APIs to control the display, camera, touch, and microphone. By leveraging Brilliant's [AR Studio for VSCode](https://marketplace.visualstudio.com/items?itemName=brilliantlabs.brilliant-ar-studio), you can create Python applications and effortlessly test them on Monocle. To get started, explore the helpful examples in our [reference documentation](/monocle/micropython). Alternatively, you can browse the [community projects page](/community) to discover what others have built with Monocle.
23 |
24 | ### How do I update my Monocle?
25 |
26 | Brilliant AR Studio will promptly notify you whenever a new firmware update is available, ensuring that you stay up-to-date with the latest features and improvements. Additionally, if you prefer, you have the option to load custom FPGA images directly from within AR Studio.
27 |
28 | ### Are there any out of the box applications?
29 |
30 | Noa by Brilliant, brings ChatGPT directly to your Monocle. With just a tap and a spoken command, you can witness ChatGPT's response right in front of your eyes.
31 |
32 |
37 |
--------------------------------------------------------------------------------
/monocle/update.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Firmware Updates
3 | description: A guide on how to update your Monocle AR device.
4 | image: /images/monocle/monocle-splash.png
5 | nav_order: 4
6 | parent: Monocle
7 | redirect_from:
8 | - /monocle/update
9 | ---
10 |
11 | # Updating your Monocle Firmware
12 | {: .no_toc }
13 |
14 | ---
15 |
16 | If you're using the [Brilliant AR Studio](/monocle/building-apps/#getting-started-with-ar-studio-for-vscode), firmware updates are automatic, and you will be prompted whenever a new update is available.
17 |
18 | If you run into problems, you can update manually using the following steps:
19 |
20 | 1. Firstly, ensure that you're using a browser that supports Web Bluetooth such as Google Chrome for Desktop, Android Chrome, or [Bluefy](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055) on iOS.
21 |
22 | 1. Next, navigate to the WebREPL at [https://repl.brilliant.xyz](https://repl.brilliant.xyz)
23 |
24 | 1. Press any key to open the connection dialog box.
25 |
26 | 1. Select **monocle** from the list and hit connect. (Note, if a previous update had failed, you may see **DFUTarg** in the list. In this case, connect to that instead).
27 |
28 | 1. Once connected, check the message at the bottom of the screen. If it says `Connected.` that means that you're already on the latest firmware, if not, you will be prompted that an update is available and you can click the update button to start the update.
29 |
30 | 1. If you see a message that the current firmware could not be detected, then you can use the following commands to start the update manually:
31 |
32 | ```python
33 | import update
34 | update.micropython()
35 | ```
36 |
37 | 1. Monocle will then restart into the update mode, and you'll be prompted to reconnect. Press any key to open the connection dialog box again.
38 |
39 | 1. Select **DFUTarg** from the list, and connect.
40 |
41 | 1. The firmware update will start and Monocle will reboot. You may need to place your Monocle into the case once the update is complete to reboot it.
42 |
43 | 1. That's it! You're Monocle should now be up to date. Check it by using the commands below once connected again. The version number should match the latest release on the Monocle MicroPython [releases page](https://github.com/brilliantlabsAR/monocle-micropython/releases).
44 |
45 | ```python
46 | import device
47 | device.VERSION
48 | ```
49 |
--------------------------------------------------------------------------------
/noa/delete-account.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Noa
3 | description: Instructions for how to delete your Noa account
4 | image: /images/frame/frame-splash.png
5 | nav_order: 10
6 | has_children: false
7 | nav_exclude: true
8 | ---
9 |
10 | # Deleting your Noa account
11 |
12 | To delete your Noa account. Navigate to the account page inside the Noa app, and then tap the **Delete Account** button. Your account will then be deleted after 30 days. If you log back within 30 days, your account will be restored.
13 |
14 |