Sunday, December 25, 2016

SPEEEduino v1.0 and the VooDoo sequence

At that moment in time, yours truly only have 1x working Arduino Uno lying around, and definitely could not do Arduino as ISP to burn bootloader into a new ATMega328p on the SPEEEduino. So he transplanted the ATMega328p what is in working condition from the Arduino Uno into SPEEEduino, assumes it will work straight out of the box, and start to program away. Fate took an unfortunate turn when he tries to download the code into SPEEEduino transplanted with ATMega328p.
yours truly was greeted with the legendary
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x47
he thought he had a batch of bricked PCB, but upon closer examinations he noticed the LED on pin13 blinks according to the example code downloaded via the Arduino Uno to verify the functionality of ATMega328p before the transplant.
Then he verified the following connection via continuity test
tx(CP2102)->rx pin2(MCU)=ok
rx(CP2102->tx pin3(MCU)=ok
Computing Environment
1. Win8.1, Arduino IDE 1.6.7. SPEEEduino with transplanted ATMega832p gave this error of avrdude: stk500_recv(): programmer is not responding
2. Ubuntu14, Arduino IDE 1.6.8. SPEEEduino with transplanted ATMega832p works out of the box in this environment.
A little consolation prize is needed to keep troubleshooting to solve the mystery of not working in windows environment, but works in linux environment.
If you landed on this page looking for solution for the legendary error of avrdude: stk500_recv(): programmer is not responding or avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x47 look no further than the next step where yours truly outlined the voodoo sequence. If you are interested to know the troubleshooting sequence, look further.
SPEEEduino is connected with CP2102 on a valid com port on a lenovo laptop running windows8.1 and Arduino IDE 1.5.6 r2 with verbose mode turn on upload via File->preferences
when you are about to press the "upload" button to compile and download the hex to the board, press and hold the "reset" button on SPEEEduino. upon seeing the first handshake "avrdude: Send: 0 [30] [20] ", release the reset button. you will now able to program the ATMega328p. refer to the screenshot for details.
this voodoo sequence seems to be counter intuitive, because Arduino Bootloader supports auto reset feature with a 0.1uF cap and 10K resistor is connected between the DTR line to the RST on ATMega328.
yours truly took a 2 days scraping the Internet forum posts, and experimenting on many laptops to be able to download the hex successfully.
this voodoo sequence is the workaround for the legendary error of avrdude: stk500_recv(): programmer is not responding or avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x0a
Good Riddance

Friday, October 7, 2016

ESP32 With Arduino IDE

Christmas 2015 yours truly was one of the lucky few in the world to receive theESP32 for experimenting. The board was not assembled, and it was quite intimidating to assemble the board with just a fine tip solder. The experiment is documented at this URL:
This afternoon, yours truly came across the Arduino Core for ESP32 on github URL here: . Very exited on this discovery, he was eager to experiment with it, but only when he is done with the consultations. If his STM serves him well, he recalled witnessing the exponential growth of IoT devices made with ESP8266 posted on the Internet, the ESP8266 board wars by the various board makers, professionals and amateurs alike. The growth was particular intriguing, especially after the ESP8266 development environment was ported from the regular GCC and make, to arduino IDE. He might relive the growth of ESP32, now with Arduino port.
After installing, the settings seems to be prim and proper. Check out the screenshot for details
The following was the setup environment for ESP32 with Arduino IDE
arduino IDE 1.6.5

[UPDATE] The following setup that works: Ubuntu14.04 x86 desktop, Arduino IDE 1.6.12, python2.7

There is a gotcha moment; caveat emptor. [UPDATE] : works with Ubuntu14.04
This is a work in progress post. [UPDATE] : check out new screenshots
The instructions given in github is crystal clear download the necessary files.
Here comes the fun bit, from the writeup it seems to be running off *nix. But since yours truly office laptop only comes with windows, he proceed nonetheless. Administrator rights needed to run the
check out the screenshots for the details on win8.

Yours truly tried to compile the blink example with ESP32, but was greeted with this error.On hindsight, perhaps it is better to install in the following environment
Ubuntu14 or any other *nix distros

Ubuntu14.04 x86

Monday, June 27, 2016

Maker Faire Singapore 2016

Maker Faire Singapore 2016

Efforts in Maker community and education recognized by Singapore Ministers.  

24Jun16, Received 
“Certificate of Recognition for 5 years of continuous support & enthusiasm” from Dr. Vivian Balakrishnan Minister of Foreign Affairs.

25Jun16 Received “Certificate of Appreciation” from Dr. Yaacob Ibrahim Minister of Communications and Information 

Wednesday, June 22, 2016

Fab Lab Fab Academy Final Project Software Defined Cooking with ESP8266

Fab Lab Fab Academy Final Project Software Defined Cooking with ESP8266

Software Defined Cooking with ESP8266

There is an idiom: the proof of the pudding is in eating it. Same applies to the successful implementation of Software Defined Cooking with ESP8266; the proof is in the egg and eating it. 

The objective of this final project to be submitted in due course for completion of Fab Academy 2016 is to design and fabricate an apparatus that display & control the temperature of a heated water bath (Sous Vide) over the Internet. DS18B20 acquire the temperature of the water bath, ESP8266 send this data via HTTP to thingspeak, and via MQTT to Node-Red server hosted on Cloud or VM. PID controller is defined in Node-Red with a set point. Output of PID is send via MQTT to ESP8266 to control the CPC1966B connected with heater.


Ever since humans discovered fire to cook food. The desire to have tasty food hot, and ready to serve without significant labour contributed to the preparation is insatiable. Progressively over different period of time, the labour required to prepare food is contracted to another person whether specialized or otherwise. By logical extension of the idea of the labour is contracted out to prepare food for humans, here comes the robot cook. Hence the notion of Software Defined Cooking meant for robots or home appliances have to be defined. An industry framework is needed to define protocols, communication standards, recipe, dispensing of food items, quality assurance and etc for Software Defined Cooking. Through observations on demonstrations in CES over the years, the software defined cooking appliances meant for smart kitchens are implemented in product silos by the respective vendors. Appliances that do not interact with other makes of smart appliances, and human owners are nothing close to the ideals of a Software Defined Cooking. 

Some vendors have disrupted the market by inventing heating mechanism meant for cooking that is controllable by software. FreeScale have invented a “solid-state, high-power output, high-operating temperature radio frequency (RF) transmitter technology” to address software defined cooking. This articlehere explains the FreeScale RF solution and addresses the following issues: 
1. “Heating is difficult to control with both thermal (heat) and temporal (time) precision. Heating elements take time to heat, are frequently not calibrated to a precisely measured numeric temperature scale, and then take time to cool to lower temperatures.”; 
2. “It is extremely difficult to track the “doneness” state of the inside of food with precision.” 
3. “The feedback loop between sensing doneness and adjusting temperature has been performed mostly by human observation, judgement and labor throughout recorded human history.” 

The article above also outline three features of a Software Defined products 
A. “Gather and analyze sensor data.” 
B. ”Maintain peak performance and health based on sensor data analysis (feedback loop).” 
C. “Communicate their analysis with other software-define products and cloud services for continuous improvement.” Besides the highlights of the 3 issues and 3 features, the article mentioned above and the product video of RFSage, an innovative appliance utilizing the FreeScale RF technology did not communicate enough details for a layman to deduce whether the RF mentioned is used for both transferring heat and communicating cooking data between different make of smart appliances in the category of software defined cooking.


A little more historical background. Back in 2011, I chanced upon sous vide while clicking away on cooking videos over the Internet, and saw a demo of thermal circulator in a chemistry lab, I have never looked back since. The essence of sous vide cooking is to maintain a water bath at precise temperature, with food placed in food safe bags submerged into this precise temperature controlled water bath. We started off with a store bought DIY kit that cost quite an arm and leg. We even went to the extent to make sous vide shield for Arduino. At that point in time, a dedicated sous vide supreme is out of the equation, it has to give way to tuition fee, rent, transport, and food. 

Sous vide solved two out of the three issues highlighted earlier. Doneness of the inside of the food is precise with sous vide, thus the inexperienced novice is spared from the labourious sensing doneness and adjusting temperature to prevent overcooking; hopefully stop food wasting from bad cooks. The other pressing issue is the calibration between heat transfer and time needed for heat to transfer is solved partially with some sous vide implementations. Some amateurish sous vide controller uses “bang-bang” algorithm for open feedback loop system, which is bad, really bad and hardly precise at the required set point. Some comes with PID controller, in which a controller for continuously adjusting the heat and time components in a closed feedback loop system. 

The three features mentioned above speaks of the cloud computing itself without mentioning the name. A server in the cloud will collect and collate information send by the sensors, perform computations on the data collected, transmit control to the actuators, and lastly communicate to user through the use of visualizations. 

Full implementation here:

Friday, January 22, 2016

Fab Academy16  "This paper presents the composition and the rationale behind the creation of a network of fabrication laboratories, FAB LABs, whose mission is to provide concrete examples that would lay the foundation for a new framework for this reconceptualization. "

weekly builds and guides at