You say the pattern is binary, but in fact it consists of 4 different "tones":
Create a pattern for each of the middle tones (with the circles) by making a selection and choosing Edit > Define Pattern. (In this example I've made the squares 32x32 px)
Convert the image you want to transform to grayscale and scale it down to a fitting size.
Let's take this image of a monkey skull by Didier Desouens (CC BY-SA 4.0), scale and crop it down to 36x36 px.
Then upscale the image by 3200% using Nearest Neigbor interpolation.
Now each pixel is the same size as the pattern squares: 32x32px.
Use Image > Adjustments > Posterize to reduce the image to consist of 4 levels.
Use Magic Wand with Anti-alias and Contigous ticked off and click one of the dark gray pixels. Add a Pattern Fill layer and select the dark square with a white circle.
Then click one of the light gray pixels and add a Pattern Fill layer with the white square with the black circle.
You can make another pattern to create a grid and get this final result: