Posts Tagged ‘review’
Orange Pi Development Boards

A First Look at ESP32-LyraTD-MSC Audio Mic HDK with Baidu DuerOS Assistant

February 18th, 2018 2 comments

Earlier this year, Espressif Systems had unveiled their ESP32-LyraTD-MSC Audio MiC HDK (Hardware Development Kit) which features an ESP32-WROOM module, a 4-mic array DSP, 3 microphones, an audio jack, and various I/Os.

I received the board a couple of weeks ago, and while there’s no public information released yet, the company provided me with ESP32-LyraTD-MSC User Guide in English. Eventually, I’d expect Google Assistant and Amazon Alexa to be supported, but in the meantime I had to leverage my (lowly) Chinese language skills to get started since the kit is pre-loaded with firmware connecting to Baidu DuerOS voice assistant.

ESP32-LyraTD-MSC Unboxing

The kit came in a bland Espressif Systems carton box.

Inside the package, I could only find one kit comprised of two boards.

The bottom board read ESP32_MicrosemiDSP_Mainboard-V1, and does not show much apart from marking for connectors, headers and the power switch.

Click to Enlarge

While the top comes with eight buttons (Vol +, Vol -, Mode, Boot, RST, Rec, Play, and Set), three microphones, as well as some configuration switches, which you may not want to touch a first…

Click to Enlarge

We can take the two boards apart to check out the mainboard, and ESP32_MicrosemiDSP_SubBoard_V1 with the microphones and buttons which includes a chip marked “N1309-3216”.

Click to Enlarge

If we have a closer look at the main board, we’ll find ESP32-WROVER module, MicroSemi ZL38063 audio processor which will process the audio from the microphones, and assist ESP32 with wake word recognition, as well as a CP2102N chip for debugging. We also have a micro SD card slot, two micro USB port (one for power, one for UART), an audio jack to connect a speaker, an on/off switch, and various headers for I/O and debugging (e.g. JTAG).

Click to Enlarge

Testing Espressif Systems ESP32 Audio Mic HDK with Baidu DuerOS

As this stage there’s actually little you can do due to the lack of documentation, but I was still able to test the hardware with Baidu DuerOS assistant. The first part of the user manual tells you to flash the firmware, but the requested files are nowhere to be found, and luckily the board was pre-loaded with some version of it.

So what I had to do first is to connect a USB power supply to the POWER micro USB port as well as a pair of speakers. If you plan to modify and flash the firmware (once it becomes available) you’ll also need to connect a micro USB to USB cable between your (Windows) computer and the UART micro USB port.

Click to Enlarge

Now change the power switch to ON, and for the first boot, you should see the blue LED blink. Press the SET button for a few seconds until the board utters something in Chinese (which I could not understand), and install & run IOT Espressif for Android (apk) or ESP-TOUCH for iOS on your smartphone. Skip all the initial steps, and tap on the top left icon, select Add devices, input your WiFi password, and click OK.

Click to Enlarge

After a few seconds, you should see one item added to the “Connected to WiFi Device List”, meaning the kit is now a client on your WiFi network. The blue LED should now be on at all times (no blinking).

Now we can try the voice assistant with “Alexa” wake word, which will cause the board to reply “您哈! 有什么吩咐“ (nin hao! you shenme fenfu) which translates to “Hello! How can I help you?”. We can then repeat “Alexa” with our request in Chinese.  I tried to ask for the time, and weather, and play music in the video below.

The assistant combines female and kid voices for interaction. I actually added one MP3 and one FLAC audio files in the micro SD card hoping it would start playing them, but instead it started some music from then net.

Microsemi ZL38063 Documentation & Tools

That’s all I could do for now, as we’ll need to get more documentation and some source code from Espressif Systems to further experiment with the platform. Although not compulsory, you may also be interested in ZL38063 audio processor resources since it interfaces with ESP32 over SPI for commands and I2S for audio. It may be necessary to change the wake word for example, although Espressif Systems mentioned they could do that themselves, and they’d just need 5,000 audio samples of the wake/hot word. Most of documentation and software tools are not public, so you’d need to request access to those with a company email address.

To my surprise, I managed to access the files using my website address, but sadly can’t share anything since none of the files are publicly available. The process is somewhat cumbersome, as you need to get approval for the account first which takes a few days, then request access to documentation for another day or two. There’s a separate login for software and registration to “Microsemi Software Delivery System (SDS)” is automatic, but again you need to request access to each software/firmware package individually which in my case was accepted within 24 hours. It would be good if Espressif Systems and/or Microsemi themselves could make it easier for developers to access those resources for a processor that was released in 2015.  Some documentation for ZL38063 based Microsemi AcuEdge Development Kit for Amazon AVS (ZLK38AVS) can be found on Github, but I’m not sure whether much of it is usable for the Espressif development kit.

Espressif Audio Mic HDK is not for sale just yet, but the company has sent the kit to several developers, so we should except some progress in the weeks or months ahead. I’ll likely check it out again once on English voice assistant is made to work, and more resources are made public.

Onda V18 Pro (Allwinner A63) 2K Tablet Review – Part 1: Unboxing, First Boot, and Antutu 7 Benchmark

February 15th, 2018 11 comments

Announced last June, Allwinner A63 is the latest tablet SoC from the company, with a quad core Cortex A53 processor and a Mali-T760MP2 GPU capable of driving 2K displays. One of the first tablet to feature the SoC is Onda V18 Pro with a 10.1″ 2560×1600 high resolution display, 3GB RAM, 32 or 64GB internal storage, and the capability to play 4K H.265/H.264/VP9 videos (obviously downscale to the display resolution).

I was interested in checking it out, and GearBest sent me a sample of the 32GB flash version. I’ll do a two part review, starting with unboxing, and first boot where I’ll run CPU-Z and Antutu, before publishing the rest of the review in a few weeks once I got to use it more and performed more tests.

Onda V18 Pro Unboxing

The tablet comes is a white “V-series” box, Onda likely uses for all their VXX tablets.They just differentiate between models with a sticker, in my case reading “Dark Grey 3GB RAM + 32G”, no mention of the actual model number, or maybe it’s coded inside the barcode…

I opened the package, got the tablet, and turned it on. It worked as it still had a good amount of charge. The display does appear to be quite sharp, and we can also notice the (2MP) front camera, and power + volume buttons on the top.

Click to Enlarge

The back of the tablet comes with a 8MP rear camera, and a large transparent sticker showing the location of the ports. An icon also shows the location of the microphone (top left on photo below).

Click to Enlarge

The right side includes a micro USB port for external device, a round DC jack, and the reset/recovery pinhole.

The left side comes with what appears to be the sole speaker, a 3.5mm audio jack, and a micro SD card slot.

The bottom is designed to be connected to the magnetic docking keyboard also used for the older Onda V10 Pro tablet.

There are also a few other accessories in the box include a 5V/2A power adapter and its USB to DC jack cable, user’s manuals in English and Chine, a certificate of quality, and a “Useful Reminder” card.

Click to Enlarge

Onda V18 Pro CPU-Z + Antutu 7.0.4

Normally, I’d open up the device at this stage, but the back cover does not seem to easy to open, so I gave up, lacking confidence…. But since I could start it immediately, I decided to do some quick tests first.

Click for Original Size

First I took a screenshot of the launcher to indeed confirm the 2560×1600 resolution of the display.

Then I ran CPU-Z showing the tablet is equipped with a quad Cortex A53 processor @ up to 1.8 GHz, a Mali-T760 GPU, 2978MB RAM, 25GB internal storage, and a 2560×1600 display.

The tablet – model V18_PRO (uranus_t1) – runs Android 7.1.2 with a not-so-recent security patch (2017/07/05). The battery temperature is however always stuck to 30.0 °C, and a single sensor is detected (as advertised):  3-axis accelerometer.

I also installed Antutu, but the app has been updated to Antutu 7.0.4, so we can’t compare it to older results obtained with Antutu 6.x, and I may have to run Antutu 7 on some other devices later on.

Click to Enlarge

We cannot even compare the tablet performance to the internal Antutu database results because they are still gathering more results. But the good news is that the tablet passed all tests without troubles, and for reference the score is 55,254 points.

I’d like to thank GearBest for the sample, and if you’re interested in the tablet you could consider purchasing it on their website, but you’ll also find it on Aliexpress with or without keyboard, GeekBuying, and other sites for $160 and up.

