# Ardunesia
## Tujuan
<p style="text-align:justify;">Mempelajari cara menggunakan board Ardunesia berbasis proyek bagian 2</p>
## Cara Mengatur Board Ardunesia pada Arduino IDE =
<p style="text-align:justify;">Ada 2 hal yang harus dilakukan sebelum kita bisa menggunakan Board Ardunesia, yang pertama lakukanlah hal dibawah ini :</p>
1. Buka "Arduino IDE"
2. Klik "File"
3. Klik "Preferences"
4. Mengisi kolom "Additional Boards Manager URLs" dengan https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json (copy-paste)
6. Klik "OK"
7. Selanjutnya Klik "Tools" -> "Board" -> "Board Manager"
8. Mencari kata "STM32" pada kolom Search
9. Klik "Install" STM32
10. Setelah berhasil di Install, sambungkan Board Ardunesia dengan PC
<br>
**Setelah itu lakukanlah prosedur di bawah ini**
1. Buka Folder -> Documents -> Folder Arduino
2. Buatlah folder baru bernama "hardware"
3. Buka folder "hardware", buatlah folder baru bernama "xooey"
4. Buka folder "xooey", buatlah folder baru bernama "sam-one"
5. Unzip "sam-one.zip" pada folder tersebut
(download sam-one.zip pada link [disini](https://drive.google.com/file/d/1zFF_R7BCsqKKy0cVz8OQEl1Ulfa2d4ML/view?usp=sharing))
7. Sambungkan Board Ardunesia dengan PC
8. Buka "Arduino IDE"
9. Klik "Tools" -> "Board" -> "Arduino Boards" -> pilih "Ardunesia Bootloaded"
10. Selanjutnya Klik "Tools" -> "CPU Frequency" -> pilih "40MHz"
11. Board Ardunesia sudah bisa digunakan
<br>
---
# 26. Sensor Module DS18B20
<p style="text-align:justify;">Module Sensor DB18B20 merupakan modul sensor yang akan mendeteksi suhu atau temperature di lingkungan sekitar modul tersebut dipasang.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module DS18B20
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• #include <OneWire.h>
• #include <DallasTemperature.h>
## Wiring
Tabel 36. Wiring Board Ardunesia dengan module DS18B20 Sensor
| Ardunesia | DS18B20 Sensor |
| -------- | -------- |
| Digital Pin 14 | SIG |
| - | NC |
| 3V3 | VCC |
| GND | GND |
## Code
```
#include <OneWire.h> //library OneWire
#include <DallasTemperature.h> //library DS18B20
#define ONE_WIRE_BUS 14
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
sensors.begin(); // Start sensor
delay(2000);//tunggu 2 detik
}
void loop() {
// put your main code here, to run repeatedly
sensors.requestTemperatures();
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" C ");//Celcius
Serial.println();
delay(100);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>


<br>
---
# 27. Sensor Hall
<p style="text-align:justify;">Module Hall Sensor merupakan sensor modul yang mengubah perbedaaan potensial antar konduktor menjadi arus listrik dan medan magnet yang tegak lurus dengan arus. Modul ini dapat mendeteksi medan magnet yang berada di sekitar sensor tersebut.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Hall Sensor
3. LCD 16 x 2
4. Kabel Jumper
5. Protoboard
## Library yang digunakan
• #include <Wire.h>
• #include "rgb_lcd.h"
## Wiring
Tabel 37. Wiring Board Ardunesia dengan module LCD 16 x 2
| Ardunesia | LCD 16 x 2 |
| -------- | -------- |
| SDA | SDA |
| SCL | SCL |
| 5V | VCC |
| GND | GND |
Tabel 38. Wiring Board Ardunesia dengan module Hall Sensor
| Ardunesia | Hall Sensor |
| -------- | -------- |
| Digital Pin 2 | VOUT |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
<p style="text-align:justify;">Kode ini akan mendeteksi rpm (radiant per menit) pada suatu benda berputar yang memiliki magnet di salah satu sisinya.</p>
```
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
int waktu;
unsigned long prev_time;
int rpm;
int sensorHall = 2;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setRGB(colorR, colorG, colorB);
delay(1000);
pinMode(sensorHall, INPUT);
}
void loop()
{
if(!digitalRead(sensorHall)){
//Find rpm
waktu = millis()-prev_time;
rpm = (60000/waktu);
prev_time = millis();
//Displaying sensor values on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hall Sensor");
lcd.setCursor(0, 1);
lcd.print("RPM: ");
lcd.print(rpm);
Serial.print("RPM: ");
Serial.print(rpm);
Serial.println();
delay(200);
}
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

<br>
---
# 28. Sensor Light
<p style="text-align:justify;">Module light sensor merupakan sensor modul yang digunakan untuk mendeteksi cahaya dimana pada praktiknya menggunakan photo-resistor untuk mendeteksi intensitas cahaya. Ketika photo-resistor mendeteksi intensitas cahaya semakin tinggi maka resistansi atau hambatan dari photo-resistor tersebut akan semakin kecil.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Light Sensor
3. LED
4. Resistor 1kΩ
5. LCD 16 x 2
6. Kabel Jumper
7. Protoboard
## Library yang digunakan
• #include <Wire.h>
• #include "rgb_lcd.h"
• #include <Adafruit_ADS1X15.h>
## Wiring
Tabel 39. Wiring Board Ardunesia dengan module LCD 16 x 2
| Ardunesia | LCD 16 x 2 |
| -------- | -------- |
| SDA | SDA |
| SCL | SCL |
| 5V | VCC |
| GND | GND |
Tabel 40. Wiring Board Ardunesia dengan module Light Sensor
| Ardunesia | Hall Sensor |
| -------- | -------- |
| Analog Pin 0 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
Tabel 41. Wiring Board Ardunesia dengan LED
| Ardunesia | LED |
| -------- | -------- |
| Digital Pin 2 | Positif (+) |
| GND | GND |
## Code
<p style="text-align:justify;">Kode ini akan menyebabkan lampu (LED) akan semakin cerah apabila intensitas cahaya yang ditangkap oleh sensor cahaya rendah dan sebaliknya apabila intensitas cahaya yang ditangkap tinggi maka LED akan meredup. Pada LCD juga akan ditampilkan “Lampu Menyala” ketika intensitas cahay terdeteksi rendah dan akan menampilakn “Lampu Mati” ketika intensitas cahaya tinggi.</p>
```
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
#define LED 2
float sensorLight;
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
void setup()
{
//Inisialisasi kode
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Sensor Light");
lcd.setRGB(colorR, colorG, colorB);
delay(1000);
if (!ads.begin()) {
Serial.println("Failed to initialize ADS.");
while (1);
}
Serial.println("ADS initialized.");
ads.startADCReading(ADS1X15_REG_CONFIG_MUX_SINGLE_0, /*continuous=*/true);
}
void loop()
{
sensorLight = ads.computeVolts(ads.getLastConversionResults());
Serial.println((65536.000/26666.666)*ads.getLastConversionResults());
//Increase or reduce LED brightness depends on value that module light sensor read
analogWrite(LED, (65536-(65536/26666.666)*ads.getLastConversionResults()));
if(sensorLight<=1.5){
lcd.setCursor(0, 1);
lcd.print("Lampu Menyala");
}
else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Light");
lcd.setCursor(0, 1);
lcd.print("Lampu Mati");
}
delay(100);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

<br>
---
# 29. Line Sensor
<p style="text-align:justify;">Module line sensor merupakan sensor modul sederhana yang dapat digunakan untuk mendeteksi garis hitam dan garis putih. Modul ini dapat digunakan untuk membuar robot sederhana.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Line Sensor
3. LCD 16 x 2
4. Kabel Jumper
5. Protoboard
## Library yang digunakan
• #include <Wire.h>
• #include "rgb_lcd.h"
## Wiring
Tabel 40. Wiring Board Ardunesia dengan module LCD 16 x 2
| Ardunesia | LCD 16 x 2 |
| -------- | -------- |
| SDA | SDA |
| SCL | SCL |
| 5V | VCC |
| GND | GND |
Tabel 41. Wiring Board Ardunesia dengan module Line Sensor
| Ardunesia | Hall Sensor |
| -------- | -------- |
| Digital Pin 2 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
```
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
#define sensor 2
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Sensor Line");
lcd.setRGB(colorR, colorG, colorB);
pinMode(sensor, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int val = digitalRead(sensor);
if(val == 0){
lcd.setCursor(0, 1);
lcd.print("Putih");
Serial.println("Putih");
}
else{
lcd.setCursor(0, 1);
lcd.print("Hitam");
Serial.println("Hitam");
}
delay(1000);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

<br>
---
# 30. Loudness Sensor
<p style="text-align:justify;">Module Loudness Sensor merupakan sensor yang digunakan untuk mendeteksi suara yang ada pada lingkungan sensor tersebut.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Loudness Sensor
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• #include <Adafruit_ADS1X15.h>
## Wiring
Tabel 42. Wiring Board Ardunesia dengan module Loudness Sensor
| Ardunesia | Loudness Sensor |
| -------- | -------- |
| Analog Pin 0 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
<p style="text-align:justify;">Ketika kode ini di upload dan serial plotter pada Arduino IDE dibuka maka akan terdapat grafik dimana ketika di sekitar lingkungan sensor tersebut memiliki intensitas suara yang tinggi maka amplitude dari grafik yang ditampilakan pada serial plotter akan semakin tinggi, begitupun sebaliknya apabila di sekitar lingkungan sensor tersebut memiliki intensitas suara yang rendah maka amplitude dari grafik yang ditampilakan pada serial plotter akan semakin rendah.</p>
```
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
#define LED 2
float sensorLoudness;
float sum;
void setup()
{
Serial.begin(115200);
delay(1000);
if (!ads.begin()) {
Serial.println("Failed to initialize ADS.");
while (1);
}
ads.startADCReading(ADS1X15_REG_CONFIG_MUX_SINGLE_0, /*continuous=*/true);
}
void loop()
{
sensorLoudness = 0.0;
for(int i=0; i<32; i++)
{
sensorLoudness += (ads.getLastConversionResults());
}
sum = sensorLoudness/32.0;
Serial.println(sum);
delay(10);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 31. Moisture Sensor
<p style="text-align:justify;">Module moisture merupakan modul sensor yang digunakan untuk mendeteksi kelembaban dimana sensor ini salah satu fungsinya dapat digunakan untuk mendeteksi apakah tanaman yang ditinjau memerlukan penyiraman atau tidak.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Moisture Sensor
3. LCD 16 x 2
4. Kabel Jumper
5. Protoboard
## Library yang digunakan
• #include <Adafruit_ADS1X15.h>
## Wiring
Tabel 43. Wiring Board Ardunesia dengan module LCD 16 x 2
| Ardunesia | LCD 16 x 2 |
| -------- | -------- |
| SDA | SDA |
| SCL | SCL |
| 5V | VCC |
| GND | GND |
Tabel 44. Wiring Board Ardunesia dengan module Moisture Sensor
| Ardunesia | Moisture Sensor |
| -------- | -------- |
| Analog Pin 0 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
```
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
float sensorMois;
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Sensor Moisture");
lcd.setRGB(colorR, colorG, colorB);
delay(1000);
if (!ads.begin()) {
Serial.println("Failed to initialize ADS.");
while (1);
}
Serial.println("ADS initialized.");
ads.startADCReading(ADS1X15_REG_CONFIG_MUX_SINGLE_0, /*continuous=*/true);
}
void loop()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Moisture");
sensorMois = ads.computeVolts(ads.getLastConversionResults());
Serial.print("Persen Kelembaban: ");
Serial.print((sensorMois/3.27)*100);
Serial.print("%");
Serial.println();
lcd.setCursor(0, 1);
lcd.print("Moisture: ");
lcd.print((sensorMois/3.27)*100); //Calculate moisture percentage
lcd.print("%");
delay(1000);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

<br>
---
# 32. pH Sensor
<p style="text-align:justify;">Module pH Sensor merupakan modul sensor yang akan mendeteksi kadar keasaman suatu cairan yang diukur.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module pH Sensor
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• -
## Wiring
Tabel 45. Wiring Board Ardunesia dengan module Moisture Sensor
| Ardunesia | pH Sensor |
| -------- | -------- |
| Analog Pin 6 | SIG |
| - | NC |
| 3V3 | VCC |
| GND | GND |
## Code
```
#define SensorPin A6 // the pH meter Analog output is connected with the Ardunesia’s Analog 6
unsigned long int sumValue = 0; //Store the sum value of the sensor feedback
void setup()
{
Serial.begin(9600);
Serial.println("Ready"); //Test the serial monitor
}
void loop()
{
for(int i=0;i<10;i++) //Get 10 sample value from the sensor for smooth the value
{
sumValue = sumValue+analogRead(SensorPin);
}
float phValue=(float)sumValue*3.27/1024/10; //convert the analog into millivolt
phValue=3.5*phValue; //convert the millivolt into pH value
Serial.print(" pH:");
Serial.print(phValue,2);
Serial.println(" ");
delay(1000);
sumValue = 0;
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 33. PIR Sensor
<p style="text-align:justify;">Module Mini PIR sensor merupakan modul sensor yang dapat mendeteksi pergerakan manusia pada batas jarak yang dimiliki sensor tersebut. Salah satu contoh pemanfaatan modul ini adalah dapat digunakan sebagai sistem alarm sederhana.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Mini PIR Sensor
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• -
## Wiring
Tabel 45. Wiring Board Ardunesia dengan module PIR Sensor
| Ardunesia | PIR Sensor |
| -------- | -------- |
| Digital Pin 2 | REL |
| - | NC |
| 5V | VCC |
| GND | GND |
Tabel 46. Wiring Board Ardunesia dengan buzzer
| Ardunesia | Buzzer |
| -------- | -------- |
| Digital Pin 3 | Positif (+) |
| GND | Negatif (-) |
## Code
<p style="text-align:justify;">Kode ini akan menyebabkan buzzer yang dipasang pada pin digital 3 menyala ketika sensor PIR mendeteksi adanya pergerakan dan sebaliknya buzzer akan diam ketika sensor PIR tidak mendeteksi adanya pergerakan</p>
```
#define sensorPIR 2
#define buzzer 3
void setup()
{
pinMode(sensorPIR, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if(digitalRead(sensorPIR)){
digitalWrite(buzzer, HIGH);
Serial.println("Ada orang");
}
else{
digitalWrite(buzzer, LOW);
Serial.println("Tidak ada orang");
}
delay(100);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 34. Sound Sensor
<p style="text-align:justify;">Module sound sensor merupakan sensor modul yang dapat digunakan untuk mendeteksi intesitas suara yang berada di sekitar lingkungan sensor tersebut.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Sound Sensor
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• #include <Adafruit_ADS1X15.h>
## Wiring
Tabel 47. Wiring Board Ardunesia dengan module Sound Sensor
| Ardunesia | Sound Sensor |
| -------- | -------- |
| Analog Pin 0 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
<p style="text-align:justify;">Kode ini akan memberikan hasil serial plotter berupa grafik yang akan menghasilkan grafik dengan peak to peak yang tinggi ketika intensitas suara di lingkungan tinggi dan sebaliknya menghasilkan grafik dengan peak to peak yang rendah ketika intensitas suara di lingkungan rendah. </p>
```
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
float sensorSound;
float sum;
void setup()
{
Serial.begin(115200);
delay(1000);
if (!ads.begin()) {
Serial.println("Failed to initialize ADS.");
while (1);
}
ads.startADCReading(ADS1X15_REG_CONFIG_MUX_SINGLE_0, /*continuous=*/true);
}
void loop()
{
sensorSound = 0.0;
for(int i=0; i<32; i++)
{
sensorSound += (ads.getLastConversionResults());
}
sum = sensorSound/32.0;
Serial.println(sum);
delay(10);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 35. Temperature Sensor
<p style="text-align:justify;">Module Temperature Sensor merupakan modul sensor yang dapat mendeteksi temperature atau suhu di sekitar lingkungan dengan cara menggunakan thermistor, dimana resistansi thermistor akan meningkat ketika suhu lingkungan menurun.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Temperature Sensor
3. LCD 16 x 2
4. Kabel Jumper
5. Protoboard
## Library yang digunakan
• #include <math.h>
• #include <Adafruit_ADS1X15.h>
• #include <Wire.h>
• #include "rgb_lcd.h"
## Wiring
Tabel 48. Wiring Board Ardunesia dengan module LCD 16 x 2
| Ardunesia | LCD 16 x 2 |
| -------- | -------- |
| SDA | SDA |
| SCL | SCL |
| 5V | VCC |
| GND | GND |
Tabel 49. Wiring Board Ardunesia dengan module Temperature Sensor
| Ardunesia | Temperature Sensor |
| -------- | -------- |
| Analog Pin 0 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
```
#include <math.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
float sensorTemp;
const int B = 4275;
float R;
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Sensor Suhu");
lcd.setRGB(colorR, colorG, colorB);
delay(1000);
if (!ads.begin()) {
Serial.println("Failed to initialize ADS.");
while (1);
}
Serial.println("ADS initialized.");
ads.startADCReading(ADS1X15_REG_CONFIG_MUX_SINGLE_0, /*continuous=*/true);
}
void loop()
{
sensorTemp = (ads.getLastConversionResults());
R = 26666/sensorTemp-1.0;
float tempValue = 1.0/(log(1/R)/B+1/298.15)-273.15; //Temperature value based on datasheet
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Suhu: ");
lcd.print(tempValue);
lcd.print(" *C");
Serial.print(tempValue);
Serial.print(" *C");
Serial.println();
delay(100);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

<br>
---
# 36. Touch Sensor
<p style="text-align:justify;">Module Touch Sensor merupakan sensor yang dapat mendeteksi ketika sensor disentuh dimana sensor ini akan membaca perubahan kapasitansi ketika jari didekatkan ke sensor.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Touch Sensor
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• -
## Wiring
Tabel 50. Wiring Board Ardunesia dengan module Touch Sensor
| Ardunesia | Touch Sensor |
| -------- | -------- |
| Digital Pin 2 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
```
const int TouchPin=2;
void setup() {
pinMode(TouchPin, INPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = digitalRead(TouchPin);
if(sensorValue==1)
{
Serial.println("Disentuh");
delay(100);
}
else
{
Serial.println("Tidak Disentuh");
delay(100);
}
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 37. Turbidity Sensor
<p style="text-align:justify;">Module Turbidity Sensor merupakan modul sensor yang akan mendeteksi kekeruhan dari cairan yang dideteksi, dimana ketika tegangan terbaca semakin tinggi maka cairan tersebut semakin memiliki tingkat kekeruhan yang rendah (clean water).</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Turbidity Sensor
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• -
## Wiring
Tabel 51. Wiring Board Ardunesia dengan module Turbidity Sensor
| Ardunesia | Turbidity Sensor |
| -------- | -------- |
| Analog Pin 7 | SIG |
| - | NC |
| 3V3 | VCC |
| GND | GND |
## Code
```
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A7);
float voltage = sensorValue * (3.27 / 1023.0);
Serial.println ("Tegangan: ");
Serial.print (voltage);
Serial.print (" V");
Serial.println();
delay(1000);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 38. Vibration Sensor
<p style="text-align:justify;">Module Vibration Sensor merupakan modul sensor yang mendeteksi adanya getaran, dimana ketika modul sensor ini tidak mendeteksi adanya getaran maka sensor ini akan memberikan output HIGH, sebaliknya ketika modul sensor ini mendeteksi adanya getaran maka sensor ini akan memberikan output LOW.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Vibration Sensor
3. LCD 16 x 2
4. Kabel Jumper
5. Protoboard
## Library yang digunakan
• #include <Wire.h>
• #include "rgb_lcd.h"
## Wiring
Tabel 52. Wiring Board Ardunesia dengan module LCD 16 x 2
| Ardunesia | LCD 16 x 2 |
| -------- | -------- |
| SDA | SDA |
| SCL | SCL |
| 5V | VCC |
| GND | GND |
Tabel 53. Wiring Board Ardunesia dengan module Vibration Sensor
| Ardunesia | Vibration Sensor |
| -------- | -------- |
| Digital Pin 2 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
```
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
int sensorVibration = 2;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setRGB(colorR, colorG, colorB);
delay(1000);
pinMode(sensorVibration, INPUT);
}
void loop()
{
if(!digitalRead(sensorVibration)){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Vibration");
//Temperature will show on LCD
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Ada getaran");
Serial.println("Ada getaran");
delay(10);
}
else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Vibration");
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Tidak bergetar");
Serial.println("Tidak ada getaran");
delay(10);
}
delay(100);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

# 39. Water Sensor
<p style="text-align:justify;">Module Water Sensor merupakan modul sensor yang akan mendeteksi adanya air dengan cara mengukur konduktansi. Sensor ini akan menghasilkan nilai HIGH ketika tidak mendeteksi adanya air dan akan menghasilkan nilai LOW ketika mendeteksi adanya air.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module Water Sensor
3. Kabel Jumper
4. Protoboard
## Library yang digunakan
• -
## Wiring
Tabel 54. Wiring Board Ardunesia dengan module Water Sensor
| Ardunesia | Water Sensor |
| -------- | -------- |
| Digital Pin 2 | SIG |
| - | NC |
| 5V | VCC |
| GND | GND |
## Code
```
const int WaterSensor = 2;
void setup() {
pinMode(WaterSensor, INPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = digitalRead(WaterSensor);
if(sensorValue)
{
Serial.println("Tidak terdeteksi air");
}
else
{
Serial.println("Terdeteksi Air");
}
delay(1000);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 40. Modul Bluetooth HC-05
<p style="text-align:justify;">Modul Bluetooth HC-05 adalah modul Bluetooth SPP (Serial Port Protocol) yang mudah digunakan, dirancang untuk pengaturan koneksi serial nirkabel transparan. Komunikasinya adalah melalui komunikasi serial yang memudahkan antarmuka dengan pengontrol atau PC.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Bluetooth Module HC-05
3. Kabel Jumper
4. Breadboard
## Library yang digunakan
• -
## Wiring
Wiring Board Ardunesia dengan Modul Bluetooth HC-05
| Ardunesia | HC-05 |
| -------- | -------- |
| 5V | VCC |
| GND | GND |
| PIN 14 | RX |
| PIN 15 | TX |
## Code
<p style="text-align:justify;">Setelah kode diupload dan serial monitor dibuka Langkah selanjutnya adalah memasangkan Bluetooth HC-05 pada aplikasi Bluetooth Terminal di android. Ketika muncul notifikasi connected pada Bluetooth Terminal maka kode dapat digunkan untuk mengirirm string dari android ke serial monitor dan sebaliknya</p>
```
void setup() {
// initialize both serial ports:
Serial.begin(9600);
Serial3.begin(9600);
}
void loop() {
// read from port 3, send to port 0:
if (Serial3.available()) {
int inByte = Serial3.read();
Serial.write(inByte);
}
// read from port 0, send to port 3:
if (Serial.available()) {
int inByte = Serial.read();
Serial3.write(inByte);
}
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

<br>
<p style="text-align:justify;">Teks biru pada Bluetooth terminal menandakan teks tersebut telah dikirim dari Bluetooth terminal dan teks hijau pada Bluetooth terminal menandakan teks tersebut diterima oleh Bluetooth terminal.</p>
# 41. Modul Wi-Fi dengan ESP32
<p style="text-align:justify;">ESP32 adalah mikrokontroller berharga rendah dan hemat energi dengan wifi dan dual-mode bluetooth terintegrasi. Generasi ESP32 menggunakan mikroprosesor Tensilica Xtensa LX6 sebagai inti. Baik dalam mode single-core maupun dual-core. Pada contoh ini akan digunakan ESP32 untuk menghubungkan Ardunesia ke server Thingspeak.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. ESP32
3. Kabel Jumper
4. Breadboard
## Library yang digunakan
#include <WiFi.h>
#include <HTTPClient.h>
## Wiring
Wiring Board Ardunesia dengan ESP32
| Ardunesia | ESP32 |
| -------- | -------- |
| GND | GND |
| PIN 16 | RX2 |
| PIN 17 | TX2 |
## Code
<p style="text-align:justify;">Terdapat dua kode yang digunakan pada contoh ini yakni kode untuk ardunesia dan kode ESP32. Kode ardunesia dapat diubah sesuai dengan nilai pembacaan sensor yang digunakan. Kode ESP32 dapat diubah dengan menambahkan field agar dapat mengirimkan lebih dari satu variable ke Thingspeak.</p>
Code Ardunesia
```
void setup() {
Serial.begin(9600);
Serial2.begin(9600);
}
void loop() {
// You can change the temperature value using your analoRead form your sensor
Serial.println("Temperature = 22.5");
Serial2.println("22.5");
delay(1500);
}
```
Code ESP32
```
#define RX2 16
#define TX2 17
#include <WiFi.h>
#include <HTTPClient.h>
//Replace with your SSID and password
const char* ssid = "MI 6X";
const char* password = "123456789";
// URL path for HTTP POST Request
const char* serverName = "http://api.thingspeak.com/update";
// Service API Key, change with your API key from Thingspeak
String apiKey = "32HJF6JFUF3PEWQV";
String t;
// Delay 10 second for testing
unsigned long lastTime = 0;
unsigned long timerDelay = 10000;
void setup() {
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, RX2, TX2);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
Serial.println("Timer set to 10 seconds (timerDelay variable), it will take 10 seconds before publishing the first reading.");
// Random seed is a number used to initialize a pseudorandom number generator
randomSeed(analogRead(3));
}
void loop() {
t = Serial2.readString();
//Serial.println(t);
//Send an HTTP POST request every 10 seconds
if ((millis() - lastTime) > timerDelay) {
//Check WiFi connection status
if(WiFi.status()== WL_CONNECTED){
WiFiClient client;
HTTPClient http;
// Your Domain name with URL path or IP address with path
http.begin(client, serverName);
// Specify content-type header
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
// Data to send with HTTP POST
String httpRequestData = "api_key=" + apiKey + "&field1=" + String(t);
// Send HTTP POST request
int httpResponseCode = http.POST(httpRequestData);
/*
// If you need an HTTP request with a content type: application/json, use the following:
http.addHeader("Content-Type", "application/json");
// JSON data to send with HTTP POST
String httpRequestData = "{\"api_key\":\"" + apiKey + "\",\"field1\":\"" + String(random(40)) + "\"}";
// Send HTTP POST request
int httpResponseCode = http.POST(httpRequestData);*/
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
// Free resources
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
lastTime = millis();
}
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>
---
# 42. Mengirim Pesan Dengan GSM Module SIM900a
<p style="text-align:justify;">SIM900A adalah mesin GSM/GPRS dual-band yang bekerja pada frekuensi EGSM 900MHz dan DCS 1800MHz. SIM900A memiliki fitur GPRS multi-slot kelas 10/ kelas 8 (opsional) dan mendukung skema pengkodean GPRS CS-1, CS-2, CS-3 dan CS-4..</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Modul GSM SIM900a
3. Kabel Jumper
4. Breadboard
## Library yang digunakan
• -
## Wiring
Wiring Board Ardunesia dengan Modul SIM900a
| Ardunesia | HC-05 |
| -------- | -------- |
| 5V | VCC |
| GND | GND |
| PIN 18 | 3.3R |
| PIN 19 | 3.3T |
## Code
<p style="text-align:justify;">Kode berikut dapat digunkan untuk mengirim dan menerima SMS, pesan dan nomer tujuan pengiriman SMS dapat diganti sesuai dengan kebutuhan.</p>
```
char msg;
char call;
void setup()
{
Serial1.begin(115200); // Setting the baud rate of GSM Module
Serial.begin(115200); // Setting the baud rate of Serial Monitor (Arduino)
Serial.println("GSM SIM900A BEGIN");
Serial.println("Enter character for control option:");
Serial.println("r : to receive a message");
Serial.println("s : to send message");
Serial.println();
delay(100);
}
void loop()
{
if (Serial.available()>0)
switch(Serial.read())
{
case 's':
SendMessage();
break;
case 'r':
ReceiveMessage();
break;
}
if (Serial1.available()>0)
Serial.write(Serial1.read());
}
void SendMessage()
{
Serial1.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000); // Delay 1 second
Serial1.println("AT+CMGS=\"+6282235612936\"\r"); // set number you want to send
delay(1000);
Serial1.println("Hello from SIM900A");// The SMS text you want to send, you can change this with your own message
delay(100);
Serial1.println((char)26);// ASCII code of CTRL+Z
delay(1000);
}
void ReceiveMessage()
{
Serial1.println("AT+CNMI=2,2,0,0,0"); // AT Command to recieve a live SMS
delay(1000);
if (Serial1.available()>0)
{
msg=Serial1.read();
Serial.print(msg);
}
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>

<br>

<br>

<br>
---
# 43. Ardunesia ke Thingspeak dengan SIM900a
<p style="text-align:justify;">SIM900A adalah mesin GSM/GPRS dual-band yang bekerja pada frekuensi EGSM 900MHz dan DCS 1800MHz. SIM900A memiliki fitur GPRS multi-slot kelas 10/ kelas 8 (opsional) dan mendukung skema pengkodean GPRS CS-1, CS-2, CS-3 dan CS-4.</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Module SIM900a
3. Kabel Jumper
4. Breadboard
## Library yang digunakan
• -
## Wiring
Wiring Board Ardunesia dengan Modul SIM900a
| Ardunesia | HC-05 |
| -------- | -------- |
| 5V | VCC |
| GND | GND |
| PIN 18 | 3.3R |
| PIN 19 | 3.3T |
## Code
<p style="text-align:justify;">Hal yang harus diperhatikan Ketika menggunakan kode ini adalah APN yang digunakan harus sesuai dengan naama APN dari operator yang digunakan. Selanjutnya API key yang digunakan harus sesuai dengan API key pada channel Thingspeak yang digunakan. </p>
```
#include <String.h>
#include <math.h>
void setup()
{
Serial1.begin(9600);
Serial.begin(9600);
delay(1000);
}
void loop()
{ // you can change h and t value using your analogRead from your sensor
float t = 40.97;
float h =40.78;
Serial.print("Temperature = ");
Serial.print(t);
Serial.println(" °C");
Serial.print("Humidity = ");
Serial.print(h);
Serial.println(" %");
if (Serial1.available())
Serial.write(Serial1.read());
Serial1.println("AT+CIPSTATUS"); // get current connection status
delay(2000);
Serial1.println("AT+CIPMUX=0"); // configures device for single IP connection
delay(2000);
ShowSerialData();
Serial1.println("AT+CSTT=\"internet\"");//start task and setting the APN,
delay(1000);
ShowSerialData();
Serial1.println("AT+CIICR");//bring up wireless connection
delay(3000);
ShowSerialData();
Serial1.println("AT+CIFSR");//get local IP adress
delay(2000);
ShowSerialData();
Serial1.println("AT+CIPSPRT=0"); // set prompt
delay(3000);
ShowSerialData();
Serial1.println("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",\"80\"");//start up the connection
delay(6000);
ShowSerialData();
Serial1.println("AT+CIPSEND");//begin send data to remote server
delay(4000);
ShowSerialData();
String str="GET https://api.thingspeak.com/update?api_key=UK6PEOHJ5L8Y58C8&field1=" + String(t) +"&field2="+String(h);
Serial.println(str);
Serial1.println(str);//begin send data to remote server
delay(4000);
ShowSerialData();
Serial1.println((char)26);//sending
delay(5000);//waitting for reply, important! the time is base on the condition of internet
Serial1.println();
ShowSerialData();
Serial1.println("AT+CIPSHUT");//close the connection
delay(100);
ShowSerialData();
}
void ShowSerialData()
{
while(Serial1.available()!=0)
Serial.write(Serial1.read());
delay(5000);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>


<br>
---
# 44. Modul Ethernet w5500
<p style="text-align:justify;">W5500 ini adalah modul Ethernet yang dasar pada chip tipe baru W5500, Chip W5500 adalah pengontrol Ethernet tertanam TCP / IP Hardwired yang memungkinkan koneksi internet lebih mudah untuk sistem embedded menggunakan SPI (Serial Peripheral Interface).</p>
## Komponen yang digunakan
1. Board Ardunesia
2. Modul Ethernet w5500
3. Kabel Jumper
4. Breadboard
## Library yang digunakan
#include <SPI.h>
#include <Ethernet2.h>
## Wiring
Wiring Board Ardunesia dengan Modul Ethernet w5500
| Ardunesia | W5500 |
| -------- | -------- |
| 3.3V | 3.3V |
| GND | GND |
| PIN 10 | SS |
| PIN 11 | MOSI |
| PIN 12 | MISO |
| PIN 13 | SCLK |
## Code
<p style="text-align:justify;">Berikut adalah kode yang digunakan untuk menghubungkan ardunesia dengan thingspeak. Metode yang digunakan unutk memperoleh ip adalah DHCP maka tidak perlu mengatur IP, gateway dan submask. </p>
```
#include <SPI.h>
#include <Ethernet2.h>
int pin = 0; // analog pin
int tempc = 0,tempf=0; // temperature variables
int samples[8]; // variables to make a better precision
int i;
// Local Network Settings
byte mac[] = { 0xD5, 0xA7, 0xE5, 0xFE, 0xA2, 0xA5 }; // you can change this with your desired value
// ThingSpeak Settings
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "VTAKSAYQWEXGG8GQ"; // Write API Key for a ThingSpeak Channel
const int updateInterval = 10000; // Time interval in milliseconds to update ThingSpeak
// Variable Setup
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;
// Initialize Arduino Ethernet Client
EthernetClient client;
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac);
delay(1000);
Serial.print("ETHERNET SHIELD ip is : ");
Serial.println(Ethernet.localIP());
// Start Ethernet on Arduino
startEthernet();
}
void loop()
{
// You can change this dummy variable with analogRead from your sensor
tempc = 25;
//tempc = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
String analogPin0 = String(tempc);
// Print Update Response to Serial Monitor
if (client.available())
{
char c = client.read();
Serial.print(c);
}
// Disconnect from ThingSpeak
if (!client.connected() && lastConnected)
{
Serial.println();
Serial.println("...disconnected.");
Serial.println();
client.stop();
}
// Update ThingSpeak
if(!client.connected() && (millis() - lastConnectionTime > updateInterval))
{
updateThingSpeak("field1="+analogPin0);
}
lastConnected = client.connected();
}
void updateThingSpeak(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");
client.print(tsData);
lastConnectionTime = millis();
if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();
failedCounter = 0;
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");
Serial.println();
}
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");
Serial.println();
lastConnectionTime = millis();
}
}
void startEthernet()
{
client.stop();
Serial.println("Connecting Arduino to network...");
Serial.println();
delay(1000);
// Connect to network amd obtain an IP address using DHCP
if (Ethernet.begin(mac) == 0)
{
Serial.println("DHCP Failed, reset Arduino to try again");
Serial.println();
}
else {
Serial.println("Arduino connected to network using DHCP");
Serial.println();
Serial.println("Data being uploaded to THINGSPEAK Server.......");
Serial.println();
}
delay(1000);
}
```
## Ilustrasi Gambar
<p style="text-align:justify;">Berikut ini merupakan ilustrasi wiring dan hasil untuk project ini.</p>



<br>
---