산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Pioneer IoT 애드온 실드와 함께 PSoC 6 파이오니어 보드 사용

소개

PSoC 6은 Cypress의 강력한 PSoC 프로세서 시리즈에 가장 최근에 추가된 제품입니다. PSoC 6 Pioneer IoT Add-On Shield는 이 프로세서 라인과 관련된 개발 도구로, 온보드 디버거, Arduino 호환 헤더, CapSense 위젯 등을 모두 PSoC 6 프로세서에 연결합니다. 프로세서는 공유 주변기기 및 메모리 공간을 통해 함께 연결된 Cortex-M0+ 저전력 프로세서와 Cortex-M4 고전력 프로세서가 있는 듀얼 코어 장치입니다.

이 튜토리얼에서는 Pioneer Add-on Shield를 사용하여 PSoC 6 장치의 기능을 확장하여 Pioneer Board를 시작하고 실행하는 방법을 보여줍니다. BLE 및 WiFi(XBee WiFi 모듈 사용)를 통해 Raspberry Pi와 통신하는 방법과 BLE를 통해 PSoC 4 BLE 파이오니어 보드와 PSoC 6 파이오니어 보드 간에 통신하는 방법을 보여드리겠습니다.

필수 자료

이 가이드의 예는 Cypress 또는 Digi-Key에서 직접 구매할 수 있는 PSoC 6 Pioneer Kit와 함께 사용하기 위한 것입니다.

물론 Pioneer Add-on Shield도 필요합니다. XBee WiFi 모듈도 필요합니다. 설정에 따라 다음과 같은 몇 가지 XBee WiFi 옵션이 있습니다. 추적, 외부 2.4GHz 안테나가 있는 RP-SMA 커넥터 또는 와이어. 가장 쉬운 방법은 와이어 안테나가 있는 XBee를 얻는 것입니다.

또한 Raspberry Pi 3 스타터 키트가 필요합니다. 이것은 PSoC6 파이오니어 보드의 통신 대상이 됩니다. 물론 브레드보드, 점퍼 와이어, 저항기 및 LED와 함께 Pi 3를 별도로 구입할 수도 있지만 스타터 키트는 예외적인 거래이며 충분히 살 가치가 있다고 생각합니다.

하드웨어 개요

Pioneer Kit IoT 애드온 보드의 기능을 자세히 살펴보겠습니다.

MicroSD 카드 슬롯 – 이 슬롯의 핀은 PSoC 6 BLE 파이오니어 보드를 포함한 대부분의 Arduino 호환 보드에서 SPI 주변 장치에 매핑됩니다.

XBee 헤더 – 이 헤더는 표준 XBee 풋프린트를 수용하도록 간격을 두고 있습니다. 모든 공식 XBee 모듈과 호환됩니다.

Qwiic 커넥터 – 이 커넥터는 모든 SparkFun의 Qwiic 모듈에 대한 지원을 추가합니다. 3.3V를 공급합니다.

MicroB USB 전원 커넥터 – 이 커넥터의 데이터 라인은 아무 것과도 연결되어 있지 않습니다. XBee 모듈용 3.3V 레귤레이터에 5V를 제공하여 Arduino 헤더에서 오는 5V를 무시하고 고전력 XBee 모듈(예:셀룰러, Wi-Fi 또는 Pro 모델)이 제대로 작동하도록 합니다.

D7 및 D9 버튼 – 핀 D7 및 D9에 연결된 2개의 사용자 버튼(PSoC 6의 P0.2 및 P13.1 또는 PSoC 4 BLE의 P1.0 및 P0.4)

3.3V 조정기 – 업스트림 공급 소싱 용량에 따라 최대 1.5A까지 소싱할 수 있는 스위치 모드 3.3V 전원 조정기. Arduino 핀 또는 MicroB 전원 커넥터의 5V 공급 장치에서 전원을 끌어옵니다. XBee 헤더에만 전원을 공급합니다.

레벨 시프트 버퍼 – 5V 신호에서 3.3V 신호로 하향 변환합니다. 보드를 3.3V 또는 5V 시스템에서 사용할 수 있습니다.

I2C 레벨 시프트 회로 – 필요한 경우 I2C 신호를 3.3V에서 5V로 변환합니다.

전압 공급 선택 점퍼 – I2C 레벨 시프트 회로가 변환할 레벨을 선택합니다. 기본값은 3.3V로 설정됨 . 5V 시스템과 함께 사용하려면 5V로 설정하십시오. PSoC 4 및 PSoC 6 Pioneer BLE 보드는 모두 3.3V입니다. 시스템.

XBee DIO5 LED – DIO5는 기본적으로 몇 가지 유용한 기능, 특히 WiFi 모듈에서 구성된 WiFi 네트워크에 대한 연결을 보여줍니다.

예:PSoC 6 파이오니어 키트를 사용하여 Raspberry Pi에 WiFi 연결

이 예제는 WiFi를 통해 Raspberry Pi에 신호를 보내는 방법을 보여줍니다. XBee WiFi 모듈에 액세스하는 방법, PSoC 6의 두 코어 간의 프로세스 간 통신, Raspberry Pi로 명령을 수신 및 구문 분석하는 방법을 보여줍니다.

이 예를 따르려면 몇 가지 설정이 필요하므로 지금부터 살펴보겠습니다.

PSoC 6 파이오니어 키트 설정:하드웨어

파이오니어 키트 측면 설정은 간단합니다. XBee WiFi 모듈을 파이오니어 IoT 애드온 실드에 삽입하고 실드를 파이오니어 키트 보드의 Arduino 헤더에 삽입합니다.

Raspberry Pi 쪽은 더 많은 설명이 필요합니다. Raspberry Pi에서 일부 하드웨어와 소프트웨어를 모두 설정해야 합니다.

PSoC 6 파이오니어 키트 설정:소프트웨어

참고: PSoC 6 지원은 Creator 4.2 이상에서만 사용할 수 있습니다!

Pioneer Kit의 소프트웨어 프로젝트는 GitHub에서 사용할 수 있습니다.

PSOC 6 파이오니어 키트 소프트웨어 다운로드

파일을 어딘가에 다운로드하고 압축을 풀면 PSoC Creator에서 예제(XBee_WiFi_Example)를 열 수 있습니다.

다른 작업을 수행하기 전에 "main_cm4.c " 파일을 만들고 몇 가지를 변경합니다. 다음과 같은 코드 섹션을 찾을 수 있습니다.
char ssid[] =“your_ssid_here”;
char rpi_ip[] =“raspi_ip_here”;
char ssid_pw[] =“wifi_pw_here ”;
int dest_port =5000;
char encrypt_mode =WPA2;
당신이 해야 할 일은 분명합니다. 네트워크 설정과 일치하도록 이 설정을 변경하십시오. encrypt_mode 값은 WPA, WEP, WPA2 또는 NO_SECURITY일 수 있습니다. rpi_ip는 'ifconfig를 입력하여 얻을 수 있는 점으로 구분된 쿼드(예:'10.8.253.193')입니다. " 라즈베리 파이의 명령 창에서(명령 창 열기에 대한 지침은 아래 참조) "wlan0 ” 섹션.

보드를 프로그래밍하려면 포함된 USB-A-USB-C 케이블을 통해 보드를 PC에 연결합니다. 그런 다음 도구 모음에서 "프로그램" 버튼(아래 그림 참조)을 클릭하여 자동으로 프로젝트를 빌드하고 보드를 프로그래밍합니다.

프로그램할 대상을 선택하라는 아래와 같은 창이 나타날 수 있습니다. "KitProg2" 목록 항목에서 어떤 항목을 선택하든 상관없이 어느 쪽이든 플래시를 올바르게 프로그래밍합니다.

라즈베리 파이 설정:하드웨어

먼저 하드웨어가 어떻게 연결되어 있는지 살펴보겠습니다.

보시다시피 LED(330옴 저항 포함)를 Raspberry Pi의 핀 3(GPIO 2)과 6(접지)에 연결했습니다. 이렇게 하면 GPIO2를 토글하고 LED에서 결과를 볼 수 있습니다.

라즈베리 파이 설정:소프트웨어

최신 버전의 Raspbian(라이트 버전이 아닌 전체 설치)이 실행되는 Raspberry Pi가 설정되어 있고 키보드, 마우스, 모니터 및 로컬 WiFi 네트워크에 연결되어 있다고 가정하겠습니다. 이것이 아닌 경우 이 경우 잠시 시간을 내어 설정하세요. 여기에서 Pi 설정에 대한 자습서를 검토할 수 있습니다.

Raspberry Pi의 바탕 화면에서 시작하겠습니다. 다음과 같은 화면이 표시되어야 합니다.

명령줄을 열려면 화면 상단의 작은 로고(아래 참조)를 클릭해야 합니다. 이 튜토리얼의 나머지 부분에서는 해당 명령줄이 열려 있다고 가정합니다.

그러면 명령줄 창이 열립니다. 이를 통해 Raspberry Pi에 명령을 직접 실행하도록 지시할 수 있습니다.

Flask를 설치하는 명령을 실행하여 시작하겠습니다. Flask는 서버 백엔드에서 아주 간단하게 Python 스크립트를 실행하는 웹 프론트엔드를 만들 수 있는 Python용 웹 프레임워크입니다. 다음 명령을 입력한 다음 "Enter"를 누르십시오.
sudo pip install flask
명령줄 창에서 많은 일이 발생하고 마지막에 Flask가 Raspberry에 설치됩니다. 파이.

다음 단계는 GitHub에서 이 프로젝트를 지원하기 위해 작성한 소프트웨어를 설치하는 것입니다. 이를 수행하기 위한 명령은
git clone https://github.com/sparkfun/Flask_Tutorial
다시 말하지만 명령줄에서 일부 텍스트 스크롤이 표시되고 프롬프트가 반환되면 설치 프로세스가 완료되었다는 표시입니다. 완료되면 다음 명령을 입력합니다.
sudo python Flask_Tutorial/Python/app.py
이 명령을 실행하면 앱이 실행되고 Pioneer 보드에서 TCP/IP를 통한 입력 수신이 시작됩니다. 이제 IoT Shield의 D7 및 D9 버튼을 눌러 Raspberry Pi에 연결된 LED를 켜고 끌 수 있습니다. 깔끔합니다!

여기서 무슨 일이? pt. 1:개척자 키트

PSoC 6 소프트웨어 프로젝트의 높은 수준의 관점에서 시작하여 정확히 무슨 일이 일어나고 있는지 살펴보겠습니다. 화면 왼쪽에 있는 Workspace Explorer 프레임을 보십시오. 중요한 파일과 전체 프로젝트와의 관련성을 강조하여 해당 프레임을 살펴보겠습니다.

작업 공간 탐색기를 보는 데 어려움이 있습니까? 자세히 보려면 ​​이미지를 클릭하세요.

프로젝트의 최상위 레벨에는 6개의 항목이 있습니다. 회로도(“TopDesign.sch ”), 디자인 전체 리소스(“XBee_WiFi_Example.cydwr "), Cortex-M0+ 코어와 연결된 소스 파일("CM0p(Core 0) "), Cortex-M4 코어("CM4(Core 1) ”), 둘 간에 공유할 파일(“공유 파일 ”) 및 IDE에서 생성된 지원 파일(“Generated_Source ").

이 프로젝트의 회로도는 XBee WiFi 모듈과 데이터를 주고받는 데 사용되는 두 개의 LED, 두 개의 스위치 및 UART가 있는 매우 간단합니다. LED는 프로젝트의 현재 구현에서 실제로 사용되지 않습니다.

.cydwr의 내용은 건너뛸 것입니다. 파일. 이 파일에는 회로도, 클럭 생성 및 코어 구성 상수에 사용된 신호에 대한 핀 할당이 포함되어 있습니다. 더 자세히 조사하고 싶다면 조금 더 파고들어 보십시오. 대부분은 설명이 필요 없습니다.

목록 아래로 이동하면 Cortex-M0+ 소스 파일에 도달합니다. 이 하위 도메인의 최상위 수준에는 "헤더 파일", "소스 파일" 및 3개의 기타 파일이라는 5개의 항목이 있습니다. "Header Files" 및 "Source Files" 하위 도메인의 내용에만 관심이 필요하며 실제로는 "main_cm0p.c " 파일입니다. Cortex-M0+ 프로세서에서 실행되는 코드의 main() 함수가 있는 곳입니다.

작업 공간의 구조에서 짐작할 수 있듯이 두 개의 서로 다른 코어에 대해 실행되는 완전히 별도의 두 개의 코드베이스가 있습니다. “main_cm0p.c "는 Cortex-M0+ 코어 코드의 진입점이며 해당 코어가 Cortex-M4 코어를 시작합니다. 비슷한 파일이 있는 Cortex-M4 코어에 대한 유사한 하위 도메인이 있으며 다시 "헤더 파일" 및 "소스 파일" 하위 도메인에 대해서만 걱정하면 됩니다.

마지막으로 "공유 파일" 섹션이 있습니다. 이 파일의 대부분은 자동으로 생성되므로 "ipc_common.c " 및 "ipc_common.h " 파일. 이 파일은 이 프로젝트를 위해 개발된 프로세스 간 통신을 위한 도우미입니다.

Cortex-M0+ 메인 파일

이제 중요한 내용을 강조 표시했으므로 "main_cm0p.c " 파일입니다. 이 파일은 Cortex-M0+ 코어가 시스템에 대해 수행하는 모든 활동을 처리합니다. 두 개의 푸시 버튼을 모니터링하고 둘 중 하나가 눌렸을 때 Cortex-M4에 신호를 보냅니다.

그러나 이것은 Cortex-M4가 신호를 처리한 후에는 신호를 지울 수 있어야 하기 때문에 보이는 것처럼 간단하지 않습니다. 이는 동일한 데이터에 액세스하는 여러 프로세스를 의미합니다. 동일한 데이터 세트에서 작업하는 여러 프로세스가 있을 때마다 쓰기 충돌의 영향을 고려해야 합니다. 동일한 데이터를 변경하려는 다른 프로세스의 중간에 한 프로세스가 데이터 변경을 시도하면 어떻게 됩니까? 이 문제를 해결하기 위해 "ipc_common " 파일.

이것이 어떻게 작동하는지 이해하려면 먼저 IPC 채널의 개념을 이해해야 합니다. IPC 채널은 세마포어를 사용하여 한 프로세스에서 다른 프로세스로 데이터를 쓰는 동시에 두 코어 간에 충돌이 없음을 보장합니다. 각 코어에 대한 응용 프로그램 실행을 시작할 때 실행 중에 사용할 IPC 채널에 대한 끝점을 설정해야 합니다. 다음 두 줄의 코드를 고려하세요.
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
첫 번째 코드는 IPC 채널의 특성을 정의하는 구조체에 대한 포인터를 만듭니다. 두 번째는 실제로 해당 구조체가 시스템 IPC 채널 7의 특정 메모리 위치를 가리키도록 설정합니다. 채널 0-6이 시스템 사용을 위해 예약되어 있기 때문에 채널 7을 사용합니다.

다음으로 우리는 물론 이 IPC 채널과 연결된 메모리 주소를 다른 코어에 알려야 합니다. 이것이 이 함수 호출이 하는 일입니다.
while(Cy_IPC_Drv_SendMsgPtr(D9IpcHandle, CY_IPC_NO_NOTIFICATION, &D9Button) !=CY_IPC_DRV_SUCCESS);
D9Button은 코드에서 앞부분에 설정된 변수입니다. 함수 호출은 다른 프로세스(즉, Cortex-M4 코어에서 실행되는 코드)가 이 정보를 수신했다는 확인을 받을 때까지 함수 호출을 반복하기를 원하기 때문에 while() 루프로 묶여 있습니다. 또한 Cortex-M4가 포인터 값 읽기를 완료했음을 나타내는 변수에 대한 잠금이 해제될 때까지 기다리기를 원합니다.
while(Cy_IPC_Drv_IsLockAcquired(D9IpcHandle));
마지막으로, 우리는 무한 사용자 정의 함수 ReadSharedVar() 및 WriteSharedVar()가 다른 코어와 버튼 상태를 전달하는 공유 변수 업데이트를 처리하는 애플리케이션용 루프입니다. 이러한 기능에 대해서는 나중에 자세히 알아보도록 하겠습니다.

Cortex-M4 메인 파일

Cortex-M4 main() 함수에서는 Cortex-M0+ main() 함수에서 IPC 채널 설정과 동일한 작업을 반복합니다.
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
이 작업이 완료되면 액세스할 공유 변수의 주소가 포함된 Cortex-M0+ 프로세스에서 보낸 메시지를 "잡기" 위해 일부 코드를 호출해야 합니다.
while (Cy_IPC_Drv_ReadMsgPtr(D9IpcHandle, (void *)&D9Button) !=CY_IPC_DRV_SUCCESS);
다시 말하지만, 이 호출을 while() 루프로 묶어서 메시지가 전송될 때까지 계속 호출되도록 합니다. 피질-M0+. 그런 다음 Cortex-M0+ 프로세스가 계속 작동하고 향후 IPC 채널을 사용할 수 있음을 알 수 있도록 해당 IPC 채널에 대한 잠금을 해제해야 합니다. 종료가 열려 있기 때문에 이것을 while() 루프로 묶을 필요가 없습니다. 잠금을 해제하기 위해 호출을 한 번만 실행하면 되지만 잠금이 해제되었는지 확인하면 다음과 같은 시간까지 반복되어야 합니다. 잠금이 해제되었습니다.
Cy_IPC_Drv_LockRelease(D9IpcHandle, CY_IPC_NO_NOTIFICATION);
이 모든 작업이 완료되면 XBee WiFi 실드를 설정하여 로컬 네트워크에 액세스해야 합니다. 예제에 잘 설명되어 있으므로 여기에서 해당 코드를 모두 복제하지 않겠습니다.

애플리케이션 코드를 실행하는 무한 루프에서 맞춤 함수 ReadSharedVar() 및 WriteSharedVar()를 다시 호출하여 Cortex-M0+ 코어와 공유되는 버튼 상태를 유지하는 변수에 액세스합니다. 이러한 기능이 무엇을 하는지 자세히 살펴보겠습니다.

더 많은 정보를 읽어보세요……

Pioneer IoT 애드온 실드와 함께 PSoC 6 파이오니어 보드 사용


제조공정

  1. 기상 관측소로 IOT에 참여하십시오 – CWOP
  2. A111 펄스 레이더 센서를 Raspberry Pi와 함께 사용
  3. MQTT를 사용하여 IoT의 세계로 쉽게 시작
  4. Raspberry Pi 및 Bridge Shield를 사용하는 로봇
  5. Windows IoT 기반 GoPiGo v2
  6. 시각 데이터를 IoT와 통합할 수 있는 가능성
  7. IoT와 함께하는 길 위에서
  8. 스마트 시티가 있는 IoT 인프라의 비밀
  9. IoT World:A Day in the Life With Vertica
  10. Lumada IoT 플랫폼 오퍼링을 통해 Hitachi는 점을 연결합니다.