JGAURORA A5 Review – A Large Build 3D Printer That Works (Mostly) Out of the Box

February 15th, 2018 10 comments

Karl here and today we are going to look at the JGAURORA A5. I specifically asked Gearbest for this printer. Features and specs looks good. Not to mention that you can go from opening the box to printing in 20 min. Nice large build volume of 305 x 305 x 320mm. Color touch screen. Filament runout sensor. Power Fail feature. Power Fail is so nice. I have lost some long prints due to power going out. I have not lost any for filament because I have always been conscious of it but it’s nice to have peace of mind. The A5 has an assisted leveling feature that is nice. When using this feature there are 5 point that it will go to. One in each corner and one in the center and you adjust the bed. It saves a little time and I believe is standard feature in Marlin now.

This is quite a popular printer and has been reviewed a lot at this point so I will touch base on my experiences and items that may not be covered in other reviews.

Mistake 1

The first mistake I made was when I first put the upright on. I didn’t pay close enough attention and I pinched one the cables that routes underneath and after I turned it off the first time it would not turn on again. I was a little upset but after some troubleshooting I realized what happened and corrected the issue. There was just enough of a shiner that was touching the frame to cause the power supply to not come on. It took me disconnecting the wires to find the culprit.


I really like the frame. It is very well engineered design. I feel like it is the most rigid Cartesian printer that I have reviewed. The vertical part rests flat on the table top/bench and the base sits inside. I have moved the printer while printing and could not tell that I moved it. I was moving it while tipping it to feel the warmth of the y stepper. There is a small access in the bottom back that I could reach the y stepper motor with my fingers. I do have one complaint about it but it doesn’t affect my setup. If you have a deep enough table all feet don’t touch at the same time. But this doesn’t affect me. I have to let the front feet hang off my work bench. If I don’t the bed hits the wall when at 0 position. I don’t think that there are any negative side effects from this.


The only real complaint I have is access the the leveling knobs. The rear ones are a pain in the butt to get to at the first and second point for the semi auto leveling feature. They are positioned inside the frame and I have to use both hands.

One thing I wish they would have done is put an extended stepper motor rod with a manual wheel on it for the extruder. Loading and unloading the filament is OK with the menu but when I first start a print I usually manually push some filament out to prime it when the skirt starts. It is impossible to do on the A5. Typically I put just one skirt around an object and now with smaller prints I put 2.


Wiring From the factor – Click to Enlarge

After cleanup – Click to Enlarge

The wiring is fair inside. While installing the new stepper drivers I moved all the wiring out of the way to make way for active cooling.

Nice Power Supply

MKS Gen L mainboard. Very common board with replaceable steppers – Click to Enlarge

MKS TFT28 touch screen – Click to Enlarge

The A5 has a 24V system. The bed can get up to temperature relatively quickly.

Temp in C Time to Temp














The A5 came printing well out of the box. I posted a few pictures in the Facebook group, and got schooled with this picture.

Click to Enlarge

I always thought that the rings were a part of the model that you see in the picture above. It is not, it is salmon skin. So I did some research and one way to fix is to upgrade the stepper drivers. I just saw some TMC2100 newly listed on Gearbest, so I asked for them to send a set over. They did not have the newer TMC2130 at the time.

These steppers convert the normal 16 microsteps up to 256 steps which eliminate the salmon skin. An additional benefit is stepper noises are practically gone.

I had bad stringing on this one. Same gcode as above.

Mistake 2 & 3

Here is where I made my second and third mistake.

In order to install I needed to get inside the housing. First thing to do is raise X gantry all the way to the top, then turn off and disconnect the power cord. To get inside, the 2 feet on the front are removed and 3 small screws on the back faceplate are removed. The bed, top plate, and front slide forward. Then tipped to the left you can get inside. The first time have your cutters ready. There are a lot of zip ties that need to be cut in order to get it open this much.

Click to Enlarge

I would take the time and get the wiring out of the way. You will need to actively cool these drivers. They get hot if not. I used a 12V fan and buck converter to step down the 24V to 12V.

To install the steppers pull one of the steppers out, and notice the orientation and see where GND and VCC are labeled and install your new steppers with the pins in the same orientation. The heatsink don’t come installed and you can install at this point.

When changing from the existing drivers to these new ones it is going to change the direction of the stepper drivers. You can either flip the stepper cables physically or invert the direction in Marlin if you are running custom firmware.

The wiring on mine is odd, the Y is wired different than the rest. For example X, Z, and e0 go yellow, white, black, red. And the Y goes red, black, white, yellow.

To flip the X, Z, and e0 change from the yellow, black, white, red to red, white, black, yellow and change Y from red, black, white yellow, to yellow, white, black, red.

If you are using custom Marlin method edit the configuration.h


Now we need to set the Vref voltage. The safest way I found was to plug in the printer to your PC through USB. There is no need to plug in mains voltage. Then take a multimeter between the USB housing and screw that adjusts the voltage on each of the drivers.

After adjusting, I settled on 0.45 volts for X, Y, & e0, and 0.8V for Z. Clockwise increases voltage and counter-clockwise decreases it. The extruder stepper gets a little warm but I didn’t want to change skipped steps. X and Z are touching the frame acting like a heatsink. Y is above the power supply so I think the fan keeps it cool. You may want to run a little less but these worked for me.

You do not need to change all these drivers. You can replace the X and Y only and get 95% of the benefits. I was intending to do that and use the 4 stepper kit on 2 printers but couldn’t do that. Keep in mind if you only change your X and Y that you only need to flip your X and Y stepper directions

I did not complete in this order when I did this. I cleaned up my wiring first and after putting everything back together I was getting terrible jittering on my X axis so I opened it back up to see what was loose. I was dumb and left it powered on. I saw after opening that one of the pins backed out of the connector so I went to push it back in. I got a little puff of smoke out of one drivers and none worked right after that. This was second mistake and turned into my third. I was frustrated and went to put the unit back together and bam gfci blew. I arced mains with the top of the case. After this, I vowed to be more careful. I am very grateful that nothing worse happened.

As mentioned earlier active cooling is necessary with these drivers. These are not visible from outside so I just zip tied the fan in place.


I am going to point out the bed on it. I have used other surfaces but this has by far given me the best results. Typically I would install a mirror but I did not have to on this one. They call it Black Diamond. It looks the same as the Anycubic ultrabase. If I print about 60°C on the bed and 220 C on my first layer with PLA, it sticks about every time. I have been cleaning it with Windex. On some really small prints, I have used some glue. As soon as the bed cools the prints pop right off.

Final test prints

I do have to print about 10°C hotter on this one to stop stringing but that may be an out of spec thermistor. This threw me for a loop. All the printers before this I used the same temps. I do a 6.5mm retract at 150mm/s.

Click to Enlarge

I printed this model several times trying to get rid of those irregularities in the wings. This picture didn’t capture it, but they all have the same defect.

Final Words

I like this printer. I have printed over 100 hours on it. The only real upgrade I have done are these stepper drivers to fix the salmon skin. I did upgrade the fan shroud. I also printed some spring guides but didn’t notice an appreciable difference. The A5 is one of the best printers I have reviewed. Glass was flat. Heats fast. Sturdy frame. I like the way it looks. I get very good prints. Prints are dimensionally accurate. Big build volume. POWER FAIL…is so freaking awesome and just works. But I am concerned that if power goes out and not resumed immediately that the prints might not stay stuck without glue. I print fast on it with good results. I actually like it more than the original CR-10.

It is a shame…I normally do multi part reviews on printers due to needing upgrades, but I don’t see what I need to do on this one. I really think the A5 will be the benchmark now for low cost large volume printers. The next step is to get a company to integrate all the features with TMC2130 drivers like the Prusa MK3.

I would really like to thank Gearbest for sending the A5 for review, it has been a pleasure. You can pick one up for under $400 shipped on their website, and using JGAURORAA5 coupon may lower the price further.

Categories: Hardware, Testing Tags: 3d printing, jgaurora, review

How to Use 3G and GPS on Raspberry Pi with ThaiEasyElec 3G HAT Expansion Board

February 11th, 2018 11 comments

