<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki-colabs.commonroom.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Colabs+Admin</id>
	<title>IoT Colabs Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-colabs.commonroom.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Colabs+Admin"/>
	<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/Special:Contributions/Colabs_Admin"/>
	<updated>2026-06-23T15:40:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=348</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=348"/>
		<updated>2026-06-03T03:15:50Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Commonroom-logo.png|300x300px|link=https://commonroom.info/]][[File:co_labs-logo-3.png|200px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Welcome to the Community-based Innovation Lab for Climate Resilience (Co_LABS) Wiki. To help you find information quickly, please refer to the Table of Contents on the sidebar to jump directly to specific sections or steps.&lt;br /&gt;
&lt;br /&gt;
The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=347</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=347"/>
		<updated>2026-05-29T07:33:19Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Commonroom-logo.png|300x300px|link=https://commonroom.info/]][[File:co_labs-logo-3.png|200px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=346</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=346"/>
		<updated>2026-05-29T07:33:06Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Commonroom-logo.png|300x300px|link=https://commonroom.info/]][[File:co_labs-logo-3.png\200px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=345</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=345"/>
		<updated>2026-05-29T07:27:04Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Commonroom-logo.png|300x300px|link=https://commonroom.info/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=344</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=344"/>
		<updated>2026-05-29T07:26:44Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Co labs-logo-3.png|thumb]][[File:Commonroom-logo.png|300x300px|link=https://commonroom.info/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=343</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=343"/>
		<updated>2026-05-29T07:24:29Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Commonroom-logo.png|300x300px|link=https://commonroom.info/]][[File:Co labs-logo-3.png|thumb|center|300x300px]]&amp;lt;/center&amp;gt;The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=342</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=342"/>
		<updated>2026-05-29T07:22:37Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Co labs-logo-3.png|thumb]][[File:Commonroom-logo.png|400x400px|link=https://commonroom.info/]]&amp;lt;/center&amp;gt;The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=File:Co_labs-logo-3.png&amp;diff=341</id>
		<title>File:Co labs-logo-3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=File:Co_labs-logo-3.png&amp;diff=341"/>
		<updated>2026-05-29T07:22:10Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;logo baru&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=340</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=340"/>
		<updated>2026-05-29T07:16:18Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; [[File:Commonroom-logo.png|400x400px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
* Pulo Aceh (Aceh Besar)&lt;br /&gt;
* Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=339</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=339"/>
		<updated>2026-05-29T07:15:49Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: menambahkan informasi tentang main project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; [[File:Commonroom-logo.png|400x400px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;The Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH implements the global programme &amp;quot;FAIR Forward&amp;quot; on behalf of the German Federal Ministry for Economic Cooperation and Development (BMZ). FAIR Forward Indonesia and Common Room Networks Foundation had implemented The Community-based Innovation Lab for Climate Resilience (Co_LABS), a collaboration between the Common Room Networks Foundation and Insan Infonesia, grown from the community-driven approach of the Community Internet School (SIK). It aims to strengthen local capacities to address climate change by deploying Internet of Things (IoT) and Artificial Intelligence (AI) for environmental monitoring and data-driven resource management. The project completed in September 2025.&lt;br /&gt;
&lt;br /&gt;
Implementation Sites:&lt;br /&gt;
&lt;br /&gt;
● Pulo Aceh (Aceh Besar)&lt;br /&gt;
&lt;br /&gt;
● Maros (South Sulawesi)&lt;br /&gt;
&lt;br /&gt;
As a follow-up to the Co_LABS project with FAIR Forward, this new initiative focuses on transforming existing AI and IoT climate resilience modules into a structured, openly accessible Learning Management System (LMS) platform to ensure long-term sustainability and prevent knowledge loss. By converting these resources into a digital, self-paced format, the project aims to scale up local learning from coastal sites (Pulo Aceh and Maros) to the wider School of Community Networks (SCN) ecosystem across 12 remote and indigenous regions. Ultimately, this integration supports replication, peer learning, and expanded digital literacy while extending AI capacity-building support to new partner organizations.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=338</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=338"/>
		<updated>2026-05-29T07:08:16Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; [[File:Commonroom-logo.png|400x400px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=337</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=337"/>
		<updated>2026-05-29T07:07:06Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200x200px]][[File:Giz-logo.png|200x200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|206x206px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&lt;br /&gt;
[[File:Commonroom-logo.png|400x400px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=336</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=336"/>
		<updated>2026-05-29T07:05:55Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|100x100px]][[File:Giz-logo.png|100x100px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|103x103px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&lt;br /&gt;
[[File:Commonroom-logo.png|200x200px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=335</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=335"/>
		<updated>2026-05-29T07:03:06Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|200px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]]&lt;br /&gt;
[[File:Commonroom-logo.png|300px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=334</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=334"/>
		<updated>2026-05-29T06:58:34Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: memindahkan logo fair forward ke kanan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|200px|link=https://www.bappenas.go.id/]][[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]][[File:Commonroom-logo.png|300px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=333</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=333"/>
		<updated>2026-05-06T10:06:27Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
#ca-nstab-main { display: none !important; }	&lt;br /&gt;
#ca-nstab-user { display: none !important; }	&lt;br /&gt;
#ca-talk { display: none !important; }&lt;br /&gt;
#ca-view { display: none !important; }&lt;br /&gt;
#ca-history { display: none !important;}&lt;br /&gt;
#ca-watch { display: none !important; }&lt;br /&gt;
#ca-unwatch { display: none !important; }	&lt;br /&gt;
#ca-delete { display: none !important; }	&lt;br /&gt;
#ca-move { display: none !important; }&lt;br /&gt;
#ca-protect { display: none !important; }&lt;br /&gt;
#ca-viewsource { display: none !important; }&lt;br /&gt;
/* Sticky Copy Button Styling */&lt;br /&gt;
.mw-highlight {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    /* Ensure the container has a max-height or overflow for scrolling to trigger */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.copy-button {&lt;br /&gt;
    position: sticky;    /* This makes it follow the scroll */&lt;br /&gt;
    top: 10px;           /* Distance from the top of the scrollable area */&lt;br /&gt;
    right: 10px;         /* Pinned to the right */&lt;br /&gt;
    float: right;        /* Keeps it aligned to the right side */&lt;br /&gt;
    margin-bottom: -40px; /* Offset to prevent pushing the code text down */&lt;br /&gt;
    margin-right: 10px;&lt;br /&gt;
    &lt;br /&gt;
    width: 34px;&lt;br /&gt;
    height: 34px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    background-color: rgba(255, 255, 255, 0.9);&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    z-index: 100;        /* Ensure it stays above the code lines */&lt;br /&gt;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);&lt;br /&gt;
    transition: background-color 0.2s, opacity 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Make it look interactive */&lt;br /&gt;
.copy-button:hover {&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    border-color: #36c;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.copy-button svg {&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide button when not hovering over the code block (optional) */&lt;br /&gt;
.mw-highlight .copy-button {&lt;br /&gt;
    opacity: 0.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight:hover .copy-button {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Avoid showing button during print */&lt;br /&gt;
@media print {&lt;br /&gt;
    .copy-button { display: none; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=332</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=332"/>
		<updated>2026-05-06T10:06:01Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
/* Add STICKY copy icon to syntaxhighlight blocks */&lt;br /&gt;
mw.hook(&#039;wikipage.content&#039;).add(function($content) {&lt;br /&gt;
    var copyIcon = &#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;currentColor&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;rect x=&amp;quot;9&amp;quot; y=&amp;quot;9&amp;quot; width=&amp;quot;13&amp;quot; height=&amp;quot;13&amp;quot; rx=&amp;quot;2&amp;quot; ry=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/rect&amp;gt;&amp;lt;path d=&amp;quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&#039;;&lt;br /&gt;
    var checkIcon = &#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#28a745&amp;quot; stroke-width=&amp;quot;3&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;polyline points=&amp;quot;20 6 9 17 4 12&amp;quot;&amp;gt;&amp;lt;/polyline&amp;gt;&amp;lt;/svg&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
    $content.find(&#039;.mw-highlight&#039;).each(function() {&lt;br /&gt;
        var $block = $(this);&lt;br /&gt;
        if ($block.find(&#039;.copy-button&#039;).length &amp;gt; 0) return;&lt;br /&gt;
&lt;br /&gt;
        var $button = $(&#039;&amp;lt;button&amp;gt;&#039;)&lt;br /&gt;
            .addClass(&#039;copy-button&#039;)&lt;br /&gt;
            .html(copyIcon)&lt;br /&gt;
            .attr(&#039;title&#039;, &#039;Copy to clipboard&#039;)&lt;br /&gt;
            .on(&#039;click&#039;, function() {&lt;br /&gt;
                var code = $block.find(&#039;pre&#039;).text();&lt;br /&gt;
                navigator.clipboard.writeText(code).then(function() {&lt;br /&gt;
                    $button.html(checkIcon);&lt;br /&gt;
                    setTimeout(function() { $button.html(copyIcon); }, 2000);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
        // Prepend the button so it sits at the top of the container&lt;br /&gt;
        $block.prepend($button);&lt;br /&gt;
    });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=331</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=331"/>
		<updated>2026-05-06T10:02:10Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
#ca-nstab-main { display: none !important; }	&lt;br /&gt;
#ca-nstab-user { display: none !important; }	&lt;br /&gt;
#ca-talk { display: none !important; }&lt;br /&gt;
#ca-view { display: none !important; }&lt;br /&gt;
#ca-history { display: none !important;}&lt;br /&gt;
#ca-watch { display: none !important; }&lt;br /&gt;
#ca-unwatch { display: none !important; }	&lt;br /&gt;
#ca-delete { display: none !important; }	&lt;br /&gt;
#ca-move { display: none !important; }&lt;br /&gt;
#ca-protect { display: none !important; }&lt;br /&gt;
#ca-viewsource { display: none !important; }&lt;br /&gt;
/* Style the copy icon button */&lt;br /&gt;
.copy-button {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 8px;&lt;br /&gt;
    right: 8px;&lt;br /&gt;
    width: 32px;&lt;br /&gt;
    height: 32px;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    background-color: rgba(255, 255, 255, 0.8);&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    z-index: 10;&lt;br /&gt;
    transition: all 0.2s ease;&lt;br /&gt;
    padding: 0; /* Clear default padding for flex centering */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.copy-button:hover {&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    border-color: #36c;&lt;br /&gt;
    box-shadow: 0 1px 4px rgba(0,0,0,0.1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.copy-button svg {&lt;br /&gt;
    color: #54595d; /* Dark grey icon color */&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Optional: Make the button more visible on hover of the code block */&lt;br /&gt;
.mw-highlight .copy-button {&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight:hover .copy-button {&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=330</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=330"/>
		<updated>2026-05-06T10:01:28Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
/* Add copy ICON to syntaxhighlight blocks */&lt;br /&gt;
mw.hook(&#039;wikipage.content&#039;).add(function($content) {&lt;br /&gt;
    // Standard &amp;quot;Clipboard&amp;quot; SVG icon&lt;br /&gt;
    var copyIcon = &#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;currentColor&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;rect x=&amp;quot;9&amp;quot; y=&amp;quot;9&amp;quot; width=&amp;quot;13&amp;quot; height=&amp;quot;13&amp;quot; rx=&amp;quot;2&amp;quot; ry=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/rect&amp;gt;&amp;lt;path d=&amp;quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&#039;;&lt;br /&gt;
    var checkIcon = &#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#28a745&amp;quot; stroke-width=&amp;quot;3&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;polyline points=&amp;quot;20 6 9 17 4 12&amp;quot;&amp;gt;&amp;lt;/polyline&amp;gt;&amp;lt;/svg&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
    $content.find(&#039;.mw-highlight&#039;).each(function() {&lt;br /&gt;
        var $block = $(this);&lt;br /&gt;
        if ($block.find(&#039;.copy-button&#039;).length &amp;gt; 0) return;&lt;br /&gt;
&lt;br /&gt;
        var $button = $(&#039;&amp;lt;button&amp;gt;&#039;)&lt;br /&gt;
            .addClass(&#039;copy-button&#039;)&lt;br /&gt;
            .html(copyIcon) // Inject the SVG here&lt;br /&gt;
            .attr(&#039;title&#039;, &#039;Copy to clipboard&#039;)&lt;br /&gt;
            .on(&#039;click&#039;, function() {&lt;br /&gt;
                var code = $block.find(&#039;pre&#039;).text();&lt;br /&gt;
                navigator.clipboard.writeText(code).then(function() {&lt;br /&gt;
                    $button.html(checkIcon); // Switch to checkmark on success&lt;br /&gt;
                    setTimeout(function() { $button.html(copyIcon); }, 2000);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
        $block.css(&#039;position&#039;, &#039;relative&#039;).prepend($button);&lt;br /&gt;
    });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=329</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=329"/>
		<updated>2026-05-06T09:52:27Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
    $(&#039;.mw-highlight&#039;).each(function() {&lt;br /&gt;
        var $this = $(this);&lt;br /&gt;
        // Create button&lt;br /&gt;
        var $button = $(&#039;&amp;lt;button class=&amp;quot;copy-button&amp;quot;&amp;gt;&amp;lt;svg aria-hidden=&amp;quot;true&amp;quot; class=&amp;quot;MSS8xf&amp;quot; fill=&amp;quot;currentColor&amp;quot; height=&amp;quot;18px&amp;quot; viewBox=&amp;quot;0 -960 960 960&amp;quot; width=&amp;quot;18px&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
        $button.css({&lt;br /&gt;
            &#039;position&#039;: &#039;absolute&#039;,&lt;br /&gt;
            &#039;top&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;right&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;font-size&#039;: &#039;0.8em&#039;,&lt;br /&gt;
            &#039;cursor&#039;: &#039;pointer&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // Add button to container&lt;br /&gt;
        $this.css(&#039;position&#039;, &#039;relative&#039;).append($button);&lt;br /&gt;
        &lt;br /&gt;
        // Copy function&lt;br /&gt;
        $button.click(function() {&lt;br /&gt;
            var text = $this.find(&#039;pre&#039;).text();&lt;br /&gt;
            navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                $button.text(&#039;Copied!&#039;);&lt;br /&gt;
                setTimeout(function() { $button.text(&#039;Copy&#039;); }, 2000);&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=328</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=328"/>
		<updated>2026-05-06T09:51:15Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
    $(&#039;.mw-highlight&#039;).each(function() {&lt;br /&gt;
        var $this = $(this);&lt;br /&gt;
        // Create button&lt;br /&gt;
        var $button = $(&#039;&amp;lt;button class=&amp;quot;copy-button&amp;quot;&amp;gt;&amp;lt;svg aria-hidden=&amp;quot;true&amp;quot; class=&amp;quot;MSS8xf&amp;quot; fill=&amp;quot;currentColor&amp;quot; height=&amp;quot;18px&amp;quot; viewBox=&amp;quot;0 -960 960 960&amp;quot; width=&amp;quot;18px&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
        $button.css({&lt;br /&gt;
            &#039;position&#039;: &#039;absolute&#039;,&lt;br /&gt;
            &#039;top&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;right&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;font-size&#039;: &#039;0.8em&#039;,&lt;br /&gt;
            &#039;cursor&#039;: &#039;pointer&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // Add button to container&lt;br /&gt;
        $this.css(&#039;position&#039;, &#039;relative&#039;).append($button);&lt;br /&gt;
        &lt;br /&gt;
        // Copy function&lt;br /&gt;
        $button.click(function() {&lt;br /&gt;
            var text = $this.find(&#039;pre&#039;).text();&lt;br /&gt;
            navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                $button.text(&#039;Copied!&#039;);&lt;br /&gt;
                setTimeout(function() { $button.text(&#039;&amp;lt;svg aria-hidden=&amp;quot;true&amp;quot; class=&amp;quot;MSS8xf&amp;quot; fill=&amp;quot;currentColor&amp;quot; height=&amp;quot;18px&amp;quot; viewBox=&amp;quot;0 -960 960 960&amp;quot; width=&amp;quot;18px&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&#039;); }, 2000);&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=327</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=327"/>
		<updated>2026-05-06T09:49:39Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
    $(&#039;.mw-highlight&#039;).each(function() {&lt;br /&gt;
        var $this = $(this);&lt;br /&gt;
        // Create button&lt;br /&gt;
        var $button = $(&#039;&amp;lt;button class=&amp;quot;copy-button&amp;quot;&amp;gt;&amp;lt;svg aria-hidden=&amp;quot;true&amp;quot; class=&amp;quot;MSS8xf&amp;quot; fill=&amp;quot;currentColor&amp;quot; height=&amp;quot;18px&amp;quot; viewBox=&amp;quot;0 -960 960 960&amp;quot; width=&amp;quot;18px&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z&amp;quot;&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;&amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
        $button.css({&lt;br /&gt;
            &#039;position&#039;: &#039;absolute&#039;,&lt;br /&gt;
            &#039;top&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;right&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;font-size&#039;: &#039;0.8em&#039;,&lt;br /&gt;
            &#039;cursor&#039;: &#039;pointer&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // Add button to container&lt;br /&gt;
        $this.css(&#039;position&#039;, &#039;relative&#039;).append($button);&lt;br /&gt;
        &lt;br /&gt;
        // Copy function&lt;br /&gt;
        $button.click(function() {&lt;br /&gt;
            var text = $this.find(&#039;pre&#039;).text();&lt;br /&gt;
            navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                $button.text(&#039;Copied!&#039;);&lt;br /&gt;
                setTimeout(function() { $button.text(&#039;Copy&#039;); }, 2000);&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=326</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=326"/>
		<updated>2026-05-06T09:42:25Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
#ca-nstab-main { display: none !important; }	&lt;br /&gt;
#ca-nstab-user { display: none !important; }	&lt;br /&gt;
#ca-talk { display: none !important; }&lt;br /&gt;
#ca-view { display: none !important; }&lt;br /&gt;
#ca-history { display: none !important;}&lt;br /&gt;
#ca-watch { display: none !important; }&lt;br /&gt;
#ca-unwatch { display: none !important; }	&lt;br /&gt;
#ca-delete { display: none !important; }	&lt;br /&gt;
#ca-move { display: none !important; }&lt;br /&gt;
#ca-protect { display: none !important; }&lt;br /&gt;
#ca-viewsource { display: none !important; }&lt;br /&gt;
.mw-highlight {&lt;br /&gt;
    position: relative; /* Necessary for button positioning */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.copy-button {&lt;br /&gt;
    z-index: 10;&lt;br /&gt;
    padding: 2px 5px;&lt;br /&gt;
    background-color: #f8f9fa;&lt;br /&gt;
    border: 1px solid #ccc;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=325</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.js&amp;diff=325"/>
		<updated>2026-05-06T09:42:03Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: Created page with &amp;quot;/* Any JavaScript here will be loaded for all users on every page load. */ $(document).ready(function() {     $(&amp;#039;.mw-highlight&amp;#039;).each(function() {         var $this = $(this);         // Create button         var $button = $(&amp;#039;&amp;lt;button class=&amp;quot;copy-button&amp;quot;&amp;gt;Copy&amp;lt;/button&amp;gt;&amp;#039;);         $button.css({             &amp;#039;position&amp;#039;: &amp;#039;absolute&amp;#039;,             &amp;#039;top&amp;#039;: &amp;#039;5px&amp;#039;,             &amp;#039;right&amp;#039;: &amp;#039;5px&amp;#039;,             &amp;#039;font-size&amp;#039;: &amp;#039;0.8em&amp;#039;,             &amp;#039;cursor&amp;#039;: &amp;#039;pointer&amp;#039;         });...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
    $(&#039;.mw-highlight&#039;).each(function() {&lt;br /&gt;
        var $this = $(this);&lt;br /&gt;
        // Create button&lt;br /&gt;
        var $button = $(&#039;&amp;lt;button class=&amp;quot;copy-button&amp;quot;&amp;gt;Copy&amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
        $button.css({&lt;br /&gt;
            &#039;position&#039;: &#039;absolute&#039;,&lt;br /&gt;
            &#039;top&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;right&#039;: &#039;5px&#039;,&lt;br /&gt;
            &#039;font-size&#039;: &#039;0.8em&#039;,&lt;br /&gt;
            &#039;cursor&#039;: &#039;pointer&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // Add button to container&lt;br /&gt;
        $this.css(&#039;position&#039;, &#039;relative&#039;).append($button);&lt;br /&gt;
        &lt;br /&gt;
        // Copy function&lt;br /&gt;
        $button.click(function() {&lt;br /&gt;
            var text = $this.find(&#039;pre&#039;).text();&lt;br /&gt;
            navigator.clipboard.writeText(text).then(function() {&lt;br /&gt;
                $button.text(&#039;Copied!&#039;);&lt;br /&gt;
                setTimeout(function() { $button.text(&#039;Copy&#039;); }, 2000);&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_Teknologi_Tepat_Guna_(DIY)&amp;diff=324</id>
		<title>Sensor Teknologi Tepat Guna (DIY)</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_Teknologi_Tepat_Guna_(DIY)&amp;diff=324"/>
		<updated>2026-05-06T07:45:07Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Halaman ini menyajikan panduan teknis mengenai perancangan dan implementasi sistem pemantauan kondisi lingkungan (suhu dan kelembapan) menggunakan mikrokontroler ESP8266 dan sensor DHT22. Sistem ini dirancang untuk memberikan data secara &#039;&#039;real-time&#039;&#039; yang ditampilkan melalui layar LCD.&lt;br /&gt;
[[File:DIY Ciracap praktek.jpg|thumb|Co-LABS Praktik Prototyping]]&lt;br /&gt;
&lt;br /&gt;
== Daftar Komponen / Spesifikasi Hardware ==&lt;br /&gt;
Komponen-komponen berikut dipilih berdasarkan kriteria fungsionalitas dan kompatibilitas sistem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Daftar Komponen#ESP32|ESP8266]]:&#039;&#039;&#039; Mikrokontroler dengan modul Wi-Fi.&lt;br /&gt;
* &#039;&#039;&#039;Sensor [[Daftar Komponen#DHT22|DHT22]]:&#039;&#039;&#039; Sensor digital untuk mengukur suhu dan kelembapan udara.&lt;br /&gt;
* &#039;&#039;&#039;LCD 16x2 dengan Modul I2C:&#039;&#039;&#039; Media untuk menampilkan hasil output sensor.&lt;br /&gt;
* &#039;&#039;&#039;Box X4:&#039;&#039;&#039; Enclosure atau wadah pelindung fisik untuk mengintegrasikan seluruh komponen.&lt;br /&gt;
* &#039;&#039;&#039;Kabel Jumper:&#039;&#039;&#039; Penghubung antar komponen (tipe Female-to-Female).&lt;br /&gt;
* &#039;&#039;&#039;Kabel Micro USB:&#039;&#039;&#039; Power&lt;br /&gt;
&lt;br /&gt;
== Skema Perakitan (Wiring) ==&lt;br /&gt;
Berikut adalah konfigurasi pinout untuk menghubungkan komponen ke ESP8266:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Tabel pinout komponen&lt;br /&gt;
!Komponen&lt;br /&gt;
!Pin Komponen&lt;br /&gt;
!Pin ESP8266&lt;br /&gt;
|-&lt;br /&gt;
|DHT22&lt;br /&gt;
|VCC / +&lt;br /&gt;
|3V&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Data / out&lt;br /&gt;
|D4 (GPIO 2)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / -&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|LCD l2C&lt;br /&gt;
|VCC&lt;br /&gt;
|VIN (5V) / 3V3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / G&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SDA&lt;br /&gt;
|D2 (GPIO 4)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SCL&lt;br /&gt;
|D1 (GPIO 5)&lt;br /&gt;
|}&lt;br /&gt;
[[File:DIY_1.1.png|alt=Gambar skema perakitan (wiring)|none|thumb|500x500px|Diagram pemasangan kabel jumper dari dht22 dan lcd ke esp 8266]]&lt;br /&gt;
&lt;br /&gt;
== Instalasi Arduino IDE &amp;amp; Setup ESP8266 ==&lt;br /&gt;
Tahapan ini menjelaskan langkah instalasi Arduino IDE dan setup ESP8266.&lt;br /&gt;
&lt;br /&gt;
=== Download dan Instalasi Software ===&lt;br /&gt;
&lt;br /&gt;
# Buka situs resmi [http://arduino.cc/ arduino.cc].&lt;br /&gt;
# Pilih versi terbaru sesuai sistem operasi Anda (Windows, macOS, atau Linux)[[File:Gambar_file_installer_arduino.png|none|thumb|Gambar file installer arduino]]&lt;br /&gt;
# Jalankan file installer yang telah diunduh.&lt;br /&gt;
# Pastikan semua opsi checklist terpilih (terutama Install USB Driver dan Associate .ino files).&lt;br /&gt;
# Klik Next dan Install hingga selesai.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi Board ESP8266 ===&lt;br /&gt;
Secara default, Arduino IDE hanya mendukung board Arduino. Agar bisa memprogram ESP8266, maka harus dilakukan konfigurasi dan instalasi secara manual, berikut langkah-langkahnya:&lt;br /&gt;
&lt;br /&gt;
# Buka Arduino IDE, klik menu &#039;&#039;&#039;File &amp;gt; Preferences&#039;&#039;&#039;.[[File:Gambar_menu_preferences_arduino.png|none|thumb|Gambar menu preferences arduino]]&lt;br /&gt;
# Pada kolom &#039;&#039;&#039;Additional Boards Manager URLs&#039;&#039;&#039;, masukkan url berikut: http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
# Klik &#039;&#039;&#039;OK&#039;&#039;&#039;.[[File:Gambar_input_additional_boards_manager_URLs.png|none|thumb|Gambar input additional boards manager URLs]]&lt;br /&gt;
# Buka menu &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; Boards Manager…&#039;&#039;&#039;[[File:Gambar_klik_menu_boards_manager_arduino.png|none|thumb|Gambar klik menu boards manager arduino]]&lt;br /&gt;
# Ketik &amp;quot;esp8266&amp;quot; di kolom pencarian, lalu klik &#039;&#039;&#039;Install&#039;&#039;&#039; pada paket dari &#039;&#039;&#039;ESP8266 Community&#039;&#039;&#039;.[[File:Gambar_install_paket_dari_ESP8266_Community.png|none|thumb|Gambar install paket dari ESP8266 Community]]&lt;br /&gt;
&lt;br /&gt;
=== Install Driver CH340 dan CP2102 ===&lt;br /&gt;
&lt;br /&gt;
# Install driver CH340 untuk Windows pada link : https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip&lt;br /&gt;
# Install driver CP2102 untuk Windows pada link: https://www.pololu.com/file/0J14/pololu-cp2102-windows-220616.zip&lt;br /&gt;
&lt;br /&gt;
=== Instalasi Library (DHT &amp;amp; LCD) ===&lt;br /&gt;
&lt;br /&gt;
# Pilih &#039;&#039;&#039;Sketch &amp;gt; Include Library &amp;gt; Manage Libraries...&#039;&#039;&#039;&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;DHT sensor library&amp;quot;&#039;&#039;&#039; (by Adafruit) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;. Jika muncul pop-up untuk menginstal dependensi (seperti &#039;&#039;Adafruit Unified Sensor&#039;&#039;), pilih &#039;&#039;&#039;Install All&#039;&#039;&#039;.&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;LiquidCrystal I2C&amp;quot;&#039;&#039;&#039; (by Frank de Brabander) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;.[[File:Gambar_instalasi_library_DHT_dan_LCD.png|none|thumb|Gambar instalasi library DHT dan LCD]]&lt;br /&gt;
&lt;br /&gt;
=== Koneksi ke Perangkat ===&lt;br /&gt;
&lt;br /&gt;
# Hubungkan ESP8266 ke laptop menggunakan kabel data Micro USB.&lt;br /&gt;
# Pilih board di &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; ESP8266 Boards &amp;gt;&#039;&#039;&#039; (Contoh: &#039;&#039;&#039;NodeMCU 1.0 (ESP-12E Module)&#039;&#039;&#039;).[[File:Gambar_pilih_board_NodeMCU_1.0_(ESP-12E_Module).png|none|thumb|Gambar pilih board NodeMCU 1.0 (ESP-12E Module)]]&lt;br /&gt;
# Pilih Port yang sesuai di &#039;&#039;&#039;Tools &amp;gt; Port&#039;&#039;&#039; (Biasanya akan muncul COM3, COM4, dsb. di Windows).[[File:Gambar_pilih_port_COM6.png|none|thumb|Gambar pilih port COM6]]&lt;br /&gt;
&lt;br /&gt;
==== Tips Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Driver USB: Jika Port tidak muncul, langkah yang perlu dilakukan adalah menginstal driver USB-to-Serial secara manual. Biasanya chip yang digunakan adalah CH340 atau CP2102 (tergantung varian NodeMCU yang digunakan).&#039;&#039;&lt;br /&gt;
* &#039;&#039;Kecepatan Upload: Untuk ESP8266, gunakan Upload Speed 115200 agar proses pengiriman kode lebih stabil.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pemrograman (Source Code) ==&lt;br /&gt;
Gunakan kode berikut untuk membaca data sensor dan menampilkannya ke LCD.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot;&lt;br /&gt;
#include &amp;lt;Adafruit_Sensor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DHTPIN D4      // Digital pin connected to the DHT sensor&lt;br /&gt;
#define DHTTYPE DHT22  // DHT 22  (AM2302), AM2321&lt;br /&gt;
&lt;br /&gt;
// Replace with network credentials&lt;br /&gt;
#define WIFISSID &amp;quot;Nama-Kelompok&amp;quot;&lt;br /&gt;
#define WIFIPASS &amp;quot;Pass-SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
const char* deviceid = &amp;quot;ID=Nama_Kelompok&amp;quot;;&lt;br /&gt;
const char* groupid = &amp;quot;GROUP=RURAL_SIK_LOMBA&amp;quot;;&lt;br /&gt;
//server to receive the data&lt;br /&gt;
const char* host = &amp;quot;pond.weather.id&amp;quot;;&lt;br /&gt;
const int port = 80;&lt;br /&gt;
&lt;br /&gt;
// do not touch below&lt;br /&gt;
unsigned long startTime = millis();&lt;br /&gt;
&lt;br /&gt;
const int watchdog = 10000;  // delay before pushing data&lt;br /&gt;
unsigned long previousMillis = millis();&lt;br /&gt;
&lt;br /&gt;
void connectWifi() {&lt;br /&gt;
  Serial.println(&amp;quot;Connecting to access point&amp;quot;);&lt;br /&gt;
  WiFi.disconnect();&lt;br /&gt;
  if (WiFi.getMode() != WIFI_STA) {  //WIFI_STA= station mode (connect ke akses point)&lt;br /&gt;
    WiFi.mode(WIFI_STA);&lt;br /&gt;
  }&lt;br /&gt;
  WiFi.begin(WIFISSID, WIFIPASS);&lt;br /&gt;
  //...Give ESP 10 seconds to connect to station.&lt;br /&gt;
  startTime = millis();&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED &amp;amp;&amp;amp; millis() - startTime &amp;lt; 10000) {&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  // Check Connection&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;Wifi connected; IP address: &amp;quot;);&lt;br /&gt;
    Serial.println(WiFi.localIP());&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;WiFi connect failed to ssid: &amp;quot;);&lt;br /&gt;
    Serial.println(WIFISSID);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Set the LCD address to 0x27 for a 16 chars and 2 line display&lt;br /&gt;
LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(F(&amp;quot;DHT22 test!&amp;quot;));&lt;br /&gt;
  dht.begin();&lt;br /&gt;
  lcd.init();&lt;br /&gt;
  lcd.backlight();&lt;br /&gt;
  connectWifi();&lt;br /&gt;
&lt;br /&gt;
  //intro gak penting&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;   Temperature&amp;quot;);&lt;br /&gt;
  lcd.setCursor(0, 1);&lt;br /&gt;
  lcd.print(&amp;quot;     Monitor&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt; watchdog) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
&lt;br /&gt;
    // Wait a few seconds between measurements.&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    // Reading temperature or humidity takes about 250 milliseconds!&lt;br /&gt;
    // Sensor readings may also be up to 2 seconds &#039;old&#039; (its a very slow sensor)&lt;br /&gt;
    float h = dht.readHumidity();&lt;br /&gt;
    // Read temperature as Celsius (the default)&lt;br /&gt;
    float t = dht.readTemperature();&lt;br /&gt;
&lt;br /&gt;
    // Check if any reads failed and exit early (to try again).&lt;br /&gt;
    if (isnan(h) || isnan(t)) {&lt;br /&gt;
      Serial.println(F(&amp;quot;Failed to read from DHT sensor!&amp;quot;));&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;No Sensor!&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.print(F(&amp;quot;Humidity: &amp;quot;));&lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(F(&amp;quot;%  Temperature: &amp;quot;));&lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.print(F(&amp;quot;°C &amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    //Display data ke LCD =&amp;gt;tampung di data string&lt;br /&gt;
    String print_temp = &amp;quot;Temp: &amp;quot;;&lt;br /&gt;
    print_temp += String(t);&lt;br /&gt;
    print_temp += &amp;quot; C&amp;quot;;&lt;br /&gt;
    String print_humd = &amp;quot;Humd: &amp;quot;;&lt;br /&gt;
    print_humd += String(h);&lt;br /&gt;
    print_humd += &amp;quot; %&amp;quot;;&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(print_temp);&lt;br /&gt;
    lcd.setCursor(0, 1);&lt;br /&gt;
    lcd.print(print_humd);&lt;br /&gt;
&lt;br /&gt;
    WiFiClient client;  //deklarasi method client&lt;br /&gt;
    HTTPClient http;    //deklarasi method http&lt;br /&gt;
&lt;br /&gt;
    if (!client.connect(host, port)) {&lt;br /&gt;
      Serial.print(&amp;quot;cannot connect to web server &amp;quot;);&lt;br /&gt;
      Serial.println(host);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //String url=&amp;quot;/weather/poller.php?&amp;quot;;&lt;br /&gt;
    String url = &amp;quot;http://&amp;quot;;&lt;br /&gt;
    url += host;&lt;br /&gt;
    url += &amp;quot;:&amp;quot;;&lt;br /&gt;
    url += port;&lt;br /&gt;
    url += &amp;quot;/?&amp;quot;;&lt;br /&gt;
    //url += &amp;quot;ID=YOURID&amp;quot;;&lt;br /&gt;
    url += deviceid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;&amp;quot;;&lt;br /&gt;
    url += groupid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;temperature=&amp;quot;;&lt;br /&gt;
    url += String(t);&lt;br /&gt;
    url += &amp;quot;&amp;amp;humidity=&amp;quot;;&lt;br /&gt;
    url += String(h);&lt;br /&gt;
    url += &amp;quot;&amp;amp;softwaretype=RuralICT2024&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    // send it&lt;br /&gt;
&lt;br /&gt;
    client.print(String(&amp;quot;GET &amp;quot;) + url + &amp;quot; HTTP/1.1\r\n&amp;quot; + &amp;quot;Host: &amp;quot; + host + &amp;quot;\r\n&amp;quot; + &amp;quot;Connection: close\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // wait for respond&lt;br /&gt;
    unsigned long timeout = millis();&lt;br /&gt;
    while (client.available() == 0) {&lt;br /&gt;
      if (millis() - timeout &amp;gt; 5000) {&lt;br /&gt;
        Serial.print(&amp;quot;timeout&amp;quot;);&lt;br /&gt;
        client.stop();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ok, we got the reply&lt;br /&gt;
    while (client.available()) {&lt;br /&gt;
      String line = client.readStringUntil(&#039;\r&#039;);&lt;br /&gt;
      Serial.print(line);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Langkah Implementasi ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Persiapan Box:&#039;&#039;&#039; Lubangi Box X4 di sisi depan untuk layar LCD dan lubang kecil di sisi samping untuk ventilasi sensor DHT22 serta kabel power.&lt;br /&gt;
# &#039;&#039;&#039;Wiring:&#039;&#039;&#039; Hubungkan semua komponen sesuai tabel di atas menggunakan kabel jumper.&lt;br /&gt;
# &#039;&#039;&#039;Upload:&#039;&#039;&#039; Hubungkan ESP8266 ke komputer dan upload kode melalui Arduino IDE.&lt;br /&gt;
# &#039;&#039;&#039;Testing:&#039;&#039;&#039; Pastikan LCD menyala dan menampilkan angka. Jika layar kosong, putar potensiometer (trimpot) di belakang modul I2C untuk mengatur kontras.&lt;br /&gt;
&lt;br /&gt;
[[Table of Contents|&amp;lt; Kembali ke halaman awal]] | [[Sensor Laut|Ke halaman berikutnya &amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=File:DIY_Ciracap_praktek.jpg&amp;diff=323</id>
		<title>File:DIY Ciracap praktek.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=File:DIY_Ciracap_praktek.jpg&amp;diff=323"/>
		<updated>2026-05-06T07:44:39Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DIY Ciracap praktek&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=322</id>
		<title>Sensor DIY</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=322"/>
		<updated>2026-05-06T02:37:58Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_Teknologi_Tepat_Guna_(DIY)&amp;diff=321</id>
		<title>Sensor Teknologi Tepat Guna (DIY)</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_Teknologi_Tepat_Guna_(DIY)&amp;diff=321"/>
		<updated>2026-05-06T02:34:51Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: Created page with &amp;quot;Halaman ini menyajikan panduan teknis mengenai perancangan dan implementasi sistem pemantauan kondisi lingkungan (suhu dan kelembapan) menggunakan mikrokontroler ESP8266 dan sensor DHT22. Sistem ini dirancang untuk memberikan data secara &amp;#039;&amp;#039;real-time&amp;#039;&amp;#039; yang ditampilkan melalui layar LCD.  == Daftar Komponen / Spesifikasi Hardware == Komponen-komponen berikut dipilih berdasarkan kriteria fungsionalitas dan kompatibilitas sistem:  * &amp;#039;&amp;#039;&amp;#039;ESP8266:&amp;#039;&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Halaman ini menyajikan panduan teknis mengenai perancangan dan implementasi sistem pemantauan kondisi lingkungan (suhu dan kelembapan) menggunakan mikrokontroler ESP8266 dan sensor DHT22. Sistem ini dirancang untuk memberikan data secara &#039;&#039;real-time&#039;&#039; yang ditampilkan melalui layar LCD.&lt;br /&gt;
&lt;br /&gt;
== Daftar Komponen / Spesifikasi Hardware ==&lt;br /&gt;
Komponen-komponen berikut dipilih berdasarkan kriteria fungsionalitas dan kompatibilitas sistem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Daftar Komponen#ESP32|ESP8266]]:&#039;&#039;&#039; Mikrokontroler dengan modul Wi-Fi.&lt;br /&gt;
* &#039;&#039;&#039;Sensor [[Daftar Komponen#DHT22|DHT22]]:&#039;&#039;&#039; Sensor digital untuk mengukur suhu dan kelembapan udara.&lt;br /&gt;
* &#039;&#039;&#039;LCD 16x2 dengan Modul I2C:&#039;&#039;&#039; Media untuk menampilkan hasil output sensor.&lt;br /&gt;
* &#039;&#039;&#039;Box X4:&#039;&#039;&#039; Enclosure atau wadah pelindung fisik untuk mengintegrasikan seluruh komponen.&lt;br /&gt;
* &#039;&#039;&#039;Kabel Jumper:&#039;&#039;&#039; Penghubung antar komponen (tipe Female-to-Female).&lt;br /&gt;
* &#039;&#039;&#039;Kabel Micro USB:&#039;&#039;&#039; Power&lt;br /&gt;
&lt;br /&gt;
== Skema Perakitan (Wiring) ==&lt;br /&gt;
Berikut adalah konfigurasi pinout untuk menghubungkan komponen ke ESP8266:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Tabel pinout komponen&lt;br /&gt;
!Komponen&lt;br /&gt;
!Pin Komponen&lt;br /&gt;
!Pin ESP8266&lt;br /&gt;
|-&lt;br /&gt;
|DHT22&lt;br /&gt;
|VCC / +&lt;br /&gt;
|3V&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Data / out&lt;br /&gt;
|D4 (GPIO 2)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / -&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|LCD l2C&lt;br /&gt;
|VCC&lt;br /&gt;
|VIN (5V) / 3V3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / G&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SDA&lt;br /&gt;
|D2 (GPIO 4)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SCL&lt;br /&gt;
|D1 (GPIO 5)&lt;br /&gt;
|}&lt;br /&gt;
[[File:DIY_1.1.png|alt=Gambar skema perakitan (wiring)|none|thumb|500x500px|Diagram pemasangan kabel jumper dari dht22 dan lcd ke esp 8266]]&lt;br /&gt;
&lt;br /&gt;
== Instalasi Arduino IDE &amp;amp; Setup ESP8266 ==&lt;br /&gt;
Tahapan ini menjelaskan langkah instalasi Arduino IDE dan setup ESP8266.&lt;br /&gt;
&lt;br /&gt;
=== Download dan Instalasi Software ===&lt;br /&gt;
&lt;br /&gt;
# Buka situs resmi [http://arduino.cc/ arduino.cc].&lt;br /&gt;
# Pilih versi terbaru sesuai sistem operasi Anda (Windows, macOS, atau Linux)[[File:Gambar_file_installer_arduino.png|none|thumb|Gambar file installer arduino]]&lt;br /&gt;
# Jalankan file installer yang telah diunduh.&lt;br /&gt;
# Pastikan semua opsi checklist terpilih (terutama Install USB Driver dan Associate .ino files).&lt;br /&gt;
# Klik Next dan Install hingga selesai.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi Board ESP8266 ===&lt;br /&gt;
Secara default, Arduino IDE hanya mendukung board Arduino. Agar bisa memprogram ESP8266, maka harus dilakukan konfigurasi dan instalasi secara manual, berikut langkah-langkahnya:&lt;br /&gt;
&lt;br /&gt;
# Buka Arduino IDE, klik menu &#039;&#039;&#039;File &amp;gt; Preferences&#039;&#039;&#039;.[[File:Gambar_menu_preferences_arduino.png|none|thumb|Gambar menu preferences arduino]]&lt;br /&gt;
# Pada kolom &#039;&#039;&#039;Additional Boards Manager URLs&#039;&#039;&#039;, masukkan url berikut: http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
# Klik &#039;&#039;&#039;OK&#039;&#039;&#039;.[[File:Gambar_input_additional_boards_manager_URLs.png|none|thumb|Gambar input additional boards manager URLs]]&lt;br /&gt;
# Buka menu &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; Boards Manager…&#039;&#039;&#039;[[File:Gambar_klik_menu_boards_manager_arduino.png|none|thumb|Gambar klik menu boards manager arduino]]&lt;br /&gt;
# Ketik &amp;quot;esp8266&amp;quot; di kolom pencarian, lalu klik &#039;&#039;&#039;Install&#039;&#039;&#039; pada paket dari &#039;&#039;&#039;ESP8266 Community&#039;&#039;&#039;.[[File:Gambar_install_paket_dari_ESP8266_Community.png|none|thumb|Gambar install paket dari ESP8266 Community]]&lt;br /&gt;
&lt;br /&gt;
=== Install Driver CH340 dan CP2102 ===&lt;br /&gt;
&lt;br /&gt;
# Install driver CH340 untuk Windows pada link : https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip&lt;br /&gt;
# Install driver CP2102 untuk Windows pada link: https://www.pololu.com/file/0J14/pololu-cp2102-windows-220616.zip&lt;br /&gt;
&lt;br /&gt;
=== Instalasi Library (DHT &amp;amp; LCD) ===&lt;br /&gt;
&lt;br /&gt;
# Pilih &#039;&#039;&#039;Sketch &amp;gt; Include Library &amp;gt; Manage Libraries...&#039;&#039;&#039;&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;DHT sensor library&amp;quot;&#039;&#039;&#039; (by Adafruit) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;. Jika muncul pop-up untuk menginstal dependensi (seperti &#039;&#039;Adafruit Unified Sensor&#039;&#039;), pilih &#039;&#039;&#039;Install All&#039;&#039;&#039;.&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;LiquidCrystal I2C&amp;quot;&#039;&#039;&#039; (by Frank de Brabander) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;.[[File:Gambar_instalasi_library_DHT_dan_LCD.png|none|thumb|Gambar instalasi library DHT dan LCD]]&lt;br /&gt;
&lt;br /&gt;
=== Koneksi ke Perangkat ===&lt;br /&gt;
&lt;br /&gt;
# Hubungkan ESP8266 ke laptop menggunakan kabel data Micro USB.&lt;br /&gt;
# Pilih board di &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; ESP8266 Boards &amp;gt;&#039;&#039;&#039; (Contoh: &#039;&#039;&#039;NodeMCU 1.0 (ESP-12E Module)&#039;&#039;&#039;).[[File:Gambar_pilih_board_NodeMCU_1.0_(ESP-12E_Module).png|none|thumb|Gambar pilih board NodeMCU 1.0 (ESP-12E Module)]]&lt;br /&gt;
# Pilih Port yang sesuai di &#039;&#039;&#039;Tools &amp;gt; Port&#039;&#039;&#039; (Biasanya akan muncul COM3, COM4, dsb. di Windows).[[File:Gambar_pilih_port_COM6.png|none|thumb|Gambar pilih port COM6]]&lt;br /&gt;
&lt;br /&gt;
==== Tips Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Driver USB: Jika Port tidak muncul, langkah yang perlu dilakukan adalah menginstal driver USB-to-Serial secara manual. Biasanya chip yang digunakan adalah CH340 atau CP2102 (tergantung varian NodeMCU yang digunakan).&#039;&#039;&lt;br /&gt;
* &#039;&#039;Kecepatan Upload: Untuk ESP8266, gunakan Upload Speed 115200 agar proses pengiriman kode lebih stabil.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pemrograman (Source Code) ==&lt;br /&gt;
Gunakan kode berikut untuk membaca data sensor dan menampilkannya ke LCD.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot;&lt;br /&gt;
#include &amp;lt;Adafruit_Sensor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DHTPIN D4      // Digital pin connected to the DHT sensor&lt;br /&gt;
#define DHTTYPE DHT22  // DHT 22  (AM2302), AM2321&lt;br /&gt;
&lt;br /&gt;
// Replace with network credentials&lt;br /&gt;
#define WIFISSID &amp;quot;Nama-Kelompok&amp;quot;&lt;br /&gt;
#define WIFIPASS &amp;quot;Pass-SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
const char* deviceid = &amp;quot;ID=Nama_Kelompok&amp;quot;;&lt;br /&gt;
const char* groupid = &amp;quot;GROUP=RURAL_SIK_LOMBA&amp;quot;;&lt;br /&gt;
//server to receive the data&lt;br /&gt;
const char* host = &amp;quot;pond.weather.id&amp;quot;;&lt;br /&gt;
const int port = 80;&lt;br /&gt;
&lt;br /&gt;
// do not touch below&lt;br /&gt;
unsigned long startTime = millis();&lt;br /&gt;
&lt;br /&gt;
const int watchdog = 10000;  // delay before pushing data&lt;br /&gt;
unsigned long previousMillis = millis();&lt;br /&gt;
&lt;br /&gt;
void connectWifi() {&lt;br /&gt;
  Serial.println(&amp;quot;Connecting to access point&amp;quot;);&lt;br /&gt;
  WiFi.disconnect();&lt;br /&gt;
  if (WiFi.getMode() != WIFI_STA) {  //WIFI_STA= station mode (connect ke akses point)&lt;br /&gt;
    WiFi.mode(WIFI_STA);&lt;br /&gt;
  }&lt;br /&gt;
  WiFi.begin(WIFISSID, WIFIPASS);&lt;br /&gt;
  //...Give ESP 10 seconds to connect to station.&lt;br /&gt;
  startTime = millis();&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED &amp;amp;&amp;amp; millis() - startTime &amp;lt; 10000) {&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  // Check Connection&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;Wifi connected; IP address: &amp;quot;);&lt;br /&gt;
    Serial.println(WiFi.localIP());&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;WiFi connect failed to ssid: &amp;quot;);&lt;br /&gt;
    Serial.println(WIFISSID);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Set the LCD address to 0x27 for a 16 chars and 2 line display&lt;br /&gt;
LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(F(&amp;quot;DHT22 test!&amp;quot;));&lt;br /&gt;
  dht.begin();&lt;br /&gt;
  lcd.init();&lt;br /&gt;
  lcd.backlight();&lt;br /&gt;
  connectWifi();&lt;br /&gt;
&lt;br /&gt;
  //intro gak penting&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;   Temperature&amp;quot;);&lt;br /&gt;
  lcd.setCursor(0, 1);&lt;br /&gt;
  lcd.print(&amp;quot;     Monitor&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt; watchdog) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
&lt;br /&gt;
    // Wait a few seconds between measurements.&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    // Reading temperature or humidity takes about 250 milliseconds!&lt;br /&gt;
    // Sensor readings may also be up to 2 seconds &#039;old&#039; (its a very slow sensor)&lt;br /&gt;
    float h = dht.readHumidity();&lt;br /&gt;
    // Read temperature as Celsius (the default)&lt;br /&gt;
    float t = dht.readTemperature();&lt;br /&gt;
&lt;br /&gt;
    // Check if any reads failed and exit early (to try again).&lt;br /&gt;
    if (isnan(h) || isnan(t)) {&lt;br /&gt;
      Serial.println(F(&amp;quot;Failed to read from DHT sensor!&amp;quot;));&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;No Sensor!&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.print(F(&amp;quot;Humidity: &amp;quot;));&lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(F(&amp;quot;%  Temperature: &amp;quot;));&lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.print(F(&amp;quot;°C &amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    //Display data ke LCD =&amp;gt;tampung di data string&lt;br /&gt;
    String print_temp = &amp;quot;Temp: &amp;quot;;&lt;br /&gt;
    print_temp += String(t);&lt;br /&gt;
    print_temp += &amp;quot; C&amp;quot;;&lt;br /&gt;
    String print_humd = &amp;quot;Humd: &amp;quot;;&lt;br /&gt;
    print_humd += String(h);&lt;br /&gt;
    print_humd += &amp;quot; %&amp;quot;;&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(print_temp);&lt;br /&gt;
    lcd.setCursor(0, 1);&lt;br /&gt;
    lcd.print(print_humd);&lt;br /&gt;
&lt;br /&gt;
    WiFiClient client;  //deklarasi method client&lt;br /&gt;
    HTTPClient http;    //deklarasi method http&lt;br /&gt;
&lt;br /&gt;
    if (!client.connect(host, port)) {&lt;br /&gt;
      Serial.print(&amp;quot;cannot connect to web server &amp;quot;);&lt;br /&gt;
      Serial.println(host);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //String url=&amp;quot;/weather/poller.php?&amp;quot;;&lt;br /&gt;
    String url = &amp;quot;http://&amp;quot;;&lt;br /&gt;
    url += host;&lt;br /&gt;
    url += &amp;quot;:&amp;quot;;&lt;br /&gt;
    url += port;&lt;br /&gt;
    url += &amp;quot;/?&amp;quot;;&lt;br /&gt;
    //url += &amp;quot;ID=YOURID&amp;quot;;&lt;br /&gt;
    url += deviceid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;&amp;quot;;&lt;br /&gt;
    url += groupid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;temperature=&amp;quot;;&lt;br /&gt;
    url += String(t);&lt;br /&gt;
    url += &amp;quot;&amp;amp;humidity=&amp;quot;;&lt;br /&gt;
    url += String(h);&lt;br /&gt;
    url += &amp;quot;&amp;amp;softwaretype=RuralICT2024&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    // send it&lt;br /&gt;
&lt;br /&gt;
    client.print(String(&amp;quot;GET &amp;quot;) + url + &amp;quot; HTTP/1.1\r\n&amp;quot; + &amp;quot;Host: &amp;quot; + host + &amp;quot;\r\n&amp;quot; + &amp;quot;Connection: close\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // wait for respond&lt;br /&gt;
    unsigned long timeout = millis();&lt;br /&gt;
    while (client.available() == 0) {&lt;br /&gt;
      if (millis() - timeout &amp;gt; 5000) {&lt;br /&gt;
        Serial.print(&amp;quot;timeout&amp;quot;);&lt;br /&gt;
        client.stop();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ok, we got the reply&lt;br /&gt;
    while (client.available()) {&lt;br /&gt;
      String line = client.readStringUntil(&#039;\r&#039;);&lt;br /&gt;
      Serial.print(line);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Langkah Implementasi ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Persiapan Box:&#039;&#039;&#039; Lubangi Box X4 di sisi depan untuk layar LCD dan lubang kecil di sisi samping untuk ventilasi sensor DHT22 serta kabel power.&lt;br /&gt;
# &#039;&#039;&#039;Wiring:&#039;&#039;&#039; Hubungkan semua komponen sesuai tabel di atas menggunakan kabel jumper.&lt;br /&gt;
# &#039;&#039;&#039;Upload:&#039;&#039;&#039; Hubungkan ESP8266 ke komputer dan upload kode melalui Arduino IDE.&lt;br /&gt;
# &#039;&#039;&#039;Testing:&#039;&#039;&#039; Pastikan LCD menyala dan menampilkan angka. Jika layar kosong, putar potensiometer (trimpot) di belakang modul I2C untuk mengatur kontras.&lt;br /&gt;
&lt;br /&gt;
[[Table of Contents|&amp;lt; Kembali ke halaman awal]] | [[Sensor Laut|Ke halaman berikutnya &amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=320</id>
		<title>Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=320"/>
		<updated>2026-05-06T02:33:39Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
==Deskripsi==&lt;br /&gt;
[[File:Sensor With FairForward.jpg|thumb|Fair Forward bersama Tim Colabs, Masyarakat, Nelayan, dan Pemuda di Pulo Aceh]]&lt;br /&gt;
Kolaborasi &#039;&#039;Community-based Innovation Lab for Climate Resilience (Co_LABS)&#039;&#039; bersama FAIR Forward, sebelumnya telah menghasilkan materi pembelajaran terkait Artificial Intelligence (AI) dan Internet of Things (IoT) untuk mendukung inisiatif ketahanan iklim berbasis komunitas serta pengembangan ekonomi biru di Indonesia. Untuk memastikan keberlanjutan hasil tersebut, inisiatif ini berfokus pada pengembangan sistem pembelajaran yang terbuka dan terstruktur melalui Learning Management System (LMS) serta platform pendukung Co_LABS Wiki.&lt;br /&gt;
&lt;br /&gt;
Terintegrasi dalam ekosistem Sekolah Internet Komunitas (SIK), pendekatan ini bertujuan memperluas akses pembelajaran AI dan IoT bagi komunitas di wilayah terpencil dan pesisir, sekaligus mendorong pertukaran pengetahuan secara &#039;&#039;peer-to-peer&#039;&#039; dan pembelajaran berkelanjutan. Dengan menggabungkan modul digital mandiri dan platform pengetahuan terbuka, program ini diharapkan dapat mendukung akses jangka panjang, replikasi, serta keterlibatan yang lebih luas, termasuk dengan mitra baru.&lt;br /&gt;
&lt;br /&gt;
==Latar belakang==&lt;br /&gt;
Perubahan iklim dan peningkatan aktivitas manusia di wilayah pesisir menyebabkan degradasi kualitas air laut secara signifikan. Pemantauan kualitas air laut yang dilakukan pada dua tempat yaitu di Pulo Aceh dan Maros. Pulo Aceh, sebagai wilayah kepulauan yang kaya akan biodiversitas laut, memiliki potensi besar untuk konservasi terumbu karang. Namun, kondisi perairan di wilayah ini masih belum sepenuhnya terpantau secara berkelanjutan, khususnya dalam hal parameter kualitas air yang sangat mempengaruhi pertumbuhan dan kesehatan terumbu karang. Pemantauan kualitas air laut secara &#039;&#039;real-time&#039;&#039; sangat diperlukan untuk mendukung upaya rehabilitasi dan penanaman terumbu karang buatan di perairan sekitar Pulo Aceh. Sementara itu, Kabupaten Maros di Sulawesi Selatan memiliki kawasan tambak yang cukup luas dan menjadi sumber mata pencaharian utama masyarakat. Produktivitas budidaya perikanan tambak sangat bergantung pada kestabilan kualitas air, terutama pH, salinitas, oksigen terlarut, dan suhu. Pemantauan manual sering kali tidak efisien dan menyulitkan pengambilan keputusan cepat saat kondisi air memburuk.&lt;br /&gt;
&lt;br /&gt;
Untuk menjawab kebutuhan di kedua daerah ini, dibutuhkan sebuah sistem pemantauan kualitas air berbasis teknologi &#039;&#039;Internet of Things&#039;&#039; (IoT) yang dapat melakukan pengukuran secara otomatis dan mengirimkan data secara jarak jauh. Teknologi IoT memungkinkan pembangunan sistem pemantauan yang efisien, hemat biaya, dan dapat digunakan oleh masyarakat lokal maupun peneliti. Sistem ini diharapkan menjadi solusi berkelanjutan dan aplikatif baik untuk konservasi ekosistem laut di Pulo Aceh maupun peningkatan produktivitas tambak di Maros.&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Teknologi Tepat Guna (DIY)]]==&lt;br /&gt;
*[[Sensor Teknologi Tepat Guna (DIY)#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Teknologi Tepat Guna (DIY)#Skema Perakitan (Wiring)|Skema Perakitan (Wiring)]]&lt;br /&gt;
*[[Sensor Teknologi Tepat Guna (DIY)#Instalasi Arduino IDE &amp;amp; Setup ESP8266|Instalasi Arduino IDE &amp;amp; Setup ESP8266]]&lt;br /&gt;
*[[Sensor Teknologi Tepat Guna (DIY)#Pemrograman (Source Code)|Pemrograman (Source Code)]]&lt;br /&gt;
*[[Sensor Teknologi Tepat Guna (DIY)#Langkah Implementasi|Langkah Implementasi]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Laut]]==&lt;br /&gt;
*[[Sensor Laut#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Laut#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Laut#Kalibrasi|Kalibrasi]]&lt;br /&gt;
*[[Sensor Laut#Pemrograman (Source Code)|Pemrograman]]&lt;br /&gt;
*[[Sensor Laut#Sensor Mounting Structures|Sensor Mounting Structures]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Tambak]]==&lt;br /&gt;
*[[Sensor Tambak#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Tambak#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Tambak#Pemrograman|Pemrograman]]&lt;br /&gt;
*[[Sensor Tambak#Konfigurasi dan Kalibrasi|Konfigurasi dan Kalibrasi]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
&lt;br /&gt;
* [[Instalasi dan Konfigurasi Library Arduino]]&lt;br /&gt;
* [[Instalasi Elastic Search, Logstash, Kibana]]&lt;br /&gt;
* [[Konfigurasi Dashboard]]&lt;br /&gt;
* [[Instalasi Prophet]]&lt;br /&gt;
&lt;br /&gt;
==[[Daftar Komponen]]==&lt;br /&gt;
&lt;br /&gt;
==[[Perawatan dan Troubleshooting]]==&lt;br /&gt;
&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Perawatan Berkala|Perawatan Berkala]]&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Permasalah Umum|Permasalah Umum]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=319</id>
		<title>Sensor DIY</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=319"/>
		<updated>2026-05-06T02:31:56Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: update caption&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Halaman ini menyajikan panduan teknis mengenai perancangan dan implementasi sistem pemantauan kondisi lingkungan (suhu dan kelembapan) menggunakan mikrokontroler ESP8266 dan sensor DHT22. Sistem ini dirancang untuk memberikan data secara &#039;&#039;real-time&#039;&#039; yang ditampilkan melalui layar LCD.&lt;br /&gt;
&lt;br /&gt;
== Daftar Komponen / Spesifikasi Hardware ==&lt;br /&gt;
Komponen-komponen berikut dipilih berdasarkan kriteria fungsionalitas dan kompatibilitas sistem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Daftar Komponen#ESP32|ESP8266]]:&#039;&#039;&#039; Mikrokontroler dengan modul Wi-Fi.&lt;br /&gt;
* &#039;&#039;&#039;Sensor [[Daftar Komponen#DHT22|DHT22]]:&#039;&#039;&#039; Sensor digital untuk mengukur suhu dan kelembapan udara.&lt;br /&gt;
* &#039;&#039;&#039;LCD 16x2 dengan Modul I2C:&#039;&#039;&#039; Media untuk menampilkan hasil output sensor.&lt;br /&gt;
* &#039;&#039;&#039;Box X4:&#039;&#039;&#039; Enclosure atau wadah pelindung fisik untuk mengintegrasikan seluruh komponen.&lt;br /&gt;
* &#039;&#039;&#039;Kabel Jumper:&#039;&#039;&#039; Penghubung antar komponen (tipe Female-to-Female).&lt;br /&gt;
* &#039;&#039;&#039;Kabel Micro USB:&#039;&#039;&#039; Power&lt;br /&gt;
&lt;br /&gt;
== Skema Perakitan (Wiring) ==&lt;br /&gt;
Berikut adalah konfigurasi pinout untuk menghubungkan komponen ke ESP8266:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Tabel pinout komponen&lt;br /&gt;
!Komponen&lt;br /&gt;
!Pin Komponen&lt;br /&gt;
!Pin ESP8266&lt;br /&gt;
|-&lt;br /&gt;
|DHT22&lt;br /&gt;
|VCC / +&lt;br /&gt;
|3V&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Data / out&lt;br /&gt;
|D4 (GPIO 2)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / -&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|LCD l2C&lt;br /&gt;
|VCC&lt;br /&gt;
|VIN (5V) / 3V3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / G&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SDA&lt;br /&gt;
|D2 (GPIO 4)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SCL&lt;br /&gt;
|D1 (GPIO 5)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:DIY_1.1.png|alt=Gambar skema perakitan (wiring)|none|thumb|500x500px|Diagram pemasangan kabel jumper dari dht22 dan lcd ke esp 8266]]&lt;br /&gt;
&lt;br /&gt;
== Instalasi Arduino IDE &amp;amp; Setup ESP8266 ==&lt;br /&gt;
Tahapan ini menjelaskan langkah instalasi Arduino IDE dan setup ESP8266.&lt;br /&gt;
&lt;br /&gt;
=== Download dan Instalasi Software ===&lt;br /&gt;
&lt;br /&gt;
# Buka situs resmi [http://arduino.cc arduino.cc].&lt;br /&gt;
# Pilih versi terbaru sesuai sistem operasi Anda (Windows, macOS, atau Linux)[[File:Gambar file installer arduino.png|none|thumb|Gambar file installer arduino]]&lt;br /&gt;
#Jalankan file installer yang telah diunduh.&lt;br /&gt;
#Pastikan semua opsi checklist terpilih (terutama Install USB Driver dan Associate .ino files).&lt;br /&gt;
#Klik Next dan Install hingga selesai.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi Board ESP8266 ===&lt;br /&gt;
Secara default, Arduino IDE hanya mendukung board Arduino. Agar bisa memprogram ESP8266, maka harus dilakukan konfigurasi dan instalasi secara manual, berikut langkah-langkahnya:&lt;br /&gt;
&lt;br /&gt;
# Buka Arduino IDE, klik menu &#039;&#039;&#039;File &amp;gt; Preferences&#039;&#039;&#039;.[[File:Gambar menu preferences arduino.png|none|thumb|Gambar menu preferences arduino]]&lt;br /&gt;
# Pada kolom &#039;&#039;&#039;Additional Boards Manager URLs&#039;&#039;&#039;, masukkan url berikut: http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
# Klik &#039;&#039;&#039;OK&#039;&#039;&#039;.[[File:Gambar input additional boards manager URLs.png|none|thumb|Gambar input additional boards manager URLs]]&lt;br /&gt;
# Buka menu &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; Boards Manager…&#039;&#039;&#039;[[File:Gambar klik menu boards manager arduino.png|none|thumb|Gambar klik menu boards manager arduino]]&lt;br /&gt;
# Ketik &amp;quot;esp8266&amp;quot; di kolom pencarian, lalu klik &#039;&#039;&#039;Install&#039;&#039;&#039; pada paket dari &#039;&#039;&#039;ESP8266 Community&#039;&#039;&#039;.[[File:Gambar install paket dari ESP8266 Community.png|none|thumb|Gambar install paket dari ESP8266 Community]]&lt;br /&gt;
&lt;br /&gt;
=== Install Driver CH340 dan CP2102 ===&lt;br /&gt;
&lt;br /&gt;
# Install driver CH340 untuk Windows pada link : https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip&lt;br /&gt;
# Install driver CP2102 untuk Windows pada link: https://www.pololu.com/file/0J14/pololu-cp2102-windows-220616.zip&lt;br /&gt;
&lt;br /&gt;
=== Instalasi Library (DHT &amp;amp; LCD) ===&lt;br /&gt;
&lt;br /&gt;
# Pilih &#039;&#039;&#039;Sketch &amp;gt; Include Library &amp;gt; Manage Libraries...&#039;&#039;&#039;&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;DHT sensor library&amp;quot;&#039;&#039;&#039; (by Adafruit) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;. Jika muncul pop-up untuk menginstal dependensi (seperti &#039;&#039;Adafruit Unified Sensor&#039;&#039;), pilih &#039;&#039;&#039;Install All&#039;&#039;&#039;.&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;LiquidCrystal I2C&amp;quot;&#039;&#039;&#039; (by Frank de Brabander) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;.[[File:Gambar instalasi library DHT dan LCD.png|none|thumb|Gambar instalasi library DHT dan LCD]]&lt;br /&gt;
&lt;br /&gt;
=== Koneksi ke Perangkat ===&lt;br /&gt;
&lt;br /&gt;
# Hubungkan ESP8266 ke laptop menggunakan kabel data Micro USB.&lt;br /&gt;
# Pilih board di &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; ESP8266 Boards &amp;gt;&#039;&#039;&#039; (Contoh: &#039;&#039;&#039;NodeMCU 1.0 (ESP-12E Module)&#039;&#039;&#039;).[[File:Gambar pilih board NodeMCU 1.0 (ESP-12E Module).png|none|thumb|Gambar pilih board NodeMCU 1.0 (ESP-12E Module)]]&lt;br /&gt;
# Pilih Port yang sesuai di &#039;&#039;&#039;Tools &amp;gt; Port&#039;&#039;&#039; (Biasanya akan muncul COM3, COM4, dsb. di Windows).[[File:Gambar pilih port COM6.png|none|thumb|Gambar pilih port COM6]]&lt;br /&gt;
&lt;br /&gt;
==== Tips Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Driver USB: Jika Port tidak muncul, langkah yang perlu dilakukan adalah menginstal driver USB-to-Serial secara manual. Biasanya chip yang digunakan adalah CH340 atau CP2102 (tergantung varian NodeMCU yang digunakan).&#039;&#039;&lt;br /&gt;
* &#039;&#039;Kecepatan Upload: Untuk ESP8266, gunakan Upload Speed 115200 agar proses pengiriman kode lebih stabil.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pemrograman (Source Code) ==&lt;br /&gt;
Gunakan kode berikut untuk membaca data sensor dan menampilkannya ke LCD.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot;&lt;br /&gt;
#include &amp;lt;Adafruit_Sensor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DHTPIN D4      // Digital pin connected to the DHT sensor&lt;br /&gt;
#define DHTTYPE DHT22  // DHT 22  (AM2302), AM2321&lt;br /&gt;
&lt;br /&gt;
// Replace with network credentials&lt;br /&gt;
#define WIFISSID &amp;quot;Nama-Kelompok&amp;quot;&lt;br /&gt;
#define WIFIPASS &amp;quot;Pass-SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
const char* deviceid = &amp;quot;ID=Nama_Kelompok&amp;quot;;&lt;br /&gt;
const char* groupid = &amp;quot;GROUP=RURAL_SIK_LOMBA&amp;quot;;&lt;br /&gt;
//server to receive the data&lt;br /&gt;
const char* host = &amp;quot;pond.weather.id&amp;quot;;&lt;br /&gt;
const int port = 80;&lt;br /&gt;
&lt;br /&gt;
// do not touch below&lt;br /&gt;
unsigned long startTime = millis();&lt;br /&gt;
&lt;br /&gt;
const int watchdog = 10000;  // delay before pushing data&lt;br /&gt;
unsigned long previousMillis = millis();&lt;br /&gt;
&lt;br /&gt;
void connectWifi() {&lt;br /&gt;
  Serial.println(&amp;quot;Connecting to access point&amp;quot;);&lt;br /&gt;
  WiFi.disconnect();&lt;br /&gt;
  if (WiFi.getMode() != WIFI_STA) {  //WIFI_STA= station mode (connect ke akses point)&lt;br /&gt;
    WiFi.mode(WIFI_STA);&lt;br /&gt;
  }&lt;br /&gt;
  WiFi.begin(WIFISSID, WIFIPASS);&lt;br /&gt;
  //...Give ESP 10 seconds to connect to station.&lt;br /&gt;
  startTime = millis();&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED &amp;amp;&amp;amp; millis() - startTime &amp;lt; 10000) {&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  // Check Connection&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;Wifi connected; IP address: &amp;quot;);&lt;br /&gt;
    Serial.println(WiFi.localIP());&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;WiFi connect failed to ssid: &amp;quot;);&lt;br /&gt;
    Serial.println(WIFISSID);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Set the LCD address to 0x27 for a 16 chars and 2 line display&lt;br /&gt;
LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(F(&amp;quot;DHT22 test!&amp;quot;));&lt;br /&gt;
  dht.begin();&lt;br /&gt;
  lcd.init();&lt;br /&gt;
  lcd.backlight();&lt;br /&gt;
  connectWifi();&lt;br /&gt;
&lt;br /&gt;
  //intro gak penting&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;   Temperature&amp;quot;);&lt;br /&gt;
  lcd.setCursor(0, 1);&lt;br /&gt;
  lcd.print(&amp;quot;     Monitor&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt; watchdog) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
&lt;br /&gt;
    // Wait a few seconds between measurements.&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    // Reading temperature or humidity takes about 250 milliseconds!&lt;br /&gt;
    // Sensor readings may also be up to 2 seconds &#039;old&#039; (its a very slow sensor)&lt;br /&gt;
    float h = dht.readHumidity();&lt;br /&gt;
    // Read temperature as Celsius (the default)&lt;br /&gt;
    float t = dht.readTemperature();&lt;br /&gt;
&lt;br /&gt;
    // Check if any reads failed and exit early (to try again).&lt;br /&gt;
    if (isnan(h) || isnan(t)) {&lt;br /&gt;
      Serial.println(F(&amp;quot;Failed to read from DHT sensor!&amp;quot;));&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;No Sensor!&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.print(F(&amp;quot;Humidity: &amp;quot;));&lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(F(&amp;quot;%  Temperature: &amp;quot;));&lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.print(F(&amp;quot;°C &amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    //Display data ke LCD =&amp;gt;tampung di data string&lt;br /&gt;
    String print_temp = &amp;quot;Temp: &amp;quot;;&lt;br /&gt;
    print_temp += String(t);&lt;br /&gt;
    print_temp += &amp;quot; C&amp;quot;;&lt;br /&gt;
    String print_humd = &amp;quot;Humd: &amp;quot;;&lt;br /&gt;
    print_humd += String(h);&lt;br /&gt;
    print_humd += &amp;quot; %&amp;quot;;&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(print_temp);&lt;br /&gt;
    lcd.setCursor(0, 1);&lt;br /&gt;
    lcd.print(print_humd);&lt;br /&gt;
&lt;br /&gt;
    WiFiClient client;  //deklarasi method client&lt;br /&gt;
    HTTPClient http;    //deklarasi method http&lt;br /&gt;
&lt;br /&gt;
    if (!client.connect(host, port)) {&lt;br /&gt;
      Serial.print(&amp;quot;cannot connect to web server &amp;quot;);&lt;br /&gt;
      Serial.println(host);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //String url=&amp;quot;/weather/poller.php?&amp;quot;;&lt;br /&gt;
    String url = &amp;quot;http://&amp;quot;;&lt;br /&gt;
    url += host;&lt;br /&gt;
    url += &amp;quot;:&amp;quot;;&lt;br /&gt;
    url += port;&lt;br /&gt;
    url += &amp;quot;/?&amp;quot;;&lt;br /&gt;
    //url += &amp;quot;ID=YOURID&amp;quot;;&lt;br /&gt;
    url += deviceid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;&amp;quot;;&lt;br /&gt;
    url += groupid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;temperature=&amp;quot;;&lt;br /&gt;
    url += String(t);&lt;br /&gt;
    url += &amp;quot;&amp;amp;humidity=&amp;quot;;&lt;br /&gt;
    url += String(h);&lt;br /&gt;
    url += &amp;quot;&amp;amp;softwaretype=RuralICT2024&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    // send it&lt;br /&gt;
&lt;br /&gt;
    client.print(String(&amp;quot;GET &amp;quot;) + url + &amp;quot; HTTP/1.1\r\n&amp;quot; + &amp;quot;Host: &amp;quot; + host + &amp;quot;\r\n&amp;quot; + &amp;quot;Connection: close\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // wait for respond&lt;br /&gt;
    unsigned long timeout = millis();&lt;br /&gt;
    while (client.available() == 0) {&lt;br /&gt;
      if (millis() - timeout &amp;gt; 5000) {&lt;br /&gt;
        Serial.print(&amp;quot;timeout&amp;quot;);&lt;br /&gt;
        client.stop();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ok, we got the reply&lt;br /&gt;
    while (client.available()) {&lt;br /&gt;
      String line = client.readStringUntil(&#039;\r&#039;);&lt;br /&gt;
      Serial.print(line);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Langkah Implementasi ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Persiapan Box:&#039;&#039;&#039; Lubangi Box X4 di sisi depan untuk layar LCD dan lubang kecil di sisi samping untuk ventilasi sensor DHT22 serta kabel power.&lt;br /&gt;
# &#039;&#039;&#039;Wiring:&#039;&#039;&#039; Hubungkan semua komponen sesuai tabel di atas menggunakan kabel jumper.&lt;br /&gt;
# &#039;&#039;&#039;Upload:&#039;&#039;&#039; Hubungkan ESP8266 ke komputer dan upload kode melalui Arduino IDE.&lt;br /&gt;
# &#039;&#039;&#039;Testing:&#039;&#039;&#039; Pastikan LCD menyala dan menampilkan angka. Jika layar kosong, putar potensiometer (trimpot) di belakang modul I2C untuk mengatur kontras.&lt;br /&gt;
&lt;br /&gt;
[[Table of Contents|&amp;lt; Kembali ke halaman awal]] | [[Sensor Laut|Ke halaman berikutnya &amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_Laut&amp;diff=318</id>
		<title>Sensor Laut</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_Laut&amp;diff=318"/>
		<updated>2026-05-06T02:29:53Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Perakitan =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[File:Perakitan.jpg|thumb|Perakitan sensor laut bersama masyarakat pemuda Pulo Aceh]]&lt;br /&gt;
Bab ini menjelaskan proses perakitan perangkat sensor berbasis IoT, mulai dari wiring sensor, distribusi daya (power), hingga pemasangan ke dalam casing.&lt;br /&gt;
&lt;br /&gt;
Sistem menggunakan mikrokontroler ESP32 sebagai pusat kendali yang terhubung dengan berbagai sensor lingkungan seperti pH, Dissolved Oxygen (DO), salinitas, suhu air, serta sensor lingkungan lainnya.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= Daftar Komponen =&lt;br /&gt;
Daftar Komponen yang digunakan pada sensor tambak ini adalah sebagai berikut:&lt;br /&gt;
&lt;br /&gt;
=== Board dan Mikrokontroler ===&lt;br /&gt;
*Board PCB Custom: Board yang berfungsi untuk memfasilitasi integrasi berbagai sensor.&lt;br /&gt;
* ESP 32: Mikrokontroler yang mengelola pembacaan data dari sensor.&lt;br /&gt;
&lt;br /&gt;
=== Part Sensor ===&lt;br /&gt;
&lt;br /&gt;
* Sensor pH (DFRobot Analog pH Sensor/Meter Kit V2): Sensor yang berfungsi untuk mengukur tingkat keasaman atau kebasaan (pH) air.&lt;br /&gt;
* Sensor Disolve Oxygen (&#039;&#039;&#039;DFRobot Analog Dissolved Oxygen Sensor)&#039;&#039;&#039;: Sensor yang berfungsi untuk mengukur kadar oksigen terlarut (DO – &#039;&#039;Dissolved Oxygen&#039;&#039;) dalam air.&lt;br /&gt;
* Sensor Salinitas (&#039;&#039;&#039;DFRobot Analog Electrical Conductivity (EC) Sensor / Meter (K=10)):&#039;&#039;&#039; Sensor yang berfungsi untuk mengukur tingkat konduktivitas listrik dalam air.&lt;br /&gt;
* Sensor Temperatur Air (DS18B20): Sensor yang berfungsi untuk mengukur temperatur air.&lt;br /&gt;
* Sensor Temperatur Udara dan Kelembaban (DHT 22): Sensor yang berfungsi untuk mengukur temperatur dan kelembaban udara.&lt;br /&gt;
* Sensor Temperatur, kelembaban dan tekanan udara (BME 280): Sensor yang berfungsi untuk mengukur temperatur, kelembaban dan tekanan udara.&lt;br /&gt;
&lt;br /&gt;
=== Power ===&lt;br /&gt;
&lt;br /&gt;
* Relay: Modul saklar elektronik.&lt;br /&gt;
&lt;br /&gt;
* Voltage Meter: Modul sensor yang berfungsi mengukur tegangan, arus, dan daya pada suatu rangkaian.&lt;br /&gt;
&lt;br /&gt;
* Step Down: Modul konversi tegangan yang mengubah &#039;&#039;input&#039;&#039; DC 6–24V menjadi &#039;&#039;output&#039;&#039; stabil 5V hingga 3A.&lt;br /&gt;
&lt;br /&gt;
* Buck Boost: XL6009 Auto Boost Buck Adjustable digunakan untuk menaikkan (&#039;&#039;step up&#039;&#039;) atau menurunkan (&#039;&#039;step down&#039;&#039;) tegangan secara otomatis, dengan input 5–32V DC dan output 1.2–35V DC yang stabil meski tegangan input berubah.&lt;br /&gt;
&lt;br /&gt;
* Baterai: Baterai 18650 digunakan pada power bank, senter, laptop, &#039;&#039;e-bike&#039;&#039;, dan proyek elektronik karena kepadatan energi tinggi, umur pakai panjang, serta kemampuan menyediakan arus besar.&lt;br /&gt;
&lt;br /&gt;
* Solar Panel: Solar panel 10Wp digunakan untuk mengisi baterai kecil, sistem penerangan, atau proyek IoT bertenaga surya. Memiliki ukuran &#039;&#039;compact&#039;&#039;, efisiensi tinggi, dan tahan terhadap cuaca luar ruangan.&lt;br /&gt;
&lt;br /&gt;
* BMS: BMS (&#039;&#039;Battery Management System&#039;&#039;) 2S 8A berfungsi untuk menjaga kinerja dan memperpanjang umur baterai hingga lebih dari 30.000 jam.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wiring Sensor ==&lt;br /&gt;
&lt;br /&gt;
[[File:Wiring sensor.png|Wiring diagram untuk keseluruhan sensor|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Wiring sensor merupakan proses menghubungkan seluruh sensor ke ESP32 melalui PCB.&lt;br /&gt;
&lt;br /&gt;
Setiap sensor memiliki koneksi dasar:&lt;br /&gt;
* VCC → Tegangan (Power)&lt;br /&gt;
* GND → Ground&lt;br /&gt;
* Data → Sinyal (Analog/Digital)&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi Sensor ===&lt;br /&gt;
* pH → Analog (GPIO 33)&lt;br /&gt;
* Salinitas → Analog (GPIO 32)&lt;br /&gt;
* Dissolved Oxygen → Analog (GPIO 25)&lt;br /&gt;
* DS18B20 → Digital (OneWire)&lt;br /&gt;
* DHT22 → Digital (GPIO 27)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Wiring Power ==&lt;br /&gt;
&lt;br /&gt;
[[File:Wiring Power.png|Wiring power untuk kebutuhan sensor 2S |none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Sistem menggunakan sumber daya berbasis baterai dan panel surya.&lt;br /&gt;
&lt;br /&gt;
=== Alur Power ===&lt;br /&gt;
* Solar Panel → Buck/Boost Converter  &lt;br /&gt;
* → BMS (Battery Management System)  &lt;br /&gt;
* → Baterai  &lt;br /&gt;
* → Step Down 5V  &lt;br /&gt;
* → ESP32 &amp;amp; Sensor  &lt;br /&gt;
[[File:Wiring Solar Panel.png|Perakitan Sensor|none|thumb]]&lt;br /&gt;
=== Konfigurasi ===&lt;br /&gt;
* 2S (7.4V) → sistem standar&lt;br /&gt;
* 4S (14.8V) → untuk kebutuhan daya lebih besar&lt;br /&gt;
&lt;br /&gt;
=== Catatan Penting ===&lt;br /&gt;
* Pastikan output ke ESP32 stabil di 5V&lt;br /&gt;
* Gunakan BMS untuk proteksi baterai&lt;br /&gt;
* Periksa arus menggunakan INA219&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Langkah Perakitan ==&lt;br /&gt;
&lt;br /&gt;
[[File:Picture34.png|Wiring power untuk kebutuhan sensor 4S|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Ikuti langkah berikut untuk merakit sistem:&lt;br /&gt;
&lt;br /&gt;
# Pasang ESP32 pada PCB&lt;br /&gt;
# Pasang modul INA219 (monitoring power)&lt;br /&gt;
# Pasang modul LoRa&lt;br /&gt;
# Pasang sensor:&lt;br /&gt;
## pH&lt;br /&gt;
## Dissolved Oxygen (DO)&lt;br /&gt;
## Salinitas&lt;br /&gt;
# Hubungkan probe ke masing-masing sensor&lt;br /&gt;
# Sambungkan kabel sensor temperatur dan ultrasonic&lt;br /&gt;
# Lakukan wiring power sesuai diagram&lt;br /&gt;
# Masukkan semua komponen ke dalam casing&lt;br /&gt;
# Pastikan semua koneksi kuat dan tidak longgar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Pemasangan ESP32.png&lt;br /&gt;
File:Pemasangan INA219.png&lt;br /&gt;
File:Pemasangan LoRa.png&lt;br /&gt;
File:Pemasangan Modul Dissolve Oxygen.png&lt;br /&gt;
File:Pemasangan Kabel Sensor Temperatur Air.png&lt;br /&gt;
File:Pastikan Konfigurasi Sesuai dan Berfungsi.jpg&lt;br /&gt;
File:Pemasangan Probe Dissolved Oxygen.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Integrasi ke Casing ==&lt;br /&gt;
&lt;br /&gt;
[[File:casing assembly.png|Perakitan Sensor|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
* Gunakan casing IP65/IP66 untuk perlindungan outdoor&lt;br /&gt;
* Pastikan semua kabel memiliki seal (anti air)&lt;br /&gt;
* Gunakan pipa pelindung untuk probe sensor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Validasi Sistem ==&lt;br /&gt;
&lt;br /&gt;
Setelah perakitan selesai, lakukan pengecekan:&lt;br /&gt;
&lt;br /&gt;
=== Checklist ===&lt;br /&gt;
* Semua modul menyala (LED indikator aktif)&lt;br /&gt;
* ESP32 dapat membaca data sensor&lt;br /&gt;
* Tidak ada kabel longgar atau short circuit&lt;br /&gt;
* Tegangan stabil sesuai spesifikasi&lt;br /&gt;
&lt;br /&gt;
=== Indikator Berhasil ===&lt;br /&gt;
* Data sensor muncul di serial monitor&lt;br /&gt;
* Sistem dapat berjalan tanpa restart&lt;br /&gt;
* Komunikasi LoRa aktif&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting Dasar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Masalah !! Penyebab !! Solusi&lt;br /&gt;
|-&lt;br /&gt;
| Sensor tidak terbaca || Wiring salah || Periksa pin dan koneksi&lt;br /&gt;
|-&lt;br /&gt;
| ESP32 mati || Tegangan tidak stabil || Cek step-down dan baterai&lt;br /&gt;
|-&lt;br /&gt;
| Data tidak konsisten || Sensor belum kalibrasi || Lakukan kalibrasi ulang&lt;br /&gt;
|-&lt;br /&gt;
| Tidak ada komunikasi LoRa || Modul tidak terhubung || Cek wiring SPI dan antena&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Kalibrasi =&lt;br /&gt;
&lt;br /&gt;
Konfigurasi dan kalibrasi dilakukan setelah proses perakitan selesai untuk memastikan seluruh sensor bekerja dengan baik dan menghasilkan data yang akurat.&lt;br /&gt;
&lt;br /&gt;
[[File:Buffer Sensor pH.png|thumb|none|Buffer Sensor pH]]&lt;br /&gt;
&lt;br /&gt;
== Kalibrasi Sensor pH ==&lt;br /&gt;
&lt;br /&gt;
Kalibrasi diperlukan untuk memastikan akurasi pembacaan nilai pH, terutama setelah penggunaan intensif atau ketika hasil pembacaan mulai tidak konsisten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Rekomendasi Frekuensi Kalibrasi ===&lt;br /&gt;
* Setiap 1 bulan sekali&lt;br /&gt;
* Saat hasil pembacaan tidak stabil atau melenceng&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Peralatan yang Dibutuhkan ===&lt;br /&gt;
* Larutan buffer standar pH 4.00&lt;br /&gt;
* Larutan buffer standar pH 7.00&lt;br /&gt;
* Gelas ukur atau wadah bersih&lt;br /&gt;
* Air tawar untuk membilas probe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Persiapan ===&lt;br /&gt;
* Pastikan modul pH dan ESP32 sudah terhubung dengan benar&lt;br /&gt;
* Pastikan sistem dapat membaca data sensor melalui Serial Monitor&lt;br /&gt;
* Bilas probe menggunakan air tawar&lt;br /&gt;
* Keringkan probe dengan tisu atau kain lembut&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Langkah Kalibrasi (2 Titik: pH 4 &amp;amp; pH 7) ===&lt;br /&gt;
&lt;br /&gt;
==== Kalibrasi Titik Pertama (pH 4.00) ====&lt;br /&gt;
# Siapkan larutan buffer pH 4.00&lt;br /&gt;
# Celupkan probe ke dalam larutan&lt;br /&gt;
# Tunggu hingga nilai pembacaan stabil&lt;br /&gt;
# Catat nilai ADC atau output sensor&lt;br /&gt;
# Simpan nilai tersebut sebagai referensi kalibrasi pertama&lt;br /&gt;
&lt;br /&gt;
==== Kalibrasi Titik Kedua (pH 7.00) ====&lt;br /&gt;
# Bilas probe dengan air tawar&lt;br /&gt;
# Celupkan probe ke larutan buffer pH 7.00&lt;br /&gt;
# Tunggu hingga pembacaan stabil&lt;br /&gt;
# Catat nilai ADC atau output sensor&lt;br /&gt;
# Simpan nilai tersebut sebagai referensi kalibrasi kedua&lt;br /&gt;
&lt;br /&gt;
[[File:Regresi pH pada saat kalibrasi.png|thumb|none|Regresi pH pada saat kalibrasi]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Penyesuaian pada Program ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#define pinProbe 33 ;&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
   Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
   int ADC = 0;&lt;br /&gt;
&lt;br /&gt;
   float meanADC;&lt;br /&gt;
&lt;br /&gt;
   for(int i=0; i&amp;lt;800; i++){&lt;br /&gt;
&lt;br /&gt;
       ADC += analogRead(pinProbe);               &lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   meanADC = ADC/800;&lt;br /&gt;
&lt;br /&gt;
   Serial.println(&amp;quot;meanADC:&amp;quot; + String(meanADC));&lt;br /&gt;
&lt;br /&gt;
   delay(1000);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Catatan Penting ===&lt;br /&gt;
* Hindari menyentuh ujung probe secara langsung&lt;br /&gt;
* Pastikan larutan buffer tidak terkontaminasi&lt;br /&gt;
* Lakukan kalibrasi di suhu ruangan untuk hasil optimal&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Indikator Kalibrasi Berhasil ===&lt;br /&gt;
* Nilai pH mendekati nilai larutan standar&lt;br /&gt;
* Pembacaan stabil (tidak fluktuatif)&lt;br /&gt;
* Tidak terdapat delay pembacaan yang berlebihan&lt;br /&gt;
&lt;br /&gt;
== Kalibrasi Sensor Salinitas ==&lt;br /&gt;
&lt;br /&gt;
Kalibrasi dilakukan untuk memastikan pembacaan konduktivitas (EC dalam mS/cm) tetap akurat, terutama setelah penggunaan intensif, pembersihan elektroda, atau ketika hasil pembacaan tidak konsisten.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Rekomendasi Frekuensi Kalibrasi ===&lt;br /&gt;
* Setiap 1 bulan sekali&lt;br /&gt;
* Setelah pembersihan elektroda menggunakan larutan asam&lt;br /&gt;
* Saat hasil pembacaan tidak stabil atau melenceng&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Peralatan yang Dibutuhkan ===&lt;br /&gt;
* Larutan standar konduktivitas (contoh: 12.88 mS/cm atau sesuai spesifikasi sensor K=10)&lt;br /&gt;
* Wadah bersih untuk larutan kalibrasi&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Persiapan ===&lt;br /&gt;
* Pastikan probe dalam kondisi bersih dan kering&lt;br /&gt;
* Pastikan sistem sudah dapat membaca data sensor melalui Serial Monitor&lt;br /&gt;
* Hindari kontaminasi larutan kalibrasi&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Langkah Kalibrasi ===&lt;br /&gt;
&lt;br /&gt;
==== Kalibrasi dengan Larutan Standar ====&lt;br /&gt;
# Tuangkan larutan standar konduktivitas ke dalam wadah bersih&lt;br /&gt;
# Celupkan probe sepenuhnya ke dalam larutan&lt;br /&gt;
# Pastikan tidak ada gelembung udara pada elektroda&lt;br /&gt;
# Tunggu hingga pembacaan stabil&lt;br /&gt;
# Catat nilai ADC atau output sensor&lt;br /&gt;
# Sesuaikan nilai kalibrasi pada program Arduino hingga pembacaan mendekati nilai standar (misal 12.88 mS/cm)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[File:Regresi Sensor Salinitas.png|thumb|none|Regresi Sensor Salinitas]]&lt;br /&gt;
=== Penyesuaian pada Program ===&lt;br /&gt;
Gunakan nilai hasil kalibrasi untuk menentukan faktor konversi dari ADC ke nilai salinitas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#define pinProbe 32 ;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    int ADC = 0;&lt;br /&gt;
    float meanADC;&lt;br /&gt;
    for(int i=0; i&amp;lt;800; i++){&lt;br /&gt;
        ADC += analogRead(pinProbe);                &lt;br /&gt;
    }&lt;br /&gt;
    meanADC = ADC/800;&lt;br /&gt;
    Serial.println(&amp;quot;meanADC:&amp;quot; + String(meanADC));&lt;br /&gt;
    delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Langkah Setelah Kalibrasi ===&lt;br /&gt;
* Bilas probe dengan air tawar&lt;br /&gt;
* Keringkan dengan kain lembut&lt;br /&gt;
* Simpan probe dalam kondisi aman&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Catatan Penting ===&lt;br /&gt;
* Gunakan larutan sesuai dengan rentang sensor (K=10 untuk air laut)&lt;br /&gt;
* Hindari menyentuh elektroda secara langsung&lt;br /&gt;
* Jangan biarkan larutan standar mengering pada probe (dapat menyebabkan kristalisasi)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Indikator Kalibrasi Berhasil ===&lt;br /&gt;
* Nilai mendekati larutan standar&lt;br /&gt;
* Pembacaan stabil (tidak fluktuatif)&lt;br /&gt;
* Sensor merespon perubahan dengan cepat&lt;br /&gt;
&lt;br /&gt;
== Kalibrasi Sensor Dissolved Oxygen (DO) ==&lt;br /&gt;
&lt;br /&gt;
Kalibrasi diperlukan untuk memastikan pembacaan kadar oksigen terlarut (mg/L) akurat, terutama setelah perawatan probe, penggantian membran, atau penggantian larutan elektrolit.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Rekomendasi Frekuensi Kalibrasi ===&lt;br /&gt;
* Setiap 1 bulan sekali&lt;br /&gt;
* Setelah mengganti membran atau larutan elektrolit&lt;br /&gt;
* Saat hasil pembacaan tidak stabil atau melenceng&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Persiapan ===&lt;br /&gt;
* Pastikan probe dalam kondisi bersih dan kering&lt;br /&gt;
* Pastikan sistem sudah dapat membaca data sensor melalui Serial Monitor&lt;br /&gt;
* Hindari kontaminasi pada permukaan probe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Langkah Kalibrasi ===&lt;br /&gt;
&lt;br /&gt;
# Bersihkan probe jika diperlukan&lt;br /&gt;
# Basahi probe dengan air murni, lalu kibaskan untuk menghilangkan tetesan berlebih&lt;br /&gt;
# Paparkan probe ke udara terbuka (jangan gunakan kipas)&lt;br /&gt;
# Biarkan probe terkena aliran udara alami hingga pembacaan stabil&lt;br /&gt;
# Catat nilai tegangan output sensor (dalam mV)&lt;br /&gt;
# Nilai ini merupakan tegangan DO jenuh (saturation voltage) pada suhu saat ini&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Penyesuaian pada Program ===&lt;br /&gt;
Gunakan nilai tegangan hasil kalibrasi untuk menggantikan parameter kalibrasi pada kode.&lt;br /&gt;
&lt;br /&gt;
Contoh:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define VREF    3300//VREF(mv)&lt;br /&gt;
#define ADC_RES 4096//ADC Resolution&lt;br /&gt;
&lt;br /&gt;
uint32_t raw;&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    raw=analogRead(A1);&lt;br /&gt;
    Serial.println(&amp;quot;raw:\t&amp;quot;+String(raw)+&amp;quot;\tVoltage(mv)&amp;quot;+String(raw*VREF/ADC_RES));&lt;br /&gt;
    delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nilai tersebut digunakan sebagai referensi tegangan DO jenuh pada perhitungan sensor.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Catatan Penting ===&lt;br /&gt;
* Jangan meniup probe menggunakan kipas atau mulut (dapat merusak akurasi)&lt;br /&gt;
* Temperatur sangat mempengaruhi hasil kalibrasi&lt;br /&gt;
* Lakukan kalibrasi pada kondisi lingkungan yang stabil&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Indikator Kalibrasi Berhasil ===&lt;br /&gt;
* Nilai DO stabil saat probe di udara&lt;br /&gt;
* Tidak terjadi fluktuasi signifikan&lt;br /&gt;
* Pembacaan konsisten setelah digunakan kembali di air&lt;br /&gt;
&lt;br /&gt;
= Pemrograman (Source Code) =&lt;br /&gt;
Tahap pertama dalam memulai programming utama adalah menyiapkan initial code yang mencakup seluruh library yang diperlukan untuk komunikasi sensor dan transmisi data. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_Sensor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_INA219.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
#include &amp;lt;DHT.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_BME280.h&amp;gt;&lt;br /&gt;
#include &amp;lt;OneWire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;DallasTemperature.h&amp;gt;  //DS18B20&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;LoRa.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sensor DHT 22 ===&lt;br /&gt;
Konfigurasi sensor DHT22 dimulai dengan mendefinisikan pin koneksi dan tipe sensor yang digunakan untuk pengukuran suhu dan kelembaban udara. fungsi setDHT() untuk akuisisi data, dan printDHT() untuk menampilkan hasil. Berikut adalah code program yang digunakan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//DHT22  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
//Constants&lt;br /&gt;
&lt;br /&gt;
#define DHTPIN 27          // what pin  we&#039;re connected to&lt;br /&gt;
&lt;br /&gt;
#define DHTTYPE DHT22      // DHT 22  (AM2302)&lt;br /&gt;
&lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);  //// Initialize DHT  sensor for normal 16mhz Arduino&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
float dhtTemperature = 0;&lt;br /&gt;
&lt;br /&gt;
float dhtHumidity = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setDHT() {&lt;br /&gt;
&lt;br /&gt;
//Read data and store  it to variables hum and temp&lt;br /&gt;
&lt;br /&gt;
dhtHumidity = dht.readHumidity();&lt;br /&gt;
&lt;br /&gt;
dhtTemperature = dht.readTemperature();&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
void printDHT() {&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Humidity = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.print(dhtHumidity);&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Temperature =  &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.print(dhtTemperature);&lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;ºC&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sensor BME 280 ===&lt;br /&gt;
Sensor BME280 dikonfigurasi untuk mengukur empat parameter lingkungan sekaligus: suhu, tekanan barometrik, kelembaban, dan estimasi ketinggian berdasarkan tekanan permukaan laut standar. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//BME280  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
#define SEALEVELPRESSURE_HPA (1013.25)&lt;br /&gt;
&lt;br /&gt;
Adafruit_BME280 bme;  //  I2C&lt;br /&gt;
&lt;br /&gt;
float bmeTemperature;&lt;br /&gt;
&lt;br /&gt;
float bmePressure;&lt;br /&gt;
&lt;br /&gt;
float bmeHumidity;&lt;br /&gt;
&lt;br /&gt;
float bmeAltitude;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setBMEValues() {&lt;br /&gt;
&lt;br /&gt;
  try {&lt;br /&gt;
&lt;br /&gt;
   bmeTemperature =  bme.readTemperature();                 //Celcius&lt;br /&gt;
&lt;br /&gt;
   bmePressure =  bme.readPressure() / 100.0F;              // hPa&lt;br /&gt;
&lt;br /&gt;
   bmeHumidity =  bme.readHumidity();                       // %&lt;br /&gt;
&lt;br /&gt;
   bmeAltitude =  bme.readAltitude(SEALEVELPRESSURE_HPA);   // meter&lt;br /&gt;
&lt;br /&gt;
  } catch (String error)  {&lt;br /&gt;
&lt;br /&gt;
    Serial.println(&amp;quot;Error BME: &amp;quot; + error);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void printBMEValues() {&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Temperature = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.print(bmeTemperature);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;  *C&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Pressure = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.print(bmePressure);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;  hPa&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Approx. Altitude = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.print(bmeAltitude);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;  m&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Humidity = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.print(bmeHumidity);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;  %&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sensor suhu air (DS18B20) ===&lt;br /&gt;
Sensor suhu air DS18B20 diimplementasikan dengan protokol OneWire pada GPIO 4, memberikan measurement yang waterproof dan ideal untuk aplikasi monitoring kualitas air laut. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//DS18B20  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
// GPIO where the DS18B20 is connected to&lt;br /&gt;
&lt;br /&gt;
const int waterTemperaturePin = 4;&lt;br /&gt;
&lt;br /&gt;
// Setup a oneWire instance to communicate with any OneWire  devices&lt;br /&gt;
&lt;br /&gt;
OneWire oneWire(waterTemperaturePin);&lt;br /&gt;
&lt;br /&gt;
// Pass our oneWire reference to Dallas Temperature sensor&lt;br /&gt;
&lt;br /&gt;
DallasTemperature sensors(&amp;amp;oneWire);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
float waterTemperature = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setWaterTemperature() {&lt;br /&gt;
&lt;br /&gt;
sensors.requestTemperatures();&lt;br /&gt;
&lt;br /&gt;
waterTemperature = sensors.getTempCByIndex(0);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void printWaterTemperature() {&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Water Temperature  = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.print(waterTemperature);&lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;ºC&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sensor pH (DFRobot : Analog pH Sensor/Meter Kit V2) ===&lt;br /&gt;
Pengukuran pH dilakukan melalui pembacaan analog pada pin 33 dengan metode nilai yang didapat setelah dilakukan kalibrasi untuk mendapatkan nilai pH yang stabil dan akurat. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//pHSensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
const int PH_PIN = 33;&lt;br /&gt;
&lt;br /&gt;
float ph;&lt;br /&gt;
&lt;br /&gt;
float PH_ADC_RAW = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setPH() {&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; 800; i++) {&lt;br /&gt;
&lt;br /&gt;
  PH_ADC_RAW += analogRead(PH_PIN);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
PH_ADC_RAW /= 800;&lt;br /&gt;
&lt;br /&gt;
//Serial.println(PH_ADC_RAW);&lt;br /&gt;
&lt;br /&gt;
ph = 15.5942 - 0.0051167 * PH_ADC_RAW;&lt;br /&gt;
&lt;br /&gt;
//ph = -0.2668 *  PH_ADC_RAW + 519.93;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void printPH() {&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;PH_ADC_RAW =  &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.println(PH_ADC_RAW);&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;pH = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.println(ph);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sensor Salinitas (DFRobot : Analog Electrical Conductivity Sensor / Meter (K=10)) ===&lt;br /&gt;
Pengukuran nilai salinitas air menggunakan sensor TDS yang terhubung ke pin 32 pada papan mikrokontroler. Kode ini berfungsi untuk mengambil data analog dari sensor, kemudian mengolahnya menjadi nilai salinitas yang dapat ditampilkan melalui serial monitor. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//TDS Sensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
const int TDS_PIN = 32;&lt;br /&gt;
&lt;br /&gt;
float salinity;&lt;br /&gt;
&lt;br /&gt;
float TDS_ADC_RAW = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setSalinity() {&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; 800; i++) {&lt;br /&gt;
&lt;br /&gt;
  TDS_ADC_RAW += analogRead(TDS_PIN);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
TDS_ADC_RAW /= 800;&lt;br /&gt;
&lt;br /&gt;
//Serial.println(TDS_ADC_RAW);&lt;br /&gt;
&lt;br /&gt;
//salinity = 1E-06 *  TDS_ADC_RAW * TDS_ADC_RAW + 0.0266 * TDS_ADC_RAW + 0.9853;&lt;br /&gt;
&lt;br /&gt;
//salinity = 0.1294 *  TDS_ADC_RAW + 21.266 ;&lt;br /&gt;
&lt;br /&gt;
salinity = 0.0176 * TDS_ADC_RAW - 6.9707;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void printSalinitas() {&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;TDS_ADC_RAW =  &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.println(TDS_ADC_RAW);&lt;br /&gt;
&lt;br /&gt;
Serial.print(&amp;quot;Salinitas = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.println(salinity);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Sensor Dissolved Oxygen (DFRobot Analog Dissolved Oxygen Sensor)&#039;&#039; ===&lt;br /&gt;
Kadar oksigen terlarut (Dissolved Oxygen/DO) di dalam air menggunakan sensor DO yang terhubung ke pin 25 pada papan mikrokontroler. Sensor ini bekerja dengan mengubah kadar oksigen yang terlarut menjadi sinyal listrik berupa tegangan. Nilai tegangan tersebut kemudian dibaca oleh mikrokontroler dan diolah menggunakan tabel serta rumus kalibrasi, sehingga dapat ditampilkan sebagai data oksigen terlarut yang lebih mudah dipahami. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//DO Sensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
#define DO_PIN 25&lt;br /&gt;
&lt;br /&gt;
#define VREF 3300     //VREF (mv)&lt;br /&gt;
&lt;br /&gt;
#define ADC_RES 4095  //ADC Resolution&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Single-point calibration Mode=0&lt;br /&gt;
&lt;br /&gt;
//Two-point calibration Mode=1&lt;br /&gt;
&lt;br /&gt;
#define TWO_POINT_CALIBRATION 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;/nowiki&amp;gt;define READ_TEMP (25)  //Current  water temperature ℃, Or temperature sensor function&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Single point calibration needs to be filled CAL1_V and  CAL1_T&lt;br /&gt;
&lt;br /&gt;
#define CAL1_V (269)  //mv&lt;br /&gt;
&lt;br /&gt;
#define CAL1_T (25)    //℃&lt;br /&gt;
&lt;br /&gt;
//Two-point calibration needs to be filled CAL2_V and CAL2_T&lt;br /&gt;
&lt;br /&gt;
//CAL1 High temperature point, CAL2 Low temperature point&lt;br /&gt;
&lt;br /&gt;
#define CAL2_V (1300)  //mv&lt;br /&gt;
&lt;br /&gt;
#define CAL2_T (15)    //℃&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const uint16_t DO_Table[41] = {&lt;br /&gt;
&lt;br /&gt;
14460, 14220, 13820, 13440, 13090, 12740, 12420, 12110, 11810, 11530,&lt;br /&gt;
&lt;br /&gt;
11260, 11010, 10770, 10530, 10300, 10080, 9860, 9660, 9460, 9270,&lt;br /&gt;
&lt;br /&gt;
9080, 8900, 8730, 8570, 8410, 8250, 8110, 7960, 7820, 7690,&lt;br /&gt;
&lt;br /&gt;
7560, 7430, 7300, 7180, 7070, 6950, 6840, 6730, 6630, 6530, 6410&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uint8_t Temperaturet;&lt;br /&gt;
&lt;br /&gt;
uint16_t DO_ADC_RAW;&lt;br /&gt;
&lt;br /&gt;
uint16_t DO_ADC_Voltage;&lt;br /&gt;
&lt;br /&gt;
uint16_t DO;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int16_t readDO(uint32_t voltage_mv, uint8_t temperature_c) {&lt;br /&gt;
&lt;br /&gt;
#if TWO_POINT_CALIBRATION == 00&lt;br /&gt;
&lt;br /&gt;
uint16_t V_saturation = (uint32_t)CAL1_V + (uint32_t)35 * temperature_c - (uint32_t)CAL1_T * 35;&lt;br /&gt;
&lt;br /&gt;
return (voltage_mv * DO_Table[temperature_c] /  V_saturation);&lt;br /&gt;
&lt;br /&gt;
#else&lt;br /&gt;
&lt;br /&gt;
uint16_t V_saturation = (int16_t)((int8_t)temperature_c - CAL2_T) * ((uint16_t)CAL1_V - CAL2_V) / ((uint8_t)CAL1_T - CAL2_T) + CAL2_V;&lt;br /&gt;
&lt;br /&gt;
return (voltage_mv * DO_Table[temperature_c] /  V_saturation);&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setDO() {&lt;br /&gt;
&lt;br /&gt;
Temperaturet = (uint8_t)READ_TEMP;&lt;br /&gt;
&lt;br /&gt;
DO_ADC_RAW = analogRead(DO_PIN);&lt;br /&gt;
&lt;br /&gt;
DO_ADC_Voltage = uint32_t(VREF) * DO_ADC_RAW / ADC_RES;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DO = readDO(DO_ADC_Voltage,  Temperaturet);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void printDO() {&lt;br /&gt;
&lt;br /&gt;
//Serial.print(&amp;quot;DO  Temperaturet:\t&amp;quot; + String(Temperaturet) + &amp;quot;\t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Serial.print(&amp;quot;DO  ADC RAW:\t&amp;quot; + String(DO_ADC_RAW) + &amp;quot;\t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Serial.print(&amp;quot;DO  ADC Voltage:\t&amp;quot; + String(DO_ADC_Voltage) + &amp;quot;\t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;DO_ADC_RAW:\t&amp;quot; + String(DO_ADC_RAW));&lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;DO_ADC_Voltage:\t&amp;quot; + String(DO_ADC_Voltage)); &lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;DO:\t&amp;quot; + String(DO));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Sensor Voltage&#039;&#039; ===&lt;br /&gt;
Sensor INA219 pada alamat I2C 0x41 digunakan untuk monitoring power consumption sistem secara real-time, mengukur tegangan, arus, dan daya yang dikonsumsi seluruh rangkaian. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
// // INA219 Sensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Adafruit_INA219 ina219(0x41);&lt;br /&gt;
&lt;br /&gt;
float shuntvoltage = 0;&lt;br /&gt;
&lt;br /&gt;
float busvoltage = 0;&lt;br /&gt;
&lt;br /&gt;
float current_mA = 0;&lt;br /&gt;
&lt;br /&gt;
float loadvoltage = 0;&lt;br /&gt;
&lt;br /&gt;
float power_mW = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setVoltage() {&lt;br /&gt;
&lt;br /&gt;
  try {&lt;br /&gt;
&lt;br /&gt;
   shuntvoltage = ina219.getShuntVoltage_mV();&lt;br /&gt;
&lt;br /&gt;
   busvoltage = ina219.getBusVoltage_V();&lt;br /&gt;
&lt;br /&gt;
   current_mA = ina219.getCurrent_mA();&lt;br /&gt;
&lt;br /&gt;
   power_mW = ina219.getPower_mW();&lt;br /&gt;
&lt;br /&gt;
   loadvoltage =  busvoltage + (shuntvoltage / 1000);&lt;br /&gt;
&lt;br /&gt;
  } catch (String error) {&lt;br /&gt;
&lt;br /&gt;
   Serial.println(&amp;quot;Error Voltage:  &amp;quot;  + error);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void printVoltage() {&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;bus voltage =  &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(busvoltage);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;shunt voltage =  &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(shuntvoltage);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;load voltage&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(loadvoltage);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;current mA =  &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(current_mA);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;power mW = &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(power_mW);&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lora ===&lt;br /&gt;
Implementasi komunikasi LoRa mencakup &#039;&#039;setup transceiver&#039;&#039; pada frekuensi 915 MHz, konfigurasi pin control, dan &#039;&#039;utility functions&#039;&#039; untuk &#039;&#039;scanning&#039;&#039; perangkat I2C serta kontrol relay pada pin 26. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//LoRa  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
// - Pin configs -&lt;br /&gt;
&lt;br /&gt;
#define ss 5&lt;br /&gt;
&lt;br /&gt;
#define rst 12&lt;br /&gt;
&lt;br /&gt;
#define dio0 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void startLora() {&lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;LoRa Sender&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Setup LoRa  transceiver module&lt;br /&gt;
&lt;br /&gt;
LoRa.setPins(ss, rst, dio0);&lt;br /&gt;
&lt;br /&gt;
LoRa.setTxPower(23, false);&lt;br /&gt;
&lt;br /&gt;
//LoRa.setSpreadingFactor(12);&lt;br /&gt;
&lt;br /&gt;
//LoRa.setSignalBandwidth(62.5E3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (!LoRa.begin(915E6)) {&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Starting LoRa  failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  ESP.restart();&lt;br /&gt;
&lt;br /&gt;
} else {&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Starting LoRa  successful&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void i2cScan() {&lt;br /&gt;
&lt;br /&gt;
byte error, address;&lt;br /&gt;
&lt;br /&gt;
int nDevices;&lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;Scanning...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
nDevices = 0;&lt;br /&gt;
&lt;br /&gt;
for (address = 1; address &amp;lt; 127; address++) {&lt;br /&gt;
&lt;br /&gt;
  Wire.beginTransmission(address);&lt;br /&gt;
&lt;br /&gt;
  error = Wire.endTransmission();&lt;br /&gt;
&lt;br /&gt;
  if (error == 0) {&lt;br /&gt;
&lt;br /&gt;
    Serial.print(&amp;quot;I2C device found  at address 0x&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (address&amp;lt;16) {&lt;br /&gt;
&lt;br /&gt;
       Serial.print(&amp;quot;0&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.println(address,HEX);&lt;br /&gt;
&lt;br /&gt;
    nDevices++;&lt;br /&gt;
&lt;br /&gt;
  } else if (error == 4) {&lt;br /&gt;
&lt;br /&gt;
    Serial.print(&amp;quot;Unknow error at  address 0x&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (address &amp;lt; 16) {&lt;br /&gt;
&lt;br /&gt;
      Serial.print(&amp;quot;0&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.println(address, HEX);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (nDevices == 0) {&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;No I2C devices  found\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// else {&lt;br /&gt;
&lt;br /&gt;
//   Serial.println(&amp;quot;done\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
&lt;br /&gt;
Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Relay  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
pinMode(26, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
digitalWrite(26, LOW);  //set pin LOW (Switch Closed)&lt;br /&gt;
&lt;br /&gt;
  Wire.begin();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
i2cScan();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Start Sensor&#039;&#039; ===&lt;br /&gt;
Proses &#039;&#039;startup&#039;&#039; sistem mencakup inisialisasi berurutan semua komponen monitoring: komunikasi LoRa, power sensing INA219, sensor cuaca DHT22 dan BME280, pengukur suhu air DS18B20, sensor pH, serta konfigurasi &#039;&#039;deep sleep timer&#039;&#039; untuk optimasi daya. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
//LoRa  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
startLora(); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//INA219  +++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
  try {&lt;br /&gt;
&lt;br /&gt;
   if (!ina219.begin()) {&lt;br /&gt;
&lt;br /&gt;
     Serial.println(&amp;quot;Failed to find  INA219 chip&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
     //while (1) {  delay(10); }&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
  } catch (String error) {&lt;br /&gt;
&lt;br /&gt;
   Serial.println(&amp;quot;Error Voltage:  &amp;quot;  + error);&lt;br /&gt;
&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//DHT22  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
dht.begin();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 //BME280  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
Serial.println(&amp;quot;Starting  BME280&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
bool BMEstatus; &lt;br /&gt;
&lt;br /&gt;
BMEstatus = bme.begin(0x76); &lt;br /&gt;
&lt;br /&gt;
if (!BMEstatus) {&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Could not find a  valid BME280 sensor, check wiring!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 //DS18B20  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
// Start the DS18B20  sensor&lt;br /&gt;
&lt;br /&gt;
pinMode(waterTemperaturePin,  INPUT);&lt;br /&gt;
&lt;br /&gt;
sensors.begin(); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//pH Sensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
pinMode(PH_PIN, INPUT); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Voltage Sensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
// set the ADC  attenuation to 11 dB (up to ~3.3V input)&lt;br /&gt;
&lt;br /&gt;
analogSetAttenuation(ADC_11db);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// // Sleep  Configuration&lt;br /&gt;
&lt;br /&gt;
//  //esp_sleep_enable_timer_wakeup(1800E6);&lt;br /&gt;
&lt;br /&gt;
esp_sleep_enable_timer_wakeup(30E6);&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
//Set relay pin LOW  (Switch closed)&lt;br /&gt;
&lt;br /&gt;
//digitalWrite(25,  LOW);&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
if (millis() -  startTime &amp;gt; restartTime) {&lt;br /&gt;
&lt;br /&gt;
  ESP.restart();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
Serial.println(millis() - startTime);&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Print Sensor&#039;&#039; ===&lt;br /&gt;
Proses print dan fungsi &#039;&#039;loop&#039;&#039; mengimplementasikan &#039;&#039;cycle monitoring&#039;&#039; lengkap: pembacaan sensor berurutan, validasi data berdasarkan threshold suhu air, &#039;&#039;formatting data&#039;&#039; ke protokol komunikasi &#039;&#039;custom&#039;&#039;, transmisi LoRa, dan &#039;&#039;power shutdown&#039;&#039; untuk optimasi energi. Berikut adalah code program yang digunakan.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//DS18B20  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
setWaterTemperature();&lt;br /&gt;
&lt;br /&gt;
//  printWaterTemperature();  //remove  comment on the function to use it.&lt;br /&gt;
&lt;br /&gt;
if (waterTemperature &amp;lt; 84.00) {&lt;br /&gt;
&lt;br /&gt;
  //DHT22  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
  setDHT();&lt;br /&gt;
&lt;br /&gt;
  // printDHT();&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  //BME280  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
  setBMEValues();&lt;br /&gt;
&lt;br /&gt;
  //  printBMEValues();  //remove comment on the function to use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //Salinitas  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
  setSalinity();&lt;br /&gt;
&lt;br /&gt;
  //  printSalinitas();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //pH Sensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
  setPH();&lt;br /&gt;
&lt;br /&gt;
  //  printPH();   //remove comment on the function to use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  //DO Sensor  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
  setDO();&lt;br /&gt;
&lt;br /&gt;
    printDO();  //remove comment on the function to use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // // Voltage Sensor  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;br /&gt;
  // // setVoltage();&lt;br /&gt;
&lt;br /&gt;
  // //  printVoltage();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  String message = &amp;quot;ID=Aceh_Solitude-1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;GROUP=colabs&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  //message +=  &amp;quot;&amp;amp;deviceid=PA00&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;loc=BlangSitungkoh&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;long=5.6691075&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;lat=95.0906248&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;iT=&amp;quot; + String(bmeTemperature);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;iH=&amp;quot; + String(bmeHumidity);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;iP=&amp;quot; + String(bmePressure);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;iA=&amp;quot; + String(bmeAltitude);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;eT=&amp;quot; + String(dhtTemperature);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;eH=&amp;quot; + String(dhtHumidity);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;wT=&amp;quot; + String(waterTemperature);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;pH=&amp;quot; + String(ph);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;DO=&amp;quot; + String(DO);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;Sal=&amp;quot; + String(salinity);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;bV=&amp;quot; + String(busvoltage);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;sV=&amp;quot; + String(shuntvoltage);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;lV=&amp;quot; + String(loadvoltage);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;mA=&amp;quot; + String(current_mA);&lt;br /&gt;
&lt;br /&gt;
  message += &amp;quot;&amp;amp;mW=&amp;quot; + String(power_mW);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // message +=  &amp;quot;&amp;amp;softwaretype=prototype-00&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Sending packet:  &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(message);&lt;br /&gt;
&lt;br /&gt;
  // send packet&lt;br /&gt;
&lt;br /&gt;
  LoRa.beginPacket();&lt;br /&gt;
&lt;br /&gt;
  LoRa.print(message);&lt;br /&gt;
&lt;br /&gt;
  LoRa.endPacket();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(26, HIGH);  //Set relay pin HIGH (Circuit Opened)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Wire.end();&lt;br /&gt;
&lt;br /&gt;
  LoRa.end();&lt;br /&gt;
&lt;br /&gt;
  Serial.end();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  delay(100);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  esp_deep_sleep_start();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implementasi kode lengkap di atas menunjukkan integrasi sistem &#039;&#039;monitoring&#039;&#039; kualitas air laut. Sistem ini mampu beroperasi secara mandiri dengan &#039;&#039;cycle&#039;&#039; pembacaan sensor, transmisi data LoRa, dan power management yang optimal untuk deployment jangka panjang di lingkungan laut. &#039;&#039;Source code&#039;&#039; lengkap dan dokumentasi tambahan dapat diakses melalui &#039;&#039;repository&#039;&#039; GitHub di: https://github.com/insaninfonesia/Co_LABS.&lt;br /&gt;
&lt;br /&gt;
= Sensor Mounting Structures =&lt;br /&gt;
[[File:Solitude 1.png|thumb|none|Solitude]]&lt;br /&gt;
&lt;br /&gt;
Akurasi data sensor dalam sistem monitoring kualitas air sangat bergantung pada cara dan posisi pemasangan sensor. Oleh karena itu, diperlukan struktur penyangga yang tepat agar sensor tetap stabil, terlindungi, dan mudah diakses untuk perawatan.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Tujuan Struktur Pemasangan ===&lt;br /&gt;
Struktur ini dirancang agar sensor dapat:&lt;br /&gt;
* Berada pada kedalaman yang sesuai dengan kebutuhan pengukuran&lt;br /&gt;
* Terlindungi dari gelombang, arus, dan faktor lingkungan&lt;br /&gt;
* Mudah diakses untuk kalibrasi, perawatan, dan penggantian&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Buoy (Pelampung) ==&lt;br /&gt;
&lt;br /&gt;
[[File:Water Rover.png|thumb|none|Water Rover]]&lt;br /&gt;
&lt;br /&gt;
Buoy merupakan platform terapung yang digunakan untuk menopang sensor di atas maupun di dalam air. Metode ini umum digunakan pada laut, danau, atau perairan dalam di mana pemasangan tiang tidak memungkinkan.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Karakteristik Buoy ===&lt;br /&gt;
* Mengapung di permukaan air&lt;br /&gt;
* Fleksibel mengikuti gelombang&lt;br /&gt;
* Cocok untuk monitoring jangka panjang&lt;br /&gt;
* Dapat membawa sistem mandiri (solar panel &amp;amp; baterai)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Panduan Pemasangan ===&lt;br /&gt;
&lt;br /&gt;
# Gunakan pelampung yang kuat, tahan korosi, dan tahan air laut&lt;br /&gt;
# Pasang pemberat (anchor) di dasar perairan untuk menjaga posisi buoy&lt;br /&gt;
# Gunakan tali atau kabel penyangga yang kuat dan tahan air&lt;br /&gt;
# Sesuaikan kedalaman sensor dengan kebutuhan pengukuran&lt;br /&gt;
# Pastikan sensor tidak terlalu dekat permukaan atau dasar&lt;br /&gt;
# Sediakan ruang untuk panel surya dan baterai jika menggunakan sistem mandiri&lt;br /&gt;
&lt;br /&gt;
[[File:Solitude.png|thumb|none|Schema 3D Solitude]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Tips Pemasangan ===&lt;br /&gt;
* Gunakan material stainless steel atau plastik HDPE&lt;br /&gt;
* Pastikan semua konektor tahan air (waterproof)&lt;br /&gt;
* Hindari kabel terlalu tegang (beri slack untuk gelombang)&lt;br /&gt;
* Gunakan pelindung probe (pipa atau housing)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Catatan ===&lt;br /&gt;
Metode buoy sangat cocok untuk:&lt;br /&gt;
* Lokasi dengan kedalaman tinggi&lt;br /&gt;
* Area tanpa struktur tetap&lt;br /&gt;
* Monitoring jangka panjang di laut terbuka&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=File:Perakitan.jpg&amp;diff=317</id>
		<title>File:Perakitan.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=File:Perakitan.jpg&amp;diff=317"/>
		<updated>2026-05-06T02:29:05Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;merakit bersama&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=316</id>
		<title>Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=316"/>
		<updated>2026-05-06T02:18:23Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
==Deskripsi==&lt;br /&gt;
[[File:Sensor With FairForward.jpg|thumb|Fair Forward bersama Tim Colabs, Masyarakat, Nelayan, dan Pemuda di Pulo Aceh]]&lt;br /&gt;
Kolaborasi &#039;&#039;Community-based Innovation Lab for Climate Resilience (Co_LABS)&#039;&#039; bersama FAIR Forward, sebelumnya telah menghasilkan materi pembelajaran terkait Artificial Intelligence (AI) dan Internet of Things (IoT) untuk mendukung inisiatif ketahanan iklim berbasis komunitas serta pengembangan ekonomi biru di Indonesia. Untuk memastikan keberlanjutan hasil tersebut, inisiatif ini berfokus pada pengembangan sistem pembelajaran yang terbuka dan terstruktur melalui Learning Management System (LMS) serta platform pendukung Co_LABS Wiki.&lt;br /&gt;
&lt;br /&gt;
Terintegrasi dalam ekosistem Sekolah Internet Komunitas (SIK), pendekatan ini bertujuan memperluas akses pembelajaran AI dan IoT bagi komunitas di wilayah terpencil dan pesisir, sekaligus mendorong pertukaran pengetahuan secara &#039;&#039;peer-to-peer&#039;&#039; dan pembelajaran berkelanjutan. Dengan menggabungkan modul digital mandiri dan platform pengetahuan terbuka, program ini diharapkan dapat mendukung akses jangka panjang, replikasi, serta keterlibatan yang lebih luas, termasuk dengan mitra baru.&lt;br /&gt;
&lt;br /&gt;
==Latar belakang==&lt;br /&gt;
Perubahan iklim dan peningkatan aktivitas manusia di wilayah pesisir menyebabkan degradasi kualitas air laut secara signifikan. Pemantauan kualitas air laut yang dilakukan pada dua tempat yaitu di Pulo Aceh dan Maros. Pulo Aceh, sebagai wilayah kepulauan yang kaya akan biodiversitas laut, memiliki potensi besar untuk konservasi terumbu karang. Namun, kondisi perairan di wilayah ini masih belum sepenuhnya terpantau secara berkelanjutan, khususnya dalam hal parameter kualitas air yang sangat mempengaruhi pertumbuhan dan kesehatan terumbu karang. Pemantauan kualitas air laut secara &#039;&#039;real-time&#039;&#039; sangat diperlukan untuk mendukung upaya rehabilitasi dan penanaman terumbu karang buatan di perairan sekitar Pulo Aceh. Sementara itu, Kabupaten Maros di Sulawesi Selatan memiliki kawasan tambak yang cukup luas dan menjadi sumber mata pencaharian utama masyarakat. Produktivitas budidaya perikanan tambak sangat bergantung pada kestabilan kualitas air, terutama pH, salinitas, oksigen terlarut, dan suhu. Pemantauan manual sering kali tidak efisien dan menyulitkan pengambilan keputusan cepat saat kondisi air memburuk.&lt;br /&gt;
&lt;br /&gt;
Untuk menjawab kebutuhan di kedua daerah ini, dibutuhkan sebuah sistem pemantauan kualitas air berbasis teknologi &#039;&#039;Internet of Things&#039;&#039; (IoT) yang dapat melakukan pengukuran secara otomatis dan mengirimkan data secara jarak jauh. Teknologi IoT memungkinkan pembangunan sistem pemantauan yang efisien, hemat biaya, dan dapat digunakan oleh masyarakat lokal maupun peneliti. Sistem ini diharapkan menjadi solusi berkelanjutan dan aplikatif baik untuk konservasi ekosistem laut di Pulo Aceh maupun peningkatan produktivitas tambak di Maros.&lt;br /&gt;
&lt;br /&gt;
==[[Sensor DIY|Sensor Teknologi Tepat Guna (DIY)]]==&lt;br /&gt;
*[[Sensor DIY#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor DIY#Skema Perakitan (Wiring)|Skema Perakitan (Wiring)]]&lt;br /&gt;
*[[Sensor DIY#Instalasi Arduino IDE &amp;amp; Setup ESP8266|Instalasi Arduino IDE &amp;amp; Setup ESP8266]]&lt;br /&gt;
*[[Sensor DIY#Pemrograman (Source Code)|Pemrograman (Source Code)]]&lt;br /&gt;
*[[Sensor DIY#Langkah Implementasi|Langkah Implementasi]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Laut]]==&lt;br /&gt;
*[[Sensor Laut#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Laut#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Laut#Kalibrasi|Kalibrasi]]&lt;br /&gt;
*[[Sensor Laut#Pemrograman (Source Code)|Pemrograman]]&lt;br /&gt;
*[[Sensor Laut#Sensor Mounting Structures|Sensor Mounting Structures]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Tambak]]==&lt;br /&gt;
*[[Sensor Tambak#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Tambak#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Tambak#Pemrograman|Pemrograman]]&lt;br /&gt;
*[[Sensor Tambak#Konfigurasi dan Kalibrasi|Konfigurasi dan Kalibrasi]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
&lt;br /&gt;
* [[Instalasi dan Konfigurasi Library Arduino]]&lt;br /&gt;
* [[Instalasi Elastic Search, Logstash, Kibana]]&lt;br /&gt;
* [[Konfigurasi Dashboard]]&lt;br /&gt;
* [[Instalasi Prophet]]&lt;br /&gt;
&lt;br /&gt;
==[[Daftar Komponen]]==&lt;br /&gt;
&lt;br /&gt;
==[[Perawatan dan Troubleshooting]]==&lt;br /&gt;
&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Perawatan Berkala|Perawatan Berkala]]&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Permasalah Umum|Permasalah Umum]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=File:Sensor_With_FairForward.jpg&amp;diff=315</id>
		<title>File:Sensor With FairForward.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=File:Sensor_With_FairForward.jpg&amp;diff=315"/>
		<updated>2026-05-06T02:12:47Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Foto bersama antara tim pengembang, nelayan, masyarakat dan Fair Forward&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=IoT_Colabs_Wiki:About&amp;diff=314</id>
		<title>IoT Colabs Wiki:About</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=IoT_Colabs_Wiki:About&amp;diff=314"/>
		<updated>2026-05-06T02:02:20Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: menambahkan paparan umum tentang wiki colabs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Kegiatan ini merupakan kelanjutan dari kolaborasi &#039;&#039;Community-based Innovation Lab for Climate Resilience (Co_LABS)&#039;&#039; bersama FAIR Forward, yang sebelumnya telah menghasilkan materi pembelajaran terkait Artificial Intelligence (AI) dan Internet of Things (IoT) untuk mendukung inisiatif ketahanan iklim berbasis komunitas serta pengembangan ekonomi biru di Indonesia. Untuk memastikan keberlanjutan hasil tersebut, inisiatif ini berfokus pada pengembangan sistem pembelajaran yang terbuka dan terstruktur melalui Learning Management System (LMS) serta platform pendukung Co_LABS Wiki.&lt;br /&gt;
&lt;br /&gt;
Terintegrasi dalam ekosistem Sekolah Internet Komunitas (SIK), pendekatan ini bertujuan memperluas akses pembelajaran AI dan IoT bagi komunitas di wilayah terpencil dan pesisir, sekaligus mendorong pertukaran pengetahuan secara &#039;&#039;peer-to-peer&#039;&#039; dan pembelajaran berkelanjutan. Dengan menggabungkan modul digital mandiri dan platform pengetahuan terbuka, program ini diharapkan dapat mendukung akses jangka panjang, replikasi, serta keterlibatan yang lebih luas, termasuk dengan mitra baru.&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=313</id>
		<title>Sensor DIY</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=313"/>
		<updated>2026-05-06T01:22:13Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Halaman ini menyajikan panduan teknis mengenai perancangan dan implementasi sistem pemantauan kondisi lingkungan (suhu dan kelembapan) menggunakan mikrokontroler ESP8266 dan sensor DHT22. Sistem ini dirancang untuk memberikan data secara &#039;&#039;real-time&#039;&#039; yang ditampilkan melalui layar LCD.&lt;br /&gt;
&lt;br /&gt;
== Daftar Komponen / Spesifikasi Hardware ==&lt;br /&gt;
Komponen-komponen berikut dipilih berdasarkan kriteria fungsionalitas dan kompatibilitas sistem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Daftar Komponen#ESP32|ESP8266]]:&#039;&#039;&#039; Mikrokontroler dengan modul Wi-Fi.&lt;br /&gt;
* &#039;&#039;&#039;Sensor [[Daftar Komponen#DHT22|DHT22]]:&#039;&#039;&#039; Sensor digital untuk mengukur suhu dan kelembapan udara.&lt;br /&gt;
* &#039;&#039;&#039;LCD 16x2 dengan Modul I2C:&#039;&#039;&#039; Media untuk menampilkan hasil output sensor.&lt;br /&gt;
* &#039;&#039;&#039;Box X4:&#039;&#039;&#039; Enclosure atau wadah pelindung fisik untuk mengintegrasikan seluruh komponen.&lt;br /&gt;
* &#039;&#039;&#039;Kabel Jumper:&#039;&#039;&#039; Penghubung antar komponen (tipe Female-to-Female).&lt;br /&gt;
* &#039;&#039;&#039;Kabel Micro USB:&#039;&#039;&#039; Power&lt;br /&gt;
&lt;br /&gt;
== Skema Perakitan (Wiring) ==&lt;br /&gt;
Berikut adalah konfigurasi pinout untuk menghubungkan komponen ke ESP8266:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Komponen&lt;br /&gt;
!Pin Komponen&lt;br /&gt;
!Pin ESP8266&lt;br /&gt;
|-&lt;br /&gt;
|DHT22&lt;br /&gt;
|VCC / +&lt;br /&gt;
|3V&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Data / out&lt;br /&gt;
|D4 (GPIO 2)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / -&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|LCD l2C&lt;br /&gt;
|VCC&lt;br /&gt;
|VIN (5V) / 3V3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / G&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SDA&lt;br /&gt;
|D2 (GPIO 4)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SCL&lt;br /&gt;
|D1 (GPIO 5)&lt;br /&gt;
|}&lt;br /&gt;
Gambar skema perakitan (wiring) di tampilkan pada gambar berikut.&lt;br /&gt;
[[File:DIY_1.1.png|alt=Gambar skema perakitan (wiring)|none|thumb|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Instalasi Arduino IDE &amp;amp; Setup ESP8266 ==&lt;br /&gt;
Tahapan ini menjelaskan langkah instalasi Arduino IDE dan setup ESP8266.&lt;br /&gt;
&lt;br /&gt;
=== Download dan Instalasi Software ===&lt;br /&gt;
&lt;br /&gt;
# Buka situs resmi [http://arduino.cc arduino.cc].&lt;br /&gt;
# Pilih versi terbaru sesuai sistem operasi Anda (Windows, macOS, atau Linux)[[File:Gambar file installer arduino.png|none|thumb|Gambar file installer arduino]]&lt;br /&gt;
#Jalankan file installer yang telah diunduh.&lt;br /&gt;
#Pastikan semua opsi checklist terpilih (terutama Install USB Driver dan Associate .ino files).&lt;br /&gt;
#Klik Next dan Install hingga selesai.&lt;br /&gt;
(Masing2 poin dikasih cuplikan gambar)&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi Board ESP8266 ===&lt;br /&gt;
Secara default, Arduino IDE hanya mendukung board Arduino. Agar bisa memprogram ESP8266, maka harus dilakukan konfigurasi dan instalasi secara manual, berikut langkah-langkahnya:&lt;br /&gt;
&lt;br /&gt;
# Buka Arduino IDE, klik menu &#039;&#039;&#039;File &amp;gt; Preferences&#039;&#039;&#039;.[[File:Gambar menu preferences arduino.png|none|thumb|Gambar menu preferences arduino]]&lt;br /&gt;
# Pada kolom &#039;&#039;&#039;Additional Boards Manager URLs&#039;&#039;&#039;, masukkan url berikut: http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
# Klik &#039;&#039;&#039;OK&#039;&#039;&#039;.[[File:Gambar input additional boards manager URLs.png|none|thumb|Gambar input additional boards manager URLs]]&lt;br /&gt;
# Buka menu &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; Boards Manager…&#039;&#039;&#039;[[File:Gambar klik menu boards manager arduino.png|none|thumb|Gambar klik menu boards manager arduino]]&lt;br /&gt;
# Ketik &amp;quot;esp8266&amp;quot; di kolom pencarian, lalu klik &#039;&#039;&#039;Install&#039;&#039;&#039; pada paket dari &#039;&#039;&#039;ESP8266 Community&#039;&#039;&#039;.[[File:Gambar install paket dari ESP8266 Community.png|none|thumb|Gambar install paket dari ESP8266 Community]]&lt;br /&gt;
&lt;br /&gt;
=== Install Driver CH340 dan CP2102 ===&lt;br /&gt;
&lt;br /&gt;
# Install driver CH340 untuk Windows pada link : https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip&lt;br /&gt;
# Install driver CP2102 untuk Windows pada link: https://www.pololu.com/file/0J14/pololu-cp2102-windows-220616.zip&lt;br /&gt;
&lt;br /&gt;
=== Instalasi Library (DHT &amp;amp; LCD) ===&lt;br /&gt;
&lt;br /&gt;
# Pilih &#039;&#039;&#039;Sketch &amp;gt; Include Library &amp;gt; Manage Libraries...&#039;&#039;&#039;&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;DHT sensor library&amp;quot;&#039;&#039;&#039; (by Adafruit) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;. Jika muncul pop-up untuk menginstal dependensi (seperti &#039;&#039;Adafruit Unified Sensor&#039;&#039;), pilih &#039;&#039;&#039;Install All&#039;&#039;&#039;.&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;LiquidCrystal I2C&amp;quot;&#039;&#039;&#039; (by Frank de Brabander) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;.[[File:Gambar instalasi library DHT dan LCD.png|none|thumb|Gambar instalasi library DHT dan LCD]]&lt;br /&gt;
&lt;br /&gt;
=== Koneksi ke Perangkat ===&lt;br /&gt;
&lt;br /&gt;
# Hubungkan ESP8266 ke laptop menggunakan kabel data Micro USB.&lt;br /&gt;
# Pilih board di &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; ESP8266 Boards &amp;gt;&#039;&#039;&#039; (Contoh: &#039;&#039;&#039;NodeMCU 1.0 (ESP-12E Module)&#039;&#039;&#039;).[[File:Gambar pilih board NodeMCU 1.0 (ESP-12E Module).png|none|thumb|Gambar pilih board NodeMCU 1.0 (ESP-12E Module)]]&lt;br /&gt;
# Pilih Port yang sesuai di &#039;&#039;&#039;Tools &amp;gt; Port&#039;&#039;&#039; (Biasanya akan muncul COM3, COM4, dsb. di Windows).[[File:Gambar pilih port COM6.png|none|thumb|Gambar pilih port COM6]]&lt;br /&gt;
&lt;br /&gt;
==== Tips Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Driver USB: Jika Port tidak muncul, langkah yang perlu dilakukan adalah menginstal driver USB-to-Serial secara manual. Biasanya chip yang digunakan adalah CH340 atau CP2102 (tergantung varian NodeMCU yang digunakan).&#039;&#039;&lt;br /&gt;
* &#039;&#039;Kecepatan Upload: Untuk ESP8266, gunakan Upload Speed 115200 agar proses pengiriman kode lebih stabil.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pemrograman (Source Code) ==&lt;br /&gt;
Gunakan kode berikut untuk membaca data sensor dan menampilkannya ke LCD.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot;&lt;br /&gt;
#include &amp;lt;Adafruit_Sensor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DHTPIN D4      // Digital pin connected to the DHT sensor&lt;br /&gt;
#define DHTTYPE DHT22  // DHT 22  (AM2302), AM2321&lt;br /&gt;
&lt;br /&gt;
// Replace with network credentials&lt;br /&gt;
#define WIFISSID &amp;quot;Nama-Kelompok&amp;quot;&lt;br /&gt;
#define WIFIPASS &amp;quot;Pass-SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
const char* deviceid = &amp;quot;ID=Nama_Kelompok&amp;quot;;&lt;br /&gt;
const char* groupid = &amp;quot;GROUP=RURAL_SIK_LOMBA&amp;quot;;&lt;br /&gt;
//server to receive the data&lt;br /&gt;
const char* host = &amp;quot;pond.weather.id&amp;quot;;&lt;br /&gt;
const int port = 80;&lt;br /&gt;
&lt;br /&gt;
// do not touch below&lt;br /&gt;
unsigned long startTime = millis();&lt;br /&gt;
&lt;br /&gt;
const int watchdog = 10000;  // delay before pushing data&lt;br /&gt;
unsigned long previousMillis = millis();&lt;br /&gt;
&lt;br /&gt;
void connectWifi() {&lt;br /&gt;
  Serial.println(&amp;quot;Connecting to access point&amp;quot;);&lt;br /&gt;
  WiFi.disconnect();&lt;br /&gt;
  if (WiFi.getMode() != WIFI_STA) {  //WIFI_STA= station mode (connect ke akses point)&lt;br /&gt;
    WiFi.mode(WIFI_STA);&lt;br /&gt;
  }&lt;br /&gt;
  WiFi.begin(WIFISSID, WIFIPASS);&lt;br /&gt;
  //...Give ESP 10 seconds to connect to station.&lt;br /&gt;
  startTime = millis();&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED &amp;amp;&amp;amp; millis() - startTime &amp;lt; 10000) {&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  // Check Connection&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;Wifi connected; IP address: &amp;quot;);&lt;br /&gt;
    Serial.println(WiFi.localIP());&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;WiFi connect failed to ssid: &amp;quot;);&lt;br /&gt;
    Serial.println(WIFISSID);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Set the LCD address to 0x27 for a 16 chars and 2 line display&lt;br /&gt;
LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(F(&amp;quot;DHT22 test!&amp;quot;));&lt;br /&gt;
  dht.begin();&lt;br /&gt;
  lcd.init();&lt;br /&gt;
  lcd.backlight();&lt;br /&gt;
  connectWifi();&lt;br /&gt;
&lt;br /&gt;
  //intro gak penting&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;   Temperature&amp;quot;);&lt;br /&gt;
  lcd.setCursor(0, 1);&lt;br /&gt;
  lcd.print(&amp;quot;     Monitor&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt; watchdog) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
&lt;br /&gt;
    // Wait a few seconds between measurements.&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    // Reading temperature or humidity takes about 250 milliseconds!&lt;br /&gt;
    // Sensor readings may also be up to 2 seconds &#039;old&#039; (its a very slow sensor)&lt;br /&gt;
    float h = dht.readHumidity();&lt;br /&gt;
    // Read temperature as Celsius (the default)&lt;br /&gt;
    float t = dht.readTemperature();&lt;br /&gt;
&lt;br /&gt;
    // Check if any reads failed and exit early (to try again).&lt;br /&gt;
    if (isnan(h) || isnan(t)) {&lt;br /&gt;
      Serial.println(F(&amp;quot;Failed to read from DHT sensor!&amp;quot;));&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;No Sensor!&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.print(F(&amp;quot;Humidity: &amp;quot;));&lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(F(&amp;quot;%  Temperature: &amp;quot;));&lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.print(F(&amp;quot;°C &amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    //Display data ke LCD =&amp;gt;tampung di data string&lt;br /&gt;
    String print_temp = &amp;quot;Temp: &amp;quot;;&lt;br /&gt;
    print_temp += String(t);&lt;br /&gt;
    print_temp += &amp;quot; C&amp;quot;;&lt;br /&gt;
    String print_humd = &amp;quot;Humd: &amp;quot;;&lt;br /&gt;
    print_humd += String(h);&lt;br /&gt;
    print_humd += &amp;quot; %&amp;quot;;&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(print_temp);&lt;br /&gt;
    lcd.setCursor(0, 1);&lt;br /&gt;
    lcd.print(print_humd);&lt;br /&gt;
&lt;br /&gt;
    WiFiClient client;  //deklarasi method client&lt;br /&gt;
    HTTPClient http;    //deklarasi method http&lt;br /&gt;
&lt;br /&gt;
    if (!client.connect(host, port)) {&lt;br /&gt;
      Serial.print(&amp;quot;cannot connect to web server &amp;quot;);&lt;br /&gt;
      Serial.println(host);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //String url=&amp;quot;/weather/poller.php?&amp;quot;;&lt;br /&gt;
    String url = &amp;quot;http://&amp;quot;;&lt;br /&gt;
    url += host;&lt;br /&gt;
    url += &amp;quot;:&amp;quot;;&lt;br /&gt;
    url += port;&lt;br /&gt;
    url += &amp;quot;/?&amp;quot;;&lt;br /&gt;
    //url += &amp;quot;ID=YOURID&amp;quot;;&lt;br /&gt;
    url += deviceid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;&amp;quot;;&lt;br /&gt;
    url += groupid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;temperature=&amp;quot;;&lt;br /&gt;
    url += String(t);&lt;br /&gt;
    url += &amp;quot;&amp;amp;humidity=&amp;quot;;&lt;br /&gt;
    url += String(h);&lt;br /&gt;
    url += &amp;quot;&amp;amp;softwaretype=RuralICT2024&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    // send it&lt;br /&gt;
&lt;br /&gt;
    client.print(String(&amp;quot;GET &amp;quot;) + url + &amp;quot; HTTP/1.1\r\n&amp;quot; + &amp;quot;Host: &amp;quot; + host + &amp;quot;\r\n&amp;quot; + &amp;quot;Connection: close\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // wait for respond&lt;br /&gt;
    unsigned long timeout = millis();&lt;br /&gt;
    while (client.available() == 0) {&lt;br /&gt;
      if (millis() - timeout &amp;gt; 5000) {&lt;br /&gt;
        Serial.print(&amp;quot;timeout&amp;quot;);&lt;br /&gt;
        client.stop();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ok, we got the reply&lt;br /&gt;
    while (client.available()) {&lt;br /&gt;
      String line = client.readStringUntil(&#039;\r&#039;);&lt;br /&gt;
      Serial.print(line);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Langkah Implementasi ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Persiapan Box:&#039;&#039;&#039; Lubangi Box X4 di sisi depan untuk layar LCD dan lubang kecil di sisi samping untuk ventilasi sensor DHT22 serta kabel power.&lt;br /&gt;
# &#039;&#039;&#039;Wiring:&#039;&#039;&#039; Hubungkan semua komponen sesuai tabel di atas menggunakan kabel jumper.&lt;br /&gt;
# &#039;&#039;&#039;Upload:&#039;&#039;&#039; Hubungkan ESP8266 ke komputer dan upload kode melalui Arduino IDE.&lt;br /&gt;
# &#039;&#039;&#039;Testing:&#039;&#039;&#039; Pastikan LCD menyala dan menampilkan angka. Jika layar kosong, putar potensiometer (trimpot) di belakang modul I2C untuk mengatur kontras.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Setiap poin dikasih gambar)&lt;br /&gt;
&lt;br /&gt;
[[Table of Contents|&amp;lt; Kembali ke halaman awal]] | [[Sensor Laut|Ke halaman berikutnya &amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=312</id>
		<title>Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=312"/>
		<updated>2026-05-04T07:30:45Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
==Deskripsi==&lt;br /&gt;
&lt;br /&gt;
==Latar belakang==&lt;br /&gt;
Perubahan iklim dan peningkatan aktivitas manusia di wilayah pesisir menyebabkan degradasi kualitas air laut secara signifikan. Pemantauan kualitas air laut yang dilakukan pada dua tempat yaitu di Pulo Aceh dan Maros. Pulo Aceh, sebagai wilayah kepulauan yang kaya akan biodiversitas laut, memiliki potensi besar untuk konservasi terumbu karang. Namun, kondisi perairan di wilayah ini masih belum sepenuhnya terpantau secara berkelanjutan, khususnya dalam hal parameter kualitas air yang sangat mempengaruhi pertumbuhan dan kesehatan terumbu karang. Pemantauan kualitas air laut secara &#039;&#039;real-time&#039;&#039; sangat diperlukan untuk mendukung upaya rehabilitasi dan penanaman terumbu karang buatan di perairan sekitar Pulo Aceh. Sementara itu, Kabupaten Maros di Sulawesi Selatan memiliki kawasan tambak yang cukup luas dan menjadi sumber mata pencaharian utama masyarakat. Produktivitas budidaya perikanan tambak sangat bergantung pada kestabilan kualitas air, terutama pH, salinitas, oksigen terlarut, dan suhu. Pemantauan manual sering kali tidak efisien dan menyulitkan pengambilan keputusan cepat saat kondisi air memburuk.&lt;br /&gt;
&lt;br /&gt;
Untuk menjawab kebutuhan di kedua daerah ini, dibutuhkan sebuah sistem pemantauan kualitas air berbasis teknologi &#039;&#039;Internet of Things&#039;&#039; (IoT) yang dapat melakukan pengukuran secara otomatis dan mengirimkan data secara jarak jauh. Teknologi IoT memungkinkan pembangunan sistem pemantauan yang efisien, hemat biaya, dan dapat digunakan oleh masyarakat lokal maupun peneliti. Sistem ini diharapkan menjadi solusi berkelanjutan dan aplikatif baik untuk konservasi ekosistem laut di Pulo Aceh maupun peningkatan produktivitas tambak di Maros.&lt;br /&gt;
&lt;br /&gt;
==[[Sensor DIY|Sensor Teknologi Tepat Guna (DIY)]]==&lt;br /&gt;
*[[Sensor DIY#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor DIY#Skema Perakitan (Wiring)|Skema Perakitan (Wiring)]]&lt;br /&gt;
*[[Sensor DIY#Instalasi Arduino IDE &amp;amp; Setup ESP8266|Instalasi Arduino IDE &amp;amp; Setup ESP8266]]&lt;br /&gt;
*[[Sensor DIY#Pemrograman (Source Code)|Pemrograman (Source Code)]]&lt;br /&gt;
*[[Sensor DIY#Langkah Implementasi|Langkah Implementasi]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Laut]]==&lt;br /&gt;
*[[Sensor Laut#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Laut#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Laut#Kalibrasi|Kalibrasi]]&lt;br /&gt;
*[[Sensor Laut#Pemrograman (Source Code)|Pemrograman]]&lt;br /&gt;
*[[Sensor Laut#Sensor Mounting Structures|Sensor Mounting Structures]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Tambak]]==&lt;br /&gt;
*[[Sensor Tambak#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Tambak#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Tambak#Pemrograman|Pemrograman]]&lt;br /&gt;
*[[Sensor Tambak#Konfigurasi dan Kalibrasi|Konfigurasi dan Kalibrasi]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
&lt;br /&gt;
* [[Instalasi dan Konfigurasi Library Arduino]]&lt;br /&gt;
* [[Instalasi Elastic Search, Logstash, Kibana]]&lt;br /&gt;
* [[Konfigurasi Dashboard]]&lt;br /&gt;
* [[Instalasi Prophet]]&lt;br /&gt;
&lt;br /&gt;
==[[Daftar Komponen]]==&lt;br /&gt;
&lt;br /&gt;
==[[Perawatan dan Troubleshooting]]==&lt;br /&gt;
&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Perawatan Berkala|Perawatan Berkala]]&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Permasalah Umum|Permasalah Umum]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=311</id>
		<title>Sensor DIY</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=311"/>
		<updated>2026-05-02T08:39:21Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: tambah install drivers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Halaman ini menyajikan panduan teknis mengenai perancangan dan implementasi sistem pemantauan kondisi lingkungan (suhu dan kelembapan) menggunakan mikrokontroler ESP8266 dan sensor DHT22. Sistem ini dirancang untuk memberikan data secara &#039;&#039;real-time&#039;&#039; yang ditampilkan melalui layar LCD.&lt;br /&gt;
&lt;br /&gt;
== Daftar Komponen / Spesifikasi Hardware ==&lt;br /&gt;
Komponen-komponen berikut dipilih berdasarkan kriteria fungsionalitas dan kompatibilitas sistem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Daftar Komponen#ESP32|ESP8266]]:&#039;&#039;&#039; Mikrokontroler dengan modul Wi-Fi.&lt;br /&gt;
* &#039;&#039;&#039;Sensor [[Daftar Komponen#DHT22|DHT22]]:&#039;&#039;&#039; Sensor digital untuk mengukur suhu dan kelembapan udara.&lt;br /&gt;
* &#039;&#039;&#039;LCD 16x2 dengan Modul I2C:&#039;&#039;&#039; Media untuk menampilkan hasil output sensor.&lt;br /&gt;
* &#039;&#039;&#039;Box X4:&#039;&#039;&#039; Enclosure atau wadah pelindung fisik untuk mengintegrasikan seluruh komponen.&lt;br /&gt;
* &#039;&#039;&#039;Kabel Jumper:&#039;&#039;&#039; Penghubung antar komponen (tipe Female-to-Female).&lt;br /&gt;
* &#039;&#039;&#039;Kabel Micro USB:&#039;&#039;&#039; Power&lt;br /&gt;
&lt;br /&gt;
(Masing2 poin dikasih cuplikan gambar)&lt;br /&gt;
&lt;br /&gt;
== Skema Perakitan (Wiring) ==&lt;br /&gt;
Berikut adalah konfigurasi pinout untuk menghubungkan komponen ke ESP8266:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Komponen&lt;br /&gt;
!Pin Komponen&lt;br /&gt;
!Pin ESP8266&lt;br /&gt;
|-&lt;br /&gt;
|DHT22&lt;br /&gt;
|VCC / +&lt;br /&gt;
|3V&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Data / out&lt;br /&gt;
|D4 (GPIO 2)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / -&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|LCD l2C&lt;br /&gt;
|VCC&lt;br /&gt;
|VIN (5V) / 3V3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / G&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SDA&lt;br /&gt;
|D2 (GPIO 4)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SCL&lt;br /&gt;
|D1 (GPIO 5)&lt;br /&gt;
|}&lt;br /&gt;
Gambar skema perakitan (wiring) di tampilkan pada gambar berikut.&lt;br /&gt;
[[File:DIY_1.1.png|alt=Gambar skema perakitan (wiring)|none|thumb|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Instalasi Arduino IDE &amp;amp; Setup ESP8266 ==&lt;br /&gt;
Tahapan ini menjelaskan langkah instalasi Arduino IDE dan setup ESP8266.&lt;br /&gt;
&lt;br /&gt;
=== Download dan Instalasi Software ===&lt;br /&gt;
&lt;br /&gt;
# Buka situs resmi [http://arduino.cc arduino.cc].&lt;br /&gt;
# Pilih versi terbaru sesuai sistem operasi Anda (Windows, macOS, atau Linux)[[File:Gambar file installer arduino.png|none|thumb|Gambar file installer arduino]]&lt;br /&gt;
#Jalankan file installer yang telah diunduh.&lt;br /&gt;
#Pastikan semua opsi checklist terpilih (terutama Install USB Driver dan Associate .ino files).&lt;br /&gt;
#Klik Next dan Install hingga selesai.&lt;br /&gt;
(Masing2 poin dikasih cuplikan gambar)&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi Board ESP8266 ===&lt;br /&gt;
Secara default, Arduino IDE hanya mendukung board Arduino. Agar bisa memprogram ESP8266, maka harus dilakukan konfigurasi dan instalasi secara manual, berikut langkah-langkahnya:&lt;br /&gt;
&lt;br /&gt;
# Buka Arduino IDE, klik menu &#039;&#039;&#039;File &amp;gt; Preferences&#039;&#039;&#039;.[[File:Gambar menu preferences arduino.png|none|thumb|Gambar menu preferences arduino]]&lt;br /&gt;
# Pada kolom &#039;&#039;&#039;Additional Boards Manager URLs&#039;&#039;&#039;, masukkan url berikut: http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
# Klik &#039;&#039;&#039;OK&#039;&#039;&#039;.[[File:Gambar input additional boards manager URLs.png|none|thumb|Gambar input additional boards manager URLs]]&lt;br /&gt;
# Buka menu &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; Boards Manager…&#039;&#039;&#039;[[File:Gambar klik menu boards manager arduino.png|none|thumb|Gambar klik menu boards manager arduino]]&lt;br /&gt;
# Ketik &amp;quot;esp8266&amp;quot; di kolom pencarian, lalu klik &#039;&#039;&#039;Install&#039;&#039;&#039; pada paket dari &#039;&#039;&#039;ESP8266 Community&#039;&#039;&#039;.[[File:Gambar install paket dari ESP8266 Community.png|none|thumb|Gambar install paket dari ESP8266 Community]]&lt;br /&gt;
&lt;br /&gt;
=== Install Driver CH340 dan CP2102 ===&lt;br /&gt;
&lt;br /&gt;
# Install driver CH340 untuk Windows pada link : https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip&lt;br /&gt;
# Install driver CP2102 untuk Windows pada link: https://www.pololu.com/file/0J14/pololu-cp2102-windows-220616.zip&lt;br /&gt;
&lt;br /&gt;
=== Instalasi Library (DHT &amp;amp; LCD) ===&lt;br /&gt;
&lt;br /&gt;
# Pilih &#039;&#039;&#039;Sketch &amp;gt; Include Library &amp;gt; Manage Libraries...&#039;&#039;&#039;&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;DHT sensor library&amp;quot;&#039;&#039;&#039; (by Adafruit) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;. Jika muncul pop-up untuk menginstal dependensi (seperti &#039;&#039;Adafruit Unified Sensor&#039;&#039;), pilih &#039;&#039;&#039;Install All&#039;&#039;&#039;.&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;LiquidCrystal I2C&amp;quot;&#039;&#039;&#039; (by Frank de Brabander) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;.[[File:Gambar instalasi library DHT dan LCD.png|none|thumb|Gambar instalasi library DHT dan LCD]]&lt;br /&gt;
&lt;br /&gt;
=== Koneksi ke Perangkat ===&lt;br /&gt;
&lt;br /&gt;
# Hubungkan ESP8266 ke laptop menggunakan kabel data Micro USB.&lt;br /&gt;
# Pilih board di &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; ESP8266 Boards &amp;gt;&#039;&#039;&#039; (Contoh: &#039;&#039;&#039;NodeMCU 1.0 (ESP-12E Module)&#039;&#039;&#039;).[[File:Gambar pilih board NodeMCU 1.0 (ESP-12E Module).png|none|thumb|Gambar pilih board NodeMCU 1.0 (ESP-12E Module)]]&lt;br /&gt;
# Pilih Port yang sesuai di &#039;&#039;&#039;Tools &amp;gt; Port&#039;&#039;&#039; (Biasanya akan muncul COM3, COM4, dsb. di Windows).[[File:Gambar pilih port COM6.png|none|thumb|Gambar pilih port COM6]]&lt;br /&gt;
&lt;br /&gt;
==== Tips Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Driver USB: Jika Port tidak muncul, langkah yang perlu dilakukan adalah menginstal driver USB-to-Serial secara manual. Biasanya chip yang digunakan adalah CH340 atau CP2102 (tergantung varian NodeMCU yang digunakan).&#039;&#039;&lt;br /&gt;
* &#039;&#039;Kecepatan Upload: Untuk ESP8266, gunakan Upload Speed 115200 agar proses pengiriman kode lebih stabil.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pemrograman (Source Code) ==&lt;br /&gt;
Gunakan kode berikut untuk membaca data sensor dan menampilkannya ke LCD.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot;&lt;br /&gt;
#include &amp;lt;Adafruit_Sensor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DHTPIN D4      // Digital pin connected to the DHT sensor&lt;br /&gt;
#define DHTTYPE DHT22  // DHT 22  (AM2302), AM2321&lt;br /&gt;
&lt;br /&gt;
// Replace with network credentials&lt;br /&gt;
#define WIFISSID &amp;quot;Nama-Kelompok&amp;quot;&lt;br /&gt;
#define WIFIPASS &amp;quot;Pass-SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
const char* deviceid = &amp;quot;ID=Nama_Kelompok&amp;quot;;&lt;br /&gt;
const char* groupid = &amp;quot;GROUP=RURAL_SIK_LOMBA&amp;quot;;&lt;br /&gt;
//server to receive the data&lt;br /&gt;
const char* host = &amp;quot;pond.weather.id&amp;quot;;&lt;br /&gt;
const int port = 80;&lt;br /&gt;
&lt;br /&gt;
// do not touch below&lt;br /&gt;
unsigned long startTime = millis();&lt;br /&gt;
&lt;br /&gt;
const int watchdog = 10000;  // delay before pushing data&lt;br /&gt;
unsigned long previousMillis = millis();&lt;br /&gt;
&lt;br /&gt;
void connectWifi() {&lt;br /&gt;
  Serial.println(&amp;quot;Connecting to access point&amp;quot;);&lt;br /&gt;
  WiFi.disconnect();&lt;br /&gt;
  if (WiFi.getMode() != WIFI_STA) {  //WIFI_STA= station mode (connect ke akses point)&lt;br /&gt;
    WiFi.mode(WIFI_STA);&lt;br /&gt;
  }&lt;br /&gt;
  WiFi.begin(WIFISSID, WIFIPASS);&lt;br /&gt;
  //...Give ESP 10 seconds to connect to station.&lt;br /&gt;
  startTime = millis();&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED &amp;amp;&amp;amp; millis() - startTime &amp;lt; 10000) {&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  // Check Connection&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;Wifi connected; IP address: &amp;quot;);&lt;br /&gt;
    Serial.println(WiFi.localIP());&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;WiFi connect failed to ssid: &amp;quot;);&lt;br /&gt;
    Serial.println(WIFISSID);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Set the LCD address to 0x27 for a 16 chars and 2 line display&lt;br /&gt;
LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(F(&amp;quot;DHT22 test!&amp;quot;));&lt;br /&gt;
  dht.begin();&lt;br /&gt;
  lcd.init();&lt;br /&gt;
  lcd.backlight();&lt;br /&gt;
  connectWifi();&lt;br /&gt;
&lt;br /&gt;
  //intro gak penting&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;   Temperature&amp;quot;);&lt;br /&gt;
  lcd.setCursor(0, 1);&lt;br /&gt;
  lcd.print(&amp;quot;     Monitor&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt; watchdog) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
&lt;br /&gt;
    // Wait a few seconds between measurements.&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    // Reading temperature or humidity takes about 250 milliseconds!&lt;br /&gt;
    // Sensor readings may also be up to 2 seconds &#039;old&#039; (its a very slow sensor)&lt;br /&gt;
    float h = dht.readHumidity();&lt;br /&gt;
    // Read temperature as Celsius (the default)&lt;br /&gt;
    float t = dht.readTemperature();&lt;br /&gt;
&lt;br /&gt;
    // Check if any reads failed and exit early (to try again).&lt;br /&gt;
    if (isnan(h) || isnan(t)) {&lt;br /&gt;
      Serial.println(F(&amp;quot;Failed to read from DHT sensor!&amp;quot;));&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;No Sensor!&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.print(F(&amp;quot;Humidity: &amp;quot;));&lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(F(&amp;quot;%  Temperature: &amp;quot;));&lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.print(F(&amp;quot;°C &amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    //Display data ke LCD =&amp;gt;tampung di data string&lt;br /&gt;
    String print_temp = &amp;quot;Temp: &amp;quot;;&lt;br /&gt;
    print_temp += String(t);&lt;br /&gt;
    print_temp += &amp;quot; C&amp;quot;;&lt;br /&gt;
    String print_humd = &amp;quot;Humd: &amp;quot;;&lt;br /&gt;
    print_humd += String(h);&lt;br /&gt;
    print_humd += &amp;quot; %&amp;quot;;&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(print_temp);&lt;br /&gt;
    lcd.setCursor(0, 1);&lt;br /&gt;
    lcd.print(print_humd);&lt;br /&gt;
&lt;br /&gt;
    WiFiClient client;  //deklarasi method client&lt;br /&gt;
    HTTPClient http;    //deklarasi method http&lt;br /&gt;
&lt;br /&gt;
    if (!client.connect(host, port)) {&lt;br /&gt;
      Serial.print(&amp;quot;cannot connect to web server &amp;quot;);&lt;br /&gt;
      Serial.println(host);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //String url=&amp;quot;/weather/poller.php?&amp;quot;;&lt;br /&gt;
    String url = &amp;quot;http://&amp;quot;;&lt;br /&gt;
    url += host;&lt;br /&gt;
    url += &amp;quot;:&amp;quot;;&lt;br /&gt;
    url += port;&lt;br /&gt;
    url += &amp;quot;/?&amp;quot;;&lt;br /&gt;
    //url += &amp;quot;ID=YOURID&amp;quot;;&lt;br /&gt;
    url += deviceid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;&amp;quot;;&lt;br /&gt;
    url += groupid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;temperature=&amp;quot;;&lt;br /&gt;
    url += String(t);&lt;br /&gt;
    url += &amp;quot;&amp;amp;humidity=&amp;quot;;&lt;br /&gt;
    url += String(h);&lt;br /&gt;
    url += &amp;quot;&amp;amp;softwaretype=RuralICT2024&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    // send it&lt;br /&gt;
&lt;br /&gt;
    client.print(String(&amp;quot;GET &amp;quot;) + url + &amp;quot; HTTP/1.1\r\n&amp;quot; + &amp;quot;Host: &amp;quot; + host + &amp;quot;\r\n&amp;quot; + &amp;quot;Connection: close\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // wait for respond&lt;br /&gt;
    unsigned long timeout = millis();&lt;br /&gt;
    while (client.available() == 0) {&lt;br /&gt;
      if (millis() - timeout &amp;gt; 5000) {&lt;br /&gt;
        Serial.print(&amp;quot;timeout&amp;quot;);&lt;br /&gt;
        client.stop();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ok, we got the reply&lt;br /&gt;
    while (client.available()) {&lt;br /&gt;
      String line = client.readStringUntil(&#039;\r&#039;);&lt;br /&gt;
      Serial.print(line);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Langkah Implementasi ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Persiapan Box:&#039;&#039;&#039; Lubangi Box X4 di sisi depan untuk layar LCD dan lubang kecil di sisi samping untuk ventilasi sensor DHT22 serta kabel power.&lt;br /&gt;
# &#039;&#039;&#039;Wiring:&#039;&#039;&#039; Hubungkan semua komponen sesuai tabel di atas menggunakan kabel jumper.&lt;br /&gt;
# &#039;&#039;&#039;Upload:&#039;&#039;&#039; Hubungkan ESP8266 ke komputer dan upload kode melalui Arduino IDE.&lt;br /&gt;
# &#039;&#039;&#039;Testing:&#039;&#039;&#039; Pastikan LCD menyala dan menampilkan angka. Jika layar kosong, putar potensiometer (trimpot) di belakang modul I2C untuk mengatur kontras.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Setiap poin dikasih gambar)&lt;br /&gt;
&lt;br /&gt;
[[Table of Contents|&amp;lt; Kembali ke halaman awal]] | [[Sensor Laut|Ke halaman berikutnya &amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=310</id>
		<title>Sensor DIY</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Sensor_DIY&amp;diff=310"/>
		<updated>2026-05-02T06:45:41Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: /* Skema Perakitan (Wiring) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Halaman ini menyajikan panduan teknis mengenai perancangan dan implementasi sistem pemantauan kondisi lingkungan (suhu dan kelembapan) menggunakan mikrokontroler ESP8266 dan sensor DHT22. Sistem ini dirancang untuk memberikan data secara &#039;&#039;real-time&#039;&#039; yang ditampilkan melalui layar LCD.&lt;br /&gt;
&lt;br /&gt;
== Daftar Komponen / Spesifikasi Hardware ==&lt;br /&gt;
Komponen-komponen berikut dipilih berdasarkan kriteria fungsionalitas dan kompatibilitas sistem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Daftar Komponen#ESP32|ESP8266]]:&#039;&#039;&#039; Mikrokontroler dengan modul Wi-Fi.&lt;br /&gt;
* &#039;&#039;&#039;Sensor [[Daftar Komponen#DHT22|DHT22]]:&#039;&#039;&#039; Sensor digital untuk mengukur suhu dan kelembapan udara.&lt;br /&gt;
* &#039;&#039;&#039;LCD 16x2 dengan Modul I2C:&#039;&#039;&#039; Media untuk menampilkan hasil output sensor.&lt;br /&gt;
* &#039;&#039;&#039;Box X4:&#039;&#039;&#039; Enclosure atau wadah pelindung fisik untuk mengintegrasikan seluruh komponen.&lt;br /&gt;
* &#039;&#039;&#039;Kabel Jumper:&#039;&#039;&#039; Penghubung antar komponen (tipe Female-to-Female).&lt;br /&gt;
* &#039;&#039;&#039;Kabel Micro USB:&#039;&#039;&#039; Power&lt;br /&gt;
&lt;br /&gt;
(Masing2 poin dikasih cuplikan gambar)&lt;br /&gt;
&lt;br /&gt;
== Skema Perakitan (Wiring) ==&lt;br /&gt;
Berikut adalah konfigurasi pinout untuk menghubungkan komponen ke ESP8266:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Komponen&lt;br /&gt;
!Pin Komponen&lt;br /&gt;
!Pin ESP8266&lt;br /&gt;
|-&lt;br /&gt;
|DHT22&lt;br /&gt;
|VCC / +&lt;br /&gt;
|3V&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Data / out&lt;br /&gt;
|D4 (GPIO 2)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / -&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|LCD l2C&lt;br /&gt;
|VCC&lt;br /&gt;
|VIN (5V) / 3V3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|GND / G&lt;br /&gt;
|GND / G&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SDA&lt;br /&gt;
|D2 (GPIO 4)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|SCL&lt;br /&gt;
|D1 (GPIO 5)&lt;br /&gt;
|}&lt;br /&gt;
Gambar skema perakitan (wiring) di tampilkan pada gambar berikut.&lt;br /&gt;
[[File:DIY_1.1.png|alt=Gambar skema perakitan (wiring)|none|thumb|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Instalasi Arduino IDE &amp;amp; Setup ESP8266 ==&lt;br /&gt;
Tahapan ini menjelaskan langkah instalasi Arduino IDE dan setup ESP8266.&lt;br /&gt;
&lt;br /&gt;
=== Download dan Instalasi Software ===&lt;br /&gt;
&lt;br /&gt;
# Buka situs resmi [http://arduino.cc arduino.cc].&lt;br /&gt;
# Pilih versi terbaru sesuai sistem operasi Anda (Windows, macOS, atau Linux)[[File:Gambar file installer arduino.png|none|thumb|Gambar file installer arduino]]&lt;br /&gt;
#Jalankan file installer yang telah diunduh.&lt;br /&gt;
#Pastikan semua opsi checklist terpilih (terutama Install USB Driver dan Associate .ino files).&lt;br /&gt;
#Klik Next dan Install hingga selesai.&lt;br /&gt;
(Masing2 poin dikasih cuplikan gambar)&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi Board ESP8266 ===&lt;br /&gt;
Secara default, Arduino IDE hanya mendukung board Arduino. Agar bisa memprogram ESP8266, maka harus dilakukan konfigurasi dan instalasi secara manual, berikut langkah-langkahnya:&lt;br /&gt;
&lt;br /&gt;
# Buka Arduino IDE, klik menu &#039;&#039;&#039;File &amp;gt; Preferences&#039;&#039;&#039;.[[File:Gambar menu preferences arduino.png|none|thumb|Gambar menu preferences arduino]]&lt;br /&gt;
# Pada kolom &#039;&#039;&#039;Additional Boards Manager URLs&#039;&#039;&#039;, masukkan url berikut: http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
# Klik &#039;&#039;&#039;OK&#039;&#039;&#039;.[[File:Gambar input additional boards manager URLs.png|none|thumb|Gambar input additional boards manager URLs]]&lt;br /&gt;
# Buka menu &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; Boards Manager…&#039;&#039;&#039;[[File:Gambar klik menu boards manager arduino.png|none|thumb|Gambar klik menu boards manager arduino]]&lt;br /&gt;
# Ketik &amp;quot;esp8266&amp;quot; di kolom pencarian, lalu klik &#039;&#039;&#039;Install&#039;&#039;&#039; pada paket dari &#039;&#039;&#039;ESP8266 Community&#039;&#039;&#039;.[[File:Gambar install paket dari ESP8266 Community.png|none|thumb|Gambar install paket dari ESP8266 Community]]&lt;br /&gt;
&lt;br /&gt;
=== Instalasi Library (DHT &amp;amp; LCD) ===&lt;br /&gt;
&lt;br /&gt;
# Pilih &#039;&#039;&#039;Sketch &amp;gt; Include Library &amp;gt; Manage Libraries...&#039;&#039;&#039;&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;DHT sensor library&amp;quot;&#039;&#039;&#039; (by Adafruit) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;. Jika muncul pop-up untuk menginstal dependensi (seperti &#039;&#039;Adafruit Unified Sensor&#039;&#039;), pilih &#039;&#039;&#039;Install All&#039;&#039;&#039;.&lt;br /&gt;
# Cari &#039;&#039;&#039;&amp;quot;LiquidCrystal I2C&amp;quot;&#039;&#039;&#039; (by Frank de Brabander) dan klik &#039;&#039;&#039;Install&#039;&#039;&#039;.[[File:Gambar instalasi library DHT dan LCD.png|none|thumb|Gambar instalasi library DHT dan LCD]]&lt;br /&gt;
&lt;br /&gt;
=== Koneksi ke Perangkat ===&lt;br /&gt;
&lt;br /&gt;
# Hubungkan ESP8266 ke laptop menggunakan kabel data Micro USB.&lt;br /&gt;
# Pilih board di &#039;&#039;&#039;Tools &amp;gt; Board &amp;gt; ESP8266 Boards &amp;gt;&#039;&#039;&#039; (Contoh: &#039;&#039;&#039;NodeMCU 1.0 (ESP-12E Module)&#039;&#039;&#039;).[[File:Gambar pilih board NodeMCU 1.0 (ESP-12E Module).png|none|thumb|Gambar pilih board NodeMCU 1.0 (ESP-12E Module)]]&lt;br /&gt;
# Pilih Port yang sesuai di &#039;&#039;&#039;Tools &amp;gt; Port&#039;&#039;&#039; (Biasanya akan muncul COM3, COM4, dsb. di Windows).[[File:Gambar pilih port COM6.png|none|thumb|Gambar pilih port COM6]]&lt;br /&gt;
&lt;br /&gt;
==== Tips Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Driver USB: Jika Port tidak muncul, langkah yang perlu dilakukan adalah menginstal driver USB-to-Serial secara manual. Biasanya chip yang digunakan adalah CH340 atau CP2102 (tergantung varian NodeMCU yang digunakan).&#039;&#039;&lt;br /&gt;
* &#039;&#039;Kecepatan Upload: Untuk ESP8266, gunakan Upload Speed 115200 agar proses pengiriman kode lebih stabil.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pemrograman (Source Code) ==&lt;br /&gt;
Gunakan kode berikut untuk membaca data sensor dan menampilkannya ke LCD.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; style=&amp;quot;max-height:300px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt;&lt;br /&gt;
#include &amp;quot;DHT.h&amp;quot;&lt;br /&gt;
#include &amp;lt;Adafruit_Sensor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DHTPIN D4      // Digital pin connected to the DHT sensor&lt;br /&gt;
#define DHTTYPE DHT22  // DHT 22  (AM2302), AM2321&lt;br /&gt;
&lt;br /&gt;
// Replace with network credentials&lt;br /&gt;
#define WIFISSID &amp;quot;Nama-Kelompok&amp;quot;&lt;br /&gt;
#define WIFIPASS &amp;quot;Pass-SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
const char* deviceid = &amp;quot;ID=Nama_Kelompok&amp;quot;;&lt;br /&gt;
const char* groupid = &amp;quot;GROUP=RURAL_SIK_LOMBA&amp;quot;;&lt;br /&gt;
//server to receive the data&lt;br /&gt;
const char* host = &amp;quot;pond.weather.id&amp;quot;;&lt;br /&gt;
const int port = 80;&lt;br /&gt;
&lt;br /&gt;
// do not touch below&lt;br /&gt;
unsigned long startTime = millis();&lt;br /&gt;
&lt;br /&gt;
const int watchdog = 10000;  // delay before pushing data&lt;br /&gt;
unsigned long previousMillis = millis();&lt;br /&gt;
&lt;br /&gt;
void connectWifi() {&lt;br /&gt;
  Serial.println(&amp;quot;Connecting to access point&amp;quot;);&lt;br /&gt;
  WiFi.disconnect();&lt;br /&gt;
  if (WiFi.getMode() != WIFI_STA) {  //WIFI_STA= station mode (connect ke akses point)&lt;br /&gt;
    WiFi.mode(WIFI_STA);&lt;br /&gt;
  }&lt;br /&gt;
  WiFi.begin(WIFISSID, WIFIPASS);&lt;br /&gt;
  //...Give ESP 10 seconds to connect to station.&lt;br /&gt;
  startTime = millis();&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED &amp;amp;&amp;amp; millis() - startTime &amp;lt; 10000) {&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  // Check Connection&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;Wifi connected; IP address: &amp;quot;);&lt;br /&gt;
    Serial.println(WiFi.localIP());&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;WiFi connect failed to ssid: &amp;quot;);&lt;br /&gt;
    Serial.println(WIFISSID);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Set the LCD address to 0x27 for a 16 chars and 2 line display&lt;br /&gt;
LiquidCrystal_I2C lcd(0x27, 16, 2);&lt;br /&gt;
DHT dht(DHTPIN, DHTTYPE);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(F(&amp;quot;DHT22 test!&amp;quot;));&lt;br /&gt;
  dht.begin();&lt;br /&gt;
  lcd.init();&lt;br /&gt;
  lcd.backlight();&lt;br /&gt;
  connectWifi();&lt;br /&gt;
&lt;br /&gt;
  //intro gak penting&lt;br /&gt;
  lcd.setCursor(0, 0);&lt;br /&gt;
  lcd.print(&amp;quot;   Temperature&amp;quot;);&lt;br /&gt;
  lcd.setCursor(0, 1);&lt;br /&gt;
  lcd.print(&amp;quot;     Monitor&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  lcd.clear();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt; watchdog) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
&lt;br /&gt;
    // Wait a few seconds between measurements.&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    // Reading temperature or humidity takes about 250 milliseconds!&lt;br /&gt;
    // Sensor readings may also be up to 2 seconds &#039;old&#039; (its a very slow sensor)&lt;br /&gt;
    float h = dht.readHumidity();&lt;br /&gt;
    // Read temperature as Celsius (the default)&lt;br /&gt;
    float t = dht.readTemperature();&lt;br /&gt;
&lt;br /&gt;
    // Check if any reads failed and exit early (to try again).&lt;br /&gt;
    if (isnan(h) || isnan(t)) {&lt;br /&gt;
      Serial.println(F(&amp;quot;Failed to read from DHT sensor!&amp;quot;));&lt;br /&gt;
      lcd.setCursor(0, 0);&lt;br /&gt;
      lcd.print(&amp;quot;No Sensor!&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    Serial.print(F(&amp;quot;Humidity: &amp;quot;));&lt;br /&gt;
    Serial.print(h);&lt;br /&gt;
    Serial.print(F(&amp;quot;%  Temperature: &amp;quot;));&lt;br /&gt;
    Serial.print(t);&lt;br /&gt;
    Serial.print(F(&amp;quot;°C &amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    //Display data ke LCD =&amp;gt;tampung di data string&lt;br /&gt;
    String print_temp = &amp;quot;Temp: &amp;quot;;&lt;br /&gt;
    print_temp += String(t);&lt;br /&gt;
    print_temp += &amp;quot; C&amp;quot;;&lt;br /&gt;
    String print_humd = &amp;quot;Humd: &amp;quot;;&lt;br /&gt;
    print_humd += String(h);&lt;br /&gt;
    print_humd += &amp;quot; %&amp;quot;;&lt;br /&gt;
    lcd.setCursor(0, 0);&lt;br /&gt;
    lcd.print(print_temp);&lt;br /&gt;
    lcd.setCursor(0, 1);&lt;br /&gt;
    lcd.print(print_humd);&lt;br /&gt;
&lt;br /&gt;
    WiFiClient client;  //deklarasi method client&lt;br /&gt;
    HTTPClient http;    //deklarasi method http&lt;br /&gt;
&lt;br /&gt;
    if (!client.connect(host, port)) {&lt;br /&gt;
      Serial.print(&amp;quot;cannot connect to web server &amp;quot;);&lt;br /&gt;
      Serial.println(host);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //String url=&amp;quot;/weather/poller.php?&amp;quot;;&lt;br /&gt;
    String url = &amp;quot;http://&amp;quot;;&lt;br /&gt;
    url += host;&lt;br /&gt;
    url += &amp;quot;:&amp;quot;;&lt;br /&gt;
    url += port;&lt;br /&gt;
    url += &amp;quot;/?&amp;quot;;&lt;br /&gt;
    //url += &amp;quot;ID=YOURID&amp;quot;;&lt;br /&gt;
    url += deviceid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;&amp;quot;;&lt;br /&gt;
    url += groupid;&lt;br /&gt;
    url += &amp;quot;&amp;amp;temperature=&amp;quot;;&lt;br /&gt;
    url += String(t);&lt;br /&gt;
    url += &amp;quot;&amp;amp;humidity=&amp;quot;;&lt;br /&gt;
    url += String(h);&lt;br /&gt;
    url += &amp;quot;&amp;amp;softwaretype=RuralICT2024&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    // send it&lt;br /&gt;
&lt;br /&gt;
    client.print(String(&amp;quot;GET &amp;quot;) + url + &amp;quot; HTTP/1.1\r\n&amp;quot; + &amp;quot;Host: &amp;quot; + host + &amp;quot;\r\n&amp;quot; + &amp;quot;Connection: close\r\n\r\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // wait for respond&lt;br /&gt;
    unsigned long timeout = millis();&lt;br /&gt;
    while (client.available() == 0) {&lt;br /&gt;
      if (millis() - timeout &amp;gt; 5000) {&lt;br /&gt;
        Serial.print(&amp;quot;timeout&amp;quot;);&lt;br /&gt;
        client.stop();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ok, we got the reply&lt;br /&gt;
    while (client.available()) {&lt;br /&gt;
      String line = client.readStringUntil(&#039;\r&#039;);&lt;br /&gt;
      Serial.print(line);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Langkah Implementasi ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Persiapan Box:&#039;&#039;&#039; Lubangi Box X4 di sisi depan untuk layar LCD dan lubang kecil di sisi samping untuk ventilasi sensor DHT22 serta kabel power.&lt;br /&gt;
# &#039;&#039;&#039;Wiring:&#039;&#039;&#039; Hubungkan semua komponen sesuai tabel di atas menggunakan kabel jumper.&lt;br /&gt;
# &#039;&#039;&#039;Upload:&#039;&#039;&#039; Hubungkan ESP8266 ke komputer dan upload kode melalui Arduino IDE.&lt;br /&gt;
# &#039;&#039;&#039;Testing:&#039;&#039;&#039; Pastikan LCD menyala dan menampilkan angka. Jika layar kosong, putar potensiometer (trimpot) di belakang modul I2C untuk mengatur kontras.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Setiap poin dikasih gambar)&lt;br /&gt;
&lt;br /&gt;
[[Table of Contents|&amp;lt; Kembali ke halaman awal]] | [[Sensor Laut|Ke halaman berikutnya &amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=309</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=309"/>
		<updated>2026-05-01T03:56:20Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]][[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|200px|link=https://www.bappenas.go.id/]][[File:Commonroom-logo.png|300px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|400px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=308</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=308"/>
		<updated>2026-05-01T02:52:27Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Fairforward-logo.svg|200px|link=https://www.bmz-digital.global/en/overview-of-initiatives/fair-forward/]][[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|200px|link=https://www.bappenas.go.id/]][[File:Commonroom-logo.png|200px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|200px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=307</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=307"/>
		<updated>2026-05-01T02:37:46Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Fairforward-logo.svg|200px]][[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|200px|link=https://www.bappenas.go.id/]][[File:Commonroom-logo.png|200px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|200px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=306</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=306"/>
		<updated>2026-05-01T02:36:48Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Fairforward-logo.svg|200px]][[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px|link=https://www.giz.de/]][[File:Bappenas-logo-2.png|200px]][[File:Commonroom-logo.png|200px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|200px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=305</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=305"/>
		<updated>2026-05-01T02:35:55Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Fairforward-logo.svg|200px]][[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px]][[File:Bappenas-logo-2.png|200px]][[File:Commonroom-logo.png|200px|link=https://commonroom.info/]][[File:Co labs-logo-2.png|200px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=304</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=304"/>
		<updated>2026-05-01T02:34:09Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Fairforward-logo.svg|200px]][[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px]][[File:Bappenas-logo-2.png|200px]][[File:Commonroom-logo.png|200px|Link:https://commonroom.info/]][[File:Co labs-logo-2.png|200px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=303</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=303"/>
		<updated>2026-05-01T02:15:03Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
#ca-nstab-main { display: none !important; }	&lt;br /&gt;
#ca-nstab-user { display: none !important; }	&lt;br /&gt;
#ca-talk { display: none !important; }&lt;br /&gt;
#ca-view { display: none !important; }&lt;br /&gt;
#ca-history { display: none !important;}&lt;br /&gt;
#ca-watch { display: none !important; }&lt;br /&gt;
#ca-unwatch { display: none !important; }	&lt;br /&gt;
#ca-delete { display: none !important; }	&lt;br /&gt;
#ca-move { display: none !important; }&lt;br /&gt;
#ca-protect { display: none !important; }&lt;br /&gt;
#ca-viewsource { display: none !important; }&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=302</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=MediaWiki:Common.css&amp;diff=302"/>
		<updated>2026-04-30T16:50:20Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
#ca-nstab-main { display: none !important; }	&lt;br /&gt;
#ca-nstab-user { display: none !important; }	&lt;br /&gt;
#ca-talk { display: none !important; }&lt;br /&gt;
#ca-view { display: none !important; }&lt;br /&gt;
#ca-edit { display: none !important; }&lt;br /&gt;
#ca-ve-edit { display: none !important; }&lt;br /&gt;
#ca-formedit { display: none !important; }&lt;br /&gt;
#ca-history { display: none !important;}&lt;br /&gt;
#ca-watch { display: none !important; }&lt;br /&gt;
#ca-unwatch { display: none !important; }	&lt;br /&gt;
#ca-delete { display: none !important; }	&lt;br /&gt;
#ca-move { display: none !important; }&lt;br /&gt;
#ca-protect { display: none !important; }&lt;br /&gt;
#ca-viewsource { display: none !important; }&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=301</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Main_Page&amp;diff=301"/>
		<updated>2026-04-30T16:45:00Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[[File:Fairforward-logo.svg|200px]][[File:Kerjasama-jerman-logo.png|200px]][[File:Giz-logo.png|200px]][[File:Bappenas-logo-2.png|200px]][[File:Commonroom-logo.png|200px]][[File:Co labs-logo-2.png|200px]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=300</id>
		<title>Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=300"/>
		<updated>2026-04-30T16:40:54Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
==Deskripsi==&lt;br /&gt;
&lt;br /&gt;
==Latar belakang==&lt;br /&gt;
Perubahan iklim dan peningkatan aktivitas manusia di wilayah pesisir menyebabkan degradasi kualitas air laut secara signifikan. Pemantauan kualitas air laut yang dilakukan pada dua tempat yaitu di Pulo Aceh dan Maros. Pulo Aceh, sebagai wilayah kepulauan yang kaya akan biodiversitas laut, memiliki potensi besar untuk konservasi terumbu karang. Namun, kondisi perairan di wilayah ini masih belum sepenuhnya terpantau secara berkelanjutan, khususnya dalam hal parameter kualitas air yang sangat mempengaruhi pertumbuhan dan kesehatan terumbu karang. Pemantauan kualitas air laut secara &#039;&#039;real-time&#039;&#039; sangat diperlukan untuk mendukung upaya rehabilitasi dan penanaman terumbu karang buatan di perairan sekitar Pulo Aceh. Sementara itu, Kabupaten Maros di Sulawesi Selatan memiliki kawasan tambak yang cukup luas dan menjadi sumber mata pencaharian utama masyarakat. Produktivitas budidaya perikanan tambak sangat bergantung pada kestabilan kualitas air, terutama pH, salinitas, oksigen terlarut, dan suhu. Pemantauan manual sering kali tidak efisien dan menyulitkan pengambilan keputusan cepat saat kondisi air memburuk.&lt;br /&gt;
&lt;br /&gt;
Untuk menjawab kebutuhan di kedua daerah ini, dibutuhkan sebuah sistem pemantauan kualitas air berbasis teknologi &#039;&#039;Internet of Things&#039;&#039; (IoT) yang dapat melakukan pengukuran secara otomatis dan mengirimkan data secara jarak jauh. Teknologi IoT memungkinkan pembangunan sistem pemantauan yang efisien, hemat biaya, dan dapat digunakan oleh masyarakat lokal maupun peneliti. Sistem ini diharapkan menjadi solusi berkelanjutan dan aplikatif baik untuk konservasi ekosistem laut di Pulo Aceh maupun peningkatan produktivitas tambak di Maros.&lt;br /&gt;
&lt;br /&gt;
==[[Sensor DIY]]==&lt;br /&gt;
*[[Sensor DIY#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor DIY#Skema Perakitan (Wiring)|Skema Perakitan (Wiring)]]&lt;br /&gt;
*[[Sensor DIY#Instalasi Arduino IDE &amp;amp; Setup ESP8266|Instalasi Arduino IDE &amp;amp; Setup ESP8266]]&lt;br /&gt;
*[[Sensor DIY#Pemrograman (Source Code)|Pemrograman (Source Code)]]&lt;br /&gt;
*[[Sensor DIY#Langkah Implementasi|Langkah Implementasi]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Laut]]==&lt;br /&gt;
*[[Sensor Laut#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Laut#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Laut#Kalibrasi|Kalibrasi]]&lt;br /&gt;
*[[Sensor Laut#Pemrograman (Source Code)|Pemrograman]]&lt;br /&gt;
*[[Sensor Laut#Sensor Mounting Structures|Sensor Mounting Structures]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Tambak]]==&lt;br /&gt;
*[[Sensor Tambak#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Tambak#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Tambak#Pemrograman|Pemrograman]]&lt;br /&gt;
*[[Sensor Tambak#Konfigurasi dan Kalibrasi|Konfigurasi dan Kalibrasi]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
&lt;br /&gt;
* [[Instalasi dan Konfigurasi Library Arduino]]&lt;br /&gt;
* [[Instalasi Elastic Search, Logstash, Kibana]]&lt;br /&gt;
* [[Konfigurasi Dashboard]]&lt;br /&gt;
* [[Instalasi Prophet]]&lt;br /&gt;
&lt;br /&gt;
==[[Daftar Komponen]]==&lt;br /&gt;
&lt;br /&gt;
==[[Perawatan dan Troubleshooting]]==&lt;br /&gt;
&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Perawatan Berkala|Perawatan Berkala]]&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Permasalah Umum|Permasalah Umum]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=299</id>
		<title>Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki-colabs.commonroom.info/index.php?title=Table_of_Contents&amp;diff=299"/>
		<updated>2026-04-30T16:40:43Z</updated>

		<summary type="html">&lt;p&gt;Colabs Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
==Deskripsi==&lt;br /&gt;
&lt;br /&gt;
==Latar belakang==&lt;br /&gt;
Perubahan iklim dan peningkatan aktivitas manusia di wilayah pesisir menyebabkan degradasi kualitas air laut secara signifikan. Pemantauan kualitas air laut yang dilakukan pada dua tempat yaitu di Pulo Aceh dan Maros. Pulo Aceh, sebagai wilayah kepulauan yang kaya akan biodiversitas laut, memiliki potensi besar untuk konservasi terumbu karang. Namun, kondisi perairan di wilayah ini masih belum sepenuhnya terpantau secara berkelanjutan, khususnya dalam hal parameter kualitas air yang sangat mempengaruhi pertumbuhan dan kesehatan terumbu karang. Pemantauan kualitas air laut secara &#039;&#039;real-time&#039;&#039; sangat diperlukan untuk mendukung upaya rehabilitasi dan penanaman terumbu karang buatan di perairan sekitar Pulo Aceh. Sementara itu, Kabupaten Maros di Sulawesi Selatan memiliki kawasan tambak yang cukup luas dan menjadi sumber mata pencaharian utama masyarakat. Produktivitas budidaya perikanan tambak sangat bergantung pada kestabilan kualitas air, terutama pH, salinitas, oksigen terlarut, dan suhu. Pemantauan manual sering kali tidak efisien dan menyulitkan pengambilan keputusan cepat saat kondisi air memburuk.&lt;br /&gt;
&lt;br /&gt;
Untuk menjawab kebutuhan di kedua daerah ini, dibutuhkan sebuah sistem pemantauan kualitas air berbasis teknologi &#039;&#039;Internet of Things&#039;&#039; (IoT) yang dapat melakukan pengukuran secara otomatis dan mengirimkan data secara jarak jauh. Teknologi IoT memungkinkan pembangunan sistem pemantauan yang efisien, hemat biaya, dan dapat digunakan oleh masyarakat lokal maupun peneliti. Sistem ini diharapkan menjadi solusi berkelanjutan dan aplikatif baik untuk konservasi ekosistem laut di Pulo Aceh maupun peningkatan produktivitas tambak di Maros.&lt;br /&gt;
&lt;br /&gt;
==[[Sensor DIY]]==&lt;br /&gt;
*[[Sensor DIY#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor DIY#Skema Perakitan (Wiring)|Skema Perakitan (Wiring)]]&lt;br /&gt;
*[[Sensor DIY#Instalasi Arduino IDE &amp;amp; Setup ESP8266|Instalasi Arduino IDE &amp;amp; Setup ESP8266]]&lt;br /&gt;
*[[Sensor DIY#Pemrograman (Source Code)|Pemrograman (Source Code)]]&lt;br /&gt;
*[[Sensor DIY#Langkah Implementasi|Langkah Implementasi]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Laut]]==&lt;br /&gt;
*[[Sensor Laut#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Laut#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Laut#Kalibrasi|Kalibrasi]]&lt;br /&gt;
*[[Sensor Laut#Pemrograman (Source Code)|Pemrograman]]&lt;br /&gt;
*[[Sensor Laut#Sensor Mounting Structures|Sensor Mounting Structures]]&lt;br /&gt;
&lt;br /&gt;
==[[Sensor Tambak]]==&lt;br /&gt;
*[[Sensor Tambak#Daftar Komponen|Daftar Komponen]]&lt;br /&gt;
*[[Sensor Tambak#Perakitan|Perakitan]]&lt;br /&gt;
*[[Sensor Tambak#Pemrograman|Pemrograman]]&lt;br /&gt;
*[[Sensor Tambak#Konfigurasi dan Kalibrasi|Konfigurasi dan Kalibrasi]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
&lt;br /&gt;
* [[Instalasi dan Konfigurasi Library Arduino]]&lt;br /&gt;
* [[Instalasi Elastic Search, Logstash, Kibana]]&lt;br /&gt;
* [[Konfigurasi Dashboard]]&lt;br /&gt;
* [[Instalasi Prophet]]&lt;br /&gt;
&lt;br /&gt;
==[[Daftar Komponen]]==&lt;br /&gt;
&lt;br /&gt;
==[[Perawatan dan Troubleshooting]]==&lt;br /&gt;
&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Perawatan Berkala|Perawatan Berkala]]&lt;br /&gt;
* [[Perawatan dan Troubleshooting#Permasalah Umum|Permasalah Umum]]&lt;/div&gt;</summary>
		<author><name>Colabs Admin</name></author>
	</entry>
</feed>