<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://revspace.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oberoid</id>
	<title>RevSpace - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://revspace.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oberoid"/>
	<link rel="alternate" type="text/html" href="https://revspace.nl/Special:Contributions/Oberoid"/>
	<updated>2026-05-15T04:38:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24883</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24883"/>
		<updated>2020-03-08T09:15:54Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Pins ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf STM32 Reference Manual M0]&lt;br /&gt;
# &#039;&#039;The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors&#039;&#039;. Yiu, Joseph (2015).&lt;br /&gt;
&lt;br /&gt;
== Peripherals ==&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
= Programming (C) =&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
== Books ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
== Libraries ==&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
== Code examples ==&lt;br /&gt;
# Make files (?)&lt;br /&gt;
&lt;br /&gt;
== Online tutorials ==&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24882</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24882"/>
		<updated>2020-03-08T09:13:48Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Libraries and code examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Pins ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf STM32 Reference Manual M0]&lt;br /&gt;
# &#039;&#039;The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors&#039;&#039;. Yiu, Joseph (2015).&lt;br /&gt;
&lt;br /&gt;
== Peripherals ==&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
= Programming (C) =&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
== Books ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
== Libraries and code examples ==&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
== Make files examples ===&lt;br /&gt;
&lt;br /&gt;
== Online tutorials ==&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24881</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24881"/>
		<updated>2020-03-08T09:06:48Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Libraries and example code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Pins ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf STM32 Reference Manual M0]&lt;br /&gt;
# &#039;&#039;The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors&#039;&#039;. Yiu, Joseph (2015).&lt;br /&gt;
&lt;br /&gt;
== Peripherals ==&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
= Programming (C) =&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
== Books ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
== Libraries and code examples ==&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
&lt;br /&gt;
== Online tutorials ==&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24880</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24880"/>
		<updated>2020-03-08T09:05:58Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Programming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Pins ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf STM32 Reference Manual M0]&lt;br /&gt;
# &#039;&#039;The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors&#039;&#039;. Yiu, Joseph (2015).&lt;br /&gt;
&lt;br /&gt;
== Peripherals ==&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
= Programming (C) =&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
== Books ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
== Libraries and example code ==&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
&lt;br /&gt;
== Online tutorials ==&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24879</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24879"/>
		<updated>2020-03-08T09:04:21Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Reference page for the STM32 F031k6 Microcontroller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Pins ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf STM32 Reference Manual M0]&lt;br /&gt;
# &#039;&#039;The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors&#039;&#039;. Yiu, Joseph (2015).&lt;br /&gt;
&lt;br /&gt;
== Peripherals ==&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
= Programming =&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
== Books ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
== Libraries and example code ==&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
&lt;br /&gt;
== Online tutorials ==&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24878</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24878"/>
		<updated>2020-03-08T09:02:03Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reference page for the STM32 F031k6 Microcontroller =&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
=== Registers ===&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf STM32 Reference Manual M0]&lt;br /&gt;
# &#039;&#039;The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors&#039;&#039;. Yiu, Joseph (2015).&lt;br /&gt;
&lt;br /&gt;
=== Peripherals ===&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
=== Books ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
=== Libraries and example code ===&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
&lt;br /&gt;
=== Online Tutorials ===&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24877</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24877"/>
		<updated>2020-03-08T09:00:19Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Registers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reference page for the STM32 F031k6 Microcontroller =&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
=== Registers ===&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf STM32 Reference Manual M0]&lt;br /&gt;
# &#039;&#039;The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors&#039;&#039;. Yiu, Joseph (2015).&lt;br /&gt;
&lt;br /&gt;
=== Peripherals ===&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
=== Books ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
&lt;br /&gt;
=== Online Tutorials ===&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24876</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24876"/>
		<updated>2020-03-08T08:59:17Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reference page for the STM32 F031k6 Microcontroller =&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
=== Registers ===&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    Yiu, Joseph (2015)&lt;br /&gt;
=== Peripherals ===&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
=== Books ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]. :Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART]&lt;br /&gt;
&lt;br /&gt;
=== Online Tutorials ===&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24875</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24875"/>
		<updated>2020-03-08T08:58:57Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reference page for the STM32 F031k6 Microcontroller =&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
=== Registers ===&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    Yiu, Joseph (2015)&lt;br /&gt;
=== Peripherals ===&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
=== Books ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3].Examples: [https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f0/stm32f0-discovery UART] &lt;br /&gt;
&lt;br /&gt;
=== Online Tutorials ===&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24874</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24874"/>
		<updated>2020-03-08T08:54:41Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Reference page for the STM32 F031k6 Microcontroller =&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