Venus Supply is an embedded systems company based in Bangkok, Thailand that sells products through their ThaiEasyElec website/brand, as well as a act as a local distributor for popular DIY electronics items. I previously tested their ESPino32 ESP32 board, and the company has now send me another of their new product called “3G HAT Expansion for Raspberry Pi” and based on Quectel UC20-G that support 3G and GPS/GLONASS connectivity globally, meaning it should work in any country with 2G or 3G coverage.

After listing the specifications, going through unboxing and assembly with a Raspberry Pi 2/3 board, I’ll write some quick start guide to show what I had to do to use GPS and connect to 3G with a Hologram SIM card.

3G HAT Expansion for Raspberry Pi Specifications

  • Quectel UC20-G wireless module supporting
    • Cellular
      • 3G – UMTS @ 800/850/900/1900/2100 MHz
      • 2G – GSM @ 850/900/1800/1900 MHz
      • Data – HSPA+ up to 14.4 Mbps Downlink, 5.76 Mbps Uplink, EDGE, GPRS
      • Push-Pull SIM Card with ESD protection
      • Main + Diversity RP-SMA antenna connectors
    • GNSS
      • Qualcomm gpsOne Gen8 engine
      • GPS, GLONASS
      • RP-SMA antenna connector
  • Host interface – USB and UART
  • Audio – Audio codec, and 3.5 audio jack with microphone and mono audio
  • Misc
    • Auto start jumper (J3)
    • Software start/stop via GPIO17 or GPIO18 pin configurable via Jumper “P8”
    • Power switch
    • LED – Status LED, network, power
    • Back-up battery to reduce GPS fix time
  • Raspberry Pi Hat Compatible with 40-pin Raspberry Pi header


I received the kit in a carton box with three zipped packages: one for the board and accessories, and two for the GPS/GLONASS and 3G antennas which are not included by default.

Click to Enlarge

The GPS antenna comes with a 3-meter cable which should make it suitable to install in most cars or trucks, and the HAT package includes an extra zip bag with spacers, screws, nuts, and a 40-pin female header. I’ve also been told a 25cm micro USB cable should be included, but it seems they forgot it for my package…

Click to Enlarge

Looking closer at the board we can see Quectel UC20GB module in the center of the board, the three RP-SMA antenna connectors clearly marked with DIV, GNSS, and MAIN, the micro USB port for power and data, the 3.5mm audio jack, and in the top right connector J3 2-pin header to enable autostart, 3-pin P8 header to select GPIO 17 or GPIO 18 for software on/off, and the power key to manually start or stop the the module.

Click to Enlarge

They’ve also given access the the 40-pin RPi header using male pins, as a 4-pin UART connector.

The other side of the battery comes the audio codec board based on Nuvoton NAU8814Y mono audio codec, the SIM card slot fitted with a black dummy SIM card, a CR1220 coincell battery for GPS fix backup, and a 40-pin female header used for connection to the Raspberry Pi.

Click to Enlarge

I’ve been told the battery supploes power to the internal clock engine of the module, which can calculate the new position of satellites and get GPS fix faster  from data used up to 3 days ago.

3G HAT Assembly and Configuration with Raspberry Pi 2/3

Assembly is pretty straightforward,  first install the four spacers  on the Raspberry Pi board and fasten them with the nuts underneath the board, instead of the 40-pin female header on Raspberry Pi board, place the 3G HAT on top, and fasten the remaining four screws.
Connect the cellular antenna to the MAIN connector, and the GPS antenna to the GNSS connector. You’ll also need to flash Raspbian to a micro SD card. I’ll run the same Raspbian Stretch Lite image as I used with ANAVI Light pHAT starter kit.
If you want to follow the instructions provided by ThaiEasyElec (in Thai only for now, but easy enough to follow, and an English version is coming), you’ll need a GUI, so I’d recommend you install the full Raspbian Stretch image and connect an HDMI display, although you may run VNC client as well. I’ll do something a little different as I’ll do an headless setup instead, using Ethernet and SSH most of the time, but to test 3G, I’ll also disable Ethernet, so I also connected a USB to serial cable as shown below in order to access the serial console.

Click to Enlarge

Find a (short) micro USB to USB cable to connect the micro USB port of the HAT expansion board to the one of the USB ports of the Raspberry Pi to power on the board. I also had to remove the dummy SIM card, and insert my own SIM card with the contacts facing the board. After installation, we’ll see around 3mm of the SIM card, but that’s normal. Finally, you’ll need to decide how you want to manage the power: either with the power button, J3 jumper to autostart, or with pin 17 or 18 from the Raspberry Pi. I decided to move the jumper to J3 to always power on the module, but if you run on batteries, you’ll probably want to use the GPIO pin instead.

Verify the 3G HAT is Recognized in Linux

Now we are ready to start our Raspberry Pi board, and login to a terminal via SSH, serial, or in the desktop. We should find Quectel UC20 module with 05c6:9003 VID:PID with lsusb:

If you don’t see it, make sure the USB cable is connected, and you’ve powered the module up. I recommend you move the jumper to J3 at first like I did. Then you should see four ttyUSB devices:

Each are used by the module as follows:

  • /dev/ttyUSB0 – DM interface – Diagnose port (no used in this review)
  • /dev/ttyUSB1 –  NMEA interface – For GPS NMEA sentence output (read-only)
  • /dev/ttyUSB2 – AT interface (for GPS)
  • /dev/ttyUSB3 – Modem interface for PPP connections and AT command

Controlling GPS and Handling GPS Data

ThaiEasyElec uses Putty for Linux, but since I’m doing this headless I’ll install picocom intead:

Now we can connect to /dev/ttyUSB2 using 115200 8N1 to send some AT commands to the module:

The first command (AT+QGPS=1) turns the GNSS module on, and the second one (AT+QGPSEND) turns it off.

Let’s keep it on for now, and connect to /dev/ttyUSB1 @ 9600 baud to check NMEA output which should be updated every second when GPS is enabled:

That’s the meaning for each field:

  • GPGGA – Global Positioning System Fix Data, Time, Position and related fix data
  • GPRMC – Recommended minimum data
  • GPGSV – Detailed satellite data
  • GPGSA – Overall satellite data
  • GPVTG – Vector track and speed over the ground

GPGSA does not have data in the output above, simply because the GPS fix did not occur yet.

If you just want to enable GNSS each time the module is powered on, run the following command:

To disable this option, simply run the same command with 0 instead of 1. You can also query “autogps” status but running the command without the second parameter:

You’ll find more details about the GNSS AT command set for GPS and GLONASS in  Quectel UC20 GNSS AT Commands Manual (pdf).

Reading NMEA sentences is possible, but not really user friendly, and if we want to see a nice representation of the data we can run the GPS Daemon (gspd) and client (cgps) instad. Let’s exit both picocom sessions with GPS still running, and install the necessary packages:

The daemon will automatically run after installation, so let’s stop it…

… in order to run it with our own parameters, i.e. using /dev/ttyUSB1 NMEA interface:

Now we can run the client as follows:

After a few seconds should get a fix with details information (left) and data about the satellites (right).

I previously played with GPS using NavSpark mini GPS Module (Arduino compatible), and at the time  I could manage to get a GPS fix inside my room, but in this case I had to move the antenna outdoor to get signal. If you want to integrate such capability into your own app, you may want to study cgps source code.

It’s also possible to get the coordinate through /dev/ttyUSB2 terminal using QGPSLOC AT command with one of the following three modes:

  • Mode 0 – format = ddmm.mmmmN/S, dddmm.mmmmE/W
  • Mode 1 – format = ddmm.mmmmmmN/S, dddmm.mmmmmmE/W
  • Mode 2 – format = (-d)dd.ddddd,(-)ddd.ddddd

The fields from left to right: <UTC time>,<latitude>,<longitude>,<hdop>,<altitude>,<fix>,<cog>,<spkm>,<spkn>,<UTC date>,<nsat>

Short explanation for the not-so-obvious fields:

  • <hdop> – Horizontal precision, 0.5-99.9 (quoted from GPGGA sentence)
  • <fix> – GNSS positioning mode (quoted from GNGSA/GPGSA): 2 = 2D positioning; 3 = 3D positioning
  • <cog> – Ground heading based on true north. Format: (quoted from GPVTG sentence)
  • <spkm> – Speed over ground. Format: xxxx.x, unit: Km/h, accurate to one decimal place (quoted from GPVTG sentence)
  • <spkn> – Speed over ground. Format: xxxx.x, unit: knots, accurate to one decimal place (quoted from GPVTG sentence)
  • <nsat> –  Number of satellites, from 00 to 24 (the first 0 will also be transferred, quoted from GPGGA sentence)

