randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/

 

Installing ESP32 in Arduino IDE (Windows, Mac OS X, Linux) | Random Nerd Tutorials

Learn how to install the ESP32 board add-on in Arduino IDE in less than 1 minute. This guides works in any operating system: Windows PC, Mac OS X, and Linux.

randomnerdtutorials.com

 

 

 

There’s an add-on for the Arduino IDE that allows you to program the ESP32 using the Arduino IDE and its programming language. In this tutorial we’ll show you how to install the ESP32 board in Arduino IDE whether you’re using Windows, Mac OS X or Linux.

Watch the Video Tutorial

This tutorial is available in video format (watch below) and in written format (continue reading this page). 

 

If you have any problems during the installation procedure, take a look at the ESP32 Troubleshooting Guide.

If you like the ESP32, enroll in our course: Learn ESP32 with Arduino IDE.

Prerequisites: Arduino IDE Installed

Before starting this installation procedure, make sure you have the latest version of the Arduino IDE installed in your computer. If you don’t, uninstall it and install it again. Otherwise, it may not work.

Having the latest Arduino IDE software installed from arduino.cc/en/Main/Software, continue with this tutorial.

Do you need an ESP32 board? You can buy it here.

Installing ESP32 Add-on in Arduino IDE

To install the ESP32 board in your Arduino IDE, follow these next instructions:

  1. In your Arduino IDE, go to File> Preferences
  2. Enter https://dl.espressif.com/dl/package_esp32_index.json into the “Additional Board Manager URLs” field as shown in the figure below. Then, click the “OK” button:

    https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. Note: if you already have the ESP8266 boards URL, you can separate the URLs with a comma as follows:
  4.  
  5. Open the Boards Manager. Go to Tools > Board > Boards Manager…
  6. Search for ESP32 and press install button for the “ESP32 by Espressif Systems“:
  7. That’s it. It should be installed after a few seconds.

 

Testing the Installation

Plug the ESP32 board to your computer. With your Arduino IDE open, follow these steps:

1. Select your Board in Tools > Board menu (in my case it’s the DOIT ESP32 DEVKIT V1)

 

2. Select the Port (if you don’t see the COM Port in your Arduino IDE, you need to install the CP210x USB to UART Bridge VCP Drivers):

3. Open the following example under File > Examples > WiFi (ESP32) > WiFiScan

 

4. A new sketch opens in your Arduino IDE:

 

5. Press the Upload button in the Arduino IDE. Wait a few seconds while the code compiles and uploads to your board.

6. If everything went as expected, you should see a “Done uploading.” message.

7. Open the Arduino IDE Serial Monitor at a baud rate of 115200:

 

8. Press the ESP32 on-board Enable button and you should see the networks available near your ESP32:

Troubleshooting

If you try to upload a new sketch to your ESP32 and you get this error message “A fatal error occurred: Failed to connect to ESP32: Timed out… Connecting…“. It means that your ESP32 is not in flashing/uploading mode.

Having the right board name and COM por selected, follow these steps:

  • Hold-down the “BOOT” button in your ESP32 board

 

  • Press the “Upload” button in the Arduino IDE to upload your sketch:

  • After you see the  “Connecting….” message in your Arduino IDE, release the finger from the “BOOT” button:

  • After that, you should see the “Done uploading” message

That’s it. Your ESP32 should have the new sketch running. Press the “ENABLE” button to restart the ESP32 and run the new uploaded sketch.

You’ll also have to repeat that button sequence every time you want to upload a new sketch. But if you want to solve this issue once for all without the need to press the BOOT button, follow the suggestions in the next guide:

If you experience any problems or issues with your ESP32, take a look at our in-depth ESP32 Troubleshooting Guide.

Wrapping Up

This is a quick guide that illustrates how to prepare your Arduino IDE for the ESP32 on a Windows PC, Mac OS X, or Linux computer. If you encounter any issues during the installation procedure, take a look at the ESP32 troubleshooting guide.

Now, you can start building your own IoT projects with the ESP32!

 

Thanks for reading.

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요

