Interface category

DI2C -The Differential Version of I2C

In serial interface world, there are differential and non-differential protocols. The most famous one of differential interfaces is USB besides HDMI and others, while I2C is a non-differential one.
Joshua Vasquez from Hackaday decided to use DI2C (differential version of I2C) to communicate with a string of BNO055 sensor boards (a smart 9-DOF sensor with I2C interface).

If you’re not familiar with differential communication, the method behind it is straightforward; the line has two channels (positive and negative), where each line has the same signal but with an opposite voltage. The receiver then will calculate the difference between them. Mathematically:

Vb = -Va, So:
Vout = Va – Vb = Va – (-Va)

Image Source: Hackaday

Now, what if there was a noise?. The noise will affect almost identically on both signals with the same voltage level. As a result the receiver can omit the noise in the output.

Image Source: Hackaday

Back to I2C; Joshua used PCA9615 chip from NXP which is a bridge between the normal 2-wire I2C-bus and the 4-wire DI2C-bus.

PCA9615 Block Diagram.
PCA9615 Block Diagram. DSCLP and DSCLM are the clock plus/minus input/output respectively. While DSDAP and DSDAM are the datat plus/minus input/output.

As an use case; Joshua used DI2C to build an IMU Noodle for modeling a piece of foam twisting and turning in a 3D space simulator using data comes from a string of cards contain the BNO055 sensor and PCA9615 bridge.

PCA9615 was used in each Joshua’s card to bridge the normal I2C signals to DI2C ones. By bridging I2C to DI2C, PCA9615 makes the capability of using longer cables and I2C more rugged in noisy environments.

(a) PCA9615 Application Diagram (b) Ribbon-cable Connectors. (c) BNO055 with PCA9615 Module.

The PCB design files (KiCAD) and firmware can be downloaded from Joshua’s repository on Github. Moreover, Joshua mentioned important tips to setup DI2C in your next design. You can see these tips in his blog post on Hackaday.

IMU Noodle in Action

Data-rich 3.5mm jack vies with USB-C for headsets

Horst Gether @ edn.com writes about how the simple and well established 3.5mm jack can be used for data-rich communication between headset and mobile device.

The 3.5mm phone jack is a well-established standard in the audio industry and continues to get strong support from users in the market. Originally invented in the 19th century for telephone switch boards, it made its way into mobile phones, tablets, and personal computers to connect audio and communication headsets for phone calls or simply for listening to music. While the phone jack has a rather long evolutionary history, the functionality that the 3.5mm four-pole accessory device provides to its end customers is rather limited.

Data-rich 3.5mm jack vies with USB-C for headsets – [Link]

ARM CoreSight SoC-600, The Future of Debug

Debugging is an important part of the design process that is necessary to identify and fix errors. Over the decades, debug tools had evolved providing easier and simpler solutions. Today, ARM introduces CoreSight SoC-600 as the next-generation debug and trace tool that speeds up finding the root of the problem, with less iterations and lower risks.

Addressing the requirements of the increasingly connected world characterized by faster product-development cycles, this new technology offers debug and trace over functional interfaces such as USB, PCIe or wireless, reducing the need for hardware debug probes while increasing data throughput.

Key benefits include:

  • Debug access available and accessible throughout the product lifecycle, from production and manufacture, to remote access in the field
  • Remote debug access (e.g. via Ethernet or wirelessly)
  • Increased data bandwidth for improved system visibility
  • Multiple debug agents can simultaneously access debug memory space (e.g. for concurrent external and self-hosted access)
  • Interface peripherals (such as USB and PCIe) share a common access to APs, together with any existing JTAG DP or resident software
  • Self-hosted, cross CPU debug access

CoreSight SoC-600 comes with a new Debug Access Port (DAP) architecture. It introduces standard APB connectivity between Debug Port (DP) and Access Port (AP), making it possible to have multiple DPs connected to multiple APs.

CoreSight SoC-600 also includes an enhanced Embedded Trace Router (ETR) functionality. In additional to removing the need for a separate Trace Memory Controller (TMC) license, enhancements to the Embedded Trace Router (ETR) configuration make it possible to supply a trace interface with four times the amount of bandwidth previously possible.

