본문 바로가기

Project/KUSMO

[KUSMO] 11/20 (Raspberry Pi WiFi, Platform IO)

728x90
  • 이전에 라즈베리파이에 설치했던 ROS Noetic Image에서 Arduino 설치가 어려워 Ubuntu 20.04로 OS 변경
  • SD 카드에 Ubuntu 20.04 Desktop를 설치하였으나 HDMI 신호가 나오지 않음 : Ubuntu Server로 변경
  • 설치 후 SD 카드의 system-boot에 있는 network-config를 아래와 같이 변경함

왼쪽이 변경 전, 오른쪽이 변경 후

  • ' version: 2' 가 가장 아래 줄에 위치해야 함

 

$ cd /media/$USER/writable/etc/netplan
$ sudo nano 50-cloud-init.yaml
  • 라즈베리파이에서 wifi 사용을 위해 network를 아래와 같이 설정

 

$ sudo netplan generate
$ sudo netplan apply
  • 변경사항 적용

 

  • 노트북에서 라즈베리파이에 ssh 통신을 시도하자 위와 같은 오류 발생
$ ssh-keygen -R 192.168.0.18

  • 위 명령어를 통해 오류 해결 (계속 연결을 할꺼냐는 질문이 나오면 yes 입력)
  • 라즈베리파이의 ssh나 OS가 변경되어 위와 같은 오류가 발생함
    • 예전에 인증한 IP 정보를 통해 접속하려 하나 라즈베리파이 쪽에서 해당 정보는 없는 정보라서 오류 발생

 

 

- Raspberry Pi에 ROS Noetic 설치

  • 노트북에서 ssh를 통해 Rsapberry Pi와 연결
  • ROS Noetic 설치
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  • packages.ros.org. 로부터의 software 허용
$ sudo apt install curl # if you haven't already installed curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
  • Key 설정
$ sudo apt-get update
  • Debian package index 가 최신 버전인지 확인
$ sudo apt install ros-noetic-desktop-full
  • ROS Noetic 설치 (시간이 다소 소요된다)
  • 공식 홈페이지에서 추천하는 Desktop-Full Install로 설치
$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
  • bashrc에 "/opt/ros/noetic/setup.bash"  source
$ sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  • Dependencies 설치
$ sudo rosdep init
$ rosdep update
  • rosdep 설치
  • rosdep은 system에 필요한 dependencies을 쉽게 설치할 수 있게 해줌

 

-PlatformIO 설치

  • Ubuntu server에서 Arduino를 쉽게 사용하기 위해 PlatformIO 설치

PlatformIO란?

  • Arduino 뿐만 아니라 STM32 series 같은 다양한 환경의 개발을 PlatformIO 단일 개발환경에서 수행할 수 있게 하는 Visual Studio Code의 Extension (500여개 이상의 embedded board와 호환)
  • Project별로 각기 다른 library를 설정하여 개발이 가능하며, platformio.in 파일을 통해 통해 한 Project에 여러 보드를 적용할 수 있다
  • Arduino IDE의 경우 Project 각기 다른 버전의 library를 사용하기 불편했지만 PlatformIO에서는 Project별로 필요로 하는 library version을 지정할 수 있어 편리함
  • 그러나 여러종류의 Device들과  Framework를 통합해 사용하여 사용방법이 복잡하고 시간이 많이 소요된다는 단점 존재
  • 아래 게시글을 참고하여 Visual Studio Code 설치 후 진행
 

Ubuntu Visual Studio Code 설치법

$ sudo apt-get install curl curl 설치 curl (Client URL)은 다양한 통신 protocol을 이용하여 command line이나 source code로 server와 통신할 수 있게 하는 기술로, 다양한 command line tool과 library를 지원한다 $ sudo sh -c 'c

youngseong.tistory.com

  • 설치 후, PlatformIO라는 이름의 Extension 설치
  • 설치가 완료되면 아래처럼 외계인 모양의 아이콘이 메뉴창에 추가됨
  • Visual Studio Code에서 PlatformIO 개발환경을 사용하기 위한 메뉴

  • 해당 아이콘 클릭 후 QUICK ACCESS -> PIO Home -> Open 를 통해 Project를 염

 

 

  • 위와 같은 error가 뜨며 창이 열리지 않는 경우가 있음
  • 이는 ubuntu에서 숨겨진 다른 Xcode가 실행중이여서 발생한 오류

 

$ killall code
  • 위 명령어를 통해 다른 모든 Xcode를 종료시킨 후 재실행하면 창이 제대로 뜸

 

 

  • New Project를 클릭하여 새 Project 실행 

  • Project Wizard에서 Board 선택 가능 (Framework는 Board 선택시 자동으로 선택됨)
  • Finish를 클릭하면 설치, 설정이 잠시 진행됨 
  • 설치, 설정이 완료되면 아래와 같이 코딩을 진행할 수 있는 창이 뜸

  • 실제 작성한 코드는 src folder에 저장됨 (main.cpp가 기본 설정 이름)
  • Arduino IDE와 동일하게 코딩 가능

  • Arduino IDE와 동일한 메뉴

  • platform.ini 파일에 project의 설정 내용이 모두 저장됨
  • 'atmelavr'는 core architecture를 의미하고, 'board'는 사용중인 board, 'framework'는 사용하는 툴체인이 “arduino”임을 의미
  • 여기에 외부 libraries를 지정하면 build시에 자동으로 download 받아서 설치해줌

