Hellow hubr из esp32 с исползованием Platformio и framework espidf

в 10:07, , рубрики: diy или сделай сам, программирование микроконтроллеров, умный дом

1 Start

Приветствую %user% в данной статье мы быстро пробежимся о том как собрать и настроить корабль для путешествие в дивный чудный мир iot на esp32 .

1.1 Используемые П.О и устройства

  • Kubunty 18 ->
    Linux x 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  • Текстовый редактор Atom
    Atom: 1.26.1
    Electron: 1.7.11
    Chrome: 58.0.3029.110
    Node: 7.9.0
  • Toolchain разработки PlatformIO
    Home 1.0.6
    Core 3.6.2a2
  • TTGO MINI32 V2.0 ESP32

1.2 Первоначальная настройка

Начнем с установки текстового редактора Atom:

wget -O atom-amd64.deb https://atom.io/download/deb

Gdebi

программа для установки deb пакетов. Преимущество её в том, что она может устанавливать deb пакеты, используя автоматическое разрешение зависимостей (автоматически загружает и устанавливает необходимые пакеты). И ещё не нужно запускать Центр приложений Ubuntu для установки загруженного deb пакета в графическом режиме, а для этой цели используется легковесный конкретный инструмент.

Далее установим gdebi которую мы будем использовать для установки ранее загруженного пакета Atom. А также clang.

sudo apt install gdebi-core clang 

Используем gdebi для установки пакета с зависимостями .

sudo gdebi atom-amd64.deb 

Проверим на работоспособность командой atom в консоле

Platformio настройка

1.Для начала устоновим нужные пакеты в атом для этого
надо перейти Menu: Edit > Preferences > Install
2.Провести поиск пакета platformio-ide
3.Установить кликнув install .

Ещё один способ установки ввести в командную строку

 apm install platformio-ide 

Также можно посмотреть, установилось ли или нет командой :

 apm list 
 apm list | grep platformio 

мой список пакетов

Built-in Atom Packages (92)
├── atom-dark-syntax@0.29.0
├── atom-dark-ui@0.53.2
├── atom-light-syntax@0.29.0
├── atom-light-ui@0.46.2
├── base16-tomorrow-dark-theme@1.5.0
├── base16-tomorrow-light-theme@1.5.0
├── one-dark-ui@1.11.0
├── one-light-ui@1.11.0
├── one-dark-syntax@1.8.2
├── one-light-syntax@1.8.2
├── solarized-dark-syntax@1.1.4
├── solarized-light-syntax@1.1.4
├── about@1.8.0
├── archive-view@0.64.3
├── autocomplete-atom-api@0.10.7
├── autocomplete-css@0.17.5
├── autocomplete-html@0.8.4
├── autocomplete-plus@2.40.5
├── autocomplete-snippets@1.12.0
├── autoflow@0.29.3
├── autosave@0.24.6
├── background-tips@0.28.0
├── bookmarks@0.45.1
├── bracket-matcher@0.89.1
├── command-palette@0.43.5
├── dalek@0.2.2
├── deprecation-cop@0.56.9
├── dev-live-reload@0.48.1
├── encoding-selector@0.23.8
├── exception-reporting@0.43.1
├── find-and-replace@0.215.5
├── fuzzy-finder@1.8.1
├── github@0.12.0
├── git-diff@1.3.9
├── go-to-line@0.33.0
├── grammar-selector@0.50.0
├── image-view@0.62.4
├── incompatible-packages@0.27.3
├── keybinding-resolver@0.38.1
├── line-ending-selector@0.7.5
├── link@0.31.4
├── markdown-preview@0.159.20
├── metrics@1.2.6
├── notifications@0.70.5
├── open-on-github@1.3.1
├── package-generator@1.3.0
├── settings-view@0.254.2
├── snippets@1.3.3
├── spell-check@0.73.4
├── status-bar@1.8.15
├── styleguide@0.49.10
├── symbols-view@0.118.2
├── tabs@0.109.1
├── timecop@0.36.2
├── tree-view@0.221.3
├── update-package-dependencies@0.13.1
├── welcome@0.36.6
├── whitespace@0.37.5
├── wrap-guide@0.40.3
├── language-c@0.59.3
├── language-clojure@0.22.7
├── language-coffee-script@0.49.3
├── language-csharp@1.0.1
├── language-css@0.42.10
├── language-gfm@0.90.3
├── language-git@0.19.1
├── language-go@0.45.3
├── language-html@0.49.0
├── language-hyperlink@0.16.3
├── language-java@0.29.0
├── language-javascript@0.128.5
├── language-json@0.19.1
├── language-less@0.34.2
├── language-make@0.22.3
├── language-mustache@0.14.5
├── language-objective-c@0.15.1
├── language-perl@0.38.1
├── language-php@0.43.2
├── language-property-list@0.9.1
├── language-python@0.49.4
├── language-ruby@0.71.4
├── language-ruby-on-rails@0.25.3
├── language-sass@0.61.4
├── language-shellscript@0.26.3
├── language-source@0.9.0
├── language-sql@0.25.10
├── language-text@0.7.4
├── language-todo@0.29.4
├── language-toml@0.18.2
├── language-typescript@0.3.3
├── language-xml@0.35.2
└── language-yaml@0.32.0

