Li-Po bataryalar ya da diğer adı ile lityum polimer batarylar yeniden sarj edilebilir ve flex bir yüzeye sahip lityum iyon teknolojisi ile çalışan bataryalardır.Batarya ağırlığının kritik olduğu projelerde sıklıkla kullanılmaktadırlar.Genel olarak radyo frekansı ile kontrol edilen uçak modeller,uzaktan kontrollü yürür ekipmanlarda kullanılırlar.

Yukarıdaki devre 3,7V/630mAh bir lityum batarya hücresinin şarj ünitesini temsil etmektedir.Şarj etme voltajı 4V olup yine şarj etme akım kapasitesi ise 63mA ile sınırlıdır.

Yukarıdakini devrenin ana kalbini LM324 oluşturmaktadır.Burada LM324 karşılaştırıcı olarak kullanılmıştır.Referans voltajı bu devrede 3,5V olup,Vref=(9/(R1+R2))*(R1) formülü ile elde edilmektedir.
Burada bataryanın pozitif ucu D1 diyotu tarafından bağlanılmakta ve R5 ise sadece pull down direnci görevi görmektedir.

Batarya şarj voltajı 4V üzerine çıktığında,geri bildiim voltajı negatif input durumundan 3,5V üzerine cıkacak,lakin 4V olarak bataryadan gelen voltaj üzerinden D1 diyotunun 0,5V luk gerilim düşümü oluşacaktır.Opamp çıkış ucu ise Q1 transistörü üzerinden off konumunda bulunacaktır.Böylelikle batarya şarj konumunda çıkacak.Ne zaman ki batarya voltajımız 4V altına düşecek ve geri bildirim voltajımızda 3,5V altına bu durumda ise opamp ımızın çıkış durumu on durumuna gelecek ve lipo bataryamız yeniden şarj konumunu alacaktır.Burada R4 numaralı direncimiz batarayamızın 60mA olan akım değerini sınırlamak amacı ile kullanılmıştır.


Devremizde D2 ledi sadece sistemin durumunu belirtme amacı ile kullanılmıştır.Batarya şarj olma süresi boyunca yanıp sönecek olan bu led,bataryamız şarj olduğunda ise sürekli yanar hale gelerek bizi uyaracaktır.IC 7809 voltaj regulatörü ise 12V güç kaynağımızdan kararlı bir şekilde 9V elde etmemizi sağlamaktır.






Li-Po battery or Lithium-Polymer battery is a rechargeable battery based on the Lithium-ion technology enclosed in a flexible pouch. This soft, flexible pouch makes them very light with a compromise in mechanical strength. Li-Po batteries are widely used in applications where weight is a critical factor. The common applications are radio controlled model flight, RC toys, hand held devices etc.

The Lithium Polymer battery is evolved from the Lithium Metal Batteries.The main difference is that instead of using Lithium salt electrolyte binded in organic solvents like Ethylene carbonate, Di Methyl Carbonate Di Ethyl Carbonate , Li-Po batteries use polymer electrolytes like Poly Ethylene Oxide, Poly Methyl Methacrylate, Poly Acrilonitrile etc. The output voltage of Li-Po battery depends up on the technology used behind it. It is 2.7-3.0 V (discharged) to 4.20-4.35 V( charged) for cells based on Lithium Metal Oxides and it is 1.8-2.0 V (discharged) to 3.6-3.8 V (charged) for cells based on Lithium Iron Phosphate. The charging current is usually 1/5 of the mAH rating of the battery.

Like other Lithium batteries the Li-Po batteries are also prone to problems related with over charging, deep discharging, over temperature, short circuit etc. Any of these problem may result in permanent damage to the battery or even explosion. In order to avoid such problems, great care must be given while designing LiPo battery charger circuits.

Here we are discussing about a LiPo battery charger that can charge a 3.7V/360mAh cell. The charging voltage is limited to 4 volts for safety and the charging current is limited to 63mA.



