orange pi zero tft lcd made in china

This microcomputer can not boast of high performance. Still, it has a compact size, ultra-low power consumption, and can perform those tasks, for which implementation Arduino or ESP8266 platform will not be enough. The power of the microcomputer of Raspberry Pi 3 level or its more expensive and productive brothers will be excessive.

The origins of the Orange Pi line of microcomputers go back to 2014 when Chinese company Lemaker released its clone of the increasingly popular Raspberry Pi, the Banana Pi M1 single-board computer.

Shortly after that, there was a split among the developers. One part continued to produce specialized and no longer positioned for the home user “development boards” under the Lemaker brand. SinoVoip continued to develop a line of Banana Pi microcomputers, the total number of models in which has already exceeded a dozen. Finally, Shenzhen Xunlong Software, managed by Steven Zhao, created the Orange Pi line, focusing on low prices.

The tactic proved to be a winner – today, Orange Pi is one of the most famous brands among single-boarders, and the number of sales of the Orange Pi Zero model alone in the Shenzhen Xunlong Software store has exceeded 8000 copies since its release in November 2016.

26-pin expansion board: GPIO (General Purpose Input/Output Interface), Power (+5V, +3.3V and GND), some pins can be used as UART, I2C, SPI or PWM 13 pins, 2 x USB, IR, AUDIO(MIC, AV)

Orange Pi Zero has two GPIO combs, one for 13 pins and one for 26 pins. The 13-pin comb is used to connect the Interface Board – an expansion board with additional USB ports, analog AV output, microphone, and IR port. The 26-pin comb is available for user peripherals, and its pinout is shown in the illustration above.

The package does not differ from that of the Raspberry Pi 3. The electronic components are sealed in anti-static bags and packed in separate cardboard boxes with branding. The plastic case is shipped unpackaged in a simple polyethylene bag.

Orange Pi Zero has one USB 2.0 port and a 100 megabit Ethernet interface with PoE (Power over Ethernet) technology, which allows you to power the device directly through the Ethernet cable. This technology is most often used in video surveillance and requires a PoE-enabled network switch.

The largest chip is the Allwinner H2+ SoC, and next to it is a 256MB or 512MB RAM module, depending on the Orange Pi Zero version. And the small square chip is the Allwinner XR819 chip, a cheap and compact Wi-Fi module. Usually, Wi-Fi modules are combined with Bluetooth modules, but the XR819 does not support Bluetooth. You have to keep it in mind and if you are going to use Bluetooth-connected peripherals, make sure you buy a USB adapter beforehand.

The GPIO interface is represented by two combs: a 13 pin one for the expansion card connection and a 26 pin one for everything else. The 26 pin comb is not unsoldered by default: the person who wants to use the GPIO periphery is supposed to solder the connectors himself and decide whether they will be directed upwards or beveled corner ones.

Since there is no HDMI interface (as far as I understand, it is not supported by the Allwinner H2+ chip), the only way to connect Orange Pi Zero to the screen is to buy an adapter cable from AV plug to analog “tunnels”. Or connect a small TFT display to the GPIO.

Nothing is interesting on the backside of the expansion board, just another sticker with a barcode. The numbers on it indicate that the expansion card was produced before the Orange Pi Zero itself. In general, it makes sense – not every buyer of microcomputers gets additional accessories.

Orange Pi Zero is rather undemanding to the power supply – the microcomputer consumes about 300 mA, which means that its working power supply of 1 A will be enough. Of course, you should take into account the consumption of connected peripherals – if you connect several hard drives, then 1A is not enough for everything.

As for the heating and cooling, in this case, everything is not clear. Allwinner H2+ is noticeably warm. The chips made by Allwinner Technology, in general, do not belong to the number of colds. But there is a software bug in the Armbian operating system (more about it later), which causes incorrect display of SoC temperature on Orange Pi Zero revision 1.4 – and this is the latest revision at the moment, and it is on sale. This bug, by the way, is honestly reported on the distribution download page.

At zero CPU load, Armbian shows a temperature around 140°F. It is logical to suppose that if you load the processor, then at such starting conditions, the temperature will instantly fly beyond 176°F, and hard trolling will start. But this does not happen. The temperature rises, but only slightly, no trolling starts, no smoke comes out of the chip :).

Until this bug is fixed programmatically in Armbian, it is impossible to track the SoC’s real temperature. It is not superfluous to install radiators – here, the copper ones which I used for cooling Raspberry Pi 3 will do.

Before using the microcomputer, let’s assemble it in one piece. The correct way to start is to glue the heatsinks to the SoC and memory module, but I didn’t think to buy them beforehand, so I assembled without them.

