Знакомство с платой micropython

Знакомство с платой MicroPython

MicroPython – проект, ставящий перед собой целью портирование Python на микроконтроллеры STM. В ноябре прошлого года Damien George, британский физик-теоретик, увлекающийся электроникой и робототехникой, опубликовал на Kickstarter проект платы с микроконтроллером STM, писать код для которой возможно на языке Python.

Проект резко набрал популярность и сборы в 6 раз превысили ожидаемые. За полгода автору удалось сделать и отослать поддержавшим его проект энтузиастам рабочие прототипы, а также запланировать новый цикл производства для тех, кто заинтересован в получении платы.

Проект получил довольно большое количество разработчиков как версии Python для микроконтроллеров STM, так и для библиотек для работы с внешними устройствами. 

Каковы преимущества платы MicroPython? Во-первых, цена оригинальной платы сравнима с ценами на оригинальные платы Arduino – и это при кардинально различающихся возможностях.

 Во-вторых, Python – язык более высокоуровневый и простой, чем Wiring для Arduino или же C для AVR, что, несомненно, является плюсом для начинающих.

 После нового цикла производства, когда платы будут доступны всем желающим, ожидается ещё больший приток популярности и дальнейшее увеличение ниши MicroPython в электронных проектах.

 В-третьих, для использования программного обеспечения MicroPython необязательно иметь оригинальную плату – можно скомпилировать ПО под другой подходящий МК от STM (об этом расскажу позднее) или даже использовать как минималистичную и очень быструю версию Python на ПК. На данный момент заявлена начальная поддержка для плат NetDuino Plus 2, STM Discovery STM32F407 и Teensy 3.1. Более актуальный список поддерживаемых плат доступен здесь.

Возможности

Как можно увидеть, плата имеет огромное количество GPIO и различных интерфейсов. К примеру, можно сравнить её с платой Arduino Uno:

 Arduino UnoMicroPythonЦенаПлатформаЯзык программированияРазмерROM для кодаGPIO/ADC/DACИнтерфейсыПлюсы из коробкиДополнительно
20EUR (оригинальная) 30EUR (оригинальная)
AVR STM
Wiring, C, Assembler (AVR)  Python, C, Assembler (STM)
2,7*2,1inch 1,7*1,6inch
16/32k 91к + расширение SD-картами
20/8/0 38/16/2
UART (объед. с USB), SPI, I2C,  6xUART, 2xSPI, 2xI2C, 2xCAN 
1xLED 2xLED, кнопка и I2C-акселерометр
Унифицированные слоты расширения  USB-OTG, USB-UART/HID/storage

При большей цене плата MicroPython выигрывает по размерам, памяти для кода и интерфейсам. Плюс – планируется плата-переходник с контактов PyBoard на шилды для Arduino, чтобы использовать уже существующие модули расширения. Энтузиасты пишут модули для работы с популярными внешними устройствами, написано уже многое.

Так получилось, что я стал обладателем и, позже, активным пользователем этой платы. Что я могу рассказать об использовании? И как же обстоит дело в реальности?

Unboxing, или самая бесполезная часть

Плата была упакована хорошо, в отдельной коробочке с антистатическими вкладками и даже двумя наклейками в комплекте. Правда, кабеля не было, но я взял из своих запасов.

Тут выяснилось, что очень многие USB-microUSB кабели – крайне чувствительные к движениям и постоянно норовят прервать соединение.

Пришлось найти короткий с толстой изоляцией, отлично подошёл и до сих пор работает без каких-либо проблем. 

Первое впечатление после беглого осмотра и проверки уже существующих возможностей – восхищение. Плата очень маленькая, но хорошо скомпонована, проблем с разводкой не наблюдается, все нужные контакты на месте. 

Уже работающие возможности

  • Интерактивная консоль Python через виртуальный последовательный порт через USB. Это отличная помощь в разработке, которая, естественно, не могла не появиться на этой плате. Все те возможности, которые поддерживаются скриптами, а также новые возможности платы, которые порой появляются при обновлении прошивки, можно перед этим испытать в консоли. USB – хардварный, на самом чипе STM, без посредников типа FT232.  
  • Встроенный акселерометр. Да, это то, с чем можно работать, достав плату из коробки, то, что связывает плату с внешним миром. Что-то похожее я встречал разве что в более специфичных проектах, вроде Arduino Esplora, и это, как по мне, помогает оценить возможности платы, даже ничего не припаивая.
  • USB storage для скриптов. Не нужно подключать карту для более простых проектов – 100 килобайтов для кода к вашим услугам, и они доступны как простая папка с файлами при подключении к компьютеру. Последним порой не могут похвастаться даже самые новые смартфоны 😉
  • USB HID как приятное дополнение. Пока поддерживается только имитация мыши, клавиатура ожидается в скором времени – и, несомненно, ей найдётся применение. Также скоро обещают сделать USB-OTG – это резко расширит возможности платы, хоть и потребуется дополнительная рабочая сила для разработки драйверов. 
  • Обновление через USB. Для плат STM это довольно стандартная возможность, но не везде она сделана так, чтобы использовать её было реально удобно. 
  • Доступные модули для SPI/I2C/UART/ADC/DAC. В сочетании с интерактивной консолью – можно считать это частичной заменой Bus Pirate (популярный инструмент, использующийся в том числе как консоль для работы с различными протоколами). Конечно, в плане функций Bus Pirate является ещё много чем, но если можно использовать уже существующий инструмент для выполнения части задач – почему бы и нет?
  • Логические уровни – 3.3В, но все GPIO пины, кроме двух, принимают 5В. К слову, на плате установлен линейный регулятор с низким падением напряжения, минимальное напряжение на его входе – 3.6 вольт, что позволяет запитать плату от одной 3.7В LiIon/LiPo батареи или трёх AAA/AA.

Подключил к ноутбуку с Linux, сразу же появился последовательный порт, плюс внешний диск – память самой платы. В памяти хранятся скрипты, readme и драйвер для Windows, что довольно удобно и напоминает USB 3G-модемы.

Обновление прошивки

К несчастью, когда я начал работу с интерактивной консолью, появились проблемы: используя примеры с официального сайта, я наткнулся на кучу исключений там, где их не должно было быть.

Оказалось, что нужно было просто-напросто обновить прошивку.

Это оказалось сделать очень просто – замкнуть на плате два контакта, подключить плату к компьютеру и скормить свежескачанный сегодняшний образ прошивки специальной программе.

А на этом месте поподробнее…

Инструкция для Windows есть здесь, а для Linux потребуются следующие манипуляции:

  1. Скачать файл последней прошивки отсюда
  2. Установить утилиту dfu-util (в Debian/Ubuntu находится в пакете dfu-util)
  3. Замкнуть на PyBoard контакты DFU и 3V3
  4. Подключить PyBoard к компьютеру
  5. Запустить команду 

sudo dfu-util –alt 0 -D путь/к/файлу/прошивки.dfu

После прошивки и переподключения платы прошивка будет обновлена. В моём случае – после перепрошивки всё заработало нормально.

Оказалось, что плате не нравится горячее извлечение. Если быть точным, то не нравится это встроенной памяти, файловая система которой – FAT. После одного извлечения список файлов перестал читаться, но всё прошло после проверки файловой системы на ошибки.

Windows чаще всего предлагает сделать это автоматически, а в Linux всё решается одним запуском fsck. Однако же мне удалось один раз в силу забывчивости потерять пару скриптов, которые набросал на скорую руку и которые просто не успели синхронизироваться с файловой системой из-за внезапного извлечения.

При использовании советую учитывать этот маленький нюанс и “извлекать” встроенную память перед отсоединением кабеля.

​Написание первого скрипта

Тут всё очень просто. Подключаю плату как диск:

Для начала работы нужно изменить файл boot.py. Это файл, в котором хранятся настройки для запуска платы. В принципе, там можно хранить и код самой программы, но лучше использовать для этого файл main.py, который мы и подключим, раскомментировав следующую строку:

Отлично. Теперь открываем файл main.py:

Пишем в нём самый простой код, который зажигает два светодиода и попеременно мигает ими по очереди с интервалом в одну секунду. led.toggle() обозначает переключение состояния светодиода на противоположное. Сохраняем, перезапускаем – мигает. 

К слову, хорошая коллекция демо-скриптов есть в этом репозитории на GitHub. 

Сброс к заводским настройкам

У PyBoard есть две функции на случай возникновения проблем – безопасный режим (игнорирование файлов boot.py&main.py) или же сброс к чистой ФС. Первый способ полезен, когда из-за бесконечного цикла в коде/неправильного режима USB проблему трудно исправить, но она в целом несущественна.

Второй способ полезен в случае каких-либо серьёзных проблем, вроде повреждений ФС, но полностью уничтожает данные на ней. Для перехода к этим функциям отключаем плату от компьютера, затем зажимаем кнопку USR (левая) и подключаем обратно.

После этого,  всё ещё держа кнопку USR, щёлкаем кнопкой RST (правая) и дожидаемся момента, когда будут мигать оранжевый и зелёный светодиоды:

  • Для безопасного режима отпускаем кнопку USR в момент, когда будет гореть только оранжевый светодиод. Он мигнёт 4 раза, после этого будет активирован безопасный режим, во время которого можно подключиться к последовательному порту или примонтировать файловую систему.
  • Для сброса к заводским настройкам отпускаем кнопку USR в момент, когда будут гореть и оранжевый, и зелёный светодиоды. Они мигнут 4 раза, после этого загорится красный светодиод. Когда он потухнет, сброс закончится. Для того, чтобы продолжить работу с платой, просто щёлкните кнопкой RST. 

Последняя заметка – имеющуюся у меня плату не удастся просто так подключить к какому-нибудь устройству. Почему? Не напаяны контакты. Это можно и нужно исправить, официальный совет – напаять контактные группы типа “мама” так, чтобы контакты приходились на лицевую сторону платы, к примеру, так:

Или так:

Так я и сделаю, только контакты возьму более доступные для меня. В итоге получилось:

Выбор контактов обусловлен тем, что так труднее что-то закоротить, когда плата MicroPython не вставлена в какую-либо, но подключена к питанию, как и тем, что ответные контактные группы дешевле – а именно их потребуется больше всего, чтобы создавать различные шилды. Зачем напаивать контакты так, чтобы они приходились на лицевую часть? Всё очень просто. 

Полезна ли мне эта плата как разработчику? Да, несомненно. У меня е

сть проекты, где Raspberry Pi/любой другой SoM на Linux/OpenWRT – оверкилл, а Arduino – уже недостаточно, к примеру – обработка данных с датчиков положения и корректировка положения в пространстве, синтез звука, контроль большого числа устройств на I2C/SPI или же устройств с высокой скоростью передачи и т.п.

В процессе работы оказалось, что эта плата – отличный инструмент для прототипирования благодаря простому ЯП и возможности интерактивной отладки – теперь, прежде чем создавать библиотеку Arduino для какого-то нового проекта, я создаю модуль Python для MicroPython и проверяю на нём, так как таким образом уменьшается число ошибок при конвертации данных из даташита в код. В следующих статьях я обязательно расскажу и об этом подходе.

Думаю, что после следующего цикла производства я возьму себе ещё пару таких плат – или же, в крайнем случае, STM32F407 Discovery, на которую уже портировали MicroPython. Если я выберу последний вариант, то однозначно поделюсь статьёй на тему установки и настройки, а пока инструкции можно в сокращённом виде увидеть 

Источник: http://cxem.net/arduino/arduino131.php

Python для микроконтроллеров. Учимся программировать одноплатные компьютеры на языке высокого уровня – «Хакер»

Содержание статьи

Шутники говорят, что после трудового дня за компьютером типичный программист едет домой, садится за ПК и таким образом отдыхает. А ведь истина на самом деле куда ужаснее этой шутки: многие из нас, приходя с работы, посвящают оставшееся до сна время… программированию микроконтроллеров.

Источник: https://xakep.ru/2018/01/25/python-for-microcontrollers/

STM32 и Питон

