var ewww_webp_supported=!1;function check_webp_feature(A,e){var w;e=void 0!==e?e:function(){},ewww_webp_supported?e(ewww_webp_supported):((w=new Image).onload=function(){ewww_webp_supported=0<w.width&&0<w.height,e&&e(ewww_webp_supported)},w.onerror=function(){e&&e(!1)},w.src="data:image/webp;base64,"+{alpha:"UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA=="}[A])}check_webp_feature("alpha");
var Arrive=function(c,w){"use strict";if(c.MutationObserver&&"undefined"!=typeof HTMLElement){var r,a=0,u=(r=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector,{matchesSelector:function(e,t){return e instanceof HTMLElement&&r.call(e,t)},addMethod:function(e,t,r){var a=e[t];e[t]=function(){return r.length==arguments.length?r.apply(this,arguments):"function"==typeof a?a.apply(this,arguments):void 0}},callCallbacks:function(e,t){t&&t.options.onceOnly&&1==t.firedElems.length&&(e=[e[0]]);for(var r,a=0;r=e[a];a++)r&&r.callback&&r.callback.call(r.elem,r.elem);t&&t.options.onceOnly&&1==t.firedElems.length&&t.me.unbindEventWithSelectorAndCallback.call(t.target,t.selector,t.callback)},checkChildNodesRecursively:function(e,t,r,a){for(var i,n=0;i=e[n];n++)r(i,t,a)&&a.push({callback:t.callback,elem:i}),0<i.childNodes.length&&u.checkChildNodesRecursively(i.childNodes,t,r,a)},mergeArrays:function(e,t){var r,a={};for(r in e)e.hasOwnProperty(r)&&(a[r]=e[r]);for(r in t)t.hasOwnProperty(r)&&(a[r]=t[r]);return a},toElementsArray:function(e){return e=void 0!==e&&("number"!=typeof e.length||e===c)?[e]:e}}),e=(l.prototype.addEvent=function(e,t,r,a){a={target:e,selector:t,options:r,callback:a,firedElems:[]};return this._beforeAdding&&this._beforeAdding(a),this._eventsBucket.push(a),a},l.prototype.removeEvent=function(e){for(var t,r=this._eventsBucket.length-1;t=this._eventsBucket[r];r--)e(t)&&(this._beforeRemoving&&this._beforeRemoving(t),(t=this._eventsBucket.splice(r,1))&&t.length&&(t[0].callback=null))},l.prototype.beforeAdding=function(e){this._beforeAdding=e},l.prototype.beforeRemoving=function(e){this._beforeRemoving=e},l),t=function(i,n){var o=new e,l=this,s={fireOnAttributesModification:!1};return o.beforeAdding(function(t){var e=t.target;e!==c.document&&e!==c||(e=document.getElementsByTagName("html")[0]);var r=new MutationObserver(function(e){n.call(this,e,t)}),a=i(t.options);r.observe(e,a),t.observer=r,t.me=l}),o.beforeRemoving(function(e){e.observer.disconnect()}),this.bindEvent=function(e,t,r){t=u.mergeArrays(s,t);for(var a=u.toElementsArray(this),i=0;i<a.length;i++)o.addEvent(a[i],e,t,r)},this.unbindEvent=function(){var r=u.toElementsArray(this);o.removeEvent(function(e){for(var t=0;t<r.length;t++)if(this===w||e.target===r[t])return!0;return!1})},this.unbindEventWithSelectorOrCallback=function(r){var a=u.toElementsArray(this),i=r,e="function"==typeof r?function(e){for(var t=0;t<a.length;t++)if((this===w||e.target===a[t])&&e.callback===i)return!0;return!1}:function(e){for(var t=0;t<a.length;t++)if((this===w||e.target===a[t])&&e.selector===r)return!0;return!1};o.removeEvent(e)},this.unbindEventWithSelectorAndCallback=function(r,a){var i=u.toElementsArray(this);o.removeEvent(function(e){for(var t=0;t<i.length;t++)if((this===w||e.target===i[t])&&e.selector===r&&e.callback===a)return!0;return!1})},this},i=new function(){var s={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};function n(e,t,r){return!(!u.matchesSelector(e,t.selector)||(e._id===w&&(e._id=a++),-1!=t.firedElems.indexOf(e._id)))&&(t.firedElems.push(e._id),!0)}var c=(i=new t(function(e){var t={attributes:!1,childList:!0,subtree:!0};return e.fireOnAttributesModification&&(t.attributes=!0),t},function(e,i){e.forEach(function(e){var t=e.addedNodes,r=e.target,a=[];null!==t&&0<t.length?u.checkChildNodesRecursively(t,i,n,a):"attributes"===e.type&&n(r,i)&&a.push({callback:i.callback,elem:r}),u.callCallbacks(a,i)})})).bindEvent;return i.bindEvent=function(e,t,r){t=void 0===r?(r=t,s):u.mergeArrays(s,t);var a=u.toElementsArray(this);if(t.existing){for(var i=[],n=0;n<a.length;n++)for(var o=a[n].querySelectorAll(e),l=0;l<o.length;l++)i.push({callback:r,elem:o[l]});if(t.onceOnly&&i.length)return r.call(i[0].elem,i[0].elem);setTimeout(u.callCallbacks,1,i)}c.call(this,e,t,r)},i},o=new function(){var a={};function i(e,t){return u.matchesSelector(e,t.selector)}var n=(o=new t(function(){return{childList:!0,subtree:!0}},function(e,r){e.forEach(function(e){var t=e.removedNodes,e=[];null!==t&&0<t.length&&u.checkChildNodesRecursively(t,r,i,e),u.callCallbacks(e,r)})})).bindEvent;return o.bindEvent=function(e,t,r){t=void 0===r?(r=t,a):u.mergeArrays(a,t),n.call(this,e,t,r)},o};d(HTMLElement.prototype),d(NodeList.prototype),d(HTMLCollection.prototype),d(HTMLDocument.prototype),d(Window.prototype);var n={};return s(i,n,"unbindAllArrive"),s(o,n,"unbindAllLeave"),n}function l(){this._eventsBucket=[],this._beforeAdding=null,this._beforeRemoving=null}function s(e,t,r){u.addMethod(t,r,e.unbindEvent),u.addMethod(t,r,e.unbindEventWithSelectorOrCallback),u.addMethod(t,r,e.unbindEventWithSelectorAndCallback)}function d(e){e.arrive=i.bindEvent,s(i,e,"unbindArrive"),e.leave=o.bindEvent,s(o,e,"unbindLeave")}}(window,void 0),ewww_webp_supported=!1;function check_webp_feature(e,t){var r;ewww_webp_supported?t(ewww_webp_supported):((r=new Image).onload=function(){ewww_webp_supported=0<r.width&&0<r.height,t(ewww_webp_supported)},r.onerror=function(){t(!1)},r.src="data:image/webp;base64,"+{alpha:"UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==",animation:"UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"}[e])}function ewwwLoadImages(e){if(e){for(var t=document.querySelectorAll(".batch-image img, .image-wrapper a, .ngg-pro-masonry-item a, .ngg-galleria-offscreen-seo-wrapper a"),r=0,a=t.length;r<a;r++)ewwwAttr(t[r],"data-src",t[r].getAttribute("data-webp")),ewwwAttr(t[r],"data-thumbnail",t[r].getAttribute("data-webp-thumbnail"));for(var i=document.querySelectorAll("div.woocommerce-product-gallery__image"),r=0,a=i.length;r<a;r++)ewwwAttr(i[r],"data-thumb",i[r].getAttribute("data-webp-thumb"))}for(var n=document.querySelectorAll("video"),r=0,a=n.length;r<a;r++)ewwwAttr(n[r],"poster",e?n[r].getAttribute("data-poster-webp"):n[r].getAttribute("data-poster-image"));for(var o,l=document.querySelectorAll("img.ewww_webp_lazy_load"),r=0,a=l.length;r<a;r++)e&&(ewwwAttr(l[r],"data-lazy-srcset",l[r].getAttribute("data-lazy-srcset-webp")),ewwwAttr(l[r],"data-srcset",l[r].getAttribute("data-srcset-webp")),ewwwAttr(l[r],"data-lazy-src",l[r].getAttribute("data-lazy-src-webp")),ewwwAttr(l[r],"data-src",l[r].getAttribute("data-src-webp")),ewwwAttr(l[r],"data-orig-file",l[r].getAttribute("data-webp-orig-file")),ewwwAttr(l[r],"data-medium-file",l[r].getAttribute("data-webp-medium-file")),ewwwAttr(l[r],"data-large-file",l[r].getAttribute("data-webp-large-file")),null!=(o=l[r].getAttribute("srcset"))&&!1!==o&&o.includes("R0lGOD")&&ewwwAttr(l[r],"src",l[r].getAttribute("data-lazy-src-webp"))),l[r].className=l[r].className.replace(/\bewww_webp_lazy_load\b/,"");for(var s=document.querySelectorAll(".ewww_webp"),r=0,a=s.length;r<a;r++)e?(ewwwAttr(s[r],"srcset",s[r].getAttribute("data-srcset-webp")),ewwwAttr(s[r],"src",s[r].getAttribute("data-src-webp")),ewwwAttr(s[r],"data-orig-file",s[r].getAttribute("data-webp-orig-file")),ewwwAttr(s[r],"data-medium-file",s[r].getAttribute("data-webp-medium-file")),ewwwAttr(s[r],"data-large-file",s[r].getAttribute("data-webp-large-file")),ewwwAttr(s[r],"data-large_image",s[r].getAttribute("data-webp-large_image")),ewwwAttr(s[r],"data-src",s[r].getAttribute("data-webp-src"))):(ewwwAttr(s[r],"srcset",s[r].getAttribute("data-srcset-img")),ewwwAttr(s[r],"src",s[r].getAttribute("data-src-img"))),s[r].className=s[r].className.replace(/\bewww_webp\b/,"ewww_webp_loaded");window.jQuery&&jQuery.fn.isotope&&jQuery.fn.imagesLoaded&&(jQuery(".fusion-posts-container-infinite").imagesLoaded(function(){jQuery(".fusion-posts-container-infinite").hasClass("isotope")&&jQuery(".fusion-posts-container-infinite").isotope()}),jQuery(".fusion-portfolio:not(.fusion-recent-works) .fusion-portfolio-wrapper").imagesLoaded(function(){jQuery(".fusion-portfolio:not(.fusion-recent-works) .fusion-portfolio-wrapper").isotope()}))}function ewwwWebPInit(e){ewwwLoadImages(e),ewwwNggLoadGalleries(e),document.arrive(".ewww_webp",function(){ewwwLoadImages(e)}),document.arrive(".ewww_webp_lazy_load",function(){ewwwLoadImages(e)}),document.arrive("videos",function(){ewwwLoadImages(e)}),"loading"==document.readyState?document.addEventListener("DOMContentLoaded",ewwwJSONParserInit):("undefined"!=typeof galleries&&ewwwNggParseGalleries(e),ewwwWooParseVariations(e))}function ewwwAttr(e,t,r){null!=r&&!1!==r&&e.setAttribute(t,r)}function ewwwJSONParserInit(){"undefined"!=typeof galleries&&check_webp_feature("alpha",ewwwNggParseGalleries),check_webp_feature("alpha",ewwwWooParseVariations)}function ewwwWooParseVariations(e){if(e)for(var t=document.querySelectorAll("form.variations_form"),r=0,a=t.length;r<a;r++){var i=t[r].getAttribute("data-product_variations"),n=!1;try{for(var o in i=JSON.parse(i))void 0!==i[o]&&void 0!==i[o].image&&(void 0!==i[o].image.src_webp&&(i[o].image.src=i[o].image.src_webp,n=!0),void 0!==i[o].image.srcset_webp&&(i[o].image.srcset=i[o].image.srcset_webp,n=!0),void 0!==i[o].image.full_src_webp&&(i[o].image.full_src=i[o].image.full_src_webp,n=!0),void 0!==i[o].image.gallery_thumbnail_src_webp&&(i[o].image.gallery_thumbnail_src=i[o].image.gallery_thumbnail_src_webp,n=!0),void 0!==i[o].image.thumb_src_webp&&(i[o].image.thumb_src=i[o].image.thumb_src_webp,n=!0));n&&ewwwAttr(t[r],"data-product_variations",JSON.stringify(i))}catch(e){}}}function ewwwNggParseGalleries(e){if(e)for(var t in galleries){var r=galleries[t];galleries[t].images_list=ewwwNggParseImageList(r.images_list)}}function ewwwNggLoadGalleries(e){e&&document.addEventListener("ngg.galleria.themeadded",function(e,t){window.ngg_galleria._create_backup=window.ngg_galleria.create,window.ngg_galleria.create=function(e,t){var r=$(e).data("id");return galleries["gallery_"+r].images_list=ewwwNggParseImageList(galleries["gallery_"+r].images_list),window.ngg_galleria._create_backup(e,t)}})}function ewwwNggParseImageList(e){for(var t in e){var r=e[t];if(void 0!==r["image-webp"]&&(e[t].image=r["image-webp"],delete e[t]["image-webp"]),void 0!==r["thumb-webp"]&&(e[t].thumb=r["thumb-webp"],delete e[t]["thumb-webp"]),void 0!==r.full_image_webp&&(e[t].full_image=r.full_image_webp,delete e[t].full_image_webp),void 0!==r.srcsets)for(var a in r.srcsets)nggSrcset=r.srcsets[a],void 0!==r.srcsets[a+"-webp"]&&(e[t].srcsets[a]=r.srcsets[a+"-webp"],delete e[t].srcsets[a+"-webp"]);if(void 0!==r.full_srcsets)for(var i in r.full_srcsets)nggFSrcset=r.full_srcsets[i],void 0!==r.full_srcsets[i+"-webp"]&&(e[t].full_srcsets[i]=r.full_srcsets[i+"-webp"],delete e[t].full_srcsets[i+"-webp"])}return e}check_webp_feature("alpha",ewwwWebPInit);
window._nslDOMReady = (function () {
const executedCallbacks = new Set();
return function (callback) {
/**
* Third parties might dispatch DOMContentLoaded events, so we need to ensure that we only run our callback once!
*/
if (executedCallbacks.has(callback)) return;
const wrappedCallback = function () {
if (executedCallbacks.has(callback)) return;
executedCallbacks.add(callback);
callback();
};
if (document.readyState === "complete" || document.readyState === "interactive") {
wrappedCallback();
} else {
document.addEventListener("DOMContentLoaded", wrappedCallback);
}
};
})();
var wc_single_product_params = {"i18n_required_rating_text":"Please select a rating","i18n_rating_options":["1 of 5 stars","2 of 5 stars","3 of 5 stars","4 of 5 stars","5 of 5 stars"],"i18n_product_gallery_trigger_text":"View full-screen image gallery","review_rating_required":"yes","flexslider":{"rtl":false,"animation":"slide","smoothHeight":true,"directionNav":false,"controlNav":false,"slideshow":false,"animationSpeed":500,"animationLoop":false,"allowOneSlide":false},"zoom_enabled":"","zoom_options":[],"photoswipe_enabled":"1","photoswipe_options":{"shareEl":false,"closeOnScroll":false,"history":false,"hideAnimationDuration":0,"showAnimationDuration":0},"flexslider_enabled":"1"};
//# sourceURL=wc-single-product-js-extra
fbq('init', '1153287051360427', {}, {
"agent": "woocommerce_6-10.4.3-3.5.15"
});
document.addEventListener( 'DOMContentLoaded', function() {
// Insert placeholder for events injected when a product is added to the cart through AJAX.
document.body.insertAdjacentHTML( 'beforeend', '<div class=\"wc-facebook-pixel-event-placeholder\"></div>' );
}, false );
If no shipping option is available, please try again later. Canada Post is performing scheduled maintenance this weekend.Dismiss
Professional DIY Programmable Logic Controller DIY Kit
The CANADUINO MEGA2560 PLC-300 V2 represents the next evolution of our successful DIY programmable logic controller kit, offering enhanced connectivity and communication capabilities while maintaining the robust I/O features of its predecessor.
Overview
This advanced DIY soldering kit transforms into a powerful, Arduino-compatible programmable logic controller suitable for light industrial applications. With industrial-standard 0-10V analog capabilities and a wide operating voltage range, it rivals commercial PLCs costing $500-1000 while offering greater flexibility at a fraction of the price.
Key Features
16 digital opto-isolated inputs (3.3V to 24V DC)
14 digital relay outputs (OMRON G5NB-1A-E, 5A @ 250VAC/30VDC)
8 analog inputs (0-10V) with 10-bit resolution
8 additional GPIO (analog/digital, 5V) on auxiliary header
8 analog outputs (0-10V) with 8-bit resolution
Dual RS232 ports via D-sub 9 connector
Dual I2C ports (3.3V and 5V with Grove connector)
SPI interface (3.3V, 4-wire)
Dedicated socket for Seeed Studio XIAO series modules
Regulated 5V and 10V outputs available for powering external devices
Fast-acting OMRON relays with ~10ms operation time
MAX232 compatible interface chip for reliable RS232 communication
Kit Contents
PCB with clearly marked component positions
All required electronic components
Complete mechanical assembly parts
Detailed assembly instructions (downloadable PDF)
DIP sockets for all ICs included
Note: For better reliability, especially in rough environment, we recommend to solder ICs.
Applications
Perfect for:
Industrial automation projects
Educational environments
Prototyping and development
Custom control systems
Home automation
Machine control interfaces
Assembly Requirements
This CANADUINO MEGA2560 PLC-300 V2 kit is designed for experienced technicians, students, and makers familiar with electronic assembly. Required tools:
Soldering iron
Solder wire
Wire cutter
Basic electronic tools (multimeter, "3rd hand")
Note on Components
The kit may occasionally include substitute components that maintain full functionality. For optimal assembly, install exact-matching components first, followed by any substitute parts.
5 reviews for CANADUINO MEGA2560 PLC-300 V2 DIY soldering kit
Rated 5 out of 5
Alejandro Patino (verified owner)–
Excellent kit, very detailed instructions, it looks very nice once assembled, I programmed it with openplc (you have to modify a file to map the inputs and outputs) and most importantly… it works!, my only ineptitude… I don’t know how to use rtc in openplc. besides that…i’m more than happy with the PLC, thanks guys, great job.
Rated 5 out of 5
Ian Shelly –
Purchased for a robotics project and everything is working well. Kit was easy to assemble, but maybe a bit much for a first time kit builder. The only improvement I would suggest is adding some high speed digital outputs (non relay) for driving things like stepper motors. Or at least screw terminals for the aux connector.
Rated 5 out of 5
J P F –
I discovered this kit as delivered has an issue detecting 3.3 V inputs. This is IMneverHO an EVIL type of error because they yellow LED illuminates with 3.3VDC (as if) but the Arduino can not actually detect anything. Too bad so sad, the game is not just illuminating the LEDs. My notes below listing substitutions indicate a 3.2kOhm Rpak was provided for R15 and R17.I have experimented and found a value of 2.5kOhm will make it work. If you add a 10kOhm resistor across a single resistor in the existing Rpak you can fix a single channel if desired. I did not research and calculate if the targets of this(IC6, IC7, IC9, and IC10) can tolerate the modification when supplied with a 24VDC input. You have been warned ;-)—NO STARS SUBTRACTED—(yet) I’m treating it as an added adventure tangent because I am very familiar with and enjoy hardware troubleshooting. It’s the nature of the beast in DIY! My unedited claim below to have actually calculated what should work is a bit of a stretch, please forgive my base indulgance. 😉
I like building kits that do fun stuff and this PLC kit has huge potential. It’s not a ‘beginner’ kit IMneverHO but it _is_ easy intermediate. It tolerated my rusty soldering skills while I dialed in tip temp. My kit included some undocumented part substitutions but it is/was possible to calculate that what is provided should probably work (IE: may not be an error). I just blundered on and so far so good. Substituton details:R2, R5 instructions call for B561 (560 Ohm) my kit had B331 (330 Ohm)R14, R21 instructions call for A272 (2.7 kOhm) my kit had B222 (2.2 kOhm) R15, R17 instructions call for A392 (3.9 kOhm) my kit had A322 (3.2 kOhm) Resistors is kinda like hand grenades, close often works just as well. Mine looks great, it powered right up with no suprises and appears fully functional. I attribute that to the kit and the instructions not necessarily my superb skills. For me it is/was a great choice. Great price! I already banked a lot of fun value out of it. I plan to use OpenPLC on it. I will probably enjoy navigating ‘that’ portion of this DIY adventure also! YMMV:-)
Rated 3 out of 5
wlambert (verified owner)–
Wow, these guys never built a Heath Kit. Printing on the resistors and capacitors is microscopic and faint, or not there at all. You will need plenty of good light, a magnifying glass, and a multimeter. A little luck will be a great help. The pictures on the web site are a big help, but my parts bag has blue ceramic capacitors with no markings. The board in the picture has yellow capacitors. Don’t get me wrong, the quality of the board itself is fantastic, and when you are done and it is working, you will be glad that you built it. But it is not a kit for beginners and the instructions are sketchy at best. Only two other reviews. I’ll bet you get a lot of reviews like this and never publish them. Well, you don’t get many reviews from someone who has built a Heath Kit. Most of us are dead!!!!
Rated 5 out of 5
Dustyn McMaken –
I bought this controller for use with a program of mine. It perfect for what I needed, however some of the capacitors and resistor packs are cross referenced part number, so some parts are hard to identify. Along with that I found with my board the IO pinout labels printed on the PCB referencing the Arduino pins were not correct. The correct pinout was labeled on the schematics. There are other reviews that list this problem. Other than that I was satisfied!!!
Only logged in customers who have purchased this product may leave a review.
Shopping Cart
Never Miss The Deals.
If you already receive our newsletter, please just close this popup. We try not to show it again.
Scroll to Top
document.addEventListener('DOMContentLoaded', function() {
setTimeout(function() {
let shipOption = document.querySelector('.wc-block-checkout__shipping-method-option:not(.wc-block-checkout__shipping-method-option--selected)');
let pickupOption = document.querySelector('.wc-block-checkout__shipping-method-option--selected');
if (shipOption && pickupOption) {
pickupOption.classList.remove('wc-block-checkout__shipping-method-option--selected');
shipOption.classList.add('wc-block-checkout__shipping-method-option--selected');
// Simulate click to trigger WooCommerce's logic
shipOption.click();
}
}, 500); // Delay ensures WooCommerce has rendered the elements
});
jQuery(document).ready(function($) {
setTimeout(function() {
var checkbox = $('.wc-block-components-checkbox__input'); // Target the checkbox
if (checkbox.length && !checkbox.prop('checked')) {
checkbox.prop('checked', true).trigger('change'); // Check the box and trigger change event
}
}, 500); // Delay to ensure WooCommerce blocks are loaded
});
(function() {
// Global page view and session tracking for UAEL Modal Popup feature
try {
// Session tracking: increment if this is a new session
// Check if any popup on this page uses current page tracking
var hasCurrentPageTracking = false;
var currentPagePopups = [];
// Check all modal popups on this page for current page tracking
if (typeof jQuery !== 'undefined') {
jQuery('.uael-modal-parent-wrapper').each(function() {
var scope = jQuery(this).data('page-views-scope');
var enabled = jQuery(this).data('page-views-enabled');
var popupId = jQuery(this).attr('id').replace('-overlay', '');
if (enabled === 'yes' && scope === 'current') {
hasCurrentPageTracking = true;
currentPagePopups.push(popupId);
}
});
}
// Global tracking: ALWAYS increment if ANY popup on the site uses global tracking
// Current page tracking: increment per-page counters
if (hasCurrentPageTracking && currentPagePopups.length > 0) {
var currentUrl = window.location.href;
var urlKey = 'uael_page_views_' + btoa(currentUrl).replace(/[^a-zA-Z0-9]/g, '').substring(0, 50);
var currentPageViews = parseInt(localStorage.getItem(urlKey) || '0');
currentPageViews++;
localStorage.setItem(urlKey, currentPageViews.toString());
// Store URL mapping for each popup
for (var i = 0; i < currentPagePopups.length; i++) {
var popupUrlKey = 'uael_popup_' + currentPagePopups[i] + '_url_key';
localStorage.setItem(popupUrlKey, urlKey);
}
}
} catch (e) {
// Silently fail if localStorage is not available
}
})();
var astra = {"break_point":"921","isRtl":"","is_scroll_to_id":"","is_scroll_to_top":"1","is_header_footer_builder_active":"1","responsive_cart_click":"flyout","is_dark_palette":"","edit_post_url":"https://www.universal-solder.ca/wp-admin/post.php?post={{id}}&action=edit","ajax_url":"https://www.universal-solder.ca/wp-admin/admin-ajax.php","shop_infinite_count":"2","shop_infinite_total":"0","shop_total_products":"1","shop_pagination":"number","shop_infinite_scroll_event":"click","shop_no_more_post_message":"No more products to show.","shop_result_count_format":"Showing 1\u2013{count} of {total} results","checkout_prev_text":"Back to my details","checkout_next_text":"Proceed to payment","show_comments":"Show Comments","shop_quick_view_enable":"on-image","shop_quick_view_stick_cart":"","shop_quick_view_auto_height":"1","woo_cart_empty_featured_product":"","single_product_qty_ajax_nonce":"8ac8850194","single_product_ajax_add_to_cart":"1","is_cart":"","is_single_product":"1","view_cart":"View cart","cart_url":"https://www.universal-solder.ca/cart/","checkout_url":"https://www.universal-solder.ca/checkout/","add_to_cart_options_single":"rt_add_to_cart","is_astra_pro":"1","shopRevealEffectEnable":""};
//# sourceURL=astra-theme-js-js-extra
var PayPalCommerceGateway = {"url":"https://www.paypal.com/sdk/js?client-id=BAAVwOOBwAshKbZYngRagbITamdh5azmNPzdkCKAO002JWyKNFlmpK4QYkiyKOoW1RR0ibwp-EwtFzjBPY¤cy=CAD&integration-date=2026-01-05&components=buttons,funding-eligibility,messages&vault=true&commit=false&intent=capture&disable-funding=card&enable-funding=venmo,paylater","url_params":{"client-id":"BAAVwOOBwAshKbZYngRagbITamdh5azmNPzdkCKAO002JWyKNFlmpK4QYkiyKOoW1RR0ibwp-EwtFzjBPY","currency":"CAD","integration-date":"2026-01-05","components":"buttons,funding-eligibility,messages","vault":"true","commit":"false","intent":"capture","disable-funding":"bancontact,blik,eps,ideal,mybank,p24,trustly,multibanco,card","enable-funding":"venmo,paylater"},"script_attributes":{"data-partner-attribution-id":"Woo_PPCP","data-page-type":"product-details"},"client_id":"BAAVwOOBwAshKbZYngRagbITamdh5azmNPzdkCKAO002JWyKNFlmpK4QYkiyKOoW1RR0ibwp-EwtFzjBPY","currency":"CAD","data_client_id":{"set_attribute":true,"endpoint":"/?wc-ajax=ppc-data-client-id","nonce":"9f59f0b7de","user":0,"has_subscriptions":false,"paypal_subscriptions_enabled":false},"redirect":"https://www.universal-solder.ca/checkout/","context":"product","ajax":{"simulate_cart":{"endpoint":"/?wc-ajax=ppc-simulate-cart","nonce":"f3350fe399"},"change_cart":{"endpoint":"/?wc-ajax=ppc-change-cart","nonce":"10480086a1"},"create_order":{"endpoint":"/?wc-ajax=ppc-create-order","nonce":"4ef1bfb871"},"approve_order":{"endpoint":"/?wc-ajax=ppc-approve-order","nonce":"921491fa8f"},"get_order":{"endpoint":"/?wc-ajax=ppc-get-order","nonce":"bf38e39417"},"approve_subscription":{"endpoint":"/?wc-ajax=ppc-approve-subscription","nonce":"9b7e3e6c6a"},"vault_paypal":{"endpoint":"/?wc-ajax=ppc-vault-paypal","nonce":"ff09b65a11"},"save_checkout_form":{"endpoint":"/?wc-ajax=ppc-save-checkout-form","nonce":"d114fc7091"},"validate_checkout":{"endpoint":"/?wc-ajax=ppc-validate-checkout","nonce":"72cc4aeb44"},"cart_script_params":{"endpoint":"/?wc-ajax=ppc-cart-script-params"},"create_setup_token":{"endpoint":"/?wc-ajax=ppc-create-setup-token","nonce":"242544afd2"},"create_payment_token":{"endpoint":"/?wc-ajax=ppc-create-payment-token","nonce":"bb2b45081b"},"create_payment_token_for_guest":{"endpoint":"/?wc-ajax=ppc-update-customer-id","nonce":"e589a66eda"},"update_shipping":{"endpoint":"/?wc-ajax=ppc-update-shipping","nonce":"f45ae441c1"},"update_customer_shipping":{"shipping_options":{"endpoint":"https://www.universal-solder.ca/wp-json/wc/store/v1/cart/select-shipping-rate"},"shipping_address":{"cart_endpoint":"https://www.universal-solder.ca/wp-json/wc/store/v1/cart/","update_customer_endpoint":"https://www.universal-solder.ca/wp-json/wc/store/v1/cart/update-customer"},"wp_rest_nonce":"20d0fa8b71","update_shipping_method":"/?wc-ajax=update_shipping_method"}},"cart_contains_subscription":"","subscription_plan_id":"","vault_v3_enabled":"1","variable_paypal_subscription_variations":[],"variable_paypal_subscription_variation_from_cart":"","subscription_product_allowed":"","locations_with_subscription_product":{"product":false,"payorder":false,"cart":false},"enforce_vault":"","can_save_vault_token":"1","is_free_trial_cart":"","vaulted_paypal_email":"","bn_codes":{"checkout":"Woo_PPCP","cart":"Woo_PPCP","mini-cart":"Woo_PPCP","product":"Woo_PPCP"},"payer":null,"button":{"wrapper":"#ppc-button-ppcp-gateway","is_disabled":false,"mini_cart_wrapper":"#ppc-button-minicart","is_mini_cart_disabled":false,"cancel_wrapper":"#ppcp-cancel","mini_cart_style":{"layout":"vertical","color":"gold","shape":"rect","label":"pay","tagline":false,"height":35},"style":{"layout":"vertical","color":"gold","shape":"rect","label":"pay","tagline":false}},"separate_buttons":{"card":{"id":"ppcp-card-button-gateway","wrapper":"#ppc-button-ppcp-card-button-gateway","style":{"shape":"rect","color":"black","layout":"horizontal"}}},"hosted_fields":{"wrapper":"#ppcp-hosted-fields","labels":{"credit_card_number":"","cvv":"","mm_yy":"MM/YY","fields_empty":"Card payment details are missing. Please fill in all required fields.","fields_not_valid":"Unfortunately, your credit card details are not valid.","card_not_supported":"Unfortunately, we do not support your credit card.","cardholder_name_required":"Cardholder's first and last name are required, please fill the checkout form required fields."},"valid_cards":["mastercard","visa","amex","jcb","american-express","master-card"],"contingency":"NO_3D_SECURE"},"messages":{"wrapper":".ppcp-messages","is_hidden":false,"block":{"enabled":false},"amount":78.99,"placement":"product","style":{"layout":"text","logo":{"type":"inline","position":"left"},"text":{"color":"black","size":"12"},"color":"blue","ratio":"1x1"}},"labels":{"error":{"generic":"Something went wrong. Please try again or choose another payment source.","required":{"generic":"Required form fields are not filled.","field":"%s is a required field.","elements":{"terms":"Please read and accept the terms and conditions to proceed with your order."}}},"billing_field":"Billing %s","shipping_field":"Shipping %s"},"simulate_cart":{"enabled":true,"throttling":5000},"order_id":"0","single_product_buttons_enabled":"1","mini_cart_buttons_enabled":"","basic_checkout_validation_enabled":"","early_checkout_validation_enabled":"1","funding_sources_without_redirect":["paypal","paylater","venmo","card"],"user":{"is_logged":false,"has_wc_card_payment_tokens":false},"should_handle_shipping_in_paypal":"","server_side_shipping_callback":{"enabled":true},"appswitch":{"enabled":true},"needShipping":"","vaultingEnabled":"1","productType":"simple","manualRenewalEnabled":"","final_review_enabled":"1"};
//# sourceURL=ppcp-smart-button-js-extra
var woosb_vars = {"wc_price_decimals":"2","wc_price_format":"%1$s%2$s","wc_price_thousand_separator":",","wc_price_decimal_separator":".","wc_currency_symbol":"C$","price_decimals":"2","price_format":"%1$s%2$s","price_thousand_separator":",","price_decimal_separator":".","currency_symbol":"C$","trim_zeros":"","round_price":"1","recalc_price":"","change_image":"no","bundled_price":"no","bundled_price_from":"regular_price","change_price":"no","price_selector":".summary \u003E .price","saved_text":"(saved [d])","price_text":"Bundle price:","selected_text":"Selected:","alert_selection":"Please select a purchasable variation for [name] before adding this bundle to the cart.","alert_unpurchasable":"Product [name] is unpurchasable. Please remove it before adding the bundle to the cart.","alert_empty":"Please choose at least one product before adding this bundle to the cart.","alert_min":"Please choose at least a total quantity of [min] products before adding this bundle to the cart.","alert_max":"Sorry, you can only choose at max a total quantity of [max] products before adding this bundle to the cart.","alert_total_min":"The total must meet the minimum amount of [min].","alert_total_max":"The total must meet the maximum amount of [max]."};
//# sourceURL=woosb-frontend-js-extra
var wc_address_i18n_params = {"locale":"{\"AT\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"AU\":{\"city\":[],\"postcode\":[],\"state\":[]},\"BA\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"BE\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"BG\":{\"state\":{\"required\":false}},\"CA\":{\"postcode\":[],\"state\":[]},\"CH\":{\"postcode\":[],\"state\":{\"required\":false}},\"CR\":{\"state\":[]},\"CZ\":{\"state\":{\"required\":false,\"hidden\":true}},\"DE\":{\"postcode\":[],\"state\":{\"required\":false}},\"DK\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"EE\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"FI\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"FR\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"GG\":{\"state\":{\"required\":false}},\"GR\":{\"state\":{\"required\":false}},\"HU\":{\"last_name\":[],\"first_name\":[],\"postcode\":[],\"city\":[],\"address_1\":[],\"address_2\":[],\"state\":{\"required\":false}},\"IE\":{\"postcode\":{\"required\":true},\"state\":[]},\"IS\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"IT\":{\"postcode\":[],\"state\":{\"required\":true}},\"JP\":{\"last_name\":[],\"first_name\":[],\"postcode\":[],\"state\":[],\"city\":[],\"address_1\":[],\"address_2\":[]},\"LV\":{\"state\":{\"required\":false}},\"NL\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"NZ\":{\"postcode\":[],\"state\":{\"required\":false}},\"NO\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"PL\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"PR\":{\"city\":[],\"state\":{\"required\":false,\"hidden\":true}},\"PT\":{\"state\":{\"required\":false,\"hidden\":true}},\"RO\":{\"state\":{\"required\":true}},\"RS\":{\"city\":{\"required\":true},\"postcode\":{\"required\":true},\"state\":{\"required\":false}},\"SK\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"SI\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"ES\":{\"postcode\":[],\"state\":[]},\"LI\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"LU\":{\"state\":{\"required\":false,\"hidden\":true}},\"MD\":{\"state\":[]},\"SE\":{\"postcode\":[],\"state\":{\"required\":false,\"hidden\":true}},\"US\":{\"postcode\":[],\"state\":[]},\"GB\":{\"postcode\":[],\"state\":{\"required\":false}},\"default\":{\"first_name\":{\"required\":true,\"autocomplete\":\"given-name\"},\"last_name\":{\"required\":true,\"autocomplete\":\"family-name\"},\"company\":{\"autocomplete\":\"organization\",\"required\":false},\"country\":{\"type\":\"country\",\"required\":true,\"autocomplete\":\"country\"},\"address_1\":{\"required\":true,\"autocomplete\":\"address-line1\",\"description\":\"House number and street name\"},\"address_2\":{\"label_class\":[],\"autocomplete\":\"address-line2\",\"required\":false,\"description\":\"Apartment, unit, building, floor, etc.\"},\"city\":{\"required\":true,\"autocomplete\":\"address-level2\"},\"state\":{\"type\":\"state\",\"required\":true,\"validate\":[\"state\"],\"autocomplete\":\"address-level1\"},\"postcode\":{\"required\":true,\"validate\":[\"postcode\"],\"autocomplete\":\"postal-code\"}}}","locale_fields":"{\"address_1\":\"#billing_address_1_field, #shipping_address_1_field\",\"address_2\":\"#billing_address_2_field, #shipping_address_2_field\",\"state\":\"#billing_state_field, #shipping_state_field, #calc_shipping_state_field\",\"postcode\":\"#billing_postcode_field, #shipping_postcode_field, #calc_shipping_postcode_field\",\"city\":\"#billing_city_field, #shipping_city_field, #calc_shipping_city_field\"}","i18n_required_text":"required","i18n_optional_text":"optional"};
//# sourceURL=wc-address-i18n-js-extra
var wc_checkout_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","update_order_review_nonce":"797b69700e","apply_coupon_nonce":"9a34b3a8ff","remove_coupon_nonce":"4833be1dfc","option_guest_checkout":"yes","checkout_url":"/?wc-ajax=checkout","is_checkout":"0","debug_mode":"","i18n_checkout_error":"There was an error processing your order. Please check for any charges in your payment method and review your \u003Ca href=\"https://www.universal-solder.ca/my-account/orders/\"\u003Eorder history\u003C/a\u003E before placing the order again."};
//# sourceURL=wc-checkout-js-extra
var wc_stripe_upe_params = {"gatewayId":"stripe","title":"Credit / Debit Card","isUPEEnabled":"1","key":"pk_live_51AEsYaBTl86KSn0dsYsBLiLLHfIJsseIwYJcASWjNBykJtepfeJcb19VnL373p9cfdGx7YIemObwDNHcX2uSZyYF00Z2wUv5Oc","locale":"en","apiVersion":"2024-06-20","isLoggedIn":"","isSignupOnCheckoutAllowed":"1","isCheckout":"","return_url":"https://www.universal-solder.ca/checkout/order-received/?utm_nooverride=1","ajax_url":"/?wc-ajax=%%endpoint%%","wp_ajax_url":"https://www.universal-solder.ca/wp-admin/admin-ajax.php","theme_name":"astra","testMode":"","createPaymentIntentNonce":"98ee6812d1","updatePaymentIntentNonce":"078b39c333","createSetupIntentNonce":"a3d70d81ed","createAndConfirmSetupIntentNonce":"ba7e94daf7","updateFailedOrderNonce":"2d9188bd0c","paymentMethodsConfig":{"card":{"isReusable":true,"title":"Credit / Debit Card","description":"","testingInstructions":"\u003Cstrong\u003ETest mode:\u003C/strong\u003E use the test VISA card 4242424242424242 with any expiry date and CVC. Other payment methods may redirect to a Stripe test page to authorize payment. More test card numbers are listed \u003Ca href=\"https://docs.stripe.com/testing\" target=\"_blank\"\u003Ehere\u003C/a\u003E.","showSaveOption":true,"supportsDeferredIntent":true,"countries":[],"enabledPaymentMethods":["card"]}},"genericErrorMessage":"There was a problem processing the payment. Please check your email inbox and refresh the page to try again.","accountDescriptor":"","addPaymentReturnURL":"https://www.universal-solder.ca/my-account/payment-methods/","orderReceivedURL":"https://www.universal-solder.ca/checkout/order-received/","enabledBillingFields":["billing_email","billing_first_name","billing_last_name","billing_phone","billing_company","billing_country","billing_address_1","billing_address_2","billing_city","billing_state","billing_postcode"],"cartContainsSubscription":"","subscriptionRequiresManualRenewal":"","subscriptionManualRenewalEnabled":"","forceSavePaymentMethod":"","accountCountry":"CA","isExpressCheckoutEnabled":"","isAmazonPayEnabled":"","isLinkEnabled":"","appearance":{"theme":"stripe"},"blocksAppearance":{"theme":"stripe"},"saveAppearanceNonce":"75cda8e90c","isAmazonPayAvailable":"","isOCEnabled":"","hasAffirmGatewayPlugin":"","hasKlarnaGatewayPlugin":"","cartTotal":"0","currency":"CAD","isPaymentNeeded":"","invalid_number":"The card number is not a valid credit card number.","invalid_expiry_month":"The card's expiration month is invalid.","invalid_expiry_year":"The card's expiration year is invalid.","invalid_cvc":"The card's security code is invalid.","incorrect_number":"The card number is incorrect.","incomplete_number":"The card number is incomplete.","incomplete_cvc":"The card's security code is incomplete.","incomplete_expiry":"The card's expiration date is incomplete.","expired_card":"The card has expired.","incorrect_cvc":"The card's security code is incorrect.","incorrect_zip":"The card's zip code failed validation.","postal_code_invalid":"Invalid zip code, please correct and try again","invalid_expiry_year_past":"The card's expiration year is in the past","card_declined":"The card was declined.","missing":"There is no card on a customer that is being charged.","processing_error":"An error occurred while processing the card.","invalid_sofort_country":"The billing country is not accepted by Sofort. Please try another country.","email_invalid":"Invalid email address, please correct and try again.","invalid_request_error":"Unable to process this payment, please try again or use alternative method.","amount_too_large":"The order total is too high for this payment method","amount_too_small":"The order total is too low for this payment method","country_code_invalid":"Invalid country code, please try again with a valid country code","tax_id_invalid":"Invalid Tax Id, please try again with a valid tax id","invalid_wallet_type":"Invalid wallet payment type, please try again or use an alternative method.","payment_intent_authentication_failure":"We are unable to authenticate your payment method. Please choose a different payment method and try again.","insufficient_funds":"Your card has insufficient funds."};
//# sourceURL=wc-stripe-upe-classic-js-extra
var wc_add_to_cart_variation_params = {"wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_no_matching_variations_text":"Sorry, no products matched your selection. Please choose a different combination.","i18n_make_a_selection_text":"Please select some product options before adding this product to your cart.","i18n_unavailable_text":"Sorry, this product is unavailable. Please choose a different combination.","i18n_reset_alert_text":"Your selection has been reset. Please select some product options before adding this product to your cart."};
//# sourceURL=wc-add-to-cart-variation-js-extra
Alejandro Patino (verified owner) –
Excellent kit, very detailed instructions, it looks very nice once assembled, I programmed it with openplc (you have to modify a file to map the inputs and outputs) and most importantly… it works!, my only ineptitude… I don’t know how to use rtc in openplc. besides that…i’m more than happy with the PLC, thanks guys, great job.
Ian Shelly –
Purchased for a robotics project and everything is working well. Kit was easy to assemble, but maybe a bit much for a first time kit builder. The only improvement I would suggest is adding some high speed digital outputs (non relay) for driving things like stepper motors. Or at least screw terminals for the aux connector.
J P F –
I discovered this kit as delivered has an issue detecting 3.3 V inputs. This is IMneverHO an EVIL type of error because they yellow LED illuminates with 3.3VDC (as if) but the Arduino can not actually detect anything. Too bad so sad, the game is not just illuminating the LEDs. My notes below listing substitutions indicate a 3.2kOhm Rpak was provided for R15 and R17.I have experimented and found a value of 2.5kOhm will make it work. If you add a 10kOhm resistor across a single resistor in the existing Rpak you can fix a single channel if desired. I did not research and calculate if the targets of this(IC6, IC7, IC9, and IC10) can tolerate the modification when supplied with a 24VDC input. You have been warned ;-)—NO STARS SUBTRACTED—(yet) I’m treating it as an added adventure tangent because I am very familiar with and enjoy hardware troubleshooting. It’s the nature of the beast in DIY! My unedited claim below to have actually calculated what should work is a bit of a stretch, please forgive my base indulgance. 😉
I like building kits that do fun stuff and this PLC kit has huge potential. It’s not a ‘beginner’ kit IMneverHO but it _is_ easy intermediate. It tolerated my rusty soldering skills while I dialed in tip temp. My kit included some undocumented part substitutions but it is/was possible to calculate that what is provided should probably work (IE: may not be an error). I just blundered on and so far so good. Substituton details:R2, R5 instructions call for B561 (560 Ohm) my kit had B331 (330 Ohm)R14, R21 instructions call for A272 (2.7 kOhm) my kit had B222 (2.2 kOhm) R15, R17 instructions call for A392 (3.9 kOhm) my kit had A322 (3.2 kOhm) Resistors is kinda like hand grenades, close often works just as well. Mine looks great, it powered right up with no suprises and appears fully functional. I attribute that to the kit and the instructions not necessarily my superb skills. For me it is/was a great choice. Great price! I already banked a lot of fun value out of it. I plan to use OpenPLC on it. I will probably enjoy navigating ‘that’ portion of this DIY adventure also! YMMV:-)
wlambert (verified owner) –
Wow, these guys never built a Heath Kit. Printing on the resistors and capacitors is microscopic and faint, or not there at all. You will need plenty of good light, a magnifying glass, and a multimeter. A little luck will be a great help. The pictures on the web site are a big help, but my parts bag has blue ceramic capacitors with no markings. The board in the picture has yellow capacitors. Don’t get me wrong, the quality of the board itself is fantastic, and when you are done and it is working, you will be glad that you built it. But it is not a kit for beginners and the instructions are sketchy at best. Only two other reviews. I’ll bet you get a lot of reviews like this and never publish them. Well, you don’t get many reviews from someone who has built a Heath Kit. Most of us are dead!!!!
Dustyn McMaken –
I bought this controller for use with a program of mine. It perfect for what I needed, however some of the capacitors and resistor packs are cross referenced part number, so some parts are hard to identify. Along with that I found with my board the IO pinout labels printed on the PCB referencing the Arduino pins were not correct. The correct pinout was labeled on the schematics. There are other reviews that list this problem. Other than that I was satisfied!!!