Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

471

ZX Spectrum возрождается

Три года назад на Kickstarter открылась кампания по сбору средств на воссоздание и обновление некогда культового компьютера ZX Spectrum, полностью совместимого с оригиналом.

И вот теперь первые «спекки» стали доступны. При работе над проектом были проведены множественные доработки аппаратной части. Внешним видом компьютера занимался дизайнер оригиала Рик Дикинсон.

Эта машина должна была выйти ещё в 2018 году, но, как известно, обещанного ждут три года, а потому первый компьютер был отправлен заказчикам 6 февраля 2020 года.

ZX Spectrum возрождается

Компьютер ZX Spectrum Next содержит впаянный процессор Z80, 1 МБ оперативной памяти с возможностью расширения до 2 МБ, аппаратные спрайты, 256-цветный вывод, видеовыходы RGB/VGA/HDMI и три аудиочипа AY-3-8912. В качестве платы расширения может быть добавлен Raspberry Pi Zero.

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


Источник: nvworld.ru

Показать полностью 1
84

История создания Raspberry Pi: производство и дистрибуция компьютеров

Давайте подробнее разберём, как компания с небольшим капиталом произвела миллион компьютеров Raspberry Pi 1 Model B в 2012 году.

Начало истории читайте тут >

Изначально миссия Raspberry Pi Foundation строилась вокруг идеи обучения британских школьников программированию. Когда Эбен Аптон в 2011 году проектировал самый первый Raspberry Pi 1 Model B, он ожидал, что удастся распространить несколько тысяч устройств, но когда стало очевидно, что спрос на Raspberry Pi намного превышает самые смелые прогнозы, и счёт пойдёт на миллионы, то основатели Raspberry Pi Foundation стали активно искать источники финансирования производства.


Отметим, что создатели маленького и дешёвого компьютера не могли уровнять спрос и предложение простым поднятием цены. Идея Raspberry Pi строилась вокруг объявленной цены $25-35, поэтому общество восприняло бы любую попытку увеличить цену как обман.


Самый простой способ профинансировать производство — вложить собственные деньги, но, к сожалению, никто из основателей на тот момент не был в списках Forbes. Меценатов среди друзей-друзей тоже не нашлось. Банки дают деньги под залог, но у Raspberry Pi Foundation не было имущества, поэтому взять кредит на производство не представлялось возможным.

Идея найти компанию-производителя электроники, которая взяла бы на себя производство и дистрибуцию одноплатных компьютеров, а часть прибыли перечисляла бы в Raspberry Pi Foundation — казалась фантастической, но, как показало время, стратегически верной. Чтобы сотрудничество стало возможным, Эбен и партнёры превратили Raspberry Pi Foundation из компании, которая производит и распространяет компьютеры, в компанию, которая держит права на интеллектуальную собственность и выдаёт лицензии на производство и продажу компьютеров.

Первыми стратегическими партнёрами Raspberry Pi Foundation стали RS Components и Premier Farnell. Десятки лет эти компании производят и продают электронику по всем миру и, самое главное, имеют капитал и экспертизу в области сертификации и маркировки электронных продуктов для различных рынков. Например, продукция без знака СЕ не допускается на внутренний рынок ЕС.


CE — специальный знак, наносимый на изделие, который удостоверяет, что продукт прошёл процедуру оценки соответствия директивам и стандартам Европейского сюза. Маркировка CE указывает на то, что изделие не является вредным для здоровья его потребителей, а также безвредно для окружающей среды.

История создания Raspberry Pi: производство и дистрибуция компьютеров

Маркировка CE

Сотрудники RS Components и Premier Farnell знают, как минимизировать затраты при экспорте  электроники в разные страны. Некоторые страны проводят политику протекционизма и вводят  заградительные торговые пошлины на ввозимую электронику. Например, в Бразилии размер пошлины составляет 100% от стоимости товара, но если ввезти товар по частям и собрать внутри страны, то пошлина составляет 3% от стоимости товара.


RS Components и Premier Farnell на свои деньги размещали заказы на производство компьютеров Raspberry Pi 1 Model B на фабриках в Китае, а из Китая через логистические цепочки доставляли готовую продукцию дистрибьюторам по всёму миру. 29 февраля 2012 года, когда стартовали продажи Raspberry Pi 1 Model B, большая часть продаж осуществлялась через e-commerce площадки дистрибьюторов, но желающих купить Raspberry Pi 1 Model B за $35 было так много, что многие e-commerce площадки не выдержали нагрузки.


Во второй половине года Premier Farnell разместила заказ на производство сотен тысяч компьютеров Raspberry Pi 1 Model B на заводе Sony (Sony UK Technology Centre) в местечке Пенкойд в Южном Уэльсе. Завод выпускал телевизоры, но тенденция переноса промышленного производства электроники в страны юго-востчоной азии не сулила заводу ничего хорошего. Руководство завода инвестировало £50.000 в модернизацию линии, чтобы получить заказ на производство популярного компьютера Raspberry Pi. Сам факт переноса производства компьютеров из Китая в Великобританию был позитивно восприянт патриотичными британцами, ведь после этого Raspberry Pi можно было по праву считать британским компьютером.

К концу года Raspberry Pi Foundation учредила дочернюю организацию Raspberry Pi (Trading) Ltd, в которой Эбен Аптон занял пост CEO. Дочерняя организация взяла на себя проектирование, разработку, производство и дистрибуцию одноплатных компьютеров, а всю полученную прибыль перечисляла в Raspberry Pi Foundation в виде пожертвований. После этого преобразования Raspberry Pi Foundation занималась сбором пожертвований и обучением детей программированию — тем, для чего изначально и создавалась.


Будем рады любым дополнениям и уточнениям этой истории в комментариях!

Показать полностью 1 1
26

Светодиодная панель встроенная в переднюю панель компьютера

Вместо решетки охлаждения, сделано на микроконтроллере ESP32 в среде разработки Arduino.

Вместо решетки охлаждения, сделано на микроконтроллере ESP32 в среде разработки Arduino. Работает от двух USB разъемов, звук подключается по 3,5Jack.

Если будет интересно выложу схему со скетчем.

2385

Сделал тот самый гиперкуб!

Привет, Пикабу! Таки убедили вы меня сделать этот несчастный зеркальный гиперкуб =) Нам понадобится:

- Ардуино

- Адресная лента

- Алюм. профиль 10х10

- Стекло

- Зеркальная плёнка (солнцезащитная)

- Винтики, гаечки, клей, паяльник, и т.д.


Из профиля собрал куб с внешней стороной 202 мм

Наклеиваем ленту

Подключаем

Режем стёкла и наклеиваем плёнку

Крепим это всё на кубе

И получаем супер-пупер-бесконечный-светодиодный-анимированный-ВАУТРИДЕ коридор! Все подробности как обычно в видео =)

Держите эксклюзивный кадр с котом, который не вошёл в ролик =)

Показать полностью 9
101

Автополив цветка на основе Ардуино

Всем добрый вечер, не так давно увлекся Ардуино и первая мысль которая пришла мне в голову, это сделать автополив для цветка. Хоть он в моем доме и один, но мы с женой регулярно забываем его поливать.
Итак, после того, как я определился с темой моей "научной работы", я затарился у наших друзей китайцев необходимыми комплектующими, а именно:
1. Arduino Nano CH340/ATmega328P ~ 260 р.
2. Поплавковый датчик горизонтального типа ~ 100 р.
3. Помпа на 12v ~ 280 р.
4. Датчик влажности почвы ~ 30 р.
5. Блоки питания на 12v 2A и 5v 0.5А ~ 370 р.
6. Пьезопищалка, провода, разъемы ~ 100 р.
7. Реле ~ 80 р.
Итого: 1170 р.
Кто-то скажет что за эти деньги будет поливать этот грёбаный цветок сам в течение всего года, а я скажу что мне проще было соединить все компоненты и написать код чтобы оно работало.
Как итог, автополив умеет определять когда необходимо полить землю с помощью датчика влажности почвы. Датчик поплавкового типа необходим для того, чтобы определить отсутствие воды в ёмкости, в данном случае это 5л. баклаха. Если воды нет, от Ардуино издает звуковой сигнал. Так же если вода отсутствует, а датчик влажности почвы говорит что земля высохла и надо бы её полить, то Ардуино не включит помпу, пока баклашка не будет заполнена водой.
Летом жена обещала подарить 3D принтер, так что буду заморачиваться над корпусом для этого всего.
Всем спасибо, если нужен код программы, то пишите, выложу его на диск и кину ссылку в комментарии .

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