Оказывается, существует реализация интерпретатора Python3.х для STM32. Сайт проэкта находится здесь. Проэкт стартовал на Кикстартере, были собраны средства (в декабре 2013 года) и софт на данный момент уже доступен для свободного скачивания в GitHub (Прямая ссылка для скачивания архива с исходниками).

Микропитон это легковесная имплементация стандартной версии интерпретатора CPython. На данный момент реализована полная поддержка синтаксиса интерпретатора версии 3.4. Поддерживаемые типы данных: str(пока что без поддержки Юникода), bytes, bytearray, tuple, list, dict, set,
array.array, collections.

namedtuple, classes and instances.
Встроенные в платформу модули это: sys, time и struct. Реализация встроенных модулей неполная. Они не содержат всех аттрибутов, которые содержит их компьютерная версия. А реализованные функции или классы не всегда имеют полноценную версию или полный набор методов соответственно.

Ограничено все по понятным причинам из за сложности реализации или же по причине бессмысленности определенных атрибутов на подобного рода платформах. Более подробно с набором аттрибутов можно ознакомиться с помощью терминала и встроенной функции dir() языка Питон а также читая документацию на Микропитон.

Выполнение программы может происходить как с внутренней памяти микроконтроллера так и с внешней карты памяти. Файлы просто записываются на устройство либо на карту памяти, а интерпритатор после загрузки устройства начинает их выполнять. Выполнение всегда начинается с файла boot.py и далее, если это явно не указано, выполняется main.py.

Следует заметить что проект еще находится в стадии ранней беты, и функциональность может расширятся со временем.

Официально поддерживаемая плата это pyboard v1.

0 (на плате STM32F405R, акселерометр Freescale MMA7660, 2 кнопки и 4 светодиода), но проэкт планируется для перевода на другие распространенные отладочные платы — список здесь. В этом списке можно увидеть, что уже существует порт в частности и под демоборду STM32F4DISCOVERY.

Теперь подробнее о запуске питона на STM32F4DISCOVERY.

Для того, чтобы получить прошивку для целевой платы STM32F4DISCOVERY, проект нужно сначала собрать. Для сборки используется кросс компилятор gcc-arm-none-eabi. Собирать проэкт нужно с папки /stmhal утилитой make. По умолчанию проэкт собирается для официальной платы, и для того чтобы собрать проэкт под нашу платформу, нужно указать это явно. Команда для сборки будет иметь уже следующий вид: make BOARD=STM32F4DISC. Результаты сборки будут находиться в /stmhal/build-STM32F4DISC. В этой папке, помимо обьектных файлов, находятся бинарники firmware0.bin и firmware1.bin а также файл firmware.elf. Бинарники по какой то причине разделены, поэтому прошивку заливать нужно из «исполняемого» файла firmware.elf. С firmware.dfu я не разбирался, но в туториалах с его помощью шьют через USB в режиме бутлоадера. Так как наша плата имеет ST-Link2 на борту, то прошивка через него, как по мне, актуальнее потому что не требует лишних «аппаратных» телодвижений ). Предварительно нужно «извлечь» прошивку в формате .hex из файла .elf через arm-none-eabi-objcopy firmware.elf -O ihex firmware.hex. Можно загрузить прямо с исполняемого файла через GDB сервер и arm-none-eabi-gdb — кто как любит. Далее прошиваем через встроенный отладчик с помощью ST-Link Utility или другой программы. Выходим с режима отладки и перезагружаем контроллер.

Теперь при подключении к microUSB разьему плата определяется как медиа устройство на 115кБ. Также поддерживается работа с платой в режиме терминала. Подключение к REPL Promt смотрим здесь. Выглядит это все таким образом:

