참고한 article은 다음과 같습니다.

https://www.instructables.com/Develop-ESP32-With-PlatformIO-IDE/

 

Develop ESP32 With PlatformIO IDE

Develop ESP32 With PlatformIO IDE: This instructables show how to use PlatformIO IDE develop with ESP32 board.

www.instructables.com

위 문서에는 Arduino와 Platform IO에 대해 다음 항목들에 대한 장단점도 정리되어 있습니다.

  • Version Upgrade
  • Add platform support
  • Add library
  • Platform and Library Update
  • IDE feature

다음과 같은 순서로 Platform IO를 설치합니다.

 

1. VSCode(https://code.visualstudio.com/download)를 먼저 설치해야 합니다.

Platform IO는 VSCode에서 extension으로 설치할 수 있기 때문입니다.

 

2. VSCode를 실행하고, Extension을 선택합니다.

3. Extension 중 Platform IO를 설치합니다.

 

4. Platform IO가 정상적으로 설치되면, extension 밑에 Platform IO 아이콘이 나타납니다. 이를 눌러서 Platform IO를 실행합니다.

 

5. PIO 홈에서 Open을 클릭합니다.

 

6. PIO Home에서 Platform -> Embedded -> Espressif을 선택합니다.

   하위 항목에 다양한 Espressif Platform이 나타납니다.

 

7. 이중에서, Espressif 32를 Install합니다. 지금까지 기본적인 설정은 완료되었습니다.

8. 새로운 프로젝트를 시작하기 위해서, PlatformIO Home으로 이동해서 "New project"를 클릭합니다.

 

9. Project wizard에서 적절한 항목들을 선택합니다.

   ESP32 CAM 동작을 위해서 아래와 같은 항목들을 선택해서 Project를 시작했습니다.

 

10. 위 그림에서 Finish를 클릭하면, Platform IO가 프로젝트에 필요한 환경을 자동으로 설정합니다. (시간이 조금 걸릴 수 있습니다.)

 

11. 코드를 작성합니다.

 

12. 코드 작성 후 필요한 컴파일, 업로드, 모니터등은 메뉴에서 선택해도 되지만, 맨 아래 아이콘을 직접 클릭해도 됩니다.

코드의 기본적인 구조는 Arduino와 같다고 보시면 됩니다.

 

- End -

반응형

'Embedded > MCU' 카테고리의 다른 글

[MCU] ESP32 CAM 사용하기 - (2) Arduino 개발 환경  (0) 2021.08.09
[MCU] ESP32 CAM 사용하기 - (1) 서론  (0) 2021.08.08

ESP32 CAM을 위한 Arduino 개발 환경의 셋업을 정리해 놓은 문서는 많습니다.

아래에 참고한 문서들의 링크와 간단한 comment를 달아 두었으니, 참고해 주십시오.

"남보공방"님의 글만 참고하셔도 충분해 보입니다.

 

일단 아래 링크를 참고해서, ESP32 보드 매니저를 설치합니다.

https://makernambo.com/78

 

ESP32 개발환경 설치

아두이노 IDE에서 ESP32관련 개발을 하려면 다음과 같이 ESP32 보드메니저를 추가해 주어야 한다. 1. 아두이노 IDE 업그레이드 1.6.x대의 아두이노 IDE 버전은 최신 버전의 ESP개발환경을 설치하는 과

makernambo.com

Assets를 누르기 전
Assets를 눌러서 확장한 경우

맨 마지막 "보드 선택" 순서부터는 아래 링크를 따라하면 됩니다.

https://makernambo.com/109

 

ESP32-CAM 소개와 사용방법

1. ESP32-CAM소개 ESP32-CAM 모듈은 ESPressif Systems라는 회사에서 개발하여 인기를 얻고 있는 ESP32 기본 모듈에 아예 카메라까지 내장하여 싸고 편리하게 활용할 수 있도록 판매되는 제품이다. 즉 아두이

makernambo.com

 

  • FTDI 컨버터를 사용해도 되며, 아두이노에 직접 연결해도 동일합니다. 아두이노에 연결하는 경우, 프로그래밍을 수행하면 아두이노가 아니라 ESP32 CAM 보드를 프로그래밍하게 됩니다. 즉, PC 입장에서 아두이노는  단순히 USB to Serial 역할만 수행하게 됩니다. 따라서 FTDI 컨버터를 사용하건, 아두이노를 사용하여 연결하건 프로그래밍을 위해서는 GPIO0를 GND와 연결해서 프로그래밍 모드로 변경해 주어야 합니다. 프로그래밍이 완료되면 GPIO0를 Float한 후 동작을 확인하면 됩니다.
  • Serial 모니터링시 프로그램 설정에서 Carriage-Return 설정을 변경해 주어야 다음 라인이 정상적으로 시작부터 표시됩니다.
  • Linux에서 Minicom을 사용하는 경우라면 Ctrl+A, Z를 누른 후 Carriage-Return 설정을 변경해 주면 됩니다. 스트리밍 서버 접속 후 기본적으로는 화면이 나오지 않으며, 맨 아래에 "Start Stream"이나 "Get Still"을 눌러와 카메라의 화면을 확인할 수 있습니다.

자세한 사항은 위 링크를 참고하여 주십시오.

 

- End -

반응형

   저는 따로 시장을 전망하는 사람도 아니며, 다양한 article을 읽지도 않았고, 해당 분야의 사람들과 소통을 많이 하지도 않습니다. 따라서 아래글에는 오류가 상당할 수 있으며, 단순히 한 개인의 생각임을 먼저 말씀드립니다.

 

  MCU나 CPU(이하 MCU로 통일하여 명명)는 ARM등의 Core와 다양한 Peripheral들로 구성됩니다. 각각의 Peripheral들은 하나의 Chipset으로 구현되어 판매될 정도이니, MCU는 그 자체로 매우 큰 'SYSTEM'이라 할 수 있습니다. 이에 저는 MCU의 모든 기능을 파악한 후에 개발하기 보다는, 기본 예제를 기반으로 그때 그때 필요한 기능들을 찾아서 개발하고 있습니다. MCU를 전체적으로 이해하는 몇 안되는 천재들은 당연히 존재하겠습니다만, 대부분의 개발자는 저와 비슷하리라 생각합니다.

 

  이렇듯 MCU의 모든 기능을 파악하지 않고도 개발이 가능한 이유는, MCU 제공 회사들이 다양한 예제 혹은 SDK를 같이 배포하고, Community를 제공하며, MCU 사용자들이 github등에 자신의 결과물을 배포하기 때문입니다. 다만, MCU 사용자들이 제공하는 기능은, 개별적으로 제공되다 보니 각각의 기능을 직접 찾아야 할 수는 있겠습니다.

 

  Espressif사가 제공하는 ESP32는 WiFi를 제공하는 값싼 전용 MCU로, 다양한 분야에 사용 가능한 범용 MCU라고 생각하지는 않았습니다. 그런데, 시간이 지날수록 다양한 예제들이 나오고 LCD 이후 Camera까지 제공되기에 이르렀습니다. 특히나 Linux가 아닌 small embedded OS(예를 들면 freeRTOS)에서 powerful한 network 예제를 제공하는 것은 매우 큰 장점입니다. 최근에는 Multi core도 제공합니다. Espressif는 이미 WiFi 시장을 석권하였고, 이제는 범용 MCU로서 low end 범용 MCU 시장까지도 진입 하려는 것으로 보입니다.

 

  다만, 다른 Major MCU 회사들과 달리, Espressif의 향후 MCU line up을 확인하기는 어렸습니다. 물론 MCU line up이 인터넷에 그냥 open하는 정보가 아니기는 합니다. 대개 새로운 line up은 core의 진화에 의한 것이 많은데, 사용자가 많은 ARM과 달리 Espressif가 사용하는 Xtensa Core는 매우 특화된 시장을 가지고 있으며, 상대적으로 진화 속도는 느릴 것으로 생각됩니다. 이에 Core의 진화보다는 periperal의 보강으로 line up을 가져가려는 것으로 보입니다. 사실 이 방법이 보다 현명할 것 같습니다. ESP32의 개발 환경은 IDF이며, 이는 IoT Development Framework의 약자입니다. WiFi 이후 IoT 시장을 지향하는 것이 Espressif의 방향이라면 Core의 Operating clock이나 불필요하게 여러가지의 Periperal을 추가하기 보다는, IoT에 필요한 Periperal들을 추가하면서 점점 mid/high end 시장으로의 확대를 방향성으로 가져가는 것은 현명해 보입니다. (개인 뇌피셜입니다.)

 

  ESP32의 개발 환경으로 Arduino이 있습니다. ESP32가 Arduino 환경을 지원하기에 Arduino open hardware처럼 open hardware를 지향하려나 생각했습니다만, Arduino는 그 자체로 훌륭한 개발 환경입니다. 처음에는 예제로 초보자들이 따라하기 쉬우라고 제공하는 단순한 프로그램이라고 생각했습니다. 그런데, ESP32 CAM 예제를 실행하다 보니, 다양한 라이브러리와 Core들을 제공하는 어엿한 개발환경이더군요. Arduino 이외에 ESP32는 PlatformIO도 개발 환경으로 지원하고 있습니다.

 

  ESP32 관련해서는 이미 많은 내용이 인터넷상에 있기는 합니다만, 이후에는 hardware 보다는 software (or firmware) 위주로, ESP32 CAM과 관련하여 좀더 읽기 편하게 정리해 보려고 합니다.

 

- End -

 

반응형

Video Title : Embedded Programming Lesson12- structures and CMSIS

Source : https://www.youtube.com/watch?v=A0r3O2TxtiU


30분경부터의 내용은 기존 프로젝트를 CMSIS 형식으로 변경하는 내용이 나온다.


방법은 다음과 같다.


1. 기존 헤더 파일(lm4f120h5qr.h)을 삭제

2. CMSIS header 파일(tm4c_cmsis.h)을 include. 해당 파일은 cmsis_m4.h를 include하고 있음

3. 기존의 Direct Peripheral Access Code를 CMSIS Structure를 이용하는 방식으로 변경

SYSCTL_RCGCGPIO_R |= (1U << 5);

SYSCTL->RCGC2 |= (1U << 5);

와 같이 변경한다.


- End -

반응형

'Embedded > CMSIS' 카테고리의 다른 글

[CMSIS] 프로젝트 구성 방법  (0) 2015.12.02

Source : https://www.youtube.com/watch?v=jQZi81O3cMc

Video Title : CMSIS Tutorial #1- (CMSIS-CORE)


CMSIS 스펙에 있는 CMSIS-CORE의 File Structure는 하기와 같다.

From : http://www.keil.com/pack/doc/CMSIS/Core/html/_templates_pg.html


이 중에서 파란색 파일들은 Silicon Vendor가 제공하게 되며, 나머지 분홍색 파일들은 CMSIS Spec.에 있는 파일을 사용하게 된다.


파란색 파일들의 특징은 다음과 같다.


startup_<device>.s

- Start up code로 interrupt service routine등을 정의한다.


system_<device>.c

- Reset vector로부터 시작되는 초기 함수(예를 들면 SystemInit())를 포함하며, clock 설정등의 기본적인 설정 함수들이 포함된다.


<device>.h

- Peripheral의 주소나등 해당 chipset 고유의 register structure를 정의한다.


system_<device>.h

- system_<device>.c에서 정의한 함수들을 선언


본 예제에서 해당 파일들은 www.ti.com/tool/cmsis_device_headers에서 다운 받은 파일들을 사용한다.


이러한 파일들을 이용해서 실제 project를 만드는 방법은 다음과 같다.

1. inc 폴더와 src 폴더를 생성한다.

2. inc 폴더에는 <device>.h, system_<device>.h를 복사한다. (본 비디오에서는 LM4F120H5QR.h, system_LM4F.h)

3. src 폴더에는 system_<device>.c를 복사한다. (본 비디오에서는 system_LM4F.c)

4. startup_<device>.s를 root 폴더에 include한다. (본 비디오에서는 TI-CMSIS-Devices-8636/TI/LM4F/Source/IAR/startup_LM4F.s를 복사하여 사용함. 컴파일러에 따라서 사용해야 하는 파일은 틀려짐)

5. 컴파일러 옵션에서 CMSIS 스펙을 다운 받으면 있는 CMSIS/Include 폴더를 include path에 추가한다. (core_cm4.h등의 파일등이 있는 폴더)

6. root 폴더에 실행 내용이 없는 main.c(application)를 작성한다. (본 비디오에서는 main.c의 내용은 다음과 같음.


#include <LM4F120H5QR.h>


int main(void) {

    ;

}

7. 컴파일 후 실행한다.

본 Video를 통해서 CMSIS 프로젝트 구성 방법을 확인할 수 있다.

- End -


반응형

'Embedded > CMSIS' 카테고리의 다른 글

[CMSIS] 기존 프로젝트를 CMSIS 형식으로 변경  (0) 2015.12.03

+ Recent posts