After that, we put the Orange Pi Zero board with GPIO pins on the Interface board socket. By the way, there is no access to the 26 pin GPIO interface of the Orange Pi Zero board from the case as well as there is no place for the complete Wi-Fi antenna. Therefore the antenna must be disconnected before assembling the board, and if you plan to work with GPIO – you should not assemble the microcomputer in the case at all.

And a couple of words about how to take the whole construction back apart. The Orange Pi Zero board sits pretty tightly on the Interface board socket, and you can’t get it out with bare hands. You need to put some thin and hard object under the board and use it as a lever.

Orange Pi developers offer you to download several Linux distributions, of which there are even variants like OpenWrt and Zeroshell for routers and other network equipment.

So, if you are not confused by the well-known problems of the Armbian distribution kit for Orange Pi Zero – don’t hesitate to download and install it, especially because there are no better alternatives at the moment.

The memory card with the recorded system has to be installed into Orange Pi Zero, then connect the microcomputer to the local network with an Ethernet cable and apply power.

After that, you can monitor temperature (incorrectly displayed, but still), CPU load, uptime, and other indicators at http://ip-address-orange-pi:8888, accessible from any device within the local network.

Despite what was said in the notes to the Armbian release about poor support of the Wi-Fi module and the fact that when assembling the microcomputer in its case, I had to disconnect the external antenna, the Wi-Fi connection quality can be assessed as quite satisfactory.

A microcomputer can be turned into a handy network audio player. You can find details of such a project on the Internet by searching for “Logitech Media Server” or “Squeezelite”. I may write a separate post on this topic in the future.

Because of its low price Orange Pi Zero is perfect for a print server implementation based on the CUPS package. In this case, the price of the device is half of what you would pay for an off-the-shelf print server in a store.

By connecting a webcam via USB, you can turn Orange Pi Zero into an IP-camera for video surveillance, and the PoE support adds to the convenience: if you have a PoE-compatible switch, you will need to pull only one Ethernet-cable to the makeshift camera for power and data transmission. The feasibility of building such a device from scratch is questionable because the cost of the factory IP-camera in China is roughly equal to the cost of a set of Orange Pi Zero and a webcam. But if there’s a webcam at home that’s already gathering dust, this is a good opportunity to give it a second life.

You can make the device a smart home server by installing the Domoticz / Home Assistant / OpenHAB / MajorDoMo platform on Orange Pi Zero. There will be a separate post about it in the future.

These are the simplest and most obvious options. It is possible to think up more highly specialized ways of using it – for example, I’ve seen on the web someone had put together a system based on Orange Pi Zero to control the automatics of aquariums.

Orange Pi Zero isn’t a high-end performance contender and can hardly be used for resource-intensive multimedia tasks, but it is very handy for building inexpensive and utilitarian devices aimed at one particular function – like the above-mentioned print-server, hiking NAS, or smart home system control head-device.

The low cost makes it a good option for beginners, although in my personal opinion, the Raspberry Pi 3 is still the best option because of the more mature community and the improved operating system.

orange pi zero tft lcd made in china

Compatible and Direct-connect with any revision of Raspberry Pi. (If you are using a Raspberry Pi Zero / Zero 2 W, an additional HDMI cable is required).

Raspberry Pi leads out 40 GPIO pins, while the screen leads out 26 pins. When connecting, pay attention to the corresponding pins and Raspberry Pi pins.

5) Insert the TF card into the Raspberry Pi, power on the Raspberry Pi, and wait for more than 10 seconds to display normally. But the touch is abnormal at that time, and the touch needs to be calibrated as the following steps.

You can perform touch calibration by clicking the Raspberry Pi icon on the taskbar, selecting Preferences -> Calibrate Touchscreen, and following the displayed prompts.

Since the ads7846.dtbo provided by Raspberry Pi by default has no de-jitter parameters, you can increase the de-jitter parameters by modifying and replacing ads7846.dtbo

orange pi zero tft lcd made in china

When plugged into any source, the PiJuice Zero acts as an Uninterruptible Power Supply (UPS) using intelligent power management to keep your Raspberry Pi Zero going. With an onboard Real-Time Clock (RTC), programmable LEDs and switches, user-friendly software and much more, PiJuice Zero gives you maximum control and flexibility for all your Raspberry Pi Zero projects...wherever you want to take them.

When plugged into any source, the PiJuice Zero acts as an Uninterruptible Power Supply (UPS) using intelligent power management to keep your Raspberry Pi Zero going. PiJuice Zero will also stay charged, so you can take your projects with you anywhere. It"s the perfect way to add a battery & smart power management to your Raspberry Pi. With an onboard Real-Time Clock (RTC), programmable LEDs and switches, user-friendly software and much more, PiJuice Zero gives you maximum control and flexibility for all your Raspberry Pi Zero projects...wherever you want to take them.

