[embedded/IoT] - Arduino MKR 1310 사용해보기 (with TTN)
MKR 1310 보드로 TTN에 온습도를 보내는거 까진 좋았는데
언제까지 USB에 연결해서 쓸 수는 없으니
배터리로 전원을 바꿔보기로 했습니다
Pinmap 을 보면 Li-Po 3.7v 배터리 연결할 수 있네요
일단 MKR 보드는 JST 플러그를 이용해서 배터리연결이 가능합니다
저는 가지고 있던 배터리 커넥터가 안맞아서 JST 플러그 주문해서 바꿔줬습니다
https://a.aliexpress.com/_mKAttM2
하지만... 연결만 하면 되는게 아닌지
LED가 안켜지고, 테스터기로 찍어봐도 5v연결이 안되는건지
보드에 전원이 안들어가서
고생좀 했습니다;;;
배터리를 연결하려면 PMIC(Power Management IC) 소스를 추가해야하나봐요
라이브러리 관리에서 BQ24195 로 검색하거나 PMIC 로 검색해서
관련 라이브러리를 추가해 줍니다
https://zelkun.tistory.com/entry/012-Arduino-아두이노-library-라이브러리-추가하기
라이브러리를 설치하고
예제를 보드에 업로드해서 테스트를 해줍니다
4개의 예제가 있는데요
저는 첫번째 BatteryCharger 로 했습니다
#include <Arduino_PMIC.h>
void setup() {
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
if (!PMIC.begin()) {
Serial.println("Failed to initialize PMIC!");
while (1);
}
// Set the input current limit to 2 A and the overload input voltage to 3.88 V
if (!PMIC.setInputCurrentLimit(2.0)) {
Serial.println("Error in set input current limit");
}
if (!PMIC.setInputVoltageLimit(3.88)) {
Serial.println("Error in set input voltage limit");
}
// set the minimum voltage used to feeding the module embed on Board
if (!PMIC.setMinimumSystemVoltage(3.5)) {
Serial.println("Error in set minimum system volage");
}
// Set the desired charge voltage to 4.11 V
if (!PMIC.setChargeVoltage(4.2)) {
Serial.println("Error in set charge volage");
}
// Set the charge current to 375 mA
// the charge current should be defined as maximum at (C for hour)/2h
// to avoid battery explosion (for example for a 750 mAh battery set to 0.375 A)
if (!PMIC.setChargeCurrent(0.375)) {
Serial.println("Error in set charge current");
}
Serial.println("Initialization done!");
}
void loop() {
// Enable the Charger
if (!PMIC.enableCharge()) {
Serial.println("Error enabling Charge mode");
}
// canRunOnBattery() returns true if the battery voltage is < the minimum
// systems voltage
if (PMIC.canRunOnBattery()) {
// loop until charge is done
while (PMIC.chargeStatus() != CHARGE_TERMINATION_DONE) {
delay(1000);
}
// Disable the charger and loop forever
Serial.println("Disable Charge mode");
if (!PMIC.disableCharge()) {
Serial.println("Error disabling Charge mode");
}
while (1);
// if you really want to detach the battery call
// PMIC.disableBATFET();
//isbatteryconnected = false;
}
delay(100);
}
예제코드를 보면 상황에 따른 로그출력
충전중, 충전후 좀 세부적으로 나뉘어 있네요
주의할게 있다면.. 저 소스를 그냥 올리면 while 문에 빠져서
보드가 동작을 안합니다...
아래코드를 주석처리 하거나, 벗어날 수 있도록 수정해야 합니다
// Loop 안의 while
while (1);
// 충전상태
while (PMIC.chargeStatus() != CHARGE_TERMINATION_DONE)
while(1); 문은 무조건 대기이기 때문에
저는 주석처리 했습니다
아래 충전상태는 배터리 사용일때 확인하는 로직으로
필요시 충전여부에 따라 다른 로직을 넣으면 됩니다
저는 저부분도 주석처리로 넘어갔습니다
#include <Arduino_PMIC.h>
void setup() {
PMIC.begin();
}
void loop() {
}
생각해보니 loop에서는 충전상태여부로 나뉘는것 같으니
setup에 PMIC.begin(); 만 사용해도 배터리 연결은 될것 같네요
배터리 연결하고 반응이 없어서 고생한걸 생각하면
심플하게 끝
1. https://docs.arduino.cc/hardware/mkr-wan-1310
2. https://github.com/arduino-libraries/Arduino_BQ24195
3. https://docs.arduino.cc/tutorials/mkr-wifi-1010/powering-with-batteries
Arduino MKR 1310 저전력 사용해보기 (Using low power on Arduino MKR 1310 with ArduinoLowPower.h) (0) | 2023.02.01 |
---|---|
Arduino MKR 1310 사용해보기 (with TTN) (0) | 2022.06.26 |
LoRa)The Things Network Gateway 추가 (0) | 2020.03.02 |
LoRa)Dragino MCU Update Single_pkt_fwd_v004.hex (0) | 2020.03.02 |
LoRa)Dragino LG-01 ROUTER firmware Update(4.3.7) (0) | 2020.03.02 |
댓글 영역