=== Registers ===&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    Yiu, Joseph (2015)&lt;br /&gt;
=== Peripherals ===&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
=== Books ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]&lt;br /&gt;
&lt;br /&gt;
=== Online Tutorials ===&lt;br /&gt;
&lt;br /&gt;
== UART: ==&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24873</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24873"/>
		<updated>2020-03-08T08:51:35Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
== Pinouts ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    Yiu, Joseph (2015)&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
=== Books ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]&lt;br /&gt;
&lt;br /&gt;
=== Online Tutorials ===&lt;br /&gt;
&lt;br /&gt;
== UART: ==&lt;br /&gt;
&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24872</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24872"/>
		<updated>2020-03-08T08:50:59Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Programming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
== Pinouts ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    Yiu, Joseph (2015)&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
=== Books ===&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
=== Library ===&lt;br /&gt;
# [https://github.com/libopencm3/libopencm3 libopencm3]&lt;br /&gt;
&lt;br /&gt;
=== Online Tutorials ===&lt;br /&gt;
&lt;br /&gt;
== UART: ==&lt;br /&gt;
&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24871</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24871"/>
		<updated>2020-03-07T23:09:28Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Microcontroller stm32f031k6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box. Its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every Tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Part optical chambre, photo Cmpxchg]]&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|Pins cut off, photo Cmpxchg]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[[Stm32_F031k6_Reference|Stm32 f031k6 reference page]]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24870</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24870"/>
		<updated>2020-03-07T23:06:27Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Re-flashing the STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box. Its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every Tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Part optical chambre, photo Cmpxchg]]&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|Pins cut off, photo Cmpxchg]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24869</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24869"/>
		<updated>2020-03-07T22:58:20Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
== Pinouts ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    Yiu, Joseph (2015)&lt;br /&gt;
== Programming ==&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
== UART: ==&lt;br /&gt;
&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24868</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24868"/>
		<updated>2020-03-07T22:57:32Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
== Pinouts ==&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
== Registers ==&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
== Programming ==&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
== UART: ==&lt;br /&gt;
# The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    Yiu, Joseph (2015)&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24867</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24867"/>
		<updated>2020-03-07T22:53:35Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
UART:&lt;br /&gt;
The definitive guide to ARM® Cortex®-M0 and Cortex-M0+ processors    &lt;br /&gt;
Yiu, Joseph, author.   &lt;br /&gt;
Kidlington, Oxford ; Waltham, Massachusetts : Newner, an imprint of Elsevier, 2nd ed., 2015&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24866</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24866"/>
		<updated>2020-03-07T22:48:33Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf PrimeCell® UART (PL011)]&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24865</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24865"/>
		<updated>2020-03-07T21:55:02Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)], [https://github.com/geoffreymbrown/STM32F0-Template source code]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24864</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24864"/>
		<updated>2020-03-07T21:51:23Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24863</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24863"/>
		<updated>2020-03-07T21:50:37Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)]&lt;br /&gt;
# [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm GNU Arm Toolchain]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24862</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24862"/>
		<updated>2020-03-07T21:44:04Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;br /&gt;
# [https://legacy.cs.indiana.edu/~geobrown/book.pdf Discovering the STM32 Microcontroller, Geoffry Brown (2016)]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24861</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24861"/>
		<updated>2020-03-07T21:41:20Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;br /&gt;
# [https://www.st.com/content/st_com/en/support/learning/stm32-education/text-books.html stm32-education text-books]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24860</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24860"/>
		<updated>2020-03-07T21:37:08Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;br /&gt;
# [https://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf Reference Manual M0]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24859</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24859"/>
		<updated>2020-03-07T21:30:56Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24858</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24858"/>
		<updated>2020-03-07T21:30:39Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Datasheet: [https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24856</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24856"/>
		<updated>2020-03-07T21:29:24Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Datasheet:&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24855</id>
		<title>Stm32 F031k6 Reference</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Stm32_F031k6_Reference&amp;diff=24855"/>
		<updated>2020-03-07T21:28:43Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: Created page with &amp;quot;Reference page for the STM32 F031k6 Microcontroller&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference page for the STM32 F031k6 Microcontroller&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24854</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24854"/>
		<updated>2020-03-07T21:25:04Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* The board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box. Its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every Tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Part optical chambre, photo Cmpxchg]]&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins, photo Cmpxchg]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24853</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24853"/>
		<updated>2020-03-07T21:22:18Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Re-flashing the STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box. Its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every Tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins, photo Cmpxchg]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24852</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24852"/>
		<updated>2020-03-07T20:55:48Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Closed Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box. Its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every Tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24851</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24851"/>
		<updated>2020-03-07T20:54:01Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* The board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24850</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24850"/>
		<updated>2020-03-07T20:51:12Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Re-flashing the STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24849</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24849"/>
		<updated>2020-03-07T20:50:13Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Re-flashing the STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24848</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24848"/>
		<updated>2020-03-07T20:49:51Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Develop &amp;quot;bare-metal&amp;quot; drivers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24847</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24847"/>
		<updated>2020-03-07T20:47:52Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Operation of the SDS011 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
