Espruino:Примеры/Таймлапс-камера: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 5: | Строка 5: | ||
=Таймлапс-камера<ref>[https://www.espruino.com/Time+Lapse+Camera www.espruino.com - Time Lapse Camera]</ref>= | =Таймлапс-камера<ref>[https://www.espruino.com/Time+Lapse+Camera www.espruino.com - Time Lapse Camera]</ref>= | ||
[ | [[File:Time_Lapse_Camera_camera.jpg|center]] | ||
Хотя у самой [[Espruino]] недостаточно памяти, чтобы делать снимки хорошего качества, ничего не мешает вам воспользоваться [[Espruino]] для управления другими устройствами, имеющими делать такие снимки. Во многих случаях это даже более дешёвый и энергоэффективный способ для достижения того же результата. | Хотя у самой [[Espruino]] недостаточно памяти, чтобы делать снимки хорошего качества, ничего не мешает вам воспользоваться [[Espruino]] для управления другими устройствами, имеющими делать такие снимки. Во многих случаях это даже более дешёвый и энергоэффективный способ для достижения того же результата. | ||
Строка 21: | Строка 21: | ||
== Подсоединение == | == Подсоединение == | ||
[ | [[File:Time_Lapse_Camera_disasm.jpg|center]] | ||
* Разберите камеру на части. Она держится на двух шурупах, которые находятся рядом с брелочным кольцом. | * Разберите камеру на части. Она держится на двух шурупах, которые находятся рядом с брелочным кольцом. | ||
* Выньте из корпуса печатную плату (она держится на 3 шурупах) и отключите батарею | * Выньте из корпуса печатную плату (она держится на 3 шурупах) и отключите батарею | ||
[ | [[File:Time_Lapse_Camera_wiring.jpg|center]] | ||
* Подключите провода как показано на картинке выше: | * Подключите провода как показано на картинке выше: | ||
Строка 33: | Строка 33: | ||
** Оранжевый провод нужно подключить к кнопке включения на краю платы. | ** Оранжевый провод нужно подключить к кнопке включения на краю платы. | ||
[ | [[File:Time_Lapse_Camera_assembled.jpg|center]] | ||
* Соберите всё заново. Если ваши провода слишком толстые, то две пластиковые кнопки и три внутренних шурупа ставить обратно необязательно. | * Соберите всё заново. Если ваши провода слишком толстые, то две пластиковые кнопки и три внутренних шурупа ставить обратно необязательно. | ||
Строка 51: | Строка 51: | ||
|} | |} | ||
[ | [[File:Time_Lapse_Camera_finish.jpg|center]] | ||
На фото выше изображён прототип [[Espruino Pico]], но вы можете воспользоваться для этого проекта и классической платой [[Espruino]]. | На фото выше изображён прототип [[Espruino Pico]], но вы можете воспользоваться для этого проекта и классической платой [[Espruino]]. | ||
Строка 75: | Строка 74: | ||
Если вы хотите изменить этот период, сделать это можно в одной из последних строчек кода. | Если вы хотите изменить этот период, сделать это можно в одной из последних строчек кода. | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
var PWR = [A5,A6]; | var PWR = [A5,A6]; | ||
// У терминала PWR будет активный высокий уровень. | // У терминала PWR будет активный высокий уровень. | ||
Строка 149: | Строка 148: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 155: | Строка 154: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 06:54, 24 мая 2023
Таймлапс-камера[1]
Хотя у самой Espruino недостаточно памяти, чтобы делать снимки хорошего качества, ничего не мешает вам воспользоваться Espruino для управления другими устройствами, имеющими делать такие снимки. Во многих случаях это даже более дешёвый и энергоэффективный способ для достижения того же результата.
В этом руководстве мы расскажем, как сделать таймлапс-камеру при помощи дешёвой брелочной камеры и платы Espruino.
С помощью Espruino мы будем имитировать нажатия на кнопки, чтобы включать камеру, переводить её в режим фотографирования, делать снимок, а затем выключать.
Нам понадобятся
- «808-ая» брелочная камера. Они бывают разных типов, у каждого из которых свои характеристики – более подробно читайте в этом отличном руководстве. Я использую камеру под номером 16.
- Тонкий изолированный провод.
- Паяльник с относительно тонким носиком и крепкая (в смысле, не трясущаяся) рука
Подсоединение
- Разберите камеру на части. Она держится на двух шурупах, которые находятся рядом с брелочным кольцом.
- Выньте из корпуса печатную плату (она держится на 3 шурупах) и отключите батарею
- Подключите провода как показано на картинке выше:
- Красный провод нужно подключить к положительному терминалу батареи.
- Подключите по проводу к каждой стороне затворного переключателя. Зелёный провод (тот, что ближе к датчику камеры) нужно подключить к заземлению, а другой (жёлтый) – к контакту, передающему сигнал затвора.
- Оранжевый провод нужно подключить к кнопке включения на краю платы.
- Соберите всё заново. Если ваши провода слишком толстые, то две пластиковые кнопки и три внутренних шурупа ставить обратно необязательно.
- Теперь подключите это всё к Espruino:
Провод | Функция | Espruino |
---|---|---|
Красный | Батарея + | Vin / JST-конектор батареи |
Зелёный | Батарея - | GND |
Жёлтый | Затвор | A7 |
Оранжевый | Питание | A5 и A6 |
На фото выше изображён прототип Espruino Pico, но вы можете воспользоваться для этого проекта и классической платой Espruino.
Как это работает
В руководстве по использованию камеры говорится следующее:
Чтобы сделать снимок:
- Убедитесь, что вы правильно вставили TF-камеру.
- Зажмите кнопку питания примерно на 2 секунды, пока не загорится жёлтый индикатор. Это будет значить, что камера включена и готова записывать видео. Ещё раз нажмите кнопку питания – загорится красный светодиод. Это будет значить, что камера готова делать фотоснимки.
- На короткое время нажмите на кнопку затвора – в результате должен мигнуть жёлтый индикатор. Это будет значить, что снимок сделан и сохранён в память. Продолжайте нажимать на эту кнопку, чтобы делать новые снимки.
- Чтобы снова переключиться в режим готовности для записи видео, на короткое время нажмите на кнопку питания.
Соответственно, нам нужно написать код, где будет всё то же самое (за исключением проверки карты памяти – Espruino этого сделать не сможет), и мы сделаем это при помощи таймаутов и функций обратного вызова.
Единственная закавыка в том, что кнопке питания нужно, прошу прощения за тавтологию, много питания, чтобы включить камеру. И мы можем организовать это без каких-либо внешних компонентов, просто объединив два выходных контакта (A5 и A6).
Код
Загрузите код ниже на Espruino, напечатайте save() и готово! В результате Espruino будет питаться от батареи камеры и делать снимки каждые 60 секунд.
Если вы хотите изменить этот период, сделать это можно в одной из последних строчек кода.
var PWR = [A5,A6];
// У терминала PWR будет активный высокий уровень.
// Для включения камеры нужно много питания,
// так что мы воспользуемся для этого двумя контактами.
var SHUTTER = A7;
// У терминала SHUTTER будет активный низкий уровень.
// Переводим контакты питания в режим HIGH на заданный период времени,
// ждём и запускаем функцию обратного вызова:
function pulsePWR(time, callbackDelay, callback) {
digitalWrite(PWR,255);
setTimeout(function() {
digitalRead(PWR); // размыкаем цепь
if (callback) setTimeout(callback,callbackDelay);
},time);
}
// Включаем питание:
function powerOn(callback) {
pulsePWR(2000, 2000, callback);
}
// Выключаем питание:
function powerOff(callback) {
pulsePWR(3000, 2000, callback);
}
// Для переключения режимов
// будет использоваться короткое нажатие на кнопку питания:
function toggleMode(callback) {
pulsePWR(100, 1000, callback);
}
// Для снимка будет использоваться
// короткое нажатие на кнопку питания:
function shutter(callback) {
digitalWrite(SHUTTER,0);
setTimeout(function() {
digitalRead(SHUTTER); // размыкаем цепь
if (callback) setTimeout(callback,1000);
},100);
}
// Склеиваем все команды вместе,
// чтобы включить камеру и сделать снимок:
function takePicture() {
powerOn(function() {
toggleMode(function() {
shutter(function() {
powerOff();
});
});
});
}
// Мигаем каждые 15 секунд, чтобы показать, что мы «живы»:
setInterval(function() {
digitalPulse(LED1,1,20);
}, 15000);
// Делаем снимок каждые 60 секунд:
setInterval(function() {
takePicture();
}, 60*1000);
// Переходим в энергосберегающий режим:
setDeepSleep(1);
Теперь с помощью этого каркаса вы также можете сделать код, который будет записывать несколько секунд видео каждые несколько минут или при обнаружении движения пироэлектрическим датчиком.
См.также
Внешние ссылки