Tag Archives: Olimex

Olimex ออกคอมพิวเตอร์จิ๋ว H3-OLinuXino-NANO ขนาดแค่ 5cmx5cm

Olimex จากบัลแกเรีย จะออกคอมพิวเตอร์จิ๋ว H3-OLinuXino-NANO บอร์ดขนาด 50 มม. x  50 มม. ใช้ชิป Allwinner H3, แรม 512MB (จริงๆ อาจต่อได้สูงถึง 8GB) มี Ethernet 100Mb, ช่องต่อจอ HDMI แต่บอร์ดนี้ไม่มี SATA

งานนี้ จะร้อนเหมือน OPi PC ซึ่งใช้ชิปตัวเดียวกันไหมเอ่ย

 

Advertisements

Olimex LED Strip Programming with FastLED and codebender

Got prize from Olimex again. It was LED-STRIP-32. To make it works. I use Arduino Leonardo. I jump red wire to 5v, green wire to ground and white wire to data pin (I choose pin 3).

For coding, I use FastLED library that supports TM1804 chip. In order to programming with FastLED quickly, I use “codebender” web-based program that can program Arduino on-line. It includes FastLED library and has example code for using FastLED. Just modify it.

#include "FastLED.h"

#define NUM_LEDS 32
#define DATA_PIN 3

CRGB leds[NUM_LEDS];

void setup() { 
      FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
}

void loop() { 
  leds[0] = CRGB::Red;
  leds[1] = CRGB::Black;
  leds[30] = CRGB::Black;
  leds[31] = CRGB::Blue;
  FastLED.show();
  delay(500);

  leds[0] = CRGB::Black;
  leds[1] = CRGB::Green;
  leds[30] = CRGB::White;
  leds[31] = CRGB::Black;
  FastLED.show();
  delay(500);
}

Choose Arduino type and serial port. Press “Verify Code” then “Run on Arduino”. Some browser add-on may require to install. Finally, LEDs blink.

Olimex LED-STRIP-32

Olimex LED Strip

บอร์ดที่ใช้ชิป Allwinner A80

บอร์ดคอมพิวเตอร์จิ๋วที่ใช้ชิป Allwinner A80 ซึ่งเป็น ARM quad-core Cortex-A15 และ quad-core Cortex-A7 ทำงานในรูปแบบ little.BIG มี GPU 64-core PowerVR G6230 (OpenCL มีหวัง) แต่ไม่มีชิปเสียงและ SATA ในตัว ก็มีผู้สร้างบอร์ดประกาศว่าจะผลิตออกมา เช่น

OptimusBoard จาก Allwinner เอง
PCduino8 มีหัวต่อกับ Shield ของ Arduino
A80-OLinuXino จาก Olimex
CuibieBoard80 มีคลิปแล้วครับ

ความแตกต่างระหว่าง ARM Cortex A5 A7 A8 A9 A12 A15

เกือบทุกๆ วันศุกร์ ทาง Olimex จะมีคำถามชิงรางวัลทาง Twitter ก็มีคำถามเกี่ยวกับชิปของ ARM แบบที่เป็น Cortex-A7 ที่มีสองคอร์มาเทียบความเร็วกับ Cortex-A8 ที่มีคอร์เดียว สำหรับคำตอบคือ 1.9 เท่า และที่เว็บ SpecPhone.com มีการเขียนถึงเรื่องการอ่านสเปคในห้านาที หนึ่งในเนื้อหานั้นคือการดูสถาปัตยกรรม เรียงจากจำนวนตัวเลข เลยขอหยิบยกกันหน่อย

เท่าที่รวบรวมมา ก็ประมาณนี้ครับ ตกหล่นอย่างไรทวงกันได้นะครับ

เรื่องเกี่ยวกับ A5 A7 A8 A9 A12 A15
หลายคอร์ ได้ ได้ ไม่ได้ ได้ ได้ ได้
pipeline stages 8 8-10 13 8-11 10-12 15-24
DMIPS/MHz 1.5 และ 1.6 1.9 2.0 2.5 รอประกาศ 3.5
VFP vfpv4 vfpv4 vfpv3 vfpv3 ? vfpv4
issue rate (จำนวนชุดคำสั่งที่อาจดึงมาได้สูงสุดในหนึ่ง clock cycle) 2 2 2 2 2 3

สำหรับค่าความถี่สัญญาณนาฬิกา ถ้าข้ามรุ่นแล้วจะเอามาเทียบความเร็วกันตรงๆ ก็คงจะไม่ยุติธรรม คงต้องเอาตัวคูณมาเทียบ เช่นอุปกรณ์ที่ใช้ชิป Cortex-A9 แบบ 2 คอร์ ตัวคูณของรุ่นนี้คือคือ 2.5 DMIPS/MHz ทำงานที่ 1700 MHz จะได้ = 2.5 x 1700 x 2 = 8500 DMIPS แต่สมมติอีกตัวใช้ 4 คอร์ Cortex-A5 ตัวคูณของรุ่นนี้คือคือ 1.6 DMIPS/MHz ทำงานที่ 1200 MHz จะได้ = 1.6 x 1200 x 4 = 7680 DMIPS

เดี๋ยวถ้ามีรายละเอียดอื่นๆ จะมาเขียนเพิ่มที่หลังนะครับ

ที่มา AnanTech (1, 2, 3) ; ARM (PDF) ; Android Authority ; ExtremeTech

Computer Unbeatable Hangman Game (Improved)

Improved my Python Code for participation in Weekend Programming Challenge Issue-8 (solutions).

Or improved code http://pastebin.com/raw.php?i=6sCKNae3

import sys
import string
import fileinput
import random
import re
from string import maketrans

# file wordlower.txt contains one word in one line
# to filter only lowerletter 
# grep [a-z] < words.txt > wordlower.txt

file = [line.rstrip('\n') for line in fileinput.input("wordlower.txt")]
#print file[0]
#print file[len(file)-1]
rand = random.Random()
w1 = file[int(rand.random() * len(file))]

#improvement: create list only the same len of random word without itself
#list file_only_the_same_len is list of words for cheating
file_only_the_same_len = [i for i in file if len(i)==len(w1) and i!=w1]

w2 = '.'*len(w1) # len of w1
count = 10
t1 = 'abcdefghijklmnopqrstuvwxyz'
t2 = '.'*len(t1)
usedletter = []

# maskword() removes char c that must be hidden from t1 
# and returns w only char that must be disclosed
def maskword(w, c):
    global t1
    global t2
    t2 = t2[:-1]
    t1 = t1.replace(c, '')
    trantab = maketrans(t1, t2)
    return str.translate(w, trantab)

while True:
    #print "'%s'" % w1 # debug or real cheat :D
    print "Guess word '%s'. Count remain=%d" % (w2, count)
    print "Used letters %s" % usedletter
    if w1 == w2:
        print "You win"
        break

    l = raw_input('Enter guess letter ')
    l = string.lower(l[:1]) #only 1-st lowercase letter
    if any(l in s for s in usedletter):
        print "%s already choosen" % l
        continue
    else:
        usedletter.append(l)
        file_only_the_same_len = [i for i in file_only_the_same_len if not l in i]

    if string.find(w1, l) == -1: #letter not found, no need to change w1
        count -= 1
        print "No %s letter in that word."  % l
        if count <= 0:
            print "You lose. Answer is %s" % w1
            break
        
        continue #letter not found -> continue loop

    # w1 contains that guese letter
    # cheating here
    # by changing (if possible) w1 so that it does not contain letter l
    # and does not contain letters that in usedletter
    # and masking still like w2 (the same string len too

    rex = re.compile("^%s$" % w2)
    for w3 in file_only_the_same_len:
        #print "%s w3=%s cheatlist=%d " % (w1, w3, len(file_only_the_same_len)) # debug printing
        if rex.match(w3): 
            w1 = w3 # todo w3 should not contain letter in usedletter 
            break

    #print "'%s' (cheat)" % w1 # debug or real cheat :D
    if string.find(w1, l) == -1: #check again if letter not found
        count -= 1
        print "No %s letter in that word."  % l
        if count <= 0:
            print "You lose. Answer is %s" % w1
            break

    else:
        print "Contains %s" % l
        w2 = maskword(w1, l)

บอร์ด A10S-OLinuXino-MICRO จาก Olimex มาแล้ว

ชิป Allwinner A10S ความสามารถอยู่ระหว่างชิป Allwinner A10 และ Allwinner A13 คือถูกตัด SATA ที่มีใน Allwinner A10 ออก แต่มี Ethernet, HDMI ซึ่งไม่มีใน Allwinner A13

ตอนนี้ทาง Olimex ก็ทำบอร์ดที่ใช้ชิป Allwinner A10S ออกมาแล้วครับคือบอร์ด A10S-OLinuXino-MICRO มีสองแบบคือมี 4GiB NAND memory กับไม่มี ต่อ LCD ได้ทั้งขนาด 4.3, 7.0 หรือ 10.1 นิ้ว น่าจะเหมาะกับการทำเอาไปทำ kiosk หรือ digital signage แต่ไม่แน่ว่าจะต่อ touch screen ได้ไหม แต่ต่อกับปุ่มกด 5 ปุ่มแบบของ Android ได้ มีแรม 512 MiB แต่สถานะตอนนี้ยังเป็น developer edition อยู่นะครับ เดาว่าพึ่งกำจัดปัญหาที่เกิดกับการใช้งานไปหมดแล้วแต่ยังไม่มั่นใจเสียที่เดียวว่าหมดปัญหาไปแล้วจริงๆ ไหม ในส่วนของระบบปฏิบัติการก็มีทั้ง Android 4.1 และ Debian Linux ติดตั้งได้ทั้งที่ NAND และ SD card

สำหรับบอร์ดที่ใช้ Allwinner A13 ก็มีเหมือนกันนะครับ คือ A13-OLinuXinio-MICRO พอฟัดพอเหวี่ยงกับ Raspberry Pi
ที่มา http://olimex.wordpress.com/2013/05/03/a10s-olinuxino-micro-4gb-developer-edition-is-in-stock/

Using MOD-RFID1356 in Serial Mode by Python

This continues from previous post. Now I write small Python script that uses serial port by pySerial library. Installation pySerial on Raspberry Pi just using command

pip install  pyserial

Script continues to read from /dev/ttyACM0 device that is connected with MOD-RFID1356. Be careful punctuation in Python. Please read PEP8 first.

import serial

ser = serial.Serial('/dev/ttyACM0', 9600, timeout=0)
while True:
    line = ser.readline()
    if (line):
        print (line)

or get this script from http://pastebin.com/5X9Dpkx0