Circuit diagram of the LiPo battery charger is shown above. The heart of the circuit is an LM324 opamp. LM324 is a general purpose single supply quad opamp. You can use any single supply opamp in its place. I used LM324 because it was the only single supply opamp with me at that time. TL071, TL072 etc are other options. The LM324 is wired as a comparator here. The reference voltage is applied to the non-inverting input and it is set using resistors R1 and R2. The reference voltage here is 3.5V. It is obtained using the equation Vref=(9/(R1+R2))*(R1). The positive terminal of the battery is connected to the inverting input of the opamp through diode D1. R5 is just a pull down resistor.

When ever the battery voltage is above 4 volts the voltage fed back to the inverting input will be higher than 3.5 voltas. That is 4V-D1 drop =3.5V. The output of the opamp swings to ground and transistor Q1 will be switched OFF. This isolates the battery from the charging voltage and the battery remains safe. When the battery voltage is below 4V, the voltage fed back to the inverting input will be lower than 3.5V and the output of the opamp swings to positive saturation. This makes the transistor ON and the battery starts charging. Resistor R4 limits the charging current of the battery to 60 mA. The governing equation is (Vcc-VcesatQ1-Vb)/R4=Ib. Where Vcc is the supply voltage, VcesatQ1 is the collector-emitter voltage of Q1 during saturation, Vb is the battery voltage when discharged, R4 is the current limiting resistor and Ib is the charging current. When substituted by values it is (9V-0.2V-2.7V)/100 ohm=61mA.



LED D2 is just and indicator.It glows the the battery is charging and extinguishes when the battery is fully charged. Voltage regualtor IC 7809 is used for producing steady 9V from the 12V supply.

Source: http://www.circuitstoday.com/lipo-battery-charger-circuit
Maybe most of the people think that Arduino is suitable for industrial usage or not?

I cant give a answer excatly.But i can say that i saw some industrial libraries for arduino projects.

1. Modbus library :
One of the most common protocol is modbus which is using for devices communication in a ring


Master Arduino

#include <SoftwareSerial.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define SSerialRX        10  //Serial Receive pin
#define SSerialTX        11  //Serial Transmit pin

#define SSerialTxControl 3   //RS485 Direction control

#define RS485Transmit    HIGH
#define RS485Receive     LOW

#define Pin13LED         13

/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

/*-----( Declare Variables )-----*/
int byteReceived;
int byteSend;

void setup()   /****** SETUP: RUNS ONCE ******/
{
  // Start the built-in serial port, probably to Serial Monitor
  Serial.begin(9600);
  Serial.println("YourDuino.com SoftwareSerial remote loop example");
  Serial.println("Use Serial Monitor, type in upper window, ENTER");
  
  pinMode(Pin13LED, OUTPUT);   
  pinMode(SSerialTxControl, OUTPUT);    
  
  digitalWrite(SSerialTxControl, RS485Receive);  // Init Transceiver   
  
  // Start the software serial port, to another device
  RS485Serial.begin(4800);   // set the data rate 

}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  digitalWrite(Pin13LED, HIGH);  // Show activity
  if (Serial.available())
  {
    byteReceived = Serial.read();
    
    digitalWrite(SSerialTxControl, RS485Transmit);  // Enable RS485 Transmit   
    RS485Serial.write(byteReceived);          // Send byte to Remote Arduino
    
    digitalWrite(Pin13LED, LOW);  // Show activity    
    delay(10);
    digitalWrite(SSerialTxControl, RS485Receive);  // Disable RS485 Transmit       
  }
  
  if (RS485Serial.available())  //Look for data from other Arduino
   {
    digitalWrite(Pin13LED, HIGH);  // Show activity
    byteReceived = RS485Serial.read();    // Read received byte
    Serial.write(byteReceived);        // Show on Serial Monitor
    delay(10);
    digitalWrite(Pin13LED, LOW);  // Show activity   
   }  

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********

Slave Arduino

#include <SoftwareSerial.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define SSerialRX        10  //Serial Receive pin
#define SSerialTX        11  //Serial Transmit pin

#define SSerialTxControl 3   //RS485 Direction control
#define RS485Transmit    HIGH
#define RS485Receive     LOW