3G HAT with Hologram SIM Card

Let’s now move to the cellular part of the module. I’ll use Hologram developer IoT SIM card, but any 3G SIM card should do.

Connection Method 1 – Sakis3G and UMTSkeeper

ThaiEasyElec documentation uses the two following programs to establish a 3G PPP connection:

  • Sakis3G is a parameter and hardware controller for connecting to the Internet.
  • UMTSkeeper is reconnecting with Sakis3G when the connection is down.

Booth can be found in umtskeeper package that we can install from a tarball:

We then need to install some extra packages:

We’re then told to launch Sakis3G in interactive mode to configure the connection. The look of it will depend whether you launch it from the dekstop, a SSH terminal, or a serial terminal. The interface looks really ugly (and messy) from the serial console, so instead I launched it from an SSH terminal:

We need to select 1. Connect with 3G, then 3. Custom tty…, and input /dev/ttyUSB3 for CUSTOM_TTY variable.

The next step auto-detected the correct APN (HOLOGRAM), so I just selected OK, and then was asked about APN_USER and APN_PASS.

Those parameters will also depend on your specific connection. Hologram does not use user and password, but simply pressing Enter will abort the configuration, so I entered 0 for both. After that, Sakig3G will try to connect and it worked!

Pressing Enter will bring us back to the main menu, where we can select Connection Information to find a few more details.

Let’s go back in the top menu, disconnect, and exit Sakis3G. Now we can run umtskeeper with the same parameters:

But the output does not look so good the very first time, since it complains about “no modem connected”:

But eventually we do get a connection. If you connect later, the Internet status message changes to:

Connection Method 2 – PPP Creator Script

While I was eventually successful, the first time I tried Method 1 I failed for some reasons, so at the time I looked for alternatives way to connect, and found Sixfab also used Hologram SIM card with their own RPi 3G/4G shield – also based a a Quectel module, and instead wrote script.

So I downloaded it to my Raspberry Pi board, and executed it which created some other connection scripts.

Now we can run pppd call gprs command to establish a connection:

All good, and even simpler than the first method, although you may have to change the script in case you need APN username and password.

Testing the Connection

Whether we use method 1 or 2, we can now verify ppp0 is indeed up and connected.

I did that with Ethernet connected, so now I’ll disconnect Ethernet, turn it down, and start the script from the serial connection as a background process:

Again we can see on ppp0 is an active connection:

I can test outboud traffic with ping.

All good, but then I tried to connect via SSH using

But it failed to connection, maybe because is a “local IP address”, and the “remote IP address” set to is just a default address as shown in the log while running pppd call gprs.

SSH Tunelling with Hologram SIM card

I’m not familiar enough with 3G/4G connectivity to know if it’s a common issue but in the case of Hologram service we need to setup tunnelling to access via SSH (or another port/service). This can be done via SpaceBrige program or the command line, as you’ll find both methods on the relevant page on Hologram website.

I used SpaceBridge program in this case. You can download the client for Windows, Linux, or Mac OS. This is what I had to do in Ubuntu 16.04:

Now you’ll need to enable Tunneling for your device in Hologram dashboard, and get your Hologram API key, which you can generate and copy from your account.

Click OK, select your device(s), input your device port (e.g. 22 for SSH), and the local port on the computer to remotely access your Raspberry Pi over 3G.Click Done, and within a few seconds the tunnerl should be up and running.

I was finally able to connect the Raspberry Pi over SSH using the following command:

I could also get the GPS coordinate from there using cgps client.

If you want to stop the connection manually started with pppd call gprs, find the PID, and kill it:

In your actual project, you’ll want to control the connection using initd scripts or systemd.

I’d like to thanks Venus Supply / ThaiEasyElec for sending the product for review, it’s been fun to try out. If you’re interested you can purchase the board for 2350 THB (~$75) on their website, and may also consider adding the GSM/3G antenna for 120 THB (~$4) as well as the GNSS antenna for 350 THB (~$12).

Vorke V1 Plus Celeron J3455 Mini PC Review with Windows and Ubuntu

Most Intel based mini PCs use processors classified as ‘Mobile’ as these have lower thermal design power (TDP) ratings which is the maximum amount of heat generated by the processor:

However, the new Vorke V1 Plus has incorporated a ‘Desktop’ processor namely the Intel Celeron J3455. On paper this processor looks like it should perform similar to the Intel Pentium N4200 processor but with a tradeoff between being a cheaper processor to purchase but more expensive to run due to the increased power requirements.

Geekbuying provided a Vorke V1 Plus for review so let’s start by taking a look at the physical characteristics.

Click to Enlarge

The device comes in a plain box and was supplied with the ‘right AC Adapter’ for my country.

The first observation is that it is quite a large device. At just over 6” square (153mm) and nearly 1.5” tall (38mm) it is the biggest mini PC I’ve seen with an Apollo Lake processor.

It has a large (white) power button on top which is very ‘soft touch’ making it easy to accidentally switch off the device simply by a glancing contact for example when picking up or moving the device.

There are four USB ports with the front ones being 2.0 and back ones 3.0. Design-wise mixing these to include one of each front and back might have been better as connecting a wired keyboard either means using a ‘valuable’ rear 3.0 port or having untidy cabling from the front 2.0 port.

The front also has an IR receiver and the IR Remote Control is an optional extra.

Click to Enlarge

Otherwise the specification is interesting for not having an eMMC card but a replaceable mSATA SSD of 64 GB together with the ability to add a full sized 2.5” SSD as well. The HDMI is 2.0a and so it supports [email protected]

Click to Enlarge

Booting the device and Windows asks the familiar basic set-up questions before displaying the desktop. A quick look at the hardware information shows it is aligned to the specification.

Click to Enlarge

Unfortunately the installed version of Windows is old (version 1703) and is missing the ‘Fall Creators Update’.

Click to Enlarge

Whilst it is ‘activated’ it also includes some setting changes (e.g. the computer name) and additional icons are present on the desktop.

There is also a device without a driver showing up in the ‘Device Manager’. As a result I decided to install the latest Windows ISO (version 1709) from Microsoft making sure it was fully updated with the latest patches:

Click to Enlarge

And whilst the resultant Windows was still correctly activated:

Click to Enlarge

several devices were missing drivers. Fortunately, a full set of drivers is available from the Vorke support page, and it is simply a case of downloading and unzipping the file and updating each of those devices:

Click to Enlarge

which results in one device still missing a driver similar to how to mini PC first came:

Click to Enlarge

Interestingly the missing drivers relate to the ‘Intel Dynamic Platform and Thermal Framework’ including the ‘Fan Participant’ driver and this may explain an issue with Ubuntu covered later below.

Once everything was updated a healthy amount of disk space remains available:

As usual I ran my standard set of benchmarking tools to look at performance under Windows:

which confirms the performance to be similar or better than the N4200 SoC although this in part may be attributable to the improved disk performance because of using an mSATA SSD:

Click to Enlarge

Next I shrunk the Windows partition and created new a 10 GB partition so I could install and dual boot Ubuntu. I used a standard Ubuntu desktop ISO however I needed to change the OS ‘selection’ in the BIOS:

Click to Enlarge

I first ran some basic commands to look at the hardware in more detail:

which shows the memory as dual-channel.

Running my usual suite of Phoronix tests generated mixed performance results compared with N4200 devices again likely being affected by the faster mSATA disk:

Ubuntu’s Octane result was slightly better than in Windows:

Click to Enlarge

Looking at the device’s performance against other Intel Apollo Lake devices:

Click to Enlarge

shows that overall the device performs well.

Playing videos under Windows using a browser (either Edge or Chrome) worked without issue:


Click to Enlarge

Click to Enlarge

I also tried playing a [email protected] video which played fine in Edge:

Click to Enlarge

but resulted in dropped frames in Chrome:

Click to Enlarge

although the number of dropped frames was lower than when the same video was played on the N4200 Intel Compute Card which has HDMI 1.4b:

Click to Enlarge

Under Ubuntu the previously seen issue of playing 4K videos in Chrome was again encountered and playing the video at 1080p resolved stuttering and frame loss:

Click to Enlarge

Click to Enlarge

And it was a similar situation with [email protected] videos in Chrome although playing at 1080p now results in dropped frames:

Click to Enlarge

Click to Enlarge

Running Kodi on Windows with a VP9 codec encoded video uses software for decoding resulting in high CPU usage and a slightly jerky playback:

Click to Enlarge

compared with a H.264 codec encoded video which uses hardware to decode and plays smoothly:

Click to Enlarge

as do videos encoded with H.265 or HEVC:

Click to Enlarge

Kodi on Ubuntu uses hardware to decode all three codecs:


Click to Enlarge

Click to Enlarge

with no issues with the playback of the videos. However some H.265 videos resulted in a blank (black) screen just with audio whereas others played without issue:

Click to Enlarge

Click to Enlarge

The ‘elephant in the room’ with this device is the noise from the internal fan. Maybe as a result of running a desktop processor rather than a mobile one means a larger more powerful fan is required or maybe it is just the type of fan used. However it can be loud. Under Windows the fan’s running speed (and therefore loudness) is dependent on internal temperatures i.e. workload. Under Ubuntu the fan runs continuously. The fact that Windows required specific drivers for the ‘Intel ® Dynamic Platform and Thermal Framework’ including a ‘Fan Participant’ driver might indicate a fan driver issue with Ubuntu. Even trying the latest Ubuntu by running the daily ‘Bionic Beaver’ ISO updated with the latest v4.15.1 kernel did not fix this issue.

I’ve tried to make a video to demonstrate the fan’s noise by including a battery-powered clock next to the device to act as a reference in comparing how audible the fan actually is. In the video initially the device is in the BIOS boot menu and the fan is running at low speed and is just audible. As the device boots into Ubuntu initially the fan stops and then after loading the kernel the fan comes back on at high speed and is noticeably audible in a normal operating environment:

Albeit noisy the fan was able to prevent any thermal throttling:

Click to Enlarge

and kept the external temperature below 30°C.

which is not surprising given the fan is quite a large component in the device:

Click to Enlarge

Another two typical ‘pain’ points with Ubuntu on mini PCs are the micro SD card reader and headphone audio. However with this device, both worked without issue:

Click to Enlarge


Just for reference the headphones work under Windows:

Network connectivity throughput was measured using ‘iperf’:

with the wifi performance being similar to comparable mini PC devices.

Power consumption was measured as:

  • Powered off – 0.4 Watts
  • Standby* – 0.9 Watts
  • Boot menu – 5.7 Watts (no fan running) 6.4 Watts (fan running quietly)
  • Idle – 4.7 Watts (Windows) and 4.9 Watts (Ubuntu)
  • CPU stressed** – 14.3 Watts (Ubuntu)
  • Video playback*** – 8.1 Watts (4K in Windows) and 9.2 Watts (HD in Ubuntu)

* Standby is after Windows has been halted.
** Initially there is a high power demand before reducing to a constant rate.
*** The power figures fluctuate so the value is the average of the median high and median low power readings.

The results show a slightly higher power consumption than comparable mini PC devices which is in line with expectations from using a ‘Desktop’ processor.

The BIOS seems to be unrestricted:

Finally I installed an SSD using the supplied mounting kit:

Click to Enlarge

The SSD SATA port is accessed by removing the single screw on the base plate underneath the device and after fixing the bracket to the SSD it is then secured in place with a screw at the top of the SSD as the base plate will also secure the SSD by using the hole on the right:

I then successfully installed and booted Intel’s Clear Linux OS by selecting the SSD from the ‘F7’ boot menu:

Click to Enlarge

Overall the device performs well with the exception of the noisy fan and for some including Ubuntu users this may not be acceptable. It is a rather large mini PC and this needs to be considered before purchasing. Performance is comparable with an Intel Pentium N4200 mini PC although it will cost more to run due to increased power consumption. If you’re interested in Vorke V1 Plus , you can purchase it on GeekBuying for $159.99 including shipping [Update: using GKBPC1 coupon should bring the price down to $149.99].

Getting Started with IkaScope WiFi Pen-Oscilloscope, and ScanaQuad SQ50 USB Logic Analyzer & Signal Generator

February 5th, 2018 8 comments

A couple of weeks ago, I received IkaScope WS200 pen-like WiFi oscilloscope, as well as ScanaQuad SQ50 USB logic analyzer & signal generator, and I’ve already checked out the hardware both both in a aforelinked unboxing post. I had also very shortly tried IkaScope with GOLE 10 mini PC, but just to showcase potential use case for a Windows 10 mini PC with an inclined touchscreen display. But at the time I did not really a proper measurement, as it was more to test the mini PC than the oscilloscope itself.

I’ve now had time to test IkaScope desktop program and mobile app in respectively Ubuntu 16.04 and Android 8.0.0, as well as ScanaStudio for ScanaQuad USB device using Ubuntu 16.04 only, since there’s no mobile version of the program. While I’ll focus on Ubuntu and Android, most of the instructions will be valid for Window 10 and Mac OS X for the desktop programs, and iOS for the mobile app. This will be more of a getting started guide / basic tutorial, than a review, as I’ll go through some of the issues I may have come across, and show the basic functions of the program/app.

IkaScope connected to Xiaomi Mi A1 Smartphone – Click to Enlarge

IkaScope with Android and Initial Setup

My original plan was to test the oscilloscope with my computer running Ubuntu 16.04, and then switch to Android. However, my computer is connected to the network via Ethernet, and I don’t have a spare working WiFi dongle anymore. The oscilloscope can also work with Ethernet only devices, as long as WiFi is configured in station mode, but by default it starts in access point mode, so I had to change my plan and instead install IkaScope Android app on my smartphone first.

Click to Enlarge

The app is still shown to be in development / a beta version, but as I did not encounter any critical issues, except at the beginning. To turn on the oscilloscope you have to press the probe tip, and should soon see the white LED blink, meaning some “IkaScopexxxx” access point should be setup and ready to go. However, after several attempts, I failed to find any IKASCOPE ESSID in the list of access point. Based on some recommendations on the Internet, I installed WiFiManager, and lo-and-behold IKDASCOPE-…200-00493 SSID showed up. I could easily connect to it, and since it’s an open network, no password is needed.

Time to launch IkaScope app. First you’ll go through a very short wizard showing the key zones in the app, and then we can tap on the top left corner, and click on Connect. It should then show your IkaScope in AP mode (White). 

While you could just select it, and start measurements like when I did when I played with in in Windows 10, it is recommends to switch to station mode. To do so, tap on the setup/configuration on the right side, which should bring you to the “add a network” page as shown below.

You can add just one, but if you add more, you’ll likely get better coverage. Note that the oscilloscope on supports 2.4 GHz, so your 5 GHz ESSID won’t show up.

Now you can go back, maybe wait for the oscilloscope to turn off, and turn it on again by pressing the tip, and a solid Blue LED should show on the device…

.. STA mode (Blue) icon will have replaced the AP mode (white) icon in the mobile app.

Go back again, and you’ll see IKASCOPE WS200 connected in station mode. The screenshot below also shows “CNX-SOFTWARE_5GHz” ESSID, but that’s the connection used by the phone, not the scope.

I’ll detailed the options about the app into more details in the Ubuntu section as they have the same features, and I could only find some cosmetic differences between the mobile and desktop version. I still used the Android app to measure the 16 MHz clock signal from an Arduino Leonardo clone as shown in the top picture.

You can see a short demo about the measurement below.

IkaScope in Ubuntu 16.04

Now that IkaScope WS200 probe is in station mode, I can use it with my Ethernet connected Ubuntu 16.04 computer.

You’ll find IkaScope desktop program on the company website for Windows (.exe) , Linux, and Mac OS X. In the case of Linux, the program is distributed as a tarball, which you need to extract, before running the installation script:

There’s also a an script to remove the program if you don’t need it anymore. Note the tools only work on 64-bit x86 platforms (x86-64).
After installation IkaScope can be found in the dash, but if I click on the icon, nothing happens, even after a reboot. So I launched it from the terminal instead:

Just like  in Android, you’ll get through a short “tutorial” at the beginning showing the main parts of the interface. Click on IkaScope icon on the top left corner of the program, and connect to find IkaScope.

My probe was  already setup in Station mode, so all I had to do was to select, but if you are using a computer with WiFi, and WS200 probe is in AP mode, you’ll need to connect to the access point, and ideally change that to station mode as shown in the Android section.

I did the same measurement on Arduino Leonardo board, but without using AUTOSET at first. You could then change the voltage and time resolution and offset as needed, but in most case, you’ll probably want to simply use AUTOSET to let the program automatically select the best settings.

A 16 MHz signal has a 62.5 ns period, so first I used the cursor in TIME mode, and moved A and B to confirm both the period and frequency.

Cursors can also be used for voltage (vertical scale). An easier to check the frequency is to use the Measure menu, which allows to automatically reports frequency, period, width, duty, voltage average/peak-to-peak/rms/max/min, and rising and falling times.

Other options include coupling (DC or AC), and Trigger which can be set to automatic, normal, single, rising / falling / both edges  as shown in the screenshot below.

There’s no math function, but I’ve read the company may implement FFT and other functions in the future. I charged the oscilloscope around two weeks ago, and battery level is still well higher than 50%, even after that review. The company estimates a charge should last around one week with a typical use. That’s because the oscilloscope will automatically turn off if it is not being used.

ScanaQuad SQ50 Logic Analyzer in Ubuntu 16.04

Let’s now move on to ScanaQuad SQ50 USB logic analyzer. We’ll need ScanaStudio program available for Windows, Linux, and Mac OS X. That’s what I had to do to install the program in Ubuntu 16.04:

Contrary to Ikascope program, ScanaStudio will install on both 32-bit and 64-bit x86 operating systems. An uninstall script is also provided.

Again the icon can be found in the Dash, but clicking on it won’t launch the program, so I started from a terminal:

The first time I launched the program I was prompted to update the protocols, which are written in JavaScript, and open source with the code on Github.

Click on Download / Update checked button to have the latest protocols loaded into the program. After that, you should get to the main user interface.

I clicked to create a new workspace, which showed several ScanaQuad “demo” devices, but no way to connect to the actual hardware.

However, after searching in the knowledge base, I found out I may have to use the Device wizard compatibility, which can be accessed from the top right icon, and will start a 5-step wizard asking you to disconnect any SUB serial device – including your ScanaQuad -,and reconnect the ScanQuad.

Everything is pretty self-explanatory, and this step may be needed in either Linux or Mac OS X, but not in Windows. You should now see your ScanaQuad USB logic analyzer listed when creating a new workspace, possibly after a reboot (but not needed here).

I selected ScanaQuad SQ50, and clicked on Create workspace button. The very first time, I had to wait as ScanaStudio updated ScanaQuad firmware, which took around a minute. Your workspace should now be shown with the 4-channel used by the tool and some default configuration.

Click to Enlarge

Since last week I reviewed tinyLIDAR, a board based on STM32L0 MCU + VL53L0X ToF sensor that returns the distance from obstacles up to 2 meters away, and that interfaces with the host processor over I2C, I decided to monitor I2C signals with the device.

Click to Enlarge

I connected the black probe to a ground pin, the green probe to SCL, and the red probe to SDA as shown above.

Click to Enlarge

In ScanaStudio, I set sampling rate to 1 MHz, voltage to 5V, clicked on Add new in the Protocols section, selected I2C from the list, assigned CH 3 (Red) to SDA  and CH 4 (Green) to SDL, and clicked Finish. Finally, I also set a trigger to start capture whenever I2C signals are detected.

Click to Enlarge

Now we can click Start at the top right of the interface to make the program wait for the trigger. Going the “Arduino GUI terminal” for tinyLIDAR board, I press enter to read distance (2 byte) from I2C device with address 0x10.

The command ‘D’ should be 0x44 according the ASCII table, and the distance returned is 120 mm.

Click to Enlarge

Right after pressing enter, ScanaStudio captured the SDA and SCL signal and decoded data with a write and a read command as expected:

  • Write 0x10 with 0x88
  • Read 0x10 with 0x00 and 0x78

I would have expected 0x44 (‘D) in the write command, but for some reasons I have not looked into, the command is shifted by one bit. The read data is however fully as expected as 0x78 converted to 120 mm.

I then made the sensor to face the ceiling in order to get a longer distance and use the two fields.

The terminal reports 1823mm, and the I2C capture show 0x071F distance which indeed converts to 1823 mm. So all good here.

If you’re interested in the other supported protocols, you could check out the aforelinked Github repository, and the screenshot below (correct as of February 5, 2018).

More protocols may eventually be supported, or you could roll your own JavaScript decoder if needed.

ScanaQuad SQ50 Signal Generator in Ubuntu 16.04

ScanaQuad also works as a signal generator using the same ScanaStudio program. Mixed mode is supported too, with two inputs for the logic analyzer, and two outputs for the signal generator. I expected to be able to  easily generate sine waves, square waves, and sawtooth waves, but one you switch to Generator mode, the only two options in the Signal builder section are:

  • Square signal wizard up between 1 Hz and 12.5 MHz (min/max values depend on sampling rate) with with duty cycle slider.

Click to Enlarge

  • Signal builder script

Click to Enlarge

The latter has template with all sort of signal include 1-wire, HDMI-CEC, MODBUS, PWM, SPI, and so on. It also mean you should be able to create seesaw and sine waves, but you may have to work (i.e. write some JavaScript code) for it.

Instead of feeding back the signal to the device in mixed mode, I used SQ50 to generate signals, and WS200 probe for measurement.

  • CH1 generating 12.5 MHz square wave with 25% duty cycle

Not what I would call a neat square signal, and the 25% duty signal is not quite right either due to the distorsion.

  • Let’s lower the frequency to 1 MHz with the same duty cycle.

That’s more like it, although there’s still some noise.

    • CH2 generating FM signals

The waveform looks fairly good, and matches the one defined in ScanaStudio.

I’d like to thank Ikalogic for the opportunity to test their measurement devices. IkaScope WS200 oscilloscope sells for 299 Euros exc. VAT, while ScanaQuad SQ50 goes for 89 Euros exc. VAT, and other USB LA+SG models with better specifications such as SQ200 go for up to 149 Euros.

HE3D K280 Delta 3D Printer Review – Part 2: Upgrades, Calibration, and More 3D Prints

February 3rd, 2018 No comments

Karl here with part 2 of my experiences with the K280. In the first part of HE3D K280 3D printer review, I spoke about some of the challenges with the K280 getting it calibrated and getting Marlin to work and the initial build. In this part, we are going to look at the new effector, cooling solution I designed, calibration, and general use. If you purchase a machine now you get an injected molded effector and 2 24v cooling fans which HE3D sent over after they saw my initial review. If you purchased a kit before they started including these parts you can pick them up here to upgrade. I would like to point out that this is my first Delta printer. I don’t want to really call this a review but a way to show my experiences.

First things first

If you purchase this kit I urge you to use a 3 prong power cord. The included one is only 2 prong and you need to have the third prong to be safe. I kept getting static shocks and the last one fried my screen. It might not have happened if a ground was in place. Not to mention if a wire came loose and made the frame live with mains voltages you could be harmed or possibly killed. I sent HE3D a note urging them to change this.

Click to Enlarge

HE3D K280 Upgrades

I installed the injected molded effector easily but the design that HE3D provide for the blowers on Thingiverse blocks you from using the entire build volume on the K280. They hit the rods toward the edges. I think they were designed for the K200. So I set out and designed some new ones in Fusion 360. I was able to design them to where the build volume is not affected. I had to abandon the binder clips as well and I used some M4 nuts and bolts and some washers. The blowers would hit the clips. I would say that this took about a week to design, prototype, and test. When designing blowers it is not only just directing air at the parts. In this case these fans are far too powerful and I only run that at 40% after the first layer and they are printing beautifully. I will go into setting more in detail later. I also had to run a pid tune. This reprap wiki page goes into detail on this subject. The new Marlin I am sharing is tuned for this design. I am new to this aspect so it oscillates a little but I believe at acceptable levels. All the mods that I made can be found here on Thingiverse. For instructions on the bed mounting system check out here.

Evolution of the blower shroud – Click to Enlarge

Final Design Front – Click to Enlarge

Rear with 3D Touch Sensor – Click to Enlarge

HE3D sent me the new effector and blowers, and I asked Gearbest for the 3D touch sensor. I spent nearly a month of evenings working on these upgrades. First I worked on a suitable cooling solution with the blowers as I mentioned above. Then I worked on upgrading the firmware to the latest Marlin which took most of the time troubleshooting a stuttering problem.

Installation of the touch sensor and runout sensor is pretty self explanatory with the wiring as an exception.

  • Z min is used for the touch sensor
  • D11 is the servo pin for the touch sensor
  • X min is used for the filament sensor.

Been working on my lighting. Need to soften my lights just a little more.

There a few caveats when using these upgrades that I designed. You must wrap the hotend in Kapton tape or some other way to insulate it. Second, the last couple of mm of the reflector needs to be cut off. They are down to the build plate to make easier to print. Third, since the reflector is so close to the hotend you need to run the blower at all times or swing out of the way on filament that doesn’t require a blower. It is not necessary but I also shortened the bowden tube as much as possible without restricting the movement/causing strain.

Marlin 1.1.8

Here is a copy of a portable Arduino IDE 1.8.5 and Marlin 1.1.8 with the dependencies. I prefer a portable version. You can move this to a new PC and not have to do anything. Upgrading is just a matter of moving the portable folder to the new Arduino. Finally if you use the windows installer you will always be fighting UAC because it is normally installed in a protected folder.

In the past, I did a pre-compiled version but with so many options I would have to compile too many. I put comments in the configuration.h file where the filament sensor is and touch sensor with instructions and outlined below.

I have included an untested K200 build based off of Terb Terbich’s config in the Facebook group as well as K200 dual extrusion.Use at your own risk. Again these are untested. If someone would test and let me know any issues I can fix and update.

Choose board and processor

Search for prahjister to find comments in Configuration.h

Change to this to use stock probe:

One obstacle that I ran into when getting this ready was that after upgrading to the latest IDE it would take forever to compile. It went from a 2 minute compile to about a 10 minute. After a little searching I found that I had to tell Windows Defender to exclude the Arduino directory.

Micro Stutters

There is an issue and workaround implemented in the above firmware. I ran into some microstutters that left little imperfections on the print surface. I compiled every version since last November with varied settings including new 2.0. After studying and using Google-fu it became apparent that the stutter was happening when the x y z were updating on the info screen. Only if I printed around 20-30mm/s did the issue go away. I was going to give up and suggest that everyone print the outer skin at 20mm/s to avoid stutters on the surface, but I started to think how else could I avoid and came up with the workaround.

It is very difficult to to capture in a picture. The little bumps on the green are the stutters. Red(pink) is with workaround. I ran out of the green while troubleshooting. As you can see the printer is laying down nice and even layers now. These boats are printed at .2 layer height using the same gcode.

Hard to see stutter artifacts unless up close – Click to Enlarge

The fix was to add defer_return_to_status = true; in ultralcd.cpp:

This stops the firmware from going to the info screen after a timeout period. If you decide to use this firmware, after you start the print, go into the menu and let the screen sit there instead of the info screen. I have an issue open on Github with Marlin so maybe they will find the source of the stutter in the near future.

Calibration with or without 3D Touch Sensor

With 3D Touch Sensor

If you are using the 3D touch sensor, you will need to use this jig for calibrating. At this time Marlin doesn’t take the offset of the probe into account during the calibration process. Print this off and put together with a nut and bolt. Fit over your cool nozzle. If it doesn’t line up with the hex head of your hotend no worries. Just press on and make sure the part triggering the sensor lines up and it wont fall off. I just pressure fit it. There is very little force exerted on it so it doesn’t take much.

Without 3D Touch Sensor

Install the sensor that is provided over the nozzle.

Instructions for Both

Once your sensor is setup run the Prepare>Delta Calibration>Auto Calibration then navigate to your info screen. (remember it will not do this automatically anymore) It will go around the bed probing up to 10 times. Once it is complete you should see a sd:0.0xx in the bottom right of your main screen. According the the author of this routine you want a standard deviation of .05 or less. If you get a higher value you can run it again until you do.

Now you need to set your height. If you are using the 3D touch sensor remove the jig. Go Prepare>Delta Calibration>Set Delta Height. The offset is set in firmware for it. If you are using the provided probe go into Control>Motion>Z offset and set your Z offset to .3 then run Prepare>Delta Calibration>Set Delta Height. On both of these after you are done, Prepare>Auto Home then Prepare>Move Axis>Move Z>Move 10mm and bring down to 0. If you need the nozzle closer or further away you can just adjust the height manually Prepare>Delta Calibration>Delta Settings>Height. If you need it close increase your height. Further away lower. My height is 599.13.

Dimensional Accuracy

At this point your Z should be spot on but you may need to adjust your X and Y. To test, print a 50mm calibration cube. To save time you do not need any top or bottom layers and just the walls. I would do 3 walls or whatever you normally do. You can adjust this in your slicer. Print the cube and once it is sufficiently off the build plate you can stop the print. Measure the cube on the X and Y and see if you are too big or too small. If your cube is too small lower your diagonal rod in the Prepare>Delta Calibration>Delta Settings>Diag Rod and conversely if it is too large increase the diagonal rod length. Then print a cube until it is calibrated. After you are done you can print an entire cube and check all your dimensions.

PID Tune

If you find the hotend oscillating up and down too much. Or not reacting fast enough. You can also run a calibration of the hotend and blower. Set your hotend a few cm away from the build plate and turn on your fans to your desired speed. Go into the menu and run Control>Temperature> PID Autotune your desired temperature. This is a little bit of a mystery to me but it stopped mine from getting a min temp errors and not reacting fast enough.

Remember to store your settings in EEPROM when you are done calibrating.

Settings that worked for me for PLA

First I would like to say that the Ultrafast and Economical stringing test is my favorite test for tuning a printer/filament. I would do temperature towers in the past and it would take more time. With the tower, we are stuck with some of these settings the entire print. With this test, I tune temperature, retraction speed, retraction distance, and fan speed. If you are hyper critical of the outcome you can fix stringing easily. Stinging is a mixture of these settings and it takes me no more than an hour to dial in a new printer and very little time between similar filaments if any. It prints very quickly and if I am making changes back to back as soon as the test stops I go into the settings and go to preheat PLA so nothing has a chance to cool down and doesn’t slow down the tuning.

I have been running the fan at 20% on the first layer and 40% on the rest with PLA. If you print with ABS you can swing the blowers out of the way. For PLA, I have been running 210°C on the first layer and around 205°C for the rest. It took a really long fast retraction of 6.5mm at 150mm/s.

Massive Print

I printed this massive model it is 550mm tall. Took about 65 hours to print and about 2lbs of PLA. This was before I even had the stutter problem and not 100% tuned. Largest print I have ever done.

One thing to note about this print. I used this opportunity to test the filament runout sensor. You can see several bad layers about mid print. The problem was that when they loaded the filament onto the spools that I have they put a kink at the very end where they start loading it. This has caught twice on me now when it ran out. Once on this model and once on another. There was no way I was starting over so I cut the kink off and let the filament sensor kickin. It does work and stops the print. Luckily it was just a few bad layers and I caught it relatively early and I will fix with some Bondo. I plan on painting this one. Overall it turned out well.

Click to Enlarge

Final Test Print

Here is the final test print. This is a fantastic model by Jukka Seppänen. I didn’t realize it until writing this, but he also did the extremely popular Moon City Which I just recently printed. I would follow the link so you can see all the pictures. Approx 180mm tall. .2 layer height, generic $10 PLA. It turned out extremely well and I plan on painting it. Picture of the painted model is from the designer and his paint job.

Click to Enlarge

Click to Enlarge

Final Words

What a long road but it is very satisfying. I am getting some really good prints off of it now. I wish HE3D did some more work on there end to make it easier to print on but I like giving back and filling in the gaps. I believe anyone can reproduce these results. I have seen many people in the Facebook forum say that they never could get these delta printers to calibrate and print until Marlin was available. They had it for months and were very grateful.

On another note. If you are an enthusiast think about giving back, I am doing my second presentation at our local library on 3D printing. My first session was building a printer. We built a Raiscube A8R in just a couple hours. This weekend, I am introducing the kids to Tinkercad and we will design something that they choose. I bring in few printers especially the HE3D because everyone is fascinated by its movement. Arduino projects would also be a cool idea to show kids. Whatever your passion/expertise I encourage you to get kids involved. It is extremely satisfying.

