Compare commits
4
Commits
v1.0.1
...
battery-level
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41c2ac7038 | ||
|
|
fea80a1b08 | ||
|
|
239007d1d4 | ||
|
|
926aecebf5 |
@@ -17,6 +17,8 @@ The toy has an internal lithium-ion battery that can be charged via USB-C and pr
|
|||||||
It can also be monitored and controlled via Home Assistant or with a web interface in local network.
|
It can also be monitored and controlled via Home Assistant or with a web interface in local network.
|
||||||
It is privacy-friendly: it works completely localy and sends no data to any external service.
|
It is privacy-friendly: it works completely localy and sends no data to any external service.
|
||||||
|
|
||||||
|
> Disclaimer: this is a prototype and its design may change substantially at any time. If you plan on building one, please start from the last tagged commit (e.g. `1.0.1` and take note of the tag for future references.
|
||||||
|
|
||||||
## How does it work?
|
## How does it work?
|
||||||
|
|
||||||

|

|
||||||
@@ -57,10 +59,13 @@ Then, model the character:
|
|||||||
- Start the print, wait the printer to pause and insert an NFC tag in the compartment. Stick it using the adhesive side so the 3D printer cooling fan does not displace it during the print.
|
- Start the print, wait the printer to pause and insert an NFC tag in the compartment. Stick it using the adhesive side so the 3D printer cooling fan does not displace it during the print.
|
||||||
- Restart the print and let it finish.
|
- Restart the print and let it finish.
|
||||||
|
|
||||||
|
You can also instruct your slicer to pause the print for you. Check your slicer preview to see at what height make it pause. If you're printing at 0.2mm resolution, pause at end of layer 30 to insert the tag and end of layer 40 to change the color.
|
||||||
|
|
||||||
### Add the MP3 file to the SDCard
|
### Add the MP3 file to the SDCard
|
||||||
|
|
||||||
Add the MP3 file to the sdcard, in a directory named like the integer you placed in the tag, with **a single** leading zero.
|
Add the MP3 file to the sdcard, in a directory named like the integer you placed in the tag, with **a single** leading zero (e.g. 01, 02, 03 ... 10, 11, 12 ... 99)
|
||||||
The folder to be played is selected based on the TAG content, but may contain more than one MP3 file. In that case, the files must be named as integers with **two leading zeros**, from `001.mp3` to `999.mp3`.
|
The folder to be played is selected based on the TAG content, but may contain more than one MP3 file. In that case, the files must be named as integers with **two leading zeros**, from `001.mp3` to `999.mp3`.
|
||||||
|
Full path example: `/12/001.mp3`
|
||||||
|
|
||||||
## NFC Tag format
|
## NFC Tag format
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
use <../enclosure/box.scad>
|
||||||
|
|
||||||
|
// A label to screw on a wooden box to keep all the characters
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
scale([0.6, 0.6, 0.02])
|
||||||
|
main_body();
|
||||||
|
|
||||||
|
translate([-39, -6, -1])
|
||||||
|
linear_extrude(height=2)
|
||||||
|
text("ƒabula", font="URW Bookman", size=16);
|
||||||
|
|
||||||
|
// Screw holes
|
||||||
|
translate([-46, -19, -0.5])
|
||||||
|
cylinder(h=1, d1=2, d2=4);
|
||||||
|
translate([46, 19, -0.5])
|
||||||
|
cylinder(h=1, d1=2, d2=4);
|
||||||
|
}
|
||||||
@@ -29,6 +29,12 @@ module fabula_enclosure_bottom() {
|
|||||||
// Logos
|
// Logos
|
||||||
translate([45, -18, 28.1]) linear_extrude(height = 1, center = true) rotate([0, 0, 90]) scale([0.15, 0.15, 0.15]) import("oshw-logo-filled-black.svg");
|
translate([45, -18, 28.1]) linear_extrude(height = 1, center = true) rotate([0, 0, 90]) scale([0.15, 0.15, 0.15]) import("oshw-logo-filled-black.svg");
|
||||||
translate([66, -25, 28.1]) linear_extrude(height = 1, center = true) rotate([0, 0, 90]) text("a Luna, con ♥", size = 6);
|
translate([66, -25, 28.1]) linear_extrude(height = 1, center = true) rotate([0, 0, 90]) text("a Luna, con ♥", size = 6);
|
||||||
|
|
||||||
|
// Foot screw holes
|
||||||
|
translate([-75, -30, 0]) {
|
||||||
|
translate([0, 10, -3.9]) cylinder(h = 40, d = pcb_screw_size*1.5);
|
||||||
|
translate([0, 40, -3.9]) cylinder(h = 40, d = pcb_screw_size*1.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Speaker grille reinforcements
|
// Speaker grille reinforcements
|
||||||
@@ -68,5 +74,20 @@ module fabula_enclosure_top() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module fabula_enclosure_foot() {
|
||||||
|
// A foot to leave a gap under the shell for a better sound
|
||||||
|
difference(){
|
||||||
|
hull(){
|
||||||
|
sphere(d = 10, $fn = 64);
|
||||||
|
translate([0, 50, 0]) sphere(d = 10, $fn = 64);
|
||||||
|
}
|
||||||
|
translate([-5, -5, 0]) cube([10, 50 + 10, 5]);
|
||||||
|
// Screw holes
|
||||||
|
translate([0, 10, -3.9]) cylinder(h = 4, d = pcb_screw_size);
|
||||||
|
translate([0, 40, -3.9]) cylinder(h = 4, d = pcb_screw_size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
translate([0, -60, 0]) rotate([180, 0, 0]) fabula_enclosure_bottom();
|
translate([0, -60, 0]) rotate([180, 0, 0]) fabula_enclosure_bottom();
|
||||||
translate([0, 60, 0]) fabula_enclosure_top();
|
translate([0, 60, 0]) fabula_enclosure_top();
|
||||||
|
translate([-120, -80, -30]) fabula_enclosure_foot();
|
||||||
|
|||||||
Reference in New Issue
Block a user