Git으로 버젼 관리를 하며 개발하다보면, 작성한 커밋들을 되돌려서 다시 이전 상태로 원상복구하고 싶은 경우가 한번쯤 있을 것이다.
만약 로컬까지만 저장된 커밋인 경우는 $ git reset 명령어를 이용해 쉽게 커밋을 되돌릴 수 있지만, 이 커밋이 GitHub과 같은 원격 저장소까지 이미 올라갔다면 얘기는 조금 달라진다.
이 글에서는 이를 해결하기 위한 몇가지 방법들을 하나씩 소개하려고 한다.

원격 저장소로는 가장 대중적으로 사용되고 있는 GitHub을 사용하였습니다.

우선 아래와 같이 "Commit A", "Commit B", "Commit C" 세 개의 커밋들을 모두 푸시까지 한 상태에서 되돌리고 싶은 상황이라고 가정해보자.
참고로 세 커밋의 작업 내용은 아래와 같다.

  • Commit A: A.txt 생성 (b31064c29b55f826d1dae3f1bddecc4a27a10e36)
  • Commit B: B.txt 생성 (16e2e7f1789973a227a5e6bb47221ed683a8b1ae)
  • Commit C: C.txt 생성 (03001425c69fe8eccf219db243d9ecc9a60d64b8)


1. 로컬에서 커밋 되돌린 후 강제 푸시

첫번째 방법은 로컬 저장소에서 일단 커밋을 되돌린 후, 이를 원격 저장소에 강제로 반영시키는 방법이다.

방법

먼저 로컬에서 $ git reset 명령어를 이용해 내가 되돌리고 싶은 커밋들을 되돌린다.

$ git reset --hard HEAD~3

그리고 난 후, $ git push를 실행하면

$ git push origin master

아래와 같은 에러 문구가 나타날 것이다.

로컬 저장소의 커밋 히스토리가 원격 저장소의 커밋 히스토리보다 뒤쳐져 있는데 푸시를 하였으므로 발생하는 에러이다. 하지만 지금 우리가 원하는 것은 이 뒤쳐져 있는 로컬 저장소의 커밋 히스토리를 원격 저장소의 커밋 히스토리로 강제로 덮어쓰는 것이므로 이를 위한 옵션 -f 또는 --force 를 명령어에 추가하여야 한다.

$ git push -f origin master

GitHub 페이지를 통해 원격 저장소에서의 커밋이 되돌려졌음을 확인할 수 있다.

주의사항

이 방법을 이용하면 원격 저장소에 흔적도 없이 내가 만들었던 커밋들을 제거할 수 있으므로 겉보기에는 가장 깔끔한 해결책으로 보인다.
하지만 만약 해당 브랜치가 팀원들과 공유하는 브랜치이고, 내가 커밋들을 되돌리기 전에 다른 팀원이 혹시나 내가 작성한 커밋들을 이미 pull로 땡겨갔다면, 그때부터 다른 팀원의 로컬 저장소에는 내가 되돌린 커밋들이 남아있게 된다.
그 커밋들이 되돌려진 사실을 모르는 팀원은 자신이 작업한 커밋들과 함께 push할 것이고, 그 때 내가 되돌렸던 커밋들이 다시 원격 저장소에 추가되게 된다.

따라서 이 방법은 다른 팀원이 내가 되돌린 커밋들을 pull로 땡겨가지 않았다고 확신할 수 있는 경우,
예를 들어,

  • 나 혼자만 사용하는 브랜치에 커밋을 push하였고, 이를 되돌리고 싶은 경우
  • 팀원들과 직접 커뮤니케이션해서 내가 되돌린 커밋을 pull로 땡겨간 팀원이 없다고 확인된 경우

이러한 경우에는 안전하고 간편하게 사용할 수 있는 방법이다.


2. git revert 사용하기

앞서 1번 방법에서 발생했던 근본적인 문제점은 다른 팀원들과 공유하는 원격 저장소의 커밋 히스토리를 강제로 조작한다는 점이었다.
이 때, $ git revert 명령어를 사용하여 revert 커밋을 커밋 히스토리에 쌓는 방식을 사용한다면 이러한 문제점을 막을 수 있다. 쉽게 말해서, 특정 커밋을 되돌리는 작업도 하나의 커밋으로 간주하여 커밋 히스토리에 추가하는 것이므로, 내가 되돌린 작업을 다른 팀원들과도 공유할 수 있게 된다.

방법

