Съдържание:

IronForge тостерът на NetBSD: 9 стъпки (със снимки)
IronForge тостерът на NetBSD: 9 стъпки (със снимки)

Видео: IronForge тостерът на NetBSD: 9 стъпки (със снимки)

Видео: IronForge тостерът на NetBSD: 9 стъпки (със снимки)
Видео: World of Warcraft Soundtrack - Ironforge 2024, Ноември
Anonim
IronForge NetBSD тостер
IronForge NetBSD тостер
IronForge NetBSD тостер
IronForge NetBSD тостер
IronForge NetBSD тостер
IronForge NetBSD тостер

Този проект не започна като тостер, а в крайна сметка се превърна в такъв.

Идеята дойде, когато кухненският ми компютър (стар КПК с Windows CE), който беше използван за показване на моите рецепти за готвене, умря. Първо мислех да създам дисплей с ниска енергия, базиран на E-мастило, който да бъде фиксиран в хладилника ми с магнити и да се изтощава от батерии за много дълго време, но след това получих стара 2.1 съраунд система в кухнята за слушане на музика като Е, затова си мислех, че може би трябва да е компютър, който би могъл да се справи и с двете, а след това ми дойде на ум друг стар проект:

www.embeddedarm.com/blog/netbsd-toaster-powered-by-the-ts-7200-arm9-sbc/

Оригиналният тостер на NetBSD. Този проект сам по себе си е шега за отрепки за тези, които не знаят:

„Отдавна се смята, че UNIX-подобната операционна система NetBSD е преносима за всеки тип машина, с изключение може би на вашия кухненски тостер.“

Тогава нека създадем тостер, който работи с NetBSD и:

  • Температурата и времето за препичане са напълно фино регулируеми от потребителя
  • Въпреки че не се препича, той показва метеорологични данни от 2 метеорологични станции на стилно табло за управление
  • Когато се препича, показва оставащото време и температура както на графиката, така и в цифри
  • Когато не се препича, може да се използва и като будилник и да слуша музика, дори да пуска филми по него
  • Показва рецепти за готвене или може да се използва за редовно сърфиране

Стъпка 1: Работа с тостер и избор на хардуер

Работа с тостер и избор на хардуер
Работа с тостер и избор на хардуер
Работа с тостер и избор на хардуер
Работа с тостер и избор на хардуер
Работа с тостер и избор на хардуер
Работа с тостер и избор на хардуер
Работа с тостер и избор на хардуер
Работа с тостер и избор на хардуер

Тук, за разлика от предишния ми хак за кафе, не вярвам, че направих чудесен избор за тостер, така че ще дам кратко представяне на вътрешната работа на тостера, като избирам критерии и опит сам и ще позволя на читателя да избере собствения си тостер за този хак.

Един от основните ми критерии към тостера беше да мога да правя 4 филии хляб едновременно и да бъда автоматичен, така че след няколко часа прелистване през немския Ebay, реших до

Тостер Severin AT 2509 (1400W)

www.severin.de/fruehstueck/toaster/automati…

Това е широко разпространена марка в Германия, която струваше около 40-50 EUR към момента на писане като чисто нова.

Основни характеристики, които производителят рекламира:

● Топлоизолиран корпус от неръждаема стомана

● интегрирана приставка за печене на ролки

● 2 вала за печене с дълги слотове за до 4 филии хляб

● Електроника за време на печене с температурен сензор

● регулируема степен на тен

● Ниво на размразяване със светлинен индикатор

● Загряващ етап без допълнително тен с контролна светлина

● отделен бутон за освобождаване със светлинен индикатор

● Центриране на резачка за хляб за равномерно покафеняване на двете страни на хляба

● автоматично изключване при засядане на диск за хляб

● Тава за трохи

● Пренавиване на кабела

Въпреки че производителят не твърди, че температурата е регулируема, те правят 2 подвеждащи точки:

● Загряващ етап без допълнително тен с контролна светлина

● Електроника за време на печене с температурен сензор

За да цитираме тези твърдения, нека видим как работи машината:

1, В нормално състояние 230V захранването е напълно изключено, нито една част от тостера не се захранва.

2, Когато потребителят дърпа лоста надолу (който също дърпа хляба), той свързва нагревателния елемент от двете страни.