Community Packages (16) ~/.atom/packages
├── Hydrogen@2.6.0
├── atom-beautify@0.33.4
├── autocomplete-clang@0.11.5
├── build@0.70.0
├── busy-signal@1.4.3
├── file-icons@2.1.26
├── intentions@1.1.5
├── language-ini@1.20.0
├── linter@2.2.0
├── linter-gcc@0.7.1
├── linter-ui-default@1.7.1
├── minimap@4.29.9
├── platformio-ide@2.2.4
├── platformio-ide-debugger@1.2.6
├── platformio-ide-terminal@2.8.4
└── tool-bar@1.1.10

Последнее этого перезапускам atom

Настройка проекта

Сначала добавте в .bash.rc это очень упрощяет жизнь:

livehack

 alias mt1p11="pio device monitor --port /dev/ttyUSB1 --baud 115200" 
 alias mt1p9="pio device monitor --port /dev/ttyUSB1 --baud 9600" 
 alias mt0p11="pio device monitor --port /dev/ttyUSB0 --baud 115200" 
 alias mt0p9="pio device monitor --port /dev/ttyUSB0 --baud 9600" 
 alias pir="pio run --target upload" 
 alias pir0="pir  --upload-port /dev/ttyUSB0" 
 alias pir1="pir  --upload-port /dev/ttyUSB1" 

Для запуска проекта в PlatformIO вы можете найти в дополнительную панель инструментов PlatformIO значёк дома.

Давайте создадим первый проект

  • Зайдите в ’домик’
  • Нажмите New project
  • В борд введите esp выбирете любую, если не нашли вашу
  • Framework ESP-IDF
  • FINISH
    После этого выберете фаил в деректории Platformio.ini и вставте, но в board можете сохранить свою платку если есть. :

Platformio.ini

[ env:esp32 ]
platform = espressif32
board = featheresp32
framework = espidf
monitor_baud = 115200
upload_speed= 115200

Ну вот и мы подготовили основу для проекта, теперь осталось написать проект.
-нажмите A и введите /scr/main.c или наведите на scr и создайте файл main.c
Вставте:

main.c

 #include <stdio.h> 
        #include "freertos/FreeRTOS.h" 
        #include "freertos/task.h" 
        #include "driver/gpio.h" 
        #include "sdkconfig.h" 

        void app_main() 
        {while(1){ 
        printf("Helow habrn"); 
        } 
        } 

! если интересно можете изучить примеры на git
-вставте код и сохранит в main.c .

  • Подключить вашу esp32
    Ну вот и всё осталось только скомпилировать. Для этого существует несколько способов:

    1. На тулбаре Platformio нажмите buld затем upload (галочка и стрелочка) .
    2. В меню атома выбрать PlatformioIO-> Terminal -> New terminal;
      В появившемся терминале вписать ( я лично в bash.rc прописал путь к бинарникам платформио и использую его в обычном терминале )

      pio run --target build
      pio run --target upload

      Или воспользоватся псевдонимами pir0 или pir2
      Также для команды pio есть доп опции которые можно посмотреть тык

Автор: Командир судна

Источник

Поделиться

* - обязательные к заполнению поля