Anda di halaman 1dari 24

Bahasa Pemrograman Dasar Arduino IDE Project

IoT

Program WiFi Client


WiFi client artinya, ESP8266 baik itu Wemos, NodeMCU, atau modulnya dijadikan
sebagai client untuk menerima koneksi dari luar. Jadi penerimaan inilah yang
digunakan untuk dapat terhubung dengan hotspot. Program yang dapat digunakan
adalah sebagai berikut.

01 #include <ESP8266WiFi.h>
02 #include <ESP8266WebServer.h>
03

04 const char* ssid = "Indobot.co.id"; //ubah SSID sesuai dengan nama hotspot yang diguna
05 const char* password = "belajariot"; //ubah password sesuai dengan hotspot yang diguna

06
07 ESP8266WebServer server(80);
08 String webpage;

09

10 void setup() {
11   Serial.begin(115200);
12   delay(10);

13
14 // Connect to WiFi network
15   Serial.println();
16   Serial.print("Configuring access point...");
17
18 // Mengatur WiFi
19   WiFi.mode(WIFI_AP);
20   WiFi.begin(ssid, password);
21
22   // Wait for connection
23   while (WiFi.status() != WL_CONNECTED) {

24     delay(500);
25     Serial.print(".");
26   }

27   Serial.println("");
28   Serial.print("Connected to ");
29   Serial.println(ssid);
30   Serial.println("IP address: ");
31   Serial.println(WiFi.localIP());
32

33
34   server.begin();
35   Serial.println("WiFi sebagai Client Siap Dijalankan");
36 }

37

38 void loop() {
39    server.handleClient();
40 }

Program di atas dapat menghubungkan ESP8266 ke WiFi. Biasanya digunakan untuk


program webserver dimana kita dapat menghubungkannya ke WiFi, kemudian diakses
oleh web browser dengan menggunakan IP Address. Namun program di atas
sebenarnya adalah program dasar untuk menghubungkan dengan hotspot dengan
menjadi client.

Program di atas menggunakan library ESP8266WiFi.h untuk library mengaktifkan wifi


dan melakukan setting pada wifi. Library berfungsi untuk mempermudah kita dalam
pembuatan program. Jadi kita tidak perlu membuatnya dari nol banget.

Nah pada program di atas, bagian Serial hanya digunakan untuk menampilkan hasil
pembacaan pada serial monitor saja. Pokok program utamanya ada pada program-
program lainnya.

Setiap cloud, memiliki library program masing-masing sebagai program dasar. Pahami
dan pelajari ya.

 Program Dasar Thingspeak


Program dasar Thingspeak ada 2 jenis, yaitu program pengiriman data dan program
penerimaan data. Thingspeak sebagai platform Cloud IoT yang dapat digunakan
sebagai penampung data realtime dari pembacaan sersor maupun dari pengiriman data
dari aplikasi. Berikut ini adalah program untuk melakukan pengiriman data dari
ESP8266 ke Thingspeak.

01 #include <ESP8266WiFi.h>
02 #include <WiFiClient.h>
03 #include <ThingSpeak.h> //library untuk thingspeak
04

05 const char *ssid = "indobot.co.id";  //nama Hotspot yang digunakan

06 const char *password = "belajariot";  //Password Hotspot yang digunakan


07 WiFiClient client;
08

09 unsigned long myChannelNumber =  1614486; //channel ID

10 const char * myWriteAPIKey = "HE2CO3UZC7BPNCTM"; //write APIKey

11

12 void setup() {
13   Serial.begin(115200);
14   delay(10);

15
16   Serial.print("Connecting to ");
17   Serial.println(ssid);  //menampilkan nama hotspot ke Serial monitor
18   WiFi.begin(ssid, password);  //memulai untuk terhubung WiFi

19
20   //memastikan koneksi dengan hotspot
21   while (WiFi.status() != WL_CONNECTED)

22   {

23       delay(500);
24       Serial.print(".");
25   }
26
27   Serial.println("");
28   Serial.println("WiFi connected"); //menandakan sudah terkoneksi
29   Serial.println(WiFi.localIP());  //menampilkan Alamat IP
30   ThingSpeak.begin(client); //memulai thingspeak
31 }
32

