Sat, 03 Nov 2018 21:14:59 +0100
Fix for annotation log before normal log in the json brewlog.
5 | 1 | # BrewBoard op een ESP32 onder FreeRTOS. |
2 | ||
3 | Dit is een vervolg project van het BrewBoard op de Arduino Nano met de | |
4 | MBSE-ArdRims software. Tot begin 2017 zijn deze kant en klare boards via | |
5 | het forum hobbybrouwen.nl verspreid. | |
6 | ||
7 | Het plan was om een upgrade kit te maken op basis van de WeMos chip die bijna | |
8 | gelijk is aan de Arduino Nano maar ook WiFi heeft. In de praktijk bleek dat | |
9 | niet zonder prpblemen te werken, WiFi en brouwen tegelijk is teveel voor een | |
10 | WeMos chip (ESP8266). Toen ongeveer op hetzelfde moment de markt overspoeld | |
11 | werd door BrewMonks, EasyBrew en gelijke systemen was er ook geen behoefte | |
12 | meer om hiermee verder te gaan. | |
13 | ||
14 | Voor mezelf heb ik een nieuw board gemaakt (op experimenteerprint) wat even | |
15 | groot is als het oorspronkelijk board wat ik gebruik, inclusief dezelfde | |
16 | plaats voor alle schroef aansluitingen. De bedoeling is dit board zo uit te | |
17 | kunnen wisselen met het Arduino board. Op dit board wordt de Doit ESP32 Devkit | |
18 | V1 gebruikt. Dit is een ESP32 development board met meer pinnen dan de meeste | |
19 | boards. De meeste boards hebben 30 pennen, deze heeft er 36. En dat is precies | |
20 | genoeg, de 30 pins boards hebben onvoldoende aansluitingen. | |
21 | ||
22 | Als display wordt een 320x240 TFT touchscreen gebruikt wat aangesloten wordt | |
23 | via een SPI bus. Op een tweede SPI bus zit een SD/MMC kaartslot wat aan de | |
24 | voorzijde bereikbaar is. Dit slot wordt gebruikt om recepten in te voeren en | |
25 | om log bestanden op te slaan. Alle overige aansluitingen op het ESP32 board | |
26 | worden gebruikt voor de SSR's, relais en buzzer. | |
27 | ||
28 | In vergelijking met de Arduino Nano heeft de ESP32 de volgende hardware: | |
29 | ||
30 | * 2 processors op 240 MHz, | |
31 | * WiFi | |
32 | * BlueTooth, maar wordt niet gebruikt. | |
33 | * Timers en een Realtime Klok. | |
34 | * 2 SPI bussen (voor de TFT en SD/MMC). | |
35 | * OTA, Over The Air updates. | |
36 | * Nog veel meer bussen die we niet gebruiken. | |
37 | ||
38 | De software is FreeRTOS, dit is een mini embedded OS wat eenvoudig meerdere | |
39 | taken tegelijk kan uitvoeren, dit maakt het programmeren van de brouw software | |
40 | een stuk eenvoudiger als onder de Arduino programmeer opmgeving. | |
41 | ||
42 | Een voorbeeld: de taak task_DS18B20 doet niets anders dan de twee bussen met | |
43 | temperatuur sensoren uit te lezen en de gemeten temperaturen op te slaan zodat | |
44 | andere taken die waardes kunnen gebruiken. Taken kunnen dus klein, simpel en | |
45 | hopelijk vrij van bugs zijn. | |
46 | ||
47 | Het hele systeem zit in elkaar door kleine taken die wel samen moeten werken | |
48 | om tot een totale applicatie te komen. | |
49 | ||
50 | Tot zover de achtergrond van dit project. Ik heb dit voor mezelf gemaakt omdat | |
51 | het MBSE-ArdRims board wat leuke dingen niet kon. Omdat er geen markt is komt | |
52 | er ook geen printje, maar het schema is wel beschikbaar. De software is ook | |
53 | beschikbaar en kun je gewoon gebruiken. Dus wil je hiermee aan de gang, doe je | |
54 | best, er is alleen geen enkele vorm van support. | |
55 | ||
56 | Nog even, ik wilde nog meer dingen toevoegen aan de software (MQTT) maar ook | |
57 | een ESP32 heeft zijn beperkingen. Die liggen wel stukken verder dan de ESP8266 | |
58 | of Arduino Nano, maar ze zijn er. Het belangrijkste is toch het afhandelen van | |
59 | het brouwproces. | |
60 | ||
61 | ||
31 | 62 | #Links |
63 | ||
64 | Dit project gebruikt code van de volgende projecten. De meeste code bevat | |
65 | enkele aanpassingen voor dit project en daarom zijn die projecten volledig | |
66 | geimporteerd in brewboard. | |
67 | ||
68 | Voor de VNC client: https://github.com/novnc/noVNC.git. Losse VNC clients | |
69 | kunnen verbinden met poort 5900. Niet alle clients doen het goed omdat ze een | |
70 | 16 bits full color VNC server verwachten en niet goed downgraden naar 8 bits | |
71 | kleuren. TigerVNC doet het goed. Voor deze applicatie is 16 bits kleur geen | |
72 | optie omdat de schermbuffer dan niet meer in het geheugen past. | |
73 | ||
74 | De PID library: http://playground.arduino.cc/Code/PIDLibrary by Brett | |
75 | Beauregard. | |
76 | ||
77 | De 1-wire bus: https://www.github.com/DavidAntliff/esp32-owb | |
78 | De DS18B20 sensoren: https://www.github.com/DavidAntliff/esp32-ds18b20 | |
79 | ||
80 | De webserver en websockets server. Websockets worden gebruikt voor de VNC | |
81 | web client. Hiervoor heb je geen losse VNC client nodig zoals bijvoorbeeld | |
82 | de TigerVNC viewer maar wordt de VNC code in je browser gezet met javascript. | |
83 | https://github.com/Molorius/esp32-websocket.git components/websocket | |
84 | De javascript VNC client is aangepast voor deze applicatie. | |
85 | ||
86 | Het schema voor dit project staat op EasyDA. Zie | |
87 | https://easyeda.com/mbroek/ESP32_experiments-3ec1c1b17c3b41378ba4493ea69fa5c3. | |
88 | Belangrijk als je dit gaat bouwen: koop het juiste ESP32 devkit board. De | |
89 | meeste boards hebben niet genoeg aansluitingen naar buiten, je hebt echt de | |
90 | 36 pens versie van Geekcreit®nodig. | |
91 | ||
92 | ||
93 | ||
0 | 94 | |
95 | ||
96 | TODO: | |
97 | - Praktijktest. | |
98 | - Nosleep js code toevoegen. | |
28 | 99 | - Web client zonder VNC, of toch niet. |
0 | 100 | |
28 | 101 |