Целевая плата STM32F4DISCOVERY «из коробки» поддерживает не весь функционал оригинальной платы. Из модуля поддержки платы pyb (описание) нету поддержки Accel(акселерометр, хоть оный и есть на плате но от другого производителя), Servo(сервомашинки) и почему то DAC(встроенные в чип ЦАПы). Нету также поддержки внешней карты памяти. Теперь попробуем написать простой пример. К порту PC1 подключен потенциометр. Каждые 500мс на канале PC1 выполняется преобразование АЦП и результат пишется во внутренню память в adc.dat. При этом моргает желтый светодиод. По нажатию пользовательской кнопки преобразования прекращаются и пишется время остановки. Загорается синий светодиод. Код выглядит так:Файл с данными:Таким образом можно организовать лог данных с АЦП. Благодаря мощным типам данных языка Питон их легко преобразовывать, фильтровать, искать пиковые значения и т.п… Код выглядит при этом компактнее чем на С. P. S.

Конечно похоже это все на очередную Ардуину. Функционал достаточно упрощенный, а возможности чипа используются очень минимально. Скорость выполнения так же относительно невысокая по сравнению с программой на С (тест).

С другой стороны интересна сама возможность и особенности работы интерпретатора на «железной» платформе. Возможно очень легко организовать лог каких то пользовательских данных с привязкой ко времени, например с датчика со SPI интерфейсом. Полезно будет для какой то пользовательской автоматики, где зачастую нужно поддерживать какой то параметр на уровне с определенным алгоритмом, так как высокая частота там в основном не нужна, а язык программирования достаточно мощный, чтобы абстрагироваться от низкоуровневых типов данных С и быстро написать и развить идею в физическую реализацию.

Источник: http://we.easyelectronics.ru/STM32/stm32-i-piton.html

Micro:bit, Компактный самодостаточный микрокомпьютер для обучения программированию на JavaScript и microPython

Артикул: Micro:bit

PartNumber: MB80 MB80

Ном. номер: 9000457406

Производитель: BBC MICRO:BITMicro: bit – это компактный самодостаточный микрокомпьютер для обучения программированию на JavaScript и microPython. Плата разработана компанией BBC для проведения уроков в младших классах. Плата интерактивна и проста в освоении — знакомство с micro: bit можно начинать с семи лет.

Яркие светодиоды, программируемые кнопки и встроенный набор датчиков позволяет создавать гаджеты без использования дополнительных модулей. Визуальная среда программирования Make Code компании Microsoft в игровой форме учит работать с платой. Программа собирается из отдельных блоков кода за десять–пятнадцать минут.

Что на борту

На плате предусмотрено сразу два микропроцессора ARM Cortex. Основной процессор обрабатывает пользовательские программы и обеспечивает работу Bluetooth модуля. Второй — отвечает за поддержку USB. Подключите плату к компьютеру и она появится в Проводнике как обычная флешка.

Чтобы не возится с подключением внешних модулей, а сразу приступить к созданию гаджетов, инженеры BBC встроили в плату набор сенсоров. Акселерометр показывает положение платы в пространстве, работает шагомером и реагирует на встряхивание. Магнитометр используется как компас, детектор металла и скрытой проводки или выступает в роли датчика Холла.

Температура в помещении определяется встроенным в процессор термометром. На обратной стороне платы собрана матрица из 25 красных светодиодов. На неё выводятся буквы, бегущие строки или простая пиксельная анимация. Девять из них используются в качестве сенсора уровня освещённости. Для управления платой предусмотрены три кнопки.

Одна используется для перезагрузки платы, две другие — программируемые, их назначение зависит от созданной программы.

Как начать программировать

Из коробки плата программируется с помощью облачной среды разработки на сайте microbit.org. Для первых уроков предлагается визуальная среда программирования Make Code, схожая со Scratch.

Комбинируя блоки команд, переменных и логических функций, ребёнок создаcт интерактивные проекты — фитнес-трекер, электронные часы с компасом, текстовую напоминалку, таймер обратного отсчёта и несколько электронных игр.

Отладка программ удобна и наглядна — в редакторе предусмотрен полноценный эмулятор устройства. В реальном времени на нём имитируется состояние светодиодной матрицы. Виртуальное устройство реагирует на нажатие программируемых кнопок и изменение значений сенсоров.

После тестирования программа компилируется в шестнадцатеричный.hex файл. Один файл можно скопировать на несколько плат — это пригодится в многопользовательских играх для micro: bit.

Что дальше

