본문 바로가기

코딩/아두이노47

ESP32 / ESP8266 에서 DS18B20 으로 실시간 온도 웹서버에 출력하는 방법 ESP32 와 ESP8266 에 DS18B20 온도 프로브를 이용해서 실시간으로 온도 값을 웹서버에 출력해보자. 결과를 미리보자면 위의 사진처럼 실시간 온도 값을 웹페이지를 통해서 확인할 수 있다. 회로는 위와같이 구성하면 되는데, 위 회로는 ESP8266 기준으로 되어있다. ESP32 의 경우 자신이 사용하고 싶은 디지털 핀을 사용하면 되겠다. #ifdef ESP32 #include #include #else #include #include #include #include #include #endif #include #include // Data wire is connected to GPIO 4 #define ONE_WIRE_BUS D4 // Setup a oneWire instance to commu.. 2023. 8. 13.
아두이노 ESP8266 에서 DS18B20 방수 온도 센서 프로브 사용방법 ESP8266 에서 아두이노 IDE를 이용하여 DS18B20 방수형 온도 센서 프로브를 사용하는 방법을 알아보자. DS18B20 방수형 온도센서 방수형 온도센서 프로브 안에는 이런 센서가 들어가 있는데 센서 원형을 사용해도 된다. ESP8266 ( 다른 아두이노 보드도 가능 ), 4.7k 저항, DS18B20 센서, 브레드 보드, 점퍼와이어 기생 모드 - 센서라인으로 전원을 끌어와서 센서를 사용 일반 모드 - 전원을 직접 공급해주어 센서를 사용 코드를 업로드 하기전에 ESP8266을 사용하는 경우, 아두이노 IDE( 코드 업로드 프로그램 ) 에서 ESP8266 관련 설정이 되어 있어야 한다. 아두이노 IDE 에서 라이브러리 매니저를 열어서 관련 라이브러리를 설치해주어야 한다. ESP8266 에는 OneW.. 2023. 8. 13.
아두이노 IDE에 ESP32 개발환경 세팅하기 요새 ESP8266 대신에 ESP32 가 대세가 되고 있는 추세인듯하다. 아두이노IDE (아두이노 코딩 프로그램)에서 ESP32 코딩이 가능하다. 그 방법을 정리해서 알려드리고자 한다. 우선 아두이노 IDE를 실행한다. 없다면 설치를 하고 따라오면 된다. https://www.arduino.cc/en/software Software Open-source electronic prototyping platform enabling users to create interactive electronic objects. www.arduino.cc 자신의 운영체제에 맞게 아두이노 IDE를 설치하면 된다. 아두이노 IDE를 실행하고 메뉴바 >> 파일 >> 환경설정 을 차례로 클릭하여 환경설정 창을 띄워준다. 사진에 표.. 2022. 9. 7.
ESP32 wifi 접속을 스마트폰으로 설정하는 방법 wifi manager ESP32 를 사용하는 이유는 보통 IoT 제품을 개발하거나 WIFI로 인터넷 접속이 필요하기 때문이다. 그런데 문제는 개발이 끝난후 미리 설정한 WiFi 정보가 아니면 WiFi 를 접속할 수 없어서 코드를 다시 열고 WiFi 정보를 수정한 뒤에 다시 업로드를 했어야 했다. 이런 방식을 하드코딩 방식이라고 한다. 개발이 쉽지만 사용성이 너무 떨어지는 장단점이 있는 것이다. 이번에 소개할 것은 ESP32 에서 코딩을 따로 수정할 필요 없이 스마트폰으로 ESP32의 wifi 접속 정보를 수정해서 wifi접속을 할 수 있는 기능이다. 필자도 아래의 글을 통해 참고한 내용으로 원문으로 읽어볼 수 있다면 읽어보는 것을 추천한다. https://randomnerdtutorials.com/esp32-wi-fi-man.. 2022. 9. 7.
ESP32 MySQL 데이터베이스에 데이터 등록 조회 하는 방법 예전에는 웹개발자 또는 앱개발자들이 많이 다루던 데이터베이스를 이제는 하드웨어 개발자들도 다룰줄 알아야 하는 시대가 왔다... IoT 시대가 되면서 다양한 상태값을 온라인 상에 저장하고 데이터를 공유하고, 다른 데이터를 조회할 줄 알아야 제품을 개발할 수 있게되었다. 그래서 이번에 다뤄볼 내용은 ESP32 를 이용해서 DB(데이터베이스)에 접근하여 데이터를 등록하거나 조회하는 방법을 다뤄보려 한다. 우선 MySQL 이나 Maria DB를 설치되어 있어야 한다. 이 내용까지 다루려면 너무 길어지니깐, 직접 찾아서 설치하길 바란다. 필자는 MySQL로 진행하겠지만, Maria DB는 MySQL 을 호환하기 때문에 Maria DB로 설치해서 따라해도 된다. Maria DB가 설치하기 더 편하다. MySQL은 .. 2022. 9. 7.
아두이노 바코드 리더기로 바코드 찍는 방법 GM-65 아두이노에서 바코드 리더기 사용하는 방법에 대해서 안내하고자 한다. 그 누구도 제대로 알려주지 않아서 필자가 데이터시트 다 찾아보면서 아두이노에서 바코드를 가장 편하게 읽어 들일 수 있게 하는 방법이니, 해당 모듈을 사용하실 분들에게 도움이 되었으면 좋겠다. 왜 GM-65 인가? 디바이스마트에서 보이는 바코드 리더기 검색을 해보면 특정 업체밖에 검색이 안된다. DYSCAN 업체인데 해당 업체의 데이터시트를 봐도 부족함 투성이다. 무슨 데이터 시트가 12페이지가 전부이고, 내용도 다 허술하기 그지없다. 이런 제품을 아두이노에서 호환된다고 팔고 있는 실정이다... 문제는 인터페이스가 USB가 기본이라서 아두이노와 해당 바코드 리더기만 있다고 해서 사용할 수가 없다. 아두이노에 USB쉴드도 있어야 된다. 컴퓨.. 2022. 9. 7.
waveshare 전자잉크 폰트크기 변경하는 방법 외주 개발 의뢰로 접하게된 waveshare 의 전자잉크 디스플레이... 폰트 사용에 있어서 문제가 있는 것을 확인했다... 기존의 유명한 U8glib 으로 waveshare 의 디스플레이 지원이 공식적으로 되지 않기에 waveshare 에서 제공한 라이브러리로 개발을 진행중에 있다. https://diyver.tistory.com/198 ESP32 에서 waveshare 전자잉크 디스플레이 사용하는 방법 이번에 외주 개발 의뢰를 받았다. waveshare 사의 EPD 즉 전자잉크 디스플레이를 사용한 제품 개발이었어서 처음사용해보는 김에 정리를 해보려 한다. 일단 ESP32 나 ESP8266 이나 아두이노등 대부분의 diyver.tistory.com waveshare EPD(전자잉크 디스플레이) 처음 사.. 2022. 9. 7.
ESP32 에서 waveshare 전자잉크 디스플레이 사용하는 방법 이번에 외주 개발 의뢰를 받았다. waveshare 사의 EPD 즉 전자잉크 디스플레이를 사용한 제품 개발이었어서 처음사용해보는 김에 정리를 해보려 한다. 일단 ESP32 나 ESP8266 이나 아두이노등 대부분의 MCU와 라즈베리파이에서 waveshare의 전자잉크 디스플레이를 사용할 수 있다. 다만 SPI 통신으로 사용해야 하는데, 귀찮기 때문에 waveshare의 전용 커넥터와 통신칩을 이용하는 것이 편하긴 하다. 본 포스팅에서는 ESP32 로의 사용을 다루고 있으며, 전용 커넥터를 이용하여 편하게 개발하는 상황을 담고있다. 사용된 부품 목록 1.54 인치의 전자잉크 디스플레이 E-INK raw display >> 해외 구매로 진행되었다. https://www.waveshare.com/product.. 2022. 9. 7.
아두이노 delay 없이 1초마다 작동하는 코드 아두이노를 사용함에 있어서 고수가 되어 갈 수록 delay() 사용을 지양해야 한다. 이번에는 delay() 함수 없이 1초마다 실행하는 코드를 올려본다. 아래 코드를 복붙해서 아두이노 코딩에 쓰면 되고, loop() 함수 안에 조건문 안쪽에다 1초 마다 실행시킬 명령을 넣으면 된다. unsigned long pre_timer = 0; int repeat_time = 1000; void setup() { } void loop() { if(millis() > pre_timer + repeat_time) { pre_timer = millis(); //1초마다 실행되는 명령 } } unsigned long 타입으로 타이머를 기록하므로 적어도 30일 동안 아두이노가 켜져있어도 정상 작동하게 된다. 하지만 너무 .. 2022. 7. 18.
LOLIN D32 코드 업로드 오류(fatal error) 뜰 때, 해결 방법 이번에 LOLIN D32 보드를 구입하여 사용하던 도중 코드는 정상적으로 컴파일이 되었는데, 업로드가 되지 않는 현상이 계속 발생했다. "A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header" fatal error (치명적 오류) 발생한다고 아두이노IDE 에서는 말해주고 있다. 보드와 연결이 계속 안 되는지 connecting ... ___ ... ___ 만 반복하다가 오류가 뜨는 경우이다. 새 제품인데 보드 문제는 아니겠지 싶어서 여러가지 방법을 사용하던 중에 코드 업로드 하는 방법을 발견했다. 코드 업로드 할 때, GPIO 0번 핀을 GND 에 연결 시키면 코드가 정상적으로 업로드가 된다. 중요한게.. 2022. 6. 9.
ESP8266 외부인터럽트 에러 해결 방법 이번에 Wemos D1 mini 를 이용하여 프로젝트를 하나 진행 중에 외부 인터럽트를 사용하려고 시도하던 중 에러가 발생했다. 시리얼 모니터를 확인하니 이런 에러코드만 뜨면서 계속 재부팅이 되었다. 처음에는 뭐가 잘 못 되었는지 이해가 되질 않았다. Wemos D1 mini는 모든 GPIO를 외부 인터럽트로 사용할 수 있기 때문이다.(GPIO16 제외) 그래서 우연히 검색하던 중 한 블로그를 접하게 되었다. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mkhee77&logNo=221463453343 ESP8266 External Interrupt(외부인터럽트) - 2020.11.05 에러발생관련 내용추가 - 새로 Wemos D.. 2022. 5. 30.
아두이노 wifi보드, Wemos D1 mini 스펙과 핀맵 아두이노를 사용한 프로젝트에서 최근 Wifi를 이용하는 경우가 많아지고 있다. 각종 졸업작품이나 과제, 제작대회에서 IoT 제품을 출품하기 때문이다. IoT 제품을 개발함에 있어서 기존에는 아두이노에 wifi 모듈을 구매하여 추가해주었다면, 최근에는 통합형 보드로 쉽게 개발하는 추세이다. ESP8266 과 ESP32 무선통신 모듈을 이용하는데, 그 중 대중적인 ESP8266을 사용하는 보드 중 가장 작은 사이즈를 자랑하는 Wemos D1 mini 에 대해서 다뤄보고자 한다. 글 쓰고 있는 시점 2022-05-26 의 Wemos D1 mini 최신버전은 아래와 같다. USB가 C 타입으로 나오고 리셋 버튼이 존재하며 I2C 커넥터가 별도로 존재한다. 위의 버전이 4.0.0 이다. 아래 버전들도 핀맵은 같고.. 2022. 5. 26.
아두이노 네오픽셀로 LED 색 조절하는 방법 - 아두이노를 통해 네오픽셀 LED의 색을 원하는 대로 조절해보자. - 아두이노, 네오픽셀, 점퍼선 네오픽셀 관련 라이브러리를 설치해야한다. 아두이도IDE >> 스케치 >> 라이브러리 >> 라이브러리 매니저 순서로 라이브러리 매니저를 실행시킨 후, NeoPixel 을 검색해준다. 이때 대소문자 구별을 정확히 해야한다. 여기서 Adafruit NeoPixel 을 설치해준다. D2(디지털 핀 2번) 과 GND. 5V를 네오픽셀에 연결해주면 된다. // NeoPixel test program showing use of the WHITE channel for RGBW // pixels only (won't look correct on regular RGB NeoPixel strips). #include #ifd.. 2021. 10. 14.
아두이노와 블루투스모듈 ZS-040로 스마트폰과 통신하기 - 아두이노와 스마트폰간의 통신을 하려면 블루투스 모듈을 사용해야 한다. 이번 시간에는 ZS-040 블루투스 모듈을 사용하여 아두이노에서 스마트폰으로 신호를 보내고, 수신하는 방법을 알아보자. - 아두이노, 점퍼케이블, 블루투스모듈(ZS-040, HC-06) ZS-040 은 HC-06과 사용법이 같다. 블루투스 모듈의 TX 는 아두이노의 2번핀 RX 는 아두이노의 3번핀에 연결을 해준다. #include int ledPin1 = 13; char order[100]; bool led_state = 0; SoftwareSerial BTSerial(2,3); //bluetooth module Tx:Digital 2 Rx:Digital 3 void setup() { pinMode(13, OUTPUT); digi.. 2021. 4. 30.
아두이노 PIR 센서로 사람감지하기 - 사람을 감지하는 프로젝트에서 빠지지 않는 PIR 센서의 사용법을 다뤄보도록 한다. - 아두이노(우노, 나노, 메가), PIR센서 const int led_pin = 13; const int pir_pin = 3; int state = 0; // 센서 상태 값 저장 변수(0: LOW, 1: HIGH) int pre_state = 0; int count = 0; void setup(void){ Serial.begin(9600); Serial.println(""); pinMode(led_pin, OUTPUT); pinMode(pir_pin, INPUT); delay(10); Serial.println(); } void loop(){ state = digitalRead(pir_pin); digitalWrit.. 2021. 4. 15.