Показать полностью 5 1
136

Из Arduino в С/C++ и мои первые шаги

Доброго времени суток уважаемые.

Вот, буквально недавно, я бился в судорогах наслаждения от того что научился мигать светодиодом на голом С/С++.

Мем в полной мере отоброжает эмоции моей души. Просто представьте, делаешь что-то, упорно при упорно через ошибки, поражения и тут на тебе - заработало, понял суть!

Немного Story of my life:

Раньше я вообще ни каким местом не касался программирования, от слова совсем! Ну было что-то в школе, техникуме - тогда это меня не интересовало и пропускал всё мимо ушей.

И вот, переломный день года так 2018 - был тихий вечер, мне 29 годиков, сижу залипший в YouTube, прилетает рекомендация - ролик Гайвера про Ардуино. Посмотрел и загорелся!!!

Закупился набором с Алика и давай познавать основы основ.

Наигравшись с дисплейчиками, кнопками, шаговыми моторчиками, RFID и т.д., начал обдумывать более реальные, полезные вещички.

Не-не, я не стал выдумывать миллионный "умный" дом который по факту умным и не является вообще, разве что автономный. Я хотел найти полезность микроконтроллеров в своей профессии - электромонтёр. Автоматизировать некоторые процессы, сделать более точные инструменты для работы и так далее. Плюсом в этом является то, что не отрываясь от своей основной профессии (которая мне нравится), я смогу изучить другое направление при этом, это направление сможет отлично дополнить мою основную деятельность + развитие.

Первым результатом всех поисков стали опыты приминения Arduino в цепях переменного напряжения 220...380В:

- Как Arduino запускает эл.двигатели 7 и 15 кВт одновременно.

- Arduino и эл.двигатели 7 и 15 кВт. Взорвался симистор.

Получил бесценный опыт для себя.

Думаете я на этом остановился? Неет. Начал засматриваться на другие МК, такие как Attiny13..85. Они подходили отлично под мои задачи, простые задачи. Применение Atmega328, которое пихают везде где надо но в основном где не надо, в этих задачах - это излишки мощности и много-много свободных незадействованных ножек. Attiny13 или же 85 это отличный вариант в простеньких проектах

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

Выход был один - писать код на С/С++ в Atmel Studio. Была загвоздка - я ни фига не шарил в этом.

Скачал даташиты, посмотрел парочку уроков в YouTube и понеслась - первое знакомство с регистрами.

Скажу честно, прыгнуть с Arduino в регистры МК - не очень приятное занятие. Возникает чувство что всё что ты изучил в Arduino, типа millis(), pinMode, digitalWrite и т.д. это всё коту под хвост.

Вроде бы код написанный в оболочке Arduino или Atmel Studio выполняет одно и тоже, но состав кода отличается конкретно.

Чтобы правильно работать с регистрами - нужно заглядывать в даташит, а он на английском и страниц там под 100+. В общем заняте ещё то для такого как я - новичка.

Но, пару вечеров на неделе, несколько десятколв роликов на YouTube и вауля... стало получатся. А какой же "выхлоп" я получил от этого - более быстрая работа МК, там где в ардуино занимало 1Кб памяти, стало занимать 200 байт, отсутствует лишняя переферия.

Вот так произошло моё первое знакомство с языком C/C++.

Показать полностью 3
398

Кубико-генератор

Пост немного неформатный для моего профиля, но всё же решил поделиться поделкой.


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


Сделать решено было 2 кубика параллельно (чего уж размениваться?). Чтобы "дрыгать" 14-ю светодиодами, использовал 74HC595. За мозги взял ATtiny13A, его возможностей хватит за глаза. Светодиоды использовал недавно полученные прозрачные красные, они имеют яркое направленное свечение.


Схему накидал на листочке, потом перенес в старый добрый Sprint-Layout

Далее классика: ФЛУТ, лужение "жидким оловом" от Rexant (очень уж удобно), пайка, цапон-лак в 3 слоя.

