1. 데이터 수집 및 제어 (PLC:Programmable Logic Controller) 보드
(1) 주요기능
- DC 24V / 2A (24W) 전원
- 1602 I2C 디스플레이
- 디지털 입력 : 24V 신호를 입력
- 디지털 출력 : 24V 신호를 출력
- 아날로그 입력 (4-20mA) : 4~20mA 신호를 입력
- 아날로그 입력 (0-10V) : 0-10V 신호를 입력
- 센서 입력 : CT(AC전류 센서) 입력, PT100(온도 센서) 입력
- GPIO 핀 (I2C SDA, SCL / ADC/ DI/ DO)
- 부저 출력
- Ethernet (W5500 SPI 기반)
- MicroSD 카드 (SPI 기반)
- RS485/232 통신
- USB C Type ( 펌웨어 업로드 , 시리얼 디버깅용 )
(2) 개발환경
- 회로도 및 PCB 아트웍 : EasyEDA
- 펌웨어 작업 : Arduino IDE 2.3 & C/C++ 언어 (디바이스 전용 라이브러리 개발)
2. ESP32 USB to UART 펌웨어 업로드 실패 이슈 ( 해결 )
https://machinejw.tistory.com/97
[회로설계] ESP32 데이터수집장치 보드 제작
1. EasyEDA로 설계한 데이터수집장치 디바이스가 도착하였다.2. USB 장치 인식 성공 USB를 PC에 연결하여 정상적으로 CP2102 USB to UART가 인식하는 것을 확인하였다.문제는 펌웨어 업로드시에 부팅모드
machinejw.tistory.com
- 마이크로컨트롤러의 TXD, RXD 신호는 CP2102의 TXD, RXD와 교차되어야한다.
- MCU TXD -> CP2102 RXD
- MCU RXD -> CP2102 TXD
3. 펌웨어 업로드를 위한 풀업(Pull-Up)/풀다운(Pull-Down) 저항 금지
데이터시트 발췌 (번역)
각 스트래핑 핀은 칩 재설정 동안 내부 풀업/풀다운에 연결됩니다. 따라서
스트래핑 핀이 연결되지 않았거나 연결된 외부 회로가 고임피던스인 경우 내부 약한
풀업/풀다운이 스트래핑 핀의 기본 입력 레벨을 결정합니다.
스트래핑 비트 값을 변경하려면 사용자는 외부 풀다운/풀업 저항을 적용하거나 호스트
MCU의 GPIO를 사용하여 ESP32에 전원을 켤 때 이러한 핀의 전압 레벨을 제어할 수 있습니다.
리셋 해제 후 스트래핑 핀은 정상 기능 핀으로 작동합니다.
- IO2에 풀업저항을 설계한 실수가 있었다
- 풀업저항을 제거하여 점퍼하니 정상적으로 부팅모드 (다운로드/SPI)로 진입할 수 있었다.
4. I2C 주소 0x20로 설계하였지만 인식은 0x38?
- 0x20 주소를 인식하지 못하는 하드웨어 이슈사항이 있었다.
(1) I2C 8비트 주소 VS 7비트 주소
- I2C 주소는 보통 7비트 주소로 표현되며, 일부 데이터시트는 **8비트 주소 (R/W 비트 포함)**로 제공된다.
- 데이터 시트 명시에 따르면 A0~ A2가 모두 LOW(GND) 연결시에 8비트 READ 주소가 113 (dec), 71 (hex)이고 8비트 WIRTE 주소가 112 (dec), 70 (hex)라고 명시되어 있다!
(2) 7비트 주소로 변환하자
I2C 주소는 7비트로 표현된다! 즉 데이터시트 상에 8비트 R/W 주소를 7비트로 변환해야한다.
- I2C는 7비트 주소를 사용하므로, 데이터시트의 8비트 주소(0x70, 0x71)를 변환하면 7비트 주소는 0x38이 맞다.
- I2C 장치 주소를 설정할 때 7비트 주소 체계를 사용할지, 8비트 주소 체계를 사용할지 명확히 인지하는 것이 중요하다
'임베디드 프로젝트 > 디바이스 구현' 카테고리의 다른 글
PNP BJT 스위칭 출력 이슈 (0) | 2024.09.05 |
---|---|
전류 CT 센서 인터페이스 모듈 - RMS 취득 펌웨어 (0) | 2024.08.21 |
전류 CT 센서 인터페이스 모듈 - 브링업(Bring Up) (0) | 2024.08.12 |
IoT 데이터수집장치 보드 - USB to UART 회로 이슈 (0) | 2024.07.10 |