Привет!
Хочу представить дипломный проект, который плавно перерос в мелкосерийное производство.
Собственно это Open Source платы для протипирования на базе AVR AT90USB162 с аппаратным USB.
Плата предназначена для начинающих и основной упор делается на изучение периферии UART, SPI, 1-wire.
Документация
Примеры
Основные характеристики:
1) AT90USB162 аппаратный USB, 8 MIPS
2) АЦП AD7811 10 бит, 4 канала, 350kSPS
3) Память DataFlash AT25DF321A 32Mb
4) ЦАП AD5300BRM 10 бит, время установления 4us
5) Наборное поле 3x3.5 см
Сейчас программирование микроконтроллеров (МК) и инжиниринг вообще — интересная и высокооплачиваемая профессия, в которой себя попробовать может практически каждый, и нет никаких сложностей. Любой, кто решал квадратное уравнение на С/Pascal в школе потенциально может быть разработчиком высоконадежных встраиваемых систем.
Главная сложность программирование МК заключается в стереотипе, который отталкивает начинающих, типа «Ой, микроконтроллеры, это очень сложно, нужно изучить схемотехнику, электронику и еще много чего...». Это все не так! Для работы с AVR микроконтроллерами практические ничего и не нужно, даже программатора в некоторых случаях.
Все что требуется, чтобы начать создавать приложения на AVR, например, с помощь представленной ниже платы это:
1) USB mini кабель
2) Бесплатная программа FLIP3 для загрузки прошивки в МК
3) C/C++ gcc компилятор
4) Блокнот :)
И это все!
Здесь ниже я приведу несколько примеров, которые были использованы мной в «бою» и таким образом будут продемонстрированы возможности платы.
1) Работа с Bluetooth-модулем HC05
К плате просто подключать дополнительные модули, как, например, китайский Bluetooth-модуль HC05 (я свой брал на ebay уже готовым для использования). Сложностей в работе здесь никаких не возникает, в режиме slave модуль работает как удлинитель uart порта. Настройка по умолчанию используется у меня такая 9600, 8n1.
Подробно про модуль прочитать здесь:
Ссылка
Приведен кусочек кода, который здоровается и отправляет возрастающую последовательность цифр через bluetooth, с точки зрения кода это обычная отправка данных по uart.
#include <avr/io.h>
#include <avr/delay.h>
#include "uart.h"
#define FOSC 8000000 // Clock Speed
#define BAUD 9600
#define MYUBRR (FOSC/(16*BAUD))-1
int main(void)
{
unsigned char i;
DDRD=(0<<PD2)|(1<<PD3); // Rx,Tx UART'а
DDRB=0xFF;
USARTinit(MYUBRR); // настройка стандартная 8n1
// PD3 - Tx
// PD2 - Rx
sendString('Hello!rn');
while(1)
{
for(i=0;i<255;i++)
{
sendChar(i);
_delay_ms(100);
}
}
return 0;
}
2) Работа с LCD-модулем uLCD-320-PMD2
Данную плату первоначально я проектировал для создания примитивного мобильного робота, который бы мог ориентироваться в пространстве (реакция на свет, звук и др.). Поэтому для этих целей приобрел цветной 320x240 TFT монитор с поддержкой SD-карт чтобы следить за состоянием робота. Реализована библиотека для работы с ним, в скором времени будет добавлена в руководство пользователя.
Работать с монитором было вполне удобно, так как он соединяется с платой через UART всего 5 проводами (питание, земля, Rx, Tx, RST).Поддерживает скорость обмена до 500К и имеет на борту контроллер, который рисует примитивы и их достаточно много, а также поддерживаются другие команды, например, отрисовка мыши и др.
3) Работа с датчиком температуры DS18b20
На основе платы можно делать автономные системы сбора информации, например, как показано здесь.
Датчик температуры выдает цифровой код по 1-wire интерфейсу, контроллер формирует пакет и передает по UART через Bluetooth на ПК в терминале мы видим температуру в градусах Цельсия. Но на самом деле это далеко не все, так как есть еще 4 канала АЦП с 350kSPS и небольшое наборное поле, где можно собрать маленькую схемку автономного измерительного или управляющего устройства. Думаю, как будут появляться новые примеры применений буду обязательно публиковать.
Дополнительно про 1-wire почитать здесь:
Ссылка 1
Ссылка 2
Ссылка 3
В демо-проектах есть примеры управления ЦАП с терминала ПК, сбор данных с АЦП.
Дальнейшие примеры использования и код будет выкладываться на этом сайте, также существует форум, где можно задавать вопросы.
Проект будет развиваться и в комментариях я бы хотел услышать мнения народа и конструктивную критику, которая поможет улучшить проект.
Автор: avrfun