Това, което направиха тук, е евтин, но и умен дизайн. В тостера няма трансформатор, така че може би се чудите как тогава получава ниското си (10V AC ~) напрежение. Има отделна намотка, свързана с един от нагревателния елемент от лявата страна на тостера, действащ като понижаващ трансформатор, създаващ 10V AC.

След това той използва един диоден токоизправител, за да създаде 10V DC, който захранва основната платка за управление на тостера.

3, Това, което първо си помислих - че това е соленоид + трансформатор заедно - се оказа един -единствен соленоид точно под лоста, който сега се захранва от веригата за управление и отговаря само за едно нещо (за да държи този лост надолу).

Веднага след като този соленоид освободи хляба, всичко е свършено, тостерът по принцип прекъсва собственото си електричество, като по този начин завършва процеса на препичане.

Така че тогава с основание бихте могли да попитате какви са тези изискани бутони и твърдения в листа с данни, че може да размразява, предварително загрява, загрява и каквото и да е … Бих казал, че това е чиста маркетингова BS. Те биха могли да поставят регулатор на времето и 1 единичен бутон върху него, защото в края на деня тази схема не е нищо повече от таймер. Тъй като тази верига се захранва от същия източник на захранване като нагревателния елемент и не може да контролира единственото нещо, което има значение в тази машина (нагревателя), затова дори не се притеснявах за по -нататъшно модифициране на тази верига, просто я хвърлих където й е мястото, на кофата за боклук.

Сега, когато веригата за управление от военно ниво е извън пътя, нека да направим ПЪЛЕН КОНТРОЛ над тостера.

Стъпка 2: Списък на хардуера

Списък на хардуера
Списък на хардуера
Списък на хардуера
Списък на хардуера
Списък на хардуера
Списък на хардуера

Това отново не е пълно, не включва всички основни неща като проводници и винтове:

  • 1x тостер AT 2509 (1400W) или друг тостер, който изберете
  • 1x Arduino Pro Micro
  • 1x 5-инчов резистивен сензорен LCD дисплей HDMI за Raspberry Pi XPT2046 BE
  • 1x Малина PI 2 или Малина PI 3
  • 1x SanDisk 16GB 32GB 64GB Ultra Micro SD SDHC карта 80MB/s UHS-I Class10 w адаптер (за PI)
  • 2x SIP-1A05 реле за превключвател
  • 1x 1PCS MAX6675 модул + K тип термодвойка температурен сензор за Arduino (препоръчително за закупуване на резервни части)
  • 1x изход 24V-380V 25A SSR-25 DA Твърдотелно реле PID температурен контролер
  • 1x Мини DC-DC преобразувател на понижение Модул за захранване на модула за надолу За авиомоделиране (купете повече от тях за подмяна).
  • 2x платка за развитие на сензор за тухлен модул на въртящ се енкодер за Arduino (Ротационен + среден превключвател, препоръчително е да закупите повече от тях за подмяна)
  • 2x WS2812B 5050 RGB LED пръстен 24Bit RGB LED
  • 1x 1 мм A5 прозрачен акрилен лист Perspex Пластмасова плексигласова нарязана 148x210 мм
  • 1x12V 2A DC адаптер (1A също би трябвало да е достатъчно за Pi+Screen+Ardu, но е по -добре със сигурност в случай, че ще свържете допълнителни устройства чрез USB, те ще източат допълнителен ток)
  • 1x PCS HC-SR501 IR пироелектрически инфрачервен инфрачервен IR PIR сензор за детектор на движение модул
  • 2x джъмперна жица 5 пинов женски към женски Dupont кабел 20 см за Arduino (за ротациите си струва да купите повече от тях)
  • 2x Копче за обем от алуминиева сплав 38x22 мм за 6 мм вал за потенциометър сребро
  • 1x 230V реле
  • Група едноредови женски 2,54 мм + мъжки прекъсващи се конектори за връзки
  • По избор за Xbee mod: 1X10P 10pin 2mm женски едноредов прав щифт за лента за заглавка XBee гнездо
  • По избор за Xbee mod: 1 Xbee
  • По избор за Xbee mod: 1x Jumper Wire 4 Pin Female to Female Dupont кабел 20cm за Arduino (между Xbee Raspi)

За захранване трябва да използвате 12V вместо 5V, защото соленоидът няма да издържи на това ниско напрежение, не забравяйте да добавите обратен диод към соленоида.

