아두이노 코딩 관련 질문있어요!
조회수 989회
아두이노 예제 cam32 를 사용하여 웹캠 사이트를 이용하고 휴대폰 앱으로 송출 받을 수 있는 예제와 mp3 플레이어를 사용하여 음성 메세지를 출력할 수 있는 예제를 사용하고 인체감지 센서를 사용해 센서 감지가 되면 휴대폰으로 알람이 가는 코드를 만들려고 합니다. (카메라 모듈, MP3 플레이어) 2개의 코드를 사용해서 만들려고 합니다. 전압은 5V 2A 넣을려고 합니다.
20000mAh 보조배터리 [케이블 포함] [QTM-MP37-20K]
아두이노 웹캠 ESP32-CAM 호환보드 [ESP32-CAM]
USB To Uart 5V&3V3 [103990049]
MicroUSB 승압형 DC-DC 가변 컨버터 [SZH-PWBU-008]
[Arduino] Arduino Uno (R3)
[AM-AM] USB-A 2.0 to USB-A 2.0 케이블, NETmate, NMC-UA205
아두이노 적외선 PIR 인체감지센서 모듈 [SEN050135]
아두이노용 Mini MP3 Player 모듈 [KE0092]
40mm 8옴 2W 스피커 [FQ-024]
include "esp_camera.h"
include
// // WARNING!!! Make sure that you have either selected ESP32 Wrover Module, // or another board which has PSRAM enabled //
// Select camera model
define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE //#define CAMERA_MODEL_M5STACK_PSRAM //#define CAMERA_MODEL_M5STACK_WIDE //#define CAMERA_MODEL_AI_THINKER
include "camera_pins.h"
const char* ssid = "******"; const char password = "*******";
void startCameraServer();
void setup() { Serial.begin(115200); Serial.setDebugOutput(true); Serial.println();
camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = Y2_GPIO_NUM; config.pin_d1 = Y3_GPIO_NUM; config.pin_d2 = Y4_GPIO_NUM; config.pin_d3 = Y5_GPIO_NUM; config.pin_d4 = Y6_GPIO_NUM; config.pin_d5 = Y7_GPIO_NUM; config.pin_d6 = Y8_GPIO_NUM; config.pin_d7 = Y9_GPIO_NUM; config.pin_xclk = XCLK_GPIO_NUM; config.pin_pclk = PCLK_GPIO_NUM; config.pin_vsync = VSYNC_GPIO_NUM; config.pin_href = HREF_GPIO_NUM; config.pin_sscb_sda = SIOD_GPIO_NUM; config.pin_sscb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_JPEG; //init with high specs to pre-allocate larger buffers if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1; }
if defined(CAMERA_MODEL_ESP_EYE)
pinMode(13, INPUT_PULLUP); pinMode(14, INPUT_PULLUP);
endif
// camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; }
sensor_t * s = esp_camera_sensor_get(); //initial sensors are flipped vertically and colors are a bit saturated if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1);//flip it back s->set_brightness(s, 1);//up the blightness just a bit s->set_saturation(s, -2);//lower the saturation } //drop down frame size for higher initial frame rate s->set_framesize(s, FRAMESIZE_QVGA);
if defined(CAMERA_MODEL_M5STACK_WIDE)
s->set_vflip(s, 1); s->set_hmirror(s, 1);
endif
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected");
startCameraServer();
Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect"); }
void loop() { // put your main code here, to run repeatedly: delay(10000); }
include "Arduino.h"
include "SoftwareSerial.h"
include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX DFRobotDFPlayerMini myDFPlayer; void printDetail(uint8_t type, int value); void setup() { mySoftwareSerial.begin(9600); Serial.begin(115200);
Serial.println(); Serial.println(F("DFRobot DFPlayer Mini Demo")); Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3. Serial.println(F("Unable to begin:")); Serial.println(F("1.Please recheck the connection!")); Serial.println(F("2.Please insert the SD card!")); while(true); } Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(10); //Set volume value. From 0 to 30 myDFPlayer.play(1); //Play the first mp3 5 } void loop() { static unsigned long timer = millis();
if (millis() - timer > 30000) { timer = millis(); myDFPlayer.next(); //Play next mp3 every 30 second. }
if (myDFPlayer.available()) { printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states. } } void printDetail(uint8_t type, int value){ switch (type) { case TimeOut: Serial.println(F("Time Out!")); break; case WrongStack: Serial.println(F("Stack Wrong!")); break; case DFPlayerCardInserted: Serial.println(F("Card Inserted!")); break; case DFPlayerCardRemoved: Serial.println(F("Card Removed!")); 6 break; case DFPlayerCardOnline: Serial.println(F("Card Online!")); break; case DFPlayerPlayFinished: Serial.print(F("Number:")); Serial.print(value); Serial.println(F(" Play Finished!")); break; case DFPlayerError: Serial.print(F("DFPlayerError:")); switch (value) { case Busy: Serial.println(F("Card not found")); break; case Sleeping: Serial.println(F("Sleeping")); break; case SerialWrongStack: Serial.println(F("Get Wrong Stack")); break; case CheckSumNotMatch: Serial.println(F("Check Sum Not Match")); break; case FileIndexOut: Serial.println(F("File Index Out of Bound")); break; case FileMismatch: Serial.println(F("Cannot Find File")); 7 break; case Advertise: Serial.println(F("In Advertise")); break; default: break; } break; default: break; } }
댓글 입력