RIOT (Realtime Internet of Things) 프레임 워크로 간단한 데이터 로거 생성

Testing a Custom IoT Framework by Controlling an LED: RIOT (RealTime Internet of Things) (12 월 2018).

Anonim

RIOT (Realtime Internet of Things) 프레임 워크로 간단한 데이터 로거 생성


RIOT, Realtime Internet of Things는 마이크로 컨트롤러가있는 ESP8266을 쉽게 사용할 수 있도록 설계된 프레임 워크입니다. 이 프로젝트에서 우리는 PC 서버 어플리케이션의 그래프에 빛의 레벨을 플로팅하는 데이터 로거를 작성하여 RIOT의 단순성을 보여줍니다.

소개

마지막 RIOT 프로젝트에서는 Windows PC에 간단한 RIOT 서버를 만드는 방법과 서버에서 LED를 켜고 끌 수있는 간단한 RIOT 클라이언트를 만드는 방법을 배웠습니다. 이 프로젝트에서 우리는 RIOT이 잠재적으로 UART 포트가있는 모든 시스템이 인터넷 가능 장치로 전환 될 수 있음을 알 수있었습니다.

이 프로젝트에서는 클라이언트가 LDR / 저항 분배기에서 전압 판독 값을 취한 다음이 데이터를 서버 (VB.net으로 작성)에서 찾을 수있는 그래프로 그려주는 클라이언트 - 서버 통신을 살펴볼 것입니다. 코드 및 설계도 설정의 일부가 재활용 될 것이지만 설명이 거의 없기 때문에이 프로젝트를 시도하기 전에 이전 프로젝트를 진행하는 것이 좋습니다.

참고 : RIOT은 이제 RIOTOUS라고 불리며 //www.riotousframework.com에서 찾을 수 있습니다.

컴파일을위한 사전 요구 사항 및 소프트웨어

RIOT이 클라이언트 측에서 올바르게 작동하려면 특정 AT 및 SDK 버전을 사용해야합니다. AT 버전은 1.1.0.0이어야하며 SDK 버전은 1.5.4이어야합니다. 이전 버전에는 연결을 닫을 때 버그가 있으며 이후 버전에는 코드가 없거나 버그가 있습니다. RIOT 클라이언트 측 프레임 워크의 요구 사항을 확인하려면 여기를 클릭하십시오.

프로젝트를 컴파일하려면 다음이 필요합니다.

  • 마이크로 칩 IDE 8.92
  • 마이크로 칩 C18 컴파일러
  • Visual Studio Express 2012

RIOT이 무엇인지에 대한 자세한 설명은이 시리즈의 이전 프로젝트를 읽으십시오.

개요

이 프로젝트에서는 3.3V 마이크로 컨트롤러 인 PIC18F25K20 (PDF)에있는 ADC 모듈을 활용해야한다. ESP8266 자체가 3.3V 디바이스이기 때문에 3.3V 디바이스가 사용되므로 로직 레벨 변환기를 포함 할 필요가 없다.

레귤레이터 근처의 3.3V 라인 (C5)에는 여분의 커패시터가 포함되어있어 전원 라인의 고주파 노이즈 제거에 도움을줍니다.

프로젝트의 설계도. 확대하려면 클릭하십시오.

클라이언트 측 코드

클라이언트 쪽 코드의 첫 번째 작업은 온보드 ADC 주변 장치를 올바르게 설정하는 것입니다. 우리의 아날로그 판독 값은 RA0에서 찾을 수 있으므로 다음 코드를 사용하여 해당 핀을 아날로그 입력으로 작동시키고 ADC를 켜고 ADC를 구성합니다. 또한 아래의 설정 코드는 최대 속도 (16MHz) 및 x4 PLL을위한 내부 오실레이터를 구성합니다. 이 코드는 setup.h에 있습니다.

클라이언트 컨트롤러에 필요한 다음 코드는 ISR을 생성하고, UART 모듈을 구성하며, UART를 통해 데이터를 보내는 방법을 알려주는 RIOT의 구성입니다. 이 코드 (RIOT에게 UART 모듈을 사용하는 방법을 알려주는 코드)는 사용자가 코딩하여 IoT_ClientFramework.c에 삽입됩니다.