Scattering particles are detected when being hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24846</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24846"/>
		<updated>2020-03-07T20:43:57Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Re-flashing the STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource bootloader on it.&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24845</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24845"/>
		<updated>2020-03-07T20:43:04Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Develop &amp;quot;bare-metal&amp;quot; drivers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24844</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24844"/>
		<updated>2020-03-07T20:42:06Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Develop &amp;quot;bare-metal&amp;quot; drivers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
[[File:Connection SDS011, photo Cmpxchg.jpg|thumb|Connections, photo Cmpxchg]]&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=File:Connection_SDS011,_photo_Cmpxchg.jpg&amp;diff=24843</id>
		<title>File:Connection SDS011, photo Cmpxchg.jpg</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=File:Connection_SDS011,_photo_Cmpxchg.jpg&amp;diff=24843"/>
		<updated>2020-03-07T20:41:31Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connections SDS011&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24842</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24842"/>
		<updated>2020-03-07T19:54:49Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24841</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24841"/>
		<updated>2020-03-07T19:52:46Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Re-flashing the STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24840</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24840"/>
		<updated>2020-03-07T19:52:26Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* The sensor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24839</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24839"/>
		<updated>2020-03-07T19:49:41Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Re-flashing the STM32 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
[[File:Cut off pins, photo cmpxchg.jpg|thumb|cut of pins]]&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=File:Cut_off_pins,_photo_cmpxchg.jpg&amp;diff=24838</id>
		<title>File:Cut off pins, photo cmpxchg.jpg</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=File:Cut_off_pins,_photo_cmpxchg.jpg&amp;diff=24838"/>
		<updated>2020-03-07T19:49:26Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cut of pins, photo Cmpxchg&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24837</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24837"/>
		<updated>2020-03-07T19:47:16Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* The sensor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:Optical Chambre SDS011, photo Cmpxchg.jpg|thumb|Optical Chambre, photo Cmpxchg]]&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=File:Optical_Chambre_SDS011,_photo_Cmpxchg.jpg&amp;diff=24836</id>
		<title>File:Optical Chambre SDS011, photo Cmpxchg.jpg</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=File:Optical_Chambre_SDS011,_photo_Cmpxchg.jpg&amp;diff=24836"/>
		<updated>2020-03-07T19:46:17Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dismantled optical chambre&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24835</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24835"/>
		<updated>2020-03-07T19:42:11Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;br /&gt;
&lt;br /&gt;
== Calibrating ==&lt;br /&gt;
Not yet decided upon how. Probably using climbing chalk.&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24834</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24834"/>
		<updated>2020-03-07T19:40:47Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Scheduling tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS. How we are going to schedule tasks is yet to be determined.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24833</id>
		<title>Understanding the SDS011 particle sensor</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=Understanding_the_SDS011_particle_sensor&amp;diff=24833"/>
		<updated>2020-03-07T19:30:12Z</updated>

		<summary type="html">&lt;p&gt;Oberoid: /* Sources and references */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32 f031k6.jpg|thumb|F031K6, photo Cmpxchg]]&lt;br /&gt;
== Understanding the SDS011 particle sensor ==&lt;br /&gt;
&lt;br /&gt;
On March 3rd, Cmpxchg and Oberoid placed the infamous SDS011 particle sensor on the dissection table at Revspace.&lt;br /&gt;
The SDS011 is extensively used for citizen science projects when air quality is in doubt.&lt;br /&gt;
&lt;br /&gt;
Our goal is to create a new algorithm for its micro-controller which can be published in the public domain and is therefore open for the scrutiny of others.&lt;br /&gt;
This article is a log of our findings while opening up the sensor and also a description of the process of understand the physics behind the functioning of the device.&lt;br /&gt;
&lt;br /&gt;
=== Operation of the SDS011 ===&lt;br /&gt;
&lt;br /&gt;
In the SDS011 particles are detected by recording the light that is scattered by the dust particle when hit by a laser beam. The scatter patterns are picked up by a photo-diode which signal is amplified and then fed to a micro-controller. The micro-controller interprets the data stream and relates it to known properties of representative dust samples. The algorithm behind the this fitting is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Closed Firmware ===&lt;br /&gt;
Recently a number of scientific articles appeared that try to assess the validity of the SDS011 sensor.&lt;br /&gt;
However, little is published about the exact physical inner workings of the device, nor on its pre-programmed firmware. Until now researchers take the functioning of the device as a black box, its firmware is considered corperate property and therefore cannot be tinkered with.&lt;br /&gt;
&lt;br /&gt;
The SDS011 is also the preferred sensor in most citizen science campaigns of governmental initiatives in Germany, The Netherlands and Belgium. For example in the monitoring campaign “de Schone Luchten”, the SDS011 plays a central role in gathering date for the public dialogue about dust exhaust of a local steel mill. Within the scientific community as in the groups of concerning citizens there is a growing concern about the the scientific significance of the data collected by the  SDS011.&lt;br /&gt;
&lt;br /&gt;
To estimate the scientific value of the data gathered by the SDS011, we think that it is important that the working of the device should be open to the public. Therefore we decided to open up the apparatus and investigate its inner workings.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to not to crack the corporate code of the SDS011, but instead to reprogram its micro-controller with a new algorithm that forms the basis for future development of particle sensors in the public domain.&lt;br /&gt;
&lt;br /&gt;
People that are interested in this project can visit the RevSpace Hackerspace, which is accessible every tuesday on the social night.&lt;br /&gt;
&lt;br /&gt;
== Reverse engineering ==&lt;br /&gt;
The follow effort needs to be done to get more insights about the pcb board and the sensor. &lt;br /&gt;
This info can then be used to feed a physicist with a theoretical model of potential measurements that can be performed with this setup.&lt;br /&gt;
&lt;br /&gt;
=== The board  ===&lt;br /&gt;
To do:  &lt;br /&gt;
# Determine the GPO and GPI of the STM32 while processing &lt;br /&gt;
# Measure the control circuit of the laser module. &lt;br /&gt;
# Create a matching circuit, filtering and gain of the instrumentation amplifier analyzed.&lt;br /&gt;
&lt;br /&gt;
=== The sensor ===&lt;br /&gt;
To do:&lt;br /&gt;
# Determine type of the photosensor.&lt;br /&gt;
# Measure size of size of hole under the detection area.&lt;br /&gt;
# Create a layout of the lightbox. Angles of second order reflections drawn. &lt;br /&gt;
# Measure the speed of the airflow.  &lt;br /&gt;
# Estimate the focus area of laser beam on the airflow.&lt;br /&gt;
&lt;br /&gt;
=== Re-flashing the STM32 ===&lt;br /&gt;
A complication for re-programming the STM32 is that the programming pins (SWD) are cut off in the manufacturing process, see photo.&lt;br /&gt;
We discerned three possible scenario&#039;s for re-flashing the firmware.&lt;br /&gt;
# Reconnecting the copper ends of the cut-off SWD pins&lt;br /&gt;
# Flashing via the UART, with help from the BootP pin.&lt;br /&gt;
# Replace the microcontroller on the pcb with a new one, and put an opensource booloader on it&lt;br /&gt;
&lt;br /&gt;
=== Develop &amp;quot;bare-metal&amp;quot; drivers ===&lt;br /&gt;
Create bare-metal drivers for:&lt;br /&gt;
# Blink a led, visual debugging&lt;br /&gt;
# Laser control, PWM &lt;br /&gt;
# ADC&lt;br /&gt;
# UART&lt;br /&gt;
The drivers can be tested with short burst of raw measurements, to be output over UART.&lt;br /&gt;
The developing of the drivers using a easy to use tool chain needs to be established.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling tasks ===&lt;br /&gt;
We are not going to use a RTOS.&lt;br /&gt;
&lt;br /&gt;
== Sources and references ==&lt;br /&gt;
=== Microcontroller stm32f031k6 ===&lt;br /&gt;
[https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f0-series/stm32f0x1/stm32f031k6.html Datasheet smt32f031k6]&lt;/div&gt;</summary>
		<author><name>Oberoid</name></author>
	</entry>
</feed>