Electronics & Embedded Systems

ITEAD Sonoff – Built-in ESP8266 IoT System

ITEAD is  a company which is presented in an aspect of maker electronic product, especially in part of smart-home gadget device. I bought 3 items of ‘Sonoff’ since 2-3 months ago, but still don’t have time for studying with.  So, in this article, the links denote targets planned to do.

Sonoff has ESP8266 inside. And, surely, it can be reprogram with NEWer firmware. With a new firmware, Sonoff might be able to run Node.js command, and other new features.

PS. I wish that a new firmware would support an open-source IoT app for Android.

Electronics & Embedded Systems

เล่น HY-SRF05 กับ AVR ATMEGA328p + Motelib Library

หลายท่านคงเคยใช้ Ultra Sonic Distance Sensor ตัวนี้มาบ้างแล้ว หรืออาจเคย Implement บน Arduino Platform ก็พูดได้ว่า ง่ายกว่า จะทำบน Interrupt บน C ของ AVR ตรงๆทำไม  ซึ่งก็ขอบอกว่า Accuracy แตกต่างกันอย่างแน่นอน อ่านเพิ่มเติม

Electronics & Embedded Systems

Infimum และ Minimum แตกต่างกันอย่างไร

จาก http://math.stackexchange.com/questions/342749/what-is-the-difference-between-minimum-and-infimum  อธิบายได้ดีมาก

เช่น S = (0, 10)  ซึ่งไม่มี minimum แต่มี infimum เท่ากับ 0  เพราะว่า S เป็น Infinite Set การจะหา Minimum หรือ Maximum นั้น ไม่สามารถทำได้

แต่สำหรับ Infimum นั้น “ใหญ่ที่สุด แต่เล็กกว่าทุกค่าของ S” ดังนั้น Inf ของ S จึงเท่ากับ 0

Electronics & Embedded Systems

ทำ Flashdrive เพื่อเป็น External usb drive สำหรับ OpenWRT

Linux ถือเป็น OS ยาสารพัดประโยชน์ทีเดียว ใช้ได้แทบทุก Device ที่ประมวลผลได้
แต่ปัญหาคือ Linux system มักถูกปรับแต่งให้มอง Device เป็น Computer PC
ซึ่งแน่นอนว่า ไฟมันไม่ติดๆดับๆเหมือน Home appliance อยู่แล้ว
ดังนั้น ถ้าเราใช้ File system ที่ไม่รองรับกับสถานการณ์ไฟดับ .. Boom .. Files เราก็ Corrupted ทุกครั้งที่เปิด/ปิด ไฟ


  1. ต้องทำ Read-only file system สำหรับ Main system files และ Software ที่เราพัฒนา
  2. แยก Read/Writable partition ออกไป .. ซึ่งต้องจำไว้ว่า ไฟมันจะดับเมื่อใดก็ต้อง ดังนั้น ต้อง mount แบบ sync เท่านั้น


สำหรับ journalling technique ที่ใช้กับ File system อย่าง Reiser, Ext3, Ext4, .. ก็สามารถช่วยปัญหาเวลาไฟดับได้
แต่คุณต้องเจอกับปัญหาจำนวน Write cycle ที่จำกัดเข้ามาแทนที่
(ถึงแม้แน่ใจแล้วว่า Flash drive ของคุณมา Ware leveling mechanism ก็ตาม)
ซึ่งทางที่ดีก็ควร mount แบบ ro,noatime,nodiratime,norelatime จะดีกว่า

Electronics & Embedded Systems

Ware Levelling

เป็น Technique เพื่อทำให้ Flash storage ทั้งหลายมีอายุการใช้งานนานขึ้น

ปัญหา: Flash storage (e.g. SD card) มีอายุการใช้งาน จำกัดจำนวนเขียนซ้ำ (Write cycle limitation) ซึ่งหาก Cell ใดถูกเขียนบ่อยกว่า ก็จะเสีย (ฺBad sector) ได้เร็วกว่า Cell อื่น

