본문 바로가기

개발자/Arduino

아두이노를 활용한 스마트 기기 제어 시스템 개발 교육과정 아두이노를 활용한 스마트 기기 제어 시스템 개발 소프트웨어 교육용 디바이스로 많이 알려진 아두이노 플랫폼에서 센서 데이터와 디바이스 제어 방법을 학습합니다. 이를 위해 오픈 소스 하드웨어 소프트웨어 산업에 대해 이해하고, 아두이노 개발환경에 대해 배웁니다. 다양한 센서와 액츄에이터를 연결하여 데이터로 수집하고, 수집한 데이터를 분석하여 액츄에이터를 제어하는 방법을 알아봅니다. 아두이노 시스템을 IoT에 활용하기 위해 통신 시스템을 이해하는 것은 필수적인 일이라 여러가지 무선 통신 방법을 학습합니다. 아래 교육과정을 참고하세요. 구분 시간 교육내용 1일 4시간 오픈 플랫폼 개발 환경 구축 및 디바이스 제어 (오픈 플랫폼 개발 환경 구축) - 아두이노 소개 - 아두이노 플랫폼 - 아두이노 시작하기 - 아두이..
아두이노 INA219 DC 전류 센서 사용하기 아두이노 DC 전류 측정 INA219 전류 센서 사용하기(INA219 High Side DC Current Sensor Breakout - 26V ±3.2A Max -) INA219B 브레이크아웃 보드와 INA219 FeatherWing은 모든 전력 모니터링 문제를 해결합니다. 2개의 멀티미터로 어려움을 겪는 대신 이 브레이크아웃을 사용하여 1% 정밀도로 I2C를 통한 높은 측 전압 및 DC 전류 소모를 모두 측정할 수 있습니다. 왜 하이사이드인가? 당사의 전류 패널 미터와 같은 대부분의 전류 측정 장치는 로우 사이드 측정에만 적합합니다. 즉, 배터리를 사용하지 않으려면 대상 접지와 실제 접지 사이에 측정 저항을 붙여야 합니다. 저항 양단의 전압 강하는 전류 소모에 비례하기 때문에 접지 기준이 전류 변화..
nano 33 iot Serial Port Outputs make unstable WiFi Connection nano 33 iot Serial Port Outputs make unstable WiFi Connection Nano 33 IoT 보드에서 타이머 인터럽트와 함께 Serial Port 출력을 자주 사용하는 것은 wifi 연결을 불안정하게, 그러니까 자주 연결을 끊어지게 만든다. 자세한 원인은 아직 확인중이라서 모르겠는데 테스트를 해보니 확실히 드러난다. 1초 주기마다 카운터를 증가시키는 타이머 인터럽트에서 씨리얼 모니터로 타이머 값을 프린트 하는 코드는 아래와 같다. //Here Start Timer function //this function gets called by the interrupt at Hertz void TC5_Handler (void) { //YOUR CODE HERE time_tic..
Nano 33 IoT WiFi 연결 불안정을 해결하는 코드 Nano 33 IoT WiFi 연결 불안정을 해결하는 코드 어떤 방법을 무엇을 시도하든 WiFiNINA를 사용하여 안정적인 WiFi 연결을 관리할 수 ​​없습니다. 평균 12 시간 동안 Nano는 알 수 없는 이유로 연결이 끊어지고 다시 연결해야 합니다. 평균 30 시간 동안 2 분 안에 재 연결이 불가능하고 Watchdog이 나노를 재설정 한 다음 재 연결이 다시 작동합니다. 내 액세스 포인트는 Fritz Box 7490입니다. 채널을 변경하지 않도록 AP를 구성했습니다.이 경우에도 연결이 끊어지지만 내 액세스 포인트는 정의된 채널에 남아 있습니다. 비교를 위해 두 번째 나노 33을 리피터 FritzRepeater 1200에 연결했습니다. Nano 33은 모두 최신 펌웨어가 설치되어 있으며 "firmw..
Arduino MQTT 사용자 ID와 password로 mqtt 브로커 연결 Arduino MQTT 사용자 ID와 password로 mqtt 브로커 연결 MQTT 사용자 subscriber 등록 후 메시지 송 수신할 때 사용자 id와 password로 인증하는 예제 코드다. 물론 사용하기 전에 다음과 같은 코드는 알고 있다고 가정한다. mqttServer = "******"; mqttPort = 1883; mqttUser = "******"; mqttPassword = "***"; 아래는 pubsubclient 라이브러리를 사용하는 예제 코드다. 마지막 남은 일은 mqtt 서버와 통신하여 정해진 용량만큼 액체를 배출하는 일이다. 어떤 일이든 끝날 때까지는 끝난 게 아니라서 집중한다. 오직 하나만 제대로 한다. 정확히 한 개, 하나, 한 마리만, 한 가지 일만 제대로 한다. 그러면..
미세먼지 측정기 센서와 커넥터 연결 - Harness 미세먼지 측정기 센서와 커넥터 연결 - Harness PCB 조립 후 PCB 위에 여러 센서 커넥터를 센서와 연결한다. 직접 연결하는 방법도 있지만 조립하고 확장할 여지를 남겨두기 위해 모든 연결 센서를 커넥터로 연결하도록 작업한다. 원래 전선 연결 작업은 하네스(Harness)라고 하여 도면, 지그, 전용 장비가 필요하고 전문적인 과정을 거쳐야 하지만 그냥 간단하게 하기로 한다. 여기서 하네스에 대해 잠깐 알아보면 하네스(Harness) 정의 회로나 기기의 상호간을 전기적으로 접속 및 이탈시키는 접속물을 하네스 (Harness), 또는 컨넥터 (Connector)라고 한다. 하네스는 2개소 이상의 회로 사이를 결합 및 이탈을 가능하게 하며 일반적으로 Wire(전선), 단자(Terminal, Contac..
How to prevent SSD1306 allocation failed error 결론은 SSD1306 사용할 때, 특히 복잡한 프로그램 개발 할 경우 아래와 같은 코드에서 말 그대로 "SSD1306 allocation failed" 메시지가 나올 경우 무조건 메모리(SRAM) 문제니까 당황하지 말고 코드를 줄여야 한다. 일단 변수 선언을 줄이고 테스트를 위해 준비한 코드를 지운다. 스트링은 가능한 짧게 줄이거나 없앤다. 그러면 에러는 사라진다. // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64 Serial.println(F("SSD1306 allocation failed"..
미세먼지 측정기 오늘 잘 돌아가는 코드 강력하고 정확한 것 두 가지를 만족시키기는 어렵다. 힘이 들어가면 빗나가거나 정확한 지점에 힘을 집중할 수 없기 때문이다. 무엇보다 힘을 빼야만 정확한 지점에 집중할 수 있다. 가끔은 강력하면서도 정확하게 할 때가 있다. 그런 시간을 넘기 직전에 있는지도 모른다. 하~ 힘들다. #include #include #include #include #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) ..