Raspberry Pi pHAT layout - designed to exactly fit the Raspberry Pi Zero and Zero W. For use with Raspberry Pi A+, B+, 2B, 3B, 3B+, 4B, we recommend our PiJuice HAT module (although, PiJuice Zero will still work with these boards).

Bring your own battery - this pHAT does not come with a battery. We recommend a 2000mAh single cell LiPo with an NTC temperature sensor. When paired with our mating cable it is easy to use any battery with your PiJuice with simple crimp connectors.

Ultimate integrated power is one thing but what if we could make the Raspberry Pi renewably powered too? Solar, wind, thermoelectric and other renewable power is free, clean, and green and we"re proud to have developed an affordable and efficient renewable power solution for the Raspberry Pi! PiJuiceZero is self-monitoring and, like a space satellite, can become a completely autonomous system. Use the PiJuice Zero as part of an autonomous camera system, weather stations, off-grid desktops, and so many other great outdoor projects. View and buy the PiJuice solar panels separatelyhere.

Perhaps you need a huuuuge battery to keep your remote project running, or maybe just a tiny one for a cute wearable project. Either way, we"ve got you covered. PiJuice Zero takes any single cell LiPo. View our available batteries for PiJuice Zero below:

With PiJuice we want to provide not only the best portable hardware/software solution, but also a set of inspiring and affordable guided projects for fun and learning in the real world.

orange pi zero tft lcd made in china

In this article, you will learn how to use TFT LCDs by Arduino boards. From basic commands to professional designs and technics are all explained here.

There are several components to achieve this. LEDs,  7-segments, Character and Graphic displays, and full-color TFT LCDs. The right component for your projects depends on the amount of data to be displayed, type of user interaction, and processor capacity.

TFT LCD is a variant of a liquid-crystal display (LCD) that uses thin-film-transistor (TFT) technology to improve image qualities such as addressability and contrast. A TFT LCD is an active matrix LCD, in contrast to passive matrix LCDs or simple, direct-driven LCDs with a few segments.

In Arduino-based projects, the processor frequency is low. So it is not possible to display complex, high definition images and high-speed motions. Therefore, full-color TFT LCDs can only be used to display simple data and commands.

There are several components to achieve this. LEDs,  7-segments, Character and Graphic displays, and full-color TFT LCDs. The right component for your projects depends on the amount of data to be displayed, type of user interaction, and processor capacity.

TFT LCD is a variant of a liquid-crystal display (LCD) that uses thin-film-transistor (TFT) technology to improve image qualities such as addressability and contrast. A TFT LCD is an active matrix LCD, in contrast to passive matrix LCDs or simple, direct-driven LCDs with a few segments.

In Arduino-based projects, the processor frequency is low. So it is not possible to display complex, high definition images and high-speed motions. Therefore, full-color TFT LCDs can only be used to display simple data and commands.

In electronics/computer hardware a display driver is usually a semiconductor integrated circuit (but may alternatively comprise a state machine made of discrete logic and other components) which provides an interface function between a microprocessor, microcontroller, ASIC or general-purpose peripheral interface and a particular type of display device, e.g. LCD, LED, OLED, ePaper, CRT, Vacuum fluorescent or Nixie.

The display driver will typically accept commands and data using an industry-standard general-purpose serial or parallel interface, such as TTL, CMOS, RS232, SPI, I2C, etc. and generate signals with suitable voltage, current, timing and demultiplexing to make the display show the desired text or image.

The LCDs manufacturers use different drivers in their products. Some of them are more popular and some of them are very unknown. To run your display easily, you should use Arduino LCDs libraries and add them to your code. Otherwise running the display may be very difficult. There are many free libraries you can find on the internet but the important point about the libraries is their compatibility with the LCD’s driver. The driver of your LCD must be known by your library. In this article, we use the Adafruit GFX library and MCUFRIEND KBV library and example codes. You can download them from the following links.

Upload your image and download the converted file that the UTFT libraries can process. Now copy the hex code to Arduino IDE. x and y are locations of the image. sx and sy are size of the image.

In this template, We just used a string and 8 filled circles that change their colors in order. To draw circles around a static point ,You can use sin();  and cos(); functions. you should define the PI number . To change colors, you can use color565(); function and replace your RGB code.

In this template, We created a function which accepts numbers as input and displays them as a pie chart. We just use draw arc and filled circle functions.