I would like to thank Gearbest for sending the K280 to work with. If you would like to purchase the 3D printer, the company currently sells it for about $430 shipped.

Categories: Hardware, Testing Tags: 3d printing, he3d, review

Getting Started with TinyLIDAR Time-of-Flight Sensor on Arduino and Raspberry Pi

January 30th, 2018 8 comments

TinyLIDAR is an inexpensive and compact board based on STMicro VL53L0X Time-of-Flight (ToF) ranging sensor that allows you to measure distance up to 2 meters using infrared signals, and with up to 60 Hz. Contrary to most other VL52LOX boards, it also includes an STM32L0 micro-controller that takes care of most of the processing, frees up resource on your host board (e.g. Arduino UNO), and should be easier to control thanks to I2C commands.

The project was successfully funded on Indiegogo by close to 600 backers, and the company contacted me to provided a sample of the board, which I have now received, and tested with Arduino (Leonardo), and Raspberry Pi (2).

TinyLIDAR Unboxing

I was expecting a single board, but instead I received a bubble envelop with five small zipped packages.

Click to Enlarge

Opening them up  revealed three TinyLIDAR boards, the corresponding Grove to jumper cables, and a bracket PCB for three TinyLIDAR boards together with headers and screws. So I looks like I received the “3 tinyLiDAR – IGG Special” plus the bracket board that was supposed to be a stretch goal unlocked at $25K (but they only got $23,717). Maybe that’s a good sign for backers, we’ll see.

Click to Enlarge

Due to time constraints, I won’t use the bracket, but only single boards. The brackets can be used with three tinyLIDAR boards using different I2C addresses, and you’ll see an example use with the Follow-me 2 Sketch where the 3 LIDAR boards are mounted on a tilt/pan platform that can track your hand.

Click to Enlarge

The bigger chip on the by is STM32L0 Cortex M0+ microcontroller with the much smaller STMicro VL53L0X laser ToF sensor placed right on top of it on the photo above. There are also a few I/O include the 4-pin I2C Grove connector and through holes, some pogopin for direct UART access, an LED, a reset button, and more, as described in the diagram below.

TinyLIDAR on Arduino

Now, it’s time to play with the board using sample and documentation on a dedicated page.  Refer to this page for the latest versions, as below I’ll link to the versions I used for the review.

To easily evaluate and learn about the platform, the company has made what they call Arduino GUI Terminal sketch to let your control the device from an Arduino board using a serial terminal.

The company only tested Arduino Uno, but it turns out I don’t have one so I had to use an Arduino Leonardo clone instead, and after initial troubles, and help from my contact at the company (Dinesh), I could use tinyLiDAR_Terminal_GUI_1_24.ino with my boardsince it now supports Arduino Uno, Leonardo, and Mega .If you don’t use Arduino Uno (default), make sure you enable your board accordingly in the code by commenting out the relevant line:

The hardware connections are very easy as you just need to connect the jumper cables to the I2C pins, 5V and GND on the board.

Click to Enlarge

Once this was done I connect a micro USB cable to my computer, and tried to upload the ino sketch file, but it failed to compile. That’s because I forgot to install Arduino I2C Master Library, which can be downloaded here, and you just need to click on Sketch->Include Library->Add .ZIP library, and select the freshly downloaded file to complete the installation. I could then build and upload the program to Arduino Leonardo.

Time to start a serial console using minicom, TeraTerm, Putty or others with 115200 8N1 and no flow control to access the Arduino GUI terminal:

You’ll get a list of command in the terminal, but you may want to read the reference manual to clearly understand each item.

I started with the query command, which worked just fine:

I could also use to read command, but to test accuracy I decided to use a ruler and a small box as shown below.

Click to Enlarge

I tested 5cm and 10 cm:

  • 5cm:

  • 10cm:

Not that good…. But there’s a calibration command as explained in the reference manual:

CD Auto-Calibrate Distance Offset
Perform Offset Distance Calibration on tinyLiDAR.
Before using this calibration command, please set tinyLiDAR to Continuous, High Accuracy mode by issuing
the commands “MC” and “PH”. See example code in Appendix A for details.
ST recommends to use a distance of 100mm to a white target. Therefore, place a white target 100mm away
from tinyLiDAR before running this calibration.
Must specify calibration distance in mm.
The new offset correction distance will be placed in non-volatile memory and used for all subsequent
operations. This calibration takes about 10 seconds to run and the LED will flash slowly during the calibration.
You can reset to our factory defaults by executing the “RESET” command.

So let’s go ahead by placing the board at 10 cm from a white box (OK mine was not exactly white), run MC and PH commands (although it does not look necessary),  before running running CD without parameter to do the actual calibration:

Let’s go back to single step operation (ms) and tinyLIDAR preset (pt), and try the measurements again

  • 5cm:

  • 10cm:

It’s getting better, although the first two steps always seen to be stuck to some previous measurements. I’ve been told it may be due to some buffer in the serial terminal.

Trying some longer distances:

  • 20cm:

  • 30cm:

It’s basically doing the job. If you need more accuracy, longer range, or faster measurements, you can change the mode:

  • PL: long range mode (up to 2m, 33ms)
  • PS: high speed mode (up to 1.2m, 20ms)
  • PH: high accuracy mode (up to 1.2m, 200ms)
  • PT: tinyLiDAR mode (up to 2m, 18ms)

One interesting feature, especially if you run on batteries, is the autonomous mode where the board is configured to automatically check the distance range every X second, and trigger a pulse when within range, without having to send I2C commands from the host, except the initial one. In the Arduino GUI terminal, you can for example run:

From there, you won’t show anything in the Arduino terminal, so you can either monitor the autonomous pin – as shown in the diagram below – with the host board or a multimeter…

… or instead you may consider soldering GND and serial TX pins on tinyLIDAR board, and access the read-only console use a USB to TTL debug board as shown below.

The terminal needs to be set to 115200 7N1 without flow control, and you’ll should an output similar to the one below when you run the A command above:

Just to be extra clear, at this stage I have two serial terminal in my computer:

  • /dev/ttyACM0 connected to Arduino where I can input commands
  • /dev/ttyUSB0 connected directly to tinyLIDAR where I can see debug output (read-only)

If you want to integrate it into your own program, you’ll have to send commands as shown by the Arduino sketch to read distance:

The code above is for Arduino Uno, so if you use Arduino MEGA or Leonardo you’ll need to change the PORT to PORTD, and SCL and SDA to pin 0 and 1 respectively.

TinyLIDAR on Raspberry Pi 2/3

Arduino is cool, but if your project is better suited to Raspberry Pi board, you can also connect tinyLIDAR to the I2C port of Raspberry Pi 2/3, or any other Raspberry Pi boards. The instructions are explained in details on Instructables, also explaining some of the shortcomings of I2C on Raspberry Pi board (lack of clock stretching support, pull up resistors installed). The steps are very details, even suitable to people having never used a Raspberry Pi, so here I’ll go faster focusing on settings specific to tinyLIDAR use.

First you need to scratch the I2C PCB trace on tinyLIDAR with a cutter to disconnect the pull-up resistors since it’s already done on the Raspberry Pi board. Now we can connect tinyLIDAR to the I2C pins, as well as 3.3V and GND.

I used the same Raspbian Stretch Lite image with SSH enabled (/boot/ssh file present) as I did for ANAVI Light pHAT. Now we need to install pigpio in Raspberry Pi as follows:

You’ll also need o run raspi-config to enable I2C.

The next step is optional, but I still recommend it as at the beginning I had trouble finding tinyLIDAR. That’s the step to detect tinyLIDAR I2C address:

We can see 0x10 I2C address is detected, and that’s our tinyLIDAR board. If you don’t have any addresses detected, re-check your connections.

Now that we have confident the hardware is OK, we can install “RPI TinyLIDAR Terminal GUI”:

and launch it with:

From there, it’s the same as in the Arduino terminal GUI, for example read and query commands:

Again the RPi terminal GUI is just for evaluation, but you can study the Python in order to integrate support for tinyLIDAR into your own Python application.

That’s all for this getting started guide.

The crowdfunding campaign is now over, but you can buy TinyLIDAR board directly on MicroElectronic Design website for $24.95.  You’ll also find the bracket board for $4.95 and a pack of 100 mounting screws on that page. Further details may also be found on the product page.