ถึงแม้ว่า OS + Tools สามารถค้นหา และ Mark bad sector ได้ แต่ว่า ก็ยังไม่ดีพอ เสี่ยงต่อการที่ระบบ Crash ดังนั้นจึงดีกว่า หากจะทำให้ Flash storage มีอายุการใช้งานได้นานขึ้น

Wear Levelling : (เป็น Hardware mechanism หรือใน File system driver) ช่วยให้การเขียนกระจายตัวในทุก Cell เท่าๆกัน ช่วยยืดอายุแต่ละ Cell บน Flash storage ให้ใช้งานได้นานขึ้น

Wear leveling attempts to work around these limitations by arranging data so that erasures and re-writes are distributed evenly across the medium. In this way, no single erase block prematurely fails due to a high concentration of write cycles. In flash memory, a single block on the chip is designed for longer life than the others so that the memory controller can store operational data with less chance of its corruption.


Electronics & Embedded Systems

INL/DNL Measurements for High-Speed Analog-to-Digital Converters (ADCs) – Tutorial – Maxim

INL/DNL Measurements for High-Speed Analog-to-Digital Converters (ADCs) – Tutorial – Maxim.

Techniques: Measuring INL and DNL — of ADCs.

Differential nonlinearity (DNL) :

DNL error is defined as the difference between an actual step width and the ideal value of 1 LSB. For an ideal ADC, in which the differential nonlinearity coincides with DNL = 0LSB, each analog step equals 1LSB (1LSB = VFSR/2N, where VFSR is the full-scale range and N is the resolution of the ADC) and the transition values are spaced exactly 1LSB apart. A DNL error specification of less than or equal to 1LSB guarantees a monotonic transfer function with no missing codes. An ADC’s monotonicity is guaranteed when its digital output increases (or remains constant) with an increasing input signal, thereby avoiding sign changes in the slope of the transfer curve. DNL is specified after the static gain error has been removed. It is defined as follows:

DNL = | [(VD+1– VD)/VLSB-IDEAL – 1] | , where 0 < D < 2N – 2.

VD is the physical value corresponding to the digital output code D, N is the ADC resolution, and VLSB-IDEAL is the ideal spacing for two adjacent digital codes. By adding noise and spurious components beyond the effects of quantization, higher values of DNL usually limit the ADC’s performance in terms of signal-to-noise ratio (SNR) and spurious-free dynamic range (SFDR).



Integral nonlinearity (INL) :

INL error is described as the deviation, in LSB or percent of full-scale range (FSR), of an actual transfer function from a straight line. The INL-error magnitude then depends directly on the position chosen for this straight line. At least two definitions are common: “best straight-line INL” and “end-point INL” (see Figure 1b):

  • Best straight-line INL provides information about offset (intercept) and gain (slope) error, plus the position of the transfer function (discussed below). It determines, in the form of a straight line, the closest approximation to the ADC’s actual transfer function. The exact position of the line is not clearly defined, but this approach yields the best repeatability, and it serves as a true representation of linearity.
  • End-point INL passes the straight line through end points of the converter’s transfer function, thereby defining a precise position for the line. Thus, the straight line for an N-bit ADC is defined by its zero (all zeros) and its full-scale (all ones) outputs.

The best straight-line approach is generally preferred, because it produces better results. The INL specification is measured after both static offset and gain errors have been nullified, and can be described as follows:

INL = | [(VD – VZERO)/VLSB-IDEAL] – D | , where 0 < D < 2N-1.

VD is the analog value represented by the digital output code D, N is the ADC’s resolution, VZERO is the minimum analog input corresponding to an all-zero output code, and VLSB-IDEAL is the ideal spacing for two adjacent output codes.



Figure 4b. This plot shows typical differential nonlinearity for the MAX108, captured with the analog integrating servo loop.

Figure 4a. This plot shows typical integral nonlinearity for the MAX108 ADC, captured with the analog integrating servo loop.