Подарочный сертификат — Симплекс маяк
Что можно подарить дорогому человеку, увлекающемуся электроникой, на день рождения или Новый год? И чтоб не просто игрушку, а что-нибудь интересное и развивающее. Обычно в голову приходят различные наборы и конструкторы. Но все эти наборы обычно рассчитаны на новичков, а как быть с продвинутым энтузиастом хайтек-DIY?
Специально для любителей роботов и электроники мы разработали особый подарочный сертификат. И это не просто бесполезная карточка — это целое устройство, которое будет радовать глаз и после использования сертификата!
Печатная плата
Во-первых, подарочный сертификат AlashEd — это настоящая печатная плата, которая выглядит здорово сама по себе. Существует четыре номинала сертификата, каждый из которых имеет свой цвет. Вот так выглядят 3 номинала на 1024, 2048 и 4096 рублей. А есть ещё номинал 8192 рубля, он имеет чёрный цвет.
Совет
Почему такие странные номиналы? Они не странные! Наоборот, эти числа являются степенями двойки, которые должен знать любой программист и разработчик электроники.
Плата имеет размер обычной банковской карты и толщину 1,6 мм. К каждому сертификату прилагается уникальный код, с помощью которого сертификат активируется в нашем интернет-магазине.
Симплекс маяк
Во-вторых, на плате сертификата версии 2.0 можно собрать любопытное устройство — Симплекс маяк. Этот маяк представляет собой светодиодную матрицу с разрешением 5×5, которая управляется микроконтроллером CH552G. С помощью популярной среды разработки Arduino IDE можно использовать эту матрицу для разных целей, например:
изобразить какой-нибудь статичный символ или демосцену; использовать маяк в качестве кулона на кибервечеринке;
запрограммировать игру Змейка или Тетрис; играть в неё при помощи дополнительных кнопок;
использовать маяк как учебный стенд для изучения основ программирования.
Сборка
Предупреждение
Симплекс маяк состоит исключительно из SMD-деталей, так что для их пайки необходимо иметь хотя бы начальный уровень навыка в этой области. Особую сложность может вызвать монтаж микросхем. Потренироваться паять SMD-детали лучше на более простых наборах.
Примечание
Для сборки устройства понадобится паяльник, немного припоя и флюс, жидкий или гелевый. Базовый набор инструментов доступен в магазине AlashEd: набор для пайки в кейсе, губка для чистки жала, бокорезы.
Что такое SMD?
В переводе с английского, SMD — это surface mounted device, то есть «устройство, монтируемое на поверхность». В отличие от технологий недавнего прошлого, SMD-элементы занимают гораздо меньше места. SMD позволяет нам сделать устройство очень компактным.
SMD бывают разных размеров. Элементы прямоугольной формы, такие как светодиоды или резисторы, измеряются по длинам сторон. Например, на популярной плате Arduino Uno установлены светодиоды 0805. В переводе с дюймовой системы в метрическую это соответствует размеру 2 × 1,25 мм.
Примечание
В данном наборе мы будем учиться работать с достаточно крупными элементами типоразмера 1206.
Монтажная схема
Для сборки Симплекс маяка понадобится монтажная схема, на которой все посадочные места отмечены специальными метками и надписями. По факту, вся схема уже нанесена на обратную сторону сертификата, там, куда устанавливаются детали устройства.
Примечание
Примечание для версии 2.0.1: резистор R5 находится над микросхемой U3.
Припаиваем элементы согласно монтажной схеме и таблице элементов.
Компонент |
Маркер |
Количество |
|---|---|---|
Резистор 1 кОм |
R6, R7, R8, R9, R10 |
5 |
Резистор 10 кОм |
R1, R2, R3, R11 |
4 |
Конденсатор керамический 0,1 мкФ |
C2, C3, C4, C5, C6 |
5 |
B1 |
1 |
|
SW2, SW3, SW4, SW5, SW6 |
5 |
|
Переключатель |
SW1 |
1 |
Светодиод |
LED1-LED25 |
25 |
Микроконтроллер CH552G |
U1 |
1 |
U2, U3 |
2 |
Совет
Полезные советы и справка:
катод на посадочном месте светодиода на плате обозначен полоской; катод у самого светодиода обозначается небольшой зелёной меткой; таким образом, все светодиоды должны смотреть зелёной меткой в сторону полоски;
у резисторов и керамических конденсаторов нет полярности, можно припаивать их какой угодно стороной;
чтобы правильно припаять микросхему, следует разместить её так, чтобы метка на ней совпала с меткой на её посадочном месте; обычно метка — это небольшой кружочек на верхней поверхности корпуса или выемка на одной стороне микросхемы.
Программирование
Программировать маяк будем в среде Arduino IDE. Для начала, следует разобраться с тем, как настроить среду для работы с микроконтроллером CH552G — об этом у нас есть отдельная инструкция: программирование CH552G.
Также следует разобраться с тем, что такое сдвиговый регистр. Именно с помощью этого устройства реализовано управление матрицей светодиодов в Симплекс маяке.
Первые 5 бит первого регистра отвечают за аноды матрицы, первые же 5 бит второго регистра — за катоды. Полную схему маяка можно найти в конце инструкции.
Итак, что куда подключено:
Arduino IDE |
Симплекс маяк |
|---|---|
32 |
Data — регистр: данные |
14 |
Latch — регистр: защёлка |
15 |
Clock — регистр: синхроимпульс |
16 |
Reset — регистр: сброс |
34 |
ШИМ-сигнал для управления яркостью матрицы |
17 |
SW2 — кнопка |
31 |
SW3 — кнопка |
30 |
SW4 — кнопка |
Первая программа будет мигать верхним левым светодиодом.
#define R_DATA 32
#define R_LATCH 14
#define R_CLOCK 15
#define R_RESET 16
#define R_PWM 34
// настраиваем контакты регистров
void initReg(){
pinMode( R_DATA, OUTPUT );
pinMode( R_LATCH, OUTPUT );
pinMode( R_CLOCK, OUTPUT );
pinMode( R_RESET, OUTPUT );
pinMode( R_PWM, OUTPUT );
digitalWrite( R_RESET, HIGH );
digitalWrite( R_PWM, LOW );
}
// открываем защёлку и передаем данные регистров на его выход
void latch(){
digitalWrite(R_LATCH, HIGH);
digitalWrite(R_LATCH, LOW);
}
// записываем восемь бит в регистры
void setByte( byte b ){
for(int i=0; i<8; i++){
digitalWrite(R_CLOCK, LOW);
digitalWrite(R_DATA, b & (1 << i ));
digitalWrite(R_CLOCK, HIGH);
}
}
// очистка матрицы
void clear(){
setByte( 0x00 );
setByte( 0xFF );
latch();
}
// вывод точки с координатами x, y
void setPoint(byte x, byte y){
setByte( 1<<(7-x) );
setByte( ~(1<<(7-y)) );
latch();
}
void setup() {
initReg();
}
void loop() {
setPoint( 0, 0 );
delay(500);
clear();
delay(500);
}
В этом примере описаны три полезные функции для работы с регистрами: initReg, setByte и latch. А также две функции для работы с графикой: clear и setPoint. Эти функции пригодятся и в других программах для маяка.
Важно
Перед загрузкой программы на плату следует передвинуть рычажок переключателя SW1 в нижнее положение. Чтобы плата работала автономно от батарейки, рычажок SW1 должен быть в верхнем положении.
Загружаем программу на устройство и проверяем результат. Левый верхний светодиод должен мигать раз в секунду.
В следующей программе по матрице будет пробегаться сначала горизонтальная линия, потом вертикальная. Своего рода сканер.
#define R_DATA 32
#define R_LATCH 14
#define R_CLOCK 15
#define R_RESET 16
#define R_PWM 34
void initReg(){
pinMode( R_DATA, OUTPUT );
pinMode( R_LATCH, OUTPUT );
pinMode( R_CLOCK, OUTPUT );
pinMode( R_RESET, OUTPUT );
pinMode( R_PWM, OUTPUT );
digitalWrite( R_RESET, HIGH );
digitalWrite( R_PWM, LOW );
}
void latch(){
digitalWrite(R_LATCH, HIGH);
digitalWrite(R_LATCH, LOW);
}
void setByte( byte b ){
for(int i=0; i<8; i++){
digitalWrite(R_CLOCK, LOW);
digitalWrite(R_DATA, b & (1 << i ));
digitalWrite(R_CLOCK, HIGH);
}
}
void setXLine(byte y){
setByte( 0xFF ); // включаем все аноды
setByte( ~(1<<(7-y)) ); // включаем катод y
latch();
}
void setYLine(byte x){
setByte( 1<<(7-x) ); // включаем анод x
setByte( 0x0 ); // включаем все катоды
latch();
}
void setup() {
initReg();
}
void loop() {
for( byte y=0; y<5; y++ ){
setXLine(y);
delay(100);
}
for( byte x=0; x<5; x++ ){
setYLine(x);
delay(100);
}
}
Здесь мы описали две дополнительные функции setXLine и setYLine, которые как раз и реализуют вывод линии на матрицу. Загружаем программу на устройство и проверяем результат.
Напишем третью программу, которая будет отображать на матрице статичный рисунок — глиф. Чтобы это сделать, придётся реализовать динамическую индикацию.
#define R_DATA 32
#define R_LATCH 14
#define R_CLOCK 15
#define R_RESET 16
#define R_PWM 34
byte glyph[25] = {
0,1,1,1,0,
1,0,1,0,1,
1,1,0,1,1,
0,1,1,1,0,
0,1,1,1,0
};
void initReg(){
pinMode( R_DATA, OUTPUT );
pinMode( R_LATCH, OUTPUT );
pinMode( R_CLOCK, OUTPUT );
pinMode( R_RESET, OUTPUT );
pinMode( R_PWM, OUTPUT );
digitalWrite( R_RESET, HIGH );
digitalWrite( R_PWM, LOW );
}
void latch(){
digitalWrite(R_LATCH, HIGH);
digitalWrite(R_LATCH, LOW);
}
void setByte( byte b ){
for(int i=0; i<8; i++){
digitalWrite(R_CLOCK, LOW);
digitalWrite(R_DATA, b & (1 << i ));
digitalWrite(R_CLOCK, HIGH);
}
}
void setup() {
initReg();
}
void loop() {
for(byte y=0; y<5; y++){
byte row = 0;
for(byte x=0; x<5; x++){
if( glyph[y*5+x] == 1 ){
row |= 1<<(7-x);
}
}
setByte( row );
setByte( ~(1<<(7-y)) );
latch();
}
}
Готово! Загружаем программу на маяк и наблюдаем на матрице черепок.
Использование сертификата
Для активации подарочного сертификата следует:
Зарегистрироваться на сайте магазина AlashEd.
Зайти в личный кабинет с помощью ссылки «Мой профиль».
Перейти в раздел «Баллы и сертификаты».
В поле «применить сертификат» ввести уникальный код сертификата и нажать кнопку «применить».
После активации сертификата вам будут начислены баллы магазина, эквивалентные сумме сертификата! Например, после активации сертификата на 2048 рублей в личном кабинете появится 20480 баллов.
Принципиальная схема