Для прошивки Тиньки были выведены пины вокруг неё. Далее подключил UNO как программатор, запустил Arduino IDE и стал осваивать программную часть.

Прошивка получилась коротенькая, без использования индусского shiftOut занимает всего 50% от 1К памяти. Разумеется используется псевдо-рандом, берущий значения от тактов МК, но для генерации случайного числа этого вполне достаточно. При прошивке, сразу после компиляции, надо на UNO нажимать reset, иначе выдается ошибка.


Код с комментариями, может кому-то пригодится:

#define F_CPU 1200000UL

#include <avr/io.h>

#include <util/delay.h>

#define latchPin 1//8

#define clockPin 2//12

#define dataPin 0//11

char tik=0,tik2=3; //счётчик для генератора случайных чисел

#define RAND_MAX 5 //максимальное число


word myArr1[] = {0b0000000010000000,0b0000000000000010,0b1000000000000000,0b0000001000000000,0b0000010000000000,0b0100000000000000,0b0000000000000100,0b0000000001000000}; // массив для бегущей точки

byte dice[] = {0b00010000,0b10000100,0b10010100,0b11000110,0b11010110,0b11101110};

unsigned char display[2];

void write_display(unsigned char *data, unsigned char nbytes)

{

unsigned char mask,i;

for(i = 0; i < nbytes; i++)

{

mask = 0x80;

for(char k = 0; k < 8; k++)

{

// Сравниваем каждый бит с единицей

if(data[i] & mask)

{

PORTB |= (1 << PB0); // DATA 1

PORTB |= (1 << PB2); // CLK 1

PORTB &= ~(1 << PB2); // CLK 0

}

else

{

PORTB &= ~(1 << PB0); // DATA 0

PORTB |= (1 << PB2); // CLK 1

PORTB &= ~(1 << PB2); // CLK 0

}

mask = mask >> 1; // Сдвигаем биты

}

}

// Защелкиваем регистр

PORTB |= (1 << PB1);

PORTB &= ~(1 << PB1);

}

int main( void )

{

DDRB |= (1<<latchPin);

DDRB |= (1<<clockPin);

DDRB |= (1<<dataPin);

DDRB &= ~(1<<4);


display[0] = dice[0];

display[1] = dice[0];

write_display(display,2);


while(1)

{

tik++; //таймер для настройки генератора случайных чисел.

if(tik>RAND_MAX){tik=0;}

tik2--;

if(tik2<0){tik2=RAND_MAX;}

for (byte i=RAND_MAX; i>tik; i--){

tik2--;

if(tik2<0){tik2=RAND_MAX;}

}

if(!(PINB&(1<<4))) //Если нажата, то…

{

_delay_ms(100); //задержка для защиты от дребезга

while(!(PINB&(1<<4))); //Ждем, когда отпустят кнопку

for (byte i=0; i<8;i++){

display[0] = myArr1[i]>>8;

display[1] = myArr1[i];

write_display(display,2);

_delay_ms(100);

}

display[0] = dice[tik];

display[1] = dice[tik2];

write_display(display,2);

_delay_ms(100);

}}}

Переключатель оказался пока никак не задействован (планировал сделать 1d6/2d6), возможно в будущем придумаю какую-нибудь функцию и для него, как и еще для одной свободной ноги.

Собрал всё в любимой мной распаячной коробке, размер подошел отлично, даже не пришлось плату крепить на стойки (зажимается и держится коробочным саморезом). В корпусе тоже не стал делать отверстий, через него диоды смотрятся гораздо лучше и кнопка срабатывает нажатием на корпус. С автономным питанием не стал заморачиваться, вывел mini-USB, а дальше хош - от розетки, хош - от банки силы.

Кнопку в будущем можно повесить сенсорную, однако тут переделывать уже смысла не было.


Вот как это выглядит (получилось размыто, но суть понятна):

В планах перевести проект на SMD, тиньку в SOP8-корпусе. Не знаю как всё это буду паять, но всё уже заказано :) А вместо кучи резисторов использовать 9-пиновую DIP-"гребенку".


Всем бобра и творческих успехов! =)

Показать полностью 5 1
Отличная работа, все прочитано!