Ако решите да използвате други компоненти, например.

Стъпка 3: Модифициране на калъфа: Назад е отпред

Модифициране на калъфа: Назад е отпред
Модифициране на калъфа: Назад е отпред
Модифициране на калъфа: Назад е отпред
Модифициране на калъфа: Назад е отпред
Модифициране на калъфа: Назад е отпред
Модифициране на калъфа: Назад е отпред

След премахването на основната верига за управление все още имаше голяма грозна дупка, която гледаше към мястото на превключвателите, така че реших, че просто ще използвам тази страна като задна част и фиксирам разпределителната кутия, в която е поставен SSR (Solid State Relay -> за управление на отоплението) + 230V AC реле (за откриване на мощност) + 12V адаптер, захранващ цялата верига.

Този модел тостер беше трудно да се разглобява и сглобява. Не намерих друг начин да сваля калъфа, освен да го нарязвам с шум точно под основния лост за издърпване, за да мога да повдигна корпуса след развиването и свалянето на лостовете (за щастие, тъй като върху тази част има поставено външно пластмасово покритие това ще бъде незабележимо).

Поставих края на детектора на термодвойката MAX6675 в долната част на тостера на противоположния ръб на основния лост (където това би било в конфликт с механизма на лоста).

Вътрешният калъф е от фин алуминий, дори не е нужно да го пробивате, малък отвор може лесно да се разшири с отвертка, след което да се постави сензорът, сложната част беше да го завиете от вътрешната страна. Трябва да измисля умно решение за това, показано на снимките.

Разглобяването на основния вътрешен тостер с нагревателния елемент е само за хора със здрави нерви и силно не се препоръчва. Така или иначе няма какво друго да правите там.

Проводниците на MAX6675 бяха достатъчно дълги, за да могат лесно да се прокарат през дъното на машината до отвора, където са изведени кабелите.

Пренасянето на всички необходими кабели от единия към другия беше една от най -предизвикателните задачи за модифициране. Не се наложи да пробивам друг отвор от (сега задната) страна, защото кабелите можеха просто да използват отвора от превключвателите. След това кабелите трябва да бъдат фиксирани до стената на кутията, свалени до дъното през много тясно пространство, където те се съединяват с няколко допълнителни проводника от платката за управление на високо напрежение, а именно:

  • 1 проводник от нагревателния елемент -> Преминава към SSR
  • 1 проводник от 230V (за предпочитане гореща кафява точка) -> Преминава към SSR
  • 2 проводника от 230V със затворено състояние на превключвателя -> Преминава към реле за стартиране
  • 2 проводника от 230V главен вход -> Преминава към 12V адаптер отзад
  • Екранирани проводници от термо-сензора

И това е всичко, от което се нуждаете, за да контролирате тостера.

Поради промишленото запояване реших просто да отрежа проводника между нагревателния елемент и единия край на главния (идващ след превключвателя) и с клемни ленти го свързах към SSR.

Ще бъде необходимо реле, работещо от 230V (мрежово напрежение). Това е релето за стартиране, което ще уведоми Arduino, че потребителят е изтеглил лоста, известен още като започнал процеса на препичане. Не забравяйте, че управляващата верига вече не е на място, соленоидът не получава захранване, което би задържало лоста надолу и нагревателят също е изключен (управляван чрез SSR). Всичко това ще бъде задачата на Arduino от този момент нататък.

12V DC адаптерът е свързан директно към главния (добавих допълнителен ON/OFF превключвател отзад). Това ще осигури постоянна мощност на веригата. Тостерът в режим на готовност консумира само: 5,5 W при включен екран и 5,4 W при изключен.

Стъпка 4: Предна арциклична дъска

Преден арцикличен борд
Преден арцикличен борд
Преден арцикличен борд
Преден арцикличен борд
Преден арцикличен борд
Преден арцикличен борд

Не съм експерт в работата с този материал, получих съвет да изрежа дупките върху него с dremmel с високи обороти под течаща вода, но не исках да го усъвършенствам, така че това, което направих, беше просто да пробия в обикновения дупки, напълно се откажете, като изрежете частта между Raspi и екрана, вместо това пробих дупки само в дистанционните елементи на екрана и в съединителя на Raspi, след което изсипах останалото вещество в квадрат, за да може конекторът да се побере през.