이 ISR 코드는 RIOT에게 새로운 바이트가 수신되었음을 알리고 RIOT 프레임 워크에서 상태 시스템을 업데이트합니다.

클라이언트가 구성된 상태에서 장치 출력을 설정하고, RIOT를 초기화하고, Wi-Fi 네트워크에 연결 한 다음 RIOT 서버에 연결할 시간입니다.

이제 데이터 로깅을 시작할 때입니다! 우리 고객은 RA0의 판독 값을 매주 (비록 원할 경우 변경할 수 있지만, 초당 몇 번 읽음) RIOT 서버로 전송합니다. 타이밍은 타이머 모듈 주변 장치 중 하나를 사용하는 것이 더 나을 것입니다. 그러나이 예제에서는 간단한 지연 루프를 사용합니다. RIOT는 메인 실행 코드보다 우선 순위가 높은 UART 수신 인터럽트를 사용하여 업데이트되기 때문에 여기에서 지연 루프를 사용할 수 있습니다.

지연이 완료되면 ADCON0 레지스터에 GO 비트를 설정하여 아날로그 - 디지털 변환을 시작합니다. ADC 모듈은 읽기가 완료되면 GO 비트를 지우므로 ADC 결과가 준비 될 때까지 (ADCON0bits.GO)가 무한 루프됩니다. ADC 결과가 준비되면 결과의 상위 8 비트를 dataBuff 배열 (크기 1)로 전송 한 다음 해당 단일 바이트를 Google 서버로 보냅니다. 배열에 대한 포인터를 사용하여 RIOT 프레임 워크로 데이터가 보내지기 때문에 크기 1의 배열이 사용됩니다 (배열의 바이트 스트림이 전송 될 수 있습니다).

다음은 PIC18F25K20의 구성 값입니다 (부적절한 하드웨어 구성은 마이크로 컨트롤러 프로젝트의 일반적인 문제 원인입니다).

서버 측 코드

클라이언트 측 코드에서와 마찬가지로 이전 프로젝트의 코드 대부분 (특히 응용 프로그램의 레이아웃, 서버 구성 및 클라이언트의 새 데이터를 확인하고 어떤 클라이언트가 있는지 확인하는 데 사용되는 티커)를 재활용합니다. 여전히 연결됨). 이 응용 프로그램과 이전 프로젝트 응용 프로그램의 차이점은 LED 명령 단추와 차트 개체를 제거하는 것입니다.