33 void loop()

34 {

35  int data;

36   int nilaiSensor = data; //variabel Nilai sensor untuk


37   ThingSpeak.writeField(myChannelNumber, 1, nilaiSensor, myWriteAPIKey); //pengiriman
38   delay(2000); //jangka pengiriman 2 detik
39 }

Sedangkan untuk program yang dapat digunakan untuk mengakses data dari
Thingspeak adalah sebagai berikut.

01 #include <ESP8266WiFi.h>
02 #include <WiFiClient.h>

03 #include <DHT.h>
04 #include <ThingSpeak.h> //library untuk thingspeak
05 const char *ssid = "indobot.co.id";   //nama Hotspot yang digunakan

06 const char *password = "belajariot";  //Password Hotspot yang digunakan


07 WiFiClient  client;
08

09 unsigned long myChannelNumber = 1615548;    //channel ID

10 const char * myReadAPIKey = "AOY0ZEBH04OQ6JKI"; //Read APIKey


11
12

13 void setup() {
14   Serial.begin(115200);
15   delay(10);
16
17   Serial.print("Connecting to ");
18   Serial.println(ssid);  //menampilkan nama hotspot ke Serial monitor
19   WiFi.begin(ssid, password);   //memulai untuk terhubung WiFi
20

21   //memastikan koneksi dengan hotspot

22   while (WiFi.status() != WL_CONNECTED)

23   {
24       delay(500);
25       Serial.print(".");
26   }

27   Serial.println("");
28   Serial.println("WiFi connected"); //menandakan sudah terkoneksi
29   Serial.println(WiFi.localIP());  //menampilkan Alamat IP
30   WiFi.mode(WIFI_STA);
31   ThingSpeak.begin(client);  //memulai thingspeak
32 }

33

34 void loop() {
35   int statusCode = 0;  //membuat Kode status menjadi 0 sebelum pembacaan

36

37   long count = ThingSpeak.readLongField(myChannelNumber, 1, myReadAPIKey);  //mengakse

38   statusCode = ThingSpeak.getLastReadStatus();  //membaca kode status yang diberikan

39   if(statusCode == 200){ //jika kode status sama dengan 200, maka

40     Serial.println("Counter: " + String(count)); //data ditampilkan di serial monitor

41   }
42   else{  //jika kode tidak sama dengan 200
43     Serial.println("Problem reading channel. HTTP error code " + String(statusCode)); 

44   }
45   delay(2000);
46
47 }
Channel ID, Write APIKey, dan Read APIKey bisa kita dapatkan setelah sudah
membuat akun di Thingspeak. Jangan lupa untuk mengisi nama dan password hotspot
untuk dapat terhubung. Kedua program di atas hanya dasarnya saja. Pada program
pengiriman data, teman-teman harus mengubah variabel data menjadi variabel nilai
yang ingin dikirimkan. Sedangkan pada bagian akses data, datanya hanya terlihat di
serial monitor dan belum bisa digunakan  untuk mengendalikan sesuatu.

Program Pengujian Fasilitas WiFi pada Wemos


ESP8266 Sebagai Client dan Server

Sistem Client
WiFi yang dijadikan sebagai Client berfungsi untuk menangkap sinyal WiFi lainnya di
sekitarnya untuk dapat saling terhubung. Sistem WiFi sebagai Client sama dengan
sistem WiFi yang ada di Smartphone teman-teman. Smartphone memiliki fitur WiFi
untuk bisa terhubung dengan wifi lain agar terhubung internet. Terkadang ada notifikasi
bahwa WiFi telah terhubung dengan smartphone, namun tidak ada koneksi internet. Ini
artinya Smartphone sudah terhubung, namun WiFi tidak terhubung dengan koneksi
internet.

Pengujian Wemos sebagai client, dapat dilakukan dengan memberikan nama dan
password WiFi yang terjangkau dengan Wemos. Nama dan Password ini perlu
dimasukkan dalam program yang akan dikirimkan ke device Wemos. Berikut adalah
program yang dapat digunakan untuk melakukan pengujian pada Wemos anda.