#define Pin13LED         13

/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

/*-----( Declare Variables )-----*/
int byteReceived;
int byteSend;

void setup()   /****** SETUP: RUNS ONCE ******/
{
  // Start the built-in serial port, probably to Serial Monitor
  Serial.begin(9600);
  Serial.println("SerialRemote");  // Can be ignored
  
  pinMode(Pin13LED, OUTPUT);   
  pinMode(SSerialTxControl, OUTPUT);  
  
  digitalWrite(SSerialTxControl, RS485Receive);  // Init Transceiver
  
  // Start the software serial port, to another device
  RS485Serial.begin(4800);   // set the data rate 
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  //Copy input data to output  
  if (RS485Serial.available()) 
  {
    byteSend = RS485Serial.read();   // Read the byte 
    
    digitalWrite(Pin13LED, HIGH);  // Show activity
    delay(10);              
    digitalWrite(Pin13LED, LOW);   
    
    digitalWrite(SSerialTxControl, RS485Transmit);  // Enable RS485 Transmit    
    RS485Serial.write(byteSend); // Send the byte back
    delay(10);   
    digitalWrite(SSerialTxControl, RS485Receive);  // Disable RS485 Transmit      
//    delay(100);
  }
2. PID library:
In industrial control elements pid control is really essential 

pid.h :

#ifndef PID_v1_h
#define PID_v1_h
#define LIBRARY_VERSION 1.1.1
class PID
{
public:
//Constants used in some of the functions below

#define AUTOMATIC 1

#define MANUAL 0

#define DIRECT 0

#define REVERSE 1

//commonly used functions **************************************************************************

PID(double*, double*, double*, // * constructor. links the PID to the Input, Output, and

double, double, double, int); // Setpoint. Initial tuning parameters are also set here



void SetMode(int Mode); // * sets PID to either Manual (0) or Auto (non-0)



bool Compute(); // * performs the PID calculation. it should be

// called every time loop() cycles. ON/OFF and

// calculation frequency can be set using SetMode

// SetSampleTime respectively



void SetOutputLimits(double, double); //clamps the output to a specific range. 0-255 by default, but

//it's likely the user will want to change this depending on

//the application

//available but not commonly used functions ********************************************************

void SetTunings(double, double, // * While most users will set the tunings once in the

double); // constructor, this function gives the user the option

// of changing tunings during runtime for Adaptive control

void SetControllerDirection(int); // * Sets the Direction, or "Action" of the controller. DIRECT

// means the output will increase when error is positive. REVERSE

// means the opposite. it's very unlikely that this will be needed

// once it is set in the constructor.

void SetSampleTime(int); // * sets the frequency, in Milliseconds, with which

// the PID calculation is performed. default is 100

//Display functions ****************************************************************

double GetKp(); // These functions query the pid for interal values.

double GetKi(); // they were created mainly for the pid front-end,

double GetKd(); // where it's important to know what is actually

int GetMode(); // inside the PID.

int GetDirection(); //

private:

void Initialize();

double dispKp; // * we'll hold on to the tuning parameters in user-entered

double dispKi; // format for display purposes

double dispKd; //

double kp; // * (P)roportional Tuning Parameter

double ki; // * (I)ntegral Tuning Parameter

double kd; // * (D)erivative Tuning Parameter

int controllerDirection;

double *myInput; // * Pointers to the Input, Output, and Setpoint variables

double *myOutput; // This creates a hard link between the variables and the

double *mySetpoint; // PID, freeing the user from having to constantly tell us

// what these values are. with pointers we'll just know.

unsigned long lastTime;

double ITerm, lastInput;

unsigned long SampleTime;

double outMin, outMax;

bool inAuto;

};

#endif

pid.cpp:



#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <PID_v1.h>
/*Constructor (...)*********************************************************
* The parameters specified here are those for for which we can't set up
* reliable defaults, so we need to have the user set them.
***************************************************************************/
PID::PID(double* Input, double* Output, double* Setpoint,
double Kp, double Ki, double Kd, int ControllerDirection)
{
myOutput = Output;
myInput = Input;
mySetpoint = Setpoint;
inAuto = false;
PID::SetOutputLimits(0, 255); //default output limit corresponds to
//the arduino pwm limits
SampleTime = 100; //default Controller Sample Time is 0.1 seconds
PID::SetControllerDirection(ControllerDirection);
PID::SetTunings(Kp, Ki, Kd);
lastTime = millis()-SampleTime;
}

/* Compute() **********************************************************************
* This, as they say, is where the magic happens. this function should be called
* every time "void loop()" executes. the function will decide for itself whether a new
* pid Output needs to be computed. returns true when the output is computed,
* false when nothing has been done.
**********************************************************************************/
bool PID::Compute()
{
if(!inAuto) return false;
unsigned long now = millis();
unsigned long timeChange = (now - lastTime);
if(timeChange>=SampleTime)
{
/*Compute all the working error variables*/
double input = *myInput;
double error = *mySetpoint - input;
ITerm+= (ki * error);
if(ITerm > outMax) ITerm= outMax;
else if(ITerm < outMin) ITerm= outMin;
double dInput = (input - lastInput);
/*Compute PID Output*/
double output = kp * error + ITerm- kd * dInput;
if(output > outMax) output = outMax;
else if(output < outMin) output = outMin;
*myOutput = output;
/*Remember some variables for next time*/
lastInput = input;
lastTime = now;
return true;
}
else return false;
}

/* SetTunings(...)*************************************************************
* This function allows the controller's dynamic performance to be adjusted.
* it's called automatically from the constructor, but tunings can also
* be adjusted on the fly during normal operation
******************************************************************************/
void PID::SetTunings(double Kp, double Ki, double Kd)
{
if (Kp<0 || Ki<0 || Kd<0) return;
dispKp = Kp; dispKi = Ki; dispKd = Kd;
double SampleTimeInSec = ((double)SampleTime)/1000;
kp = Kp;
ki = Ki * SampleTimeInSec;
kd = Kd / SampleTimeInSec;
if(controllerDirection ==REVERSE)
{
kp = (0 - kp);
ki = (0 - ki);
kd = (0 - kd);
}
}
/* SetSampleTime(...) *********************************************************
* sets the period, in Milliseconds, at which the calculation is performed
******************************************************************************/
void PID::SetSampleTime(int NewSampleTime)
{
if (NewSampleTime > 0)
{
double ratio = (double)NewSampleTime
/ (double)SampleTime;
ki *= ratio;
kd /= ratio;
SampleTime = (unsigned long)NewSampleTime;
}
}
/* SetOutputLimits(...)****************************************************
* This function will be used far more often than SetInputLimits. while
* the input to the controller will generally be in the 0-1023 range (which is
* the default already,) the output will be a little different. maybe they'll
* be doing a time window and will need 0-8000 or something. or maybe they'll
* want to clamp it from 0-125. who knows. at any rate, that can all be done
* here.
**************************************************************************/
void PID::SetOutputLimits(double Min, double Max)
{
if(Min >= Max) return;
outMin = Min;
outMax = Max;
if(inAuto)
{
if(*myOutput > outMax) *myOutput = outMax;
else if(*myOutput < outMin) *myOutput = outMin;
if(ITerm > outMax) ITerm= outMax;
else if(ITerm < outMin) ITerm= outMin;
}
}
/* SetMode(...)****************************************************************
* Allows the controller Mode to be set to manual (0) or Automatic (non-zero)
* when the transition from manual to auto occurs, the controller is
* automatically initialized
******************************************************************************/
void PID::SetMode(int Mode)
{
bool newAuto = (Mode == AUTOMATIC);
if(newAuto == !inAuto)
{ /*we just went from manual to auto*/
PID::Initialize();
}
inAuto = newAuto;
}
/* Initialize()****************************************************************
* does all the things that need to happen to ensure a bumpless transfer
* from manual to automatic mode.
******************************************************************************/
void PID::Initialize()
{
ITerm = *myOutput;
lastInput = *myInput;
if(ITerm > outMax) ITerm = outMax;
else if(ITerm < outMin) ITerm = outMin;
}
/* SetControllerDirection(...)*************************************************
* The PID will either be connected to a DIRECT acting process (+Output leads
* to +Input) or a REVERSE acting process(+Output leads to -Input.) we need to
* know which one, because otherwise we may increase the output when we should
* be decreasing. This is called from the constructor.
******************************************************************************/
void PID::SetControllerDirection(int Direction)
{
if(inAuto && Direction !=controllerDirection)
{
kp = (0 - kp);
ki = (0 - ki);
kd = (0 - kd);
}
controllerDirection = Direction;
}
/* Status Funcions*************************************************************
* Just because you set the Kp=-1 doesn't mean it actually happened. these
* functions query the internal state of the PID. they're here for display
* purposes. this are the functions the PID Front-end uses for example
******************************************************************************/
double PID::GetKp(){ return dispKp; }
double PID::GetKi(){ return dispKi;}
double PID::GetKd(){ return dispKd;}
int PID::GetMode(){ return inAuto ? AUTOMATIC : MANUAL;}
int PID::GetDirection(){ return controllerDirection;}
3. Map function:

Map function is the one of the most critical point for industrial automation.Sometimes we need that scale our outputs accordig to out input parameters

/* Map an analog value to 8 bits (0 to 255) */
void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

4. Sofware Serial :


If you want to control your automation by different processors then you need to communicate with them to keep autiomate your system.Sofware serial provides you extra serial interface and connection for arduino projects.

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}