Можете да видите, че дъската от плекси има малки пукнатини около някои сондажи, така че знаете какво да избягвате, ако се стремите към перфектен дизайн.

Въпреки това поради топлината няма начин да поставите нещо в кутията на тостера, цялата електронна техника трябва да бъде монтирана на безопасно разстояние от нагревателя.

Не направих никакви подходящи дизайнерски чертежи за листа 148x210mmPlexiglass, просто се опитах да настроя всичко да бъде симетрично и в съответствие, така че се извинявам, че не мога да дам никаква схема за тази част, трябва да го направите сами. Имам обаче 1 съвет:

Преди да залепите светодиодните пръстени, включете ги с Arduino и запалете и маркирайте с химикалка ПЪРВИЯТ И ПОСЛЕДНИЯ светодиод на гърба, за да не завършите с леко завъртане, както направих аз (това обаче може да се коригира от софтуера)

Има 6 дистанционни елементи, предназначени да държат целия преден панел на място, но в края, тъй като късата дължина на ротациите 2 -те долни не преминават през панела.

Използвал съм обикновени дистанционни елементи за дънна платка за компютър между ротациите и плекси панела, също така добавих още 2-2 зад въртящия се, за да осигуря допълнителна стабилност при натискане на бутоните.

Стъпка 5: Верига за управление на тостер

Верига за управление на тостер
Верига за управление на тостер
Верига за управление на тостер
Верига за управление на тостер
Верига за управление на тостер
Верига за управление на тостер

Това беше един от онези проекти, които всъщност максимизираха ВСИЧКИ Arduino пинове:) RX и TX бяха запазени за бъдещо разширение на комуникационен модул.

Основната платка осигурява захранване за всичко чрез доларов конвертор (Arduino, Raspi, Screen, SSR, релета). Тук бих отбелязал, че този регулатор на напрежение не е точно най -съвременният, той не може да надхвърля твърде много входното напрежение от 12V DC. Ако решите да използвате точно същия тип, уверете се, че вашият адаптер осигурява стабилно 12V напрежение на отворена верига (не като адаптер WRT54G, с което ще видите магическия дим, изтичащ за секунди).

Направих платката възможно най -модулна, използвайки гнезда, където можех. Отвъд 2 -та тръстикови релета всичко останало може лесно да бъде заменено.

И двете отлични тръстикови релета идват с вградени флайбек диоди и консумират не повече от 7mA, така че могат да бъдат директно свързани към всякакви щифтове на Arduino (ще продължа да ги препоръчвам и в бъдещите си проекти). Функцията на релетата:

Единият е за включване на соленоида в началото на процеса на препичане (за да държите лоста натиснат надолу).

Единият е за автоматично включване и изключване на екрана в случай на откриване на движение.

