Inhoudsopgave:

IronForge de NetBSD-broodrooster - Ajarnpa
IronForge de NetBSD-broodrooster - Ajarnpa

Video: IronForge de NetBSD-broodrooster - Ajarnpa

Video: IronForge de NetBSD-broodrooster - Ajarnpa
Video: NetBSD — не только для тостеров 2024, November
Anonim
IronForge de NetBSD-broodrooster
IronForge de NetBSD-broodrooster
IronForge de NetBSD-broodrooster
IronForge de NetBSD-broodrooster
IronForge de NetBSD-broodrooster
IronForge de NetBSD-broodrooster

Dit project begon niet als een broodrooster, maar werd er uiteindelijk een.

Het idee kwam toen mijn keukencomputer (een oude Windows CE PDA) die werd gebruikt om mijn kookrecepten weer te geven het begaf. Eerst dacht ik aan het maken van een op E-ink gebaseerd energiezuinig display dat met magneten op mijn koelkast zou worden bevestigd en heel lang zonder batterijen zou werken, maar toen kreeg ik een oud 2.1-surroundsysteem naar de keuken om naar muziek te luisteren als nou, dus ik dacht dat het misschien een computer zou moeten zijn die beide ook zou kunnen doen en toen kwam er een ander oud project in me op:

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

De originele NetBSD-broodrooster. Dit project op zich is een geekgrap, voor degenen die het niet weten:

"Er wordt al lang aangenomen dat het UNIX-achtige besturingssysteem NetBSD draagbaar is voor elk type machine, behalve misschien je keukenbroodrooster."

Laten we dan een broodrooster maken waarop NetBSD draait en:

  • De temperatuur en roostertijd is volledig fijn instelbaar door de gebruiker
  • Hoewel het niet aan het roosteren is, geeft het weergegevens van 2 weerstations weer op een stijlvol dashboard
  • Tijdens het roosteren worden de resterende tijd en temperatuur zowel in een grafiek als in cijfers weergegeven
  • Als het niet aan het roosteren is, kan het ook worden gebruikt als wekker en om muziek te luisteren, zelfs om er films op af te spelen
  • Geeft kookrecepten weer of kan worden gebruikt om regelmatig te bladeren

Stap 1: Bediening van de broodrooster en het kiezen van de hardware

Bediening van de broodrooster en het kiezen van de hardware
Bediening van de broodrooster en het kiezen van de hardware
Bediening van de broodrooster en het kiezen van de hardware
Bediening van de broodrooster en het kiezen van de hardware
Bediening van de broodrooster en het kiezen van de hardware
Bediening van de broodrooster en het kiezen van de hardware
Bediening van de broodrooster en het kiezen van de hardware
Bediening van de broodrooster en het kiezen van de hardware

Hier, in tegenstelling tot mijn vorige koffie-hack, geloof ik niet dat ik een goede keuze heb gemaakt voor een broodrooster, dus ik zal een korte introductie geven van de innerlijke werking van de broodrooster, het zelf kiezen van criteria en ervaring en laat de lezer zijn/haar eigen broodrooster kiezen voor deze hack.

Een van mijn belangrijkste criteria voor de broodrooster was om 4 sneetjes brood tegelijkertijd te kunnen maken en automatisch te zijn, dus na een paar uur door de Duitse Ebay te hebben gebladerd, heb ik besloten om naast de

Severin AT 2509 (1400W) broodrooster

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

Dit is een wijdverbreid merk in Duitsland, het kostte ongeveer 40-50 EUR op het moment van schrijven als gloednieuw.

Belangrijkste kenmerken waarvoor de fabrikant adverteert:

● Warmtegeïsoleerde roestvrijstalen behuizing

● geïntegreerd braadstuk voor broodjes

● 2 braadschachten met lange sleuf voor maximaal 4 sneetjes brood

●Braadtijdelektronica met temperatuursensor

● instelbare bruiningsgraad

● Ontdooistand met indicatielampje

● Opwarmfase zonder extra bruining met controlelampje

● aparte ontgrendelknop met indicatielampje

● Broodsnijmachine centreren voor het gelijkmatig bruinen van beide broodzijden

● automatische uitschakeling wanneer een broodschijf is vastgelopen

● Kruimellade

● Kabel terugspoelen

Hoewel de fabrikant niet beweerde dat de temperatuur instelbaar is, maken ze 2 misleidende punten:

● Opwarmfase zonder extra bruining met controlelampje

●Braadtijdelektronica met temperatuursensor

Laten we, om deze beweringen te citeren, eens kijken hoe de machine werkt:

1, In normale toestand is de 230V-netvoeding volledig losgekoppeld, geen enkel deel van de broodrooster staat onder stroom.

2, Wanneer de gebruiker de hendel naar beneden trekt (die ook de broden naar beneden trekt), verbindt deze het verwarmingselement aan beide zijden.

Wat ze hier hebben gedaan, is een goedkoop maar ook slim ontwerp. Er zit geen transformator in de broodrooster, dus je kunt je afvragen hoe hij dan aan zijn lage (10V AC ~) spanning komt. Er is een aparte spoel gekoppeld aan een van de verwarmingselementen aan de linkerkant van de broodrooster die werkt als een step-down transformator die 10V AC creëert.

Vervolgens gebruikt het een enkele diodegelijkrichter om 10V DC te creëren die de hoofdbesturingskaart van de broodrooster van stroom voorziet.

3, Wat ik eerst dacht - dat het een solenoïde + transformator samen is - bleek een enkele solenoïde te zijn direct onder de hendel die nu wordt aangedreven door het besturingscircuit en slechts voor één ding verantwoordelijk is (om die hendel naar beneden te houden).

Zodra deze solenoïde het brood loslaat, is het allemaal voorbij, de broodrooster snijdt in feite zijn eigen elektriciteit af en voltooit het roosterproces.

Dus je zou dan met recht kunnen vragen wat die mooie knoppen en beweringen op de datasheet zijn dat het kan ontdooien, voorverwarmen, opwarmen en wat dan ook … Ik zou zeggen dat het pure marketing-BS is. Ze zouden er een tijdregelaar en 1 enkele knop op kunnen zetten, want aan het eind van de dag is dit circuit niets meer dan een timer. Aangezien dit circuit wordt gevoed door dezelfde stroombron als het verwarmingselement en het niet het enige kan regelen dat van belang is in deze machine (de verwarming), heb ik niet eens de moeite genomen om dit circuit verder te modificeren, maar gooide het gewoon waar het thuishoort, naar de vuilnisbak.

Nu het controlecircuit van militaire kwaliteit uit de weg is, laten we de VOLLEDIGE CONTROLE over de broodrooster nemen.

Stap 2: Hardwarelijst

Hardwarelijst
Hardwarelijst
Hardwarelijst
Hardwarelijst
Hardwarelijst
Hardwarelijst

Dit is weer geen volledige bom, bevat niet alle basics zoals draden en schroeven:

  • 1x AT 2509 (1400W) broodrooster of welke andere broodrooster je ook kiest
  • 1x Arduino Pro Micro
  • 1x 5-inch resistief touchscreen LCD-scherm HDMI voor Raspberry Pi XPT2046 BE
  • 1x Raspberry PI 2 of Raspberry PI 3
  • 1x SanDisk 16GB 32GB 64GB Ultra Micro SD SDHC-kaart 80MB/s UHS-I Class10 w Adapter (voor de PI)
  • 2x SIP-1A05 Reed-schakelrelais
  • 1x 1PCS MAX6675 Module + K Type Thermokoppel Temperatuursensor voor Arduino (aanbevolen om reserveonderdelen te kopen)
  • 1x Uitgang 24V-380V 25A SSR-25 DA Solid State Relais PID Temperatuurregelaar
  • 1x Mini DC-DC Buck Converter Step Down Module Voeding Voor aeromodelling (koop meer van deze voor vervangingen).
  • 2x Rotary Encoder Module Brick Sensor Development Board voor Arduino (Rotary + Middle Switch, aanbevolen om meer van deze te kopen voor vervanging)
  • 2x WS2812B 5050 RGB-led-ring 24-bits RGB-led
  • 1x 1mm A5 transparant Perspex acrylplaat Kunststof plexiglas gesneden 148x210mm Lot
  • 1x12V 2A DC-adapter (1A zou ook genoeg moeten zijn voor de Pi+Screen+Ardu, maar het is beter om zeker te gaan als je extra apparaten via USB aansluit, ze zullen extra stroom verbruiken)
  • 1x PCS HC-SR501 IR Pyro-elektrische Infrarood IR PIR Bewegingssensor Detector Module
  • 2x Jumper Wire 5 Pin Female naar Female Dupont Kabel 20cm voor Arduino (voor de rotaries is het de moeite waard om er meer van te kopen)
  • 2x Aluminiumlegering Volumeknop 38x22mm voor 6mm Potentiometer As Zilver
  • 1x 230V relais
  • Stelletje enkele rij vrouwelijke 2,54 mm + mannelijke breekbare kopconnectoren voor de verbindingen
  • Optioneel voor Xbee mod: 1X10P 10pin 2mm vrouwelijke enkele rij rechte pin header strip XBee socket
  • Optioneel voor Xbee-mod: 1 Xbee
  • Optioneel voor Xbee mod: 1x Jumper Wire 4 Pin Female naar Female Dupont Kabel 20cm voor Arduino (tussen Xbee Raspi)

Voor voeding moet je een 12V gebruiken in plaats van 5V omdat de solenoïde dat lage spanningsniveau niet vasthoudt, vergeet niet om een flyback-diode op de solenoïde toe te voegen.

Als je besluit om andere componenten te gebruiken, bijvoorbeeld: andere buck-module voor spanningsverlaging van 12V->5V, moet je het bord opnieuw ontwerpen, het is gemaakt voor die ene specifieke kleine vierkante buck-converter.

Stap 3: De behuizing aanpassen: achterkant is de voorkant

De zaak modificeren: achterkant is de voorkant
De zaak modificeren: achterkant is de voorkant
De zaak modificeren: de achterkant is de voorkant
De zaak modificeren: de achterkant is de voorkant
De zaak modificeren: achterkant is de voorkant
De zaak modificeren: achterkant is de voorkant

Na het verwijderen van het hoofdbesturingscircuit was er nog steeds een groot lelijk gat dat uitkijkt op de plaats van de schakelaars, dus ik heb besloten dat ik die kant gewoon als de achterkant zal gebruiken en de aansluitdoos met de SSR (Solid State Relay -> voor verwarmingsregeling) + 230V AC-relais (voor stroomdetectie) + de 12V-adapter die het hele circuit van stroom voorziet.

Dit broodroostermodel was nogal moeilijk te demonteren en weer in elkaar te zetten. Ik vond geen andere manier om de behuizing te verwijderen, maar door met een dremmel recht onder de hoofdhendel naar beneden te trekken om de behuizing op te tillen na het losschroeven en verwijderen van de hendels (gelukkig omdat er een buitenste plastic coating op dat onderdeel zit dit zal onmerkbaar zijn).

Ik heb het detectoruiteinde van het MAX6675-thermokoppel aan de onderkant van de broodrooster aan de andere kant van de hoofdhendel geplaatst (waar het in conflict zou zijn met het hendelmechanisme).

De binnenkant van de behuizing is van fijn aluminium, je hoeft er niet eens in te boren, een klein gaatje kan gemakkelijk worden vergroot met een schroevendraaier en dan de sensor erin plaatsen, het lastige was om het vanaf de binnenkant tegen te schroeven. Hiervoor moet ik een slimme oplossing bedenken, zoals te zien is op de foto's.

Het uit elkaar halen van de belangrijkste interne broodroosterbehuizing met het verwarmingselement is alleen voor mensen met sterke zenuwen en wordt ten zeerste afgeraden. Verder hoef je daar toch niets te doen.

De draden van de MAX6675 waren net lang genoeg om gemakkelijk door de onderkant van de machine te worden geleid naar het gat waar de kabels naar buiten werden geleid.

Alle benodigde kabels van de ene naar de andere brengen was een van de meest uitdagende modding-taken. Ik hoefde niet nog een gat te boren aan de (nu achterkant) kant omdat de kabels gewoon het gat van de schakelaars konden gebruiken. Vervolgens moesten de kabels aan de wand van de kast worden vastgemaakt, naar beneden gebracht door een zeer nauwe ruimte waar ze samenkomen met een paar extra draden van de hoogspanningsbesturingskaart, namelijk:

  • 1 draad van het verwarmingselement -> Gaat naar SSR
  • 1 draad van de 230V (liefst hot brown point) -> Gaat naar SSR
  • 2 draden van de 230V met schakelaar gesloten toestand -> Gaat naar startrelais
  • 2 draden van de 230V main in -> Gaat naar 12V adapter aan de achterkant
  • Afgeschermde draden van de thermosensor

En dat is alles wat je nodig hebt om de broodrooster te bedienen.

Vanwege het industriële solderen heb ik besloten om eenvoudig de draad tussen het verwarmingselement en het ene uiteinde van de hoofdleiding (komt na de schakelaar) door te knippen en met klemmenstroken op de SSR aan te sluiten.

Er is een relais nodig dat werkt op 230V (de netspanning). Dit is het startrelais dat de Arduino laat weten dat de gebruiker de hendel naar beneden heeft getrokken, oftewel het roosterproces is begonnen. Vergeet niet dat het regelcircuit niet meer op zijn plaats zit, de solenoïde geen stroom krijgt wat de hendel naar beneden zou houden en ook de verwarming is losgekoppeld (aangestuurd via de SSR). Dit alles zal vanaf dit punt de taak van de Arduino zijn.

De 12V DC-adapter wordt rechtstreeks op de hoofdvoeding aangesloten (ik heb een extra AAN / UIT-schakelaar aan de achterkant toegevoegd). Dit zorgt voor een constant vermogen voor het circuit. De broodrooster in de standby-modus verbruikt slechts: 5,5 W met het scherm AAN en 5,4 W met het scherm uit.

Stap 4: Arcyclisch bord vooraan

Arcyclisch bord aan de voorkant
Arcyclisch bord aan de voorkant
Arcyclisch bord aan de voorkant
Arcyclisch bord aan de voorkant
Arcyclisch bord aan de voorkant
Arcyclisch bord aan de voorkant

Ik ben geen expert in het werken met dit materiaal, ik kreeg het advies om de gaten erin te snijden met een dremmel met hoog toerental onder stromend water, maar ik wilde het niet te perfectioneren, dus wat ik deed was gewoon in de normale gaten, geef het volledig op met het uitdremmen van het gedeelte tussen de Raspi en het scherm, in plaats daarvan heb ik alleen gaten geboord bij de afstandhouders van het scherm en bij de connector van de Raspi, daarna vijlde ik de resterende substantie uit tot een vierkant om de connector te laten passen door.

Je kunt zien dat de plexiplaat kleine scheurtjes heeft rond sommige boringen, dus je weet wat je moet vermijden als je een perfect ontwerp nastreeft.

Vanwege de hitte is het echter onmogelijk om iets in de behuizing van de broodrooster te stoppen, alle elektronica moet op een veilige afstand van de kachel worden gemonteerd.

Ik heb geen goede ontwerptekeningen gemaakt voor de 148x210 mm plexiglasplaat, ik heb gewoon geprobeerd alles symmetrisch en in lijn aan te passen, dus mijn excuses dat ik geen schema kan geven voor dit onderdeel, je moet het alleen doen. Ik heb echter 1 advies:

Voordat u de LED-ringen gaat lijmen, schakelt u ze in met een Arduino en licht op en markeert u met een pen de EERSTE en LAATSTE led op de achterkant, zodat u ze niet licht gedraaid monteert zoals ik deed (dit is echter corrigeerbaar vanuit software)

Er zijn 6 afstandhouders ontworpen om het hele voorpaneel op zijn plaats te houden, maar aan het einde omdat de korte lengte van de draaiknoppen de 2 onderste niet door het paneel worden gevoerd.

Ik heb gewone pc-moederbordafstandhouders gebruikt tussen de draaiknoppen en het plexi-paneel, ook 2-2 meer achter de draaiknop toegevoegd om wat extra stabiliteit te geven wanneer de knoppen worden ingedrukt.

Stap 5: Besturingscircuit broodrooster

Broodrooster Controle Circuit
Broodrooster Controle Circuit
Broodrooster Controle Circuit
Broodrooster Controle Circuit
Broodrooster Controle Circuit
Broodrooster Controle Circuit

Dit was een van die projecten die ALLE Arduino-pinnen maximaal benutte:) de RX en TX waren gereserveerd voor toekomstige uitbreiding van de communicatiemodule.

De hoofdprintplaat levert stroom voor alles via een buck-converter (Arduino, Raspi, Screen, SSR, Relays). Hier wil ik opmerken dat deze spanningsregelaar niet bepaald state-of-the-art is, hij kan niet te veel over de 12V DC-inkomende spanning gaan. Als je besluit om precies hetzelfde type te gebruiken, zorg er dan voor dat je adapter een stabiele 12V nullastspanning levert (niet zoals een WRT54G-adapter, daarmee zie je de magische rook binnen enkele seconden ontsnappen).

Ik heb het bord zo modulair mogelijk gemaakt, met stopcontacten waar ik kon. Buiten de 2 reed-relais kan al het andere eenvoudig worden vervangen.

Beide uitstekende reed-relais worden geleverd met ingebouwde flyback-diodes en verbruiken niet meer dan 7mA, zodat ze rechtstreeks kunnen worden aangesloten op Arduino-pinnen (ik zal deze ook in mijn toekomstige projecten blijven aanbevelen). De functie van de relais:

Een daarvan is om de solenoïde aan het begin van het roosterproces in te schakelen (om die hendel naar beneden te houden).

Een daarvan is voor het automatisch in- en uitschakelen van het scherm als er beweging wordt gedetecteerd.

Ik dacht dat het 24/7 draaien van dat HDMI-scherm geen lange levensduur zou bieden (vooral wat ik gebruik is slechts een goedkope vervalsing, niet de originele WaveShare:

En kan uw pc ook het scherm aanzetten als u de kamer binnenkomt? Ik denk het niet, de BSD-broodrooster kan dat!

Het scherm heeft in feite een timer van 10 minuten die automatisch omhoog gaat als er weer beweging is. Dus laten we zeggen dat het is ingeschakeld en er is weer beweging 9 minuten later, dat betekent dat het nog 10 minuten aan blijft. In- en uitschakelen is voor geen enkel circuit gezond, behalve voor de SSR.

Dat brengt ons bij het 3e en laatste bedieningselement voor het regelen van de verwarming. Deze kleine apparaatjes zijn speciaal gemaakt om veel aan en uit te zetten om de temperatuur onder controle te houden. Wat ik kies, werkt prima rechtstreeks vanaf een Arduino-uitgangspin.

In het oorspronkelijke ontwerp zou er een ander relais op het bord zijn geweest om een 2.1-luidsprekerset aan te zetten voordat de Raspberry pi 's ochtends de alarmtoon speelt (het is ook heel gemakkelijk om een nummer toe te voegen wanneer het roosteren is afgelopen) maar aangezien dit IoT is waarom storen? Het vraagt gewoon een andere raspi op mijn netwerk om dat voor mij te doen met een standaard 433Mhz RCSwitch.

Zoals gewoonlijk waren er wat kleinere fouten met de 0.4-versie van het bord, wat te zien is op de foto's. Namelijk nog 2 5V-connectoren en een connector voor ingangsrelais op Arduino-pin 10 zijn weggelaten.

Ik heb deze gecorrigeerd in versie 0.5 en ik heb ook een niet-Xbee versie gemaakt.

Aangezien dit een 2-laags bord is door alleen deze lay-outs te downloaden en DIY moeilijk zou zijn, zou je de 2 zijden precies moeten afdrukken, het bord moeten etsen en een manier moeten vinden om de zijkanten te verbinden, dus ik zal later in het gedeelde Easyeda-project linken. Het wordt aanbevolen om het rechtstreeks bij hen te bestellen.

Stap 6: Xbee-modus

De Xbee is er alleen om het koffiezetapparaat er rechtstreeks doorheen te bedienen, omdat het relatief dichtbij is in afstand en er geen obstakels tussen de twee zijn.

Het heeft absoluut niets te maken met de broodrooster of de broodroostercode.

Over de Xbee-mod: dit is volledig optioneel, daarom voeg ik de schema's voor dit bord met en zonder de Xbee toe. De Xbee is rechtstreeks gesoldeerd in de RX/TX hardware UART-poort (ttyAMA0) van de Raspberry PI, die weliswaar wordt verwijderd naar de connectoren van het scherm, maar het scherm gebruikt het niet (het gebruikt de SPI-interface om de aanraakcoördinaten tussen de PI en zichzelf te communiceren).

Ik heb een aparte seriële poort op de PI gereserveerd voor de Xbee-communicatie in plaats van de berichten door de Raspberry -> Arduino -> 5v3v-converter -> Xbee -> andere apparaten te sturen. Op deze manier is het ook geen probleem dat het roosterproces de hele MCU blokkeert.

Stap 7: Besturingscode broodrooster

De code is vrij eenvoudig, wat te wijten is aan het feit dat er in feite een eenrichtingscommunicatie is tussen de Arduio -> Raspberry PI.

Dit apparaat kan, in tegenstelling tot het koffiezetapparaat, niet worden bediend vanaf een telefoon of computer, alleen handmatig met een paar mooie bedieningselementen.

De enige functie van de PI hier is datalogging en het weergeven van mooie grafieken. Het is geen flacon voor de werking van de broodrooster, het kan volledig worden uitgeschakeld of zelfs uit dit project worden verwijderd, de Arduino doet al het werk.

In het begin reset de code de led-ringen, start de verschillende hold-timers en in elke lus kijkt deze vanaf de invoer van de 2 draaischakelaars. Deze invoer kan een rotatie met de klok mee of tegen de klok in betekenen of het indrukken van een van de 2 schakelaars (die in de inactieve modus gewoon een basiscommando IRONFORGE_OFF_ALARM naar de computer stuurt en vervolgens teruggaat naar de normale IRONFORGE_OFF-status).

Binnen de rotary_read_temp() en rotary_read_time() worden de variabelen global_temp en global_time gewijzigd. Dit is de ENIGE plaats in de code waar deze waarden kunnen worden gewijzigd en ze zullen hun waarden opslaan tussen roostergebeurtenissen.

Binnen beide functies wordt de rotary_memory() aangeroepen zodra een wijziging in de posities is gedetecteerd. Dit is bedoeld om de led-statussen op de ringen terug te laden, omdat ze na het roosterproces weer op zwart worden gezet, om geen stroom te verspillen en hun levensduur te verlengen.

De LED-lampjes worden ook periodiek om de 10 minuten uitgeschakeld voor het geval er geen recente roterende gebeurtenis is geweest.

De combinatie van deze 2 functies resulteert in het volgende:

1, uitgaande van inactieve toestand:

2, een van de draaiknoppen verplaatst (als ze eerder waren aangepast, worden deze waarde(n) uit het geheugen hersteld en weergegeven op de leds)

3, als het roosterproces niet start en er geen aanpassingsgebeurtenissen meer zijn, gaan de lichten weer uit

Ik heb ze ook op een aparte hold-timer van het scherm verplaatst omdat de computer veel zal worden gebruikt om weergegevens weer te geven, maar ik wil niet dat de roterende LED's de hele tijd worden hersteld omdat ik geen miljoen toasts wil maken per dag.

Het belangrijkste roosterproces (Arduino Side):

Dit wordt gestart wanneer het systeem wordt geactiveerd vanaf het ingangsstartrelais (230V) (en zowel de tijd als de temperatuur verschillen van nul). De programmastroom is als volgt aan de Arduino-kant:

1, Schakel de solenoïde in om de hendel ingedrukt te houden;

2, zet SSR aan om op te warmen

3, Afhankelijk van de tijd start een roosterlus die aftelt. Stuur in elke lus de volgende gegevens naar de computer:

-TEMPERATUUR (oorspronkelijk drijvende-kommawaarde maar wordt verzonden als 2 CSV-reeksen)

-TIME blijft over (in seconden, dit wordt aan de andere kant terug geconverteerd naar mm:ss-formaat)

4, in elke lus, afhankelijk van de ingestelde temperatuur, de SSR in- of uitschakelen om het roosterproces te regelen;

5, aan het einde van de roosterlus wordt het IRONFORGE_OFF-commando naar de computer gestuurd:

6, schakel SSR uit en laat de solenoïde los!

7, Speel LED-game voor showoff (hier kun je ook speelmuziek toevoegen of welke andere actie je maar wilt)

8, verduisterende leds

Zoals ik al eerder zei, blokkeert de belangrijkste roosterlus de MCU volledig, gedurende deze tijd kunnen geen andere taken worden uitgevoerd. Het negeert ook roterende invoer in deze tijdsperiode.

Het belangrijkste roosterproces (Raspberry PI Side):

De raspberry pi voert het head C-besturingsprogramma uit met een onbevoegde gebruiker die verantwoordelijk is voor alle interacties op de desktop.

Ik besloot Conky te gebruiken voor alle grafische weergaven omdat ik het al tien jaar gebruik en het leek het gemakkelijkst te gebruiken voor de klus, maar het heeft enkele vangsten:

-Grafiekkorreligheid kan niet worden gewijzigd, de grafiek is te fijnkorrelig, zelfs na de maximale roostertijd (5 minuten) komt deze maar tot de helft van de balk

-Conky crasht graag, vooral als je hem blijft doden en herladen

Om de tweede reden heb ik besloten om alle conkies te spawnen via afzonderlijke toezichtprocessen om het te bewaken.

De standaard inactieve lua gebruikt 2 afzonderlijke conkies (1 voor de weergegevens en een andere voor de klok).

Zodra het roosteren begint:

1, Arduino signaleert het raspberry pi C-programma via serieel met IRONFORGE_ON

2, het controle C-programma stopt de 2 conky threads en laadt in de 3e conky lua voor het roosteren

3. Het control C-programma schrijft zowel de temperatuur- als tijdwaarden uit om tekstbestanden op ramdisk te scheiden (om geen onnodige RW-bewerkingen op de SD-kaart uit te voeren), wat de conkies automatisch inlezen en weergeven. Het programma is ook verantwoordelijk voor het creëren van de resterende tijd naar MM:SS-formaat.

4, aan het einde van het roosteren stopt het C-programma de huidige roosterdraad en herstart de 2 conkies om weer terug te gaan naar de weer- en tijdweergave

5, voor alarmdetectie kan het C-programma het proces van het afspelen van muziek van cron direct stoppen wanneer in inactieve toestand een van de draaiknoppen wordt ingedrukt

Stap 8: Al uw toasts zijn van ons: NetBSD versus Raspbian

Al uw toasts zijn van ons: NetBSD versus Raspbian
Al uw toasts zijn van ons: NetBSD versus Raspbian

Hoewel de broodrooster is gemaakt om voornamelijk NetBSD te gebruiken en de schermweergave, het geluid en de Arduino er allemaal mee werken, is er geen ondersteuning voor het aanraakscherm. Ik zou hulp op prijs stellen van iedereen die geïnteresseerd is om hiervoor een driver te schrijven.

De aanraakchip van het LCD-scherm is XPT2046. Het scherm gebruikt SPI om de invoercoördinaten van de cursor terug naar de Raspberry te sturen.

www.raspberrypi.org/documentation/hardware…

  • 19 TP_SI SPI-gegevensinvoer van aanraakscherm
  • 21 TP_SO SPI-gegevensuitvoer van aanraakscherm
  • 22 TP_IRQ Touch Panel interrupt, laag niveau terwijl het TouchPanel aanraking detecteert
  • 23 TP_SCK SPI-klok van aanraakscherm
  • 26 TP_CS Touch Panel-chipselectie, laag actief

Op het moment van schrijven ben ik niet op de hoogte van een Raspberry PI-compatibel (schild) touchscreen met een werkende NetBSD-driver voor het touchpad.

Stap 9: afsluiting en takenlijst

Sluiting en takenlijst
Sluiting en takenlijst

Zoals altijd zijn alle hulp, bijdragen en verbeteringen in de code welkom.

Dit was een onlangs voltooide hack, dus ik zal het project later bijwerken met de ontbrekende codestukken (Raspberry pi C-besturingscode, Conky luas enz.). Ook ben ik van plan om automatisch aanpasbare 8GB/16GB sdcard-afbeeldingen te maken die alles bevatten. Vanwege het feit dat de Raspberry PI standaard hardware is, kan iedereen die besluit het project te bouwen gewoon de afbeeldingen downloaden, ze op een sd-kaart schrijven en de broodrooster zou na het opstarten werken, net als de mijne. Het opzetten van een netwerk is alleen nodig voor de juiste tijd (NTP) en de temperatuurweergave.

Een resterende stap is om de temperaturen binnen te meten met een FLIR en de aanpassingen toe te voegen aan de uitlezing van de MAX-thermosensor omdat ik denk dat deze te langzaam opwarmt voor de korte roosterperiode van maximaal 5 minuten.

Ben ook van plan om de tijdsperiode automatisch te schalen, afhankelijk van de ingestelde temperatuur, om dit maximale tijdvenster van 5 minuten te kunnen verlengen als de temperatuur wordt verlaagd.