Windows 8.1 single language işletim sisteminde en büyük sıkıntılardan biri sistemin dilini değiştirebilmek.Normal yollardan denetim masası üzerinden update ile türkçe dil paketini almaya kalktığınızda inglizce olarak size bu işletim sistemi versiyonu için uygulanamaz yazısı çıkacaktır.

Bunun çözümü ise bu updati bir nevi manuel olarak gerçekleştirmektir.
Peki bunu nasıl yapacağız ?

İlk olarak işletim sistemimizde yüklü olan dil paketini kontrol edeceğiz.

başlat üzerinde cmd yi run as administrator olarak başlatalım.Neden yönetici olarak başlatıyoruz? Çünkü sistemimizde yükl ü olan dilleri bir txt doyası içerisinde atarak incelemeyi deneyeceğiz.

cmd yi yönetici olarak çalıştırdık sonrasında

dism /Online /Get-Packages > c:\elektro-blogger.txt 

komutunu yazıp enter yapıyoruz.Bu işlem C klasörü içerisinde elektro-blogger.txt adı ve uzantısı ile bize dil paketlerimizi gösterecek. Txt dosyası içerisinde aşağıdakine yakın bir yazı bulacaksınız

Deployment Image Servicing and Management tool
Version: 6.3.9600.17031

Image Version: 6.3.9600.17031

Packages listing:

Package Identity : Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~6.3.9600.16384
State : Installed
Release Type : Feature Pack
Install Time : 9.6.2014 03:24

Package Identity : Microsoft-Windows-Branding-CoreConnectedSingleLanguage-Package~31bf3856ad364e35~amd64~en-US~6.3.9600.16384
State : Installed
Release Type : Language Pack
Install Time : 18.3.2014 09:38

Kırmızı ile belirttiğimiz alanı kopyalayalım daha sonrasında ingilizce dil paketini kaldırmak için bize gerekli olacak.

32 Bit - 64 Bit işletim sistemimize göre yandaki türkçe dil paketlerinden birini indirelim

İçinden çıkan lp.cab uzantılı dosyayı C klasörü içerisine koyalım sonrasında ise cmd komut penceresine

dism /Online /Add-Package /PackagePath:C:\lp.cab

Komutunu girelim
Bu kısım biraz uzun sürecektir.Yükleme tamamlandıktan sonra sıra geldi ingilizce dil paketini kaldırmaya
Yukarıda kırmızı olarak belirtilen sizdeki ingilizce dil paketi karşılığını kopyalayım
Sonrasında ise Cmd komut satırımıza

dism /Online /Remove-Package /PackageName:Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~6.3.9600.16384

Burada dikkat etmenize gereken Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~6.3.9600.16384 satırının sizin txt dosyası içerisinde kopyaladığınız kısım olması

Bu işlemde biraz uzun sürecektir.İşlem tamamlandıktan sonra ise size sistemi tekrar başlatmak istediğini söyleyecektir.Sistem tekrar başladığında ise artık türkçe olarak kullanabileceksiniz.
iOS 9 is full of enhancements you’ll appreciate every day. Your apps become more essential. New multitasking features on iPad make you even more productive. Siri can do more than ever, and new proactive suggestions help you get things done before you ask. And improvements at the foundation of the operating system enhance performance, battery life, and security. The more you do with iOS 9, the more you’ll wonder how you ever did without it.



The powerful built-in apps on your iPhone and iPad are designed for the essential things you use them for every day — mail, messages, web browsing, maps, making notes, and so much more. iOS 9 brings key enhancements to your apps, and introduces a brand-new one that will change how youexperience news.



iOS 9 adds a new app to your Home screen. News puts all the stories you’re interested in, all in one place — so you don’t have to hunt through different apps and websites to make sure you’re not missing the next big story. Articles are pulled from a wide range of sources, from top news organizations to indie publications. Stories are chosen for you based on what you like to read, and the more you use News, the better it gets at picking out just what you’ll want to see. News is also optimized for a beautiful reading experience no matter which device you’re using.

Apple News Format for Publishers.Articles with substance. And style.

With the Apple News Format, News enables publishers to create unique and immersive editorial layouts with custom typography and rich multimedia, and to place that content in front of millions of readers.

Now more noteworthy.

The Notes app has always been great for jotting down your thoughts. And now it’s great for so much more. Want an easy way to make a checklist ofto-dos? Consider it done. Or add a photo, map, or web link to a note. You can even draw a sketch with your finger. And thanks to iCloud, changes to your notes will be updated across all your devices and on iCloud.com. So you’ll always have your latest notes in hand.



Add to your notes. From whatever app you’re in.

Tap the Share button in Safari, Maps, and lots of other apps to save attachments — maps, links, Pages documents, and more — to a new or existing note. Can’t remember which note you added something to? The Attachments Browser organizes all the items attached to your notes in one simple view, so it’s easy to find what you’re looking for.


All your notes across all your devices.
Notes works with iCloud so you can access your notes no matter which device you’re using. Create a shopping list on your Mac and then check off items at the store on your iPhone. All your changes are updated in real time.

Get around. And see what’s around.

Now you can use public transportation with Maps as your guide. In select cities around the world, a new Transit view shows you lines and stations for subways, buses, trains, and ferries right on the map. When you plan a route, every step of your trip is laid out from point A to point B. And with the Nearby feature, it’s easier to see what’s around you and decide on places to shop, eat, and more.

The new iCloud Drive app built into iOS 9 allows you to access any file you save to iCloud from just one place — right on your Home screen. Easily search within the app and find the file you’re looking for. Browse all your files by date, name, or any tags you added on your Mac. You can also preview and organize your files without leaving the app. Goodbye to moving between apps to find the file you need. Hello to better organization.






Since Linux.com last surveyed the community-backed open source board scene in June 2012, some projects have faded, but a number of new boards have popped up to take their place. In fact, most of our top 10 Linux or Android-ready open source single board computers (SBCs) have shipped in the last few months.
  

Not all the projects offer the same transparency or open governance, but at a minimum, they all provide open source Linux or Android code (often both), full schematics and other documentation, and at least an attempt at forums or other community resources.

Some projects more clearly show the hand of a single manufacturer, while several triangulate between the community project, an arms-length semiconductor vendor backer, and one or more third-party manufacturers and/or distributors. This is the classic model that supports the BeagleBone Black, with BeagleBoard.org, Texas Instruments (TI), and CircuitCo, playing their respective roles.

