Cricket — from 20 built boards to the first product listing¶
Status: plan, 2026-09-16. Angel has about twenty Cricket boards built, waiting to be flashed and tested, and wants to sell them. This is what is in the repo, what is missing, and the sequence to a listing. Framework: value-forms bucket 1 (product); rules from products-business apply (3× landed cost, runs of 50, no-lab class).
What the latest board is (branch no-accelerometer, pushed 2026-09-16)¶
The newest work is not on main (main stops at June, board 006). Branch no-accelerometer
carries boards 007 and 008, the 008 firmware and an enclosure. Until it is merged, the
engineering portal, CI and the fab pack cannot see it.
- Board:
PCB/Cricket 008, 2 layers, 36.5 × 15 mm, USB-A plug on the board edge (the flash-drive disguise and the charge input). ATtiny3217 MCU, PS1240 piezo with a TC1240A charge pump, DRV8210 driver plus an AO3400 MOSFET for the vibration motor (2-pin 1.27 mm header M1), a blue LED, 1N4001W, posts for the 100 mAh LiPo, UPDI on PA0. No accelerometer (hence the branch name), no radio. - Firmware:
cricket_firmware_008(avr-gcc, plain Makefile, README written): each RTC wake plays either one piezo sound from an EEPROM-backed shuffled catalog or one of twelve vibration patterns (six pulse, six PWM haptic envelopes), then everything goes low and the MCU returns to standby. Interval 30 s with 15 % jitter for bench work; the 30-minute production value is next to it inpower_manager.c. LED off by default. The motor is driven. Build and flash:python3 tools/build_flash.pyover a SerialUPDI adapter;--actuator-testruns all twelve patterns and three tones as a bench check. - Enclosure:
PCB/Cricket 008/Enclosure 006.FCStd(+ STL/3MF) — the flash-drive shell, made for the 006 outline that 007 and 008 share. Needs a fit check against 008's part heights (piezo, motor, LED window), not a new design. mainstill shows 006 (STM32L011 + accelerometer). The twenty built boards are assumed to be 008; confirm.
What has to be true before one is sold¶
- Merge
no-accelerometerintomainso the portal, CI and the fab pack see 008; then taghw/Cricket_008/A. Angel's call — the branch is three months ahead of main. - Firmware verified on a 008 board:
build_flash.pyneedsavr-gccand a SerialUPDI adapter (the shop's safe-updi front end); run--actuator-test, then the production image with the 30-minute interval, and measure standby current (the case study says 6.6 µA). - Enclosure: fit-check
Enclosure 006on a 008 board (piezo port, LED, motor, plug exit), adjust in FreeCAD if needed, print twenty. - Battery and shipping: a 100 mAh LiPo ships as UN3481 "contained in equipment" with the lithium-battery mark; USPS allows it with ground/air rules met. State it on the listing; one line on the box.
- Compliance, no-lab class: no radio, so an FCC Part 15 unintentional-radiator statement and RoHS on the page; CE not needed for US sales. Keep it that way: no BLE on this product.
- ERP:
EE-A-0003-A Cricketassembly andEE-P-0003-Abare PCB (SOP-001), the 008 BOM imported the way the Robot Cow was (bom-alternates), twenty units into stock after test (SOP-006 build, SOP-023 count), serial labels from the Zebra. - Price: landed cost from the ERP BOM once parts are in (part-lookup for the ATtiny3217, DRV8210, AO3400, piezo, cell, printed shell), then 3×. Expect the $25–35 range; a "prank gadget in a flash-drive body" sells on Tindie at that price if the page is funny.
- A page that teaches: an engineering note on the business site (low-power design, the piezo charge pump, the disguise) is the product page; the AI disclosure line applies.
Sequence and who¶
| Step | Who | Depends on |
|---|---|---|
Merge the branch, tag hw/Cricket_008/A |
Engineering | — |
| Build and flash one 008 over UPDI, actuator test, standby current | Engineering | avr-gcc + SerialUPDI |
| Fit-check Enclosure 006 on 008, adjust, print 20 | Engineering | board in hand |
| ERP assembly, PCB and BOM; test procedure written (SOP-006 traveller) | Engineering + Production | firmware verified |
| Flash and test all twenty, serial labels, stock in ERP | Production | enclosure, test procedure |
| Listing on Tindie, photos, the note on the site | Sales | 20 in stock, price |
Enclosure v2 — snap-fit, with the vibration motor (phased, 2026-09-16)¶
The current shell (Enclosure 006) predates the motor and is not a snap fit. Angel has ~95
coin vibration motors (10 mm × 3 mm, 3 V, wire leads, adhesive back; ERP EE-C-0183, 95 in
Shop/Shelf A/Bin 02 at $0.20) that are glued to the board on the side opposite the piezo. Tool
choice: FreeCAD, headless on the server (parametric, STEP in and out, prints straight to
STL/3MF); Blender is for organic shapes and has no parametric history, so no. The portal
already shows board + enclosure together, so every phase can be checked on the page.
| Phase | What | Output | Check |
|---|---|---|---|
| 1 | Model the motor and place it on Cricket 008: a STEP of the coin motor (10 × 3 mm disc and tab; no leads — they are cut and soldered to M1) in the library, referenced from footprint M1 with an offset that puts it on the top side, back-to-back with the piezo, centred on the silkscreen circle (confirmed by Angel 2026-09-16) | kicad-lib/3dmodels/Motor_Vibration_Coin_10x3mm.step, model on the board, portal render |
motor visible in the 3D model and the renders |
| 2 | Envelope: from the board STEP with components, the tallest parts per side, the plug, LED and piezo positions, and the cell: a 401520 LiPo (20 × 15 × 4 mm + protection tab, 3.7 V 100 mAh, ERP EE-C-0184), plugged into BT1 (Molex PicoBlade 1.25 mm) and lying flat under the board beside the piezo so the stick stays flat; modelled in the library and placed on the board |
a measurements table in this note | cell confirmed by photo 2026-09-16 |
| 3 | Snap-fit shell v2, parametric: a FreeCAD Python generator (mechanical/cricket-008/enclosure.py → Cricket008-enclosure.FCStd + STL/3MF): base and lid, 1.2 mm walls, cantilever snaps on the long sides with a 0.3 mm clearance, USB plug exit, piezo port grille on the bottom, LED light pipe hole, a pocket for the motor with a wire channel, cell bay, no screws |
FCStd, STL, 3MF committed; portal "Board in enclosure" viewer | fits in the viewer; wall/clearance rules met |
| 4 | Print and fit: Angel prints one, reports what binds; the generator's parameters are adjusted (a numbers change, not a redraw) | v2.1, v2.2 … | snaps close by hand, plug seats, sound audible |
| 5 | Release: 20 printed, STL/3MF in the fab pack, a photo on the plan | hw/Cricket_008/B if the board changes, else the same tag with the mechanical files |
20 shells |
Phases 1–3 are done on the server; 4 needs the printer and hands. Codex CLI is installed on the server and can be used as a second pair of hands for phase 3 if the FreeCAD scripting drags.
Envelope (phase 2, measured 2026-09-16)¶
Measured from PCB/Cricket 008/Cricket 008.kicad_pcb exported to STEP
(kicad-cli pcb export step --subst-models --no-dnp --include-tracks --include-zones,
KiCad 10.0.5 container, motor model re-exported after Angel's two corrections: lead-free
motor STEP, M1 pin-header 3D model removed) and read in FreeCAD. STEP coordinate frame:
STEP_X = KiCad_X, STEP_Y = -KiCad_Y (no offset), confirmed against Edge.Cuts and the D2
footprint position, which lands exactly on the LED solid.
Correction to the brief: the board is not 1.6 mm thick. (setup (stackup)) in the
.kicad_pcb gives a real total thickness of 0.6 mm (0.51 mm core + 0.035 mm copper +
0.01 mm mask per side), and (general (thickness 0.6)) confirms it. All Z figures below use
z_top = 0.6, z_bot = 0.0 in the STEP frame, not 1.6/0.
| Item | Measured |
|---|---|
| Board outline (STEP) | X 101.25 – 137.75 (36.5 mm), Y −123.00 – −108.00 (15.0 mm) |
| z_top / z_bot | 0.6 / 0.0 mm (see correction above) |
| Max height above top | motor solid, ~3.0 mm (bbox 12.2 × 10.0 × 3.0 mm, top face at Z 3.59 → 3.59 − 0.6 = 2.99 mm above top), centred ~(106.3, −116.3) in STEP, i.e. KiCad (106.3, 116.3) — matches the silkscreen circle at (107.35, 116.3) within footprint-tab offset |
| Max depth below bottom | piezo BZ2 solid, 6.62 mm below z_bot (bbox 13.0 × 13.0 mm disc, Z −6.62 → 2.42). This STEP figure is the untrimmed library model; the brief's leads are stated as trimmed to 2.5 mm on the real part, so the enclosure's bottom cavity depth is designed to the disc body (piezo case is ~1.4 mm below the board face per the datasheet H6.5mm case minus board-side offset) plus 2.5 mm for the trimmed leads, not the full 6.62 mm — flagged in the enclosure script as PIEZO_TRIM_DEPTH = 2.5 overriding the raw STEP bbox |
| USB-A shell (J2) extent beyond board edge | Shell solids span X 133.65 – 152.45 (board Xmax 137.75) → 14.70 mm protrudes past the board edge; cross-section at the widest point: Y −121.85 to −109.35 (12.5 mm), Z −2.25 to 3.85 (6.1 mm), centred (Y −115.6, Z 0.8) |
| LED D2 XY | KiCad (113.75, 121.8) → STEP (113.75, −121.8); solid confirmed exactly at that center, body 1.0 × 0.5 × 0.35 mm on top, top face Z 0.945 |
| Piezo BZ2 XY | KiCad (107.65, 118.1) → STEP nominal (107.65, −118.1); measured solid center (107.65, −115.6) — the buzzer's courtyard/lead geometry is not centred on the pad, use the measured center for enclosure grille placement |
| Motor XY (silkscreen circle, confirmed) | KiCad (107.35, 116.3) → STEP (107.35, −116.3); motor solid measured center ~(106.3, −116.3), on TOP, back-to-back with the piezo which is on BOTTOM at the same XY — confirms phase-1 placement |
| Cell (401520 assumed, 4 × 15 × 20 mm) | Bottom-side clear length beside the piezo, between the piezo's X-max (~114.1) and the USB shell's inward X-min (~133.65), is ~19.5 mm — does not fit a 20 mm-long cell with 0.5 mm clearance (needs 21 mm). Per the plan's fallback, the cell is stacked under the piezo region instead: same XY footprint as the piezo/motor pair, mounted against the board's bottom LiPo posts, with the piezo's trimmed-lead cavity (2.5 mm) and the cell's 4 mm thickness both accounted for in the base's bottom-cavity depth. Angel's confirmation of 401520 as the real cell is still open (see below) |
Enclosure fixes from Angel (2026-09-16, phase 3 prep)¶
- Motor leads are cut and soldered straight to the M1 pads — the motor 3D model
(
Motor_Vibration_Coin_10x3mm.step) now shows no leads. No wire channel needed in the enclosure; keep the motor pocket only. - M1 has no pin header at all (leads solder direct to pads) — its 3D model was removed from
the pcb (commit
327d0f3). Nothing stands proud at M1; the enclosure needs no clearance feature there beyond the general board-envelope offset.
Open¶
- Print Cricket enclosure P12 and fill its measurement table (
enclosure/rev008-p12/README.md, rows 1-10): H2S, PETG, 0.4 nozzle, supports off. Key checks: seam flush at the rear with the new rear clamp, no sideways slide (0.23 mm finger preload), 10 USB plug cycles with the rear stop web intact, motor stays on the 45° catches. Knobs if needed:pcb_clamp_preload,pcb_finger_preload. - QR instructions page: publish after bench checks. Preview https://cricket-page.embeddedera-apple.pages.dev/cricket/ (branch
cricket-page, worktree~/embeddedera-site-cricket, repo~/embeddedera-site); permanent URL https://embeddedera.com/cricket/ (engrave with the trailing slash; QR encodes it directly, generated by the enclosure work for the 15 x 15 mm area). Behaviour on the page is checked against tagrev008and the TP4057 wiring (see Log 2026-10-06). Before "publish": on one unit flashed with therev008release, test the 2/3/4-plug sequences at ~0.5 s pauses and the ~1 h delay after unplug; native-speaker review of/es/cricket/; video section stays off until a real video exists. Also: engrave one QR sample (enclosure/qr-rev008/) and scan it on several phones; the page must be live before units ship. No charge-time, battery-life or warranty claims until measured/decided. - Production: confirm every sold unit is flashed with the
rev008release (https://github.com/EmbeddedEra/Cricket/releases/tag/rev008). - Firmware ideas for rev008.1 (owner brainstorm 2026-10-06, not approved): (1) single plug-in shows settings: after the 3 s wait the blue LED blinks the mode, pauses 1 s, blinks the speed (red/green charge LEDs are separate, no clash); (2) six speeds 15 min, 30 min, 45 min, 1 h, 2 h, 4 h —
speed_thirds {1,3,8,16}→{1,2,3,4,8,16}incricket_firmware_008/src/main.c; (3) optional 5-plug reset to defaults (today >=4 plugs = off, needs its own meaning); (4) new modes that fit piezo + vibration motor: Phantom phone (vibration only), Ghost knock (motor taps), Escalation (gets more frequent each day, as a speed), Mosquito whine (bench-test piezo at high pitch), seasonal packs. Avoid sounds that imitate smoke-alarm/real alarm chirps (safety and liability). Recommendation: ship rev008 + publish page now; do (1)+(2) as rev008.1, re-flash, update the page before engraving. Any change = new release, re-flash, page update. - Cricket rev 009: series resistor on PA3 (VBUS sense).
PCB/Cricket 008: USB VBUS (after RT1) goes straight to U3 pin 2 / PA3 with no resistor. With the cell at 3.9 V, 5 V on the pin is above the ATtiny3217 limit (VCC + 0.5 V), so current flows through PA3's clamp diode into +BATT while charging (rail measured 4.17 V charging, 2026-09-25; the injection current itself is unmeasured). Add ~10 kΩ in series (caps it at ~0.1 mA); the firmware's plug interrupt and double-plug mode gesture keep working unchanged. PA3 reads 0.02 V unplugged, so no pull-down is needed. -
Cricket rev 009: protect J1 pin 2 (+BATT on the UPDI header). The SerialUPDI adapter drives J1 pin 2 at 5.2 V (measured with the firmware's
--vbat-test, 2026-09-25), forcing 5 V into the LiPo whenever the programmer and cell are connected together. Options: a solder jumper (open for production, closed only for bench power), a series Schottky, or drop VCC from the header so it is UPDI + GND only. Until then: never attach the programmer with the cell plugged in. -
tools/flash_test.pystill unverified on hardware: a virgin chip (fuse fix),--baud 230400, the operator-says-no and battery-connected paths. And find out whether a plain avrdude flash erases EEPROM: the first live run (2026-10-04, PASS, 33 s) logged "eeprom cleared", i.e. the asleep flag was not set after flashing. Test: write a marker byte to EEPROM, flash with-U flash:w, read it back. If it survives, correct three statements that say flashing erases EEPROM (cricket_firmware_008/README.md"Reflashing erases EEPROM", the 2026-09-25 note indocs/test-report.md,hardware/attiny3217-updi-gotchas.md) and drop the EESAVE reasoning from the flash_test README.flash_test.pyis safe either way;build_flash.pyis not. - Untracked Cricket 008 work to commit or drop:
Freecad/Cricket008.step,PCB/Cricket 008/Enclosure 008.FCStd,PCB/Cricket 008/production/Cricket_008/(fab outputs). - Cricket feedback form is on the PREVIEW only (https://cricket-page.embeddedera-apple.pages.dev/cricket/, branch
cricket-page, commit f061ace in ~/embeddedera-site-cricket); not on production. Owner to approve, then release. Read answers with~/.local/bin/feedback-sync --show(cron every 15 min archives to ~/.local/state/feedback/feedback.jsonl and pings ntfy plex-hgviaey with rating+tags). Optional later: show it in the app Marketing page.
Open questions for Angel¶
- Are the twenty boards 008, with motor and cell fitted, or bare PCBs?
- Which SerialUPDI adapter is on the bench, and is avr-gcc on the Mac or should the shop server carry the toolchain?
Log¶
- 2026-09-16: written after reading the repo; three tasks raised on the board.
- 2026-09-16: corrected after Angel's push: the current board is 008 on branch
no-accelerometer, firmware 008 drives the motor, the shell CAD exists. Tasks 230–232 updated. - 2026-09-16:
no-accelerometerfast-forwarded intomain(Angel's call). Cricket now has the CI workflow,product.yml(008 shipping, older revisions retired),PCB/Cricket 008/fab.yml(ENIG and black mask as guesses to confirm) and the taghw/Cricket_008/A. The workflow learned to look underPCB/and to pick the project named like its directory when older copies sit beside it. - 2026-09-16: Enclosure v2 phases 2-3 done. Measured envelope from the board STEP (found
the board is really 0.6mm thick, not 1.6mm as assumed); built
mechanical/cricket-008/enclosure.py, a parametric FreeCAD Base/Lid snap-fit generator, interference-checked clean against the real board STEP (commitb94fa83);product.ymlmechanical: path repointed atmechanical/cricket-008; the portal'sfind_enclosure_fcstd()now prefers amechanical:-path FCStd named for both "enclosure" and the board slug, andenclosure-glb/enclosure-export.pynow also accept plain visiblePart::Featuresolids (not justPartDesign::Body), since the generator's Base/Lid are the former — wrapping an arbitrary boolean shape as a PartDesign::Body BaseFeature kept failing ("Linked object is not a PartDesign feature") and wasn't worth chasing further. Rebuilt, redeployed, and looked at the "Board in enclosure" viewer from two angles — plug out the end, board inside, cell and piezo visible on the bottom through the grille, motor pocket over the disc on top. Screenshots and full numbers are in the Enclosure v2 section below. - 2026-09-16 (later): Angel's phone screenshot showed the assembly viewer rendering the
shell nearly square in cross-section with the piezo grille on a side wall. Proved with
~/.local/bin/freecadcmdagainst the FCStd thatenclosure.py's own geometry was correct (combined Base+Lid bbox Y=19.0mm, Z=13.61mm, both within the required ranges; grille-hole centroid at the piezo's exact XY, Z at the shell's ZMin; interference still 0.0 for both parts) — the defect was not in enclosure.py. Root cause: kicad-cli's board.glb export is glTF-standard Y-up (glTF_X=board length, glTF_Y=board thickness, glTF_Z=board width/KiCad_Y), while enclosure.glb (straight off the FCStd via FreeCAD/trimesh) is Z-up STEP-frame;~/.local/share/glbfix/merge-assembly.mjswas only sign-flipping one axis (the oldMIRROR_Yflag, flipping the thickness axis) instead of remapping the board into the enclosure's frame, so board width and thickness ended up swapped in the merged assembly relative to the (correctly-oriented) enclosure. Fixed by replacing that flag with a +90 degree rotation about X on the board's root transform (verified empirically against decoded board.glb bounds: 52.3 x 15.0 x 10.8mm after the fix, matching board length/width/height, vs. 52.3 x 10.8 x 15.0mm — width and height swapped — before it). This is a portal-wide fix (~/.local/share/glbfix/merge-assembly.mjs, not in this repo) that likely also corrects 006/007's assemblies, which use the same merge path and were never individually checked. Rebuilt, redeployed, re-verified the liveassembly-48c365bf.glbnode bounds directly (enclosure 39.86 x 18.99 x 13.59mm; board components spread correctly across Y width with small Z heights), and looked at both screenshots again — grille now on the underside, board flat inside the shell. - 2026-09-16: phases 1–3 done. Motor (no leads) and 401520 cell modelled and placed on the board; envelope measured;
mechanical/cricket-008/enclosure.pygenerates the snap-fit Base + Lid (interference check against the board STEP passes); portal shows board + cell + piezo + motor inside the shell. Open before printing: the board file says 0.6 mm thickness (fab.yml says 1.6) — confirm which the twenty boards are, since the lid/base split and the cell bay depend on it; the cell and piezo footprints overlap ~1 mm in X on the bottom (worth a look at fit time). Next: phase 4, print one fromCricket008-enclosure-Base.stl+-Lid.stland report what binds. - 2026-09-16: enclosure v2 redesigned as a sandwich by the Codex CLI (first Codex worker job; ~167k of its tokens, hit the plan's daily limit at the end but the work was complete): Base on the table, PCB with cell and piezo dropped in, Lid pressed straight down, four external cantilever hooks (beam 7 × 1 mm, hook 0.6, 0.3 clearance) click into windows in the Base; PCB captured between four ledges and matching lips with a 0.75 mm gap; fingernail recess at the −X seam. Generator checks: board interference 0, ledge/lip 0, hook overlap 0.6 mm ×4, insertion sweeps 0. Two honest caveats in the README: the retention shoulder is a 0.9 mm horizontal overhang when printed open side up (needs a trial), and the ledge is four pads, not continuous, because the cell fills the board width. Snap tuning is one number,
BEAM_LEN(7.0; longer = softer). Next: phase 4, print Base + Lid and report. - 2026-09-25: 008 actuator bring-up on the bench. Piezo was silent because the TC1240A SHDN pin is active high and the firmware (following the
EmbeddedEra:TC1240Asymbol's~SHDNlabel) drove it the wrong way — also left the pump running in standby (~550 µA). Fixed inpiezo.c. CPU moved 20 → 10 MHz (20 MHz needs 4.5 V, the LiPo never gets there). The SerialUPDI adapter feeds 5.2 V into +BATT via J1 pin 2: never attach it with the cell plugged in. Sleep-forever test images don't reset on replug because the rail caps hold VCC above POR — short the caps first. New--vbat-test/--read-vbatmeasure VDD with the ADC and read it back over UPDI: on the cell 3.98 V idle, 3.79 V motor, 3.95 V piezo. Details incricket_firmware_008/docs/test-report.md. Next: standby current, BOD decision, fix the library symbol. - 2026-09-25 (later): firmware features added and bench-checked on 008: random exponential gaps (release mean 45 min, 7.5 min–4.5 h), 1 h arming delay after reset/unplug, silent while charging, tunes 1-in-4 (animal voices fill in), low-battery quiet below 3.4 V (resume above 3.6 V). New modes cycled by a USB double-plug (LED blinks the number, saved in EEPROM byte 255): 1 Chaos, 2 field cricket, 3 snowy tree cricket, 4 house cricket, 5 katydid — 10 s bursts scaled by the on-chip temperature sensor (Dolbear), CPU and charge pump asleep between pulses for battery life. All species sound right by ear; temp sensor reads +4 °C on this board (offset knob). PA3 reads 0.02 V unplugged. Next rev: 10 kΩ on PA3, protect J1 pin 2. Still to measure: standby and burst current.
- 2026-09-26: 008 currents measured on the cell: standby 1.3 µA (target was 6.6), motor 65 mA, vibration avg 40 mA, song avg 10 mA, tone 7 mA (CPU asleep) / 12 mA (awake), pump idle 0.4 mA. Battery life at 45 min (
tools/battery_life.py, includes assumed cell protection + self-discharge): Chaos ~7.6 months, cricket modes ~9–14 months, never-plays ~18 months. Open: real burst average (DMM can't average pulses) and whether turning the pump off between chirps saves anything, since it idles at only 0.4 mA. Table incricket_firmware_008/docs/test-report.md. - 2026-09-28: repo organised. Old revisions moved to
archive/, toolchain and KiCad history links untracked,bench/split fromsrc/(all six images byte-identical after the move), root README with the repo map. Newtools/flash_test.py: one board per Enter, identify, fix oscillator and EEPROM fuses, self-test image with an operator confirm, release image, ships-asleep check, CSV log per board. Review found that polling the board over UPDI would restart the self-test (every avrdude disconnect resets the chip): now one wait and one read. Facts saved in attiny3217-updi-gotchas. -
2026-10-04: docs and tools re-checked against the firmware (unchanged since 09-28). Fixed: the guides' cricket battery ranges were hand-typed and up to a month optimistic; they now come from
tools/battery_life.py, andmake_user_guide.pystops if the firmware's speeds, arming delay, minimum temperature or sound and pattern counts no longer match the printed text. Corrected the wording: the first sound comes exactly 1 h after the unplug (my 09-28 bench estimate of 1 h plus a gap was wrong).pinout.mdand the README Chaos wording updated. Not checked: what is flashed on the bench board. -
2026-10-04: enclosure print iteration on Mac saved separately in
enclosure/rev008-p02/throughrev008-p04/. P02 feedback: loose PCB and side-to-side shell movement. P03 added four independent PCB catches, four shell latches and tighter/deeper registration. User printed PETG with 0.4 mm nozzle on H2S, then reported bottom alignment tabs starting over air and an oversized gap below USB exposing the battery. P04 adds ramped side-rail roots, removes an unsupported fragment over the battery-wire slot, and sizes the USB exit from the connector's local section (lower wall raised 1.745 mm). CAD/mesh/collision and diagnostic slice checks pass; P04 physical print, fit and durability are still open. Reusable procedure is SOP-024-enclosure-design, section 4a; evidence and deliverables inENCLOSURE_008_PLAN.mdandenclosure/rev008-p04/. Keep these local prototype paths distinct from older server-generated enclosure paths. - 2026-10-06: code review after PR #1 merged (by another session; all five of my commits are in
main). Firmware, tools and guides byte-identical to 2026-10-04; clean build, all six images identical to the 09-28 baseline; release hex hash matchesreleases/rev008/manifest.json(but the manifest points at the git-ignoredbuild/cricket_008.hex); flash_test and CI-script tests pass; 74 Python files compile; secrets scan, README links and product.yml paths clean. CI is red onmainand was red at merge: real findings, 2 ERC and 14 DRC errors (same counts asreleases/rev008/NOTES.md), not a broken pipeline. CI image is KiCad 10.0.5, the notes quote 10.0.6. The 2 ERC errors need only a PA5 no-connect and a VBUS power flag, but a schematic edit changes the manifest hash. Another session has uncommitted laser-art-v2 edits and untracked laser-art-v3, QR and label folders in the working tree: left alone. - 2026-10-06: PR #1 (
no-accelerometer) merged; batch firmware is therev008release. Verified at tag rev008:HandleUsbEvent10 s window, unplug counts after 2x50 ms samples, 3 s wait after 2nd/3rd plug, 2 plugs = mode, 3 = speed, >=4 = off (blue 2 s);OnWakequiet while VBUS present;power_manager.c:14arm delay 3600 s (60 s bench value commented out); low battery quiet <3.4 V resume >3.6 V; cricket modes silent below 13 C. Charge LEDs from schematic + TP4057 pinout: pin 1 CHRG -> D3 RED (charging), pin 5 STDBY -> D4 GREEN (full). Owner: an already-playing sound is not interrupted by plugging in (code timings: Chaos effect up to ~5.2 s, cricket burst 7-13 s); charge from a standard 5 V USB-A charger (not "any charger"); no 1.5 h charge time, battery-life numbers or warranty on the page yet. - 2026-10-06: QR page preview hero/OG image = Cricket repo
website-renders/rev008-label/Cricket008_labeled_hero.webp(CAD render, recommended by its README; on the site as/media/cricket/cricket-008-labeled.webp+cricket-008-labeled-og.jpg, full image, no crop on desktop). Owner allows renders of our own CAD on the website (exception to own-photos-only; still no stock/AI images). Same push added the 15 mm QRenclosure/qr-rev008/(payloadhttps://embeddedera.com/cricket/, OpenCV-decoded; physical engraved scan not yet verified: engrave one sample and test on several phones; the page must be live before shipping) and the screw-cover label packageenclosure/rev008-p11/label-screw-cover/. - 2026-10-06: Social ad v1 built in the Cricket repo,
marketing/ad-v1/(15 s 9:16 video + 1:1 post from the labeled CAD render, synthesized chirps, captions, AI image-to-video prompts;make_ad.pyrebuilds). Owner: AI-generated video is OK for Cricket ads (exception to no-AI-images; disclose per platform AI labels). Don't post until /cricket/ is live and a buy link exists; swap in a real chirp recording when a unit is on the bench. - 2026-10-06: Product feedback form built for /cricket (preview only): /api/feedback -> R2
feedback/cricket/<id>.json, host-sidefeedback-syncarchive + ntfy; see embeddedera-site. - 2026-10-06: Ad v1 extended to 24 s: Chaos-mode sampler (meow, woof, hoot, ribbit, UFO, drip) and a vibration scene, every sound re-synthesized from the firmware's own frequencies/timings; captions now say 4 cricket modes + Chaos (200+ sounds, 12 vibration patterns; vibration is Chaos-only per main.c). Ad avoids the catalog's copyrighted tunes and the smoke-detector beep.
- 2026-10-06: Owner: price $24.99 + shipping, 2-pack $44.99 (store break: 2+ at $22.49 each = $44.98); sell the 15-20 existing units first, the rest are already tested; ship USPS Ground Advantage or UPS; no FCC statement; listing says "Not a toy". /cricket/ and /es/cricket/ published to production (site main dcc96b7) with the feedback form. Costing in cricket-costing (landed $22.95 at 20 incl. labor, $16.25 at 100). TC1240A is EOL (last-time buy ~100 suggested, owner to decide).
- 2026-10-06: ERP part EE-A-0003-A Cricket created on production (pk 245, Assemblies, pcs, assembly+component+testable, not trackable: owner says Cricket has no serial numbers, Salable ON, link /cricket/). Opening stock 15 in Finished goods (stock item 283), note: built, flashed rev008 and tested before the part existed. BOM still empty (needs IPNs on the schematic, SOP-008). Selling channel not live yet: store.embeddedera.com does not resolve (WooCommerce is sandbox-only at dev.embeddedera.com), eBay is sandbox-only; owner to choose channel.
-
2026-10-09: Ad v3 (22 s, no plug-in beats, Clayton NC, branch ad-v3 commit 25abcc8) shared for viewing at https://ee-share.pages.dev/ (Cloudflare Pages project ee-share, noindex headers + robots.txt, not linked from the site; source folder was the session scratchpad — redeploy with
wrangler pages deploy <dir> --project-name ee-share --branch main --force). Private review copy with post caption: https://claude.ai/artifact/3RciQEBeWqiF2gQMQimWP9. -
2026-11-01: Cricket social ad v5 — “Hear that? Good luck finding it.” Owner requested a complete Facebook/Instagram video-ad package using the caption from this session; reports five finished units in stock and can make additional units in 1–2 weeks. Created
~/work/Cricket/marketing/ad-v5/: 25 s 9:16, 4:5 and 1:1 MP4s, matching 4:5 image, platform captions, shop link/settings, ZIP and mobile preview. Uses our existing labeled CAD render and ad-v4 room animation with new hook/captions, battery-powered scene replacing the USB cable, and simplified shop end card; audio is firmware-based synthesis and labeled simulated. No price/quantity/availability wording in the ad. If accepting orders beyond finished stock, the production lead time must be shown in the store before checkout; no store configuration was changed in this task. Preview/download: https://cricket-ad-20261101.ee-share.pages.dev/ (separate ee-share preview branch; prior shared page preserved). Proven: three layouts pass bounds/reading-time/determinism checks; actual exports/contact sheets inspected; final AAC −14.3 LUFS / −1.8 dBFS true peak; identical audio across sizes; live mobile browser played all formats and verified captions/downloads/product URL. Source and evidence retained with the package. No social posts or paid campaigns launched; paused social automation remains paused. Work performed by current Codex session with installed Remotion/FFmpeg; no separate paid generation API. -
2026-11-01 (reaction revision): Ad v6 adds the annoyed person Angel requested. Angel explicitly selected an animated character matching the ad. The adult hears chirps, glances around, frowns, scratches their head, and reaches for/lifts the sofa cushion. Opening holds on the face through 1.6 s; on-screen dialogue reads “That chirp. Again.” / “Where is that coming from?” No spoken voiceover. Source and deliverables:
~/work/Cricket/marketing/ad-v6/. Product explanation, actual CAD render, original captions, verified simulated soundtrack and shop ending retained. New preview/download: https://cricket-human-20261101.ee-share.pages.dev/ (v5 preserved). All three 25 s / 750-frame formats reviewed; layout audit counters all zero; live mobile browser played all MP4s and checked captions/downloads. AAC payload copied exactly from v5's measured audio. Only changed scene ranges were rendered and assembled against v5; full standalone rebuild remains available. No social posting or campaign spend. Character-style choice saved in shared Cricket memory and mirrored to the notebook memory archive. -
2026-11-01 (owner publishing update): Angel reports having posted the Cricket ad to social media and now wants to use it on TikTok. He believes a TikTok account has not yet been created; existence is unconfirmed. Asked which signup email to use; recommendation is a business-owned role address such as
social@embeddedera.com, configured as an alias to an existing business inbox before signup. No email alias or TikTok account created by this advice task; no authorization to resume scheduled social automation was given. - 2026-11-07: Cricket enclosure P12 (
enclosure/rev008-p12/): P11 with better board holding only. Owner constraint: label area, screw locations and LED pocket unchanged; the generator now proves it (0 mm³ difference against the P11 STEP in those regions, plus a mutation test: a 0.1 mm screw shift fails). Changes: rear clamp station (lid pads at x −14.8 over the x −15 lands, so the board is pinched at the rear, middle and front); lateral finger preload 0.03 → 0.23 mm (P11's was below print tolerance), with a longer lead-in; rear end stop tied to the screw boss (was a free 0.9 mm post that takes the USB plug-in push); motor catches at 45° (P11's flat shoulders needed support). New generator checks: 45° facet scan, clamp-station coverage, finger strain, screw recess, lid install path. 24/24 PASS; STL/3MF/STEP, plate 3MF and renders. Not printed yet. Lessons in SOP-024-enclosure-design v2.10 andenclosure-design-preferencesrule 9.