a385e-5 https://a385e5.wordpress.com Projects just for fun Wed, 02 May 2018 08:37:17 +0000 en 1.2 http://wordpress.com/ https://a385e5.wordpress.com whottgenroth wolfgang.hottgenroth@icloud.com 2710 allgemein 28627 embedded 79 hardware 2121118 iot 14706140 mbus 445979 server-side 243366 smarthome 1 uncategorized 14706142 nav_menu menu-1 http://wordpress.com/ https://s0.wp.com/i/buttonw-com.png a385e-5 https://a385e5.wordpress.com <link>https://a385e5.wordpress.com/2016/10/12/732/</link> <pubDate>Wed, 12 Oct 2016 08:07:24 +0000</pubDate> <dc:creator>whottgenroth</dc:creator> <guid isPermaLink="false">https://a385e5.wordpress.com/2016/10/12/732/</guid> <description/> <content:encoded><![CDATA[ ]]></content:encoded> <excerpt:encoded><![CDATA[]]></excerpt:encoded> <wp:post_id>732</wp:post_id> <wp:post_date>2016-10-12 08:07:24</wp:post_date> <wp:post_date_gmt>2016-10-12 08:07:24</wp:post_date_gmt> <wp:comment_status>closed</wp:comment_status> <wp:ping_status>closed</wp:ping_status> <wp:post_name>732</wp:post_name> <wp:status>publish</wp:status> <wp:post_parent>0</wp:post_parent> <wp:menu_order>4</wp:menu_order> <wp:post_type>nav_menu_item</wp:post_type> <wp:post_password/> <wp:is_sticky>0</wp:is_sticky> <category domain="nav_menu" nicename="menu-1"><![CDATA[Menu 1]]></category> <wp:postmeta> <wp:meta_key>_publicize_pending</wp:meta_key> <wp:meta_value><![CDATA[1]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_type</wp:meta_key> <wp:meta_value><![CDATA[post_type]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_object_id</wp:meta_key> <wp:meta_value><![CDATA[309]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_menu_item_parent</wp:meta_key> <wp:meta_value><![CDATA[0]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_object</wp:meta_key> <wp:meta_value><![CDATA[page]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_target</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_xfn</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_url</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_classes</wp:meta_key> <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> </wp:postmeta> </item> <item> <title>Poor man's op amp selection guide https://a385e5.wordpress.com/2016/10/12/poor-mans-op-amp-selection-guide/ Wed, 12 Oct 2016 08:07:25 +0000 whottgenroth https://a385e5.wordpress.com/2016/10/12/poor-mans-op-amp-selection-guide/ 733 2016-10-12 08:07:25 2016-10-12 08:07:25 closed closed poor-mans-op-amp-selection-guide publish 0 5 nav_menu_item 0 _publicize_pending _menu_item_type _menu_item_menu_item_parent _menu_item_object_id _menu_item_object _menu_item_target _menu_item_xfn _menu_item_url _menu_item_classes Impressum / other profiles https://a385e5.wordpress.com/impressum/ Wed, 26 Jun 2013 13:45:51 +0000 whottgenroth http://a385e-5.de/?page_id=2 https://gitlab.com/wolutator https://www.xing.com/profile/Wolfgang_Hottgenroth https://twitter.com/wollud1969]]> 5 2013-06-26 13:45:51 2013-06-26 13:45:51 open open impressum publish 0 0 page 0 _oembed_dc2d898caed5411000fa81558aecf45a _publicize_pending _wp_page_template _edit_last original_post_id _wp_old_slug _oembed_5c78eaa2642fb8f2eb1cc6e2a4c65774 geo_public 1 biuro@media-serwis.pl http://media-serwis.pl 212.67.155.70 2015-11-09 12:49:53 2015-11-09 10:49:53 1 0 0 2 busallamasyon@outlook.com 151.250.59.102 2016-01-06 18:50:51 2016-01-06 16:50:51 1 0 0 3 wollud@a385e-5.de 85.115.56.180 2016-03-01 11:24:08 2016-03-01 09:24:08 1 2 88446352 4 wollud@a385e-5.de 85.115.56.180 2016-03-01 11:26:07 2016-03-01 09:26:07 1 1 88446352 Poor man's op amp selection guide https://a385e5.wordpress.com/poor-mans-op-amp-selection-guide/ Tue, 14 Jan 2014 14:52:58 +0000 whottgenroth http://a385e-5.de/?page_id=284 TL072 General purpose JFET op. Wide supply voltage range (+/- 18V). No rail-to-rail operation. Considerable input offset voltage (3mV). TS912 Rail-to-rail MOSFET op. Limited supply voltage range of 16V. Considerable input offset voltage (5mV). LM358 Rail-to-ground operation, supply voltage up to 32V. Input offset voltage 2mV. LT1013 Rail-to-ground operation, wide supply voltage range, up to +/- 22V. A bit expensive. Low input offset voltage (60uV) ICL7650 Chopper-stabilized OP. Very low input offset voltage (1uV), limited supply voltage range +/-9V (total 18V).]]> 284 2014-01-14 14:52:58 2014-01-14 14:52:58 closed closed poor-mans-op-amp-selection-guide publish 0 0 page 0 _publicize_pending _edit_last _wp_page_template original_post_id _wp_old_slug Home https://a385e5.wordpress.com/2016/10/11/home/ Tue, 11 Oct 2016 14:57:12 +0000 whottgenroth https://a385e5.wordpress.com/2016/10/11/home 285 2016-10-11 14:57:12 2016-10-11 14:57:12 closed closed home publish 0 1 nav_menu_item 0 _publicize_pending _menu_item_type _menu_item_menu_item_parent _menu_item_object_id _menu_item_object _menu_item_target _menu_item_classes _menu_item_xfn _menu_item_url <link>https://a385e5.wordpress.com/2016/10/11/286/</link> <pubDate>Tue, 11 Oct 2016 14:57:12 +0000</pubDate> <dc:creator>whottgenroth</dc:creator> <guid isPermaLink="false">https://a385e5.wordpress.com/2016/10/11</guid> <description/> <content:encoded><![CDATA[ ]]></content:encoded> <excerpt:encoded><![CDATA[]]></excerpt:encoded> <wp:post_id>286</wp:post_id> <wp:post_date>2016-10-11 14:57:12</wp:post_date> <wp:post_date_gmt>2016-10-11 14:57:12</wp:post_date_gmt> <wp:comment_status>closed</wp:comment_status> <wp:ping_status>closed</wp:ping_status> <wp:post_name>286</wp:post_name> <wp:status>publish</wp:status> <wp:post_parent>0</wp:post_parent> <wp:menu_order>3</wp:menu_order> <wp:post_type>nav_menu_item</wp:post_type> <wp:post_password/> <wp:is_sticky>0</wp:is_sticky> <category domain="nav_menu" nicename="menu-1"><![CDATA[Menu 1]]></category> <wp:postmeta> <wp:meta_key>_publicize_pending</wp:meta_key> <wp:meta_value><![CDATA[1]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_type</wp:meta_key> <wp:meta_value><![CDATA[post_type]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_menu_item_parent</wp:meta_key> <wp:meta_value><![CDATA[0]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_object_id</wp:meta_key> <wp:meta_value><![CDATA[5]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_object</wp:meta_key> <wp:meta_value><![CDATA[page]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_target</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_classes</wp:meta_key> <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_xfn</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_url</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> </item> <item> <title>Interesting parts https://a385e5.wordpress.com/interesting-parts/ Tue, 14 Jan 2014 15:03:35 +0000 whottgenroth http://a385e-5.de/?page_id=309
  • All the op-amps in the Poor man's op amp selection guide
  • LF398 - Sample and Hold Circuit
  • LM2577 - Step-Up Converter (3A in-current)
  • L4962 - 1.5A Step-Down Converter
  • MAX187 - 12bit ADC with SPI interface
  • LTC1257 - 12bit DAC with SPI interface
  • BS108 - small MOSFET transistor
  • BF245 - small JFET transistor
  • MAX3100 - UART with SPI interface
  • L293D - dual full H bridge driver with recovery diodes (600mA)
  • L298 - dual full H bridge driver (4A)
  • L297 - Stepper Motor Controller
  • AD633 - Analog Multiplier
  • All kinds of Arduino boards, specifically Arduino Uno, Arduino Mega, Arduino Ethernet, Arduino Micro, Arduino Due, Teensy, Netduino
  • AD7190 - four channel 24bit ADC with SPI interface
  • TSS721A - MeterBus client transceiver
  • MAX485 - Transceiver for RS485
  • ]]>
    309 2014-01-14 15:03:35 2014-01-14 15:03:35 closed closed interesting-parts publish 0 0 page 0 _publicize_pending _edit_last _wp_page_template original_post_id _wp_old_slug
    tuned https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/tuned/ Mon, 15 Dec 2014 12:48:17 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/tuned.png 518 2014-12-15 14:48:17 2014-12-15 12:48:17 closed closed tuned inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/tuned.png pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url drain https://a385e5.wordpress.com/2015/01/01/a-small-royer-induction-heater/drain/ Thu, 01 Jan 2015 19:31:43 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/01/drain.png 568 2015-01-01 21:31:43 2015-01-01 19:31:43 open open drain inherit 564 0 attachment 0 https://a385e5.files.wordpress.com/2015/01/drain.png pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url scan_006379 https://a385e5.wordpress.com/2015/01/01/a-small-royer-induction-heater/scan_006379/ Thu, 01 Jan 2015 19:38:25 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/01/scan_006379.png 571 2015-01-01 21:38:25 2015-01-01 19:38:25 open open scan_006379 inherit 564 0 attachment 0 https://a385e5.files.wordpress.com/2015/01/scan_006379.png pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2600 https://a385e5.wordpress.com/2014/12/11/measuring-the-speed-of-a-salad-spinner/img_2600/ Thu, 11 Dec 2014 14:07:01 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2600.jpg 508 2014-12-11 16:07:01 2014-12-11 14:07:01 open open img_2600 inherit 506 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2600.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url big-fat-iron https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/big-fat-iron/ Mon, 15 Dec 2014 19:27:19 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/big-fat-iron.png 546 2014-12-15 21:27:19 2014-12-15 19:27:19 closed closed big-fat-iron inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/big-fat-iron.png pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url IMG_3258 https://a385e5.wordpress.com/2015/06/05/relaybox/img_3258/ Fri, 05 Jun 2015 10:58:01 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/img_3258.png 624 2015-06-05 12:58:01 2015-06-05 10:58:01 open open img_3258 inherit 620 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/img_3258.png pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url kupfer-hochkant https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/kupfer-hochkant/ Mon, 15 Dec 2014 19:18:18 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/kupfer-hochkant.png 541 2014-12-15 21:18:18 2014-12-15 19:18:18 closed closed kupfer-hochkant inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/kupfer-hochkant.png pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url cropped-IMG_2629.jpg https://a385e5.wordpress.com/cropped-img_2629-jpg/ Fri, 05 Jun 2015 11:36:26 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/cropped-img_2629.jpg 648 2015-06-05 13:36:26 2015-06-05 11:36:26 open open cropped-img_2629-jpg inherit 0 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/cropped-img_2629.jpg pre_import_post_parent pre_import_post_id _wp_attachment_context _wp_attachment_custom_header_last_used_twentythirteen _wp_attachment_is_custom_header _original_import_url cropped-IMG_26291.jpg https://a385e5.wordpress.com/cropped-img_26291-jpg/ Fri, 05 Jun 2015 12:10:00 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/cropped-img_26291.jpg 660 2015-06-05 14:10:00 2015-06-05 12:10:00 open open cropped-img_26291-jpg inherit 0 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/cropped-img_26291.jpg pre_import_post_parent pre_import_post_id _wp_attachment_context _wp_attachment_custom_header_last_used_twentytwelve _wp_attachment_is_custom_header _original_import_url kupfer-flach https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/kupfer-flach/ Mon, 15 Dec 2014 19:06:49 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/kupfer-flach.png 535 2014-12-15 21:06:49 2014-12-15 19:06:49 closed closed kupfer-flach inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/kupfer-flach.png pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url zinn https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/zinn/ Mon, 15 Dec 2014 19:25:20 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/zinn.png 543 2014-12-15 21:25:20 2014-12-15 19:25:20 closed closed zinn inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/zinn.png pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url IMG_2723 https://a385e5.wordpress.com/2015/01/01/a-small-royer-induction-heater/img_2723/ Thu, 01 Jan 2015 19:28:11 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/01/img_2723.jpg 565 2015-01-01 21:28:11 2015-01-01 19:28:11 open open img_2723 inherit 564 0 attachment 0 https://a385e5.files.wordpress.com/2015/01/img_2723.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url grosse-mutter https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/grosse-mutter/ Mon, 15 Dec 2014 19:26:40 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/grosse-mutter.png 544 2014-12-15 21:26:40 2014-12-15 19:26:40 closed closed grosse-mutter inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/grosse-mutter.png pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url cropped-IMG_26294.jpg https://a385e5.wordpress.com/cropped-img_26294-jpg/ Fri, 05 Jun 2015 12:16:42 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/cropped-img_26294.jpg 663 2015-06-05 14:16:42 2015-06-05 12:16:42 open open cropped-img_26294-jpg inherit 0 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/cropped-img_26294.jpg pre_import_post_parent pre_import_post_id _wp_attachment_context _wp_attachment_custom_header_last_used_twentyfourteen _wp_attachment_is_custom_header _original_import_url IMG_2944 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2944/ Tue, 17 Mar 2015 15:38:56 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2944-e1426606813947.jpg 583 2015-03-17 17:38:56 2015-03-17 15:38:56 open open img_2944 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2944-e1426606813947.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2945 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2945/ Tue, 17 Mar 2015 15:38:26 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2945-e1426606881884.jpg 576 2015-03-17 17:38:26 2015-03-17 15:38:26 open open img_2945 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2945-e1426606881884.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url cropped-IMG_26292.jpg https://a385e5.wordpress.com/cropped-img_26292-jpg/ Fri, 05 Jun 2015 12:12:53 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/cropped-img_26292.jpg 661 2015-06-05 14:12:53 2015-06-05 12:12:53 open open cropped-img_26292-jpg inherit 0 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/cropped-img_26292.jpg pre_import_post_parent pre_import_post_id _wp_attachment_context _wp_attachment_custom_header_last_used_twentyfourteen _wp_attachment_is_custom_header _original_import_url IMG_2946 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2946/ Tue, 17 Mar 2015 15:38:29 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2946-e1426606909895.jpg 577 2015-03-17 17:38:29 2015-03-17 15:38:29 open open img_2946 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2946-e1426606909895.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2942 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2942/ Tue, 17 Mar 2015 15:38:47 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2942-e1426607103291.jpg 581 2015-03-17 17:38:47 2015-03-17 15:38:47 open open img_2942 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2942-e1426607103291.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2948 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2948/ Tue, 17 Mar 2015 15:38:38 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2948-e1426606963504.jpg 579 2015-03-17 17:38:38 2015-03-17 15:38:38 open open img_2948 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2948-e1426606963504.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2621 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2621/ Mon, 15 Dec 2014 19:31:12 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2621.jpg 551 2014-12-15 21:31:12 2014-12-15 19:31:12 closed closed img_2621 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2621.jpg pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url IMG_2947 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2947/ Tue, 17 Mar 2015 15:38:34 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2947-e1426607276880.jpg 578 2015-03-17 17:38:34 2015-03-17 15:38:34 open open img_2947 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2947-e1426607276880.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url Bildschirmfoto 2016-03-03 um 21.48.49 https://a385e5.wordpress.com/2016/03/03/why-always-spi-cs-on-pin-10/bildschirmfoto-2016-03-03-um-21-48-49/ Thu, 03 Mar 2016 20:52:13 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/03/bildschirmfoto-2016-03-03-um-21-48-49.png 711 2016-03-03 22:52:13 2016-03-03 20:52:13 open closed bildschirmfoto-2016-03-03-um-21-48-49 inherit 710 0 attachment 0 https://a385e5.files.wordpress.com/2016/03/bildschirmfoto-2016-03-03-um-21-48-49.png pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_3151 https://a385e5.wordpress.com/2015/06/05/wifi-powermeter/img_3151/ Fri, 05 Jun 2015 09:31:18 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/img_3151.jpg 593 2015-06-05 11:31:18 2015-06-05 09:31:18 open open img_3151 inherit 588 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/img_3151.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2943 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2943/ Tue, 17 Mar 2015 15:38:52 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2943-e1426607017130.jpg 582 2015-03-17 17:38:52 2015-03-17 15:38:52 open open img_2943 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2943-e1426607017130.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url scan_006894 https://a385e5.wordpress.com/2015/09/14/first-esp8266-project-wifi-power-switch/scan_006894/ Mon, 14 Sep 2015 20:11:18 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/09/scan_006894.png 675 2015-09-14 22:11:18 2015-09-14 20:11:18 open closed scan_006894 inherit 671 0 attachment 0 https://a385e5.files.wordpress.com/2015/09/scan_006894.png pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2941 https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/img_2941/ Tue, 17 Mar 2015 15:38:42 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/03/img_2941-e1426606766331.jpg 580 2015-03-17 17:38:42 2015-03-17 15:38:42 open open img_2941 inherit 575 0 attachment 0 https://a385e5.files.wordpress.com/2015/03/img_2941-e1426606766331.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url cropped-IMG_26293.jpg https://a385e5.wordpress.com/cropped-img_26293-jpg/ Fri, 05 Jun 2015 12:14:58 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/cropped-img_26293.jpg 662 2015-06-05 14:14:58 2015-06-05 12:14:58 open open cropped-img_26293-jpg inherit 0 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/cropped-img_26293.jpg pre_import_post_parent pre_import_post_id _wp_attachment_context _wp_attachment_custom_header_last_used_twentyfifteen _wp_attachment_is_custom_header _original_import_url IMG_2625 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2625/ Mon, 15 Dec 2014 13:54:54 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2625-e1418651748893.jpg 526 2014-12-15 15:54:54 2014-12-15 13:54:54 open open img_2625 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2625-e1418651748893.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2632 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2632/ Mon, 15 Dec 2014 13:57:21 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2632-e1418651859564.jpg 529 2014-12-15 15:57:21 2014-12-15 13:57:21 open open img_2632 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2632-e1418651859564.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2633 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2633/ Mon, 15 Dec 2014 13:57:56 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2633-e1418651893112.jpg 530 2014-12-15 15:57:56 2014-12-15 13:57:56 open open img_2633 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2633-e1418651893112.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2611 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2611/ Mon, 15 Dec 2014 14:00:35 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2611-e1418652448861.jpg 531 2014-12-15 16:00:35 2014-12-15 14:00:35 open open img_2611 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2611-e1418652448861.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2627 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2627/ Mon, 15 Dec 2014 13:56:39 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2627-e1418651817610.jpg 528 2014-12-15 15:56:39 2014-12-15 13:56:39 closed closed img_2627 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2627-e1418651817610.jpg pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url IMG_2616 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2616/ Mon, 15 Dec 2014 19:30:00 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2616.jpg 549 2014-12-15 21:30:00 2014-12-15 19:30:00 open open img_2616 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2616.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2626 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2626/ Mon, 15 Dec 2014 13:56:03 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2626-e1418651784788.jpg 527 2014-12-15 15:56:03 2014-12-15 13:56:03 open open img_2626 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2626-e1418651784788.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url scan_006894_1 https://a385e5.wordpress.com/2015/09/14/first-esp8266-project-wifi-power-switch/scan_006894_1/ Mon, 14 Sep 2015 20:11:21 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/09/scan_006894_1.pdf 676 2015-09-14 22:11:21 2015-09-14 20:11:21 open closed scan_006894_1 inherit 671 0 attachment 0 https://a385e5.files.wordpress.com/2015/09/scan_006894_1.pdf pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2629 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2629/ Mon, 15 Dec 2014 19:05:05 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2629.jpg 532 2014-12-15 21:05:05 2014-12-15 19:05:05 open open img_2629 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2629.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_2631 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2631/ Mon, 15 Dec 2014 19:18:10 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2631.jpg 540 2014-12-15 21:18:10 2014-12-15 19:18:10 closed closed img_2631 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2631.jpg pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url IMG_2633 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2633-2/ Mon, 15 Dec 2014 19:27:06 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_26331.jpg 545 2014-12-15 21:27:06 2014-12-15 19:27:06 closed closed img_2633-2 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_26331.jpg pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url IMG_2632 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2632-2/ Mon, 15 Dec 2014 19:06:29 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_26321.jpg 534 2014-12-15 21:06:29 2014-12-15 19:06:29 closed closed img_2632-2 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_26321.jpg pre_import_post_parent pre_import_post_id _edit_last _attachment_original_parent_id _original_import_url IMG_2630 https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/img_2630/ Mon, 15 Dec 2014 19:05:42 +0000 whottgenroth http://a385e5.files.wordpress.com/2014/12/img_2630.jpg 533 2014-12-15 21:05:42 2014-12-15 19:05:42 open open img_2630 inherit 513 0 attachment 0 https://a385e5.files.wordpress.com/2014/12/img_2630.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url 201609091558_0002 https://a385e5.wordpress.com/2016/09/09/integrated-thermometer-and-timer/201609091558_0002/ Fri, 09 Sep 2016 15:02:13 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/09/201609091558_0002.pdf 726 2016-09-09 17:02:13 2016-09-09 15:02:13 open closed 201609091558_0002 inherit 718 0 attachment 0 https://a385e5.files.wordpress.com/2016/09/201609091558_0002.pdf pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url 201609091558_0001 https://a385e5.wordpress.com/2016/09/09/integrated-thermometer-and-timer/201609091558_0001/ Fri, 09 Sep 2016 15:02:00 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/09/201609091558_0001.pdf 725 2016-09-09 17:02:00 2016-09-09 15:02:00 open closed 201609091558_0001 inherit 718 0 attachment 0 https://a385e5.files.wordpress.com/2016/09/201609091558_0001.pdf pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_3805 https://a385e5.wordpress.com/2015/09/14/first-esp8266-project-wifi-power-switch/img_3805/ Mon, 14 Sep 2015 07:23:01 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/09/img_3805.jpg 672 2015-09-14 09:23:01 2015-09-14 07:23:01 open closed img_3805 inherit 671 0 attachment 0 https://a385e5.files.wordpress.com/2015/09/img_3805.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_3234 https://a385e5.wordpress.com/2015/06/05/relaybox/img_3234/ Fri, 05 Jun 2015 10:45:08 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/img_3234.jpg 621 2015-06-05 12:45:08 2015-06-05 10:45:08 open open img_3234 inherit 620 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/img_3234.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_1211 https://a385e5.wordpress.com/2016/03/03/why-always-spi-cs-on-pin-10/img_1211/ Thu, 03 Mar 2016 21:00:02 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/03/img_1211-e1457038834523.jpg 712 2016-03-03 23:00:02 2016-03-03 21:00:02 open closed img_1211 inherit 710 0 attachment 0 https://a385e5.files.wordpress.com/2016/03/img_1211-e1457038834523.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_1212 https://a385e5.wordpress.com/2016/03/03/why-always-spi-cs-on-pin-10/img_1212/ Thu, 03 Mar 2016 21:04:32 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/03/img_1212-e1457039094609.jpg 713 2016-03-03 23:04:32 2016-03-03 21:04:32 open closed img_1212 inherit 710 0 attachment 0 https://a385e5.files.wordpress.com/2016/03/img_1212-e1457039094609.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_3235 https://a385e5.wordpress.com/2015/06/05/relaybox/img_3235/ Fri, 05 Jun 2015 10:45:19 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/img_3235.jpg 622 2015-06-05 12:45:19 2015-06-05 10:45:19 open open img_3235 inherit 620 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/img_3235.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_3167 https://a385e5.wordpress.com/2015/06/05/revisiting-the-meterbus-master/img_3167/ Fri, 05 Jun 2015 10:14:14 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/img_3167.jpg 605 2015-06-05 12:14:14 2015-06-05 10:14:14 open open img_3167 inherit 603 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/img_3167.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_3814 https://a385e5.wordpress.com/2015/09/14/first-esp8266-project-wifi-power-switch/img_3814/ Wed, 16 Sep 2015 14:24:18 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/09/img_3814.jpg 688 2015-09-16 16:24:18 2015-09-16 14:24:18 open closed img_3814 inherit 671 0 attachment 0 https://a385e5.files.wordpress.com/2015/09/img_3814.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url IMG_3168 https://a385e5.wordpress.com/2015/06/05/revisiting-the-meterbus-master/img_3168/ Fri, 05 Jun 2015 10:14:07 +0000 whottgenroth http://a385e5.files.wordpress.com/2015/06/img_3168.jpg 604 2015-06-05 12:14:07 2015-06-05 10:14:07 open open img_3168 inherit 603 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/img_3168.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url img_0813 https://a385e5.wordpress.com/2016/09/09/integrated-thermometer-and-timer/img_0813/ Fri, 09 Sep 2016 14:53:37 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/09/img_0813-e1473432862286.jpg 720 2016-09-09 16:53:37 2016-09-09 14:53:37 open closed img_0813 inherit 718 0 attachment 0 https://a385e5.files.wordpress.com/2016/09/img_0813-e1473432862286.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url img_0821 https://a385e5.wordpress.com/2016/09/12/integrated-tea-timer-and-thermometer-second-edition/img_0821/ Mon, 12 Sep 2016 10:48:07 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/09/img_0821-e1473677332189.jpg 731 2016-09-12 12:48:07 2016-09-12 10:48:07 open closed img_0821 inherit 729 0 attachment 0 https://a385e5.files.wordpress.com/2016/09/img_0821-e1473677332189.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url img_0814 https://a385e5.wordpress.com/2016/09/09/integrated-thermometer-and-timer/img_0814/ Fri, 09 Sep 2016 14:53:44 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/09/img_0814.jpg 721 2016-09-09 16:53:44 2016-09-09 14:53:44 open closed img_0814 inherit 718 0 attachment 0 https://a385e5.files.wordpress.com/2016/09/img_0814.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url img_0818 https://a385e5.wordpress.com/2016/09/12/integrated-tea-timer-and-thermometer-second-edition/img_0818/ Mon, 12 Sep 2016 10:48:00 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/09/img_0818-e1473677307841.jpg 730 2016-09-12 12:48:00 2016-09-12 10:48:00 open closed img_0818 inherit 729 0 attachment 0 https://a385e5.files.wordpress.com/2016/09/img_0818-e1473677307841.jpg pre_import_post_parent pre_import_post_id _attachment_original_parent_id _original_import_url cropped-cropped-img_26294.jpg https://a385e5.wordpress.com/cropped-cropped-img_26294-jpg/ Wed, 12 Oct 2016 12:18:22 +0000 whottgenroth https://a385e5.files.wordpress.com/2015/06/cropped-cropped-img_26294.jpg 736 2016-10-12 12:18:22 2016-10-12 12:18:22 open closed cropped-cropped-img_26294-jpg inherit 0 0 attachment 0 https://a385e5.files.wordpress.com/2015/06/cropped-cropped-img_26294.jpg _wp_attachment_custom_header_last_used_pub/sapor _wp_attachment_context _wp_attachment_is_custom_header cropped-img_2723.jpg https://a385e5.wordpress.com/cropped-img_2723-jpg/ Wed, 12 Oct 2016 12:19:02 +0000 whottgenroth https://a385e5.files.wordpress.com/2015/01/cropped-img_2723.jpg 737 2016-10-12 12:19:02 2016-10-12 12:19:02 open closed cropped-img_2723-jpg inherit 0 0 attachment 0 https://a385e5.files.wordpress.com/2015/01/cropped-img_2723.jpg _wp_attachment_context _wp_attachment_custom_header_last_used_pub/sapor _wp_attachment_is_custom_header img_0053 https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/img_0053/ Fri, 14 Oct 2016 09:34:20 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/img_0053.jpg 740 2016-10-14 09:34:20 2016-10-14 09:34:20 open closed img_0053 inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/img_0053.jpg img_0054 https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/img_0054/ Fri, 14 Oct 2016 09:34:25 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/img_0054.jpg 741 2016-10-14 09:34:25 2016-10-14 09:34:25 open closed img_0054 inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/img_0054-e1476437702547.jpg _wp_attachment_backup_sizes img_0055 https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/img_0055/ Fri, 14 Oct 2016 09:34:28 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/img_0055.jpg 742 2016-10-14 09:34:28 2016-10-14 09:34:28 open closed img_0055 inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/img_0055-e1476437685461.jpg _wp_attachment_backup_sizes img_0056 https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/img_0056/ Fri, 14 Oct 2016 09:34:31 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/img_0056.jpg 743 2016-10-14 09:34:31 2016-10-14 09:34:31 open closed img_0056 inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/img_0056.jpg 2016-10-13_works https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/2016-10-13_works/ Fri, 14 Oct 2016 09:53:36 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/2016-10-13_works.png 753 2016-10-14 09:53:36 2016-10-14 09:53:36 open closed 2016-10-13_works inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/2016-10-13_works.png 2016-10-13_works_not https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/2016-10-13_works_not/ Fri, 14 Oct 2016 09:53:37 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/2016-10-13_works_not.png 754 2016-10-14 09:53:37 2016-10-14 09:53:37 open closed 2016-10-13_works_not inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/2016-10-13_works_not.png 2016-10-13_1 https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/2016-10-13_1/ Fri, 14 Oct 2016 09:58:00 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/2016-10-13_1.png 757 2016-10-14 09:58:00 2016-10-14 09:58:00 open closed 2016-10-13_1 inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/2016-10-13_1.png inverter0_2016-09-23-4 https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/inverter0_2016-09-23-4/ Fri, 14 Oct 2016 10:00:13 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/10/inverter0_2016-09-23-4.png 759 2016-10-14 10:00:13 2016-10-14 10:00:13 open closed inverter0_2016-09-23-4 inherit 739 0 attachment 0 https://a385e5.files.wordpress.com/2016/10/inverter0_2016-09-23-4.png img_0111 https://a385e5.wordpress.com/2016/11/02/something-really-useful-433mhz-power-outlet-control/img_0111/ Wed, 02 Nov 2016 11:42:53 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/11/img_0111.jpg 799 2016-11-02 11:42:53 2016-11-02 11:42:53 open closed img_0111 inherit 763 0 attachment 0 https://a385e5.files.wordpress.com/2016/11/img_0111-e1478087101747.jpg _wp_attachment_backup_sizes img_0100 https://a385e5.wordpress.com/2016/11/02/something-really-useful-433mhz-power-outlet-control/img_0100/ Wed, 02 Nov 2016 11:49:18 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/11/img_0100.jpg 803 2016-11-02 11:49:18 2016-11-02 11:49:18 open closed img_0100 inherit 763 0 attachment 0 https://a385e5.files.wordpress.com/2016/11/img_0100-e1478087375824.jpg _wp_attachment_backup_sizes sender_receiver https://a385e5.wordpress.com/2016/11/02/something-really-useful-433mhz-power-outlet-control/sender_receiver/ Wed, 02 Nov 2016 11:16:33 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/11/sender_receiver.png 775 2016-11-02 11:16:33 2016-11-02 11:16:33 open closed sender_receiver inherit 763 0 attachment 0 https://a385e5.files.wordpress.com/2016/11/sender_receiver.png img_0105 https://a385e5.wordpress.com/2016/11/02/something-really-useful-433mhz-power-outlet-control/img_0105/ Wed, 02 Nov 2016 11:20:57 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/11/img_0105.jpg 784 2016-11-02 11:20:57 2016-11-02 11:20:57 open closed img_0105 inherit 763 0 attachment 0 https://a385e5.files.wordpress.com/2016/11/img_0105.jpg img_0101 https://a385e5.wordpress.com/2016/11/02/something-really-useful-433mhz-power-outlet-control/img_0101/ Wed, 02 Nov 2016 11:36:54 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/11/img_01012.jpg 791 2016-11-02 11:36:54 2016-11-02 11:36:54 open closed img_0101 inherit 763 0 attachment 0 https://a385e5.files.wordpress.com/2016/11/img_01012-e1478087121580.jpg _wp_attachment_backup_sizes img_0140 https://a385e5.wordpress.com/2016/12/19/three-phase-inverter-second-service/img_0140/ Mon, 19 Dec 2016 09:52:10 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/12/img_0140.jpg 815 2016-12-19 09:52:10 2016-12-19 09:52:10 open closed img_0140 inherit 808 0 attachment 0 https://a385e5.files.wordpress.com/2016/12/img_0140.jpg img_0144 https://a385e5.wordpress.com/2016/12/19/three-phase-inverter-second-service/img_0144/ Mon, 19 Dec 2016 09:55:18 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/12/img_0144.jpg 820 2016-12-19 09:55:18 2016-12-19 09:55:18 open closed img_0144 inherit 808 0 attachment 0 https://a385e5.files.wordpress.com/2016/12/img_0144.jpg img_0146 https://a385e5.wordpress.com/2016/12/19/three-phase-inverter-second-service/img_0146/ Mon, 19 Dec 2016 09:57:50 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/12/img_0146.jpg 825 2016-12-19 09:57:50 2016-12-19 09:57:50 open closed img_0146 inherit 808 0 attachment 0 https://a385e5.files.wordpress.com/2016/12/img_0146.jpg img_0143 https://a385e5.wordpress.com/2016/12/19/three-phase-inverter-second-service/img_0143/ Mon, 19 Dec 2016 09:59:12 +0000 whottgenroth http://a385e5.files.wordpress.com/2016/12/img_0143.jpg 830 2016-12-19 09:59:12 2016-12-19 09:59:12 open closed img_0143 inherit 808 0 attachment 0 https://a385e5.files.wordpress.com/2016/12/img_0143-e1482141676335.jpg _wp_attachment_backup_sizes rpi_ss1 https://a385e5.wordpress.com/?attachment_id=838 Mon, 03 Jul 2017 17:49:01 +0000 whottgenroth http://a385e5.files.wordpress.com/2017/07/rpi_ss1.png 838 2017-07-03 17:49:01 2017-07-03 17:49:01 open closed rpi_ss1 inherit 837 0 attachment 0 https://a385e5.files.wordpress.com/2017/07/rpi_ss1.png IMG_0594 https://a385e5.wordpress.com/?attachment_id=840 Mon, 03 Jul 2017 17:51:16 +0000 whottgenroth http://a385e5.files.wordpress.com/2017/07/img_0594.jpg 840 2017-07-03 17:51:16 2017-07-03 17:51:16 open closed img_0594 inherit 837 0 attachment 0 https://a385e5.files.wordpress.com/2017/07/img_0594.jpg Foto-am-30.06.13-um-20.02 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/foto-am-30-06-13-um-20-02/ Tue, 06 Feb 2018 15:55:29 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/foto-am-30-06-13-um-20-02.jpg 856 2018-02-06 15:55:29 2018-02-06 15:55:29 open closed foto-am-30-06-13-um-20-02 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/foto-am-30-06-13-um-20-02.jpg Foto-am-30.06.13-um-20.02 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/foto-am-30-06-13-um-20-02-2/ Tue, 06 Feb 2018 15:57:26 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/foto-am-30-06-13-um-20-021.jpg 857 2018-02-06 15:57:26 2018-02-06 15:57:26 open closed foto-am-30-06-13-um-20-02-2 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/foto-am-30-06-13-um-20-021.jpg scan_005006-1024x654 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/scan_005006-1024x654/ Tue, 06 Feb 2018 15:58:13 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/scan_005006-1024x654.jpg 858 2018-02-06 15:58:13 2018-02-06 15:58:13 open closed scan_005006-1024x654 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/scan_005006-1024x654.jpg scan_005006_6 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/scan_005006_6/ Tue, 06 Feb 2018 15:59:17 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/scan_005006_6.jpg 860 2018-02-06 15:59:17 2018-02-06 15:59:17 open closed scan_005006_6 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/scan_005006_6.jpg scan_005006_5-1024x717 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/scan_005006_5-1024x717/ Tue, 06 Feb 2018 15:59:27 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/scan_005006_5-1024x717.jpg 861 2018-02-06 15:59:27 2018-02-06 15:59:27 open closed scan_005006_5-1024x717 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/scan_005006_5-1024x717.jpg scan_005006_4 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/scan_005006_4/ Tue, 06 Feb 2018 16:00:08 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/scan_005006_4.jpg 862 2018-02-06 16:00:08 2018-02-06 16:00:08 open closed scan_005006_4 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/scan_005006_4.jpg scan_005006_3 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/scan_005006_3/ Tue, 06 Feb 2018 16:00:31 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/scan_005006_3.jpg 864 2018-02-06 16:00:31 2018-02-06 16:00:31 open closed scan_005006_3 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/scan_005006_3.jpg scan_005006_2-1024x553 https://a385e5.wordpress.com/2013/07/01/just-another-theremin/scan_005006_2-1024x553/ Tue, 06 Feb 2018 16:00:44 +0000 whottgenroth http://a385e5.files.wordpress.com/2013/07/scan_005006_2-1024x553.jpg 865 2018-02-06 16:00:44 2018-02-06 16:00:44 open closed scan_005006_2-1024x553 inherit 56 0 attachment 0 https://a385e5.files.wordpress.com/2013/07/scan_005006_2-1024x553.jpg IMG_0304 https://a385e5.wordpress.com/2018/02/22/home-automation-hub/img_0304/ Thu, 22 Feb 2018 17:40:19 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/02/img_0304.jpg 872 2018-02-22 17:40:19 2018-02-22 17:40:19 open closed img_0304 inherit 871 0 attachment 0 https://a385e5.files.wordpress.com/2018/02/img_0304.jpg IMG_0195 https://a385e5.wordpress.com/2018/02/22/home-automation-hub/img_0195/ Thu, 22 Feb 2018 17:43:53 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/02/img_0195.jpg 873 2018-02-22 17:43:53 2018-02-22 17:43:53 open closed img_0195 inherit 871 0 attachment 0 https://a385e5.files.wordpress.com/2018/02/img_0195.jpg IMG_0307 https://a385e5.wordpress.com/2018/02/22/home-automation-hub/img_0307/ Thu, 22 Feb 2018 17:51:30 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/02/img_0307.jpg 876 2018-02-22 17:51:30 2018-02-22 17:51:30 open closed img_0307 inherit 871 0 attachment 0 https://a385e5.files.wordpress.com/2018/02/img_0307.jpg IMG_0308 https://a385e5.wordpress.com/2018/02/22/home-automation-hub/img_0308/ Thu, 22 Feb 2018 18:04:32 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/02/img_0308.jpg 881 2018-02-22 18:04:32 2018-02-22 18:04:32 open closed img_0308 inherit 871 0 attachment 0 https://a385e5.files.wordpress.com/2018/02/img_0308.jpg git-signing-3 https://a385e5.wordpress.com/?attachment_id=899 Mon, 26 Mar 2018 16:29:44 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/03/git-signing-3.png 899 2018-03-26 16:29:44 2018-03-26 16:29:44 open closed git-signing-3 inherit 896 0 attachment 0 https://a385e5.files.wordpress.com/2018/03/git-signing-3.png 20180430110848869_0001 https://a385e5.wordpress.com/2018/04/30/yet-another-debouncing-method/20180430110848869_0001/ Mon, 30 Apr 2018 09:17:35 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/04/20180430110848869_0001.jpg 901 2018-04-30 09:17:35 2018-04-30 09:17:35 open closed 20180430110848869_0001 inherit 900 0 attachment 0 https://a385e5.files.wordpress.com/2018/04/20180430110848869_0001.jpg <link>https://a385e5.wordpress.com/2018/03/21/889/</link> <pubDate>Wed, 21 Mar 2018 12:15:48 +0000</pubDate> <dc:creator>whottgenroth</dc:creator> <guid isPermaLink="false">https://a385e5.wordpress.com/?p=889</guid> <description/> <content:encoded><![CDATA[ ]]></content:encoded> <excerpt:encoded><![CDATA[]]></excerpt:encoded> <wp:post_id>889</wp:post_id> <wp:post_date>2018-03-21 12:15:48</wp:post_date> <wp:post_date_gmt>2018-03-21 12:15:48</wp:post_date_gmt> <wp:comment_status>closed</wp:comment_status> <wp:ping_status>closed</wp:ping_status> <wp:post_name>889</wp:post_name> <wp:status>publish</wp:status> <wp:post_parent>0</wp:post_parent> <wp:menu_order>2</wp:menu_order> <wp:post_type>nav_menu_item</wp:post_type> <wp:post_password/> <wp:is_sticky>0</wp:is_sticky> <category domain="nav_menu" nicename="menu-1"><![CDATA[Menu 1]]></category> <wp:postmeta> <wp:meta_key>_menu_item_type</wp:meta_key> <wp:meta_value><![CDATA[post_type]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_menu_item_parent</wp:meta_key> <wp:meta_value><![CDATA[0]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_object_id</wp:meta_key> <wp:meta_value><![CDATA[887]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_object</wp:meta_key> <wp:meta_value><![CDATA[page]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_target</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_classes</wp:meta_key> <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_xfn</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_menu_item_url</wp:meta_key> <wp:meta_value><![CDATA[]]></wp:meta_value> </wp:postmeta> <wp:postmeta> <wp:meta_key>_publicize_pending</wp:meta_key> <wp:meta_value><![CDATA[1]]></wp:meta_value> </wp:postmeta> </item> <item> <title>git-signing-1 https://a385e5.wordpress.com/?attachment_id=897 Mon, 26 Mar 2018 16:25:09 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/03/git-signing-1.png 897 2018-03-26 16:25:09 2018-03-26 16:25:09 open closed git-signing-1 inherit 896 0 attachment 0 https://a385e5.files.wordpress.com/2018/03/git-signing-1.png git-signing-2 https://a385e5.wordpress.com/?attachment_id=898 Mon, 26 Mar 2018 16:25:28 +0000 whottgenroth http://a385e5.files.wordpress.com/2018/03/git-signing-2.png 898 2018-03-26 16:25:28 2018-03-26 16:25:28 open closed git-signing-2 inherit 896 0 attachment 0 https://a385e5.files.wordpress.com/2018/03/git-signing-2.png About https://a385e5.wordpress.com/about/ Mon, 08 Jun 2015 16:13:28 +0000 whottgenroth http://a385e5.wordpress.com/?page_id=1 add another page.]]> 1 2015-06-08 16:13:28 2015-06-08 16:13:28 open open about publish 0 0 page 0 _wp_page_template A Web-controlled Picture Frame https://a385e5.wordpress.com/2013/06/26/a-web-controlled-picture-frame/ Wed, 26 Jun 2013 21:29:57 +0000 whottgenroth http://a385e-5.de/?p=26 Ingredients:
    • an Arduino Ethernet board
    • a small stepper motor
    • a double full-H-bridge to drive the stepper
    • a reflexion sensor with LED and photo transistor
    • some plywood
    • four photos of your loved ones
    • a black self-adhesive plastic film
    • the webduino library from the Arduino homepage
    • the Metro library from the Arduino homepage
    Foto 2   The Arduino drives via the double full-H-bridge the stepper to turn 90° three times, 15 minutes between each turn. The fourth time, to complete the 360° full turnaround, its drives the stepper until ... Foto 4   the white mark arrives of the reflexion light sensor. This mark and the photos on the other side of the round piece of plywood have to be adjusted carefully, that way, that one photo appear in a window in the frontside of the wooden box. Foto 3   (Consider the photos of your loved ones where you see colored rectangles above.) That's it. Code is here http://files.a385e-5.de/files/Bilderrahmen-0.9.tar.gz    ]]>
    26 2013-06-26 21:29:57 2013-06-26 21:29:57 closed closed a-web-controlled-picture-frame publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug
    Children Protection for Postfix-based EMail-Server https://a385e5.wordpress.com/2013/06/27/children-protection-for-postfix-based-email-server/ Thu, 27 Jun 2013 21:13:31 +0000 whottgenroth http://a385e-5.de/?p=38 http://files.a385e-5.de/files/ChildProt-0.9.tar.gz Configure it by adding this line into the master.cf of the Postfix installation:
    childprot unix  -       n       n       -       25      spawn user=mail argv=/opt/sbin/ChildProt
    and this to the main.cf:
    smtpd_recipient_restrictions =
      [...]
      check_policy_service unix:private/childprot
      [...]
    The restricted recipients and the whitelists are stored in an SQLite3 database:
    CREATE TABLE child_address_t (
      child INTEGER REFERENCES child_t(id),
      address TEXT
    );
    
    CREATE TABLE child_t (
      id INTEGER PRIMARY KEY,
      name TEXT,
      delegate TEXT
    );
    
    CREATE TABLE whitelist_t (
      child INTEGER REFERENCES child_t(id),
      address TEXT
    );
    
    CREATE VIEW child_v AS
      SELECT c.id as id,
             c.delegate as delegate,
             ca.address as address
      FROM child_t c,
           child_address_t ca
      WHERE c.id = ca.child;
    Restricted persons together with their delegates are added to the table child_t, multiple addresses can be assigned to those persons in child_address_t. Whitelists per person are maintained in whitelist_t. The tool is querying the view child_v.    ]]>
    38 2013-06-27 21:13:31 2013-06-27 21:13:31 closed closed children-protection-for-postfix-based-email-server publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug
    A Network-Attached Thermometer https://a385e5.wordpress.com/2013/06/27/a-network-attached-thermometer/ Thu, 27 Jun 2013 13:47:20 +0000 whottgenroth http://a385e-5.de/?p=44 Foto 4-1 201307031008 Using the voltage-reference LT1004 1.2 and the voltage divider, a voltage of 1.0V is provided to the op-amp, which forms together with the bottom 1k resistor and the BS108 a current source, driving 1.0mA through the PT1000. Since 1mA is a bit high for a PT1000, this current can be shut down using the other BS108 by the mcirocontroller via P5. For a measurement, the current of 1.0mA is switched on, about 100us later the voltage over the PT100 is measured through the difference amplifier and the ADC MAX187, which is read by the microcontroller via P2, P3 and P4. Immediately after measuring the voltage the current is switched off again to avoid heating up the PT1000 with the measurement current. Embedded software running on the Arduino Uno calculates the temperature from the voltage of the PT1000. This temperature value is low pass filtered using exponential smoothing. All three values (digital output of the ADC, raw temperature and smoothed temperature are provided via the Arduino Ethernet Shield and a proprietary protocol on the LAN, where the values are queried with a period of one minute by the server-side support software and stored in a database. Embedded code Support code Temperature of the day: Foto 4-1 Temperature of the last seven days: Foto 4-1 Temperature of the month: Foto 4-1]]> 44 2013-06-27 13:47:20 2013-06-27 13:47:20 closed closed a-network-attached-thermometer publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Just another Theremin https://a385e5.wordpress.com/2013/07/01/just-another-theremin/ Mon, 01 Jul 2013 20:36:01 +0000 whottgenroth http://a385e-5.de/?p=56 Theremin is a rather old electronic music instrument, invented in 1928. It is played by approaching hands to two antennas, without touching them. One antenna is used to manipulate the frequeny of the tone, the other one to manipulate the volume. Foto-am-30.06.13-um-20.02 This is just another Theremin. Only basic structure of the circuit was taken from many other published Theremin circuits. scan_005006-1024x654 Completely new (or at least not found during my Theremin googling) is the digital zero-calibration. The both left-hand-side oscillators together with the mixer+filter block provide the signal to control the volume, the right-hand-side oscillators and mixer+filter block provide the signal to control the frequency. Each of these both couples consists of two oscillators and a mixer+filter block. Both oscillators have to swing on exactly the same frequency, in this case of about 1.3MHz. While the exact frequency does not matter, it is significant that both oscillators have the same frequency. The signals of both oscillators will be mixed, which means, multiplied. [math]sin(omega_0 t) sin(omega t)[/math] Here [math]omega[/math] is the frequncy of one of the oscillators while [math]omega_0[/math] is the frequency of the other one. This term can be modified using the addition rule for trigonometric functions into [math]frac{cos((omega_0-omega)t)-cos((omega_0+omega)t)}{2}[/math] Due to this transformation, two signals, one with the sum and one with the difference of both input signal frequencies, are accumulated. When both frequencies are exactly the same, one part of the sum appears as a DC offset, while the other part is the doubled frequency. If one oscillator is de-tuned by only a few Hz's, one part are this few Hz's (a very low, hearable frequency) and the other part is still (roughly) the doubled frequency (a high frequency). The high frequency part can now be suppressed using a lowpass-filter. Multiplication of two signals can be done using an analog four quadrant multiplier, like the AD633. So, this is the schematic of the mixer+filter block: scan_005006_5-1024x717 The output signal of this block is the difference of the detuning of the one oscillator. Detuning of the oscillator will be achieved by approaching the hand to the antenna of the oscillator. scan_005006_3 The antenna acts as a kind of a capacitive sensor and by approaching the hand a very small amount of capacity is added into the LC resonator. The other oscillator is a fix-frequency oscillator which can be tuned to swing on the same frequency as the first oscillator in a not detuned state. scan_005006_4 This tuning is achieved by biasing the two varactor diodes. Here is automated tuning circuit steps in: scan_005006_6 The low-frequency output signal of the mixer+filter block is provided through a 2-to-1 multiplexer (the four NAND-gates) into a microcontroller. The microcontroller measures the frequency and as long as it is above a frequency [math]epsilon[/math] of say 10Hz, the bias voltage [math]U_{tune}[/math] is increased. These both oscillators with mixer+filter and one channel of the zero-calibration appear twice in the whole circuit, one for frequency manipulation and one for volume manipulation. The low-frequency, hearable, signal and the volume-control signal are brought together in the volume-control circuit scan_005006_2-1024x553 Here, the low-frequency signal [math]U_{Lf1}[/math] is passed through a high-pass filter. The high-pass filter is calculated that way that the whole detunable frequency range comes onto the ramp of the filter. So, the not detuned output signal of the mixer+filter is a DC signal, which is suppressed completely by the high-pass filter (beginning of the ramp) and the maximum detuned output signal of about 2kHz matched roughly to the end of the ramp. This filtered signal is rectified and only the negative half-wave of the signal passes the diode. This half-wave signal is sieved by the larger capacitor to get a DC signal between 0 and the maximum amplitude which passed the fiter. This negative DC signal is fed into the FET, which is configured as a voltage controlled resistor. This voltage controlled resistor and the fix resistor (5k6) are building a voltage controlled voltage divider. The hearable frequency signal [math]U_{Lf2}[/math] is fed into this voltage divider  and passed to an amplifier. The output signal of this block in turn is the volume-controlled and frequency-controlled signal which is the output signal of this Theremin. It is passed into a power-amplifier and into a speaker - done. Calibrating the Theremin [youtube https://www.youtube.com/watch?v=5US8LY_FbQ4&w=420&h=315] "Playing" the Theremin [youtube https://www.youtube.com/watch?v=lDld71HI66o&w=420&h=315]]]> 56 2013-07-01 20:36:01 2013-07-01 20:36:01 closed closed just-another-theremin publish 0 0 post 0 _edit_last original_post_id _wp_old_slug _publicize_job_id M-Bus Master, Part 1 (Basics) https://a385e5.wordpress.com/2013/07/24/m-bus-master/ Wed, 24 Jul 2013 20:46:05 +0000 whottgenroth http://a385e-5.de/?p=115 here and here. This is an attempt to build a simple master for this bus, which is a single-master multiple-slave bus, to be controlled using an Arduino system. laser-drucker_005070 Master to slave communication is performed by lowering the voltage at the bus by 12V, so here, from 30V to 18V. In the above schematic, T2 and IC1 together with the divider of R1 and R2 are forming a voltage source. When T1 is blocking, the bottom part of the divider is inactive and full 30V is the reference for the voltage source and the output voltage at the bus is 30V. When T1 is conducting (high signal at TX), the bottom part of the divider becomes active and the reference voltage is lowered to 18V, consequently the output voltage at the bus is 18V too. (Maybe the signal driving T1 needs to be inverted first to get the correct logical polarity, not yet verified.) This is the waveform with a feed of 10kHz at TX: TX Ch. 2 (blue) is the input signal from the function generator, Ch. 1 (yellow) is the output signal at the bus terminals. It still needs to be verified whether the setup time (delay between falling edge of input and raising edge of output) is short enough. R5 is a current sense for the receive path, R4 is a ground-load for an open bus and C1 serves to filter the output voltage. Only a rather small capacitor is used here to only filter the high-frequency noise (around 1MHz) from the source but not the signal of about 10kHz fed through T1 from TX. Slave to master communication is performed by changing the current sinked by the slave. A logical '1' is signalled by a current of maximum 1,5mA, a logical '0' is signalled by a current of 11-20mA. This is sensed at R5 and needs to be conditioned before feeding as RX into the microcontroller. The voltage over R5 is in the low load situation about 100mV, in the high load situation about 1V. These are good voltages to block or conduct a PNP transistor, in the following schematic T3. schematic1 The voltage of the signal at the point RX is limited using a Z-diode to fit into the range acceptable for a microcontroller. It is: NewFile2 Ch. 1 (yellow) is the signal from the generator to switch the load situation, Ch. 2 (blue) the signal at RX. The MOSFET T1 has been replaced by a NPN transistor BC547, the waveforms are still very good: NewFile3 Ch. 1 (yellow) is the voltage on the M-bus terminal, Ch. 2 (blue) is the generator signal at TX. ]]> 115 2013-07-24 20:46:05 2013-07-24 20:46:05 closed closed m-bus-master publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug M-Bus Master, Part 2 (Electricity) https://a385e5.wordpress.com/2013/09/09/m-bus-master-part-2/ Mon, 09 Sep 2013 23:44:27 +0000 whottgenroth http://a385e-5.de/?p=149 Foto 3 Finally, this MeterBus transceiver is connected to an Arduino Ethernet board and talks to an M-Bus equipped electric powermeter kettle Foto 2 The power meter was configured to M-Bux address 0x21, and so the initialize command, sent through the Arduino and the transceiver has been answered correctly: so 10 40 21 61 16 success SO RESP: E5 so is the command for the firmware to send the following octets on the bus, success is the acknowledgement, that this has been done and SO RESP: is the prefix for the octets received from the bus. According the the manufacturers documentation the M-Bus command REQ_UD2 (see here in the M-Bus documentation should be used to request all the measurement data from the powermeter, and it works: Here without any consumer load: so 10 5b 21 7c 16 success SO RESP: 68 38 38 68 08 21 72 99 51 00 13 2E 19 21 02 01 00 00 00 8C 10 04 06 00 00 00 8C 11 04 00 00 00 00 02 FD C9 FF 01 E3 00 02 FD DB FF 01 00 00 02 AC FF 01 00 00 82 40 AC FF 01 00 00 EB 16 Here with an electric kettle as consumer load: so 10 5b 21 7c 16 success SO RESP: 68 38 38 68 08 21 72 99 51 00 13 2E 19 21 02 02 00 00 00 8C 10 04 06 00 00 00 8C 11 04 00 00 00 00 02 FD C9 FF 01 DE 00 02 FD DB FF 01 56 00 02 AC FF 01 CD 00 82 40 AC FF 01 00 00 0A 16 In the above answer of the powermeter the important measurement values are highlighted: [table] Data,measurement category,multiplicator and unit, 06 00 00 00,total consumption,0.01kWh,0.06kWh DE 00,voltage,1V,222V 56 00,current,0.1A,8.6A CD 00,power,0.01kW,2.05kW [/table] Here is the firmware for the Arduino. This is a closer look into the response data structure: (Manufacturer IDs can be found here.) [table] Octet(s), Field, Meaning 68 38 38 68, Preamble with lentgh, 08, C Field, 21, A Field, 72, CI Field, variable data response 99 51 00 13, Ident. No., 2E 19, Manufacturer, FIN = Finder GmbH 21, Version, 02, Medium, Electricity 02, Access No, 00, Status, 00 00, Signature, 8C, DIF, ext; instantaneuos value; 8 digit BCD 10, DIFE, tariff 1; storage 0 04, VIF, Energy; 10^(4-3)Wh 06 00 00 00, Value, 0.06kWh 8C, DIF, ext; instantaneuos value; 8 digit BCD 11, DIFE, tariff 1; storage 1 04, VIF, Energy; 10^(4-3)Wh 00 00 00 00, Value, 0 02, DIF, 16bit integer FD, VIF, ext; true VIF is next; see table for secondary VIF C9, VIFE, ext; Voltage; 10^(9-9)V FF, VIFE, manufacturer specific next VIFE 01, VIFE, DE 00, Value, 222V 02, DIF, 16bit integer FD, VIF, ext; true VIF is next; see table for secondary VIF DB, VIFE, ext; Current; 10^(11-12)A FF, VIFE, manufacturer specific next VIFE 01, VIFE, 56 00, Value, 8.6A 02, DIF, 16bit integer AC, VIF, ext; Power; 10^(4-3)W FF, VIFE, manufacturer specific next VIFE 01, VIFE, CD 00, Value, 2.05kW 82, DIF, ext; 16bit integer 40, DIFE, tariff 0; storage 4 AC, VIF, ext; Power; 10^(4-3)W FF, VIFE, manufacturer specific next VIFE 01, VIFE, 00 00, Value, 0 0A, Checksum, 16, Stopbyte, [/table]]]> 149 2013-09-09 23:44:27 2013-09-09 23:44:27 closed closed m-bus-master-part-2 publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug M-Bus Master, Part 3 (Water) https://a385e5.wordpress.com/2013/09/10/m-bus-master-part-3/ Tue, 10 Sep 2013 22:00:57 +0000 whottgenroth http://a385e-5.de/?p=174 Wasserzaehler (Note the thin grey cable, that's the M-Bus cable.) And, after a small modification of the circuit I can talk to water meter and electric power meter connected in parallel to the master.
    laser-drucker_005120 IC2 was already added in the last step, since the output of the analog circuit and the requirements of the MCU didn't match concerning their logical polarity. Now, T3 (BS108) and R9 (2k2) have been added to disable the receive path while data is transmitted.
    Responding the REQ_UD2 command, the water meter sends this telegram (address 0x30 has been assigned to it first): so 10 5b 30 8b 16 success SO RESP: 68 46 46 68 08 30 72 45 71 43 00 24 23 25 07 02 00 00 00 0C 13 51 84 00 00 8C 10 13 00 00 00 00 0B 3B 00 00 00 0B 26 62 06 00 02 5A CC 00 04 6D 17 16 A9 19 7C 13 00 00 00 00 FC 10 13 00 00 00 00 72 6C 00 00 42 EC 7E BF 1C 35 16 A closer look, consulting the M-Bus documentation reveals the meaning: [table]Octet(s), Field, Meaning 68 46 46 68, Preamble with length, 08, C field, 30, A field (address), 72, CI field, variable data response 45 71 43 00, Ident. No., 24 23, Manufacturer , HYD = Hydrometer GmbH 25, Version, 07, Medium, Water 02, Access No., 00, Status, 00 00, Signature, 0C, DIF, 8 digit BCD 13, VIF, Volume; 10^(3-6)m^3 51 84 00 00, Value, 8.451m^3 8C, DIF, ext; 8 digit BCD 10, DIFE, minimum value 13, VIF, Volume; 10^(3-6)m^3 00 00 00 00, Value, 0 0B, DIF, 6 digit BCD 3B, VIF, Volume flow; 10^(3-6)m^3/h 00 00 00, Value, 0 0B, DIF, 6 digit BCD 26, VIF, Operating time; hours 62 06 00, Value, 662h = 27.6d 02, DIF, 16bit integer 5A, VIF, Flow Temperature; 10^(2-3)°C CC 00, Value, 20.4°C 04, DIF, 32bit integer 6D, VIF, Time Point; time&date 17 16 A9 19, Value, 7C, DIF, LSB; value during error state; 8 digit BCD 13, VIF, Volume; 10^(3-6)m^3 00 00 00 00, Value, 0 FC, DIF, ext; LSB; value during error state; 8 digit BCD 10, DIFE, tariff 1 13, VIF, Volume; 10^(3-6)m^3 00 00 00 00, Value, 0 72, DIF, LSB; value during error state; 16bit integer 6C, VIF, Time Point; date 00 00, Value, 0 42, DIF, LSB; 16bit integer EC, VIF, ext; Time Point; date 7E, VIFE, ?? BF 1C, Value, 35, Checksum, 16, Stopbyte, [/table] Decoding of the time&date type is done like this:
        if (t_data)
        {
            if (t_data_size == 4) // Type F = Compound CP32: Date and Time
            {
                if ((t_data[0] & 0x80) == 0) // Time valid ?
                {
                    t->tm_min = t_data[0] & 0x3F;
                    t->tm_hour = t_data[1] & 0x1F;
                    t->tm_mday = t_data[2] & 0x1F;
                    t->tm_mon = (t_data[3] & 0x0F) - 1;
                    t->tm_year = ((t_data[2] & 0xE0) >> 5) |
                                  ((t_data[3] & 0xF0) >> 1);
                    t->tm_isdst = (t_data[1] & 0x80) ? 1 : 0; // day saving time
                }
            }
            else if (t_data_size == 2) // Type G: Compound CP16: Date
            {
                t->tm_mday = t_data[0] & 0x1F;
                t->tm_mon = (t_data[1] & 0x0F) - 1;
                t->tm_year = ((t_data[0] & 0xE0) >> 5) |
                             ((t_data[1] & 0xF0) >> 1);
            }
        }
    
    (Found on github in the libmbus repo.) ]]>
    174 2013-09-10 22:00:57 2013-09-10 22:00:57 closed closed m-bus-master-part-3 publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug
    M-Bus Master, Part 4 (Gas) https://a385e5.wordpress.com/2013/09/11/m-bus-master-part-4-gas/ Wed, 11 Sep 2013 19:49:21 +0000 whottgenroth http://a385e-5.de/?p=194 Foto First, assign address 0x40: so 68 06 06 68 53 fe 51 01 7a 40 5d 16 success SO RESP: E5 And it works: so 10 40 40 80 16 success SO RESP: E5 And here is the measurement: so 10 5b 40 9b 16 success SO RESP: 68 56 56 68 08 40 72 43 60 52 00 77 04 14 03 CA 10 00 00 0C 78 76 03 01 10 0D 7C 08 44 49 20 2E 74 73 75 63 0A 30 30 30 30 30 30 30 30 30 30 04 6D 38 15 AA 19 02 7C 09 65 6D 69 74 20 2E 74 61 62 22 0C 04 13 C1 0E 00 00 04 93 7F 4E 01 00 00 44 13 5D 08 00 00 0F 01 00 1F DE 16 [table]Octet(s), Field, Meaning 68 56 56 68, preamble and length, 08, C Field, 40, A Field, 72, CI Field, variable data response 43 60 52 00, Ident. No., 77 04, Manufacturer, ACW; Actaris (Itron) 14, Version, 03, Medium, Gas, CA, Access No, 10, Status, 00 00, Signature, 0C, DIF, 8 digit BCD 78, VIF, Fabrication No 76 03 01 10, Value, 0D, DIF, variable length 7C, VIF, true in following string; length in first byte 08, VIF, first byte; length = 8 44 49 20 2E 74 73 75 63, VIF, Value (LSB first) = "cust. ID"; 0A, Value, length = 10 30 30 30 30 30 30 30 30 30 30, Value, data 04, DIF, 32bit integer 6D, VIF, Time Point; time&date 38 15 AA 19, Value, 02, DIF, 16bit integer 7C, VIF, true in following string; length in first byte 09, VIF, first byte; length = 9 65 6D 69 74 20 2E 74 61 62, VIF, Value (LSB first) = "bat. time" 22 0C, Value; 04, DIF, 32bit integer 13, VIF, Volume; 10^(3-6)m^3 C1 0E 00 00, Value, 04, DIF, 32bit integer 93, VIF, ext; Volume; 10^(3-6)m^3 7F, VIFE, 4E 01 00 00, Value, 44, DIF, 32bit integer 13, VIF, Volume; 10^(3-6)m^3 5D 08 00 00, Value, 0F, DIF, Special Functions; Start of manufacturer specific data structures to end of user data 01 00 1F, , DE , Checksum, 16, Stopbyte [/table]]]> 194 2013-09-11 19:49:21 2013-09-11 19:49:21 closed closed m-bus-master-part-4-gas publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug M-Bus Master, Part 5 https://a385e5.wordpress.com/2013/09/21/m-bus-master-part-5/ Sat, 21 Sep 2013 19:14:31 +0000 whottgenroth http://a385e-5.de/?p=224 laser-drucker_005122 Foto 1 (Milling aluminum is something else than milling wood. One cutter and nearly the front panel have been ruined. Don't know how to do it right, but very slow revolution and feed helped at least a bit. Maybe the cutter should have been cooled.) Foto 4 Kopie Here is the firmware for the Arduino.]]> 224 2013-09-21 19:14:31 2013-09-21 19:14:31 closed closed m-bus-master-part-5 publish 0 0 post 0 _publicize_pending _edit_last allowed_role original_post_id _wp_old_slug DHCP server on a MacBook https://a385e5.wordpress.com/2013/11/07/dhcp-server-on-a-macbook/ Thu, 07 Nov 2013 19:53:06 +0000 whottgenroth http://a385e-5.de/?p=244 %% due 1 DE:AD:BE:EF:FE:ED 192.168.75.20 /etc/bootpd.plist:
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
        <key>bootp_enabled</key>
        <false/>
        <key>dhcp_enabled</key>
        <array>
           <string>en2</string>
        </array>
        <key>Subnets</key>
        <array>
          <dict>
            <key>name</key>
            <string>internal</string>
            <key>net_mask</key>
            <string>255.255.255.0</string>
            <key>net_address</key>
            <string>192.168.75.0</string>
            <key>net_range</key>
            <array>
              <string>192.168.75.20</string>
              <string>192.168.75.29</string>
            </array>
            <key>allocate</key>
            <true/>
          </dict>
        </array>
      </dict>
    </plist>
    
    And finally a small script to assign the address and start the server:
    #!/bin/sh
    
    INTF=en2
    
    ifconfig $INTF alias 192.168.75.1
    /usr/libexec/bootpd -D -d -i $INTF
    ifconfig $INTF -alias 192.168.75.1
    
    Done. Once the script is started, it assigns the IP address and starts the booted (the DHCP server). The server will not detach from the terminal and does not fork into background. So, it can simply be stopped using Ctrl-C. However, Ctrl-C also interrupts the script and the unassigning of the address is not executed. This unfortunately needs to be done manually. Now I can connect the Adruino Ethernet directly to my MacBook and it will receive the network configuration from it.]]>
    244 2013-11-07 19:53:06 2013-11-07 19:53:06 closed closed dhcp-server-on-a-macbook publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug
    Has this large file something else than zeros? https://a385e5.wordpress.com/2013/11/08/has-this-large-file-something-else-than-zeros/ Fri, 08 Nov 2013 14:37:22 +0000 whottgenroth http://a385e-5.de/?p=251 #include <stdio.h> #include <stdlib.h> int main(int argc, const char* argv[]) { if (argc != 2) { printf("give filenamen"); exit(1); } FILE *f = fopen(argv[1], "r"); const unsigned int BUFSIZE = 4096; unsigned char buffer[BUFSIZE]; unsigned long cnt = 0; unsigned long found = 0; size_t r; while (0 != (r = fread(&buffer, 1, BUFSIZE, f))) { cnt += r; for (int i = 0; i < r; i++) { if (0 != *(buffer + i)) { found++; } } if (0 == (cnt % 1000000)) { printf("cnt: %ld, found: %ldn", cnt, found); } } printf("finally: cnt: %ld, found: %ldn", cnt, found); } Compile it using:
    gcc -std=c99 -o notnull notnull.c
    
    ]]>
    251 2013-11-08 14:37:22 2013-11-08 14:37:22 closed closed has-this-large-file-something-else-than-zeros publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug
    Arduino operated Current Sink https://a385e5.wordpress.com/2014/01/08/current-sink/ Wed, 08 Jan 2014 12:13:16 +0000 whottgenroth http://a385e-5.de/?p=264 20140108-131111.jpg 20140108-131229.jpg The current through the sink is controlled using an op amp (TS912), current is measured with one of three shunt resistors (0.1R, 1R, 10R), reference voltage for the op is provided by a DAC (LTC1257), which in turn is operated by the Arduino. The 2N3055 power transistor is driven through a BD135 connected in a Darlington circuit. Additionally to providing a given value through the DAC, the actual current value is measured of the same shunt resistor using an ADC (MAX187). As an auxilliary value, the voltage at the terminals of the sink is measured, also using an ADC (again MAX187) through a voltage divider. The user interface is setup with a 16*2 LCD display and a rotary encoder with push button. 20140108-131150.jpg Besides this "hardware user interface" it is also possible the control the device with commands send over the USB port. Here are the schematics: laser-drucker_005479_2 And finally, here is the source code: CurrentSink-0.9.tar.gz]]> 264 2014-01-08 12:13:16 2014-01-08 12:13:16 closed closed current-sink publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Debouncing a rotary encoder is really hard https://a385e5.wordpress.com/2014/01/08/debouncing-a-rotary-encoder-is-really-hard/ Wed, 08 Jan 2014 20:24:08 +0000 whottgenroth http://a385e-5.de/?p=278 const unsigned long DEBOUNCING_DEAD_TIME = 100; const int DEBOUNCING_REPEAT = 1000; volatile int rotaryCount = 0; volatile bool switchState = false; volatile unsigned long lastEvent = 0; int myDigitalRead(int a) { int r = 0; for (int i = 0; i < DEBOUNCING_REPEAT; i++) { if (digitalRead(a) == HIGH) { r++; } else { r--; } } int res = -1; if (r >= (DEBOUNCING_REPEAT / 2)) { res = 1; } else if (r <= -1 * (DEBOUNCING_REPEAT / 2)) { res = 0; } return res; } void rotary_a_interrupt() { unsigned long currentEvent = millis(); if ((lastEvent == 0) || (lastEvent + DEBOUNCING_DEAD_TIME < currentEvent)) { lastEvent = currentEvent; int a = myDigitalRead(ROTARY_A); int b = myDigitalRead(ROTARY_B); if (((a != -1) && (b != -1))) { if (a == b) { rotaryCount++; } else { rotaryCount--; } } } } void rotary_b_interrupt() { unsigned long currentEvent = millis(); if ((lastEvent == 0) || (lastEvent + DEBOUNCING_DEAD_TIME < currentEvent)) { lastEvent = currentEvent; int a = myDigitalRead(ROTARY_A); int b = myDigitalRead(ROTARY_B); if (((a != -1) && (b != -1))) { if (a == b) { rotaryCount--; } else { rotaryCount++; } } } } void switch_interrupt() { unsigned long currentEvent = millis(); if ((lastEvent == 0) || (lastEvent + DEBOUNCING_DEAD_TIME < currentEvent)) { lastEvent = currentEvent; switchState = true; } } void hardwareInit() { pinMode(SWITCH, INPUT_PULLUP); pinMode(ROTARY_A, INPUT_PULLUP); pinMode(ROTARY_B, INPUT_PULLUP); attachInterrupt(SWITCH_IRQ, switch_interrupt, FALLING); attachInterrupt(ROTARY_A_IRQ, rotary_a_interrupt, CHANGE); attachInterrupt(ROTARY_B_IRQ, rotary_b_interrupt, CHANGE); } The primary problem was not to get any rotary event of the wrong direction, the secondary problem was not to miss too much events, best of course none. Only the combination of a dead time after one interrupt and validating a read pin state by rereading it MANY times solved the primary problem. To solve the secondary problem too, the validation has be softened by not requiring all reread states to have the same value but accepting a limited number of wrong values. ]]> 278 2014-01-08 20:24:08 2014-01-08 20:24:08 closed closed debouncing-a-rotary-encoder-is-really-hard publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Another (better) MBus-Master, Part 1 https://a385e5.wordpress.com/2014/01/14/another-better-mbus-master/ Tue, 14 Jan 2014 20:18:09 +0000 whottgenroth http://a385e-5.de/?p=326 20140115-171708.jpg More follows soon ...]]> 326 2014-01-14 20:18:09 2014-01-14 20:18:09 closed closed another-better-mbus-master publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Another (better) MBus-Master, Part 2 https://a385e5.wordpress.com/2014/01/15/another-better-mbus-master-part-2/ Wed, 15 Jan 2014 21:56:11 +0000 whottgenroth http://a385e-5.de/?p=331 Foto 2 Switching the TX-path with 1kHz, 80% duty cycle: Foto 1 Loading the TX-path with about 250mA (the current sink specifically built - see here - for this project is here in operation): Foto 3 Finally, here are the most recent schematics of this new MBus-Master: MBusMaster2 (The TX-test and the test for recognition of the 10mA swing have been done without the MCU at the moment.)]]> 331 2014-01-15 21:56:11 2014-01-15 21:56:11 closed closed another-better-mbus-master-part-2 publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Another (better) MBus-Master, Part 3 https://a385e5.wordpress.com/2014/01/18/another-better-mbus-master-part-3/ Sat, 18 Jan 2014 21:15:10 +0000 whottgenroth http://a385e-5.de/?p=358 Foto MBusMaster2-1
    Well, it seems, that this way of over current signaling to the MCU does not work properly. In the first design, the input of the comparator was directly the lower end of the shunt resistor, which worked. So, the differentiator is required of current measurement, but is not usable for over current signaling. Needs some more work.
    The both blue LEDs show activity on RX and TX, the red LED signals over current. The whole development setup: 20140118-200610.jpg Power supply: 20140118-200600.jpg Load simulation: 20140118-200526.jpg Wave form of a simple communication: 20140118-200623.jpg (Yellow is the voltage on the bus, blue is the control signal of the sample-hold-device.) The test client: 20140118-200540.jpg And finally, some communication with the master: Bildschirmfoto 2014-01-18 um 22.13.50]]>
    358 2014-01-18 21:15:10 2014-01-18 21:15:10 closed closed another-better-mbus-master-part-3 publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug
    Another (better) MBus-Master, Part 4 https://a385e5.wordpress.com/2014/01/22/another-better-mbus-master-part-4/ Wed, 22 Jan 2014 09:15:05 +0000 whottgenroth http://a385e-5.de/?p=370 Foto 3 The beast works as it should, with no additional load, only one slave connected or with different additional load (50mA, 150mA, 250mA), simulating the related number of slaves (1mA per slave). However, receive the signal has gone really bad. First, here are the signal without onboard SMPS, for comparison: without_smps (blue is trigger of S/H device, yellow is output of difference amplifier) This is with the SMPS, with an additional load of 200mA: with_smps with_smps_2 The receive signal can still be recognized and the comparator does it's job, but the difference is impressive - although not really unexpected. Here is it with the SMPS again, now without additional load: with_smps_noload So, the SMPS must either be strictly separated from the remaining circuit on one board or even better be placed on a separate board - however, putting the SMPS and the receive recognition so close to each other was - rethinking it now - asking for trouble. ]]> 370 2014-01-22 09:15:05 2014-01-22 09:15:05 closed closed another-better-mbus-master-part-4 publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Another (better) MBus-Master, Part 5 https://a385e5.wordpress.com/2014/02/08/another-better-mbus-master-part-5/ Sat, 08 Feb 2014 22:36:24 +0000 whottgenroth http://a385e-5.de/?p=391 20140208-213036.jpg The SMPS is implemented using an LM2577 module, although first a XL6009 was planned, but this is a different story. With the rest of the circuit, which has already been introduced before it looks this way: 20140208-213315.jpg And now the receive signals are very clear again: 20140208-213433.jpg Blue is the receive signal measured at the output of the comparator, yellow is the transmit signal measured as the bus voltage. Here, for comparison to the screenshots in the last post, the trigger of the S/H device in blue and the output of the difference amplifier in yellow: 20140209-162211.jpg]]> 391 2014-02-08 22:36:24 2014-02-08 22:36:24 open closed another-better-mbus-master-part-5 publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug Another (better) MBus-Master, Part 6 https://a385e5.wordpress.com/2014/02/13/another-better-mbus-master-part-6/ Thu, 13 Feb 2014 07:03:50 +0000 whottgenroth http://a385e-5.de/?p=403 main MeterBusPowerMaster-2014-02-13 The circuit requires two supply voltages: +5V (named so in the schematics) and +35V (named ''vcc'' in the schematics). Note, please: there is still no over current protection in the design. If you like to use this design for your own purposes, feel free (and maybe, you want to let me know, especially if you enhance the design somehow). But don't blame me if something goes wrong. This design is working successfully in my basement, but, as mentioned before, it has still no over current protection (so, avoid short cuts on the bus wires). Furthermore, I can't state whether it is fully complaint to EN 13757 standard or not.]]> 403 2014-02-13 07:03:50 2014-02-13 07:03:50 open closed another-better-mbus-master-part-6 publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug 4 Channel MBus-connected Thermometer, Part 1 https://a385e5.wordpress.com/2014/02/21/4-channel-mbus-connected-thermometer/ Fri, 21 Feb 2014 06:39:45 +0000 whottgenroth http://a385e-5.de/?p=411 Measurement side of thing is working already. An Analog Devices AD7190 is used as ADC, an Arduino-compatible Micro Pro serves as MCU. For the communication side a TSS721A is awaited. ]]> 411 2014-02-21 06:39:45 2014-02-21 06:39:45 open closed 4-channel-mbus-connected-thermometer publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug 4 Channel MBus-connected Thermometer, Part 2 https://a385e5.wordpress.com/2014/03/09/4-channel-mbus-connected-thermometer-part-2/ Sun, 09 Mar 2014 22:30:45 +0000 whottgenroth http://a385e-5.de/?p=419 Foto 2 MBus-transceiver TSS721A in breadbroad setup with two opto-coupler, connected to the thermometer and to the lab MBus-master: Foto 1 Test setup with thermometer, MBus-transceiver and lab MBus-master (still open enclosure since over current protection is not yet available, just to not forget it ...): Foto 4 And, yes, it works so far. Although it was a bit of a surprise to see the echo of any sent frame, however, the documentation revealed that this is actually a collision detection feature. ]]> 419 2014-03-09 22:30:45 2014-03-09 22:30:45 open closed 4-channel-mbus-connected-thermometer-part-2 publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug Teensy meets "not so standard" UART configuration https://a385e5.wordpress.com/2014/03/11/teensy-meets-not-so-standard-uart-configuration/ Tue, 11 Mar 2014 21:12:03 +0000 whottgenroth http://a385e-5.de/?p=424 https://www.pjrc.com/teensy/index.html did a really good job with the Arduino integration Teensyduino. Thank you very much indeed. Unfortunately they missed a feature which has been integrated in the Arduino library sometimes between version 1.0.5 and 1.5.2, don't know when exactly: advanced UART configuration. In the documentation of Serial.begin(...) you see the option to give a config argument, where in particular you can configure the frame length, the parity and the number of stop bits. While this is certainly not a very common feature, I need it in my MeterBus projects, since communication on the MeterBus is serial communication with an even parity enabled. So far I was too lazy to put the stuff into a library, but this is required to enable even parity:
      #include <mk20dx128.h>
    
      // [...]
    
      // this is the new Arduino way of setting parity
      //Serial3.begin(2400, SERIAL_8E1);
    
      // this is the Teensy (Freescale K20) way:
      Serial3.begin(2400);
      UART2_C1 |= UART_C1_PE | UART_C1_M;
    
    Find the documentation for the UARTx_C1 register on page pp. 1055-1056, cp. 45.3.3 of the Freescale K20 manual (find that one on the Teensy homepage at https://www.pjrc.com/teensy/datasheets.html). Note: it is not enough to enable parity (setting the bit UART_C1_PE, you also need to increase the frame length to 9 bit by setting bit UART_C1_M, since the frame length seems to include the parity bit. Right, this is a hack, and maybe the Teensy people will integrate it into the library the other day, but at least for the moment it works for me. ]]>
    424 2014-03-11 21:12:03 2014-03-11 21:12:03 open closed teensy-meets-not-so-standard-uart-configuration publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug
    Tools for the Arduino Development https://a385e5.wordpress.com/?p=436 Mon, 30 Nov -0001 00:00:00 +0000 whottgenroth http://a385e-5.de/?p=436 http://www.baeyens.it/eclipse/ Arduino Teensy Integration: http://www.pjrc.com/teensy/teensyduino.html Arduino IDE: http://arduino.cc/en/Main/Software ]]> 436 2015-06-05 13:32:55 0000-00-00 00:00:00 open closed draft 0 0 post 0 _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug Another (better) MBus-Master, Part 6 https://a385e5.wordpress.com/2014/04/07/another-better-mbus-master-part-6-2/ Mon, 07 Apr 2014 20:08:58 +0000 whottgenroth http://a385e-5.de/?p=445 main The over current protection is separated in a sensing part and a shutdown part. The comparator IC6B gets a threshold voltage using the potentiometer R18 and a signal voltage through the low pass filter of R19 and C3 (the values are not yet fine tuned). R21 and D7 are used to limit the output signal of the comparator, which is 35V power to a logic level. Through an inverter it goes to an interrupt line of the controller. An interrupt service routine in the controller firmware controls the transistor Q3 and pull down the positive input of the OP IC3A, which is part of the current source to shutdown the bus current. A receiver shutdown transistor (Q4) has been added. During tests with a dedicated poewr supply serious cross talk from the sender path in to the receiver path for a bus current of about 150mA has been discovered. This has not been investigated enough, just the receiver path has been shutdown during a send cycle. This is certainly only the second best solution, but it was a quick one. ]]> 445 2014-04-07 20:08:58 2014-04-07 20:08:58 open closed another-better-mbus-master-part-6-2 publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug 5 eddie.yim@dektech.com.au 203.45.32.221 2016-03-01 08:37:52 2016-03-01 06:37:52 1 0 0 6 wollud@a385e-5.de 85.115.56.180 2016-03-01 11:35:27 2016-03-01 09:35:27 1 5 88446352 7 bbates@energybilling.co.uk http://www.energybilling.co.uk 217.41.30.65 2016-04-14 16:49:36 2016-04-14 14:49:36 1 0 0 8 wollud@a385e-5.de 176.0.127.35 2016-04-17 15:44:36 2016-04-17 13:44:36 1 7 88446352 Network-attached MBus-Master https://a385e5.wordpress.com/2014/05/11/network-attached-mbus-master/ Sun, 11 May 2014 19:28:11 +0000 whottgenroth http://a385e-5.de/?p=456 IMG_2028 IMG_2030 And finally it is in "production": Foto]]> 456 2014-05-11 19:28:11 2014-05-11 19:28:11 open closed network-attached-mbus-master publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug 4 Channel MBus-connected Thermometer, Part 3 https://a385e5.wordpress.com/2014/05/11/4-channel-mbus-connected-thermometer-part-3/ Sun, 11 May 2014 19:29:54 +0000 whottgenroth http://a385e-5.de/?p=458 IMG_2032 ]]> 458 2014-05-11 19:29:54 2014-05-11 19:29:54 open closed 4-channel-mbus-connected-thermometer-part-3 publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug 9 jukka.nordstrom@jamsa.fi 192.89.77.223 2015-08-21 07:18:39 2015-08-21 05:18:39 1 0 0 10 jeremynet@gmail.com https://alexhost.de/ 176.123.2.40 2016-06-11 11:08:44 2016-06-11 09:08:44 1 0 0 11 wollud@a385e-5.de 84.61.180.62 2016-06-11 11:15:54 2016-06-11 09:15:54 1 10 88446352 Review of network-attached M-Bus master, design version 6 https://a385e5.wordpress.com/2014/08/04/review-of-network-attached-m-bus-master-design-version-6/ Mon, 04 Aug 2014 09:41:01 +0000 whottgenroth http://a385e-5.de/?p=475 here and the modifications I applied to turn it into a network-attached M-Bus master, which I describe here. Here is a kind of a personal review of that design, especially considering the modifications:
    • I replaced the Arduino Pro Micro by an Teensy 3.1 connected to a WIZNet module.
    • I introduced a power supply with three voltages: 34V, 32V and 3.3V.
    • 3.3V obviously for the MCU, the ethernet module and the 74HC04, 34V for the main analog part, it just replaced the VCC in the schematics.
    • Than I removed the four diodes D1-4 and connected 32V directly to the top terminal of R6.
    While in the design version 6 I had a very clear voltage shift at pin 1 of IC1A of about 100mV for the received logic levels at the bus, this signal was very noisy in the later design. Before replacing the diodes D1-4 by a separate supply voltage, it was nearly unusable and I was not able to communicate reliably using the device. After introducing the separate 32V supply voltage the signal got better, but still not as good as in design version 6. However, I was able to communicate again. Nevertheless I ran into another problem: the SNR was going worse for very small and very large bus currents. So, I added a 10k resistor parallel to R7 to drain a minimum bus current of about 3mA and I had to limit the maximum bus current to about 70mA. This is equal to about 70 slave devies. In my setup this is no problem, I use the device just for fun in the basement, in other setups, where actually 250 slaves should be handled, it is a problem. I think the major cause for the noise is the stronger, higher clocked, MCU and the WIZnet, which impact noise into the ground lines. (Unfortunately, the Arduino flash is not large enough for my firmware after adding the ethernet code.) And moreover my "breadboard production approach" is certainly a problem. A well layouted PCB with large supply planes leads hopefully to much better results and some more bypass capacitors and ferrit beads would help too. May be increasing the value of R6 should also be considered. It would increase the voltage shift at the output of a difference amplifier after the S/H device (pin 1 of IC1A). All in all, considering both the design version 6 and the network-attached M-Bus master, it becomes clear that it is possible to build a network-attached M-Bus master using the concept. ]]>
    475 2014-08-04 09:41:01 2014-08-04 09:41:01 open closed review-of-network-attached-m-bus-master-design-version-6 publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug
    2-Wire Lightsensor with MBus-interface (bus-powered) https://a385e5.wordpress.com/2014/10/04/2-wire-lightsensor-with-mbus-interface-bus-powered/ Sat, 04 Oct 2014 22:17:07 +0000 whottgenroth http://a385e-5.de/?p=486 IMG_2378 Here, it is already mounted on the sill outside the window with a piece of double-faced adhesive tape, enclosed in the package of an Apple Magic Mouse. Note the piece in the lower-right corner (not the 10k resistor, next to it). This is finally the light sensor. It is regular BC177 transistor in metal case with the cap removed with a small Proxxon cutting-off machine. Works perfectly. The whole thing consumes about 500uA (the jumper in the top-middle is in the power line between the bus-transceiver and the rest of the circuit, just to measure the current). scan_006048 BTW, this is my first MSP430 project. It is much more "low-power" than the AVRs on the Arduino boards ... One note on the inhouse-wiring: The MBus-master is in the basement, the light sensor on the second floor. How to bring the MBus upstairs? Just use the already available infrastructure (Ethernet) cabling, which goes up from the patch panel in the basement into every room. Here are the sources: MBusLightSensor-2014-10-05]]> 486 2014-10-04 22:17:07 2014-10-04 22:17:07 open closed 2-wire-lightsensor-with-mbus-interface-bus-powered publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug A simple Modbus RTU to TCP gateway https://a385e5.wordpress.com/2014/10/27/a-simple-modbus-rtu-to-tcp-gateway/ Mon, 27 Oct 2014 10:55:32 +0000 whottgenroth http://a385e-5.de/?p=505 IMG_1045 Communication works: SCR04 (Blue and yellow are the Modbus lines, purple is TX at the microcontroller, green is RT at the microcontroller.) ]]> 505 2014-10-27 10:55:32 2014-10-27 10:55:32 open closed a-simple-modbus-rtu-to-tcp-gateway publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug Measuring the speed of a salad spinner https://a385e5.wordpress.com/2014/12/11/measuring-the-speed-of-a-salad-spinner/ Thu, 11 Dec 2014 14:18:20 +0000 whottgenroth http://a385e-5.de/?p=506 IMG_2597 Second, attach two small but strong magnets at the spinner, one on each side, to let it run weighty: IMG_2600 Third, connect the probe to a power-supply, an oscilloscope and a frequency-counter: IMG_2599 The oscilloscope is required to find the right position of the probe, the counter is required for the actually measurement. And then: turn the spinner: [youtube https://www.youtube.com/watch?v=ezTvoh3vguI&w=560&h=315] Here, in this clip, we measured about 43Hz. In another test it was even 52Hz. Since we have two magnets, we had 21.5 rps and in the other test 26 rps. These are 1290 rpm and 1560 rpm. That's fast. ]]> 506 2014-12-11 16:18:20 2014-12-11 14:18:20 open closed measuring-the-speed-of-a-salad-spinner publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug Very simple metal detector https://a385e5.wordpress.com/2014/12/16/very-simple-metal-detector/ Mon, 15 Dec 2014 22:16:32 +0000 whottgenroth http://a385e-5.de/?p=513 Theremin let my to the idea, that varying the value of the inductivity by approaching some metal should also detune one of two oscillators. 20141215123534365a Here, I reuse the design of the oscillator and the mixer from my Theremin and fed the mixed signal into a low pass filter, calculated with Analog's excellent Filter Wizard. IMG_2629 This was btw the first deployment of my new Rigol power supply: IMG_2615 The both identical 30V-Max-channels, put in tracking mode, can easily be used as a symmetric power supply, as it is required for the mixer and the filter. The reference frequency is provided using a generator: IMG_2616 This is the full measurement setup: IMG_2630 I use one oscilloscope to show the varying (yellow) and the reference (blue) frequency, here in the tuned state: tuned When detuning the test oscillator by approaching some metal to the coil, there varying frequency starts wandering on the screen: detuned And here are the results: [gallery columns="2" ids="546,545,544,525,543,528,541,540,535,534"]]]> 513 2014-12-16 00:16:32 2014-12-15 22:16:32 open closed very-simple-metal-detector publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug A small Royer Induction Heater https://a385e5.wordpress.com/2015/01/01/a-small-royer-induction-heater/ Thu, 01 Jan 2015 19:39:19 +0000 whottgenroth http://a385e-5.de/?p=564 IMG_2723 Of course it works, several people built it before and published photos and videos. But now I did it on my own: a rather small induction heater. IMG_2719 scan_006379 In the first photo I ran it with only 12V and at about 2.5A, but this was enough to bring a small nail to red heat. Some waveforms: At the gate of one of the MOSFETs: gate At the drain of one of the MOSFETs: drain And finally across the capacitor: capacitor ]]> 564 2015-01-01 21:39:19 2015-01-01 19:39:19 open closed a-small-royer-induction-heater publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug 12 izxdwju@gmail.com http://amdelmedical.com/forum/member/profile/20151126/32.php 221.237.114.66 2015-11-28 21:34:51 2015-11-28 19:34:51 1 0 0 A fully digital controlled SMPS for up to 100V, 1.5KW https://a385e5.wordpress.com/2015/06/17/a-fully-digital-controlled-smps-for-up-to-100v-1-5kw/ Wed, 17 Jun 2015 09:49:45 +0000 whottgenroth http://a385e-5.de/?p=575 IMG_2941 Transformer, 230V to 90V, 1.5KW, 11kg, 12€ on ebay IMG_2944 Transformer Start Relay IMG_2945 Rectifier IMG_2946 Filter capacitors (4x5100uF), with discharging resistor (10kOhm) IMG_2948 Power stage with switch, diode (in one package, 300A, 1000V), inductor (about 140uH) and capacitors (2x2000uF) IMG_2943 Controller, with MSP430, opto-coupler and push-pull-stage for driving the power switch with PWM signal from MCU, voltage-divider and op-amp for feedback voltage, display and some pushbuttons IMG_2942 Load for testing IMG_2947 ]]> 575 2015-06-17 11:49:45 2015-06-17 09:49:45 open closed a-fully-digital-controlled-smps-for-up-to-100v-1-5kw publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug WiFi Powermeter https://a385e5.wordpress.com/2015/06/05/wifi-powermeter/ Fri, 05 Jun 2015 09:57:33 +0000 whottgenroth http://a385e-5.de/?p=588 IMG_3151 This is how it looks in its box: IMG_3217 I used it to measure the power consumption of the fridge in the basement or of the PC of my son and so on. On the MQTT broker there is one subscriber who transfers all the measurements into a MongoDB, where it now waits for further analysis. The hardware is rather simple: an Arduino Mega (since it has more than one serial interface), an Arduino WiFi shield and on top a RS485 adaptor for the Modbus communication. For the software I'm using the Modbus library from https://code.google.com/p/simple-modbus/. Unfortunately, it disappeared right there, don't know why. Seems, that I have to be really careful with the files. The MQTT library I'm using is from http://knolleary.net/arduino-client-for-mqtt/. With the couple of the WiFi library and the MQTT library I ran into two problems. First, it was not possible to establish an MQTT connection at all. Strange, since via Ethernet it wasn't a problem at all. I found, supported by Google that that the WiFi library and the shield handles a stop() on a fresh client socket somewhat strange: The socket can not be open or will be closed immediately after opening. Since at least in my case I always give a fresh WiFiClient into the PubSubClient I removed the connected() call from the top of the connect method in PubSubClient.cpp. Second, I ran into the problem that messages I published via PubSubClient using an Arduino Mega and an Arduino Wifi Shield which are large than about 80 octets did not appear at the broker. I found by googling that it is not possible to send more than 90 octets using the Wifi Shield and the related library at once: http://mssystems.emscom.net/helpdesk/knowledgebase.php?article=51 And that exactly what I experienced too: I increased the buffer size one by one and at 90 octets it stopped and the WiFi library lost the connection. Using this patch, which I applied against release 1.9.1 everything works fine now: [code language="cpp"] 42,43c42 < // if (!connected()) { < if (true) { --- > if (!connected()) { 217d215 < // Serial.print("pub len: "); Serial.println(length-5); 219,220d216 < } else { < // Serial.println("connection lost"); 290,308c286 < < // Serial.print("write len: "); Serial.println(length+1+llen); < // size_t olen = length + 1 + llen; < // rc = _client->write(buf+(4-llen),length+1+llen); < < const size_t SEND_AT_ONCE = 64; < size_t remains = length + 1 + llen; < // Serial.print("write len: "); Serial.println(remains); < const uint8_t *writebuf = buf + (4 - llen); < bool result = true; < while ((remains > 0) && result) { < size_t actuallySendChars = (remains > SEND_AT_ONCE) ? SEND_AT_ONCE : remains; < // Serial.print("tbs: "); Serial.println(actuallySendChars); < size_t sentChars = _client->write(writebuf, actuallySendChars); < result = sentChars == actuallySendChars; < remains -= sentChars; < writebuf += sentChars; < } < --- > rc = _client->write(buf+(4-llen),length+1+llen); 311,312c289 < // return (rc == 1+llen+length); < return result; --- > return (rc == 1+llen+length); 357,362c334 < //Serial.print("rc: "); Serial.println(rc); < if (!rc) { < //Serial.println("would stop"); < _client->stop(); < // while (true); < } --- > if (!rc) _client->stop(); [/code] Sources for the firmware are here: WiModbusGateway]]> 588 2015-06-05 11:57:33 2015-06-05 09:57:33 open closed wifi-powermeter publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug Revisiting the MeterBus master https://a385e5.wordpress.com/2015/06/05/revisiting-the-meterbus-master/ Fri, 05 Jun 2015 10:14:46 +0000 whottgenroth http://a385e-5.de/?p=603 here and here early. By now, a cronjob on my MacMini in the basement was querying the device every minute to collect measurement results from the attached meters (water, gas, electricity, out door temperature). Now, I changed and improved the software slightly: First, I enabled the watchdog timer, since it occasionally happened that the device became unresponsive. In this case now the watchdog timer is triggered to reset the beast. Second, I modified the upstream communication. Now the master publishes the results of configured meters using the MQTT protocol. IMG_3167 Doing this, I ran into another problem with the MQTT library from http://knolleary.net/arduino-client-for-mqtt/. I had to increase the maximum packet size to 1024 bytes since some of the meters sent about 250 bytes, which I represent in a hex string in the MQTT payload. But as soon as the packet was higher the 256 bytes, only the first 256 bytes had been sent to the broker. Tracking this down to the write method in the MQTT library I found a uint8_t which a uint16_t should be: [code language="cpp"] boolean PubSubClient::write(uint8_t header, uint8_t* buf, uint16_t length) { uint8_t lenBuf[4]; uint8_t llen = 0; uint8_t digit; uint8_t pos = 0; uint8_t rc; uint8_t len = length; [/code] Using uint16_t for the variable len immediately fixed this problem. Aha, and enabling the watchdog on the Teensy was also not that easy. Finally, I came to this solution: [code language="cpp"] extern "C" { void startup_early_hook( ) __attribute__ ((weak)); void startup_early_hook() { // enable watchdog WDOG_UNLOCK = WDOG_UNLOCK_SEQ1; WDOG_UNLOCK = WDOG_UNLOCK_SEQ2; // one minute WDOG_TOVALL = 0xea60; WDOG_TOVALH = 0; WDOG_PRESC = 0; WDOG_STCTRLH = WDOG_STCTRLH_WDOGEN | WDOG_STCTRLH_ALLOWUPDATE | WDOG_STCTRLH_STOPEN | WDOG_STCTRLH_WAITEN; } } // extern "C" [/code] It this require the enable the watchdog in the startup_early_hook since the Cortex accepts it only the first 256 clock cycles. Next, the extern "C" is important, otherwise the link does not find the overwrite of the function, since it is compile with a C++ file. The clock for the watchdog is taken from the LPO of the CPU, which is running at 1kHz. Thus, a timeout value of 0xea60 equals 60000 let to a watchdog timeout of one minute. Reading the K20 reference manual, which I found on the Teensy homepage, was really helpful here. Today, all the measurements from a couple of meters find their way via MQTT and a small serverside script into the MongoDB for further analysis. [code language="javascript"] { "data":{ "telegram":"68 38 38 68 08 51 72 10 01 00 13 2E 19 24 02 9C 00 00 00 8C 10 04 12 06 00 00 8C 11 04 12 06 00 00 02 FD C9 FF 01 E2 00 02 FD DB FF 01 00 00 02 AC FF 01 00 00 82 40 AC FF 01 00 00 09 16 ", "uptime":52815 }, "metadata":{ "device":"MeterbusHub", "token":5, "name":"dryer" } } { "data":{ "telegram":"68 61 61 68 08 21 72 00 00 00 00 00 00 01 00 AA 00 00 00 01 24 03 01 25 0A 01 26 10 02 27 01 00 05 67 28 14 B3 3D 05 67 D2 45 E3 BA 05 67 9F B5 A7 41 05 67 79 13 E0 41 0F D0 27 00 00 AA 08 00 00 05 00 00 00 00 00 00 00 01 00 00 00 A2 C3 7F 3F A5 BA 7F 3F 85 A7 7F 3F E7 F9 7F 3F CD CC CC 3D E8 03 00 00 8B 16 ", "uptime":52822 }, "metadata":{ "device":"MeterbusHub", "token":1, "name":"thermom." } } { "data":{ "telegram":"68 38 38 68 08 52 72 99 51 00 13 2E 19 21 02 86 00 00 00 8C 10 04 06 09 00 00 8C 11 04 00 09 00 00 02 FD C9 FF 01 E3 00 02 FD DB FF 01 00 00 02 AC FF 01 00 00 82 40 AC FF 01 00 00 B3 16 ", "uptime":52840 }, "metadata":{ "device":"MeterbusHub", "token":6, "name":"laundry" } } { "data":{ "telegram":"68 92 92 68 08 50 72 81 14 01 11 2E 19 16 02 A2 00 00 00 8C 10 04 82 62 85 00 8C 11 04 82 62 85 00 8C 20 04 00 00 00 00 8C 21 04 00 00 00 00 02 FD C9 FF 01 DD 00 02 FD DB FF 01 08 00 02 AC FF 01 0F 00 82 40 AC FF 01 00 00 02 FD C9 FF 02 E2 00 02 FD DB FF 02 0C 00 02 AC FF 02 16 00 82 40 AC FF 02 F7 FF 02 FD C9 FF 03 E9 00 02 FD DB FF 03 09 00 02 AC FF 03 11 00 82 40 AC FF 03 FA FF 02 FF 68 00 00 02 AC FF 00 36 00 82 40 AC FF 00 F1 FF 01 FF 13 00 D2 16 ", "uptime":52867 }, "metadata":{ "device":"MeterbusHub", "token":4, "name":"electricity" } } { "data":{ "telegram":"68 46 46 68 08 30 72 45 71 43 00 24 23 25 07 4B 00 00 00 0C 13 83 50 43 00 8C 10 13 00 00 00 00 0B 3B 00 00 00 0B 26 69 58 01 02 5A B6 00 04 6D 30 0D E5 16 4C 13 96 41 33 00 CC 10 13 00 00 00 00 42 6C DF 1C 42 EC 7E FF 1C 01 16 ", "uptime":53047 }, "metadata":{ "device":"MeterbusHub", "token":2, "name":"water" } } { "data":{ "telegram":"68 56 56 68 08 40 72 43 60 52 00 77 04 14 03 56 10 00 00 0C 78 76 03 01 10 0D 7C 08 44 49 20 2E 74 73 75 63 0A 30 30 30 30 30 30 30 30 30 30 04 6D 23 0D E5 16 02 7C 09 65 6D 69 74 20 2E 74 61 62 A9 09 04 13 F5 A9 04 00 04 93 7F 4E 01 00 00 44 13 FC A5 04 00 0F 01 00 1F 1C 16 ", "uptime":53049 }, "metadata":{ "device":"MeterbusHub", "token":3, "name":"gas" } } [/code] IMG_3168 Sources for the firmware are here: NetMeterBusMaster2]]> 603 2015-06-05 12:14:46 2015-06-05 10:14:46 open closed revisiting-the-meterbus-master publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug _oembed_5c78eaa2642fb8f2eb1cc6e2a4c65774 13 skardal@me.com 92.221.115.124 2015-11-29 01:06:40 2015-11-28 23:06:40 1 0 0 14 wollud@a385e-5.de 85.115.56.180 2016-03-01 11:25:30 2016-03-01 09:25:30 1 13 88446352 15 lzxtct@163.com 144.82.194.97 2016-05-26 18:52:22 2016-05-26 16:52:22 1 0 0 16 wollud@a385e-5.de 84.61.180.62 2016-06-11 11:13:44 2016-06-11 09:13:44 1 15 88446352 RelayBox https://a385e5.wordpress.com/2015/06/05/relaybox/ Fri, 05 Jun 2015 11:10:02 +0000 whottgenroth http://a385e-5.de/?p=620 to make this: IMG_3234 IMG_3235 On the first photo you see three high current switches (and on the right hand side two MBus power meters), on the second photo is the control stuff. From the bottom to the top there is a Meanwell power supply with 24V DC output for the switches and next to it a 5V SMPS for the Arduino. In the middle left is a card with eight opto coupler and an insulating DC-DC-converter for the feedback from the switches and on the right hand side an Arduino Mega with an Ethernet Shield. On top left just a row of screw terminal and on the left hand side a 8 port relay board from SainSmart. It is so cheap on ebay (only about 11€) you can not make it on you own - the parts would be more expensive. For eight ports 16 input and 16 output pins on the Arduino are required: eight in and eight out for feedback and relays, eight in and eight out for push buttons and signaling LEDs (they are not on the photo). This thing is controlled using the MQTT protocol too. A small Python coded webapp also siting on the broker serves as UI: IMG_3258 ("Waschküche" is laundry room, "Küche" is kitchen and "Herd" is oven.) The thing publishes every second the status of the switches via MQTT: [code language="javascript"] { "data":{ "uptime":75407, "switchStates":[ { "stateConflict":0, "index":0, "state":1, "feedbackState":1 }, { "stateConflict":0, "index":1, "state":1, "feedbackState":1 }, { "stateConflict":0, "index":2, "state":1, "feedbackState":1 }, { "stateConflict":0, "index":3, "state":0, "feedbackState":0 }, { "stateConflict":0, "index":4, "state":0, "feedbackState":0 }, { "stateConflict":0, "index":5, "state":0, "feedbackState":0 }, { "stateConflict":0, "index":6, "state":0, "feedbackState":0 }, { "stateConflict":0, "index":7, "state":0, "feedbackState":0 } ] }, "metadata":{ "device":"RelayBox" } } [/code] The sources for the webapp are here: RelayBoxWebApp The sources for the firmware are here: RelayBox]]> to make this: ]]> 620 2015-06-05 13:10:02 2015-06-05 11:10:02 open closed relaybox publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug 17 daniel@wiznet.co.kr http://wiznet.co.kr 222.98.173.194 2015-07-01 10:28:36 2015-07-01 08:28:36 1 0 0 18 wollud@a385e-5.de 217.7.123.82 2015-07-01 10:52:45 2015-07-01 08:52:45 Meterbus master. It uses an Teensy 3.1 and your WIZnet breakout board. Yours, Wolfgang]]> 1 17 88446352 First ESP8266 Project: WiFi Power Switch https://a385e5.wordpress.com/2015/09/14/first-esp8266-project-wifi-power-switch/ Mon, 14 Sep 2015 20:40:00 +0000 whottgenroth http://a385e-5.de/?p=671 IMG_3826 The ESP8266 boards (ESP-01, cmp. http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-01 ) were lying on my desk for already some time. I never took the time to install the SDK on my Mac. Now I came around nodemcu ( http://www.nodemcu.com/index_en.html) and it is exactly what I was looking for since a while: Lua on a microcontroller. The idea behind is simple: When you are coding on a PC (or a Mac) and you have a rather small problem, a rather simple task to perform, you (or at least: I) would tend to use a scripting language. On a PC my first choice would be Python, other people prefer Perl or even Lua. On a microcontroller I also was faced those simple tasks (like toggling one bit based on an MQTT message) but never had a scripting language available. But here it is. No need to install an SDK on the PC, just an upload tool like nodemcu-uploader.py or esplorer is required. First the nodemcu firmware needs to be installed on the ESP8266 board. I found a very good intro here. My Lua script for this project running on the microcontroller consists of two files: ''init.lua'' and ''mqtt.lua''. Coding Lua for nodemcu isn't really intuitive, at least not when you come from Arduinos or so. You can't simple write a ''setup'' method and do all the initialization within and a ''loop'' method to be continuously run. Doing it this way would either drive you into the chip's watchdog and would consume any available CPU any and leave nothing for the WiFi and TCP/IP stack. You've to work with timers and callback functions. I found two really good articles here and here. What I also had to learn the hard way is that the nodemcu does not leave much space for the script. With a handful of debug messages containing some meaningful text (as it is no problem on the Arduino or Teensy) I over and over run into out of memory messages or even worse in misbehaving code. I finally came to this code:
    -- init.lua
    -- Constants
    SSID    = "MessWLAN"
    APPWD   = "geheim"
    CMDFILE = "mqtt.lua" 
    
    -- Some control variables
    wifiTrys     = 0    
    NUMWIFITRYS  = 200 
    
    function launch()
      print("A")
      print("B: " .. wifi.sta.getip())
      tmr.alarm(0, 5000, 0, function() dofile(CMDFILE) end )
    end
    
    function checkWIFI() 
      if ( wifiTrys > NUMWIFITRYS ) then
        print("C")
      else
        ipAddr = wifi.sta.getip()
        if ( ( ipAddr ~= nil ) and  ( ipAddr ~= "0.0.0.0" ) )then
          tmr.alarm( 1 , 500 , 0 , launch )
        else
          tmr.alarm( 0 , 2500 , 0 , checkWIFI)
          print("D: " .. wifiTrys)
          wifiTrys = wifiTrys + 1
        end 
      end 
    end
    
    print("E")
    
    ipAddr = wifi.sta.getip()
    if ( ( ipAddr == nil ) or  ( ipAddr == "0.0.0.0" ) ) then
      print("F")
      wifi.setmode( wifi.STATION )
      wifi.sta.config( SSID , APPWD)
      print("G")
      tmr.alarm( 0 , 2500 , 0 , checkWIFI )
    else
     launch()
    end
    
    BROKER = "172.16.2.15" 
    BRPORT = 1883
    BRUSER = ""
    BRPWD  = "" 
    CLIENTID = "ESP8266-" ..  node.chipid()
    
    SWITCH_PIN = 3
    
    SWITCH_ID = 1
    
    topics = {"IoT/Watchdog", "IoT/Switch" .. SWITCH_ID} 
    TOPIC_WATCHDOG = 1
    TOPIC_SWITCH = 2
    
    pub_sem = 0 
    current_topic  = 1
    topicsub_delay = 50 
    id2 = 0
    
    switch_state = false
    old_switch_state = true
    
    
    function alarm()
      node.restart()
    end
    
    
    gpio.mode(SWITCH_PIN, gpio.OUTPUT)
    gpio.write(SWITCH_PIN, gpio.LOW)
    
    m = mqtt.Client( CLIENTID, 120, BRUSER, BRPWD)
    tmr.alarm(4, 60000, 1, alarm)
    m:connect( BROKER , BRPORT, 0, function(conn)
         print("4")
         mqtt_sub()
    end)
    
    
    
    
    function mqtt_sub()
         if table.getn(topics) < current_topic then
              run_main_prog()
         else
              m:subscribe(topics[current_topic] , 0, function(conn)
              end)
              current_topic = current_topic + 1 
              tmr.alarm(5, topicsub_delay, 0, mqtt_sub )
         end
    end
    
    
    function publish_status()
       if pub_sem == 0 then 
         pub_sem = 1
         local uptime = tmr.time()
         local switch_state_pres = 0
         if (switch_state) then
            switch_state_pres = 1
         end
         local msg = "{"metadata":{"device":"WiFiSwitch" .. SWITCH_ID .. ""}, "data":{"uptime":" .. uptime .. ", "state":" .. switch_state_pres .. "}}"
         m:publish("IoT/Status/WiFiSwitch" .. SWITCH_ID, msg ,0,0, function(conn) 
            print("8: " .. id2 .. ", " .. switch_state_pres)
            pub_sem = 0 
            id2 = id2 +1 
         end)
       end  
    end
    
    
    
    function run_main_prog()
         tmr.alarm(3, 1000, 1, publish_status )
         m:on("message", function(conn, topic, data)
            print(topic .. ":" )
            if (data ~= nil ) then
              print ( data )
              if (topic == topics[TOPIC_SWITCH] and data == "switch on") then
                switch_state = true
              elseif (topic == topics[TOPIC_SWITCH] and data == "switch off") then
                switch_state = false
              elseif (topic == topics[TOPIC_SWITCH] and data == "switch toggle") then
                switch_state = not switch_state
              elseif (topic == topics[TOPIC_WATCHDOG] and data == "WauWau!") then
                print("9")
                tmr.alarm(4, 60000, 1, alarm)
              end
    
              if (switch_state ~= old_switch_state) then
                old_switch_state = switch_state
                if (switch_state) then
                  gpio.write(SWITCH_PIN, gpio.LOW)
                else
                  gpio.write(SWITCH_PIN, gpio.HIGH)
                end
              end
            end
          end )
    end
    
    IMG_3814 scan_006894 Important note: this thing runs on mains power. Don't play with it unless you know exactly what you are doing!]]>
    671 2015-09-14 22:40:00 2015-09-14 20:40:00 open open first-esp8266-project-wifi-power-switch publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug
    Something completely different: SNMP to MySQL https://a385e5.wordpress.com/2015/10/12/something-completely-different-snmp-to-mysql/ Mon, 12 Oct 2015 20:07:14 +0000 whottgenroth http://a385e-5.de/?p=695 [code language="csharp"] namespace Snmp2Mysql { class Program { static void Main(string[] args) { string dbConnStr = "SERVER=localhost;" + "DATABASE=statsdb;" + "UID=statsuser;" + "PASSWORD=xxx;"; DatabaseLink dbLink = new DatabaseLink(dbConnStr); using (DataCollector dc = dbLink.DataCollector) using (DeviceProvider dp = dbLink.DeviceProvider) { foreach (DeviceTuple dt in dp) { // Console.WriteLine("dt: {0}, {1}", dt.DeviceAddress, dt.Community); using (SnmpGetter snmpGetter = new SnmpGetter(dt.Community, dt.DeviceAddress)) { using (DeviceDataItemProvider ddip = dt.DeviceDataItemProvider) { foreach (DeviceDataItemTuple ddit in dt.DeviceDataItemProvider) { // Console.WriteLine(" ddit: {0}, {1}", ddit.Id, ddit.Oid); snmpGetter.AddOid(ddit.Id, ddit.Oid); } } try { SnmpGetterResultProvider res = snmpGetter.Exec(); foreach (SnmpGetterResult r in res) { // Console.WriteLine("{0} {1} {2} {3}: {4}", dt.Description, r.Index, r.Oid, r.Type, r.Value); dc.add((int)r.Index, r.Value); } } catch (SnmpGetterException) { // Console.WriteLine ("{0}, no result: {1}", dt.Description, e.Message); } } } } } } } [/code] [code language="SQL"] CREATE TABLE `device_t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `address` varchar(45) NOT NULL, `community` varchar(45) NOT NULL, `period` int(11) NOT NULL, `description` varchar(123) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `address_UNIQUE` (`address`) CREATE TABLE `dataitem_t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `oid` varchar(128) NOT NULL, `description` varchar(45) NOT NULL, `handling` varchar(45) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `oid_UNIQUE` (`oid`), UNIQUE KEY `description_UNIQUE` (`description`) CREATE TABLE `devicedataitem_t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `device` int(11) NOT NULL, `dataitem` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `devicedataitem_uk_idx` (`device`,`dataitem`), KEY `device_fk_idx` (`device`), KEY `dataitem_fk_idx` (`dataitem`), CONSTRAINT `dataitem_fk` FOREIGN KEY (`dataitem`) REFERENCES `dataitem_t` (`id`), CONSTRAINT `device_fk` FOREIGN KEY (`device`) REFERENCES `device_t` (`id`) CREATE TABLE `collecteddata_t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `devicedataitem` int(11) NOT NULL, `value` varchar(512) NOT NULL, `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `devicedataitem_fk_idx` (`devicedataitem`), CONSTRAINT `devicedataitem_fk` FOREIGN KEY (`devicedataitem`) REFERENCES `devicedataitem_t` (`id`) [/code] And here are the sources: Snmp2Mysql I'm using GPL code from MySQL (the MySQL Connector for .NET), find it here http://dev.mysql.com/downloads/connector/net/ and the SNMP library from http://www.snmpsharpnet.com. Ah, evaluation of the data? Haven't thought about, maybe using some tricky SQL statement or an Excel pivot table. I'll come back about that. ]]> 695 2015-10-12 22:07:14 2015-10-12 20:07:14 open open something-completely-different-snmp-to-mysql publish 0 0 post 0 _publicize_pending _edit_last _syntaxhighlighter_encoded original_post_id _wp_old_slug Why always SPI CS on pin 10? https://a385e5.wordpress.com/2016/03/03/why-always-spi-cs-on-pin-10/ Thu, 03 Mar 2016 21:06:14 +0000 whottgenroth http://a385e-5.de/?p=710 this great display. But why is TFT CS on pin 10? Bildschirmfoto 2016-03-03 um 21.48.49 Pin 10 is also the SPI CS for the Ethernet shield. Why not, for instance, pin 6: IMG_1211 Carefully lift pin 9 of the level shifter and connect it using a thin wire with pin 6 of the Arduino connector. And voila, both the display and the ethernet shield is working: IMG_1212]]> 710 2016-03-03 23:06:14 2016-03-03 21:06:14 open open why-always-spi-cs-on-pin-10 publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Integrated Thermometer and Timer https://a385e5.wordpress.com/2016/09/09/integrated-thermometer-and-timer/ Fri, 09 Sep 2016 15:07:37 +0000 whottgenroth http://a385e-5.de/?p=718 https://bitbucket.org/wollud1969/teathermotimer. img_0813 img_0814 img_0815 Schematics: 201609091558_0001 Calculation for measurement: 201609091558_0002 ]]> 718 2016-09-09 17:07:37 2016-09-09 15:07:37 open open integrated-thermometer-and-timer publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Integrated Tea Timer and Thermometer, Second Edition https://a385e5.wordpress.com/2016/09/12/integrated-tea-timer-and-thermometer-second-edition/ Mon, 12 Sep 2016 10:49:48 +0000 whottgenroth http://a385e-5.de/?p=729 SecondEdition. The schematic is more or less the same, just on digit display more and a reset push-button. img_0818 img_0821]]> 729 2016-09-12 12:49:48 2016-09-12 10:49:48 open open integrated-tea-timer-and-thermometer-second-edition publish 0 0 post 0 _publicize_pending _edit_last original_post_id _wp_old_slug Three Phase Inverter https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/ Fri, 14 Oct 2016 10:03:50 +0000 whottgenroth https://a385e5.wordpress.com/?p=739 img_0053 The signal shaping is done with four MSP430 controllers, three as PWMs to drive the bridge and one to coordinate and control the three PWMs. The PWM controller is decoupled from the IGBT driver (IR2184) using optic couplers. img_0054 The bridge is a three phase IGBT module is a 6MB120F-060 I got for a few euros at ebay. img_0055 To avoid high voltages in my setup I got a 24V async motor, also from ebay. img_0056 The PWMs generate the signal from a sine table generated using Excel. Those we got this signal: inverter0_2016-09-23-4 The main task of the coordinator is the start the PWMs with a phase shift of 120° (digital line 1, 2 and 3): 2016-10-13_1 Currently the PWMs start with random polarity. The interesting signals are the digital lines 4, 5 and 6. Sometimes the motor runs: 2016-10-13_works But sometimes not: 2016-10-13_works_not The firmware is available on bitbucket, for the PWM controllers here and for the coordinator here. ]]> 739 2016-10-14 10:03:50 2016-10-14 10:03:50 open open three-phase-inverter publish 0 0 post 0 _edit_last geo_public _publicize_job_id 19 https://a385e5.wordpress.com/2016/12/19/three-phase-inverter-second-service/ 192.0.80.57 2016-12-19 10:00:29 2016-12-19 10:00:29 0 pingback 0 0 akismet_result false akismet_history a:2:{s:4:"time";d:1482141630.1727149486541748046875;s:5:"event";s:9:"check-ham";} akismet_history a:2:{s:4:"time";d:1482146257.25055694580078125;s:5:"event";s:9:"check-ham";} Something really useful: 433MHz Power-Outlet Control https://a385e5.wordpress.com/2016/11/02/something-really-useful-433mhz-power-outlet-control/ Wed, 02 Nov 2016 11:52:37 +0000 whottgenroth https://a385e5.wordpress.com/?p=763
  • Control the switches from different manufacturers with one remote.
  • Control them from really remote - from the office or from holiday.
  • Control them programmatically.
  • There are a couple of Arduino libraries out there which are working with this cheap 433MHz senders and receivers from China:   sender_receiverI tried several ones, not all a really working, but finally I stopped at https://github.com/sui77/rc-switch, which works really good. First challenge now is to get the codes out of the remotes. For this purposes the rc-switch library provides an example sketch for the Arduino. I extended it a bit and got this: img_0101   img_0105   Software for this thing can be found here https://gitlab.com/wolutator/433Receiver.git. This is how it works: img_0111   The second challenge is to send the codes out into air and let the power switches receive them. This is done with this thing: img_0100 It is a Arduino Ethernet Board with a PoE-adapter and the 433MHz sender directly attached to it. I glued it under a table in the living room. This thing received messages via MQTT and send them out via 433MHz. The software is here https://gitlab.com/wolutator/Mqtt433Gateway.git BTW: do not expect beautiful software, this has been made on Halloween evening and night when waiting for the kids to come home. ]]>
    763 2016-11-02 11:52:37 2016-11-02 11:52:37 open open something-really-useful-433mhz-power-outlet-control publish 0 0 post 0 _edit_last geo_public _publicize_job_id
    Three Phase Inverter, Second Service https://a385e5.wordpress.com/2016/12/19/three-phase-inverter-second-service/ Mon, 19 Dec 2016 10:00:25 +0000 whottgenroth https://a385e5.wordpress.com/?p=808 https://a385e5.wordpress.com/2016/10/14/three-phase-inverter/. In the first try I used four MSP430 microcontroller, one for the PWM of each phase and one to coordinate the phase shift of the three phases. In this experiment I put everything on one STM32 microcontroller. Here I used the DMA feature to feed data into the PWM counter and I calculated the sine values at start-up time on the microcontroller. Additionally I put in the driver for a CAN interface, however, it is not yet supported in the firmware. img_0140 From top to bottom you see the CAN driver, the STM32 board, opto coupler to separate logic and power part and then from right to left in the bottom half the low-side/high-side MOSFET drivers and the MOSFETs. img_0144 The power supply consists of a traditional transformer and (top right) the rectifier and condensers for the power part, together with the 12V regulator for the drivers and (top left) the regulators for 3.3V and 5V for the logic part. img_0146 The motor is the same as in the earlier experiment - I don't have too much of them. And everything is put onto one board:     img_0143 (Some space reserved for a HMI unit to be connected via CAN ...)]]> 808 2016-12-19 10:00:25 2016-12-19 10:00:25 open open three-phase-inverter-second-service publish 0 0 post 0 _rest_api_published _rest_api_client_id _publicize_job_id _edit_last geo_public SPI Slave Select Multiplication for the Raspberry Pi https://a385e5.wordpress.com/?p=837 Mon, 30 Nov -0001 00:00:00 +0000 whottgenroth https://a385e5.wordpress.com/?p=837 IMG_0594  ]]> 837 2017-07-04 11:08:51 0000-00-00 00:00:00 open open draft 0 0 post 0 Configuration-Webserver for ESP8266 Projects https://a385e5.wordpress.com/2018/01/26/configuration-webserver-for-esp8266-projects/ Fri, 26 Jan 2018 09:08:25 +0000 whottgenroth https://a385e5.wordpress.com/?p=843 [code language="python" title="configGen.py"] #!/usr/bin/python from Cheetah.Template import Template configItems = [ {"label":"_", "key":"magic", "type":"I", "default": ""}, {"label":"Wifi SSID", "key":"wifiSsid", "type":"C", "length":32, "default":"test"}, {"label":"Wifi Key", "key":"wifiKey", "type":"C", "length":64, "default":"geheim"}, {"label":"MQTT Broker", "key":"mqttBroker", "type":"C", "length":64, "default":"broker.hottis.de"}, {"label":"MQTT Username", "key":"mqttUser", "type":"C", "length":32, "default":"esp1"}, {"label":"MQTT Password", "key":"mqttPass", "type":"C", "length":32, "default":"geheim"}, {"label":"MQTT ClientId", "key":"mqttClientId", "type":"C", "length":32, "default":"changeThis"}, {"label":"MQTT Topic", "key":"mqttTopic", "type":"C", "length":64, "default":"IoT/espThermometer2/location/measurement"}, {"label":"MQTT Port", "key":"mqttPort", "type":"I", "default":8883}, {"label":"Measure Period", "key":"measurePeriod", "type":"I", "default":300} ] h_file = Template(file="configuration_h.tmpl", searchList=[{"configItems":configItems}]) open('configuration.h','w').write(str(h_file)) c_file = Template(file="configuration_c.tmpl", searchList=[{"configItems":configItems}]) open('configuration.cpp','w').write(str(c_file)) [/code] The two templates are: [code language="C" title="configuration_h.tmpl"] typedef struct { #for $configItem in $configItems #if $configItem.type == 'C' char ${configItem.key}[$configItem.length]; #else if $configItem.type == 'I' uint32_t $configItem.key; #end if #end for } tConfigBlock; extern const uint32_t MAGIC; extern tConfigBlock configBlock; void configServeIndex(); void configServeGetConfiguration(); void showConfiguration(); [/code] And: [code language="C" title="configuration_c.tmpl"] #raw #include <Arduino.h> #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <EEPROM.h> #include "defines.h" #include "configuration.h" #end raw tConfigBlock configBlock; const uint32_t MAGIC = 0xC0DE0001; extern ESP8266WebServer webServer; bool configSaved = false; void configServeIndex() { bool configValid = (configBlock.magic == MAGIC); if (! configValid) { #for $configItem in $configItems #if $configItem.label != "_" #if $configItem.type == "C" strcpy(configBlock.$configItem.key, "$configItem.default"); #else if $configItem.type == "I" configBlock.$configItem.key = $configItem.default; #end if #end if #end for } String buffer = "<!doctype html" "<html lang=\"en\">" " <head>" " <title>ESP8266 Thermometer Configuration Page</title>" " </head>" " <body>" " <h1>ESP8266 Configuration Page</h1>"; if (configSaved) { configSaved = false; buffer += "<h2>Configuration saved</h2>"; } buffer += " <form action=\"/config\" method=\"GET\">" " <table>" #for $configItem in $configItems #if $configItem.label != "_" " <tr>" " <td>" " <label for\"$configItem.key\">$configItem.label</label>" " </td><td>" " <input type=\"text\" name=\"$configItem.key\" id=\"$configItem.key\" "; #if $configItem.type == "C" buffer += " size=\"$configItem.length\" "; buffer += " value=\""; buffer += configBlock.$configItem.key; buffer += "\""; #else if $configItem.type == "I" buffer += " value=\""; buffer += configBlock.$configItem.key; buffer += "\""; #end if buffer += " />" " </td>" " </tr>" #end if #end for " <tr>" " <td colspan=\"2\">" " <button type=\"submit\">Save</button>" " </td>" " </tr>" " </table>" " </form>" " </body>" "</html>"; webServer.send(200, "text/html", buffer); #ifdef DEBUG Serial.println("indexHtml request served"); #endif } void configServeGetConfiguration() { String arg; #for $configItem in $configItems #if $configItem.label != "_" arg = webServer.arg("$configItem.key"); #if $configItem.type == "C" strcpy(configBlock.$configItem.key, arg.c_str()); #else if $configItem.type == "I" configBlock.$configItem.key = atoi(arg.c_str()); #end if #end if #end for configBlock.magic = MAGIC; showConfiguration(); EEPROM.begin(512); EEPROM.put(EEPROM_ADDR, configBlock); EEPROM.commit(); Serial.println("EEPROM saved"); configSaved = true; webServer.sendHeader("Location", String("/"), true); webServer.send(302, "text/plain", ""); //webServer.send(200, "text/html", "configuration saved"); } void showConfiguration() { Serial.println("Configuration is"); #for $configItem in $configItems Serial.print("$configItem.key = "); Serial.println(configBlock.$configItem.key); #end for Serial.println("---"); } [/code] Besides these generated files I also needed a framework to distinguish between "configuration mode" and "production mode" and in configuration mode to start the WiFi accesspoint. Since I'm programming the ESP8266 in an Eclipse-based Arduino-environment, this is all done in the setup() and loop() function: [code language="C"] void setup() { startTime = millis(); #ifdef DEBUG Serial.begin(115200); Serial.println("Starting ..."); #endif pinMode(CONFIG_SWITCH, INPUT_PULLUP); pinMode(LED_PIN, OUTPUT); EEPROM.begin(512); EEPROM.get(EEPROM_ADDR, configBlock); Serial.print("Magic: "); Serial.println(configBlock.magic); configMode = ((LOW == digitalRead(CONFIG_SWITCH)) || (configBlock.magic != MAGIC)); if (configMode) { #ifdef DEBUG Serial.println("Configuration mode"); #endif digitalWrite(LED_PIN, LOW); setupConfiguration(); } else { #ifdef DEBUG Serial.println("Production mode"); Serial.println(); Serial.println(); showConfiguration(); #endif digitalWrite(LED_PIN, HIGH); setupProduction(); } #ifdef DEBUG Serial.println("Started."); #endif } void loop() { if (configMode) { loopConfiguration(); } else { loopProduction(); } } void setupConfiguration() { WiFi.mode(WIFI_AP); WiFi.softAP(CONFIG_SSID); #ifdef DEBUG Serial.println("AP started"); #endif webServer.on("/", configServeIndex); webServer.on("/config", configServeGetConfiguration); webServer.onNotFound(configServeNotFound); webServer.begin(); #ifdef DEBUG Serial.println("Webserver started"); #endif } void loopConfiguration() { webServer.handleClient(); } [/code] This code can be also found embedded into two of my projects. Find them at https://gitlab.com/wolutator/EspThermometer2 and https://gitlab.com/wolutator/TouchSwitch. ]]> 843 2018-01-26 09:08:25 2018-01-26 09:08:25 open open configuration-webserver-for-esp8266-projects publish 0 0 post 0 _edit_last geo_public _publicize_job_id timeline_notification Home Automation Hub https://a385e5.wordpress.com/2018/02/22/home-automation-hub/ Thu, 22 Feb 2018 17:50:28 +0000 whottgenroth https://a385e5.wordpress.com/?p=871 IMG_0195 A Raspberry Pi runs Homegear and homekit2mqtt. It is equipped with two 866MHz radios for Homematic and MAX!. Additionally an MQTT broker and the homegrown control software (https://gitlab.com/wolutator/dispatcher_ng), which communicates with Homegear, homekit2mqtt, the MQTT433MHz bridge (see below) and other homegrown web clients via MQTT, resists on it. IMG_0307 There is also a DIY MQTT to 433MHz bridge to control Intertechno and other 433MHz plugs (https://gitlab.com/wolutator/Mqtt433Gateway).         IMG_0308 An finally a Philips Hue Bridge powered using a PoE adaptor for Philips and IKEA Tradfri bulbs, paired to Homegear.]]> 871 2018-02-22 17:50:28 2018-02-22 17:50:28 open open home-automation-hub publish 0 0 post 0 timeline_notification _rest_api_published _rest_api_client_id _publicize_job_id My way of STM32 development https://a385e5.wordpress.com/?p=886 Mon, 30 Nov -0001 00:00:00 +0000 whottgenroth https://a385e5.wordpress.com/?p=886 886 2018-03-14 13:43:18 0000-00-00 00:00:00 open open draft 0 0 post 0 _edit_last PubKeys https://a385e5.wordpress.com/pubkeys/ Wed, 21 Mar 2018 12:13:52 +0000 whottgenroth https://a385e5.wordpress.com/?page_id=887 887 2018-03-21 12:13:52 2018-03-21 12:13:52 closed closed pubkeys publish 0 0 page 0 _wp_page_template _publicize_pending _rest_api_published _rest_api_client_id _edit_last geo_public <link>https://a385e5.wordpress.com/?p=896</link> <pubDate>Mon, 30 Nov -0001 00:00:00 +0000</pubDate> <dc:creator>whottgenroth</dc:creator> <guid isPermaLink="false">https://a385e5.wordpress.com/?p=896</guid> <description/> <content:encoded><![CDATA[<h1>Signing Git commits</h1> <h2>Motivation and Introduction</h2> In a company internal environment you can be quite sure that the one who is mentioned in a commit is actually the one who issued that commit. That was me: <img class="alignnone size-full wp-image-897" src="https://a385e5.files.wordpress.com/2018/03/git-signing-1.png" alt="git-signing-1.PNG" width="829" height="93" /> However, it is so easy to fake the committer's name. This was me too: <img class="alignnone size-full wp-image-898" src="https://a385e5.files.wordpress.com/2018/03/git-signing-2.png" alt="git-signing-2.PNG" width="820" height="92" /> Of course no one would do something like this in a professional environment. However, under particular circumstances code signing might become required. Using Git and Gitlab this is rather easy (brief overview, details follow): <ul> <li>Preparation <ol> <li>Get the gnupg software.</li> <li>Generate yourself a public/private key tuple.</li> <li>Upload your **public** key to Gitlab and to an internal or public keyserver.</li> <li>Keep your **private** key secret, however, make sure you have a backup of it. But also keep the backup secret.</li> <li>Configure your local Git installation to sign your commits.</li> </ol> </li> <li>Actual signing of a commit <ol> <li>If you configured your Git installation correctly: just commit. You will be asked for the passphrase of your private key, however, Git is taking care for raising that question, you don't have to remember yourself.</li> </ol> </li> </ul> Afterwards a signed commit looks like this: <img class="alignnone size-full wp-image-899" src="https://a385e5.files.wordpress.com/2018/03/git-signing-3.png" alt="git-signing-3.PNG" width="820" height="75" /> Now, you can be sure that this commit has been issued by me. Gitlab is verifying this using the public key I've uploaded and everyone could verify on her own by downloading my public key from the keyserver and using the ''verify-commit'' command. <h2>Details</h2> <h3>Required software</h3> Get the Windows installation package of the gnupg software here <a href="https://www.gpg4win.de/">https://www.gpg4win.de/</a>. The current version at the time of writing is 3.0.3. When you are on Linux or Mac, install gpg in the platform specific way. Just install it. <h3>Generate a public/private key tuple</h3> Once <code>gpg</code> is installed you can generate a keypair using <code>gpg --generate-key</code> ]]></content:encoded> <excerpt:encoded><![CDATA[]]></excerpt:encoded> <wp:post_id>896</wp:post_id> <wp:post_date>2018-03-26 16:34:06</wp:post_date> <wp:post_date_gmt>0000-00-00 00:00:00</wp:post_date_gmt> <wp:comment_status>open</wp:comment_status> <wp:ping_status>open</wp:ping_status> <wp:post_name/> <wp:status>draft</wp:status> <wp:post_parent>0</wp:post_parent> <wp:menu_order>0</wp:menu_order> <wp:post_type>post</wp:post_type> <wp:post_password/> <wp:is_sticky>0</wp:is_sticky> <category domain="category" nicename="uncategorized"><![CDATA[Uncategorized]]></category> </item> <item> <title>Yet Another Debouncing Method https://a385e5.wordpress.com/2018/04/30/yet-another-debouncing-method/ Mon, 30 Apr 2018 09:27:52 +0000 whottgenroth https://a385e5.wordpress.com/?p=900 20180430110848869_0001.jpg (The double-lined states are action-states which send out the related information.) At least for me, this approach is working very reliable so far, I'm quite happy with it. [code language="C"] enum tPressedState { psHIGH, psLOW, psACCEPTED_LOW, psLONG_START, psLONG_CONT, psLONG_CONT_SEND, psLONG_END, psSHORT, psINVALID }; typedef struct { uint8_t index; uint8_t buttonPin; tPressedState pressedState; tPressedState oldPressedState; uint32_t lastStateChange; } tButton; tButton buttons[] = { { 1, SWITCH_1, psHIGH, psINVALID, 0 }, { 2, SWITCH_2, psHIGH, psINVALID, 0 }, { 3, SWITCH_3, psHIGH, psINVALID, 0 }, { 0, 0, psINVALID, psINVALID, 0 } // END MARKER }; static void buttonHandler(tButton *button) { uint32_t currentMicros = micros(); uint8_t buttonState = digitalRead(button->buttonPin); #ifdef DEBUG if (button->oldPressedState != button->pressedState) { Serial.print("Index "); Serial.print(button->index); Serial.print(", state changed from "); Serial.print(button->oldPressedState); Serial.print(" to "); Serial.print(button->pressedState); Serial.println(); button->oldPressedState = button->pressedState; } #endif switch (button->pressedState) { case psHIGH: if (buttonState == LOW) { button->pressedState = psLOW; button->lastStateChange = currentMicros; } break; case psLOW: if (buttonState == HIGH) { button->pressedState = psHIGH; button->lastStateChange = currentMicros; } else { if (currentMicros > (button->lastStateChange + configBlock.debounce)) { button->pressedState = psACCEPTED_LOW; button->lastStateChange = currentMicros; } } break; case psACCEPTED_LOW: if (buttonState == HIGH) { button->pressedState = psSHORT; button->lastStateChange = currentMicros; } if (currentMicros > (button->lastStateChange + (configBlock.longPress * 1000))) { button->pressedState = psLONG_START; button->lastStateChange = currentMicros; } break; case psSHORT: sendMsg(button->index, "PRESS_SHORT"); button->pressedState = psHIGH; button->lastStateChange = currentMicros; break; case psLONG_START: sendMsg(button->index, "PRESS_LONG_START"); button->pressedState = psLONG_CONT; button->lastStateChange = currentMicros; break; case psLONG_CONT: if (buttonState == HIGH) { button->pressedState = psLONG_END; button->lastStateChange = currentMicros; } if (currentMicros > (button->lastStateChange + (configBlock.longPressRepeat * 1000))) { button->pressedState = psLONG_CONT_SEND; button->lastStateChange = currentMicros; } break; case psLONG_CONT_SEND: sendMsg(button->index, "PRESS_LONG_CONT"); button->pressedState = psLONG_CONT; button->lastStateChange = currentMicros; break; case psLONG_END: sendMsg(button->index, "PRESS_LONG_END"); button->pressedState = psHIGH; button->lastStateChange = currentMicros; break; default: button->pressedState = psHIGH; button->lastStateChange = currentMicros; } } [/code] Find it embedded in the code of a small ESP8266-based switch thing I'm using in my home automation setup (home grown control code (https://gitlab.com/wolutator/dispatcher_ng), homegear (https://homegear.eu/) for device integration and openHAB (https://www.openhab.org/) as user interface) here: https://gitlab.com/wolutator/MySwitch. ]]> 900 2018-04-30 09:27:52 2018-04-30 09:27:52 open open yet-another-debouncing-method publish 0 0 post 0 _rest_api_published _rest_api_client_id _publicize_job_id timeline_notification