rosserial 추가 예시

  • 전에 만들어놓은 sketch를 열려면 'Import Arduino Project' 선택
  • Open과 Import가 따로 있는 이유 : 
  • PIO에서 컴파일을 하기 위해서는 아두이노 스케치인 ". ino" 파일 외에  "platformio.ini"라는 설정 파일이 꼭 필요
    • platformio.ini는 compile하고자 하는 platform과 board의 종류, board가 연결된 port 등등을 complier에게 알려줌
  • Import 메뉴를 이용해 기존의 Arduino Project를 열면 Project를 가져오기 전에 사용하고자 하는 board를 지정할 수 있고, 그 결과를 반영해서 platformio.ini파일을 만듦
  • Import로 불러온 sketch는 기존 sketch와는 별도로 복사본이 생성됨
  • 기존에 사용하고 있던 project를 PIO에서 지속적으로 사용하고자 하면 Import가 아니라 Open으로 이용해서 열고 설정 file을 하나 만들어 둬야 함
  • PlatformIO.ini파일은  PlatformIO Core 설정을 하는 [platformio] 섹션과 환경설정을 하는 [env] 섹션으로 이루어져 있고, 각 설정 부분은 "키"와 그 "설정값"이 "=" 기호로 연결되어 있는 형태로 작성이 됨
  • ";"로 시작하는 줄은 주석으로 처리되고 두 개 이상의 설정값은 ", "로 구분해서 지정 가능
  • 한줄 이상 구문이 길어지면 여러 줄 구문을 하나로 인식하게 할 수 있는데, 새로 시작되는 줄은 최소  2개 이상의 빈칸으로 시작되어야 함

 

PIO의 여러 메뉴들

  • Library는 Library 메뉴나 (해당 project에만 설정하거나 전체적으로 설정 가능), platformio.ini에서 board별로 관리 가능
  • Board 메뉴에서 PIO가 지원하는 Board, Platfrom, Framework, Ram/Rom 크기, 인터넷 연결, Unit Test, Debug 를 볼 수 있음
  • Platform 메뉴에서 Platform을 관리할 수 있음
  • Devices 메뉴에서 연결된 port 확인 가능. 해당 port들은 platformio.ini에서 upload, monitor port를 설정할 때 적용 가능

 

 

 

 

 

 

 


https://velog.io/@ekdh7456/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4Ubuntu-Server-%EC%99%80%EC%9D%B4%ED%8C%8C%EC%9D%B4-%EC%97%B0%EA%B2%B0-%EB%B0%8F-ssh-%EC%A0%91%EC%86%8D

 

[라즈베리파이]Ubuntu Server 와이파이 연결 및 ssh 접속

라즈베리파이에 Ubuntu 20.04 Server를 설치한 후, 와이파이를 설정하는 방법입니다. 연결 방법에는 2가지가 있습니다. 유선랜이 없는 경우 유선랜이 연결되어 있는 경우 먼저 유선랜이 연결되지 않

velog.io

https://visu4l.tistory.com/entry/ssh-%EC%9B%90%EA%B2%A9-%EC%A0%91%EC%86%8D-%EC%97%90%EB%9F%ACWARNING-REMOTE-HOST-IDENTIFICATION-HAS-CHANGED

 

ssh 원격 접속 에러(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)

가끔 가다가 잘 접속되던 서버가 아래와 같은 메세지를 띄우는 경우가 있다. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

visu4l.tistory.com

http://wiki.ros.org/noetic/Installation/Ubuntu

 

noetic/Installation/Ubuntu - ROS Wiki

If you rely on these packages, please support OSRF. These packages are built and hosted on infrastructure maintained and paid for by the Open Source Robotics Foundation, a 501(c)(3) non-profit organization. If OSRF were to receive one penny for each downlo

wiki.ros.org

https://epictrave.tistory.com/13

 

[PlatformIO] PlatformIO IDE 소개 및 설치

PlatformIO IDE 소개 Arduino를 이용한 개발 시 처음에 대부분 Arduino 공식 홈페이지에 있는 Arduino IDE를 사용할 것입니다. 저 같은 경우에는 간단한 프로그램 작성에는 큰 무리가 없었으나 코드가 길어

epictrave.tistory.com

https://kwonkyo.tistory.com/377

 

VS Code로 아두이노 업로드 - PlatformIO IDE

저는 Arduino IDE의 대안으로 Visual Studio(VS)에 Visual Micro라는 확장 프로그램을 깔아서 사용하고 있습니다. VS가 매우 무거운 프로그램이긴 하지만 그만큼 생산성을 높여주는 유용한 프로그램입니다.

kwonkyo.tistory.com