Следующим шаг — переход от визуального программирования к текстовому. Переключите редактор в режим “Code” — блоки уже созданных программ превратятся в код на языке JavaScript. Освоить программирование помогут примеры проектов и подробный справочник языка.

Третий этап посвящён знакомству с популярным языком разработки MicroPython. Для него создан свой текстовый редактор, похожий на полноценные «взрослые» IDE. В редакторе предусмотрены обширная документация и коллекция сниппетов, которые упрощают и ускоряют написание сложных конструкций.

Зачем на плате Bluetooth

Для работы с micro: bit доступны приложения под Android и iOS. Плата соединяется с планшетами и смартфонами по Bluetooth 4.1 Приложения умеют обмениваться данными с платой — на их основе собираются дистанционные пульты управления роботами, удалённые датчики для метеостанций или элементы сигнализаций.

С мобильных телефонов можно препрошивать платы скомпилированными файлами, а на планшетах — даже программировать через web-сайт microbit.org. Модуль Bluetooth применяется для подключения плат друг к другу — например для многопользовательских игр.

В таком случае применяется протокол Nordic Gazell, который позволяет обмениваться данными со скоростью в 2 мегабита в секунду.

Как подключить дополнительные модули

К плате можно подключить дополнительные модули с рабочим напряжением 3.3 В. На плате предусмотрено три варианта соединения. Площадки под «крокодилы». С их помощью можно подключить три сигнальных пина и контакты для питания модулей. Гнёзда Banana Plugs.

Функционально они аналогичны площадкам под «крокодилы». Ножевой разъём в нижней части платы. На него выведены остальные двадцать три пина. Шаг контактов разъёма 1.37 мм, поэтому плату неудобно использовать с обычными бредбордами.

Для работы с этими пинами предназначены особые шилды под micro: bit.

Характеристики

– Микроконтроллер: 32-х разрядный ARM Cortex-M0 Nordic nRF51822; – Частота: 16 МГц; – Flash-память: 256 КБ; – RAM-память: 16 КБ; – Напряжение логических уровней: 3.3 В; – Входное напряжение питания (Vin): 1.8–3.6 В; – Портов ввода-вывода общего назначения: 19; – Максимальный выходной ток с пина ввода-вывода: 5 мА; – Портов с поддержкой ШИМ: 19; – Портов c АЦП: 6; – Разрядность АЦП: 10 бит; – Шины обмена данными: I²C и SPI; – Интерфейсы: Bluetooth, microUSB;

– Габариты: 52×42 мм.

Выберите регион, чтобы увидеть способы получения товара.

Источник: https://www.chipdip.ru/product/micro-bit

Micro Python — Мал, да удал

Для людей, знакомых с программированием, скорее всего, не секрет, что язык Python считается одним из самых легких для изучения, что, в свою очередь, отнюдь не сказывается на его функциональности.

К тому же он отлично подходит для программирования микроконтроллеров и микрокомпьютеров.

Физик-теоретик Дэмиен Джордж из Кембриджского университета изобрел плату под названием Micro Python, которая также объединяет в себе простоту в использовании и мощный функционал.

Micro Python(MP) — это названия и платы, и языка на основе Python, на которой она работает. В сравнении с Raspberry Pi и Arduino автор проекта приводит целый ряд преимуществ своей платформы:

  1. Мощность — MP мощнее в сравнении с микроконтроллером Arduino, используя 32-разрядные ARM процессоры типа STM32F405 (168MHz Cortex-M4, 1 МБ флэш-памяти, 192Кб ОЗУ).
  2. Простота в использовании — язык MP, как уже было замечено,  основан на Python, но несколько упрощен, для того, чтобы команды по управлению датчиками и моторами можно было писать буквально в несколько строк.
  3. Отсутствие компилятора — для того чтобы запустить программу на платформе Micro Python нет необходимости устанавливать на компьютер дополнительное ПО. Плата определяется ПК как обычный USB накопитель — стоит закинуть на него текстовый файл с кодом и перезагрузить, программа тут же начнет исполняться. Для удобства все-таки можно установить на Пк эмулятор терминала, который дает возможность вписывать элементы кода с компьютера непосредственно на платформу, используя его вам даже не придется перезагружать плату для проверки программы, каждая строка будет тут же исполняться микроконтроллером.
  4. Низкая стоимость — в сравнении с Raspberry Pi платформа MP несколько дешевле, и, как следствие, доступнее.
  5. Открытая платформа — также как и Arduino, Micro Python является открытой платформой, все схемы будут находиться в открытом доступе, что подразумевает возможность спроектировать и создать подобную плату самому в зависимости от потребностей.

Базовая комплектация платформы включает в себя слот Micro SD Card, 4 светодиода, переключатель, часы реального времени, 3-осевой акселерометр, до 64 6-битных выборок в секунду на каждую ось, и 30 пинов ввода / вывода для взаимодействия с различными периферийными устройствами.

Взаимодействие с ПК осуществляется через Micro USB-порт. Питание платы возможно как от компьютера, так и от батареи или другого источника питания, способного обеспечить от 3,6В до 10В.

Сумма сборов уже превысила £60 000, в честь чего автор проекта сообщил о возможности комплектации платы Wi-Fi модулем CC3000, Ethernet модулем WIZ820io, а также модулем NRF24L01.

В стандартной комплектации цена данной платформы составляет £24, доставка обойдется вам еще в  £4, что в свою очередь составит примерно 1 500 рублей по нынешнему курсу.

Сбор средств будет проходить до 13.12.13.

Источник: http://blog.amperka.ru/micro-python

MicroPython на ESP8266

В этой статье будет описана загрузка MicroPython на ESP8266 на примере NodeMCU v3. На остальных платах отличия незначительны, возможно, только придется перевести вашу плату или модуль в режим прошивки.

Для загрузки MicroPython мы будем использовать esptool.py, но любые другие программы для прошивки ESP8266 должны работать.

Скачать esptool.py можно по ссылке https://github.com/espressif/esptoolили установить использую PIP:

pip install esptool

На данный момент поддерживается только Python 2

Перед загрузкой новой прошивки рекомендуется полностью стереть Flash-память микроконтроллера:

esptool.py –port /dev/ttyUSB0 erase_flash

или для Windows:

esptool.py –port com0 erase_flash

Скачиваем свежую версию MicroPython для ESP8266 в папку с esptool.py, например C:Python27Scripts и загружаем в микроконтроллер:

esptool.py –port ВАШ_COM_ПОРТ –baud 115200 write_flash –flash_size=detect 0 НАЗВАНИЕ_ВАШЕЙ_ПРОШИВКИ.bin

После успешной загрузки прошивки мы сможем подключиться к коммандной строке Python REPL, подключившись к плате по UART на скорости 115200 бод.
Можно сразу же выполнить команду для настройки WebREPL, которая будет доступна при подключении к плате по Wi-Fi:

import webrepl_setup

Необходимо будет подтвердить включение автозагрузки E, подтвердить изменение пароля y и дважды указать ваш новый пароль для доступа к WebREPL через браузер. Переходим по ссылке http://micropython.org/webrepl/, подключаемся по Wi-Fi к нашей плате (MicroPython-xxxxxx, пароль – micropythoN) и жмем Connect.

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

Для настройки WiFi соединения используется модуль network. Есть два WiFi интерфейса: станция network.WLAN(network.STA_IF) и точка доступа network.WLAN(network.AP_IF). Станция используется для подключения к роутеру, а точка доступа используется для подключения устройств к ESP8266.

Создадим экземпляры этих объектов:

import networksta_if = network.WLAN(network.STA_IF)

ap_if = network.WLAN(network.AP_IF)

Проверить активность интерфейсов можно командами:

sta_if.active() ap_if.active()

Проверить настройки интерфейсов можно командами:

sta_if.ifconfig() ap_if.ifconfig()

Активируем нужный интерфейс:

sta_if.active(True) ap_if.active(True)

Подключаемся к сети:

sta_if.connect('СЕТЬ', 'ПАРОЛЬ')

Проверяем подключение:

sta_if.isconnected() ap_if.isconnected()

После подключения к роутеру, можно перейти по ссылке http://micropython.org/webrepl/ для загрузки интерфейса WebREPL, а затем указать выданный DHCP роутера адрес:

Функция для автоматического подключения к сети, которую можно прописать в boot.py:

def do_connect(): import network sta_if = network.WLAN(network.STA_IF) if not sta_if.isconnected(): print('connecting to network…') sta_if.active(True) sta_if.connect('СЕТЬ', 'ПАРОЛЬ') while not sta_if.isconnected(): pass print('network config:', sta_if.ifconfig())

HTTP GET запрос

Этот пример показывает, как скачивать веб-страницы. HTTP использует порт 80, и сначала необходимо отправить GET-запрос, прежде чем вы сможете что-то скачать.

Импортируем модуль socket:

import socket

Определяем функцию, которая скачиват и выводит веб-страницы:

def http_get(url): _, _, host, path = url.split('/', 3) addr = socket.getaddrinfo(host, 80)[0][-1] s = socket.socket() s.connect(addr) s.send(bytes('GET /%s HTTP/1.0
Host: %s

' % (path, host), 'utf8')) while True: data = s.recv(100) if data: print(str(data, 'utf8'), end='') else: break

Получаем страницу:

http_get('http://micropython.org/ks/test.html')Обзор возможностей MicroPython

Источник: http://4ipov.net/MicroPython_on_ESP8266

Рубрика «micropython»

Подготовка к программированию ESP8266 на micropython

2017-12-30 в 21:11, admin, рубрики: esp8266, micropython, Разработка для интернета вещей

Micropython — это реализация Python 3, написанная на C, которая оптимизирована для микроконтроллеров.

ESP8266 — самая простая плата с WiFi модулем. Их комбинация — это мощность, скорость и простота написания. Поскольку это мой первый опыт работы с micropython (и с МК в принципе), я столкнулся с рядом нюансов, способами решения которых я и хочу поделиться с читателем.

Примеры будут для MacOS, однако они легко адаптируются под Linux и Windows.

Читать полностью »

Народный мониторинг ESP8266 MQTT Micropython

2017-11-05 в 11:36, admin, рубрики: DS18B20, esp8266, micropython, mqtt, narodmon, python

Как быстро, без особых вложений, начать выкладывать метеоданные на народный мониторинг? Опишу одно из решений на базе ESP8266.

Читать полностью »

Тайм-менеджмент для кинестетиков

2017-09-29 в 2:00, admin, рубрики: C#, CodeRush, esp8266, IoT, micropython, mqtt, Visual Studio, Блог компании DevExpress, программирование микроконтроллеров, Разработка для интернета вещей

Время — самый ценный ресурс который у нас есть. Чтобы использовать его максимально продуктивно, существуют всякого рода техники тайм-менеджмента. Если говорить о тайм-менеджменте в масштабах рабочего дня, то одна из самых популярных техник называется Pomodoro. Но эта статья не про GTD, а про код (и немного про железо ^^).

Так вот, для техники Pomodoro есть инструмент Tomighty и у него открытый исходный код на C#, что побуждает к модификации этого самого кода с целью добавления новых возможностей и интеграции со всякими штуками.

Сегодня мы будем интегрировать клиент Tomighty с устройстовм “Большая Красная Кнопка”. Нам для этого понадобится:

  • Большая Красная Кнопка (со светодиодом). У меня оказалась не очень большая, но очень красная.
  • ESP8266 — один из наиболее оптимальных микроконтроллеров по соотношению удобство/цена. Это даже не микроконтроллер вовсе, но как микроконтроллер он абсолютно прекрасен!
  • MicroPython. Я не знаю языка удобнее чем Python, а вы? Разве что Ruby, но его вроде бы не портировали на ESP8266.
  • Протокол MQTT для связи между компом и девайсом.
  • Visual Studio.
  • Опционально, расширение CodeRush for Roslyn. Оно сильно упрощает работу с как со своим так и с незнакомым кодом.

Зачем? Чтобы получить опыт работы с чужим кодом. В связи с грядущим Hacktoberfest, этот скилл будет крайне актуален.

Welcome!

Читать полностью »

Источник: http://www.pvsm.ru/cat/micropython

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}