There are two approaches to host the link protocol when building a CoreSight SoC-600-based system:

  1. Protocol on dedicated CPU: this approach comes at a cost of additional dedicated resources, however, it is the least intrusive approach and provides bare metal debug capabilities.
  2. Protocol on main CPU: this approach does not require additional hardware, yet it is invasive and relies on CPU not being halted.

For further information and details about SoC-600 you can visit the official page, and the official article on ARM website.

iCP12Q DAQduino, A Data Acquisition Board In Arduino Form

iCircuit Technologies had produced the iCP12A DAQduino, an Arduino-like development board for signals monitoring, data acquisition and circuit troubleshooting at 1mSec/Samples period.

The DAQduino board features a PIC18F2550 microcontroller with 14 digital I/O pins, two of them are PWM, and 6 input analog pins. With these IO ports, user can easily plug in different type of 3rd party boards with direct connection to USB port.

DAQduino has the same concept of the ICP12 usbStick with different shape and more I/O pins. Its PIC MCU is preloaded with Microchip’s USB HID bootloader that allows users to upload an application firmware directly through a PC’s USB port without any external programmer.

Features of iCP12A:
  • Arduino form connection, easy interfacing, high performance and user friendly device
  • Onboard with PIC18F2550 [Default] or PIC18F2553 28-Pin Flash USB PIC MCU
  • Excellent flexibility that allows user to expand the board features with plug and play modules
  • Peripheral Features:
    • 19x IO Port (6x 10/12bit ADC pins, 2x 10 bit PWM/Freq/DAC pins)
    • Serial port emulation (UART Baud Rates: 300 bps to 115.2 kbps)
    • Supported operating systems (32bit/64bit): Windows XP ,Windows Vista, Windows 7, Windows 8, Windows 10, Linux, Mac OS X and Raspberry Pi
    • On board Female Mini USB and Micro USB Type B connector
    • Maximum Input Voltage: 15Vdc
    • With 500mA current output at VDD pin with over-current protection
    • 20MHz oscillator
    • Green LED – power on indicator
    • 2x LEDs (Green, Red) – status indicator
    • ICSP Connector – on-board PIC programming
    • Switch Mode Selection – Boot or Normal mode

DAQduino board is shipped with a preloaded data acquisition firmware that emulates as a virtual COM port to PC. Thereafter, the communication between the PC and DAQduino is serial and through a miniUSB cable. The firmware also supports basic I/O control and data logging feature. They provide a PC application named SmartDAQ that communicates with the DAQduino and controls its I/O pins, PWM outputs, and record ADC inputs.

iCP12A DAQduino Layour

SmartDAQ has a very friendly GUI with real-time waveform displays for 6 analog input channels. The time and voltage axes scales are adjustable. SmartDAQ can log the ADC data in both text and graphic form concurrently. One can utilize this feature to construct a low-cost data acquisition system for monitoring multiple analog sensor outputs such as temperature, accelerometer, gyroscope, magnetic field sensor, etc.

SmartDAQ v1.4 Features:
  • Sampling channel: 6x Analogs (10/12 bit ADC) + 7x Digitals (Input/Output)
    • PIC18F2550 [10bit ADC: 5mV Resolution]
    • PIC18F2553 [12bit ADC: 1mV Resolution]
  • Maximum Sampling rate: 1KHz or 1mSec/Samples
  • Sampling voltage: 0V – 5V (auto & scalable graph) at 1mV Res. Dispaly
  • Sampling period:
    • mSec: 1, 2, 5, 10, 20, 50, 100, 200, 500
    • Sec: 1, 2, 5, 10, 20, 30
    • Min: 1, 2, 5, 10, 20, 30, 60
  • Trigger Mode: Larger [>], Smaller [<], Positive edge [↑], Negative edge [↓]
  • Sampling Mode: Continuous, Single
  • VDD or External Vref Input Mode
  • Logging Function:
    • Save Format: Text, Graphic, Both
    • Start Time: Normal, Once Trigger, 24-Hour Clock (Auto Run)
    • End Time: Unlimited, Data Size, 24-Hour Clock (Auto Stop)
SMARTDAQ1.4 Window