while (a < b) { Serial.println(a); j = 80 * (sin(PI * a / 2000)); i = 80 * (cos(PI * a / 2000)); j2 = 50 * (sin(PI * a / 2000)); i2 = 50 * (cos(PI * a / 2000)); tft.drawLine(i2 + 235, j2 + 169, i + 235, j + 169, tft.color565(0, 255, 255)); tft.fillRect(200, 153, 75, 33, 0x0000); tft.setTextSize(3); tft.setTextColor(0xffff); if ((a/20)>99)

while (b < a) { j = 80 * (sin(PI * a / 2000)); i = 80 * (cos(PI * a / 2000)); j2 = 50 * (sin(PI * a / 2000)); i2 = 50 * (cos(PI * a / 2000)); tft.drawLine(i2 + 235, j2 + 169, i + 235, j + 169, tft.color565(0, 0, 0)); tft.fillRect(200, 153, 75, 33, 0x0000); tft.setTextSize(3); tft.setTextColor(0xffff); if ((a/20)>99)

orange pi zero tft lcd made in china

In recent years, computing terminals have expanded exponentially from desktop to portable handheld devices. We have witnessed the rapid development of these devices. Complex operating systems being ported to tiny embedded hardware like Raspberry Pi, Cubieboard, routers with openWRT, etc. Those devices that has managed to become compact and easy to carry have being wide spread products and majority of them are on the Ghz level of processing power.

orange pi zero tft lcd made in china

Key information: This device"s controller is an ILI9486, which is compatible with ILI9481. The driver for ILI9481 was already in my Raspberry Pi. Here"s what I did to make it work:

The second command sets the console (tty1) to map its output to the framebuffer (buffer 1). That"s why the parameters are 1 1. You can map any tty to the LCD.

I don"t care about the touch-screen, so I didn"t set it up. All I need this is to show me the IP address of the Raspberry Pi so I can connect through SSH. (This is an issue you may encounter only if you find your RPi connecting to WiFi where you cannot control the IP address assignments and with ridiculously short lease times.)

orange pi zero tft lcd made in china

Checking a TFT lcd driver is very messy thing especially if its a Chinese manufactured TFT. TFT’s that are supplied by Chinese manufactures are cheap and every body loves to purchase them since they are cheap,but people are unaware of the problems that comes in future when finding the datasheet or specs of the particular TFT they purchased. Chinese manufactures did not supply datasheet of TFT or its driver. The only thing they do is writes about the TFT driver their lcd’s are using on their websites. I also get in trouble when i started with TFT’s because i also purchased a cheap one from aliexpress.com. After so many trials i succeeded in identifying the driver and initializing it. Now i though to write a routine that can identify the driver.

I wrote a simple Arduino Sketch that can easily and correctly identify the TFT Lcd driver. I checked it on 2.4, 3.2 and 3.8 inch 8-bit TFT lcd and it is identifying the drivers correctly. The drivers which i successfully recognized are ILI9325, ILI9328, ILI9341, ILI9335, ST7783, ST7781 and ST7787. It can also recognize other drivers such as ML9863A, ML9480 and ML9445 but i don’t have tft’s that are using this drivers.

The basic idea behind reading the driver is reading the device ID. Since all the drivers have their ID’s present in their register no 0x00, so what i do is read this register and identify which driver tft is using. Reading the register is also a complex task, but i have gone through it many times and i am well aware of how to read register. A simple timing diagram from ST7781 driver explains all. I am using tft in 8-bit interface so i uploaded timing diagram of 8-bit parallel interface. The diagram below is taken from datasheet of ST7781 tft lcd driver.

The most complex tft i came across is from a Chinese manufacturer “mcufriend”. mcufriend website says that they use ILI9341 and ILI9325 drivers for their tft’s. But what i found is strange their tft’s are using ST7781 driver(Device ID=7783). This is really a mesh. I have their 2.4 inch tft which according to their website is using ILI9341 driver but i found ST7783 driver(Device ID=7783). The tft i have is shown below.

I am using Arduino uno to read driver. I inserted my lcd on arduino uno and read the driver. After reading driver i am printing its number on Serial Monitor.

Note:On serial monitor driver number will be displayed like if your lcd is using ST7783 controller than on serial monitor 7783 will be displayed or if tft is using ILI9341 than on 9341 will be displayed.

The code works on Arduino uno perfectly but if you are using any other board, than just change the pin numbers according to the board that you are using also check out for the Ports D and B. TFT Data Pin D0 is connected to Port-B Pin#0 and D1 is connected to Port-B Pin#1. TFT Data Pins D2 to D7 are connected to Port-D Pins 2,3,4,5,6,7. So if you are using Arduino mega than check for the Ports D and B and Make connections according to them. Arduino mega is working on ATmega2560 or ATmega1280 Microcontroller and Arduino uno is working on ATmega328p Microcontroller so both platforms have ports on different locations on arduino board so first check them and then make connections. The same process applies to all Arduino boards.

orange pi zero tft lcd made in china

Connecting an LCD to your Raspberry Pi will spice up almost any project, but what if your pins are tied up with connections to other modules? No problem, just connect your LCD with I2C, it only uses two pins (well, four if you count the ground and power).

In this tutorial, I’ll show you everything you need to set up an LCD using I2C, but if you want to learn more about I2C and the details of how it works, check out our article Basics of the I2C Communication Protocol.

There are a couple ways to use I2C to connect an LCD to the Raspberry Pi. The simplest is to get an LCD with an I2C backpack. But the hardcore DIY way is to use a standard HD44780 LCD and connect it to the Pi via a chip called the PCF8574.

The PCF8574 converts the I2C signal sent from the Pi into a parallel signal that can be used by the LCD. Most I2C LCDs use the PCF8574 anyway. I’ll explain how to connect it both ways in a minute.

I’ll also show you how to program the LCD using Python, and provide examples for how to print and position the text, clear the screen, scroll text, print data from a sensor, print the date and time, and print the IP address of your Pi.

Connecting an LCD with an I2C backpack is pretty self-explanatory. Connect the SDA pin on the Pi to the SDA pin on the LCD, and the SCL pin on the Pi to the SCL pin on the LCD. The ground and Vcc pins will also need to be connected. Most LCDs can operate with 3.3V, but they’re meant to be run on 5V, so connect it to the 5V pin of the Pi if possible.

If you have an LCD without I2C and have a PCF8574 chip lying around, you can use it to connect your LCD with a little extra wiring. The PCF8574 is an 8 bit I/O expander which converts a parallel signal into I2C and vice-versa. The Raspberry Pi sends data to the PCF8574 via I2C. The PCF8574 then converts the I2C signal into a 4 bit parallel signal, which is relayed to the LCD.

Before we get into the programming, we need to make sure the I2C module is enabled on the Pi and install a couple tools that will make it easier to use I2C.

Now we need to install a program called I2C-tools, which will tell us the I2C address of the LCD when it’s connected to the Pi. So at the command prompt, enter sudo apt-get install i2c-tools.

Next we need to install SMBUS, which gives the Python library we’re going to use access to the I2C bus on the Pi. At the command prompt, enter sudo apt-get install python-smbus.

Now reboot the Pi and log in again. With your LCD connected, enter i2cdetect -y 1 at the command prompt. This will show you a table of addresses for each I2C device connected to your Pi:

We’ll be using Python to program the LCD, so if this is your first time writing/running a Python program, you may want to check out How to Write and Run a Python Program on the Raspberry Pi before proceeding.

There are a couple things you may need to change in the code above, depending on your set up. On line 19 there is a function that defines the port for the I2C bus (I2CBUS = 0). Older Raspberry Pi’s used port 0, but newer models use port 1. So depending on which RPi model you have, you might need to change this from 0 to 1.

The function mylcd.lcd_display_string() prints text to the screen and also lets you chose where to position it. The function is used as mylcd.lcd_display_string("TEXT TO PRINT", ROW, COLUMN). For example, the following code prints “Hello World!” to row 2, column 3:

On a 16×2 LCD, the rows are numbered 1 – 2, while the columns are numbered 0 – 15. So to print “Hello World!” at the first column of the top row, you would use mylcd.lcd_display_string("Hello World!", 1, 0).

You can create any pattern you want and print it to the display as a custom character. Each character is an array of 5 x 8 pixels. Up to 8 custom characters can be defined and stored in the LCD’s memory. This custom character generator will help you create the bit array needed to define the characters in the LCD memory.

The code below will display data from a DHT11 temperature and humidity sensor. Follow this tutorial for instructions on how to set up the DHT11 on the Raspberry Pi. The DHT11 signal pin is connected to BCM pin 4 (physical pin 7 of the RPi).

By inserting the variable from your sensor into the mylcd.lcd_display_string() function (line 22 in the code above) you can print the sensor data just like any other text string.

These programs are just basic examples of ways you can control text on your LCD. Try changing things around and combining the code to get some interesting effects. For example, you can make some fun animations by scrolling with custom characters. Don’t have enough screen space to output all of your sensor data? Just print and clear each reading for a couple seconds in a loop.

orange pi zero tft lcd made in china

3. We will bear the freight charges for returns caused by us, for instance, the quality problem. As to returns caused by the buyer, the buyer should be responsible for the shipping fee.