LATEST BLOG POSTS

[Arduino] ESP32 4채널 릴레이 모듈 배선 작업 및 테스트 코드 작성

준비물점퍼 케이블ESP32 보드4채널 릴레이 모듈 릴레이 모듈ESP32설명VCC3.3V전원 공급GNDGND접지 연결IN1GPON26(혹은 D6)릴레이 1 제어  위에 꺼 참고해서 점퍼 케이블로 갖다 꽂으면 된다. 맞물리는 소리나면 연결 된거다. 이제 ino 파일 작성해서 릴레이 모듈 연결이 됐는지 테스트해보자. int relayPin = 26;void setup() { pinMode(relayPin, OUTPUT);}void loop() { digitalWrite(relayPin, HIGH); delay(2000); digitalWrite(relayPin, LOW); delay(2000);} # ino 컴파일$ arduino-cli compile --fqbn esp32:esp3..

Arduino 2025.04.05 0

[C++] ESP32 모듈화(’.h’, ‘.cpp’를 이용한 코드 분리)

한 번 해보니 좀 재밌어서 ino 파일 하나에다가 묶기에는 좀 길어질 것 같기도하고 뭐든 모듈화시켜서 분리해놓으면 재사용도 좋고.. 이래저래 생각해보니 파일을 나눠놓는 게 좋을 것 같아서 분리 작업을 진행했다. root@WAS-1:/arduino# tree.├── arduino.ino└── README.txt 원래는 위 구조와 같이 되어있었다. README.txt는 명령어 실행할 때 찾아보기 쉽게 적어놓은거라.. 여튼 이렇게 되어 있었는데 이렇다보니 저 소스코드에 집약적으로 넣는다는 게 비효율적 같았다. 기존 ino 파일은 아래와 같다. #include #include #include #include const char* ssid = "";const char* pwd = "";co..

C++ 2025.03.30 0

[Arduino] MQTT로 JSON 데이터 타입 전송하기(+ JSON, NTPClient 라이브러리 다운로드)

작업 전에 필요한 라이브러리를 다운로드 받는다. 테스트 용으로 여러 데이터를 담아 보내기 위해 JSON 라이브러리, 현재 시간을 받을 수 있는 NTPClient를 다운로드 받았다. $ arduino-cli lib install "ArduinoJson"$ arduino-cli lib install "NTPClient" #include #include #include #include const char* ssid = "WIFI";const char* pwd = "PASSWORD";const char* mqttServer = "MQTT INSTALL SERVER";WiFiClient esbClient;PubSubClient client(esbClient);WiFiUDP nt..

Arduino 2025.03.29 0

[Arduino] HTML/Javascript에서 WebSocket, MQTT를 이용한 Arduino 통신

0. 라이브러리 설치$ arduino-cli lib install "WiFi"Downloading WiFi@1.2.7...WiFi@1.2.7 downloadedInstalling WiFi@1.2.7...Installed WiFi@1.2.7$ arduino-cli lib install "PubSubClient"Downloading PubSubClient@2.8.0...PubSubClient@2.8.0 downloadedInstalling PubSubClient@2.8.0...Installed PubSubClient@2.8.01. mqtt_test.ino 작성#include #include const char* ssid = "WIFI";const char* pwd = "PASSWORD..

Arduino 2025.03.29 0

TROUBLESHOOTING

[Troubleshooting] You configured HTTP(80) on the standard HTTPS(443) port!

원래 배포 웹싸이트들은 SSL 인증서 다 발급해서 관리하긴 했는데.. 이번엔 젠킨스 테스트용 웹싸이트라 굳이 SSL 인증서 발급까진 필요 없을 것 같아서 80 포트로 접근한다. 때문에 기존 SSL 설정 파일인 ‘000-default-le-ssl.conf’가 아닌 ‘000-default.conf’에서 ProxyPass 등을 설정해놨었다.  이런 식으로.. 근데 이상하게 ‘{PUBLIC IP}:{PORT}’로 접근할 때는 잘 들어가지는데 jenkins.n-e.kr로 접근하면 안되는 것이다. 그래서 아래와 같이 apache2 에러 로그를 확인해봤다. tail -f /var/log/apache2/error.log  나는 SSL 쪽 설정 파일에서 작성한 적도 없고 000-default.conf 파일에서도 포트 번..

Troubleshooting 2025.02.25 0

[Troubleshooting] 현재 시간이랑 운영 서버 시간이랑 안맞을 때(Feat. Docker)

개발 서버 운영 서버  현재 시간이랑 너무 다르다.. API 서버 배포해놓은 리눅스 내부의 시간이 안맞을거라는 생각이 들었다. 나는 도커 컨테이너로 API를 배포했기 때문에 dockerfile을 수정했다.  FROM openjdk:17ARG JAR_FILE=*.jarADD ${JAR_FILE} app.jarEXPOSE 80WORKDIR /home/api_smart_farmVOLUME /home/download/ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]ENV TZ=Asia/Seoul 제일 아래에 있는 ENV TZ=Asia/Seoul 부분을 추가했다. 그리고 docker-compose up -d --build 해서 확인하니 아..

Troubleshooting 2025.02.22 0

[Troubleshooting] SSL 인증서 및 도메인 발급 이후 HTTP 기본 페이지로 나오는 문제

공인 IP:포트로 접근했을 때는 잘 됐었다. 그러나 SSL 인증서 발급하고나서부터 기본 페이지가 나오는 게 아닌가.. 처음엔 설정 파일에서 documentRoot 경로를 dockerfile에서 작성했던 경로로 똑같이 바꾸는 바보 짓도 했었는데.. 생각해보니 공인 IP:Port로는 잘나오고 SSL 인증서 발급하자마자 안됐다? 프록시 쪽 문제라는 생각이 들었고 이 전에 Rocky Linux에서 SSL 인증서 발급받을 때 어떻게 했는지 찾아보니 아래 문구가 더 적혀져 있었다. ProxyPreserveHost OnProxyPass / ${라즈베리파이 IP 주소 }:${컨테이너 포트 }/ProxyPassReverse / ${라즈베리파이 IP 주소 }:${컨테이너 포트 }/ 이 부분을 추가하자. 파일은 /etc/a..

Troubleshooting 2024.09.14 0

[Troubleshooting] 주소 [localhost]와(과) 포트 [8005]에, 서버 셧다운 소켓을 생성하지 못했습니다. (base 포트 [8005], offset [0])java.net.BindException: Address already in use: JVM_Bind

이슈 발생 상황은 Windows에서 Tomcat을 돌릴 때(startup.bat을 실행했을 때) cmd 창이 바로 꺼지며 실행되지 않는 상황이였다. 에러 로그는 아래와 같다.08-Aug-2024 09:33:10.755 심각 [main] org.apache.catalina.core.StandardServer.await 주소 [localhost]와(과) 포트 [8005]에, 서버 셧다운 소켓을 생성하지 못했습니다. (base 포트 [8005], offset [0]) java.net.BindException: Address already in use: JVM_Bind at java.net.DualStackPlainSocketImpl.bind0(Native Method) at ja..

Troubleshooting 2024.08.08 0