01 #include &lt;ESP8266WiFi.h&gt;
02 #include &lt;ESP8266WebServer.h&gt;
03

04 const char* ssid = "Indobot.co.id"; //ubah SSID sesuai dengan nama hotspot yang diguna
05 const char* password = "belajariot"; //ubah password sesuai dengan hotspot yang diguna

06
07 ESP8266WebServer server(80);
08 String webpage;

09

10 void setup() {
11   Serial.begin(115200);
12   delay(10);

13
14 // Connect to WiFi network
15   Serial.println();
16   Serial.print("Configuring access point...");
17
18 // Mengatur WiFi
19   WiFi.mode(WIFI_AP);
20   WiFi.begin(ssid, password);
21
22   // Wait for connection
23   while (WiFi.status() != WL_CONNECTED) {
24     delay(500);
25     Serial.print(".");
26   }

27   Serial.println("");
28   Serial.print("Connected to ");
29   Serial.println(ssid);
30   Serial.println("IP address: ");
31   Serial.println(WiFi.localIP());
32

33
34   server.begin();
35   Serial.println("WiFi sebagai Client Siap Dijalankan");
36 }

37

38 void loop() {
39    server.handleClient();
40 }

Tuliskan program di atas ke aplikasi Arduino IDE anda. Jangan lupa untuk mengubah
ssid dan password menjadi nama hotspot dan nama password yang digunakan.
Kemudian upload program tersebut ke Wemos anda. Jika pada bagian board tidak
ditemukan Wemos, pastikan anda sudah install ESP8266 di Board Manager Arduino
IDE.

Jika program sudah terkirim, coba cek pada serial monitor di baut rate 115200.
Tunggulah titik-titik selesai hingga muncul tulisan “WiFi sebagai Client Siap Dijalankan”.
Jika sudah muncul tulisan tersebut, maka dapat dipastikan bahwa WiFi anda dapat
digunakan untuk bisa terhubung dengan internet, karena dapat dihubungkan dengan
WiFi nantinya.

Sistem Server
WiFi yang dijadikan sebagai Server artinya WiFi ditempatkan untuk memancarkan
gelombang untuk dapat diterima WiFi lain (WiFi Client). WiFi ini dapat terhubung
dengan berbagai Client. berbeda dengan WiFi client yang hanya dapat terhubung
dengan 1 server saja. WiFi server dapat menyebarkan informasi secara langsung ke
seluruh WiFi Client. Sistem ini sama dengan smartphone yang mengaktifkan fitur
Hotspot. Pengguna smartphone lainnya dapat mengakses hotspot anda selama
diketahui nama dan passwordnya.

Pada Wemos, penggunaan WiFi sebagai server, dapat melakukan penggantian nama
dan password WiFi yang digunakan. nama WiFi dapat ditambahkan dengan
menggunakan program yang di-upload ke device. Berikut ini adalah program yang
dapat digunakan untuk ujicoba WiFi pada Wemos anda.

01 #include &lt;ESP8266WiFi.h&gt;
02 #include &lt;ESP8266WebServer.h&gt;
03

04 const char* ssid = "INDOBOTACADEMY"; //nama hotspot Wemos Anda


05 const char* password = "belajariot"; //Password hotspot Wemos Anda

06
07 ESP8266WebServer server(80);
08 String webpage;

09
10
11 void setup() {
12   Serial.begin(115200);
13   delay(10);
14
15 // Connect to WiFi network
16   Serial.println();
17   Serial.print("Configuring access point...");
18

19 // Mengatur WiFi
20   WiFi.mode(WIFI_AP);
21   WiFi.softAP(ssid, password);
22   Serial.println("");
23   Serial.print("Nama Hotspot Anda : ");
24   Serial.println(ssid);
25   Serial.print("Password Hotspot Anda : ");
26   Serial.println(password);

27   Serial.println("IP address: ");


28   Serial.println(WiFi.softAPIP());
29
30   server.begin();
31   Serial.println("WiFi sebagai Server sudah dijalankan. Silakan cek pada WiFi anda");
32 }