$ git revert [되돌리고 싶은 commit의 hash]는 특정 커밋에서의 변경 사항을 제거하는 또 다른 커밋을 생성하는 명령어이다.
따라서 Commit A -> Commit B -> Commit C 커밋의 순서로 커밋 히스토리가 쌓여있는걸 생각해봤을 때,
이를 다시 원래대로 돌리기 위해서는 Commit C -> Commit B -> Commit A 순서로 거꾸로 revert하여야 한다(우리가 흔히 사용하는 "실행취소"를 생각하면 이해하기 쉽다.).

$ git revert 03001425c69fe8eccf219db243d9ecc9a60d64b8 # Revert "Commit C" $ git revert 16e2e7f1789973a227a5e6bb47221ed683a8b1ae # Revert "Commit B" $ git revert b31064c29b55f826d1dae3f1bddecc4a27a10e36 # Revert "Commit A"

커밋 로그를 보면 알 수 있듯이, 이렇게 하면 되돌리고 싶은 커밋의 수만큼의 불필요한 revert 커밋이 생겨난다. 즉, 되돌리고 싶은 커밋이 100개라면 100개의 revert 커밋을 추가해야한다.
이때 --no-commit 옵션을 이용하면, revert를 위한 커밋을 하나만 생성할 수도 있다.
$ git revert --no-commit [되돌리고 싶은 commit의 hash] 을 실행하면, 아까처럼 revert 커밋이 자동으로 생성되는게 아니라 working tree와 index(staging area)에만 변경 사항이 적용된다.

$ git revert --no-commit 03001425c69fe8eccf219db243d9ecc9a60d64b8 # Revert "Commit C" $ git revert --no-commit 16e2e7f1789973a227a5e6bb47221ed683a8b1ae # Revert "Commit B" $ git revert --no-commit b31064c29b55f826d1dae3f1bddecc4a27a10e36 # Revert "Commit A"

하지만 이 방법도 역시 일일히 revert할 커밋의 수만큼 명령어를 반복해서 실행해야한다는 단점이 있다.
다행히 $ git revert 는 특정 커밋 하나뿐만 아니라 복수개의 커밋에 대해서도 revert를 지원해주고 있다. 그때는 특정 커밋의 hash아닌 [되돌리고 싶은 커밋의 범위] 를 인수로 입력해주면 된다.

$ git revert --no-commit HEAD~3.. # 또는 master~3..master

마지막으로 index에 올라간 변경들을 한꺼번에 커밋한 다음, 원격 저장소에 푸시하면 된다.

$ git commit -m 'Revert "Commit C, B, A"'

$ git push origin master

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요

Problem

I am stuck in a loop where running npm run watch says it cannot find cross-spawn.

 

 

> @ watch /Users/donnie/Github/laravel_project
> npm run development -- --watch


> @ development /Users/donnie/Github/laravel_project
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js "--watch"

module.js:549
    throw err;
    ^

