오늘은 ThingPost 작업예제 8가지를 실습하였습니다.
작업중 중요한 사항만 기록합니다(아래)
esp32 Functional 다이어그램(아래)
1.BH1750test_ThingPost(I2C_시리얼데이터 25핀, I2C_시리얼 통신포트26번핀 사용)
- IIC 통신 초기화 코드: Wire.begin(I2C_SDA, I2C_SCL);
- 전원Vcc digitalWrite(GPIO4번핀,1): 조도센서, 온도/습도센서, 습기센서, 염도센서, 배터리잔량감지회로
2.BH1750test2_ThingPost
- RAW데이터를 노이즈제거 후 신뢰성 있는 데이터로 만들기코드(아래)
- 노이즈 제거 샘플링 코드[아래 함수 인자값: sort(배열시작위치, 배열의크기) ]
//1초 안에 2밀리세컨드씩 samples배열크기만큼 값 구하기
for(int i=0; i<samples; i++) {
array[i] = lightMeter.readLightLevel();
delay(2);
}
//c언어의 표준라이브러리의 sort 함수로 샘플데이터정렬
std::sort(array, array + samples);
//샘플데이터에서 Max값, Min값제거 후 합계저장
for(int i=0; i<samples; i++) {
if (i == 0 || i == samples-1)
continue;
lux += array[i];
}
- 신뢰성 있는 대표 데이터 만들기(아래)
-- lux /= samples - 2;
3.DHT12test_ThingPost
- 아날로그 데이터를 읽어 들일때, 샘플링데이터에 추가되는 코드(아래)
for (int i = 0; i < samples; i++) {
while (1) {
float _t12 = 0.0;
_t12 = dht12.readTemperature();
//아날로드 데이터 누락시 추가되는 코드(아래)
if (!isnan(_t12)) {
array[i] = _t12;
break;
}
delay(100);
}
delay(2);
}
4.SoilMoistureTest_ThingPost + 5.SoilSaltTest_ThingPost
- 토양습기 데이터를 백분율로 만들기(아래)
#define PERVALUE 0.0244141 // 100/4096
...
mapsoil = map(soil, 0, 4095, 4095, 0);
per_soil = mapsoil * PERVALUE;
6.BattADCtest_ThingPost
- 배터리잔량감지는 최고값이 3.3V 이기 때문에, 현재 작동 전압인 3.7V 를 체크할 수 없다, 그래서 회로자체가 병렬로 검사한 결과로 나오기 때문에, 결과값에 x2 를 해 주어야 한다.
- float battery_voltage = ((float)volt / 4095.0) * 2.0 * 3.3 * (vref);
7.deepSleep
- esp_deep_sleep_start(); 딥슬립 절전 실행 후 정해진 시간이 지나면 setup() 이 자동으로 실행된다.
8.watchDogTimer 구현순서
- esp_task_wdt_init(3, true); //워치독 시작기능을 3초로 초기화
- esp_task_wdt_add(NULL); //현재 프로세스 스레드를 워치독에 등록
- if (millis() - last >= 2000 && i < 5) { //매번2초 지나고, 5번반복 이전일때만 esp_task_wdt_reset(); 실행
- esp_task_wdt_reset(); 실행하면, 2초를 넘지 않게 됨.
- if (i == 5) { //5번 반복되면, esp_task_wdt_reset(); 을 건너띄기 때문에, 워치독 타임이 리셋되지 않아서 프로세스 리셋됨, 즉, setup() 부터 다시 시작.
- 작업중인 모습(아래)
#다음 시간에는 클라우드 thingspeak 채널로 데이터 연동해서 그래프로 출력하기 실습예정
- https://thingspeak.com/channels/1469792
IoT 정보를 머신러닝으로 데이터 분석_안드로이드앱제작 (0) | 2021.11.19 |
---|---|
IoT 정보를 머신러닝으로 데이터 분석_클라우드와연동 (0) | 2021.11.18 |
IoT 정보를 머신러닝으로 데이터 분석_IoT보드사용이해 (0) | 2021.11.11 |
IoT 정보를 머신러닝으로 데이터 분석_사전지식확인 (0) | 2021.11.04 |
AI 활용(텐서플로라이트를 활용한 안드로이드앱) (0) | 2021.10.24 |
댓글 영역