-
Project Update: Whats new?
03/22/2018 at 15:26 • 0 commentsIts been quite a while since I posted a project update so here is whats been going on.
Whats New
Further Firmware Development (New Features & Bug Fixes
- New firmware version binaries are copied onto my NAS which will deploy the firmware OTA to any timers int he world requesting an update
- New Audio Output Feature about to be released. Using SoftwareSerial I have been able to turn the ESP8266 Rx pin which is exposed as the middle pin of the external white connector for simple digital pin toggle of external relays, into a Tx pin for sending serial commands to an external wav/mp3 module containing an SD card with bell tones. When in Tone Output mode the events allow you to choose which bell sounds will play. This feature is intended for use with school or factories using PA based signal systems instead of electric bells.
Switching to Injection Molded cases has been fantastic. These are my current production steps
- Cases produced in China and shipped to another location in China
- Electronics are produced and installed in the cases with 2 screws
- Cases are shipped to me (finally damage free)
- I open the cases and update the firmware to latest production version
- Battery installed in each unit for the RTC
- Each timer is tested for 24 hours being assembled in the cases with all 8 screws
- Timers are either shipped in orders of 10-30 to distributor in Canada or sold individually online
New Website in development
Feel free to take a look and provide feedback. Load speeds will be slow, my ADSL upload speed is about .8Mbps and I am hosting it on a raspberry pi while developing it. All images have been produced with Fusion360 / Photoshop.
http://59.167.111.135:8881/index.html
Some of the 3D renders done in Fusion 360
-
First Injection Moulded Cases
12/04/2017 at 03:45 • 0 commentsSome pictures of the first injection moulded cases.
They are still in China, they will be checking the PCB fit for me before sending samples.
I went with a light grey colour to keep a light and friendly look as the darker case protoypes I made such as black just didnt have the feel I was looking for.
-
Inejection Moulded Cases
11/27/2017 at 12:21 • 0 commentsAfter spending countless hours maintaining 2 Wanhao D6 3D printers churning out cases, gluing the case parts together and installing PCBs I have saved up enough money through the proceeds of sales (around 120 units) to have the tooling made for injection moulding the case.
The first samples should be in my hands within a few weeks. In the meantime here are some pictures of the tooling.
-
Post Processing 3D Printed case for Premium Finish
09/16/2017 at 04:13 • 0 commentsI have developed a way to get a premium finish on the 3D printed cases.
Currently I am only using the premium cases when selling direct to Australian schools/business's, not for bulk wholesale orders to re sellers overseas because of the time it takes to do and lower sales value.
The process involves Automotive High Fill Primer and Sandpaper
My process is as followed
- Spray 3 coats and allow to dry
- Sand under dripping tap with 1000 grit sand paper
- Spray 2 more coats
- Sand under tap with 2000 grit, very lightly
Raw untouch 3D print. Typical layer lines visible.
3 coasts of filler primer with a light sand. Layer lines all filled with original plastic showing though on some edges.
2 more coats of filler primer with very light sand. All surfaced are now filled and polished looking. Actually feels and looks better than low cost injection molded plastics.
-
New shipment of 80 Timers arrived..some broken.
09/16/2017 at 04:03 • 0 comments
A shipment of 80 timers arrived last week. 5 timers had broken screens. It looks customs may have gone to town on the box poorly re wrapping the PCBs afterwards.
I will send them back to the factory for replacement down the track. -
Excellent Sales for Month of August
09/16/2017 at 04:00 • 0 commentsJust a small update, the month of August was a great month with 41 Tick Tock Timers sold.
These sales have been a huge help, allowing me to purchase a second 3D printer (Duplicator 6) as well as upgrade both of the extruders and nozzle to Bondtech BMGs with Swiss All Metal hot ends.
Reliability is key for my printers.
Producing the Tick Tock Timer cases at 40+ a month is a lot of work, anyone running 24x7 printers would be able to relate to this.
(The truck in the background is a 1/50 scale mining truck I 3D printed / painted which I am doing for a Perth company as a side income)
-
New Responsive Design WebGUI
09/16/2017 at 03:51 • 0 commentsThe most requested features from customers has been a way to use the timer with a smart phone and PC.
After considering development times for iPhone/Android/Windows apps I decided a small light weight responsive webgui would be the best cross platform solution.
In developing the WebGui I came accross the following challenges
- Running out of RAM on the ESP8266
- Bugs in the Web Server Library
I ended up having to modify the WebServer library to get Chunked Encoding to work properly as serving up the webgui using a traditional HTML transfer with a Content-length entry in the header was not possible, causing End Of Heap RAM reboots not matter what I did.
I really felt I was running the little ESP past its limits however after many many hours of work I have a stable responsive webGui being served up from the Tick Tock Timer.
--This functionality is now available though OTA firmware update--
The WebGUI supports the following
- Trigger the Bell (Relay)
- Trigger a Disaster mode (Pre defined relay pule patterns)
- Add / Remove / Edit events
- Add / Remove / Edit holidays
- Deployed Icon when saving WebGUI link to Home Screens
Interface designed using Boot Strap and Pingendo.
-
New Lib = Stupidly Fast Draw Speed
04/03/2017 at 14:57 • 0 commentsAfter updating the firmwares ili9341 LCD display library to Adafruits latest release I was please to discover a nice 25% draw speed increase!!! But that was just the beginning....
The test I was using was the timers main screen draw which was taking 560ms to draw, brought down to just 450ms with the library updates. I was really pleased with that!
HOWEVER...
I decided to hunt around for any new developments for the ESP8266/SPI/ili9341 and discovered an ABSOLUTE GAME CHANGER.
Its called TFT_eSPI > https://github.com/Bodmer/TFT_eSPI
Its a SUPER CHARGED version remake of the Adafruit driver.
After compiling this into the Tick Tock Timer firmware the main screen now draws in just 76ms and is looks as instant as your smart phone.
Thats over a 700% increase in draw speed...outstanding.
Anyone who has worked with arduino/esp and all the cheap LCDs that go with that know screen draws are quite slow, but you just live with it. This driver changes all of that.
This really opens up the ESP8266 / ili9341 to the possibility of some decent Wifi Enabled EmBedGames-BoyDuinO style projects.
I really encourage anyone with the hardware to download the library and be blown away by the draw speed, just check out some of the examples included!
-
New Feature: Save / Load up to 3 schedules !
02/23/2017 at 09:14 • 0 commentsAfter exploring the ESP8266 SPIFFS library I have decided to use it for saving / loading of the schedules, allowing you to save schedule for different things such as school day, exam day, interview day, etc.
The way it works is like this
- Active schedule still resides in EEPORM like format, left over from the original MEGA2560 implementation
- 3 save blocks are available for saving schedules into, writing them to files using SPIFFS.
- When saving a schedule you can choose one of many useful names
- When a schedule is LOADED from SPIFFS it is brought back into the EEPROM structure and flaged active
I put a video on Youtube to show how the feature works.
-
Continued Firmware Work
01/27/2017 at 15:39 • 0 commentsOver the past few weeks I have been spending allot of time doing further work on the Tick Tock Timer firmware
The list of changes and bug fixes is HUGE, if anyone wants to read them let me know in the comments section. (I don't actually expect anyone to really be interested in them)
Most noticeable additions
- Web based user Interface added which can trigger the Manual button as well put the system in any of the 3 disaster pattern modes
- Further refinement of the Wifi / NTP UI screen including live signal indicator in the form of a colored dot
I have also noticed the lines of code have reached just under 14,000....and that does not include the 19 ESP8266 / Arduino libraries. Im STILL using the Arduino IDE and using the tabs to break the firmware down into 16 tabs. Getting quite large.
Other statistics (ESP8266)
- 460400 bytes (44%) of program storage space. Maximum is 1044464 bytes
- 50984 bytes (62%) of dynamic memory, leaving 30936
- Binary File is 454KB
- Firmware work began on 4/12/2014
- 2 Prototypes (MEGA2560+ESP8266) | 4 Hardware revisions (MEGA+ESP)
Wifi Connection Screen
Current WIFI/NTP GUI. Wifi strength indicated with GREEN ORANGE or RED circle. Live display including server time.
Anyone interested in how I have structured the MAIN LOOP here it is
void loop() {
//Check if we need to make daylight savings adjustment.
checkDaylightSaving(EEPROM.read(988));yield();
//Check to see if we need to flag system as on holiday
checkHoliday();yield();
//Return to screensaver
screensaver();yield();
//Check if next event arrays need to be updated
calculateNextEvent();yield();
//Watch for touch commands
readTouchInput();yield();
//Service Touch Screen GUI draws
navigation();//Print the current system time
updateClock();yield();
//Check if its time to trigger relay
eventCheckRuntime();yield();
//Pulse time sync check
pulseTimeSync();yield();
//Relay pulse timing service
relayPulseService();yield();
//Special Functions
specialFunctions();yield();
//Menu and security Timeout
menuTimeout();yield();
//Keep Follow Up Pulse timer ticking
followUpTimerTicker();yield();
//Service Time Drift Compensation
timeDriftCompensation();yield();
//NTP Service
syncClockWithNet("TIMER");yield();
//Check Wifi connection status
checkWifiConnection("INTERVAL");yield();
//Handle backlight dimming
backlightFadeOutTimer();yield();
//Handle HTTP server
handleWebServer();yield();
}