Showing posts from June, 2014

Minute note on avoiding email server from spam blacklist database

Maintaining reputable email server is increasingly time demanding, no only complying to different 'standards' from major MTA providers, but also dealing with bad habit of the users and ever growing innovative ways of user account collectors and spam engine ditchers.

I will try to list some of the most important settings that are required for a high reputation email server, so that any email sent from the account will not fall into spam folder:

A dedicated IPClosed RelayReverse DNSSPF for every domain, including sub-domains.DKIM for every domain, including sub-domains.Valid SSL certificateSSL and TLS connectionA good configuration, i.e. Postfix UCEForcing password to expire after some monthsFor incoming email, it is equally important to set several hurdles like greylist, spamassassin, and anti-virus for the email server.Refreshing users about do and dont with corporate email. A good communication with spam blacklist providers, in case the email server is accidentally abused.


Burning Arduino Bootloader to ATmega328P-PU with Pro Mini

The good thing about Arduino is the capability of becoming an USB programmer for other minimum system. In today's case, I burn ATmega328P-PU on a breadboard with an Arduino Pro-Mini that is coonected to a computer via FTDI.

Hardware SetupAn FTDI cableArduino Pro-Mini, my version is ATmega 328, 16MHz, 5v.Minimum system of Arduino with ATmega 328P-PU chip.  capacitors: a 100nF connecting DTR from FTDI to Arduino Pro Mini, and a 10uF connecting RST to GND on breadboard.some jumper cables.
Step by step
Open the tool tab and select Arduino Pro-Mini 5v, 16MHz, ATmega 328 from the board list of the Arduino IDEOpen the example sketch, select Arduino ISP, and then upload the compiled program to Arduino Pro-Mini.

Connect D10 of Arduino Pro-Mini to RST of the targeted chip on breadboard, then connect a 10uF connecting RST to GND on breadboard.Connect D11, D12, D13, VCC, and GND of Arduino Pro-mini to the respective I/O of the targeted chip on breadbard.

Now select Arduino as ISP f…

Analog read smoothing with Arduino

This is a bit more technical and I will update the article if in the future there is a mistake/misconception in applying the correct algorithm which I believe is already sufficient for the smoothing of analogue value reading from Arduino.
There are many methods of value smoothing, categorized in software based high pass filter, low pass filter, Butterworth filter, etc. But this does not mean that it will increase accuracy of a value generated by a probe. It will only increase the reproducibility within the accuracy range. For example, a typical k-type thermocouple has accuracy of ±12 LSB (equal to ±3.00°C) when connected via Maxim 6675 amplifier and 5v DC. To increase the accuracy, a careful calibration (i.e. 4/5 degree polynomial equation, or a lookup table) may be needed.  For a greater accuracy, it is recommended to use different probe as discussed here.  Methods of averaging To acquire a reproducible average, mode and median filters are commonly implemented. There ar…

Writing and reading float using Arduino EEPROM

This post is just for a personal reminder after reading discussions from elsewhere about storing and reading float values to/from EEPROM with Arduino.

Writing negative float to EEPROM can be tricky, since EEPROM only recognises up to 8-bit values (see Tronixstuff  explanation), therefore it requires an additional algorithm to make it able to store negative and float.  the scheme is to use four bits of the ATmega328's EEPROM to store numerical parts of a float value. The function involved is union.

//union  valuetypedef union{  float flt;  byte array[4];} FloatConverter;
The code
You may grab the code here

A simple tank robot v1

Inspired by:  Barry Miller's tank robot, I wanted to clone his niche Tamiya tank.
Hardware setup The list of hardware required is: an Arduino uno R3Tamiya twin gearbox motor (left right independent)a L293D motor driver (homemade) Tamiya track and wheel setTamiya twin multi-purpose platea small breadboarda pinger (HC-SR4)a standard servo or a mini servoan infrared proximity sensor (GP2Y0A21YK) All parts were available at Klinik Robot or similar websites.
After arranging, here is the front look:

 The Program
You may grab the code here

Lets the fun starts


NTC Thermistor Incubator Part 3: Integrating double digits 7-segment

This is a close to final version of my triplet NTC thermistors incubator with multi-buttons on a single analog input and double digits 7 segment output.  You may read part1 and part2, for the whole story. On a separated article, I replaced NTC thermistor and 7segment with LM35 probe and LCD 16x2, here.

Hardware setup I use Arduino standalone on breadboard, common anode double digits 7 segment 16 pins, two 74HC595s, three NTC thermistors, an FTDI 5v uploaderan optocoupler protected relay module, resistors (10kΩ, 1kΩ, 4k7Ω, 470Ω, 220Ω and 47Ω), and push buttons.

Since the 7 segment that I purchased has no datasheet, it is important to look at other version of common anode (

The final setup on breadboard:

The codesYou may grab the codes here

What next? Obviously, the next step is to print a PCB (there is a great tutorial on the Tube, or if you understand Bahasa Indonesia, here is a great tutorial from Duwi) for this project and to assemble all the parts on it.

I will…

LM35 Incubator with LCD 16x2 on Arduino

Past articles:NTC thermistor incubator (part 1): connecting triple thermistorNTC thermistor incubator (part 2): multi-buttons input for single Analog pin Introducing CodeBender Today I found a great code sharing website called codebender that allows me to use Arduino in any computer since it has online IDE with crossplatform browser plugin to upload to Arduino system.

Remember, Arduino is an Open Source Hardware project, I encourage people to share as much as we learn from others too. Sharing knowledge is awesome!

Since everything is online and pretty straight forward, I will try to explain my project as simple as possible.

The Aim My aim is still to produce an incubator, but today the specification will be:

Internal LM35 temperature sensor that will be placed inside the incubatorExternal LM35 temperature sensor that will monitor ambient/room temperaturePeltier element that will be connected through a relay moduleDisplaying internal (current temp, CT), external (ambient temp, AT), and t…