33

34 void loop() {
35    server.handleClient();
36 }

Tuliskan program di atas ke aplikasi Arduino IDE anda. Pilihlah nama ssid dan
password yang anda inginkan. Kemudian upload program tersebut ke Wemos anda.
Jika sudah terkirim, cek pada serial monitor. Jika tidak muncul, cobalah untuk klik Flash
pada Wemos anda untuk mengulang jalannya program.

Jika sudah muncul tulisan “WiFi sebagai Server sudah dijalankan”, maka dapat
diartikan bahwa WiFi sudah diaktifkan. Pengecekan dapat dilakukan dengan
menggunakan Smartphone. Buka pada pengaturan WiFi anda. Cek apakah nama WiFi
dari Wemos tadi sudah muncul atau belum. Jika sudah, coba klik dan masukkan
password sesuai setting sebelumnya.
Project ESP32-CAM IoT : Mengkoneksikan ESP32-CAM dengan
Aplikasi Telegram

Kali ini kita akan membahas terkait ESP32-CAM yang akan kita gunakan untuk sistem IoT.
Sistem IoT (Internet of Things) merupakan suatu sistem yang digunakan sebagai monitoring
dan controlling suatu project dari jarak yang jauh dengan komunikasi melalui internet.

Nah ESP32-CAM dengan fasilitas tambahannya berupa kamera akan kita gunakan untuk
pengambilan gambar yang akan dikirimkan ke aplikasi Telegram. Telegram memiliki Bot yang
dapat digunakan untuk melakukan embed antara smartphone dengan mikrokontroler. Yuk kita
simak cara membuatnya.

Alat dan Bahan


Alat dan bahan untuk project ini adalah sebagai berikut.
1. Software Arduino IDE
2. ESP32-CAM 1
3. FTDI FT232RL 1
4. Kabel jumper Secukupnya

Rangkaian
Susun komponen di atas menjadi rangkaian berikut.
Program
Tahap selanjutnya adalah penulisan program pada Arduino IDE. Buatlah program seperti
berikut. Jangan lupa untuk menambahkan board baru untuk ESP32 dan Universal telegram bot
agar tidak terjadi error. Atur board ke AI Thinker ESP32-CAM.
 

01 #include <WiFi.h>
02 #include <WiFiClientSecure.h>
03 #include "esp_camera.h"
04 #include "UniversalTelegramBot.h"
05
06 #define BOT_TOKEN "your_bot_it"
07 #define _debug
08

09 const char* ssid = "wifi_ssid";

10 const char* password = "wifi_pwd";

11
12 WiFiClientSecure client;
13 UniversalTelegramBot bot(BOT_TOKEN, client);
14

15 long bot_last_check;

16 int bot_check_interval = 3000;

17

18 bool hasMoreData;
19 camera_fb_t * fb = NULL;
20

21 bool hasMoreDataAvailable();

22 byte* getNextBuffer();

23 int getBufferLen();

24

25 // Pilih camera model


26 //#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
27 //#define CAMERA_MODEL_ESP_EYE // Has PSRAM
28 //#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM

29 //#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM


30 //#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM

31 //#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM


32 #define CAMERA_MODEL_AI_THINKER // Has PSRAM
33 //#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
34
35 #include "camera_pins.h"
36

37