Error: Cannot find module 'cross-spawn'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/donnie/.yarn-cache/npm-cross-env-5.2.0/dist/index.js:5:19)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ development: `cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js "--watch"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/donnie/.npm/_logs/2019-01-22T21_57_39_199Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ watch: `npm run development -- --watch`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ watch script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/donnie/.npm/_logs/2019-01-22T21_57_39_227Z-debug.log

 

 

 

 

1 Answer

ActiveOldestVotes

5

Running npm rebuild then npm install should fix the problem. Now, running npm run dev should build fine.

I believe this issue has something to do with bad file permissions and npm rebuild seems to sort things out.

 

 

stackoverflow.com/questions/54328631/endless-loop-cannot-find-cross-spawn

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요

 

 

Git rebasing 을 진행하는 도중에는 예전의 Commit History 가 다시 뜨면서 

hash 값과 동시에 해당 파일에 대해서 어떤 부분이 필요하고

 

 

어떤 부분이 충돌나는지를 알려준다.

필요없는 파일은 revert 시켜버리고, 넣을 파일은 add를 하면된다.

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요

공유하고 업데이트하기

Git에는 네트워크가 필요한 명령어가 많지 않다. 거의 로컬 데이터베이스만으로 동작한다. 코드를 공유하거나 가져올 때 필요한 명령어가 몇 개 있다. 이런 명령어는 모두 리모트 저장소를 다루는 명령어다.

git fetch

git fetch 명령은 로컬 데이터베이스에 있는 것을 뺀 리모트 저장소의 모든 것을 가져온다.

리모트 저장소를 Pull 하거나 Fetch 하기에서 이 명령을 설명하고 리모트 브랜치에 보면 참고할 수 있는 예제가 더 있다.

프로젝트에 기여하기에도 좋은 예제가 많다.

Ref를 한 개만 가져오는 방법은 Pull Request의 Ref에서 설명하고 번들에서 가져오는 방법은 Bundle에서 설명한다.

Fetch 하는 기본 Refspec을 수정하는 방법은in Refspec에서 설명한다. 원하는 대로 수정할 수 있다.

git pull

git pull 명령은 git fetch  git merge 명령을 순서대로 실행하는 것뿐이다. 그래서 해당 리모트에서 Fetch 하고 즉시 현 브랜치로 Merge를 시도한다.

리모트 저장소를 Pull 하거나 Fetch 하기에서 이 명령을 사용하는 방법을 다뤘고 정확히 무엇을 Merge 하는 지는 리모트 저장소 살펴보기에서 설명한다.

Rebase 한 것을 다시 Rebase 하기에서 그 어렵다는 Rebase를 다루는 방법을 설명한다.

저장소 URL을 주고 한 번만 Pull 해 올 수 있다는 것을 리모트 브랜치로부터 통합하기에서 설명한다.

--verify-signatures 옵션을 주면 Pull 할 때 커밋의 PGP 서명을 검증한다. PGP 서명은 커밋에 서명하기에서 설명한다.

git push

git push 명령은 리모트에는 없지만, 로컬에는 있는 커밋을 계산하고 나서 그 차이만큼만 Push 한다. Push를 하려면 원격 저장소에 대한 쓰기 권한이 필요하고 인증돼야 한다.

리모트 저장소에 Push 하기에서 git push 명령으로 브랜치를 원격 저장소에 Push 하는 방법을 설명한다. 조금 깊게 브랜치를 하나씩 골라서 Push 하는 방법은 Push 하기에서 설명한다. 자동으로 Push 하도록 트래킹 브랜치를 설정하는 방법은 브랜치 추적에서 설명한다. git push --delete 명령으로 원격 서버의 브랜치를 삭제하는 방법은 리모트 브랜치 삭제에서 설명한다.

프로젝트에 기여하기에서는 `git push`를 주구장창 사용한다. 리모트를 여러 개 사용해서 브랜치에 작업한 내용을 공유하는 것을 보여준다.

--tags 옵션을 주고 태그를 Push 하는 방법은 태그 공유하기에서 설명한다.

서브모듈의 코드를 수정했을 때는 --recurse-submodules 옵션이 좋다. 프로젝트를 Push 할 때 서브모듈에 Push 할 게 있으면 서브모듈부터 Push 하므로 매우 편리하다. 이 옵션은 서브모듈 수정 사항 공유하기에서 설명한다.

기타 훅에서 pre-push 훅에 대해서 설명했다. 이 훅에 Push 해도 되는지 검증하는 스크립트를 설정하면 규칙에 따르도록 Push를 검증할 수 있다.

일반적인 이름 규칙에 따라서 Push 하는 것이 아니라 Refspec을 사용해서 원하는 이름으로 Push 하는 것도 가능하다. 이것은 Refspec Push 하기에서 설명한다.

git remote

git remote 명령은 원격 저장소 설정인 리모트의 관리 도구다. 긴 URL 대신 “origin” 처럼 이름을 짧게 지을 수 있다. 그리고 URL대신 짧은 리모트 이름을 사용한다. git remote 명령으로 이 리모트를 여러 개 만들어 관리할 수 있다.

이 리모트를 조회하고 추가하고 삭제하고 수정하는 방법은 리모트 저장소에서 잘 설명한다.

이 명령은 git remote add <name> <url> 형식으로 사용하고 이 책에서 자주 사용된다.

git archive

git archive 명령은 프로젝트 스냅샷을 아카이브 파일로 만들어 준다.

릴리즈 준비하기에서 설명하는데 프로젝트를 Tarball로 만들어 공유할 때 사용한다.

git submodule

git submodule 명령은 저장소 안에서 다른 저장소를 관리하는 데 사용한다. 라이브러리나 특정 형식의 리소스 파일을 서브모듈로 사용할 수 있다. submodule 명령에 있는 add, update, sync 등의 하위 명령어로 서브모듈을 관리할 수 있다.

이 명령은 서브모듈에서 설명한다.

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요

Section 14.3: 원격 브랜치 삭제하기

"origin" 원격 저장소의 브랜치를 삭제하려면, Git 1.5.0 이후 버전에서는 아래와 같이 입력할 수 있고,

git push origin :<branchName>

 

Git 1.7.0 이후 버전에서는 아래와 같이 입력할 수 있다 .

git push origin --delete <branchName>

 

원격 브랜치를 추적(tracking) 하는 로컬 브랜치를 삭제하려면 아래와 같이 수행한다:

git branch --delete --remotes <remote>/<branch> git branch -dr <remote>/<branch> # 위 명령어의 축약버전 git fetch <remote> --prune # 유효하지 않은 tracking 브랜치들을 일괄 삭제한다 git fetch <remote> -p # 축약 버전

로컬 브랜치를 삭제하려면 아래와 같이 수행한다. 대상 브랜치에 다른 브랜치로 merge 되지 않은 변경사항이 있을 경우에는 삭제가 되지 않음에 유의하라:

 

git branch -d <branchName>

 

merge 되지 않은 변경사항이 존재하는 경우에도 삭제를 강행하려면 아래와 같이 입력한다:

git branch -D <branchName>

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요

github.com/Microsoft/vscode-eslint/issues/28

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요

Fork 한 repository 를 최신으로 동기화시켜야 할 때가 있다.

  • Open Source 에 단발성이 아닌 지속적으로 contribution 하려 할 때
  • 수정해서 사용하기 위해 fork 해온 원본 repository 에서 업데이트된 부분을 받아올 때
  • 기타 등등

 

이를 위해서는 먼저 원본 repository 를 remote repository 로 추가해야 한다.

Fork 해온 repository 에서 remote repository 를 확인하면 아래와 같이 나올 것이다.

1

$ git remote -v

2

origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)

3

origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

 

여기에 동기화해오고 싶은 원본 repository 를 upstream 이라는 이름으로 추가한다.

 

1

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

 

upstream repository 가 제대로 추가 되었는지 확인한다.

 

1

$ git remote -v

2

origin   https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)

3

origin   https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

4

upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)

5

upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

 

 

이제 upstream repository 로부터 최신 업데이트를 가져올 차례이다.

Git 의 fetch 명령어를 통해 upstream repository 의 내용을 불러온다.

 

1

$ git fetch upstream

2

remote: Counting objects: 75, done.

3

remote: Compressing objects: 100% (53/53), done.

4

remote: Total 62 (delta 27), reused 44 (delta 9)

5

Unpacking objects: 100% (62/62), done.

6

From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY

7

* [new branch]     master     -> upstream/master

 

upstream repository 의 master branch (혹은 원하는 branch) 로부터 나의 local master branch 로 merge 한다.

 

1

$ git checkout master

2

Switched to branch 'master'

3

4

$ git merge upstream/master

5

Updating a422352..5fdff0f

6

Fast-forward

7

README                   |   9 -------

8

README.md                 |   7 ++++++

9

2 files changed, 7 insertions(+), 9 deletions(-)

10

delete mode 100644 README

11

create mode 100644 README.md

 

이 과정까지는 local repository 에서 일어난 것이므로 push 를 통해 remote repository 에도 적용시켜주면 완료!

 

1

$ git push origin master

 

 

참조json.postype.com/post/210431

 

[Git] Fork 한 repository 최신으로 동기화하기

Fork 한 repository 를 최신으로 동기화시켜야 할 때가 있다. Open Source 에 단발성이 아닌 지속적으로 contribution 하려 할 때수정해서 사용하기 위해 fork 해온 원본 repository 에서 업데이트된 부분을 받아

json.postype.com

 

 

 

 

 

rebasing 을 진행할 때에 이미 스테이징 상태에 올라가 있기 때문에

지속적으로 rebasing 을 진행할 수가 없다.

 

그래서 스테이징 상태에서 일시적으로 해제시킨 후에

다시 브랜치를 바꿔주고 rebasing 을 진행시켰다.

 

 

 

 

중간 중간에 rebasing 에서 conflict 나는것들은 그냥 skip을 날려버렸다.

abort 할껄 그랬나..?

블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요