Реших, че пускането на този HDMI екран 24/7 няма да осигури дълъг живот (особено това, което използвам, е само евтин фалшификат, а не оригиналният WaveShare:

И може ли компютърът ви да включи екрана, когато влезете в стаята? Не мисля така, тостерът BSD може!

Екранът е по принцип на 10 -минутен таймер за задържане, който автоматично се задейства всеки път, когато отново има движение. Да кажем, че е включен и има движение отново 9 минути по -късно, което означава, че ще остане включено за още 10 минути. Включването и изключването не е здравословно за никоя верига, освен за SSR.

Което ни води до третия и последен елемент за управление на нагревателя. Тези малки устройства са специално създадени за многократно включване и изключване, за да се поддържа температурата под контрол. Това, което избирам, ще работи отлично директно от изходния щифт на Arduino.

В оригиналния дизайн би трябвало да има друго реле на дъската за включване на 2.1 високоговорител, преди Raspberry pi да пусне алармения тон сутрин (също така е много лесно да добавите песен, когато препичането завърши), но тъй като това е IoT защо притеснявам? Той просто иска друг raspi в моята мрежа да направи това за мен със стандартен 433Mhz RCSwitch.

Както обикновено имаше някои по -малки грешки с версията 0.4 на дъската, това може да се види на снимките. А именно 2 други 5V конектора и конектор за входно реле на Arduino pin 10 бяха пропуснати.

Поправих ги във версия 0.5 и също така направих версия, която не е Xbee.

Тъй като това е двуслойна дъска само чрез изтегляне на тези оформления и DIY би било трудно, ще трябва да отпечатате точно двете страни, да гравирате дъската и да намерите начин да свържете страните, така че ще се свържа по -късно в споделения проект на Easyeda. Препоръчително е да го поръчате директно от тях.

Стъпка 6: Xbee Mod

Xbee е тук, само за да контролира кафеварката директно през нея, защото е сравнително близо до нея на разстояние и няма пречки между двете.

Това няма абсолютно нищо общо с тостера или кода на тостера.

За Xbee mod: това е напълно незадължително, затова включвам схемите за тази платка със и без Xbee. Xbee е директно запоен в хардуерния UART порт на RX/TX на Raspberry PI (ttyAMA0), който въпреки че е изведен към конекторите на екрана, екранът не го използва (той използва SPI интерфейс за комуникация на допирните координати между PI и себе си).

Аз посветих отделен сериен порт на PI за Xbee комуникация, вместо да предавам съобщенията през Raspberry -> Arduino -> 5v3v конвертор -> Xbee -> други устройства. По този начин също не е проблем, че процесът на препичане блокира целия MCU.

Стъпка 7: Код за контрол на тостера

Кодът е сравнително прост, което се дължи на факта, че по същество има еднопосочна комуникация между Arduio -> Raspberry PI.

Това устройство, за разлика от кафемашината, не може да се управлява от телефон или компютър само ръчно с някои изискани контроли.

Единствената функция на PI тук е регистриране на данни и показване на хубави графики. Той не е флакон за работата на тостера, може да бъде напълно изключен или дори премахнат от този проект, Arduino върши цялата работа.

В началото кодът нулира светодиодните пръстени, стартира различните таймери за задържане и във всеки цикъл гледа от входа от 2 -те въртящи се превключвателя. Този вход може да означава завъртане по посока на часовниковата стрелка или обратно на часовниковата стрелка или натискане на който и да е от двата превключвателя (който в режим на готовност просто изпраща основна команда IRONFORGE_OFF_ALARM към компютъра, след което се връща към нормално състояние IRONFORGE_OFF).

Вътре в rotary_read_temp () и rotary_read_time () ще се променят променливите global_temp и global_time. Това е единственото място в кода, където тези стойности могат да бъдат променени и те ще съхраняват своите стойности между събития за тостиране.

Вътре в двете функции rotary_memory (), извикана след промяна в позициите, е открита. Това е с цел зареждане на светодиодните статуси на пръстените, защото след процеса на препичане те ще бъдат върнати обратно в черно, за да не губят енергия и да удължат живота им.

LED светлините също се изключват периодично на всеки 10 минути, в случай че не е имало скорошно ротационно събитие.

Свързването на тези 2 функции ще доведе до следното:

1, Приемайки състояние на празен ход

2, Всеки от ротациите е преместен (ако са били коригирани преди, тези стойности (и) ще бъдат възстановени от паметта и показани на светодиодите)

3, Ако процесът на препичане не започне и няма повече събития за настройка, светлините отново ще потъмнеят

Преместих ги и на отделен таймер за задържане от екрана, защото компютърът ще се използва много за показване на метеорологични данни, но не искам ротационните светодиоди да се възстановяват през цялото време, защото не искам да вдигам милион наздравици ден.

Основният процес на препичане (Arduino Side):

Това ще бъде инициирано, когато системата се задейства от релето за входен старт (230V) (и времето и температурата са различни от нулата). Потокът на програмата е следният от страна на Arduino:

1, Включете соленоида, за да задържите лоста

2, Включете SSR за загряване

3, В зависимост от времето стартирайте цикъл за препичане, който отброява. Във всеки цикъл изпратете на компютъра следните данни:

-TEMPERATURE (първоначално стойност с плаваща запетая, но се изпраща като 2 CSV низа)

-TIME остава (за секунди, това ще бъде преобразувано обратно във формат mm: ss от другия край)

4, Във всеки цикъл в зависимост от зададената температура включете или изключете SSR, за да контролирате процеса на препичане

5, В края на цикъла за препичане командата IRONFORGE_OFF ще бъде изпратена до компютъра

6, Изключете SSR и освободете соленоида

7, Играйте LED игра за showoff (тук можете също да добавите музика за възпроизвеждане или каквото друго действие искате)

8, светодиоди за затъмняване

Както казах по -рано, основният цикъл на препичане напълно блокира MCU, през това време не могат да се изпълняват други задачи. Той също така ще игнорира ротационните входове през този период от време.

Основният процес на препичане (малина PI Side):

Raspberry pi изпълнява контролната програма head C с непривилегирован потребител, който е отговорен за всички взаимодействия на работния плот.

Реших да използвам Conky за всички графични дисплеи, защото го използвам от десетилетие и изглеждаше като най -лесният за използване за работата, но има някои уловки:

-Гранулацията на графиката не може да се променя, графиката е с прекалено фини зърна, дори след максималното време за препичане (5 минути) тя достига само до половината от лентата

-Конки обичат да се разбиват, особено когато продължавате да ги убивате и презареждате

По втората причина реших да създам всички conkies чрез отделни надзорни процеси, за да го наблюдавам.

Основният бездействащ луа използва 2 отделни conkies (1 за данните за времето и друг за часовника).

След като тостът започне:

1, Arduino сигнализира малиновата пи C програма чрез сериен с IRONFORGE_ON

2, Програмата за управление C спира 2 -те наклонени нишки и зарежда в 3 -тата лука за препичане

3, програмата Control C записва както температурата, така и стойностите на времето, за да отделят текстови файлове, разположени на ramdisk (да не извършват ненужни RW операции на SD картата), това, което conkies четат и показват автоматично. Програмата е отговорна и за създаването на оставащото време във формат MM: SS.

4, В края на препичането програмата C спира текущата нишка за препичане и рестартира 2 -те conkies, връщайки се отново към времето и времето

5, За откриване на аларма, програмата C може директно да спре процеса на възпроизвеждане на музика от cron, когато в състояние на празен режим някой от ротациите е натиснат

Стъпка 8: Всички ваши наздравици принадлежат на нас: NetBSD срещу Raspbian

Всички ваши наздравици принадлежат на нас: NetBSD Vs Raspbian
Всички ваши наздравици принадлежат на нас: NetBSD Vs Raspbian

Въпреки че тостерът е направен основно за работа с NetBSD и екранния дисплей, звук, Arduino работят с него, няма поддръжка на сензорен екран. Ще се радвам на помощ от всеки, който се интересува да напише драйвер за това.

Сензорният чип на LCD е XPT2046. Екранът използва SPI за изпращане на координатите за въвеждане на курсора обратно към малината.

www.raspberrypi.org/documentation/hardware…

  • 19 Въвеждане на данни TP_SI SPI на сензорния панел
  • 21 TP_SO SPI изход на данни от Touch Panel
  • 22 TP_IRQ сензорен панел прекъсване, ниско ниво, докато сензорният панел открива докосване
  • 23 TP_SCK SPI часовник на сензорния панел
  • 26 Избор на чип с тъч панел TP_CS, ниско активен

Към момента на това писане не съм запознат с някой сензорен екран, съвместим с Raspberry PI (щит), който да работи с NetBSD драйвер за тъчпада.

Стъпка 9: Затваряне и ToDo списък

Затваряне и ToDo списък
Затваряне и ToDo списък

Както винаги всяка помощ, принос, корекции в кода са добре дошли.

Това беше наскоро завършен хак, така че по -късно ще актуализирам проекта с липсващите парчета код (контролен код на Raspberry pi C, Conky luas и т.н.). Също така планирам да създам изображения с 8GB/16GB sdcard с автоматично преоразмеряване, които съдържат всичко. Поради факта, че Raspberry PI е стандартен хардуер, всеки, който реши да изгради проекта, би могъл просто да изтегли изображенията, да ги запише на sdcard и тостерът да функционира след стартиране, точно като моя. Настройването на мрежа е необходимо само за правилното време (NTP) и показване на температурата.

Една останала стъпка ще бъде да се измерват температурите вътре с FLIR и да се добавят корекциите към показанията на MAX термо сензора, защото смятам, че той се загрява твърде бавно за малките макс 5 минути печене.

Също така планирате да добавите времеви период за автоматично мащабиране в зависимост от зададената температура, за да можете да удължите този максимален времеви прозорец от 5 минути, ако температурата бъде понижена.

Препоръчано: