To make hexagonal paving, I wrote a double foreach loop that makes a hexagonal paving from a minimal pattern.
This pattern is called hexapavage (it is not a hexagon), it has the advantage of not drawing the same line twice and therefore, there is no superposition of lines between them.

\def\hexapavage{--++(60:1)--+(120:1)++(0,0)--++(1,0)--++(60:1)--+(1,0)++(-120:1)--++(-60:1)}
\tikz\draw[blue](0,0)\hexapavage;
I coloured a copy of this pattern in blue as well as a reduction of the hexagons in the second figure.
On the other hand, I didn't try to create a coordinate system to locate hexagons.

\documentclass[tikz,border=3mm]{standalone}
\def\hexapavage{--++(60:1)--+(120:1)++(0,0)--++(1,0)--++(60:1)--+(1,0)++(-120:1)--++(-60:1)}
\begin{document}
%\tikz\draw[blue](0,0)\hexapavage;
\begin{tikzpicture}
% Le pavage hexagonal
\foreach \j in {0,1,...,4} {
\foreach \i in {0,1,...,4} {\draw[thick] (60:\j)++(120:\j)++
(60:\i)++(-60:\i)++(\i,0)++(\i,0) \hexapavage ;
}}
\draw[blue,very thick](0,0)\hexapavage;
% pavage avec scale
\begin{scope}[yshift=-6cm,scale=.6]
\foreach \j in {0,1,...,4} {
\foreach \i in {0,1,...,4} {\draw[thick] (60:\j)++(120:\j)++
(60:\i)++(-60:\i)++(\i,0)++(\i,0) \hexapavage ;
}}
\draw[blue,very thick](0,0)\hexapavage;
\end{scope}
\end{tikzpicture}
\end{document}