![]() |
도남철, "ESP32 기반 온디바이스 AI를 이용한 스마트 커넥티드 제품 만들기", 퍼플, 2026.
알아보기 > 전자책( 교보, 예스24, 알라딘), Publish On Demand(교보) |
"ESP32 기반 온디바이스 AI를 이용한 스마트 커넥티드 제품 만들기" 3장의 프로그램 소스코트를 제공합니다.
49p
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this delays for printing
Serial.println("Hello, ESP32!");
}
52p
String receivedMessage = ""; // 입력 내용 저장 문자열
void setup() {
// UART0인 Serial에 115200 Bd 설정
Serial.begin(115200);
// 아두이노 IDE 시리얼 모니터에 쵝 메시지 출력
Serial.println(“Please enter a message:");
}
void loop() {
// 시리얼 버퍼에 내용이 있는지 확인
while (Serial.available()) {
char incomingChar = Serial.read(); // 글자 읽기
if (incomingChar == '\n') { // Enter가 입력된 경우
Serial.print("You sent: ");
Serial.println(receivedMessage); // 저장한 문자열 출력
receivedMessage = ""; // 시리얼 버퍼 초기화
} else {
receivedMessage += incomingChar; //Enter가 아니면 글자추가
}
}
}
55p
// URT를 위한 TX와 RX 핀 정의
#define TXD1 43
#define RXD1 44
// UART 인터페이스 이름 변경
HardwareSerial mySerial(1);
int counter = 0;
void setup() {
Serial.begin(115200); // 시리얼 모니터 Bd
mySerial.begin(9600, SERIAL_8N1, RXD1, TXD1); // UART 정의
Serial.println("ESP32 UART Transmitter");
}
void loop() {
// UART를 통해 메시지 전달
mySerial.println(String(counter));
Serial.println("Sent: " + String(counter));
// increment the counter
counter++;
delay(1000);
}
56p
// URT를 위한 TX와 RX 핀 정의
#define TXD1 21
#define RXD1 20
// UART 인터페이스 이름 변경
HardwareSerial mySerial(1);
void setup() {
Serial.begin(115200);
mySerial.begin(9600, SERIAL_8N1, RXD1, TXD1); // UART setup
Serial.println("ESP32 UART Receiver");
}
void loop() {
// 버퍼에 자료가 있는지 확인
if (mySerial.available()) {
String message = mySerial.readStringUntil('\n');
Serial.println("Received: " + message);}
else {
Serial.println("No input");
}
delay(1000);
}
60p
#include <Seeed_Arduino_SSCMA.h>
#include <Wire.h>
SSCMA AI;
void setup()
{
Wire.begin();
AI.begin(&Wire);
Serial.begin(9600);
}
void loop()
{
if (!AI.invoke()) // 기계 학습 모델 적용
{ Serial.println("invoke success");
Serial.print("perf: prepocess=");
Serial.print(AI.perf().prepocess);
Serial.print(", inference=");
Serial.print(AI.perf().inference);
Serial.print(", postpocess=");
Serial.println(AI.perf().postprocess);
for (int i = 0; i < AI.boxes().size(); i++) // 객체탐지 성공
{ Serial.print("Box[");
Serial.print(i);
Serial.print("] target=");
Serial.print(AI.boxes()[i].target);
Serial.print(", score=");
Serial.print(AI.boxes()[i].score);// 직사각형 좌표출력
Serial.print(", x=");
Serial.print(AI.boxes()[i].x);
Serial.print(", y=");
Serial.print(AI.boxes()[i].y);
Serial.print(", w=");
Serial.print(AI.boxes()[i].w);
Serial.print(", h=");
Serial.println(AI.boxes()[i].h);
}
for (int i = 0; i < AI.classes().size(); i++)
{ Serial.print("Class[");
Serial.print(i);
Serial.print("] target=");
Serial.print(AI.classes()[i].target);
Serial.print(", score=");
Serial.println(AI.classes()[i].score);
}
for (int i = 0; i < AI.points().size(); i++)
{ Serial.print("Point[");
Serial.print(i);
Serial.print("]: target=");
Serial.print(AI.points()[i].target);
Serial.print(", score=");
Serial.print(AI.points()[i].score);
Serial.print(", x=");
Serial.print(AI.points()[i].x);
Serial.print(", y=");
Serial.println(AI.points()[i].y);
}
for (int i = 0; i < AI.keypoints().size(); i++)
{ Serial.print("keypoint[");
Serial.print(i);
Serial.print("] target=");
Serial.print(AI.keypoints()[i].box.target);
Serial.print(", score=");
Serial.print(AI.keypoints()[i].box.score);
Serial.print(", box:[x=");
Serial.print(AI.keypoints()[i].box.x);
Serial.print(", y=");
Serial.print(AI.keypoints()[i].box.y);
Serial.print(", w=");
Serial.print(AI.keypoints()[i].box.w);
Serial.print(", h=");
Serial.print(AI.keypoints()[i].box.h);
Serial.print("], points:[");
for (int j = 0; j < AI.keypoints()[i].points.size(); j++)
{ Serial.print("[");
Serial.print(AI.keypoints()[i].points[j].x);
Serial.print(",");
Serial.print(AI.keypoints()[i].points[j].y);
Serial.print("],");
}
Serial.println("]");
}
}
}
64p
void setup()
{ pinMode(10,OUTPUT); // 출력 GPIO 핀 결정
digitalWrite(10,LOW); // 기본 설정은 LED 끄기
}
void loop()
{ digitalWrite(10,HIGH); // LED 켜기
delay(500);
digitalWrite(10,LOW);
delay(500);
}
66p
#include <ESP32Servo.h>
Servo myservo; // 서보 객체 생성
int pos = 0; // 서보 초기 위치
int servoPin = 7; // XIAO ESP32 C3 pin
void setup() {
myservo.setPeriodHertz(50); // 50 hz servo
myservo.attach(servoPin, 500, 2400);
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // from 0 to 180
myservo.write(pos); // 서보가 특정 위치로 이동
delay(15); // 15ms 대기
}
for (pos = 180; pos >= 0; pos -= 1) { // from 180 to 0
myservo.write(pos);
delay(15);
}
}
69p
create table a_table(
name varchar(32),
date_create datetime default now()); //now()로 레코드 생성 시간 입력
desc a_table;
+-------------+-------------+------+-----+---------------------+
| Field | Type | Null | Key | Default |
+-------------+-------------+------+-----+---------------------+
| name | varchar(32) | YES | | NULL |
| date_create | datetime | YES | | current_timestamp() |
+-------------+-------------+------+-----+---------------------+
insert into a_table(name) values('NDoLab');
select * from a_table;
+--------+---------------------+
| name | date_create |
+--------+---------------------+
| NDoLab | 2025-09-15 13:53:57 |
+--------+---------------------+
70p
#define ESP32_MYSQL_DEBUG_PORT Serial
#define _ESP32_MYSQL_LOGLEVEL_ 1
#include <ESP32_MySQL.h>
#define USING_HOST_NAME false
const char ssid[] = "***"; // 네트워크 이름
const char pass[] = "**********"; // 네트워크 접근 패스워드
#if USING_HOST_NAME
char server[] = "192.168.0.20"; // 사용 hostname/URL로 변경 필요
#else
IPAddress server(192, 168, 0, 20);
#endif
uint16_t server_port = 3306; // MySQL server port (default: 3306)
char user[] = "***"; // MySQL 사용자 로그인
char password[] = "******"; // MySQL 사용자 패스워드
// Sample query
String IN_SQL=String("INSERT INTO a_table(name) values(‘NDoLab);");
ESP32_MySQL_Connection conn((Client *)&client);
ESP32_MySQL_Query *query_mem;
void setup()
{ Serial.begin(115200);
while (!Serial && millis() < 5000); // wait for to connect
ESP32_MYSQL_DISPLAY1("\nStarting Insert_ESP on", ARDUINO_BOARD);
// Begin WiFi section
ESP32_MYSQL_DISPLAY1("Connecting to", ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
ESP32_MYSQL_DISPLAY0(".");
}
// 데이터베이스 연결 정보 출력
ESP32_MYSQL_DISPLAY1("My IP address is:", WiFi.localIP());
ESP32_MYSQL_DISPLAY3("Server @", server, ", Port =", server_port);
}
void runInsert()
{ ESP32_MySQL_Query query_mem = ESP32_MySQL_Query(&conn);
if (conn.connected())
{ESP32_MYSQL_DISPLAY(IN_SQL);
// Execute the query
if ( !query_mem.execute(IN_SQL.c_str()) )
{ESP32_MYSQL_DISPLAY("Insert error");
}
else
{ESP32_MYSQL_DISPLAY("Data Inserted.");
}
}
else
{ ESP32_MYSQL_DISPLAY("Disconnected. Can't insert.");
}
}
void loop()
{ ESP32_MYSQL_DISPLAY("Connecting...");
if (conn.connectNonBlocking(server, server_port, user, password)!= RESULT_FAIL)
{
delay(500);
runInsert();
conn.close(); // 연결 닫기
}
else
{ ESP32_MYSQL_DISPLAY("\nConnect failed. Trying again.");
}
ESP32_MYSQL_DISPLAY("\nSleeping...");
ESP32_MYSQL_DISPLAY("=======================================");
delay(10000); // every 10 seconds
}
2026 NDoStudio
2026/3/2 처음 2026/3/2

반응형
'C Mannequin > source code' 카테고리의 다른 글
| 5장 Program 소스 코드, ESP32 기반 온디바이스 AI를 이용한 스마트 커넥티드 제품 만들기 (0) | 2026.08.27 |
|---|---|
| 4장 Program 소스 코드, ESP32 기반 온디바이스 AI를 이용한 스마트 커넥티드 제품 만들기 (0) | 2026.08.27 |
| 2장 Program 소스 코드, ESP32 기반 온디바이스 AI를 이용한 스마트 커넥티드 제품 만들기 (0) | 2026.08.27 |
