초보자를위한 내장 프로그래밍 : Arduino 또는 Raspberry Pi? [닫은]


32

저는 컴퓨터 과학 학생이며 임베디드 프로그래밍 및 전기 공학에 대한 지식을 넓히고 자합니다.

내가 읽은 여기 아두 이노 마이크로 컨트롤러와 같은 도구를 사용하여 시작하는 좋은 방법입니다.

저는 주로 Java 및 Python 프로그래머이지만 C ++에 대한 경험이 있습니다. 또한 나는 ArchLinux를 가지고 놀았다.

내가하고 싶은 작은 프로젝트는 Arduino / Pi를 통해 Wi-Fi를 통해 일부 전구 를 제어하는 것입니다 .

내가 읽은 내용에서 Pi와 Arduino는 모두 학생을 대상으로하지만 컴퓨터가 저수준에서 어떻게 작동하는지 이해하고 싶은 사람과 같은 사람에게 더 적합한 지 알 수 없습니다.

초보자로서 나는 많은 질문에 부딪 칠 것이므로 크고 유익한 커뮤니티 (Pi가 들었다)는 큰 장점입니다.

그렇다면 자기 교육 초보자에게 더 적합한 것은 Arduino 또는 Raspberry Pi입니까?

미리 감사드립니다.

편집하다:

많은 훌륭한 답변 과이 가치있는 기사에서 나는 다음에 왔습니다.

결론

  1. Arduino는 Pi보다 간단한 시스템이기 때문에 임베디드 프로그래밍의 진입 점으로 선택합니다.

  2. 더 깊이가는 가치가 있습니다 . 나중에 AVR 또는 mbed 마이크로 컨트롤러를 연구 하여 저수준 컴퓨팅에 대해 자세히 배울 수 있습니다.

  3. 두 장치를 통해 운영 체제없이 프로그래밍 할 수 있습니다.

  4. 또한 Pi 하나를 사용하여 Arduino를 제어하는 프로젝트발견 했습니다 . 두 장치가 모두 저렴하고 Pi에서 실행할 수있는 Linux의 힘을 사용하는 것을 좋아하기 때문에 이러한 흥미로운 점을 발견했습니다.

  5. 또한 Arduino를 실험하는 동안 전기 공학에 대해 자세히 배우는 데 도움 이되는 이 책 을 발견 했습니다 .

  6. Arduino로 전구 프로젝트를 수행하는 것이 어려워 보입니다. 그러나 괜찮습니다. 다른 동기 부여 프로젝트를 생각하거나 여기 또는 여기에서 영감을 얻을 수 있다고 확신 합니다 .

답변 해 주셔서 감사합니다.


2
Arduino가 더 간단합니다. 이것이 "자기 교육 초보자"에게 더 나은 출발점이 될 것을 제안합니다. Arduino에는 현재 "쉴드"(플러그인 도터 보드)와 같은 더 많은 애드온 제조업체 커뮤니티가 있습니다. Pi는 돈을 위해 더 가치가 있지만 많은 Arduino 변형보다 낮은 수준의 인터페이스 (GPIO 수, I2C 등)가 적습니다. 저급 물건에 관심이 적 으면 Pi를 사용합니다.
RedGrittyBrick

답변:


35

"컴퓨터가 낮은 수준에서 작동하는 방식을 이해하기"를 원한다면 Arduino 나 Raspberry Pi가 적합하지 않다고 주장 할 수 있습니다. 이러한 플랫폼 (하드웨어 및 소프트웨어)은 모두 세부 정보를 신경 쓰지 않는 사람들이 포함 된 응용 프로그램을 만들어서 더 높은 수준의 목표를 달성 할 수 있도록 하위 수준의 세부 정보 를 숨기 도록 특별히 설계되었습니다 .

대신 비교적 "깨끗한"명령어 세트 아키텍처를 가진 CPU 제품군을 선택하고 어셈블리 언어로 프로그래밍하는 방법을 배우는 것이 좋습니다. 예를 들어, 매우 깨끗한 16 비트 아키텍처를 가진 PDP-11 미니 컴퓨터에서 많은 초기 코딩 작업을 수행했습니다. TI MSP430 제품군은 매우 유사하다고 들었습니다. 현대의 8 비트 제품군에서는 AVR이 PIC보다 약간 깨끗하다고 ​​주장 할 수 있습니다. 또는 구식 학교에 가서 M68K 또는 Z80을 볼 수도 있습니다.

따라서 실제로 목표가 무엇인지에 달려 있습니다. 임베디드 응용 프로그램을 만들거나 프로세서 자체를 연구하고 싶습니까?

전자에서 시작한 후 후자로 더 전환하려면 지금 Arduino로 시작한 다음 나중에 하위 레벨에서 기본 AVR 프로세서 프로그래밍으로 마이그레이션해야합니다.

귀하가 제안한 응용 프로그램의 단순성 및 마이그레이션 경로로 인해이 권장 사항을 부분적으로 제시합니다. Pi에서 저수준 프로그래밍으로 마이그레이션하는 것이 훨씬 더 어렵습니다. 복잡한 SoC에 기반을두고 있으며,이를 수행하기 위해서는 상당한 "인프라"소프트웨어가 필요합니다. AVR을 사용하면 기울어 진 경우 "베어 메탈"까지 쉽게 프로그래밍 할 수 있습니다.


고맙게도 임베디드 응용 프로그램을 만드는 것으로 시작하고 나중에 프로세서를 연구하려고합니다.
Matthias Braun

1
인프라를 알 필요없이 문제없이 Pi 베어 메탈을 프로그래밍 할 수 있습니다. 비디오, 오디오 및 네트워킹을 무시하면 SD 카드에서로드되는 RAM이 많은 빠른 ARM 칩이 있습니다. 또는 부트 로더를 SD 카드에 넣고 직렬 포트를 사용하여 응용 프로그램을 RAM으로 다운로드하십시오.
Wouter van Ooijen

2
화상 및 충돌 베어 메탈 개발의 경우 부팅 로더를 사용할 준비가되었으며 매우 간단한 시작 요구 사항이 훨씬 더 간단 해집니다 (즉, ATMEGA 개발 보드로 취급)
Chris Stratton

13

Arduino는 Arduino SDE와 함께 사용할 수 있습니다.이 기능은 '숨겨진'방법으로 일부 기능을 제공하지만 일반 어셈블러, C 또는 C ++ (및 아마도 다른 많은 언어와 함께)와 함께 사용할 수도 있습니다. 덜 흔함). 쉴드라고하는 다양한 추가 보드가 있으며 대부분 Arduino SDE와 통합되는 지원 소프트웨어가 있습니다. 여러 쉴드를 결합하는 것은 까다로울 수 있습니다. 이더넷은 가능하지만 기능을 확장하고 있습니다. USB 호스트 스택은 기능 이상의 AFAIK입니다.

원래 Arduino에는 AVR 칩이 포함되어 있지만 PIC 및 LPC (ARM) 칩을 기반으로하는 대안이 있습니다.

Raspberry Pi는 축소 된 Linux를 실행하는 단일 보드 컴퓨터로 설계되었습니다. 따라서 다양한 언어 (어셈블러에서 Python 및 C와 C ++를 포함하여 그 사이의 모든 언어)로 프로그래밍 할 수 있습니다. USB 호스트 일 수 있으므로 USB WiFi 동글을 추가하는 데 아무런 문제가 없습니다. Pi PCB에는 일부 핀을 사용할 수있는 IO 커넥터가 있으며 Linux 앱에서 해당 핀에 액세스 할 수 있지만 약간 어색합니다.

이러한 방식으로 사용하도록 설계되지는 않았지만 Raspberry Pi 베어 메탈을 프로그래밍하는 데 아무런 문제가 없습니다 (= OS없이). 이제 IO 핀에 직접 빠르고 빠르게 액세스 할 수 있지만 Liunux 드라이버 실행 기능이 느슨해져 WiFi를 추가하기가 어렵습니다. AFAIK는 아직 RaPi를위한 Arduino만큼 많은 하드웨어 확장 (동봉 된 소프트웨어 라이브러리 포함)이 없지만 내 생각은 이것이 바뀔 수 있다는 것입니다.

대체로 어느 쪽도 잘못 갈 수는 없지만 WiFi를 정말로 원한다면 RaPi를 Linux와 함께 사용하는 것이 좋습니다.


1
Raspberry Pi의 단점 중 하나는 공식 문서가 없다는 것입니다. 그것은 단지 필사자들이 만질 수없는 일급 비밀 독점 Broadcom입니다. ARM 속도가 필요한 경우 Raspberry Pi에 비해 저렴하고 쉽게 얻을 수있는 베어 메탈 작업에 대한 문서가 훨씬 더 우수한 다른 플랫폼이 있습니다. 반면에 Raspberry Pi는 Texas Instruments, STmicro 또는 Freescale의 다양한 저렴한 ARM 키트보다 "실제 컴퓨터"에 훨씬 가깝습니다.
AndrejaKo

3
AFAIK 문서가 부족하면 비디오 및 오디오 부분이있을 수 있습니다 (그러나 해당 부분의 드라이버는 이제 오픈 소스입니다). 그러한 부분은 존재하지 않습니다. 당신은 당신의 돈을 위해 끔찍한 램 (RAM 및 CPU 전력)을 남깁니다. 어쨌든 일반적인 마이크로 컨트롤러 응용 프로그램에서 사용하고 싶지 않은 추가 항목이 있습니까? 본격적인 그래픽 엔진이 필요하지 않습니다. 그리고 픽셀 수준의 인터페이스가 필요하다면 거기에 있습니다.
Wouter van Ooijen

pi의 GPIO 문서는 오디오 및 비디오뿐만 아니라 일반적인 임베디드 장치에 비해 매우 드 very니다.
Chris Stratton

1
사용 가능한 설명서를 사용하여 GPIO를 사용하는 데 문제가 없었습니다. 문제가 있습니까?
Wouter van Ooijen

4

내 의견으로는 이것은 다음과 같습니다 : OS 또는 하드웨어 자체 (자신의 OS를 만드는 일종의 프로그램)에서 프로그램하고 싶습니까?

RaspberryPi를 사용하면 데비안 리눅스를 사용할 것입니다. 괜찮습니다. 리눅스는 정말 유용합니다. 그것을 배우면 다른 PC, 서버 등으로 성장할 수 있습니다. Pi에서 잘하고 쉽게 할 수 있기 때문에 익숙하다면 Python으로 다시 프로그래밍하게 될 것입니다.

반면에 아주 작고 저렴하며 저전력을 프로그래밍하는 것이 어떤 것인지 알고 싶다면 Arduino를 사용해보십시오. 모든 코드는 작은 칩에서 실행되며 보드에서 코드를 제거하고 (DIP 칩인 경우) 브레드 보드에 놓고 기본 작은 컴퓨터 작업을 수행하는 데 필요한 하드웨어가 얼마나 작은 지 직접 확인할 수 있습니다. 그것은 나에게 적어도 훌륭했다. 여러분이 작성하는 모든 것이 그 칩 자체에서 실행되므로 전체 "OS"가 작은 실행 루프가됩니다. Arduino IDE / 언어는 시작하기에 좋지만 나중에 C / C ++로 내려가는 것이 매우 유용합니다. 그 시점에 실제로 도달하면 ARM Cortex M 칩 또는 TI의 MSP430과 같은 다른 마이크로에서 C 기술을 쉽게 사용하여 저전력을 얻을 수 있습니다.

EE와 임베디드 언어를 배우는 데 더 관심이 있다면 Arduino를 찾아가는 것이 좋습니다. 주로 EE 부분에 대한 회로를 만드는 것이 얼마나 쉬운 지 때문입니다. Raspberry Pi의 칩을 자신의 보드에서 쉽게 제거하거나 하드웨어를 많이 망칠 수는 없습니다. 또한 그것은 거의 리눅스 시스템입니다. 그 시점에서 VM을 가동시키고 거기서 Linux를 배우십시오.


3

적절한 것은 실제로 작업의 세부 사항에 달려 있습니다.

Wi-Fi가 필요한 경우 저렴한 Wi-Fi 동글을 사용할 수 있으므로 Raspberry Pi가 더 비용 효율적인 솔루션이 될 수 있습니다.

그러나 파이는 소프트웨어 측면에서 약간의 복잡성을 가지고 있습니다. 리눅스 구성에 대한 경험이 있고 전원 공급 장치의 한계가 있습니다. 몇몇 와이파이 동글은 직접 작동합니다. 폴리 퓨즈 주변.

Arduino 경로에서 전체 네트워크 스택을 구현하고 직렬 채널을 시뮬레이트하는 Wi-Fi 어댑터가 없으면 네트워킹 구현에 사용 가능한 메모리의 상당 부분을 사용하게됩니다. 사람들은 그렇게하지만 꼭 맞을 수 있습니다.

의견으로는, 어느 플랫폼도이 작업에 이상적이지 않습니다. 파이는 내장 된 빌딩 블록으로서 이상적인 것보다 전력 제한, 돌출 된 SD 카드 마운트 및 보류 문서가있는 장난감 일뿐입니다. Arduino는 가격에 대한 온보드 리소스가 거의 없습니다. 즉, 리눅스 기반의 와이파이 라우터에 디지털 I / O를 해킹 한 오랜 역사가 있지만 그 중 일부는 현재 경쟁이 치열하고 조밀하지만 널리 보급 된 대안은 많지 않습니다.


3

mbed 프로세서를 권장합니다. C ++에서 높은 수준의 추상화 (시작하기 위해)의 균형이 잘 잡힌 다음 C로 내려 가서 더 낮은 수준에서 작업을 시작할 수 있습니다.

인터럽트, 타이밍 및 판독 정보 (아날로그 및 디지털 모두)로 속도와 편안함을 느끼면 간단한 PIC로 이동하십시오. 나는 16F886을 좋아하는데, 이것은 실제로 레지스터 레벨에서 무슨 일이 일어나고 있는지에 대한 더 나은 아이디어를 줄 것입니다. 하이테크 C 컴파일러를 시작점으로 사용하십시오. 원치 않는 한 어셈블리로 이동할 필요가 없습니다.

PIC를 사용하면 전력 소비, 프로그램 크기, 메모리, 타이밍 지연에 대해 걱정할 수 있습니다.

거기에서 내부에 무슨 일이 일어나고 있는지 더 잘 알고 있다는 것을 알고 mbed 또는 arduino와 같은 더 큰 프로세서로 다시 이동할 수 있습니다.


2

나는 Arduino로 시작했고 그것이 어떻게 작동하는지 이해했을 때 Pic으로 옮겼으며 성공했다고 말할 수 있습니다. Arduino로 화려한 프로젝트를 만들었습니다. 웹에는 많은 코드 예제가 있기 때문에 쉽습니다. 라즈베리 파이는 여전히 성장 중이며 Arduino만큼 도움이되지 않습니다. 제 생각에는 Arduino로 시작하고 어느 정도 레벨을 얻었을 때 마이크로 컨트롤러로 이동하는 것이 좋습니다.


2
나는 게시 된 시간을 보지 않고 제안 된 주제에 나에게 나타 났으며 나는 단지 도움을 원했습니다.
Manuel Joaquín
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.