One TI-based board, the CraneBoard, has faded off the list, as has the Samsung Exynos based Origenboard. Origenboard.org at least still shows some signs of life, but appears to have been upstaged by Hardkernel's Exynos-focused Odroid project. Meanwhile, the Igloo Community and its Snowball board has been shut down entirely, due in large part to the fact that its chip vendor and sponsor ST-Ericsson is moving toward dissolution. Snowball manufacturer Calao still has some of the Cortex-A9 boards left, however.

The only SoC manufacturers listed twice here are TI and Freescale, each represented by two different SoC models. The others each use a different processor and vendor, including Allwinner, Broadcom, Samsung, Via, and Xilinx SoCs. All these are ARM-based SoCs, but for the first time we also include an x86 board with the Atom-based Minnowboard from Intel-backed Minnowboard.org.
Common Features

Not surprisingly, more powerful processors are showing up in open source boards, including the Cortex-A15-based Samsung Exynos 5 Octa processor in the new Odroid-XU. Yet, the most popular boards continue to be modestly powered, under-$50 SBCs, in particular the Raspberry Pi Foundation's $35 Raspberry Pi and the $45 BeagleBone Black.

Low price isn't the only draw here. These projects' largely transparent, user-responsive operations, lack of overbearing corporate control, and investment in education and hobbyist efforts help create large vibrant communities of developers who create a cascade of openly shared code and designs. This in turn attracts new developers and makes it easier for them to get started with essentially free tech support.

Other open board trends include increasingly smaller PCB size. Most of the boards are about the size of a modern smartphone or phablet, and several are even smaller. Most now offer HDMI ports to keep up with the otherwise modestly appointed Raspberry Pi, although most offer micro-HDMI ports instead of the Pi's full-sized connection.

Sometimes there's a fine line between open source, community-backed SBCs and the more prevalent commercial SBCs that offer open source Linux -- and increasingly Android -- builds, and in many cases full schematics. Several of these pop up every month, as seen on embedded sites like LinuxGizmos, which also offers reports on most of our Top 10 community boards. But community counts, especially if you're not funded to build a commercial product with customers waiting with checks in hand.

There's also something of a gray area between community boards and open platform mini-PCs from companies like CompuLab, which have been left off our list. Several of our top 10 contenders now come with optional enclosures to create a de facto mini-PC, but they also offer board-only versions.

We've also left off boards where Linux plays a minor role, as in the interesting new Arduino Yun board, which runs Linux on a 400MHz MIPS processor, but limits it to controlling networking functionality. In addition, there are several new open source SBCs on the horizon that didn't make the list. These include the Xilinx Zynq-based Red Pitaya measurement and control board, which is still in Kickstarter mode.
Top 10 Open Source Boards



1. APC Rock -- $79, Via Technologies, 800MHz Cortex-A9 Wondermedia




2. BeagleBone Black -- $45, BeagleBoard.org, 1GHz Cortex-A8 TI Sitara AM3359


3. Cosmic+ -- $65, Phytec, 500MHz Cortex-A5 Freescale Vybrid


4. Cubieboard 2 -- $59, Wang And Tom Development Ltd. (Allwinner), Cortex-A7 dual-core Allwinner A20


5. MicroZed -- $199, Avnet, Xilinx Cortex-A9/FPGA Zynq-7010


6. MinnowBoard -- $199, MinnowBoard.org (Intel), 1GHz Intel Atom E640


7. Odroid-XU -- $149/$169, Odroid Project (Hardkernel), Samsung Exynos 5410 Octa (8-core Big,Little Cortex-A15 and –A7)


8. PandaBoard -- $182, PandaBoard.org (TI), TI 1.2GHz Cortex-A9 OMAP4460


9. Raspberry Pi Model B – $35, Raspberry Pi Foundation, Broadcom 700MHz ARM11 BCM2835


10. Wandboard Quad -- Wandboard.org (Freescale), Freescale 1GHz Cortex-A9 i.MX 6Quad



Source : https://www.linux.com/
ELEKTRO BLOGGER A HOŞGELDINIZ

ARAMA YAP

EN COK OKUNANLAR

- Copyright © ELEKTRO-BLOGGER Blogger