The DAQduino is available with the PIC18F2550 for $30, and with the PIC18F2553 for $39.9. You can order it through the official page where you can also get more details about iCP12A and its source files.

You can also see this product preview to know more about its functionality.

Design HMI For Your Projects Easily With Nextion

Nextion display by ITead allows users to design their own interfaces all by themselves, even if they don’t have any coding background knowledge and can go with different platforms. This tool is the best solution to replace traditional TFT LCD and LED Nixie tube. Customers can use the software – Nextion Editor to design interfaces.

With the new capacitive 7-inch Nextion, you can build your own HMI with minimal design effort since all of the data and control signals are provided by the device to interface directly to the display. This offers enormous advantage to the designer in development time and cost saving and takes away all of the burden of low level design.

Nextion will help you quickly design visually in hours not weeks, turn long coding work into simple drag and drop operation, at a reasonable cost. What you only need, is interface a serial port to Nextion disply hardware. Check this demo to see how quickly and easily an application can be designed by dragging and dropping objections to the virtual screen on a WYSIWYG design IDE – Nextion Editor.

This is the second version of Nextion, where you can find a capacitive multi-touch display and a good looking bezel along with additional features in the software IDE. Below are the specifications of new Nextion:

Nextion is now live on a crowdfunding campaign on Indiegogo and still has 15 days to go. You can pre-order Nextion RTP now for $55. More details can be found at the official website.

Hack Your Car With Macchina M2

Car hacking applications have been growing during the last few years, making it faster and cheaper to get into automotive tinkering. A new device was launched recently on kickstarter called M2 by Macchina.

M2 is an open-source, versatile development platform which can be wired under the hood for a more permanent installation or plugged into the OBD2 port, enabling you to do virtually anything with your vehicle’s software.

It is a tiny device (56.4mm x 40.6mm x 15.7mm) that is compact, modular, wirelessly connectable, and based on the popular Arduino Due. It consists of a processor board with a SAM3X8E Cortex-M3 MCU, a USB port, some LEDs, an SD card slot, and built-in EEPROM, as well as an interface board with two channels of CAN, two channels of LIN/K-LINE, a J1850 VPW/PWM, and even a single-wire (GMLAN) interface.

M2 is universal as its libraries and protocols are compatible with any car that isn’t older than Google. Macchina also aims to make the M2 compatible with as many existing open source software packages as possible.It is already compatible with SavvyCAN, CanCAT, MetaSploit, and CANtact.

Working with M2 is easy for Arduino users. Here is a summary of the steps needed to duplicate our shift light project on a CANbus-equipped manual transmission car that also illustrates the basic workflow when car hacking with M2:

  • Step 1: Download the latest Arduino IDE and install the Macchina boards add-on; test everything is working by blinking an LED.
  • Step 2: Download and install one of several open source “Sniffer” applications to your computer and upload the corresponding “sketch” to M2.
  • Step 3: Use the “Sniffer” application to identify the piece of data you are looking to use. In this case, engine RPM
  • Step 4: Write a “Sketch” to watch for RPM data and light up some LEDs proportionally and flash when it is time to shift.

You can also check this video to see an example of simple car hacking:

Macchina has partnered with Arduino, Digi and Digi-Key to develop M2, and it believes that its highly-adaptable hardware will most benefit hot rodders, mechanics, students, security researchers, and entrepreneurs by providing them access to the inner workings of their rides.

As it is an open source project, you can get its 3D files, schematics, BOM, and source files on the github repository. M2 will be available for $79 and it may cost about $110 if you build it yourself. Visit Macchina’s Kickstarter page to learn more or pre-order yours today. You can also check out Hackaday’s review about M2.

Macchina M2 tutorial introduction:

DS28EC20, A Serial 1-Wire 20Kb EEPROM

The American manufacturer of analog and mixed-signal integrated circuits, Maxim Integrated, has developed a new serial EEPROM memory that operates from single-contact 1-wire interface.

The DS28EC20 is a 20480-bit, 1-Wire® EEPROM organized as 80 memory pages of 256 bits each. An additional page is set aside for control functions. Data is written to a 32-byte scratchpad, verified, and then copied to the EEPROM memory.

The 1-Wire is a device communications bus system that provides low-speed data, signaling, and power over a single conductor. This technology uses only two wires; data and ground. It is similar in concept to I²C, but with lower data rates and longer range. It is typically used to communicate with small inexpensive devices such as digital thermometers and weather instruments.

DS28EC20 features:
  • 20480 Bits of Nonvolatile (NV) EEPROM Partitioned into Eighty 256-Bit Pages
  • Individual 8-Page Groups of Memory Pages (Blocks) can be Permanently Write Protected or Put in OTP EPROM-Emulation Mode (“Write to 0”)
  • Read and Write Access Highly Backward-Compatible to Legacy Devices (e.g., DS2433)
  • 256-Bit Scratchpad with Strict Read/Write Protocols Ensures Integrity of Data Transfer
  • 200k Write/Erase Cycle Endurance at +25°C
  • Unique Factory-Programmed 64-Bit Registration Number Ensures Error-Free Device Selection and Absolute Part Identity
  • Switchpoint Hysteresis and Filtering to Optimize Performance in the Presence of Noise
  • Communicates to Host at 15.4kbps or 90kbps Using 1-Wire Protocol
  • Low-Cost TO-92 Package
  • Operating Range: 5V ±5%, -40°C to +85°C
  • IEC 1000-4-2 Level 4 ESD Protection (8kV Contact, 15kV Air, Typical) for I/O Pin

Blocks of eight memory pages can be write-protected or put in EPROM-Emulation mode, where bits can only be changed from a 1 to a 0 state. The life-expectancy of the DS28EC20 is specified at more that 200 k erase/write cycles at 25 °C. The I/O pin has IEC 1000-4-2 Level 4 ESD protections (8 kV contact, 15 kV air).

Applications that can use the DS28EC20:
  • Card/Module Identification in Rack-Based Systems
  • Device Authentication
  • IEEE 1451.4 Sensors
  • Ink and Toner Cartridge ID
  • Medical and Industrial Sensor Identification/Calibration
  • PCB Identification
  • Smart Cable

Ordering DS28EC20 is available for about $1.7 per chip through Maxim website. You can also get design resources and technical documents of the chip.

VGADuino-II : Arduino Graphic Shield

VGADuino-II : The New 256 Color Graphic Shield for Arduino

Arduino is pretty much famous for the numerous shields it has. These plug-and-play shields make our life a lot easier while working on some complicated projects. Among all other shields, graphic shields are getting more and more popular. A graphic shield lets you show text, numbers, shapes, and even small images on a screen, using Arduino. VGADuino-II is a new graphic shield which lets you use your TV or any monitor with VGA 15 pin as a large screen for Arduino.

It’s very exciting that you won’t have to rely on those small displays which are stacked on the shield itself, anymore. Rather you are getting a whole TV or VGA monitor to display your data. As  Masih Vahida, the creator of VGADuino, says:

VGADuino is a shield that is made for Arduino with all the libraries and samples that user can easily stack it on the Arduino board and starts programming. it can connect Arduino to any kind of TV or Monitor with VGA 15 Pin connector.

VGADuino-II : The 256 color graphic shield for arduino
VGADuino-II: The 256 color graphic shield for Arduino

Key Features:

  • Internal functions to draw various shapes with AT-Commands and Arduino libraries
  • 11 Different font sizes with standard ASCII characters support
  • 256 color, 8bit RGB format
  • Having access to each pixel individually
  • Standard VGA DB15 output
  • Screen resolution: 800×600 60Hz
  • Actual pixels: 400×300 60Hz

Technical Details:

In VGADuino-II, NXP-LPC1756 ARM chip is used as the main microcontroller and XILINX XC95144XL CPLD for refreshing the display and taking care of the sync signals. There is also an SD Ram to keep the screen’s pixel color data.

In this version of VGADuino, each pixel is one byte, that means each pixel has 256 colors which are in standard 8bit RGB format. (3 bits for Red, 3 bits for Green and 2 bits for Blue).

It communicates with Arduino over UART using predefined AT command set. All relevant Arduino libraries are available to implement in code. The user can choose among all 11 fonts with definable background and foreground color of text.

VGADuino-II Technical Details
VGADuino-II Technical Details

Conclusion:

VGADuino-II is available for $79. You may go here and back the Kickstarter project to get a VGADuino-II. All the groundbreaking features offered by VGADuino-II are making it a value for money. There is no risk at all. The design is tested and completed by the maker.

For a better understanding watch this video.

https://www.kickstarter.com/projects/67935456/vgaduino-ii-new-256-color-graphic-shield-for-ardui/widget/video.html

CMOS-TTL QUADRATURE ENCODER USING LS7084

The quadrature LS7084 Module is a CMOS quadrature clock converter. Quadrature clocks derived from optical or magnetic encoders, when applied to the A and B inputs of the LS7084 are converted to strings of a Clock and an Up/down direction control. These outputs can be interfaced directly with standard Up/Down counters for direction and position sensing of the encoder.

Features

  • Supply 5V DC
  • +4.5V to +10V operation (VDD – VSS)
  • On Board Power LED
  • J1 Encoder pulse multiplication ( Jumper JL Close =1X, Jumper JH Close = X4)
  • Header Connector for Encoder Interface
  • X1 and X4 mode selection
  • Programmable output clock pulse width
  • On-chip filtering of inputs for optical or magnetic encoder applications.
  • TTL and CMOS compatible I/Os
  • Up to 16MHz output clock frequency

CMOS-TTL QUADRATURE ENCODER USING LS7084 – [Link]

Program ESP8266 with Arduino

Programming ESP8266 With Arduino IDE : The Easy Way

The ESP8266 WiFi Module is a self-contained SOC that can give any microcontroller access to your WiFi network. It’s an extremely cost-effective board with a huge and ever-growing community. Each ESP8266 module comes pre-programmed with an AT command set firmware. This module has a powerful on-board processing and storage capability that allows it to act as a standalone microcontroller.

Following 2 easy steps, you can upload Arduino sketches on your ESP8266 using Arduino IDE.

  • Configuring the IDE
  • Making the circuit

Parts List:

  1. ESP 8266 Module.
  2. Jumper wires.
  3. A breadboard.
  4. One USB to TTL converter, a.k.a UART converter.

Configuring The IDE:

In order to bring support for ESP8266 chips to the Arduino environment, you need to add ESP8266 Arduino Core in the IDE.

NOTE: You must have Arduino IDE version 1.6.4 or higher. The latest version is highly recommended. Download the latest version of IDE from Arduino.cc.

  1. Install Arduino 1.6.8.
  2. Start Arduino and open Preferences window.
  3. Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into Additional Board Manager URLs field. (See the first image)
  4. Open Boards Manager from Tools > Board menu and install esp8266 platform. (See the second image)

Add URL to "Preferences" in Arduino IDE

Add URL to “Preferences” in Arduino IDE

Select ESP8266 board from Board Manager

Select ESP8266 board from Board Manager

Making The Circuit:

ESP8266-01 wiring for uploading program
ESP8266-01 wiring for uploading program
ESP8266-12E wiring for uploading program
ESP8266-12E wiring for uploading program

ESP-01:

  1. Connect GPIO0 to Ground (set it LOW or 0)
  2. Connect CH_PD toVcc (set it HIGH or 1)

ESP-12(E/F):

  1. Connect GPIO0 to Ground (set it LOW or 0)
  2. Connect GPIO15 to Ground (set it LOW OR 0)
  3. Connect GPIO2 to Vcc (set it HIGH or 1)
  4. Connect CH_PD toVcc (set it HIGH or 1)

Pin Vcc and GND should be connected to power supply’s +ve and -ve rail respectively. TX and RX of ESP8266 should be connected to RX and TX of USB to TTL converter respectively.

NOTE: You can replace the USB to TTL converter with an Arduino UNO board, but you have to upload a blank sketch or “bare-minimum” sketch to the Arduino so that the MCU of the Arduino board doesn’t interrupt. Connect TX and RX of the ESP8266 to RX and TX of the Arduino UNO respectively.

Conclusion:

You are done! Now just select your ESP8266 board from Tools > Board menu, write any program, and click on Upload button. The ESP8266 will run as standalone microcontroller now.

To have a clear idea, read the article FLASH AT FIRMWARE TO ESP8266 also.