Самодельный GPS GSM трекер

5 августа 2017 г. 11:40 STM32   GPS  

В этом посте хочу представить свой заброшенный pet project, которым занимался пару лет назад. Проект этот - это небольшой по размеру GPS трекер совмещенный с GSM модемом. Изначально созданный для легкой интеграции в какую-либо часть велосипеда (напрмиер в подседельную трубу, трубу руля или в неметаллический насос).

Проект в целом рабочий и находится в состоянии пригодном для использования(использую сам), тем не менее он скорее находится в стостоянии PoC, и в нем есть несколько сырых  моментов (в т.ч. касающихся безопастности), работа над которыми требует определнного времени и сил. Так как я продолжать заниматься проектом не планирую решил выложить его здесь. Вы можете абсолютно бесплатно использовать проект целиком либо любые его части при условии сохранения ссылки на первоисточник (https://bovs.org/), то есть проект распространяется по лицензии MIT.

Предоставленная версия работает в связке с сервером - отправляет свои координаты на него через мобильную сеть (2G), пройденный маршрут можно просматривать по карте на сайте с компьютера или телефона. Однко если вы хотите использовать трекер без сервера (например получать координаты от симки в теркере по СМС), то вы можете слегка переделать предоставленную прошивку (первоначальный вариант был именно такой и в коде даже остались комментарии которые могут помочь в переделке) 

Сборка texane/stlink MinGW под Windows

26 января 2014 г. 13:14 STM32  

Texane/stlink - открытое кроссплатформенное программное обеспечение для работы с программаторами st-link и st-link/v2 и предназанченое для программирования микроконтроллеров STM32. В состав пакета входит утилита для обычной прошивки st-flash, и Debug-сервер st-util. Проект расположен на github: https://github.com/texane/stlink.

В этой статье я дам подробный пошаговый туториал по сборке пакета под windows. Мы установим чистый MinGW и linux-подобную среду MSYS, соберем в них библиотеку libusb-1.0 и пакет stlink. Уже собранную мной версию можете скачать тут: Собранный texane stlink 26.01.14 для win32 и инструменты для сборки. Также в архиве присутствуют инсталляторы и дополнительные пакеты которые будут использованы в статье.

Самодельный программатор/отладчик ST-LINK/V2 для STM8 и STM32

18 ноября 2013 г. 21:03 STM32   STM8  

ST-LINK/V2 позволяет программировать и отлаживать контроллеры STM32 и STM8, и поддерживается такими популярными средами разработки как Keil uVision, IAR EWARM, CoIDE, IAR EWSTM8 и другими. Оригинальный программатор стоит около 50$ (в чайне видел такой же за 35$). Также у этого программатора куча китайских клонов, различающихся степенью урезаности (отсутствием компонентов), вплоть до свистков за 7$. Кроме того, программатор распаян на платах STM*Discovery, опять же в урезанной версии и умеющий работать только с STM32 или только с STM8 в зависимости от того, какая дискавери. 

Но иногда проще и интереснее сделать программатор самому, особенно если для этого не  нужно много усилий. Все детали мне обошлись меньше чем в 5$ в местном магазине радиодеталей. Прошить сам программатор можно по интерфейсу UART (например с помощью любого преобразователя USB- UART).

Что умеет программатор/отладчик ST-LINK-V2:

  • Прошивка и отладка STM32 по интерфейсу SWD (пины SWCLK и SWDIO) + RST (не обязательно)
  • Необязательный пин SWO для последовательного терминала с внешним STM32 без дополнительных UART-ов и т.д. (Можно выполнять printf/scanf на STM32 с помощью программатора)
  • Прошивка и отладка STM8 по интерфейсу SWIM 
  • Выдача внешнего питания 3.3В от программатора
  • Подключение по mini-usb

stlink2cloneview(1).jpg

STM32 SPI Slave и интерфейс SPI в Versaloon (USB_TO_SPI)

22 сентября 2013 г. 17:44 STM32   Versaloon  

Serial Peripheral Interface - один из самых простых и быстрых интерфейсов, часто применяемый как для подключения периферийных устройств так и для связи микроконтроллеров между собой. Про принципы работы этого интерфейса написано очень много информации, по этому смысла рассказывать о них здесь нет. Вместо этого в статье я покажу пример практического использования SPI для связи контроллера STM32 (на демоплатке) с компьютером посредством переходника USB_TO_SPI, запущенном на базе платформы Versaloon. На стороне демоплаты это будет реализовываться с помощью аппаратного модуля SPI, настроенного в режиме Slave(ведомый). В то же время мы настроем Versaloon внутри себя на интерфейс SPI-Master (ведущий), и с помощью программы vsprog будем рулить им. 

Пример будет делать следующее(придумано от фонаря): сначала мы посылаем демоплате 5 байт, и параллельно принимаем от нее 5 байт 0xAA (напомню, что отправляя один байт по SPI слейву, мы получаем один байт в ответ от него, то есть происходит так называемый полнодуплексный, двухсторонний обмен). Демоплата, приняв эти 5 байт от мастера сохраняет их у себя. Затем мастер отправляет еще 5 байт, и параллельно слейв отдает обратно 5 байт, полученные за первый раз. В дополнение мы также помигаем светодиодами после второго 5и-байтного обмена. Сначала один светодиод помигает столько раз, сколько отправлено в первом байте второго обмена, затем второй светодиод помигает столько раз сколько отправлено во втором байте второго обмена. Наверное формулировка задания весьма сложная, попробую объяснить визуально. Вот так должны выглядеть эти два обмена по 5 Байт каждый:

spiobmen(1).jpg

Обновление библиотеки CMSIS в STM32F10x standard peripheral library

26 июля 2013 г. 22:56 STM32  

Библиотека CMSIS стандартизуриется компанией ARM Limited, но кроме стандартизации фирма ARM выпускает код для ядра CORTEX-M. Конкретный производитель контроллеров с ARM-ядром, средствами своих программистов или сторонних сообществ дополняет библиотеку CMSIS файлами с описанием периферийных модулей, которыми они нафаршировали свои контроллеры. Фирма ST на данный  поставляет через свой сайт библиотеки standard peripherals library (каждая для своей серии). Выпуская очередную версию библиотеки она включает в нею CMSIS версии, которая была на то время действующей.

Как использовать функции libc в Sourcery CodeBench Lite

6 июля 2013 г. 20:07 STM32  

Частенько при разработке встраиваемых систем нужно воспользоваться функциями вроде rand, sprintf, malloc и т.д. Часть таких функций можно в той или оной степени реализовать самому, но на это не всегда находится время. Один из вариантов решения задачи - использовать специальную библиотеку Newlib, встроенную в тулчейн Sourcery CodeBench Lite. Библиотека newlib содержит реализацию функций стандартной библиотеки С с учетом особенностей применения во встраиваемых системах. 

Не могу сказать что библиотека оптимальная - некоторые функции могут занять десятки килобайт флеша, так что пользоваться этим делом можно только если у вас достаточно памяти. Если же память критично придется либо реализовать функции самому, либо использовать более урезанные реализации вроде baselibc.

Подключение дисплеев с контроллером UC1601s (RDX0120) к STM32

5 июля 2013 г. 15:21 LCD   STM32  

Довелось тут в одном проекте поработать с графическим дисплеем RDX0120 днепропетровской фирмы "Гамма". Сам дисплей достаточно дешевый - около 3$. Во всех дисплеях RDX0032, RDX0048, RDX0077, RDX0120, RDX0154 встроен графический контроллер UC1601s.

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

За основу библиотеки я взял код Геннадия Чернова, который разработал библиотечку для PIC. Я перепилил минимальный набор необходимых мне функций, среди которых: очистка дисплея и заполнение его черным/белым/серым цветом, вывод строк шрифтов включая кириллические строки в кодировке СР1251, черный по белому или инверсный, рисование простых линий с разными типами линий, прямоугольников с прямыми и скругленными углами и установкой ширины линии.

Разработка под STM32. Часть 5. USART через Versaloon

30 июня 2013 г. 13:01 STM32   Versaloon   UART  

В программаторе versaloon встроена реализация интерфейса UART. Если пины Rx и Tx в разъеме программатора не заняты, то его можно использовать даже вместе с другими интерфейсами. Таким образом в этой статье я покажу как совместить отладку по SWD и работу с UART. Вы сможете посылать байты по UART находясь в режиме отладки. Для этого подключим Rx и Tx отладочной платки к Tx и Rx программатора (серый и синий провод). Подробнее о подключении. При этом пины SWD остаются подключенными:

vsuartstm322.jpg

Разработка под STM32. Часть 4. Что представляет собой CMSIS и SPL. Порты ввода-вывода и базовый таймер

27 июня 2013 г. 19:39 STM32  

Во второй части мы создали простой проект, в котором написали немного кода. Я нарочно не вдавался в описание этого кода, так как к процессу настройки рабочей среды это отношения не имеет. В этой статье я восполню недосказанное а также расскажу чем отличается CMSIS и SPL. Обе библиотеки являются открытыми, по этому мы имеем замечательную возможность посмотреть "из чего они сделаны".

Разработка под STM32. Часть 3. Отладка проекта STM32 в Eclipse

21 июня 2013 г. 19:35 eclipse   STM32   Versaloon  

Во второй части был создан о откомпилирован проект для Eclipse, в котором мы выполнили настройку компилятора. В принципе уже можно собирать программы и закидывать их в контроллер с помощью программ vsprog, vsgui, st-flash официальной утилиты ST или чего-то еще. 

Но иногда также необходима возможность отладки написанного кода. Она позволит смотреть каким именно образом выполняются операторы языка С или ассемблерные инструкции. Кроме того отладка нужна для просмотра/изменения памяти и регистров ядра в определенный зафиксированный момент времени. Зафиксированный он по отношению к контроллеру - как только отладчик получает управление, контроллер "замораживается" до тех пор пока отладчик снова не скажет ему продолжить отладку, или выполнить следующую инструкцию. 

Сначала я расскажу об отладке с помощью Versaloon/openocd, а в конце статьи покажу как этим же методом настроить отладку для STM32VLDiscovery. Что касается Discovery, то я буду рассказывать только об отличиях, поэтому советую подробно прочесть всю статью сначала.

Разработка под STM32. Часть 2. Создание проекта для STM32 в Eclipse. Библиотеки CMSIS и SPL

11 июня 2013 г. 14:37 eclipse   STM32   Versaloon  

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

eclipse_p_openocd.jpg

Разработка под STM32. Часть 1. Демоплата и среда разработки.

26 мая 2013 г. 0:28 eclipse   STM32  

Данный цикл статей посвящен быстрому старту работы с микроконтроллерами STM32 на базе ядра ARM Cortex-M3. В нескольких следующих частях я собираюсь рассказать о том, как:

- сделать дешевую отладочную платку для изучения STM32;
- установить кросс-платформенное программное обеспечение, необходимое для сборки выполняемых файлов;
- установить и настроить удобную 
кросс-платформенную среду разработки на базе eclipse, для быстрой разработки, сборки и отладки написанных программ;
- создать простой проект в установленной среде разработки;
- настроить связку eclipse + OpenOCD + Versaloon  для отладки программ.
- так как много читателей используют свою отладочную плату STM32VLDiscovery, я также расскажу о ее настройке в настраиваемой среде 

Моя цель дать инструкции для разных ОС:  Windows (я буду все проделывать на Windows 7 32bit), Linux Ubuntu (проверю на 13.04 32bit), а также на ArchLinux 64bit, на которой я сейчас работаю. Разные дистрибутивы/архитектуры/версии могут потребовать индивидуальных действий. 

Если вы планируете использовать Versaloon, то важно что бы было установлено программное обеспечение для Versaloon, как это сделать я рассказывал в статьях: для Windowsдля Linux. Если же вы используете STM32VLDiscovery, то об установки ПО я расскажу тут

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

Использование Versaloon

17 апреля 2013 г. 20:00 электроника   AVR   MSP430   STM32   Versaloon  

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

Для подключения к разным платам будет удобно сделать один шлейф нехитрой конструкции:

versaloon_cable.jpg

Прошиваем программатор Versaloon с помощью STM32VLDiscovery

8 апреля 2013 г. 9:26 STM32   Versaloon  

Так уж получилось, что для того, чтобы сделать один программатор, нужен другой. Для программирования STM32 существует много программаторов, но самый простой вариант это использовать встроенный SWD-программатор в отладочной плате STM32VLDISCOVERY, на st.com можно купить её за 10$, в наших магазинах-перекупщиках немного дороже.

Для прошивки можно использовать специальные пады:

vsprogpins.jpg

Универсальный программатор Versaloon. STM32, STM8, AVR, MSP430, LM3S, AT91SAM3 и могое другое. Изготовление

7 апреля 2013 г. 22:00 электроника   STM32   Versaloon   UART  

resulted.jpg

Программатор Versaloon на основе микроконтроллера STM32 - полностью открытая многофункциональная платформа, которая поддерживает более 10 видов интерфейсов, среди которых JTAG, SWD, SPI, IIC, SWIM, UART. Существует несколько версий программатора. Сайт проекта http://www.versaloon.com/. Я собрал самую маленькую версию Versaloon - Nano Release, с некоторыми модификациями, которые касаются удешевления стоимости компонентов, и увеличения их доступности. Существуют также другие версии, например Mini Release (функциональность такая же, но плата больше по размеру, несколько дополнительных компонентов), но в своём блоге я буду подразумевать под Versaloon именно версию Nano Release.

Versaloon работает под Windows и Linux, есть поддержка отладки STM32 через OpenOCD.

Versaloon очень быстрый, и позволяет управлять скоростью программирования в большинстве интерфейсов:

  • JTAG: 1KHz - 18MHz
  • SPI: 1KHz - 18MHz
  • IIC: 1KHz - 100KHz
  • UART: до 921600bps

Документация по STM32. Маркировка STM32

31 марта 2013 г. 13:55 STM32  

Чтение документации необходимо не только для изучения внутренней структуры устройства и его особенностей, а и для сравнения устройств между собой, выяснения факта их совместимости и взаимозаменяймости. Каждая компания организовывает структуру технической документации на свои изделия по-своему. В этом посте я расскажу про мой опыт чтения документации по контроллерам STM32 фирмы St и её поиск на сайте st.com.