{"id":15750,"date":"2023-06-26T10:30:36","date_gmt":"2023-06-26T08:30:36","guid":{"rendered":"https:\/\/staging.hk.digital\/?p=15750"},"modified":"2023-06-26T10:30:38","modified_gmt":"2023-06-26T08:30:38","slug":"the-coordination-miracle-nothing-happens-without-firmware","status":"publish","type":"post","link":"https:\/\/staging.hk.digital\/en\/the-coordination-miracle-nothing-happens-without-firmware\/","title":{"rendered":"The coordination miracle: Nothing happens without firmware!"},"content":{"rendered":"\n<p>The core of each of our devices: A main processor that runs the firmware. Its core task: the connection and coordination of all components connected to the processor &#8211; sensors, modem, external interfaces &#8211; on the board to form a smoothly functioning overall system. Firmware and hardware are therefore inextricably interwoven. Or to put it another way: without the right firmware to coordinate everything, the best hardware is useless.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Firmware: Data acquisition &amp; data transmission<\/h2>\n\n\n\n<p>Each of our firmware applications is basically designed for two main tasks: data acquisition and transmission. For transmission, the firmware on the processor controls the cellular modem. In doing so, it must follow defined procedures to connect to a cellular network. However, it must also be able to react to possible misbehavior of the modem or the mobile network.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Firmware interactions with middleware servers: Different message types and commands<\/h2>\n\n\n\n<p>Data acquisition can vary widely: If sensors are connected directly, the firmware must then operate the corresponding hardware interfaces, e.g., I2C, SPI, or direct measurement of analog signals. Due to the large number of processor interfaces, which can then be evaluated by the firmware, HK.SYSTEMS is able to connect just about any type of sensor.<\/p>\n\n\n\n<p>However, external hardware circuitry is often required in addition: Hardware and firmware therefore only function as a unit and, depending on the task, must necessarily be coordinated with each other. The firmware also implements the sequences, for example the order of different measurements, or varies the frequency of measurements depending on threshold values or other parameters such as time or additional environmental influences. All of these parameters are firmware-controlled &#8211; not least depending on the configuration that the device in question receives from the middleware.<\/p>\n\n\n\n<p>Another type of data collection, for example, are retrofit solutions, as HK.SYSTEMS has already implemented in various customer projects. Here, the basis is an already existing electronic system that is specialized in collecting certain data. Often, the customer has already invested a lot of special know-how in this area &#8211; but then again, he lacks the know-how for reliable data transmission.<\/p>\n\n\n\n<p>Our solution: The customer&#8217;s electronics are expanded to include the possibility of data transmission over the air (over-the-air). For this purpose, our electronics are connected to an existing data interface (e.g. UART or RS485). The data stream running over it is evaluated by our firmware, then information is transmitted or other actions are triggered as required. It is also possible to work out a special protocol with the customer for data exchange via an interface between both electronics. The firmware can then transmit or return appropriate information in response to commands defined in the protocol.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Firmware: Further advantages &amp; functions at a glance<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Energy management: <\/strong>In battery-powered devices, the firmware also takes care of sustainable energy management of the other components on the board. It puts them into sleep modes or completely cuts off the power supply to the components by external circuitry whenever the processes allow it.<\/li>\n\n\n\n<li><strong>Updates:<\/strong> The firmware can replace itself. This function makes various function extensions possible &#8211; and completely uncomplicated.<\/li>\n\n\n\n<li><strong>Configuration option:<\/strong> The firmware can adopt parameters from the middleware server. This makes it easy to switch servers or change thresholds, data ingestion frequency, and more.<\/li>\n\n\n\n<li><strong>User interactions: <\/strong>The firmware enables not only direct reactions to user inputs, for example via push buttons, but also status visualizations or data visualizations via LEDs and displays.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><\/p>\n<script language='javascript' type='text\/javascript'>function getWR360PopupSkin(){return 'light_clean';}<\/script>","protected":false},"excerpt":{"rendered":"<p>An IoT project consists of many building blocks, various different cloud services and a lot of devices. Middleware is the gateway to the cloud for all these devices. Its importance is enormous: without powerful middleware, there is no successful, smoothly running IoT project. To put it very simply, you could say that with many devices, the data to be transmitted is broken down to a minimum. The middleware reprocesses this information so that the devices in the network function. The result: valid collected data that can be utilized and analyzed.<\/p>\n","protected":false},"author":9,"featured_media":15775,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"episode_type":"audio","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","footnotes":""},"categories":[22],"tags":[],"series":[],"class_list":["post-15750","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"episode_featured_image":"https:\/\/staging.hk.digital\/app\/uploads\/hk-systems-blog-elias-expert-firmware.jpg","episode_player_image":"https:\/\/staging.hk.digital\/app\/plugins\/seriously-simple-podcasting\/assets\/images\/no-album-art.png","download_link":"","player_link":"","audio_player":false,"episode_data":{"playerMode":"light","subscribeUrls":{"apple_podcasts":{"key":"apple_podcasts","url":"","label":"Apple Podcasts","class":"apple_podcasts","icon":"apple-podcasts.png"},"stitcher":{"key":"stitcher","url":"","label":"Stitcher","class":"stitcher","icon":"stitcher.png"},"google_podcasts":{"key":"google_podcasts","url":"","label":"Google Podcasts","class":"google_podcasts","icon":"google-podcasts.png"},"spotify":{"key":"spotify","url":"","label":"Spotify","class":"spotify","icon":"spotify.png"}},"rssFeedUrl":"https:\/\/staging.hk.digital\/en\/feed\/podcast\/hk-digital-iot-made-real","embedCode":"<blockquote class=\"wp-embedded-content\" data-secret=\"5iPkuobsRs\"><a href=\"https:\/\/staging.hk.digital\/en\/the-coordination-miracle-nothing-happens-without-firmware\/\">The coordination miracle: Nothing happens without firmware!<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/staging.hk.digital\/en\/the-coordination-miracle-nothing-happens-without-firmware\/embed\/#?secret=5iPkuobsRs\" width=\"500\" height=\"350\" title=\"&#8220;The coordination miracle: Nothing happens without firmware!&#8221; &#8212; HK.DIGITAL | IoT made real\" data-secret=\"5iPkuobsRs\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script>\n\/**\n * WordPress inline HTML embed\n *\n * @since 4.4.0\n * @output wp-includes\/js\/wp-embed.js\n *\n * Single line comments should not be used since they will break\n * the script when inlined in get_post_embed_html(), specifically\n * when the comments are not stripped out due to SCRIPT_DEBUG\n * being turned on.\n *\/\n(function ( window, document ) {\n\t'use strict';\\n\\n\t\/* Abort for ancient browsers. *\/\n\tif ( ! document.querySelector || ! window.addEventListener || typeof URL === 'undefined' ) {\n\t\treturn;\n\t}\\n\\n\t\/** @namespace wp *\/\n\twindow.wp = window.wp || {};\\n\\n\t\/* Abort if script was already executed. *\/\n\tif ( !! window.wp.receiveEmbedMessage ) {\n\t\treturn;\n\t}\\n\\n\t\/**\n\t * Receive embed message.\n\t *\n\t * @param {MessageEvent} e\n\t *\/\n\twindow.wp.receiveEmbedMessage = function( e ) {\n\t\tvar data = e.data;\\n\\n\t\t\/* Verify shape of message. *\/\n\t\tif (\n\t\t\t! ( data || data.secret || data.message || data.value ) ||\n\t\t\t\/[^a-zA-Z0-9]\/.test( data.secret )\n\t\t) {\n\t\t\treturn;\n\t\t}\\n\\n\t\tvar iframes = document.querySelectorAll( 'iframe[data-secret=\"' + data.secret + '\"]' ),\n\t\t\tblockquotes = document.querySelectorAll( 'blockquote[data-secret=\"' + data.secret + '\"]' ),\n\t\t\tallowedProtocols = new RegExp( '^https?:$', 'i' ),\n\t\t\ti, source, height, sourceURL, targetURL;\\n\\n\t\tfor ( i = 0; i < blockquotes.length; i++ ) {\n\t\t\tblockquotes[ i ].style.display = 'none';\n\t\t}\\n\\n\t\tfor ( i = 0; i < iframes.length; i++ ) {\n\t\t\tsource = iframes[ i ];\\n\\n\t\t\tif ( e.source !== source.contentWindow ) {\n\t\t\t\tcontinue;\n\t\t\t}\\n\\n\t\t\tsource.removeAttribute( 'style' );\\n\\n\t\t\tif ( 'height' === data.message ) {\n\t\t\t\t\/* Resize the iframe on request. *\/\n\t\t\t\theight = parseInt( data.value, 10 );\n\t\t\t\tif ( height > 1000 ) {\n\t\t\t\t\theight = 1000;\n\t\t\t\t} else if ( ~~height < 200 ) {\n\t\t\t\t\theight = 200;\n\t\t\t\t}\\n\\n\t\t\t\tsource.height = height;\n\t\t\t} else if ( 'link' === data.message ) {\n\t\t\t\t\/* Link to a specific URL on request. *\/\n\t\t\t\tsourceURL = new URL( source.getAttribute( 'src' ) );\n\t\t\t\ttargetURL = new URL( data.value );\\n\\n\t\t\t\tif (\n\t\t\t\t\tallowedProtocols.test( targetURL.protocol ) &&\n\t\t\t\t\ttargetURL.host === sourceURL.host &&\n\t\t\t\t\tdocument.activeElement === source\n\t\t\t\t) {\n\t\t\t\t\twindow.top.location.href = data.value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\\n\\n\tfunction onLoad() {\n\t\tvar iframes = document.querySelectorAll( 'iframe.wp-embedded-content' ),\n\t\t\ti, source, secret;\\n\\n\t\tfor ( i = 0; i < iframes.length; i++ ) {\n\t\t\t\/** @var {IframeElement} *\/\n\t\t\tsource = iframes[ i ];\\n\\n\t\t\tsecret = source.getAttribute( 'data-secret' );\n\t\t\tif ( ! secret ) {\n\t\t\t\t\/* Add secret to iframe *\/\n\t\t\t\tsecret = Math.random().toString( 36 ).substring( 2, 12 );\n\t\t\t\tsource.src += '#?secret=' + secret;\n\t\t\t\tsource.setAttribute( 'data-secret', secret );\n\t\t\t}\\n\\n\t\t\t\/*\n\t\t\t * Let post embed window know that the parent is ready for receiving the height message, in case the iframe\n\t\t\t * loaded before wp-embed.js was loaded. When the ready message is received by the post embed window, the\n\t\t\t * window will then (re-)send the height message right away.\n\t\t\t *\/\n\t\t\tsource.contentWindow.postMessage( {\n\t\t\t\tmessage: 'ready',\n\t\t\t\tsecret: secret\n\t\t\t}, '*' );\n\t\t}\n\t}\\n\\n\twindow.addEventListener( 'message', window.wp.receiveEmbedMessage, false );\n\tdocument.addEventListener( 'DOMContentLoaded', onLoad, false );\n})( window, document );\n\/\/# sourceURL=https:\/\/staging.hk.digital\/wp\/wp-includes\/js\/wp-embed.js\n<\/script>\n"},"_links":{"self":[{"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/posts\/15750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/comments?post=15750"}],"version-history":[{"count":0,"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/posts\/15750\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/media\/15775"}],"wp:attachment":[{"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/media?parent=15750"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/categories?post=15750"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/tags?post=15750"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/staging.hk.digital\/en\/wp-json\/wp\/v2\/series?post=15750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}