38 void setup() {

39   Serial.begin(9600);
40   Serial.setDebugOutput(true);
41   Serial.println();
42

43   camera_config_t config;
44   config.ledc_channel = LEDC_CHANNEL_0;
45   config.ledc_timer = LEDC_TIMER_0;
46   config.pin_d0 = Y2_GPIO_NUM;
47   config.pin_d1 = Y3_GPIO_NUM;
48   config.pin_d2 = Y4_GPIO_NUM;
49   config.pin_d3 = Y5_GPIO_NUM;
50   config.pin_d4 = Y6_GPIO_NUM;
51   config.pin_d5 = Y7_GPIO_NUM;
52   config.pin_d6 = Y8_GPIO_NUM;
53   config.pin_d7 = Y9_GPIO_NUM;
54   config.pin_xclk = XCLK_GPIO_NUM;
55   config.pin_pclk = PCLK_GPIO_NUM;
56   config.pin_vsync = VSYNC_GPIO_NUM;
57   config.pin_href = HREF_GPIO_NUM;
58   config.pin_sscb_sda = SIOD_GPIO_NUM;
59   config.pin_sscb_scl = SIOC_GPIO_NUM;
60   config.pin_pwdn = PWDN_GPIO_NUM;
61   config.pin_reset = RESET_GPIO_NUM;
62   config.xclk_freq_hz = 20000000;
63   config.pixel_format = PIXFORMAT_JPEG;
64
65   // jika ada PSRAM IC, init dengan UXGA resolution dan  kualitas JPEG yang lebih tin
66   // untuk buffer bingkat pra-alokasi yang lebih besar.

67   if(psramFound()){
68     config.frame_size = FRAMESIZE_QVGA;
69     config.jpeg_quality = 10;
70     config.fb_count = 2;

71   } else {
72     config.frame_size = FRAMESIZE_QVGA;
73     config.jpeg_quality = 12;
74     config.fb_count = 1;
75   }
76
77 #if defined(CAMERA_MODEL_ESP_EYE)
78   pinMode(13, INPUT_PULLUP);
79   pinMode(14, INPUT_PULLUP);
80 #endif

81
82   // camera init
83   esp_err_t err = esp_camera_init(&config);
84   if (err != ESP_OK) {
85     Serial.printf("Kamera Error 0x%x", err);
86     return;
87   }
88

89   sensor_t * s = esp_camera_sensor_get();
90   // tampilan awal yang digunakan adalah vertikal dan warna agak jenuh
91   if (s->id.PID == OV3660_PID) {
92     s->set_vflip(s, 1); // flip tampilan

93     s->set_brightness(s, 1); // menaikkan sedikit kecerahan


94     s->set_saturation(s, 0); // menurunkan saturasi

95   }
96   //drop down ukuran frame untuk frame rate awal yang lwbih tinggi
97   s->set_framesize(s, FRAMESIZE_QVGA);
98
99 #if defined(CAMERA_MODEL_M5STACK_WIDE)
100   s->set_vflip(s, 1);
101   s->set_hmirror(s, 1);
102 #endif

103
104   WiFi.mode(WIFI_STA);
105   WiFi.begin(ssid, password);
106

107   while (WiFi.status() != WL_CONNECTED) {

108     delay(500);
109     Serial.print(".");
110   }

111   Serial.println("");
112   Serial.println("WiFi connected");
113
114   bot.longPoll = 60;
115 }
116

117

118 bool hasMoreDataAvailable() {
119   Serial.println("Has more daa");
120   if (hasMoreData) {
121     hasMoreData = false;
122     return true;
123   }
124

125   return false;

126 }

127
128

129 byte* getNextBuffer() {


130   Serial.println("Next Buffer ");
131   if (fb)

132     return fb->buf;

133

134   return nullptr;
135 }
136

137 int getBufferLen() {
138 Serial.println("Buffer len");
139  if (fb)

140    return fb->len;

141

142   return 0;
143 }
144

