{"id":440,"date":"2025-02-13T08:46:44","date_gmt":"2025-02-13T08:46:44","guid":{"rendered":"https:\/\/r.jander.me.uk\/?p=440"},"modified":"2025-02-13T15:05:30","modified_gmt":"2025-02-13T15:05:30","slug":"redesigning-the-loom-scanner","status":"publish","type":"post","link":"https:\/\/r.jander.me.uk\/index.php\/2025\/02\/13\/redesigning-the-loom-scanner\/","title":{"rendered":"Redesigning the Loom Scanner"},"content":{"rendered":"\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69dbc8ab6b262&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69dbc8ab6b262\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202039969-1024x769.jpg\" alt=\"\" class=\"wp-image-441\" srcset=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202039969-1024x769.jpg 1024w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202039969-300x225.jpg 300w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202039969-768x577.jpg 768w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202039969-1536x1153.jpg 1536w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202039969-2048x1538.jpg 2048w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202039969-1200x901.jpg 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>The past few times I&#8217;ve shown my loom at LEGO shows I&#8217;ve not been completely happy about the scanner \/ head unit. In the original build of the loom it was actually attached to the loom itself, so obviously part of it. Later revisions made it a stand-alone unit, which is good for showing it to people but visitors usually don&#8217;t realise it&#8217;s part of the loom.<\/p>\n\n\n\n<p>At the most recent show, the scanning mechanism wasn&#8217;t working correctly. It&#8217;s not needed for the loom to work, as I wrote the code such that I can save good scans and re-weave them from memory. That&#8217;s useful at a show as it means I can keep the loom running without the 5 or so minute gap it requires to scan. I&#8217;d only scan when people were actively interested in that.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Time for a rethink !<\/h2>\n\n\n\n<p>There were two main things I wanted to do with the rebuild:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Have the scanner sit atop the loom, but still have it detachable. <\/li>\n\n\n\n<li>Make it faster and more compact<\/li>\n<\/ol>\n\n\n\n<p>Point 1 still needs tackling but my intention is to have it sit on top of the loom, behind the heddles. Back there it won&#8217;t block view of operation but will most definitely show that it&#8217;s part of the loom. It&#8217;ll sit on a &#8216;dock&#8217; for want of a phrase that allows it to be lifted off to show underneath and the unit itself. I want it to be able to face forward or backward, so that I can see the display regardless of where I am at the time. I know roughly what I want to build but I&#8217;ll do that once everything&#8217;s working again.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New LEGO Parts = Compact Design<\/h2>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69dbc8ab6bff8&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69dbc8ab6bff8\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-769x1024.jpg\" alt=\"\" class=\"wp-image-442\" srcset=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-769x1024.jpg 769w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-225x300.jpg 225w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-768x1023.jpg 768w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-1153x1536.jpg 1153w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-1538x2048.jpg 1538w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-1200x1598.jpg 1200w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/PXL_20250212_202059916-scaled.jpg 1922w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>In the past couple of years LEGO have brought out a new worm gear. It&#8217;s 6L long, and a 90\u00b0 rotation is one stud of lateral movement. There&#8217;s a 2 x 2 x 5plate threaded &#8216;nut&#8217; that goes with them. This opened up a much better, and compact, way for me to do the X-axis motion on the scanner. The original build has a rack and pinion system, which meant the scanner needed around 42L of space due to the scanning arm extending beyond the body during operation. The new design is only 29L wide and stays that width in use.<\/p>\n\n\n\n<p>The new gear &#8216;nut&#8217; is a little tricky to work with as it&#8217;s 5 plates high, essentially one brick \u00b1 1 plate. It does mean the worm gear axis aligns on a Technic beam hole, but did require some thought as to how to attach it to studless parts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Modelling it all<\/h2>\n\n\n\n<p>Before I get on with any coding, I&#8217;m going to make the BIs first. I keep saying I&#8217;ll do BIs for the loom, so every time I make something new I model it then. I&#8217;ve still got to take the loom apart to model the inside someday. I&#8217;ll probably take that as an opportunity to give it a good clean and gently silicone lubricate some parts.<\/p>\n\n\n\n<p>I only started last night on the BIs, so I&#8217;ve gone for the easy bits first \ud83d\ude42<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69dbc8ab6cb53&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69dbc8ab6cb53\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"443\" src=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Pattern_Board.png\" alt=\"\" class=\"wp-image-443\" srcset=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Pattern_Board.png 800w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Pattern_Board-300x225.png 300w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Pattern_Board-768x576.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69dbc8ab6d514&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69dbc8ab6d514\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"444\" src=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Board_Holder.png\" alt=\"\" class=\"wp-image-444\" srcset=\"https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Board_Holder.png 800w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Board_Holder-300x225.png 300w, https:\/\/r.jander.me.uk\/wp-content\/uploads\/2025\/02\/Board_Holder-768x576.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Coding<\/h2>\n\n\n\n<p>Coding&#8217;s going to be interesting. I&#8217;ve not written EV3g in a little while but I&#8217;ll get back into it quick enough. I have an old Macbook Air specifically for that software. I&#8217;ll need to read how I wrote the original scanner first as I want to make this a drop-in replacement &#8211; that&#8217;ll be fun going &#8220;how did I make this work?&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The past few times I&#8217;ve shown my loom at LEGO shows I&#8217;ve not been completely happy about the scanner \/ head unit. In the original build of the loom it was actually attached to the loom itself, so obviously part of it. Later revisions made it a stand-alone unit, which is good for showing it &hellip; <a href=\"https:\/\/r.jander.me.uk\/index.php\/2025\/02\/13\/redesigning-the-loom-scanner\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Redesigning the Loom Scanner&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,60,3],"tags":[61,35,26,29],"class_list":["post-440","post","type-post","status-publish","format-standard","hentry","category-lego","category-loom","category-mindstorms","tag-design","tag-ev3g","tag-lego","tag-loom"],"_links":{"self":[{"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/posts\/440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/comments?post=440"}],"version-history":[{"count":6,"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/posts\/440\/revisions"}],"predecessor-version":[{"id":452,"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/posts\/440\/revisions\/452"}],"wp:attachment":[{"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/media?parent=440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/categories?post=440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/r.jander.me.uk\/index.php\/wp-json\/wp\/v2\/tags?post=440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}