하지만 우선, VB : VB.net (Visual Studio 2012 IDE와 함께) 에 대한 간단한 참고 사항은 제가 지금까지 사용해 본 가장 실용적인 언어 중 하나 여야합니다. 자연스러운 프로그래머가 아닌이 프로젝트를 만들기 전에 필자는 그래픽 기능이있는 GUI 응용 프로그램을 만드는 방법에 대해 우려했습니다. 결국 VB.net에는 작업에 절대적으로 적합한 차트 개체가 포함되어 있습니다. 두 줄 또는 세 줄의 설치 코드가있는 기본 양식으로 끌어서 놓기 만하면 C 또는 C ++와 같은 언어에서 더 어려울 수있는 차트 작성 기능을 얻을 수 있습니다 (단, 이 편의성은 .NET 프레임 워크 자체 일 수 있습니다 시각적 인 C #으로 언어를 Visual Studio에서 사용할 때도 우수한 언어 임).

먼저 도구 상자> 데이터> 차트로 이동하여 차트에 양식을 추가하십시오. 여기에서 차트 영역의 크기를 조정하고 색 구성표 등을 변경할 수 있습니다.

VB.net의 객체에 대한 멋진 점 중 하나는 설정 파일에서 자동으로 초기화하고 구성한다는 것입니다. 대신, 우리는 그 영역을 지우고, 새로운 일련의 데이터를 생성 한 다음 원시 데이터를 그려내는 것에 대해 걱정할 필요가 있습니다. 우리가 앞서 가서 차트 객체를 조작하기 전에 RIOT 서버 클래스를 구성해야합니다. RIOT의 향후 버전에서는 RIOT의 모든 구성을 기능을 사용하여 수행 할 수 있지만 지금은 VB 파일을 편집하여 구성합니다. 사용자가 컴퓨터의 로컬 IP 주소를 입력해야하는 Server.vb에서 한 줄만 편집하면됩니다 (줄 114). 어떤 이유로 localhost를 사용하여이 작업을 수행 할 수 없었습니다.

차트 개체로 돌아가서 그래프를 지우고 새 데이터 시리즈를 만드는 것은 다소 쉽습니다. 이 작업은 서버 시작 버튼을 누를 때 수행됩니다.

이제 그래프가 데이터를 플롯 할 준비가되었으며 서버가 초기화되었으므로 클라이언트에서 들어오는 데이터를 가져와 데이터 사용 가능 플래그를 지우고 차트에 데이터를 플롯해야합니다.

빠른 참고 사항 : 아래의 비주얼 스튜디오 응용 프로그램과 비디오는 "loggedLight"라는 레이블이 붙은 그래프를 보여줍니다. 여기서 실제로 데이터는 "loggedDarkeness"를 나타냅니다. 이는 전위차계 구성에 기인하며 256 (최대)에서 기록 된 판독 값을 빼서 쉽게 수정할 수 있습니다. 이것은 기록 된 암흑 대신에 기록 된 빛을 줄 것입니다.

BOM

부품

회로도 참조

수량

PIC18F25K20

IC1

1

AMS1117 3.3V 레귤레이터

IC2

1

ESP8266 ESP-01

ESP8266

1

1 kΩ 저항기

R3, R4

2

5.6 kΩ 저항기

R2

1

10 kΩ 저항기

R5

1

LDR

R1

1

LED

D1, D2

2

100 nF 커패시터

C1, C2, C4, C5

4

22 μF 커패시터

C3

1

프로젝트 실행하기

이전 프로젝트에서와 같이 브레드 보드에 회로를 구성합니다. AMS1117이 브레드 보드에 매우 비우호적 인 IC 패키지에 있음을 알 수 있습니다. 이것은 큰 탭을 잘라낸 다음 장치를 스트립 보드에 납땜하면 쉽게 해결할 수 있습니다. 거기에서 3 핀 스트레이트 헤더를 연결하여 TO-220과 유사한 패키지를 만들 수 있습니다.

비우호적 인 패키지를 브레드 보드에 친숙한 버전으로 변환!

MPLAB 프로젝트를 컴파일하고 PIC를 프로그램하고 (바람직하게는 Release 모드에서) VB.net 프로그램을 실행하십시오. 모든 것이 잘 진행되면 "서버 시작"을 클릭 할 때 서버 응용 프로그램이 중단되어서는 안되며 전원이 공급되는 즉시 클라이언트가 시작되어야합니다. 결국 클라이언트는 먼저 선택한 Wi-Fi 네트워크에 연결 한 다음 표시기 LED를 켜고 RIOT 서버에 연결해야합니다. 클라이언트가 연결되자 마자 서버의 그래프가 LDR의 수치로 채워지는 것을보아야합니다.

RIOT 데이터 로거 코드

실행중인 프로젝트 비디오

개요

이 프로젝트는 몇 가지 간단한 부품으로 데이터 로거를 작성하고 대부분의 가정용 컴퓨터에서 사용할 수있는 무료 소프트웨어 패키지를 만드는 데 약간의 노력이 필요한지를 보여줍니다. 이 프로젝트는 다양한 유형의 센서 (온도, 습도 등)와 함께 사용하기 위해 쉽게 확장 할 수 있습니다. 또한 데이터를 플롯하는 것만으로 제한되지 않습니다. 당신은 또한 이후의 분석을 위해 그것을 파일에 저장할 수 있습니다.

다음 RIOT 프로젝트에서는 클라이언트가 RIOT 서버를 통해 다른 클라이언트에게 메시지를 보내는 장치 간 통신을 살펴볼 것입니다.

이 프로젝트에 직접 참여하십시오! BOM 가져 오기.