145 void sendImage(String chat_id) {


146   Serial.println("Sending Image");
147   fb = NULL;
148   fb = esp_camera_fb_get();
149   hasMoreData = true;
150
151   Serial.println(fb->len);
152
153   bot.sendPhotoByBinary(chat_id, "image/jpeg", fb->len, hasMoreDataAvailable, nullpt
154
155   esp_camera_fb_return(fb);
156
157 }
158

159 void loop() {

160   if (millis() > bot_last_check + bot_check_interval) {


161     int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

162     while (numNewMessages) {

163         for (int i = 0; i < numNewMessages; i++) {


164            String chat_id = bot.messages[i].chat_id;
165            String msg = bot.messages[i].text;

166            Serial.println("Chat id:" + chat_id);


167            Serial.println("Msg: " + msg);

168            if (msg == "/capture") {


169              sendImage(chat_id);
170            }

171         }
172         numNewMessages = bot.getUpdates(bot.last_message_received + 1);
173     }
174
175     bot_last_check = millis();
176   }

177
178  // delay(10);
179 }

Masukkan nama hotspot, password hotspot, dan token yang anda gunakan.

Kemudian tambahkan sketch baru dengan New Tab. Klik pada segitiga di kanan atas > pilih New
Tab. Berikan nama file “camera_pins.h”. Kemudian tuliskan sketch berikut ini:
 
01 #if defined(CAMERA_MODEL_WROVER_KIT)

02 #define PWDN_GPIO_NUM    -1

03 #define RESET_GPIO_NUM   -1

04 #define XCLK_GPIO_NUM    21

05 #define SIOD_GPIO_NUM    26

06 #define SIOC_GPIO_NUM    27

07

08 #define Y9_GPIO_NUM      35

09 #define Y8_GPIO_NUM      34

10 #define Y7_GPIO_NUM      39

11 #define Y6_GPIO_NUM      36

12 #define Y5_GPIO_NUM      19

13 #define Y4_GPIO_NUM      18

14 #define Y3_GPIO_NUM       5

15 #define Y2_GPIO_NUM       4

16 #define VSYNC_GPIO_NUM   25

17 #define HREF_GPIO_NUM    23

18 #define PCLK_GPIO_NUM    22

19

20 #elif defined(CAMERA_MODEL_ESP_EYE)

21 #define PWDN_GPIO_NUM    -1

22 #define RESET_GPIO_NUM   -1

23 #define XCLK_GPIO_NUM    4

24 #define SIOD_GPIO_NUM    18

25 #define SIOC_GPIO_NUM    23
26

27 #define Y9_GPIO_NUM      36

28 #define Y8_GPIO_NUM      37

29 #define Y7_GPIO_NUM      38

30 #define Y6_GPIO_NUM      39

31 #define Y5_GPIO_NUM      35

32 #define Y4_GPIO_NUM      14

33 #define Y3_GPIO_NUM      13

34 #define Y2_GPIO_NUM      34

35 #define VSYNC_GPIO_NUM   5

36 #define HREF_GPIO_NUM    27

37 #define PCLK_GPIO_NUM    25

38

39 #elif defined(CAMERA_MODEL_M5STACK_PSRAM)

40 #define PWDN_GPIO_NUM     -1

41 #define RESET_GPIO_NUM    15

42 #define XCLK_GPIO_NUM     27

43 #define SIOD_GPIO_NUM     25

44 #define SIOC_GPIO_NUM     23

45

46 #define Y9_GPIO_NUM       19

47 #define Y8_GPIO_NUM       36

48 #define Y7_GPIO_NUM       18

49 #define Y6_GPIO_NUM       39

50 #define Y5_GPIO_NUM        5
51 #define Y4_GPIO_NUM       34

52 #define Y3_GPIO_NUM       35

53 #define Y2_GPIO_NUM       32

54 #define VSYNC_GPIO_NUM    22

55 #define HREF_GPIO_NUM     26

56 #define PCLK_GPIO_NUM     21

57

58 #elif defined(CAMERA_MODEL_M5STACK_V2_PSRAM)

59 #define PWDN_GPIO_NUM     -1

60 #define RESET_GPIO_NUM    15

61 #define XCLK_GPIO_NUM     27

62 #define SIOD_GPIO_NUM     22

63 #define SIOC_GPIO_NUM     23

64

65 #define Y9_GPIO_NUM       19

66 #define Y8_GPIO_NUM       36

67 #define Y7_GPIO_NUM       18

68 #define Y6_GPIO_NUM       39

69 #define Y5_GPIO_NUM        5

70 #define Y4_GPIO_NUM       34

71 #define Y3_GPIO_NUM       35

72 #define Y2_GPIO_NUM       32

73 #define VSYNC_GPIO_NUM    25

74 #define HREF_GPIO_NUM     26

75 #define PCLK_GPIO_NUM     21
76

77 #elif defined(CAMERA_MODEL_M5STACK_WIDE)

78 #define PWDN_GPIO_NUM     -1

79 #define RESET_GPIO_NUM    15

80 #define XCLK_GPIO_NUM     27

81 #define SIOD_GPIO_NUM     22

82 #define SIOC_GPIO_NUM     23

83

84 #define Y9_GPIO_NUM       19

85 #define Y8_GPIO_NUM       36

86 #define Y7_GPIO_NUM       18

87 #define Y6_GPIO_NUM       39

88 #define Y5_GPIO_NUM        5

89 #define Y4_GPIO_NUM       34

90 #define Y3_GPIO_NUM       35

91 #define Y2_GPIO_NUM       32

92 #define VSYNC_GPIO_NUM    25

93 #define HREF_GPIO_NUM     26

94 #define PCLK_GPIO_NUM     21

95

96 #elif defined(CAMERA_MODEL_M5STACK_ESP32CAM)

97 #define PWDN_GPIO_NUM     -1

98 #define RESET_GPIO_NUM    15

99 #define XCLK_GPIO_NUM     27
100 #define SIOD_GPIO_NUM     25

101 #define SIOC_GPIO_NUM     23

102

103 #define Y9_GPIO_NUM       19

104 #define Y8_GPIO_NUM       36

105 #define Y7_GPIO_NUM       18

106 #define Y6_GPIO_NUM       39

107 #define Y5_GPIO_NUM        5

108 #define Y4_GPIO_NUM       34

109 #define Y3_GPIO_NUM       35

110 #define Y2_GPIO_NUM       17

111 #define VSYNC_GPIO_NUM    22

112 #define HREF_GPIO_NUM     26

113 #define PCLK_GPIO_NUM     21

114

115 #elif defined(CAMERA_MODEL_AI_THINKER)

116 #define PWDN_GPIO_NUM     32

117 #define RESET_GPIO_NUM    -1

118 #define XCLK_GPIO_NUM      0

119 #define SIOD_GPIO_NUM     26

120 #define SIOC_GPIO_NUM     27

121

122 #define Y9_GPIO_NUM       35

123 #define Y8_GPIO_NUM       34

124 #define Y7_GPIO_NUM       39


125 #define Y6_GPIO_NUM       36

126 #define Y5_GPIO_NUM       21

127 #define Y4_GPIO_NUM       19

128 #define Y3_GPIO_NUM       18

129 #define Y2_GPIO_NUM        5

130 #define VSYNC_GPIO_NUM    25

131 #define HREF_GPIO_NUM     23

132 #define PCLK_GPIO_NUM     22

133

134 #elif defined(CAMERA_MODEL_TTGO_T_JOURNAL)

135 #define PWDN_GPIO_NUM      0

136 #define RESET_GPIO_NUM    15

137 #define XCLK_GPIO_NUM     27

138 #define SIOD_GPIO_NUM     25

139 #define SIOC_GPIO_NUM     23

140

141 #define Y9_GPIO_NUM       19

142 #define Y8_GPIO_NUM       36

143 #define Y7_GPIO_NUM       18

144 #define Y6_GPIO_NUM       39

145 #define Y5_GPIO_NUM        5

146 #define Y4_GPIO_NUM       34

147 #define Y3_GPIO_NUM       35

148 #define Y2_GPIO_NUM       17

149 #define VSYNC_GPIO_NUM    22


150 #define HREF_GPIO_NUM     26

151 #define PCLK_GPIO_NUM     21

152

153 #else

154 #error "Camera model not selected"

155 #endif

Upload program di atas ke ESP32-CAM. Jangan lupa untuk menghubungkan dulu GPIO 0 ke
GND agar program dapat ter-upload dengan baik.
Jika sketch sudah terkirim secara keseluruhan, maka cabutlah GPIO 0 dari GND untuk
memasukkan pada Running Mode dari ESP32-CAM. Selanjutnya, buka serial monitor untuk
melihat hasilnya.
 

Hasil dari project ini adalah kita dapat mengambil foto dari jarak jauh secara online. Foto ini
kemudian akan dikirimkan dari ESP32-CAM menuju aplikasi telegram. Selagi keduanya masih
terkoneksi dengan internet, maka sistem akan tetap berjalan.

Anda mungkin juga menyukai